|
@@ -123,7 +123,14 @@ public class KuaishouRuleSettlementDataServiceImpl implements IKuaishouRuleSettl
|
|
}
|
|
}
|
|
Long yesterdayOrderNum = dataJson.getLong("yesterdayOrderNum");
|
|
Long yesterdayOrderNum = dataJson.getLong("yesterdayOrderNum");
|
|
Long yesterdayValidOrderNum = dataJson.getLong("yesterdayValidOrderNum");
|
|
Long yesterdayValidOrderNum = dataJson.getLong("yesterdayValidOrderNum");
|
|
- JSONObject ruleData = getRuleData(relateId, promoterId, ruleId, orderNum, validOrderNum, yesterdayOrderNum, yesterdayValidOrderNum);
|
|
|
|
|
|
+ Integer rule_type = dataJson.getInteger("rule_type");
|
|
|
|
+ JSONObject ruleData = new JSONObject();
|
|
|
|
+ if (rule_type == 1) {
|
|
|
|
+ ruleData = getRuleData(relateId, promoterId, ruleId, validOrderNum);
|
|
|
|
+
|
|
|
|
+ } else if (rule_type == 2) {
|
|
|
|
+ ruleData = getOrderRuleData(relateId, promoterId, ruleId, validOrderNum);
|
|
|
|
+ }
|
|
settlementData.setRuleId(ruleId);
|
|
settlementData.setRuleId(ruleId);
|
|
settlementData.setRuleName(ruleData.getString("ruleName"));
|
|
settlementData.setRuleName(ruleData.getString("ruleName"));
|
|
settlementData.setSonRuleId(ruleData.getLong("sonRuleId"));
|
|
settlementData.setSonRuleId(ruleData.getLong("sonRuleId"));
|
|
@@ -144,6 +151,7 @@ public class KuaishouRuleSettlementDataServiceImpl implements IKuaishouRuleSettl
|
|
settlementData.setReferenceAmount(ruleData.getBigDecimal("referenceAmount"));
|
|
settlementData.setReferenceAmount(ruleData.getBigDecimal("referenceAmount"));
|
|
settlementData.setSettlementStatus(ruleData.getInteger("settlementStatus"));
|
|
settlementData.setSettlementStatus(ruleData.getInteger("settlementStatus"));
|
|
settlementData.setLastSettlementOrderNum(ruleData.getLong("lastSettlementOrderNum"));
|
|
settlementData.setLastSettlementOrderNum(ruleData.getLong("lastSettlementOrderNum"));
|
|
|
|
+ settlementData.setRuleType(rule_type);
|
|
adds.add(settlementData);
|
|
adds.add(settlementData);
|
|
}
|
|
}
|
|
if (!Check.isNull(adds)) {
|
|
if (!Check.isNull(adds)) {
|
|
@@ -154,8 +162,10 @@ public class KuaishouRuleSettlementDataServiceImpl implements IKuaishouRuleSettl
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
|
|
+ // 按区间结算
|
|
@Override
|
|
@Override
|
|
- public JSONObject getRuleData(Long relateId, Long promoterId, Long ruleId, Long orderNum, Long validOrderNum, Long yesterdayOrderNum, Long yesterdayValidOrderNum) {
|
|
|
|
|
|
+ public JSONObject getRuleData(Long relateId, Long promoterId, Long ruleId, Long validOrderNum) {
|
|
JSONObject returnJson = new JSONObject();
|
|
JSONObject returnJson = new JSONObject();
|
|
BigDecimal anchorAmount = new BigDecimal(0); // 达人激励
|
|
BigDecimal anchorAmount = new BigDecimal(0); // 达人激励
|
|
BigDecimal referenceAmount = new BigDecimal(0); // 推荐人激励
|
|
BigDecimal referenceAmount = new BigDecimal(0); // 推荐人激励
|
|
@@ -329,7 +339,6 @@ public class KuaishouRuleSettlementDataServiceImpl implements IKuaishouRuleSettl
|
|
complement = 10000 - aLong;
|
|
complement = 10000 - aLong;
|
|
}
|
|
}
|
|
|
|
|
|
-
|
|
|
|
} else {
|
|
} else {
|
|
Long asLong = 10000 - lastValidOrderNum; // 补齐1000单需要的单数
|
|
Long asLong = 10000 - lastValidOrderNum; // 补齐1000单需要的单数
|
|
if (validOrderNum - lastValidOrderNum <= asLong) { // 当前单量不够补齐10000单
|
|
if (validOrderNum - lastValidOrderNum <= asLong) { // 当前单量不够补齐10000单
|
|
@@ -366,8 +375,6 @@ public class KuaishouRuleSettlementDataServiceImpl implements IKuaishouRuleSettl
|
|
} else {
|
|
} else {
|
|
complement = 10000 - lastValidOrderNum;
|
|
complement = 10000 - lastValidOrderNum;
|
|
}
|
|
}
|
|
-
|
|
|
|
-
|
|
|
|
}
|
|
}
|
|
// 查询 上次结算补齐10000需要激励的金额
|
|
// 查询 上次结算补齐10000需要激励的金额
|
|
JSONObject totalAmount = kuaishouRuleSettlementDataMapper.getTotalAmount(ruleId, lastSortCount, ruleMaxCount);
|
|
JSONObject totalAmount = kuaishouRuleSettlementDataMapper.getTotalAmount(ruleId, lastSortCount, ruleMaxCount);
|
|
@@ -413,9 +420,80 @@ public class KuaishouRuleSettlementDataServiceImpl implements IKuaishouRuleSettl
|
|
return returnJson;
|
|
return returnJson;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
|
|
+ // 按单量结算
|
|
|
|
+ @Override
|
|
|
|
+ public JSONObject getOrderRuleData(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);
|
|
|
|
+
|
|
|
|
+ JSONObject lastRule = kuaishouRuleSettlementDataMapper.lastRule(relateId, 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"); // 规则达人激励金额
|
|
|
|
+ BigDecimal ruleReferenceAmount = ruleJson.getBigDecimal("referenceAmount"); // 规则达人激励金额
|
|
|
|
+
|
|
|
|
+ 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.selectIncentiveLog(relateId, 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.replaceIncentiveLog(relateId, 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
|
|
@Override
|
|
public List<JSONObject> getSettlementDate(Long statDate, Long promoterId, String promoterName) {
|
|
public List<JSONObject> getSettlementDate(Long statDate, Long promoterId, String promoterName) {
|
|
- return kuaishouRuleSettlementDataMapper.getSettlementDate(statDate,promoterId,promoterName);
|
|
|
|
|
|
+ return kuaishouRuleSettlementDataMapper.getSettlementDate(statDate, promoterId, promoterName);
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -424,8 +502,8 @@ public class KuaishouRuleSettlementDataServiceImpl implements IKuaishouRuleSettl
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- public List<JSONObject> getPromoterSettlementDetail(Long date, Long promoterId,Integer settlementStatus) {
|
|
|
|
- return kuaishouRuleSettlementDataMapper.getPromoterSettlementDetail(date,promoterId,settlementStatus);
|
|
|
|
|
|
+ public List<JSONObject> getPromoterSettlementDetail(Long date, Long promoterId, Integer settlementStatus) {
|
|
|
|
+ return kuaishouRuleSettlementDataMapper.getPromoterSettlementDetail(date, promoterId, settlementStatus);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|