|  | @@ -123,7 +123,14 @@ public class KuaishouRuleSettlementDataServiceImpl implements IKuaishouRuleSettl
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |                  Long yesterdayOrderNum = dataJson.getLong("yesterdayOrderNum");
 | 
	
		
			
				|  |  |                  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.setRuleName(ruleData.getString("ruleName"));
 | 
	
		
			
				|  |  |                  settlementData.setSonRuleId(ruleData.getLong("sonRuleId"));
 | 
	
	
		
			
				|  | @@ -144,6 +151,7 @@ public class KuaishouRuleSettlementDataServiceImpl implements IKuaishouRuleSettl
 | 
	
		
			
				|  |  |                  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)) {
 | 
	
	
		
			
				|  | @@ -154,8 +162,10 @@ public class KuaishouRuleSettlementDataServiceImpl implements IKuaishouRuleSettl
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    // 按区间结算
 | 
	
		
			
				|  |  |      @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();
 | 
	
		
			
				|  |  |          BigDecimal anchorAmount = new BigDecimal(0); // 达人激励
 | 
	
		
			
				|  |  |          BigDecimal referenceAmount = new BigDecimal(0); // 推荐人激励
 | 
	
	
		
			
				|  | @@ -329,7 +339,6 @@ public class KuaishouRuleSettlementDataServiceImpl implements IKuaishouRuleSettl
 | 
	
		
			
				|  |  |                          complement = 10000 - aLong;
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |                  } else {
 | 
	
		
			
				|  |  |                      Long asLong = 10000 - lastValidOrderNum; // 补齐1000单需要的单数
 | 
	
		
			
				|  |  |                      if (validOrderNum - lastValidOrderNum <= asLong) {  // 当前单量不够补齐10000单
 | 
	
	
		
			
				|  | @@ -366,8 +375,6 @@ public class KuaishouRuleSettlementDataServiceImpl implements IKuaishouRuleSettl
 | 
	
		
			
				|  |  |                      } else {
 | 
	
		
			
				|  |  |                          complement = 10000 - lastValidOrderNum;
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |                  // 查询 上次结算补齐10000需要激励的金额
 | 
	
		
			
				|  |  |                  JSONObject totalAmount = kuaishouRuleSettlementDataMapper.getTotalAmount(ruleId, lastSortCount, ruleMaxCount);
 | 
	
	
		
			
				|  | @@ -413,9 +420,80 @@ public class KuaishouRuleSettlementDataServiceImpl implements IKuaishouRuleSettl
 | 
	
		
			
				|  |  |          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
 | 
	
		
			
				|  |  |      public List<JSONObject> getSettlementDate(Long statDate, Long promoterId, String promoterName) {
 | 
	
		
			
				|  |  | -        return kuaishouRuleSettlementDataMapper.getSettlementDate(statDate,promoterId,promoterName);
 | 
	
		
			
				|  |  | +        return kuaishouRuleSettlementDataMapper.getSettlementDate(statDate, promoterId, promoterName);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
	
		
			
				|  | @@ -424,8 +502,8 @@ public class KuaishouRuleSettlementDataServiceImpl implements IKuaishouRuleSettl
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @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);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 |