This commit is contained in:
hy001 2026-05-16 02:27:41 +08:00
parent f94fb80701
commit 310a6c8050
7 changed files with 120 additions and 41 deletions

View File

@ -31,14 +31,19 @@ public class BadgeConfigDTO implements Serializable {
@JsonSerialize(using = ToStringSerializer.class)
private Long id;
/**
* 徽章类型.
*/
private String type;
/**
* 徽章等级.
*/
/**
* 徽章类型.
*/
private String type;
/**
* 展示类型: LONG 长徽章, SHORT 短徽章.
*/
private String displayType;
/**
* 徽章等级.
*/
private Integer badgeLevel;
/**

View File

@ -43,14 +43,19 @@ public class BadgeConfigDetailsDTO implements Serializable {
*/
private String badgeName;
/**
* 徽章类型.
*/
private String type;
/**
* 徽章key.
*/
/**
* 徽章类型.
*/
private String type;
/**
* 展示类型: LONG 长徽章, SHORT 短徽章.
*/
private String displayType;
/**
* 徽章key.
*/
private String badgeKey;
/**

View File

@ -45,14 +45,19 @@ public class UseBadgeDTO implements Serializable {
*/
private String badgeName;
/**
* 徽章类型.
*/
private String type;
/**
* 是否佩戴上
*/
/**
* 徽章类型.
*/
private String type;
/**
* 展示类型: LONG 长徽章, SHORT 短徽章.
*/
private String displayType;
/**
* 是否佩戴上
*/
private Boolean use;
/**

View File

@ -45,14 +45,19 @@ public class UserUseBadgeDTO implements Serializable {
*/
private String badgeName;
/**
* 徽章类型.
*/
private String type;
/**
* 是否佩戴上
/**
* 徽章类型.
*/
private String type;
/**
* 展示类型: LONG 长徽章, SHORT 短徽章.
*/
private String displayType;
/**
* 是否佩戴上
*/
private Boolean use;

View File

@ -36,12 +36,18 @@ public class BadgeConfig extends TimestampBaseEntity {
/**
* 徽章类型.
*/
@TableField("type")
private String type;
/**
* 徽章等级.
*/
@TableField("type")
private String type;
/**
* 展示类型: LONG 长徽章, SHORT 短徽章.
*/
@TableField("display_type")
private String displayType;
/**
* 徽章等级.
*/
@TableField("badge_level")
private Integer badgeLevel;

View File

@ -51,6 +51,8 @@ public class PropsSourceClientServiceImpl implements PropsSourceClientService {
private static final String BADGE_TYPE = PropsTypeEnum.BADGE.name();
private static final String DEFAULT_BADGE_SOURCE_TYPE = SysBadgeConfigTypeEnum.ACTIVITY.getName();
private static final String BADGE_DISPLAY_TYPE_LONG = "LONG";
private static final String BADGE_DISPLAY_TYPE_SHORT = "SHORT";
private final PropsResourcesCommon propsResourcesCommon;
private final FamilyLevelConfigService familyLevelConfigService;
@ -194,6 +196,9 @@ public class PropsSourceClientServiceImpl implements PropsSourceClientService {
}
JSONObject expand = parseExpand(dto.getExpand());
String badgeSourceType = normalizeBadgeSourceType(expand.getString("badgeType"));
String badgeDisplayType = normalizeBadgeDisplayType(
firstNotBlank(expand.getString("badgeDisplayType"), expand.getString("displayType")),
badgeSourceType);
Integer badgeLevel = expand.getInteger("badgeLevel");
Long milestone = expand.getLong("milestone");
String badgeKey = StringUtils.isNotBlank(expand.getString("badgeKey"))
@ -203,6 +208,7 @@ public class PropsSourceClientServiceImpl implements PropsSourceClientService {
BadgeConfig badgeConfig = new BadgeConfig()
.setId(badgeId)
.setType(badgeSourceType)
.setDisplayType(badgeDisplayType)
.setBadgeLevel(Objects.nonNull(badgeLevel) ? badgeLevel : 0)
.setMilestone(milestone)
.setBadgeName(propsSourceRecord.getName())
@ -254,9 +260,31 @@ public class PropsSourceClientServiceImpl implements PropsSourceClientService {
}
return DEFAULT_BADGE_SOURCE_TYPE;
}
@Override
public PropsRedPacketSkinDTO getPropsRedPacketSkin(Long id) {
private String normalizeBadgeDisplayType(String displayType, String badgeSourceType) {
if (StringUtils.isNotBlank(displayType)) {
String normalized = displayType.trim().toUpperCase();
if (Objects.equals(BADGE_DISPLAY_TYPE_LONG, normalized)
|| Objects.equals(BADGE_DISPLAY_TYPE_SHORT, normalized)) {
return normalized;
}
}
return Objects.equals(SysBadgeConfigTypeEnum.VIP.getName(), badgeSourceType)
? BADGE_DISPLAY_TYPE_LONG
: BADGE_DISPLAY_TYPE_SHORT;
}
private String firstNotBlank(String... values) {
for (String value : values) {
if (StringUtils.isNotBlank(value)) {
return value;
}
}
return null;
}
@Override
public PropsRedPacketSkinDTO getPropsRedPacketSkin(Long id) {
return propsResourcesInnerConvertor.toPropsRedPacketSkinDTO(
propsRedPacketSkinService.getById(id));

View File

@ -0,0 +1,25 @@
SET @current_schema := DATABASE();
SET @add_sys_badge_display_type_sql := IF(
NOT EXISTS (
SELECT 1 FROM information_schema.columns
WHERE table_schema = @current_schema
AND table_name = 'sys_badge_config'
AND column_name = 'display_type'
),
'ALTER TABLE `sys_badge_config` ADD COLUMN `display_type` varchar(16) NOT NULL DEFAULT '''' COMMENT ''展示类型: LONG长徽章 SHORT短徽章'' AFTER `type`',
'SELECT 1'
);
PREPARE add_sys_badge_display_type_stmt FROM @add_sys_badge_display_type_sql;
EXECUTE add_sys_badge_display_type_stmt;
DEALLOCATE PREPARE add_sys_badge_display_type_stmt;
UPDATE `sys_badge_config`
SET `display_type` = 'LONG'
WHERE `type` = 'VIP'
AND (`display_type` IS NULL OR `display_type` = '');
UPDATE `sys_badge_config`
SET `display_type` = 'SHORT'
WHERE `type` <> 'VIP'
AND (`display_type` IS NULL OR `display_type` = '');