diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxLevelConfig.java b/mallinkService/src/main/java/com/iformall/domain/po/WxLevelConfig.java index 6c2b44b75..7cc697f27 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxLevelConfig.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxLevelConfig.java @@ -14,10 +14,11 @@ import javax.persistence.Id; @EqualsAndHashCode(callSuper = true) public class WxLevelConfig extends BaseEntity { private static final long serialVersionUID = 1L; - + public static final int DEFAULT_SCALE = 10; + @Id protected Long id; - + @Transient protected List ids; @@ -42,6 +43,9 @@ public class WxLevelConfig extends BaseEntity { @io.swagger.annotations.ApiModelProperty(value="是否启用(0:未启用,启用1,2,3,分别对应wx_merchant_discount里的rate_vip1, rate_vip2, rate_vip3)",name="discountEnable") private Integer discountEnable; + @io.swagger.annotations.ApiModelProperty(value="积分倍率(默认值1.0)",name="scale") + private Integer scale ; + @Transient protected Long count; diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxLevelConfigMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxLevelConfigMapper.java index 145072641..eb1435e32 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxLevelConfigMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxLevelConfigMapper.java @@ -16,7 +16,12 @@ public interface WxLevelConfigMapper extends CommonMapper { void deleteAll(@Param("tenantId")String tenantId); String getLevel(@Param("tenantId")String tenantId,@Param("poins")Integer poins); - - - + + /** + * 获取等级倍率 + * @param tenantId + * @param poins + * @return + */ + Integer getScale(@Param("tenantId")String tenantId,@Param("poins")Integer poins); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCreditHistoryServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCreditHistoryServiceImpl.java index 5b5f98239..205de2bdc 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCreditHistoryServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCreditHistoryServiceImpl.java @@ -32,6 +32,7 @@ import java.math.BigDecimal; import java.util.Date; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.stream.Collectors; @Service @@ -69,6 +70,9 @@ public class WxCreditHistoryServiceImpl implements WxCreditHistoryService { @Autowired ExcelService excelService; + @Autowired + WxLevelConfigMapper wxLevelConfigMapper; + @Override public void clearCreditByYear() { WxScoreRules wxScoreRules = new WxScoreRules(); @@ -193,8 +197,20 @@ public class WxCreditHistoryServiceImpl implements WxCreditHistoryService { currentCreditAmount = wxCUserBasicInfo.getCredit(); } + // 获取当前用户成长值:默认为1.0, + int scale = 10; + Integer score = wxCUser.getScore(); + if (Objects.nonNull(score)) { + Integer scaleFromDb = wxLevelConfigMapper.getScale(wxCUser.getTenantId(), wxCUser.getScore()); + if (Objects.nonNull(scaleFromDb)) { + scale = scaleFromDb; + } + } + //计算出需要新增或减少的积分 - int creditChangeNum = creditIncrement(record); + int creditChangeNumOrigin = creditIncrement(record); + int creditChangeNum = new BigDecimal(creditChangeNumOrigin).multiply(new BigDecimal(scale)).divide(new BigDecimal(WxLevelConfig.DEFAULT_SCALE),BigDecimal.ROUND_HALF_UP).intValue(); + if (creditChangeNum != 0) { Long total = Long.valueOf(currentCreditAmount) + Long.valueOf(creditChangeNum); if (total > Integer.MAX_VALUE) { @@ -260,14 +276,14 @@ public class WxCreditHistoryServiceImpl implements WxCreditHistoryService { if (wxCUser != null) { WxCUser wxCUserNew = new WxCUser(); wxCUserNew.setId(wxCUser.getId()); - wxCUserNew.setCredit(wxCUser.getCredit()-wxCreditHistory.getCreditNum()); + wxCUserNew.setCredit(wxCUser.getCredit() - wxCreditHistory.getCreditNum()); wxCUserNew.setUpdateDate(new Date()); wxCUserMapper.updateByPrimaryKeySelective(wxCUserNew); } if (wxCUserBasicInfo != null) { WxCUserBasicInfo wxCUserBasicInfoNew = new WxCUserBasicInfo(); wxCUserBasicInfoNew.setId(wxCUserBasicInfo.getId()); - wxCUserBasicInfoNew.setCredit(wxCUserBasicInfo.getCredit()-wxCreditHistory.getCreditNum()); + wxCUserBasicInfoNew.setCredit(wxCUserBasicInfo.getCredit() - wxCreditHistory.getCreditNum()); wxCUserBasicInfoNew.setUpdateDate(new Date()); wxCUserBasicInfoMapper.updateByPrimaryKeySelective(wxCUserBasicInfoNew); } @@ -300,6 +316,7 @@ public class WxCreditHistoryServiceImpl implements WxCreditHistoryService { //根据积分类型计算"增加积分" private int creditIncrement(WxCreditHistory record) { + //查找C端用户的成长值 if (record.getCreditType() == EnumScoreType.LOGIN.getCode()) { return loginAddCredit(record); } @@ -446,7 +463,7 @@ public class WxCreditHistoryServiceImpl implements WxCreditHistoryService { int baseScore = busRule.getInteger(WxScoreRules.SCORE); // 消费增长积分 // 4. 计算积分 - if(record.getSpend() >= priceCondition.intValue()) { + if (record.getSpend() >= priceCondition.intValue()) { Double dScoreT = Math.floor(record.getSpend() * 1.0D / priceCondition * baseScore); addCreditNumber = dScoreT.intValue(); log.info("CREDIT:" + busRule.toJSONString() + "\nAddCredit: " + addCreditNumber); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxLevelConfigServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxLevelConfigServiceImpl.java index d1338af57..3f4e1208b 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxLevelConfigServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxLevelConfigServiceImpl.java @@ -49,6 +49,9 @@ public class WxLevelConfigServiceImpl implements WxLevelConfigService { l.setCount(0L); } + if(l.getScale()==null) { + l.setScale(WxLevelConfig.DEFAULT_SCALE); + } WxCUserBasicInfoDto dto = new WxCUserBasicInfoDto(); dto.setTenantId(l.getTenantId()); dto.setLevelStartScore(l.getPoints()); diff --git a/mallinkService/src/main/resources/mapper/WxLevelConfigMapper.xml b/mallinkService/src/main/resources/mapper/WxLevelConfigMapper.xml index 7d1a68fea..8a8de4d02 100644 --- a/mallinkService/src/main/resources/mapper/WxLevelConfigMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxLevelConfigMapper.xml @@ -108,6 +108,8 @@ - +