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

[支付成长值][修改]:基于业态设定不同的成长值

release_toaliyun_real
Stormeye Wu 7 лет назад
Родитель
Сommit
3d9b634a91
4 измененных файлов: 74 добавлений и 66 удалений
  1. +20
    -0
      mallinkService/src/main/java/com/iformall/domain/po/WxScoreRules.java
  2. +5
    -0
      mallinkService/src/main/java/com/iformall/service/WxScoreRulesService.java
  3. +2
    -2
      mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java
  4. +47
    -64
      mallinkService/src/main/java/com/iformall/service/impl/WxScoreRulesServiceImpl.java

+ 20
- 0
mallinkService/src/main/java/com/iformall/domain/po/WxScoreRules.java Просмотреть файл

@@ -129,6 +129,26 @@ public class WxScoreRules implements Serializable {
return null; return null;
} }


public JSONObject getRuleObj(EnumScoreType scoreType) {
if (rules == null)
return null;

List<JSONObject> list = JSONObject.parseArray(rules, JSONObject.class);
if (list == null)
return null;
if (list.size() == 0)
return null;

for (JSONObject jo:list) {
Integer id = jo.getInteger(WxScoreRules.ID);
if ( id!= null && id.equals(scoreType.getCode())){
return jo;
}
}

return null;
}

public Date getCreateDate() { public Date getCreateDate() {
return createDate; return createDate;
} }


+ 5
- 0
mallinkService/src/main/java/com/iformall/service/WxScoreRulesService.java Просмотреть файл

@@ -27,4 +27,9 @@ public interface WxScoreRulesService {
*/ */
int addScore(EnumScoreType scoreType, Object param); int addScore(EnumScoreType scoreType, Object param);


/**
* 增加成长值
*/
int addScore2(EnumScoreType scoreType, Object param1, Object param2);

} }

+ 2
- 2
mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java Просмотреть файл

