|
@@ -163,6 +163,60 @@ public class KuaishouRuleSettlementDataServiceImpl implements IKuaishouRuleSettl
|
|
|
}
|
|
|
|
|
|
|
|
|
+ @Override
|
|
|
+ public void promoterData(Long statDate, JSONArray dataArr) {
|
|
|
+ if (!Check.isNull(dataArr)) {
|
|
|
+ List<KuaishouRuleSettlementData> adds = new ArrayList<>();
|
|
|
+ for (int i = 0; i < dataArr.size(); i++) {
|
|
|
+ JSONObject dataJson = dataArr.getJSONObject(i);
|
|
|
+ KuaishouRuleSettlementData settlementData = new KuaishouRuleSettlementData();
|
|
|
+ Long relateId = dataJson.getLong("relateId");
|
|
|
+ Long ruleId = dataJson.getLong("ruleId");
|
|
|
+ Long promoterId = dataJson.getLong("promoterId");
|
|
|
+ String promoterName = dataJson.getString("promoterName");
|
|
|
+ Long orderNum = dataJson.getLong("orderNum");
|
|
|
+ Long validOrderNum = dataJson.getLong("validOrderNum");
|
|
|
+ if (validOrderNum == 0 || Check.isNull(validOrderNum)) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ Long yesterdayOrderNum = dataJson.getLong("yesterdayOrderNum");
|
|
|
+ Long yesterdayValidOrderNum = dataJson.getLong("yesterdayValidOrderNum");
|
|
|
+ Integer rule_type = dataJson.getInteger("rule_type");
|
|
|
+ JSONObject ruleData = new JSONObject();
|
|
|
+ if (rule_type == 3) {
|
|
|
+ ruleData = getPromoterRuleData(relateId, promoterId, ruleId, validOrderNum);
|
|
|
+
|
|
|
+ } else {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ settlementData.setRuleId(ruleId);
|
|
|
+ settlementData.setRuleName(ruleData.getString("ruleName"));
|
|
|
+ settlementData.setSonRuleId(ruleData.getLong("sonRuleId"));
|
|
|
+ settlementData.setPromoterId(promoterId);
|
|
|
+ settlementData.setPromoterName(promoterName);
|
|
|
+ settlementData.setOrderNum(orderNum);
|
|
|
+ settlementData.setValidOrderNum(validOrderNum);
|
|
|
+ settlementData.setYesterdayOrderNum(yesterdayOrderNum);
|
|
|
+ settlementData.setYesterdayValidOrderNum(yesterdayValidOrderNum);
|
|
|
+ settlementData.setStatDate(statDate);
|
|
|
+ settlementData.setAnchorAmount(ruleData.getBigDecimal("anchorAmount"));
|
|
|
+ settlementData.setReferenceAmount(ruleData.getBigDecimal("referenceAmount"));
|
|
|
+ settlementData.setSettlementStatus(ruleData.getInteger("settlementStatus"));
|
|
|
+ settlementData.setLastSettlementOrderNum(ruleData.getLong("lastSettlementOrderNum"));
|
|
|
+ settlementData.setRuleType(rule_type);
|
|
|
+ adds.add(settlementData);
|
|
|
+ }
|
|
|
+ if (!Check.isNull(adds)) {
|
|
|
+ kuaishouRuleSettlementDataMapper.replaceDatas(adds);
|
|
|
+ log.info("结算信息入库完成,时间:{},数据量:{}", statDate, adds.size());
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
// 按区间结算
|
|
|
@Override
|
|
|
public JSONObject getRuleData(Long relateId, Long promoterId, Long ruleId, Long validOrderNum) {
|
|
@@ -428,7 +482,7 @@ public class KuaishouRuleSettlementDataServiceImpl implements IKuaishouRuleSettl
|
|
|
BigDecimal anchorAmount = new BigDecimal(0); // 达人激励
|
|
|
BigDecimal referenceAmount = new BigDecimal(0); // 推荐人激励
|
|
|
KuaishouSettlementRules kuaishouSettlementRules = settlementRulesService.selectKuaishouSettlementRulesById(ruleId);
|
|
|
-
|
|
|
+ returnJson.put("ruleId", ruleId);
|
|
|
JSONObject lastRule = kuaishouRuleSettlementDataMapper.lastRule(relateId, promoterId, ruleId); //上次结算命中的规则
|
|
|
Long lastValidOrderNum = 0L;
|
|
|
if (!Check.isNull(lastRule)) {
|
|
@@ -497,6 +551,83 @@ public class KuaishouRuleSettlementDataServiceImpl implements IKuaishouRuleSettl
|
|
|
}
|
|
|
|
|
|
|
|
|
+ // 按达人结算
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public JSONObject getPromoterRuleData(Long relateId, Long promoterId, Long ruleId, Long validOrderNum) {
|
|
|
+ JSONObject returnJson = new JSONObject();
|
|
|
+ BigDecimal anchorAmount = new BigDecimal(0); // 达人激励
|
|
|
+ BigDecimal referenceAmount = new BigDecimal(0); // 推荐人激励
|
|
|
+ KuaishouSettlementRules kuaishouSettlementRules = settlementRulesService.selectKuaishouSettlementRulesById(ruleId);
|
|
|
+ returnJson.put("ruleId", ruleId);
|
|
|
+ JSONObject lastRule = kuaishouRuleSettlementDataMapper.lastRule(null, promoterId, ruleId); //上次结算命中的规则
|
|
|
+ Long lastValidOrderNum = 0L;
|
|
|
+ if (!Check.isNull(lastRule)) {
|
|
|
+ lastValidOrderNum += lastRule.getLong("validOrderNum");
|
|
|
+ }
|
|
|
+ JSONObject ruleJson = kuaishouRuleSettlementDataMapper.getRuleJson(ruleId);
|
|
|
+ if (Check.isNull(ruleJson)) {
|
|
|
+ returnJson.put("sonRuleId", 0);
|
|
|
+ returnJson.put("ruleName", "未命中结算规则");
|
|
|
+ returnJson.put("anchorAmount", anchorAmount);
|
|
|
+ returnJson.put("referenceAmount", referenceAmount);
|
|
|
+ returnJson.put("settlementStatus", 1);
|
|
|
+ returnJson.put("lastSettlementOrderNum", lastValidOrderNum);
|
|
|
+ return returnJson;
|
|
|
+ }
|
|
|
+ Integer itemCount = ruleJson.getInteger("startItemCount"); // 规则单数
|
|
|
+ BigDecimal ruleAnchorAmount = ruleJson.getBigDecimal("anchorAmount"); // 规则达人激励金额
|
|
|
+ if(Check.isNull(ruleAnchorAmount)){
|
|
|
+ ruleAnchorAmount = new BigDecimal(0);
|
|
|
+ }
|
|
|
+ BigDecimal ruleReferenceAmount = ruleJson.getBigDecimal("referenceAmount"); // 规则达人激励金额
|
|
|
+ if(Check.isNull(ruleReferenceAmount)){
|
|
|
+ ruleReferenceAmount = new BigDecimal(0);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (validOrderNum < itemCount) {
|
|
|
+ returnJson.put("sonRuleId", 0);
|
|
|
+ returnJson.put("ruleName", "未命中结算规则");
|
|
|
+ returnJson.put("anchorAmount", anchorAmount);
|
|
|
+ returnJson.put("referenceAmount", referenceAmount);
|
|
|
+ returnJson.put("settlementStatus", 1);
|
|
|
+ returnJson.put("lastSettlementOrderNum", lastValidOrderNum);
|
|
|
+ return returnJson;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ Integer incentivizedCount = (int) Math.floor(validOrderNum / itemCount); // 需要结算的次数
|
|
|
+ Integer lastIncentivizedCount = kuaishouRuleSettlementDataMapper.selectPromoterIncentiveLog(promoterId); // 已结算次数
|
|
|
+ if (Check.isNull(lastIncentivizedCount)) {
|
|
|
+ lastIncentivizedCount = 0;
|
|
|
+ }
|
|
|
+ if (incentivizedCount > lastIncentivizedCount) {
|
|
|
+ BigDecimal count = new BigDecimal(incentivizedCount - lastIncentivizedCount);
|
|
|
+ BigDecimal promoterIncentiveAmount = count.multiply(ruleAnchorAmount); // 达人奖励
|
|
|
+ BigDecimal referenceIncentiveAmount = count.multiply(ruleReferenceAmount); // 推荐人奖励
|
|
|
+ anchorAmount = anchorAmount.add(promoterIncentiveAmount);
|
|
|
+ referenceAmount = referenceAmount.add(referenceIncentiveAmount);
|
|
|
+ kuaishouRuleSettlementDataMapper.replacePromoterIncentiveLog( promoterId, ruleId, incentivizedCount, lastIncentivizedCount);
|
|
|
+ returnJson.put("sonRuleId", ruleJson.getLong("id"));
|
|
|
+ returnJson.put("ruleName", kuaishouSettlementRules.getRuleName());
|
|
|
+ returnJson.put("anchorAmount", anchorAmount);
|
|
|
+ returnJson.put("referenceAmount", referenceAmount);
|
|
|
+ returnJson.put("settlementStatus", 2);
|
|
|
+ returnJson.put("lastSettlementOrderNum", lastValidOrderNum);
|
|
|
+ return returnJson;
|
|
|
+
|
|
|
+ } else {
|
|
|
+ returnJson.put("sonRuleId", 0);
|
|
|
+ returnJson.put("ruleName", "未命中结算规则");
|
|
|
+ returnJson.put("anchorAmount", anchorAmount);
|
|
|
+ returnJson.put("referenceAmount", referenceAmount);
|
|
|
+ returnJson.put("settlementStatus", 1);
|
|
|
+ returnJson.put("lastSettlementOrderNum", lastValidOrderNum);
|
|
|
+ return returnJson;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
@Override
|
|
|
public List<JSONObject> getSettlementDate(Long statDate, Long promoterId, String promoterName) {
|
|
|
return kuaishouRuleSettlementDataMapper.getSettlementDate(statDate, promoterId, promoterName);
|
|
@@ -516,5 +647,7 @@ public class KuaishouRuleSettlementDataServiceImpl implements IKuaishouRuleSettl
|
|
|
public JSONObject getData() {
|
|
|
return kuaishouRuleSettlementDataMapper.getData();
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
}
|
|
|
|