From a33e3241c970b74fff850f8d3ddd4627caa24a9f Mon Sep 17 00:00:00 2001 From: Burce Date: Tue, 13 Aug 2019 17:33:48 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E5=A4=9A=E5=AE=A2=E6=88=B7=E3=80=91?= =?UTF-8?q?=E7=94=9F=E6=97=A5=E8=90=A5=E9=94=80=E5=8A=9F=E8=83=BD=E3=80=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/iformall/domain/po/WxLevelConfig.java | 1 + .../com/iformall/domain/po/WxScoreRules.java | 7 +++++++ .../service/impl/WxCreditHistoryServiceImpl.java | 16 ++++++++++++---- .../main/resources/mapper/WxScoreRulesMapper.xml | 6 +++++- 4 files changed, 25 insertions(+), 5 deletions(-) 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 7cc697f27..d1971b58f 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxLevelConfig.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxLevelConfig.java @@ -14,6 +14,7 @@ import javax.persistence.Id; @EqualsAndHashCode(callSuper = true) public class WxLevelConfig extends BaseEntity { private static final long serialVersionUID = 1L; + @Transient public static final int DEFAULT_SCALE = 10; @Id diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxScoreRules.java b/mallinkService/src/main/java/com/iformall/domain/po/WxScoreRules.java index 1b46e7207..f2771cb84 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxScoreRules.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxScoreRules.java @@ -26,6 +26,9 @@ import java.util.List; @EqualsAndHashCode(callSuper = true) public class WxScoreRules extends BaseEntity { + @Transient + public static final int DEFAULT_SCALE = 10; + @Transient private static final String scoreDefaultRules = "[" + @@ -70,6 +73,7 @@ public class WxScoreRules extends BaseEntity { "{\"id\":5,\"limit\":1,\"step\":1,\"score\":0,\"desc\":\"授权个人信息\"}," + "{\"id\":6,\"limit\":1,\"step\":1,\"score\":0,\"desc\":\"授权手机号\"}," + "{\"id\":7,\"limit\":1,\"step\":1,\"score\":0,\"desc\":\"编辑个人信息\"}" + + "{\"id\":8,\"limit\":1,\"step\":1,\"score\":0,\"desc\":\"编辑个人信息\"}" + "]"; @Transient @@ -105,6 +109,9 @@ public class WxScoreRules extends BaseEntity { @io.swagger.annotations.ApiModelProperty(value="清除前多少年积分",name="clearYear") private Integer clearYear; + @io.swagger.annotations.ApiModelProperty(value="生日积分倍率",name="scale") + private Integer scale; + public static String getScoreDefaultRules() { return scoreDefaultRules; } 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 e505b5ea7..10bc72daf 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCreditHistoryServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCreditHistoryServiceImpl.java @@ -213,19 +213,27 @@ public class WxCreditHistoryServiceImpl implements WxCreditHistoryService { currentCreditAmount = wxCUserBasicInfo.getCredit(); } - // 获取当前用户成长值:默认为1.0, - int scale = 10; + // 获取等级积分倍率:默认为1.0, + int levelScale = WxLevelConfig.DEFAULT_SCALE; Integer score = wxCUser.getScore(); if (Objects.nonNull(score)) { Integer scaleFromDb = wxLevelConfigMapper.getScale(wxCUser.getTenantId(), wxCUser.getScore()); if (Objects.nonNull(scaleFromDb)) { - scale = scaleFromDb; + levelScale = scaleFromDb; + } + } + // 获取等级积分倍率: + int scoreScale = WxScoreRules.DEFAULT_SCALE; + if(Objects.nonNull(wxCUserBasicInfo.getBirthdate())) { + WxScoreRules rules = wxScoreRulesService.getScoreRules(wxCUser.getTenantId()) ; + if(Objects.nonNull(rules)&&Objects.nonNull(rules.getScale())) { + scoreScale = rules.getScale() ; } } //计算出需要新增或减少的积分 int creditChangeNumOrigin = creditIncrement(record); - int creditChangeNum = new BigDecimal(creditChangeNumOrigin).multiply(new BigDecimal(scale)).divide(new BigDecimal(WxLevelConfig.DEFAULT_SCALE),BigDecimal.ROUND_HALF_UP).intValue(); + int creditChangeNum = new BigDecimal(creditChangeNumOrigin).multiply(new BigDecimal(levelScale)).multiply(new BigDecimal(scoreScale)).divide(new BigDecimal(WxScoreRules.DEFAULT_SCALE)).divide(new BigDecimal(WxLevelConfig.DEFAULT_SCALE),BigDecimal.ROUND_HALF_UP).intValue(); if (creditChangeNum != 0) { Long total = Long.valueOf(currentCreditAmount) + Long.valueOf(creditChangeNum); diff --git a/mallinkService/src/main/resources/mapper/WxScoreRulesMapper.xml b/mallinkService/src/main/resources/mapper/WxScoreRulesMapper.xml index 375ae8ae7..a3e24037a 100644 --- a/mallinkService/src/main/resources/mapper/WxScoreRulesMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxScoreRulesMapper.xml @@ -9,10 +9,11 @@ + - `id`,`tenant_id`,`rules`,`create_date`,`update_date`,`type`,`clear_year` + `id`,`tenant_id`,`rules`,`create_date`,`update_date`,`type`,`clear_year`,`scale` @@ -38,6 +39,9 @@ and `clear_year` = #{clearYear} + + and `scale` = #{scale} + and id in