@@ -685,7 +685,7 @@ public class WxOrderServiceImpl implements WxOrderService {


// 成长值 计算 // 成长值 计算
try { try {
wxScoreRulesService.addScore(EnumScoreType.CONSUMPTION,updateOrder);
wxScoreRulesService.addScore2(EnumScoreType.CONSUMPTION, updateOrder, coupon.getBusiness());
} catch (Exception e) { } catch (Exception e) {
logger.error("成长值:" + e.getMessage()); logger.error("成长值:" + e.getMessage());
} }
@@ -715,7 +715,7 @@ public class WxOrderServiceImpl implements WxOrderService {


// 成长值 计算 // 成长值 计算
try { try {
wxScoreRulesService.addScore(EnumScoreType.CONSUMPTION,updateOrder);
wxScoreRulesService.addScore2(EnumScoreType.CONSUMPTION, updateOrder, "6"); // bussinessId 6 其他
} catch (Exception e) { } catch (Exception e) {
logger.error("成长值:" + e.getMessage()); logger.error("成长值:" + e.getMessage());
} }


+ 47
- 64
mallinkService/src/main/java/com/iformall/service/impl/WxScoreRulesServiceImpl.java Просмотреть файл

@@ -1,5 +1,6 @@
package com.iformall.service.impl; package com.iformall.service.impl;


import com.alibaba.fastjson.JSONObject;
import com.iformall.common.IdWorker; import com.iformall.common.IdWorker;
import com.iformall.domain.po.*; import com.iformall.domain.po.*;
import com.iformall.enums.EnumScoreType; import com.iformall.enums.EnumScoreType;
@@ -141,20 +142,12 @@ public class WxScoreRulesServiceImpl implements WxScoreRulesService {
user.setScore(addScoreNumber); user.setScore(addScoreNumber);


// 3. 记录历史 // 3. 记录历史
final IdWorker idWorker = IdWorker.get();
WxScoreHistory history = new WxScoreHistory();
history.setId(idWorker.nextId());
history.setTenantId(user.getTenantId());
history.setCUserId(user.getId());
history.setCreateDate(new Date());
history.setScoreType(EnumScoreType.LOGIN.getCode());
history.setScoreAmount(addScoreNumber);
wxScoreHistoryMapper.insert(history);
recordScoreHistory(addScoreNumber, user.getTenantId(), user.getId(), EnumScoreType.LOGIN);


return addScoreNumber; return addScoreNumber;
} }


private int payAddScore(WxOrder order) {
private int payAddScore(WxOrder order, String bussinessId) {
int addScoreNumber = 0; int addScoreNumber = 0;
// 订单金额为0时不计入 // 订单金额为0时不计入
if (order.getPayment() == 0) if (order.getPayment() == 0)
@@ -162,30 +155,29 @@ public class WxScoreRulesServiceImpl implements WxScoreRulesService {
// 1. 获取score rules // 1. 获取score rules
WxScoreRules scoreRules = getScoreRules(order.getTenantId()); WxScoreRules scoreRules = getScoreRules(order.getTenantId());


// 2. 获取成长值
int priceCondition = scoreRules.getRule(EnumScoreType.CONSUMPTION,WxScoreRules.STEP) * 100; // 元->分
int baseScore = scoreRules.getRule(EnumScoreType.CONSUMPTION,WxScoreRules.SCORE);//消费增长积分
// 2. 获取成长值 by id
JSONObject payRule = scoreRules.getRuleObj(EnumScoreType.CONSUMPTION);
// 3. 获取成长值 by 业态
JSONObject busRule = payRule.getJSONObject(bussinessId);
if(busRule == null) {
busRule = payRule.getJSONObject("6"); // 其他 bussinessId 6
}
if (busRule == null) {
busRule = payRule;
}
int priceCondition = busRule.getInteger(WxScoreRules.STEP) * 100; // 元->分
int baseScore = busRule.getInteger(WxScoreRules.SCORE); // 消费增长积分


// 3. 计算成长值
// 4. 计算成长值
Long dScoreT = Math.round(order.getPayment() * 1.0d / priceCondition * baseScore); Long dScoreT = Math.round(order.getPayment() * 1.0d / priceCondition * baseScore);
addScoreNumber = dScoreT.intValue(); addScoreNumber = dScoreT.intValue();


// 4. 增长的成长值
// 5. 增长的成长值
updateScore(order.getCUserId(), addScoreNumber); updateScore(order.getCUserId(), addScoreNumber);


// 5. 记录历史
final IdWorker idWorker = IdWorker.get();
WxScoreHistory history = new WxScoreHistory();
history.setId(idWorker.nextId());
history.setTenantId(order.getTenantId());
history.setCUserId(order.getCUserId());
history.setCreateDate(new Date());
history.setScoreType(EnumScoreType.CONSUMPTION.getCode());
history.setOrderId(order.getId());
history.setPayType(order.getPaymentType());
history.setPayAmount(order.getPayment());
history.setScoreAmount(addScoreNumber);
wxScoreHistoryMapper.insert(history);
// 6. 记录历史
recordScoreHistory(addScoreNumber, order.getTenantId(), order.getCUserId(), EnumScoreType.CONSUMPTION);

return addScoreNumber; return addScoreNumber;
} }


@@ -202,15 +194,7 @@ public class WxScoreRulesServiceImpl implements WxScoreRulesService {
updateScore(userCar.getCUserId(), addScoreNumber); updateScore(userCar.getCUserId(), addScoreNumber);


// 4. 记录历史 // 4. 记录历史
final IdWorker idWorker = IdWorker.get();
WxScoreHistory history = new WxScoreHistory();
history.setId(idWorker.nextId());
history.setTenantId(userCar.getTenantId());
history.setCUserId(userCar.getCUserId());
history.setCreateDate(new Date());
history.setScoreType(EnumScoreType.BIND_CAR.getCode());
history.setScoreAmount(addScoreNumber);
wxScoreHistoryMapper.insert(history);
recordScoreHistory(addScoreNumber, userCar.getTenantId(), userCar.getCUserId(), EnumScoreType.BIND_CAR);
return addScoreNumber; return addScoreNumber;
} }


@@ -231,15 +215,7 @@ public class WxScoreRulesServiceImpl implements WxScoreRulesService {
updateScore(user.getId(), addScoreNumber); updateScore(user.getId(), addScoreNumber);


// 4. 记录历史 // 4. 记录历史
final IdWorker idWorker = IdWorker.get();
WxScoreHistory history = new WxScoreHistory();
history.setId(idWorker.nextId());
history.setTenantId(user.getTenantId());
history.setCUserId(user.getId());
history.setCreateDate(new Date());
history.setScoreType(EnumScoreType.WECHAT_PERSION.getCode());
history.setScoreAmount(addScoreNumber);
wxScoreHistoryMapper.insert(history);
recordScoreHistory(addScoreNumber, user.getTenantId(), user.getId(), EnumScoreType.WECHAT_PERSION);
return addScoreNumber; return addScoreNumber;
} }


