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

Commit 7d46785c authored by 张国柄's avatar 张国柄

会员详情页调整+限购+开售+身份阶段标识;

parent d6aa8e96
package com.liquidnet.service.adam.dto.vo; package com.liquidnet.service.adam.dto.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.service.adam.entity.AdamMember; import com.liquidnet.service.adam.entity.AdamMember;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List; import java.util.List;
@ApiModel(value = "AdamMemberVo", description = "会员") @ApiModel(value = "AdamMemberVo", description = "会员")
...@@ -41,10 +45,20 @@ public class AdamMemberVo implements java.io.Serializable, Cloneable { ...@@ -41,10 +45,20 @@ public class AdamMemberVo implements java.io.Serializable, Cloneable {
private Integer needQuestion; private Integer needQuestion;
@ApiModelProperty(position = 12, value = "是否展示协议[200]", example = "0") @ApiModelProperty(position = 12, value = "是否展示协议[200]", example = "0")
private Integer displayAgreement; private Integer displayAgreement;
@ApiModelProperty(position = 13, value = "状态[1-NORMAL,2-INVALID]") @ApiModelProperty(position = 13, value = "状态[1-NORMAL,2-INVALID]", example = "1")
private Integer state; private Integer state;
@ApiModelProperty(position = 14, value = "限购数量,0不限购[200]", example = "0") @ApiModelProperty(position = 14, value = "积分倍率", example = "2.00")
private BigDecimal integralRate;
@ApiModelProperty(position = 15, value = "是否开售:1-开售|2-停售", example = "1")
private Integer onsale;
@ApiModelProperty(position = 16, value = "限购数量[0-不限购]", example = "0")
private Integer limitation; private Integer limitation;
@ApiModelProperty(position = 17, value = "限购开始时间", example = "2021-08-02 00:00:00")
@JsonFormat(shape=JsonFormat.Shape.STRING, pattern= DateUtil.DATE_FULL_STR)
private LocalDateTime limitStart;
@ApiModelProperty(position = 18, value = "限购结束时间", example = "2021-09-02 00:00:00")
@JsonFormat(shape=JsonFormat.Shape.STRING, pattern= DateUtil.DATE_FULL_STR)
private LocalDateTime limitEnd;
@ApiModelProperty(position = 20, value = "会员卡价格信息") @ApiModelProperty(position = 20, value = "会员卡价格信息")
private List<AdamMemberPriceVo> priceVoList; private List<AdamMemberPriceVo> priceVoList;
...@@ -52,8 +66,14 @@ public class AdamMemberVo implements java.io.Serializable, Cloneable { ...@@ -52,8 +66,14 @@ public class AdamMemberVo implements java.io.Serializable, Cloneable {
private List<AdamMemberRightsVo> rightsVoList; private List<AdamMemberRightsVo> rightsVoList;
@ApiModelProperty(position = 22, value = "用户会员信息") @ApiModelProperty(position = 22, value = "用户会员信息")
private AdamUserMemberVo userMemberVo; private AdamUserMemberVo userMemberVo;
@ApiModelProperty(position = 23, value = "购买会员限[0-名额已满|1-允许购买]") @ApiModelProperty(position = 23, value = "购买会员限[0-名额已满|1-允许购买]")
private Integer buySwitch; private Integer buySwitch;
@ApiModelProperty(position = 24, value = "标记[0-普通用户|1-会员|2-过期会员]")
private Integer stageMarker;
public Integer getOnsale() {
return null == onsale ? 1 : onsale;
}
private static final AdamMemberVo obj = new AdamMemberVo(); private static final AdamMemberVo obj = new AdamMemberVo();
...@@ -84,7 +104,11 @@ public class AdamMemberVo implements java.io.Serializable, Cloneable { ...@@ -84,7 +104,11 @@ public class AdamMemberVo implements java.io.Serializable, Cloneable {
this.setNeedQuestion(source.getNeedQuestion()); this.setNeedQuestion(source.getNeedQuestion());
this.setDisplayAgreement(source.getDisplayAgreement()); this.setDisplayAgreement(source.getDisplayAgreement());
this.setState(source.getState()); this.setState(source.getState());
this.setIntegralRate(source.getIntegralRate());
this.setOnsale(source.getOnsale());
this.setLimitation(source.getLimitation()); this.setLimitation(source.getLimitation());
this.setLimitStart(source.getLimitStart());
this.setLimitEnd(source.getLimitEnd());
return this; return this;
} }
} }
package com.liquidnet.service.adam.dto.vo; package com.liquidnet.service.adam.dto.vo;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.liquidnet.commons.lang.util.DateUtil; import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.service.adam.entity.AdamUserMember; import com.liquidnet.service.adam.entity.AdamUserMember;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
...@@ -34,7 +33,7 @@ public class AdamUserMemberVo implements Serializable, Cloneable { ...@@ -34,7 +33,7 @@ public class AdamUserMemberVo implements Serializable, Cloneable {
@JsonFormat(shape=JsonFormat.Shape.STRING, pattern= DateUtil.DATE_FULL_STR) @JsonFormat(shape=JsonFormat.Shape.STRING, pattern= DateUtil.DATE_FULL_STR)
private LocalDateTime updatedAt; private LocalDateTime updatedAt;
private static final LocalDateTime newMemberStartTime = LocalDateTime.parse("2021-08-02 00:00:00", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); private static final LocalDateTime oldMemberSpotTime = LocalDateTime.parse("2022-09-02 00:00:00", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
private static final AdamUserMemberVo obj = new AdamUserMemberVo(); private static final AdamUserMemberVo obj = new AdamUserMemberVo();
public static AdamUserMemberVo getNew() { public static AdamUserMemberVo getNew() {
...@@ -75,7 +74,7 @@ public class AdamUserMemberVo implements Serializable, Cloneable { ...@@ -75,7 +74,7 @@ public class AdamUserMemberVo implements Serializable, Cloneable {
*/ */
// @JsonIgnore // @JsonIgnore
public boolean isOldMember() { public boolean isOldMember() {
LocalDateTime createdAt = this.getCreatedAt(); LocalDateTime expiryAt = this.getExpiryAt();
return createdAt.isAfter(newMemberStartTime); return expiryAt.isBefore(oldMemberSpotTime);
} }
} }
...@@ -6,6 +6,7 @@ import lombok.Data; ...@@ -6,6 +6,7 @@ import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
/** /**
...@@ -101,9 +102,9 @@ public class AdamMember implements Serializable { ...@@ -101,9 +102,9 @@ public class AdamMember implements Serializable {
private Integer state; private Integer state;
/** /**
* 积分倍率X100 * 积分倍率
*/ */
private Integer integralRate; private BigDecimal integralRate;
/** /**
* 限购数量 * 限购数量
......
...@@ -340,13 +340,13 @@ create table adam_member_order_ext ...@@ -340,13 +340,13 @@ create table adam_member_order_ext
create unique index uidx_amember_order_ext_id on adam_member_order_ext (order_no); create unique index uidx_amember_order_ext_id on adam_member_order_ext (order_no);
-- >>------------------------------------------------------------------------------------ |20210817会员与券改版 -- >>------------------------------------------------------------------------------------ |20210817会员与券改版
# 添加`双倍积分`开关
alter table adam_member add integral_rate decimal(8, 2) default 0 null comment '积分倍率X100' after state;
# 添加`是否开售`开关,新增开售开关字段
alter table adam_member add onsale tinyint default 0 null comment '是否开售:1-开售|2-停售' after integral_rate;
# 添加限购逻辑,新增限购开始、结束时间字段 # 添加限购逻辑,新增限购开始、结束时间字段
alter table adam_member add limit_start datetime(3) null comment '限购开始时间' after limitation; alter table adam_member add limit_start datetime(3) null comment '限购开始时间' after limitation;
alter table adam_member add limit_end datetime(3) null comment '限购结束时间' after limit_start; alter table adam_member add limit_end datetime(3) null comment '限购结束时间' after limit_start;
# 添加`是否开售`开关,新增开售开关字段
alter table adam_member add onsale tinyint default 0 null comment '是否开售:1-开售|2-停售' after limit_end;
# 添加`双倍积分`开关
alter table adam_member add integral_rate int default 0 null comment '积分倍率X100' after state;
# 添加会员价格字段 # 添加会员价格字段
......
...@@ -41,27 +41,39 @@ public class AdamMemberController { ...@@ -41,27 +41,39 @@ public class AdamMemberController {
AdamMemberSimpleVo memberSimpleVo = adamRdmService.getMemberSimpleVo(); AdamMemberSimpleVo memberSimpleVo = adamRdmService.getMemberSimpleVo();
AdamMemberVo memberVo = null; AdamMemberVo memberVo = null;
if (null != memberSimpleVo && null != (memberVo = adamRdmService.getMemberVoByMemberId(memberSimpleVo.getMemberId()))) { if (null != memberSimpleVo && null != (memberVo = adamRdmService.getMemberVoByMemberId(memberSimpleVo.getMemberId()))) {
memberVo.setBuySwitch(adamRdmService.getSwitch(AdamRedisConst.SWITCH_BUY_MEMBER)); // memberVo.setBuySwitch(adamRdmService.getSwitch(AdamRedisConst.SWITCH_BUY_MEMBER));
Integer limitation = memberVo.getLimitation();
if (null != limitation && limitation > 0) {// 限购
int maxMemberLimitation = adamRdmService.getMaxMemberLimitation();
memberVo.setBuySwitch(maxMemberLimitation >= limitation ? 0 : 1);
} else {// 不限购
memberVo.setBuySwitch(1);
}
memberVo.setPriceVoList(adamRdmService.getMemberPriceVoByMemberId(memberVo.getMemberId())); memberVo.setPriceVoList(adamRdmService.getMemberPriceVoByMemberId(memberVo.getMemberId()));
List<AdamMemberRightsVo> memberRightsVoList;
String currentUid = CurrentUtil.getCurrentUid(); String currentUid = CurrentUtil.getCurrentUid();
if (!StringUtils.isEmpty(currentUid)) { if (!StringUtils.isEmpty(currentUid)) {
AdamUserMemberVo userMemberVo = adamRdmService.getUserMemberVoByUid(currentUid); AdamUserMemberVo userMemberVo = adamRdmService.getUserMemberVoByUid(currentUid);
memberVo.setUserMemberVo(userMemberVo); memberVo.setUserMemberVo(userMemberVo);
if (null != userMemberVo && userMemberVo.isOldMember()) { if (null == userMemberVo) {
memberRightsVoList = adamRdmService.getMemberRightsVoByMemberId(memberVo.getMemberId(), 1); memberVo.setStageMarker(0);
memberVo.setRightsVoList(adamRdmService.getMemberRightsVoByMemberId(memberVo.getMemberId(), 0));
} else if (userMemberVo.isActive()) {
memberVo.setStageMarker(1);
memberVo.setRightsVoList(
userMemberVo.isOldMember() ? adamRdmService.getMemberRightsVoByMemberId(memberVo.getMemberId(), 1)
: adamRdmService.getMemberRightsVoByMemberId(memberVo.getMemberId(), 0)
);
} else { } else {
memberRightsVoList = adamRdmService.getMemberRightsVoByMemberId(memberVo.getMemberId(), 0); memberVo.setStageMarker(2);
} }
} else { } else {
memberRightsVoList = adamRdmService.getMemberRightsVoByMemberId(memberVo.getMemberId(), 0); memberVo.setRightsVoList(adamRdmService.getMemberRightsVoByMemberId(memberVo.getMemberId(), 0));
} }
memberVo.setRightsVoList(memberRightsVoList);
} }
return ResponseDto.success(memberVo); return ResponseDto.success(memberVo);
} }
......
...@@ -605,6 +605,21 @@ public class AdamRdmService { ...@@ -605,6 +605,21 @@ public class AdamRdmService {
return null == o ? -1 : (int) o; return null == o ? -1 : (int) o;
} }
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | INCR_MEMBER_LIMITATION */
public boolean setMaxMemberLimitation(int val) {
return redisUtil.set(AdamRedisConst.INCR_MEMBER_LIMITATION, val);
}
public long incrMemberNoLimitation() {
return redisUtil.incr(AdamRedisConst.INCR_MEMBER_LIMITATION, 1);
}
public int getMaxMemberLimitation() {
Object o = redisUtil.get(AdamRedisConst.INCR_MEMBER_LIMITATION);
return null == o ? -1 : (int) o;
}
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | <MEMBER_CODE, MEMBER_CODE_INFO> */ /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | <MEMBER_CODE, MEMBER_CODE_INFO> */
public boolean setMemberCodeVoByCode(String memberCode, AdamMemberCodeVo vo) { public boolean setMemberCodeVoByCode(String memberCode, AdamMemberCodeVo vo) {
......
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