|
|
|
@@ -1,5 +1,6 @@ |
|
|
|
package com.iformall.service.impl; |
|
|
|
|
|
|
|
import com.alibaba.fastjson.JSONObject; |
|
|
|
import com.iformall.common.IdWorker; |
|
|
|
import com.iformall.domain.po.*; |
|
|
|
import com.iformall.enums.EnumScoreType; |
|
|
|
@@ -141,20 +142,12 @@ public class WxScoreRulesServiceImpl implements WxScoreRulesService { |
|
|
|
user.setScore(addScoreNumber); |
|
|
|
|
|
|
|
// 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; |
|
|
|
} |
|
|
|
|
|
|
|
private int payAddScore(WxOrder order) { |
|
|
|
private int payAddScore(WxOrder order, String bussinessId) { |
|
|
|
int addScoreNumber = 0; |
|
|
|
// 订单金额为0时不计入 |
|
|
|
if (order.getPayment() == 0) |
|
|
|
@@ -162,30 +155,29 @@ public class WxScoreRulesServiceImpl implements WxScoreRulesService { |
|
|
|
// 1. 获取score rules |
|
|
|
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); |
|
|
|
addScoreNumber = dScoreT.intValue(); |
|
|
|
|
|
|
|
// 4. 增长的成长值 |
|
|
|
// 5. 增长的成长值 |
|
|
|
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; |
|
|
|
} |
|
|
|
|
|
|
|
@@ -202,15 +194,7 @@ public class WxScoreRulesServiceImpl implements WxScoreRulesService { |
|
|
|
updateScore(userCar.getCUserId(), addScoreNumber); |
|
|
|
|
|
|
|
// 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; |
|
|
|
} |
|
|
|
|
|
|
|
@@ -231,15 +215,7 @@ public class WxScoreRulesServiceImpl implements WxScoreRulesService { |
|
|
|
updateScore(user.getId(), addScoreNumber); |
|
|
|
|
|
|
|
// 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; |
|
|
|
} |
|
|
|
|
|
|
|
@@ -255,15 +231,7 @@ public class WxScoreRulesServiceImpl implements WxScoreRulesService { |
|
|
|
updateScore(user.getId(), addScoreNumber); |
|
|
|
|
|
|
|
// 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; |
|
|
|
} |
|
|
|
|
|
|
|
@@ -292,31 +260,31 @@ public class WxScoreRulesServiceImpl implements WxScoreRulesService { |
|
|
|
updateScore(user.getId(), addScoreNumber); |
|
|
|
|
|
|
|
// 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(); |
|
|
|
WxScoreHistory history = new WxScoreHistory(); |
|
|
|
history.setId(idWorker.nextId()); |
|
|
|
history.setTenantId(user.getTenantId()); |
|
|
|
history.setCUserId(user.getId()); |
|
|
|
history.setTenantId(tenantId); |
|
|
|
history.setCUserId(id); |
|
|
|
history.setCreateDate(new Date()); |
|
|
|
history.setScoreType(EnumScoreType.COMPLETE_INFO.getCode()); |
|
|
|
history.setScoreType(wechatPhone.getCode()); |
|
|
|
history.setScoreAmount(addScoreNumber); |
|
|
|
wxScoreHistoryMapper.insert(history); |
|
|
|
return addScoreNumber; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
public int addScore(EnumScoreType scoreType ,Object param) { |
|
|
|
public int addScore(EnumScoreType scoreType, Object param) { |
|
|
|
|
|
|
|
switch (scoreType){ |
|
|
|
case LOGIN: { |
|
|
|
WxCUser user = (WxCUser) param; |
|
|
|
return loginAddScore(user); |
|
|
|
} |
|
|
|
case CONSUMPTION: { |
|
|
|
WxOrder order = (WxOrder) param; |
|
|
|
return payAddScore(order); |
|
|
|
} |
|
|
|
case BIND_CAR:{ |
|
|
|
WxCUserCar userCar = (WxCUserCar) param; |
|
|
|
return bindCarAddScore(userCar); |
|
|
|
@@ -341,4 +309,19 @@ public class WxScoreRulesServiceImpl implements WxScoreRulesService { |
|
|
|
} |
|
|
|
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; |
|
|
|
} |
|
|
|
} |