|
@@ -164,11 +164,9 @@ public class KuaishouRuleSettlementDataServiceImpl implements IKuaishouRuleSettl
|
|
|
returnJson.put("ruleName", kuaishouSettlementRules.getRuleName());
|
|
|
List<JSONObject> ruleList = kuaishouRuleSettlementDataMapper.getRuleList(ruleId);
|
|
|
JSONObject lastRule = kuaishouRuleSettlementDataMapper.lastRule(relateId, promoterId, ruleId); //上次结算命中的规则
|
|
|
- Long lastValidOrderNum;
|
|
|
- if (Check.isNull(lastRule)) {
|
|
|
- lastValidOrderNum = 0L;
|
|
|
- } else {
|
|
|
- lastValidOrderNum = lastRule.getLong("lastRule");
|
|
|
+ Long lastValidOrderNum = 0L;
|
|
|
+ if (!Check.isNull(lastRule)) {
|
|
|
+ lastValidOrderNum += lastRule.getLong("validOrderNum");
|
|
|
}
|
|
|
|
|
|
JSONObject ruleJson = new JSONObject();
|
|
@@ -296,11 +294,82 @@ public class KuaishouRuleSettlementDataServiceImpl implements IKuaishouRuleSettl
|
|
|
String lastValidOrderNumStr = String.valueOf(lastValidOrderNum);
|
|
|
String substring = lastValidOrderNumStr.substring(lastValidOrderNumStr.length() - 4);
|
|
|
Long aLong = Long.valueOf(substring);
|
|
|
- complement = 10000 - aLong;
|
|
|
+ Long curComplement = 10000 - aLong;
|
|
|
+ if (validOrderNum - lastValidOrderNum <= curComplement) { // 当前单量不够补齐10000单
|
|
|
+ Long ruleOrder = aLong + (validOrderNum - lastValidOrderNum); // 当前单数补齐上一次结算的最终单数
|
|
|
+ for (int i = 0; i < ruleList.size(); i++) {
|
|
|
+ JSONObject rule = ruleList.get(i);
|
|
|
+ Long startItemCount = rule.getLong("startItemCount");
|
|
|
+ Long endItemCount = rule.getLong("endItemCount");
|
|
|
+ if (ruleOrder >= startItemCount && ruleOrder <= endItemCount) {
|
|
|
+ ruleJson = rule;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (Check.isNull(ruleJson) || ruleJson.size() == 0) { // 剩余单量未命中结算规则 直接跳出此次结算计算
|
|
|
+ returnJson.put("sonRuleId", 0);
|
|
|
+ returnJson.put("anchorAmount", anchorAmount);
|
|
|
+ returnJson.put("referenceAmount", referenceAmount);
|
|
|
+ returnJson.put("settlementStatus", 2);
|
|
|
+ returnJson.put("lastSettlementOrderNum", lastValidOrderNum);
|
|
|
+ return returnJson;
|
|
|
+ } else {
|
|
|
+ Integer currentSortCount = ruleJson.getInteger("sortCount"); // 当前结算命中的规则序号
|
|
|
+ JSONObject amount = kuaishouRuleSettlementDataMapper.getTotalAmount(ruleId, lastSortCount, currentSortCount); // 新的规则 序号从0开始
|
|
|
+ returnJson.put("sonRuleId", ruleJson.getLong("id"));
|
|
|
+ anchorAmount = anchorAmount.add(amount.getBigDecimal("anchorAmount"));
|
|
|
+ referenceAmount = referenceAmount.add(amount.getBigDecimal("referenceAmount"));
|
|
|
+ returnJson.put("anchorAmount", anchorAmount);
|
|
|
+ returnJson.put("referenceAmount", referenceAmount);
|
|
|
+ returnJson.put("settlementStatus", 2);
|
|
|
+ returnJson.put("lastSettlementOrderNum", lastValidOrderNum);
|
|
|
+ return returnJson;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ complement = 10000 - aLong;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
} else {
|
|
|
- complement = 10000 - lastValidOrderNum;
|
|
|
+ Long asLong = 10000 - lastValidOrderNum; // 补齐1000单需要的单数
|
|
|
+ if (validOrderNum - lastValidOrderNum <= asLong) { // 当前单量不够补齐10000单
|
|
|
+ Long ruleOrder = lastValidOrderNum + (validOrderNum - lastValidOrderNum); // 当前单数补齐上一次结算的最终单数
|
|
|
+ for (int i = 0; i < ruleList.size(); i++) {
|
|
|
+ JSONObject rule = ruleList.get(i);
|
|
|
+ Long startItemCount = rule.getLong("startItemCount");
|
|
|
+ Long endItemCount = rule.getLong("endItemCount");
|
|
|
+ if (ruleOrder >= startItemCount && ruleOrder <= endItemCount) {
|
|
|
+ ruleJson = rule;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (Check.isNull(ruleJson) || ruleJson.size() == 0) { // 剩余单量未命中结算规则 直接跳出此次结算计算
|
|
|
+ returnJson.put("sonRuleId", 0);
|
|
|
+ returnJson.put("anchorAmount", anchorAmount);
|
|
|
+ returnJson.put("referenceAmount", referenceAmount);
|
|
|
+ returnJson.put("settlementStatus", 2);
|
|
|
+ returnJson.put("lastSettlementOrderNum", lastValidOrderNum);
|
|
|
+ return returnJson;
|
|
|
+ } else {
|
|
|
+ Integer currentSortCount = ruleJson.getInteger("sortCount"); // 当前结算命中的规则序号
|
|
|
+ JSONObject amount = kuaishouRuleSettlementDataMapper.getTotalAmount(ruleId, lastSortCount, currentSortCount); // 新的规则 序号从0开始
|
|
|
+ returnJson.put("sonRuleId", ruleJson.getLong("id"));
|
|
|
+ anchorAmount = anchorAmount.add(amount.getBigDecimal("anchorAmount"));
|
|
|
+ referenceAmount = referenceAmount.add(amount.getBigDecimal("referenceAmount"));
|
|
|
+ returnJson.put("anchorAmount", anchorAmount);
|
|
|
+ returnJson.put("referenceAmount", referenceAmount);
|
|
|
+ returnJson.put("settlementStatus", 2);
|
|
|
+ returnJson.put("lastSettlementOrderNum", lastValidOrderNum);
|
|
|
+ return returnJson;
|
|
|
+ }
|
|
|
+
|
|
|
+ } else {
|
|
|
+ complement = 10000 - lastValidOrderNum;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
}
|
|
|
- // 查询 上次结算补齐10000w需要激励的金额
|
|
|
+ // 查询 上次结算补齐10000需要激励的金额
|
|
|
JSONObject totalAmount = kuaishouRuleSettlementDataMapper.getTotalAmount(ruleId, lastSortCount, ruleMaxCount);
|
|
|
anchorAmount = anchorAmount.add(totalAmount.getBigDecimal("anchorAmount"));
|
|
|
referenceAmount = referenceAmount.add(totalAmount.getBigDecimal("referenceAmount"));
|