Kaynağa Gözat

会员积分倍率

release_toaliyun_real
Burce 6 yıl önce
ebeveyn
işleme
20984b19eb
5 değiştirilmiş dosya ile 41 ekleme ve 10 silme
  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 Dosyayı Görüntüle

@@ -14,10 +14,11 @@ import javax.persistence.Id;
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
public class WxLevelConfig extends BaseEntity { public class WxLevelConfig extends BaseEntity {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
public static final int DEFAULT_SCALE = 10;

@Id @Id
protected Long id; protected Long id;
@Transient @Transient
protected List<Long> ids; 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") @io.swagger.annotations.ApiModelProperty(value="是否启用(0:未启用,启用1,2,3,分别对应wx_merchant_discount里的rate_vip1, rate_vip2, rate_vip3)",name="discountEnable")
private Integer discountEnable; private Integer discountEnable;


@io.swagger.annotations.ApiModelProperty(value="积分倍率(默认值1.0)",name="scale")
private Integer scale ;

@Transient @Transient
protected Long count; protected Long count;




+ 8
- 3
mallinkService/src/main/java/com/iformall/mapper/WxLevelConfigMapper.java Dosyayı Görüntüle

@@ -16,7 +16,12 @@ public interface WxLevelConfigMapper extends CommonMapper<WxLevelConfig, Long> {
void deleteAll(@Param("tenantId")String tenantId); void deleteAll(@Param("tenantId")String tenantId);


String getLevel(@Param("tenantId")String tenantId,@Param("poins")Integer poins); 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 Dosyayı Görüntüle

@@ -32,6 +32,7 @@ import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors; import java.util.stream.Collectors;


@Service @Service
@@ -69,6 +70,9 @@ public class WxCreditHistoryServiceImpl implements WxCreditHistoryService {
@Autowired @Autowired
ExcelService excelService; ExcelService excelService;


@Autowired
WxLevelConfigMapper wxLevelConfigMapper;

@Override @Override
public void clearCreditByYear() { public void clearCreditByYear() {
WxScoreRules wxScoreRules = new WxScoreRules(); WxScoreRules wxScoreRules = new WxScoreRules();
@@ -193,8 +197,20 @@ public class WxCreditHistoryServiceImpl implements WxCreditHistoryService {
currentCreditAmount = wxCUserBasicInfo.getCredit(); 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) { if (creditChangeNum != 0) {
Long total = Long.valueOf(currentCreditAmount) + Long.valueOf(creditChangeNum); Long total = Long.valueOf(currentCreditAmount) + Long.valueOf(creditChangeNum);
if (total > Integer.MAX_VALUE) { if (total > Integer.MAX_VALUE) {
@@ -260,14 +276,14 @@ public class WxCreditHistoryServiceImpl implements WxCreditHistoryService {
if (wxCUser != null) { if (wxCUser != null) {
WxCUser wxCUserNew = new WxCUser(); WxCUser wxCUserNew = new WxCUser();
wxCUserNew.setId(wxCUser.getId()); wxCUserNew.setId(wxCUser.getId());
wxCUserNew.setCredit(wxCUser.getCredit()-wxCreditHistory.getCreditNum());
wxCUserNew.setCredit(wxCUser.getCredit() - wxCreditHistory.getCreditNum());
wxCUserNew.setUpdateDate(new Date()); wxCUserNew.setUpdateDate(new Date());
wxCUserMapper.updateByPrimaryKeySelective(wxCUserNew); wxCUserMapper.updateByPrimaryKeySelective(wxCUserNew);
} }
if (wxCUserBasicInfo != null) { if (wxCUserBasicInfo != null) {
WxCUserBasicInfo wxCUserBasicInfoNew = new WxCUserBasicInfo(); WxCUserBasicInfo wxCUserBasicInfoNew = new WxCUserBasicInfo();
wxCUserBasicInfoNew.setId(wxCUserBasicInfo.getId()); wxCUserBasicInfoNew.setId(wxCUserBasicInfo.getId());
wxCUserBasicInfoNew.setCredit(wxCUserBasicInfo.getCredit()-wxCreditHistory.getCreditNum());
wxCUserBasicInfoNew.setCredit(wxCUserBasicInfo.getCredit() - wxCreditHistory.getCreditNum());
wxCUserBasicInfoNew.setUpdateDate(new Date()); wxCUserBasicInfoNew.setUpdateDate(new Date());
wxCUserBasicInfoMapper.updateByPrimaryKeySelective(wxCUserBasicInfoNew); wxCUserBasicInfoMapper.updateByPrimaryKeySelective(wxCUserBasicInfoNew);
} }
@@ -300,6 +316,7 @@ public class WxCreditHistoryServiceImpl implements WxCreditHistoryService {


//根据积分类型计算"增加积分" //根据积分类型计算"增加积分"
private int creditIncrement(WxCreditHistory record) { private int creditIncrement(WxCreditHistory record) {
//查找C端用户的成长值
if (record.getCreditType() == EnumScoreType.LOGIN.getCode()) { if (record.getCreditType() == EnumScoreType.LOGIN.getCode()) {
return loginAddCredit(record); return loginAddCredit(record);
} }
@@ -446,7 +463,7 @@ public class WxCreditHistoryServiceImpl implements WxCreditHistoryService {
int baseScore = busRule.getInteger(WxScoreRules.SCORE); // 消费增长积分 int baseScore = busRule.getInteger(WxScoreRules.SCORE); // 消费增长积分


// 4. 计算积分 // 4. 计算积分
if(record.getSpend() >= priceCondition.intValue()) {
if (record.getSpend() >= priceCondition.intValue()) {
Double dScoreT = Math.floor(record.getSpend() * 1.0D / priceCondition * baseScore); Double dScoreT = Math.floor(record.getSpend() * 1.0D / priceCondition * baseScore);
addCreditNumber = dScoreT.intValue(); addCreditNumber = dScoreT.intValue();
log.info("CREDIT:" + busRule.toJSONString() + "\nAddCredit: " + addCreditNumber); log.info("CREDIT:" + busRule.toJSONString() + "\nAddCredit: " + addCreditNumber);


+ 3
- 0
mallinkService/src/main/java/com/iformall/service/impl/WxLevelConfigServiceImpl.java Dosyayı Görüntüle

@@ -49,6 +49,9 @@ public class WxLevelConfigServiceImpl implements WxLevelConfigService {
l.setCount(0L); l.setCount(0L);
} }


if(l.getScale()==null) {
l.setScale(WxLevelConfig.DEFAULT_SCALE);
}
WxCUserBasicInfoDto dto = new WxCUserBasicInfoDto(); WxCUserBasicInfoDto dto = new WxCUserBasicInfoDto();
dto.setTenantId(l.getTenantId()); dto.setTenantId(l.getTenantId());
dto.setLevelStartScore(l.getPoints()); dto.setLevelStartScore(l.getPoints());


+ 3
- 1
mallinkService/src/main/resources/mapper/WxLevelConfigMapper.xml Dosyayı Görüntüle

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

Yükleniyor…
İptal
Kaydet