@@ -255,15 +231,7 @@ public class WxScoreRulesServiceImpl implements WxScoreRulesService {
updateScore(user.getId(), addScoreNumber); updateScore(user.getId(), addScoreNumber);


// 4. 记录历史 // 4. 记录历史
final IdWorker idWorker = IdWorker.get();
WxScoreHistory history = new WxScoreHistory();
history.setId(idWorker.nextId());
history.setTenantId(user.getTenantId());
history.setCUserId(user.getId());
history.setCreateDate(new Date());
history.setScoreType(EnumScoreType.WECHAT_PHONE.getCode());
history.setScoreAmount(addScoreNumber);
wxScoreHistoryMapper.insert(history);
recordScoreHistory(addScoreNumber, user.getTenantId(), user.getId(), EnumScoreType.WECHAT_PHONE);
return addScoreNumber; return addScoreNumber;
} }


@@ -292,31 +260,31 @@ public class WxScoreRulesServiceImpl implements WxScoreRulesService {
updateScore(user.getId(), addScoreNumber); updateScore(user.getId(), addScoreNumber);


// 4. 记录历史 // 4. 记录历史
recordScoreHistory(addScoreNumber, user.getTenantId(), user.getId(), EnumScoreType.COMPLETE_INFO);
return addScoreNumber;
}

private void recordScoreHistory(int addScoreNumber, String tenantId, Long id, EnumScoreType wechatPhone) {
final IdWorker idWorker = IdWorker.get(); final IdWorker idWorker = IdWorker.get();
WxScoreHistory history = new WxScoreHistory(); WxScoreHistory history = new WxScoreHistory();
history.setId(idWorker.nextId()); history.setId(idWorker.nextId());
history.setTenantId(user.getTenantId());
history.setCUserId(user.getId());
history.setTenantId(tenantId);
history.setCUserId(id);
history.setCreateDate(new Date()); history.setCreateDate(new Date());
history.setScoreType(EnumScoreType.COMPLETE_INFO.getCode());
history.setScoreType(wechatPhone.getCode());
history.setScoreAmount(addScoreNumber); history.setScoreAmount(addScoreNumber);
wxScoreHistoryMapper.insert(history); wxScoreHistoryMapper.insert(history);
return addScoreNumber;
} }




@Override @Override
public int addScore(EnumScoreType scoreType ,Object param) {
public int addScore(EnumScoreType scoreType, Object param) {


switch (scoreType){ switch (scoreType){
case LOGIN: { case LOGIN: {
WxCUser user = (WxCUser) param; WxCUser user = (WxCUser) param;
return loginAddScore(user); return loginAddScore(user);
} }
case CONSUMPTION: {
WxOrder order = (WxOrder) param;
return payAddScore(order);
}
case BIND_CAR:{ case BIND_CAR:{
WxCUserCar userCar = (WxCUserCar) param; WxCUserCar userCar = (WxCUserCar) param;
return bindCarAddScore(userCar); return bindCarAddScore(userCar);
@@ -341,4 +309,19 @@ public class WxScoreRulesServiceImpl implements WxScoreRulesService {
} }
return 0; return 0;
} }

@Override
public int addScore2(EnumScoreType scoreType, Object param1, Object param2) {

switch (scoreType){
case CONSUMPTION: {
WxOrder order = (WxOrder) param1;
String bussinessId = param2.toString();
return payAddScore(order, bussinessId);
}
default: {
}
}
return 0;
}
} }

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