记得上下班打卡 | git大法好,push需谨慎

Commit 2ee8d88c authored by wangyifan's avatar wangyifan

草莓护照v1.1- 避免重复创建新类

parent d3aeaf7f
......@@ -9,7 +9,7 @@ import lombok.Data;
import java.util.Date;
@Data
@ApiModel("草莓护照-已认领徽章(墙)")
@ApiModel("草莓护照-用户已获徽章(徽章墙、签证页卡片等共用)")
public class AdamCaomeiPassportUserClaimedBadgeVo {
@ApiModelProperty("徽章ID")
......@@ -30,7 +30,10 @@ public class AdamCaomeiPassportUserClaimedBadgeVo {
@ApiModelProperty("类型 1护照类型徽章 2演出类型徽章 3特殊徽章 4签证页")
private Integer type;
@ApiModelProperty("关联演出名称(仅 type=2 有值)")
@ApiModelProperty("关联音乐节/演出ID(type=2、type=4 有值)")
private String performanceId;
@ApiModelProperty("关联音乐节/演出名称(type=2、type=4 有值)")
private String performanceName;
@ApiModelProperty("获得时间")
......
package com.liquidnet.service.adam.dto.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.liquidnet.commons.lang.util.DateUtil;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* 草莓护照-签证页卡片(type=4,独立展示,不出现在首页徽章货架/徽章墙)
*/
@Data
@ApiModel("草莓护照-签证页卡片")
public class AdamCaomeiVisaCardVo {
@ApiModelProperty("签证页配置ID(徽章ID)")
private String badgeId;
@ApiModelProperty("名称")
private String name;
@ApiModelProperty("副标题")
private String subTitle;
@ApiModelProperty("图标")
private String icon;
@ApiModelProperty("分享文案")
private String shareText;
@ApiModelProperty("关联音乐节/演出ID")
private String performanceId;
@ApiModelProperty("关联音乐节/演出名称")
private String performanceName;
@ApiModelProperty("是否已获得(本接口仅从缓存/库读取已发放记录,恒为 true)")
private boolean claimed;
@ApiModelProperty("获得时间")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = DateUtil.DATE_FULL_STR)
private Date claimedAt;
}
......@@ -2,7 +2,6 @@ package com.liquidnet.service.adam.service;
import com.liquidnet.service.adam.dto.vo.AdamCaomeiPassportHomeVo;
import com.liquidnet.service.adam.dto.vo.AdamCaomeiPassportUserClaimedBadgeVo;
import com.liquidnet.service.adam.dto.vo.AdamCaomeiVisaCardVo;
import com.liquidnet.service.base.ResponseDto;
import java.util.List;
......@@ -26,7 +25,7 @@ public interface IAdamCaomeiPassportUserService {
* 签证页卡片列表(type=4):仅从用户已获徽章缓存/库中筛选 type=4。
* 需用户先访问护照首页 {@link #getPassportHome()} 触发静默发放后,本接口才有数据。
*/
ResponseDto<List<AdamCaomeiVisaCardVo>> listVisaCards();
ResponseDto<List<AdamCaomeiPassportUserClaimedBadgeVo>> listVisaCards();
/**
* 校验当前登录用户是否已绑定护照
......
......@@ -5,7 +5,6 @@ import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import com.liquidnet.service.adam.dto.param.AdamCaomeiPassportNoParam;
import com.liquidnet.service.adam.dto.vo.AdamCaomeiPassportHomeVo;
import com.liquidnet.service.adam.dto.vo.AdamCaomeiPassportUserClaimedBadgeVo;
import com.liquidnet.service.adam.dto.vo.AdamCaomeiVisaCardVo;
import com.liquidnet.service.adam.service.IAdamCaomeiPassportUserService;
import com.liquidnet.service.base.ResponseDto;
import io.swagger.annotations.Api;
......@@ -46,7 +45,7 @@ public class AdamCaomeiPassportUserController {
@ApiOperationSupport(order = 3)
@ApiOperation("签证页卡片列表:仅从用户已获徽章中筛选 type=4;须先访问护照首页 home 完成静默发放后再查看")
@GetMapping("visa/list")
public ResponseDto<List<AdamCaomeiVisaCardVo>> visaList() {
public ResponseDto<List<AdamCaomeiPassportUserClaimedBadgeVo>> visaList() {
return adamCaomeiPassportUserService.listVisaCards();
}
......
......@@ -255,7 +255,7 @@ public class AdamCaomeiPassportUserServiceImpl implements IAdamCaomeiPassportUse
}
@Override
public ResponseDto<List<AdamCaomeiVisaCardVo>> listVisaCards() {
public ResponseDto<List<AdamCaomeiPassportUserClaimedBadgeVo>> listVisaCards() {
String uid = CurrentUtil.getCurrentUid();
AdamCaomeiPassport bound = findBoundPassportForUser(uid);
if (bound == null) {
......@@ -283,10 +283,7 @@ public class AdamCaomeiPassportUserServiceImpl implements IAdamCaomeiPassportUse
.collect(Collectors.toList())
);
List<AdamCaomeiVisaCardVo> cards = visaRows.stream()
.map(r -> toVisaCardVoFromUserBadge(r, performanceTitleById))
.collect(Collectors.toList());
return ResponseDto.success(cards);
return ResponseDto.success(toClaimedBadgeVos(visaRows, performanceTitleById));
}
@Override
......@@ -369,10 +366,13 @@ public class AdamCaomeiPassportUserServiceImpl implements IAdamCaomeiPassportUse
v.setIcon(StringUtils.defaultString(r.getIcon()));
v.setShareText(StringUtils.defaultString(r.getShareText()));
v.setType(r.getType());
if (r.getType() != null && r.getType() == 2 && StringUtils.isNotBlank(r.getPerformanceId())) {
String title = performanceTitleById != null ? performanceTitleById.get(r.getPerformanceId()) : null;
v.setPerformanceName(StringUtils.isNotBlank(title) ? title : r.getPerformanceId());
String perfId = StringUtils.trimToEmpty(r.getPerformanceId());
if (needsPerformanceFields(r.getType()) && StringUtils.isNotBlank(perfId)) {
v.setPerformanceId(perfId);
String title = performanceTitleById != null ? performanceTitleById.get(perfId) : null;
v.setPerformanceName(StringUtils.isNotBlank(title) ? title : perfId);
} else {
v.setPerformanceId("");
v.setPerformanceName("");
}
v.setClaimedAt(r.getClaimedAt());
......@@ -448,26 +448,6 @@ public class AdamCaomeiPassportUserServiceImpl implements IAdamCaomeiPassportUse
return map;
}
/**
* 将用户已获徽章 DTO 转为签证页卡片 VO(仅已发放记录调用)。
*/
private static AdamCaomeiVisaCardVo toVisaCardVoFromUserBadge(AdamCaomeiPassportUserBadgeDto r,
Map<String, String> performanceTitleById) {
AdamCaomeiVisaCardVo vo = new AdamCaomeiVisaCardVo();
vo.setBadgeId(r.getBadgeId());
vo.setName(StringUtils.defaultString(r.getBadgeName()));
vo.setSubTitle(StringUtils.defaultString(r.getSubTitle()));
vo.setIcon(StringUtils.defaultString(r.getIcon()));
vo.setShareText(StringUtils.defaultString(r.getShareText()));
String perfId = StringUtils.trimToEmpty(r.getPerformanceId());
vo.setPerformanceId(perfId);
String title = performanceTitleById != null ? performanceTitleById.get(perfId) : null;
vo.setPerformanceName(StringUtils.isNotBlank(title) ? title : perfId);
vo.setClaimed(true);
vo.setClaimedAt(r.getClaimedAt());
return vo;
}
/**
* home 末尾:对已上架 type=4、用户已购对应场次且尚未获得的签证页执行静默发放。
*
......@@ -529,6 +509,11 @@ public class AdamCaomeiPassportUserServiceImpl implements IAdamCaomeiPassportUse
return true;
}
/** type=2 演出纪念、type=4 签证页需展示关联场次 */
private static boolean needsPerformanceFields(Integer type) {
return type != null && (type == 2 || type == BADGE_TYPE_VISA);
}
/** 首页徽章货架/墙:排除签证页配置 */
private static List<AdamCaomeiBadge> filterShelfPublished(List<AdamCaomeiBadge> published) {
return published.stream()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment