Просмотр исходного кода

会员积分倍率

release_toaliyun_real
Burce 6 лет назад
Родитель
Сommit
20984b19eb
5 измененных файлов: 41 добавлений и 10 удалений
  1. +6
    -2
      mallinkService/src/main/java/com/iformall/domain/po/WxLevelConfig.java
  2. +8
    -3
      mallinkService/src/main/java/com/iformall/mapper/WxLevelConfigMapper.java
  3. +21
    -4
      mallinkService/src/main/java/com/iformall/service/impl/WxCreditHistoryServiceImpl.java
  4. +3
    -0
      mallinkService/src/main/java/com/iformall/service/impl/WxLevelConfigServiceImpl.java
  5. +3
    -1
      mallinkService/src/main/resources/mapper/WxLevelConfigMapper.xml

+ 6
- 2
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<Long> 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;



+ 8
- 3
mallinkService/src/main/java/com/iformall/mapper/WxLevelConfigMapper.java Просмотреть файл

@@ -16,7 +16,12 @@ public interface WxLevelConfigMapper extends CommonMapper<WxLevelConfig, Long> {
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);
}

+ 21
- 4
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);


+ 3
- 0
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());


+ 3
- 1
mallinkService/src/main/resources/mapper/WxLevelConfigMapper.xml Просмотреть файл

@@ -108,6 +108,8 @@
<select id="getLevel" parameterType="com.iformall.domain.po.WxLevelConfig" resultType="String">
SELECT `level` FROM `wx_level_config` where tenant_id=#{tenantId} and points &lt;= #{points} ORDER BY points desc LIMIT 1
</select>

<select id="getScale" parameterType="com.iformall.domain.po.WxLevelConfig" resultType="java.lang.Integer">
select `scale` from wx_level_config where #{points} &lt;=points and tenant_id=#{tenantId} order by points ASC limit 1 ;
</select>

</mapper>

Загрузка…
Отмена
Сохранить