Browse Source

调整非油品积分兑换

jk-GitHub-coder 4 years ago
parent
commit
ecaba6412e

+ 5 - 14
YijiaRestful/src/main/java/com/platform/yijia/controller/IntegralShoppingMallController.java

@@ -152,20 +152,6 @@ public class IntegralShoppingMallController {
             gzhAppSecret = m.get("gzhAppSecret");
             integralOrder.setStationName(stationName);
             customerPointsRecord.setStationName(stationName);
-//            String accessToken ="";
-//            if(!redisCacheUtil.hasKey(gzhAppId)){
-//                accessToken = WeiXinUserUtil.getToken(gzhAppId, gzhAppSecret).getAccessToken();
-//                redisCacheUtil.setCacheObject(gzhAppId, accessToken);
-//                redisCacheUtil.expire(gzhAppId, 7200);
-//            }else {
-//                accessToken  = redisCacheUtil.getCacheObject(gzhAppId);
-//            }
-//            net.sf.json.JSONObject unionIdInfo = WeiXinUserUtil.getUnionIdInfo(accessToken, request.getOpenId());
-//            if(unionIdInfo !=null && unionIdInfo.containsKey("unoinId")){
-//                integralOrder.setUnionId(unionIdInfo.get("unoinId").toString());
-//                customerPoints.setUnionId(unionIdInfo.get("unoinId").toString());
-//                customerPointsRecord.setUnionId(unionIdInfo.get("unoinId").toString());
-//            }
         }
 
         //更新商品已售数量
@@ -272,6 +258,11 @@ public class IntegralShoppingMallController {
             CustomerPointsRecord customerPointsRecord  =new CustomerPointsRecord();
             customerPointsRecord.setUnionId(unionId);
             customerPointsRecord.setStationId(stationId);
+            Calendar c = Calendar.getInstance();
+            c.setTime(new Date());
+            c.add(Calendar.MONTH, -6);
+            Date time = c.getTime();
+            customerPointsRecord.setCreateTime(time);
             List<CustomerPointsRecord> customerPointsRecordList = customerPointsRecordService.getCustomerPointsRecordList(customerPointsRecord);
             resultData=ResultData.success(customerPointsRecordList);
         }else {

+ 57 - 104
YijiaRestful/src/main/java/com/platform/yijia/controller/PayController.java

@@ -712,115 +712,48 @@ public class PayController {
                                         BigDecimal orderLiters = new BigDecimal(infoMap.get("orderLiters").toString());    //本次加油升数
                                         //循环规则明细
                                         for(IntegralRuleDetail integralRuleDetail : integralRuleDetailList){
-                                            //规则类型
-                                            String ruleType = integralRuleDetail.getRuleType();
-                                            if(ruleType !=null && ruleType =="1" && realAmt.compareTo(integralRuleDetail.getRuleTerms()) ==1){
-                                                //以实收金额为准时
-                                                if(discountPlanType == "1" && integralRuleDetail.getGread() !=null && customerManage.getGrade().equals(integralRuleDetail.getGread())){
-                                                    //计算积分并取整
-                                                    BigDecimal integral = realAmt.divide(integralRuleDetail.getSaleAmt(), 0).multiply(integralRuleDetail.getIntegral()).setScale(0, BigDecimal.ROUND_DOWN);
-                                                    //设置积分多倍时间时
-                                                    if(datePicker !=null){
-                                                        for(String str: datePicker){
-                                                            //如果当前时间在改日期比例时间内
-                                                            if (str.contains(currentTime) && rule.get(0).getIntegralProportion() != null){
-                                                                integral=integral.multiply(new BigDecimal(rule.get(0).getIntegralProportion()));
-                                                                break;
-                                                            }
-                                                        }
+                                            if(integralRuleDetail.getOilType().equals("1")){    //油品
+                                                //规则类型
+                                                String ruleType = integralRuleDetail.getRuleType();
+                                                if(ruleType !=null && ruleType =="1" && realAmt.compareTo(integralRuleDetail.getRuleTerms()) ==1){
+                                                    //以实收金额为准时
+                                                    if(discountPlanType == "1" && integralRuleDetail.getGread() !=null && customerManage.getGrade().equals(integralRuleDetail.getGread())){
+                                                        //计算积分并取整
+                                                        countIntegral (realAmt, integralRuleDetail, datePicker, currentTime,  rule, customerPoints, customerPointsRecord, customerPointsInfo);
+                                                        break;
+                                                    }else {
+                                                        //计算积分并取整
+                                                        countIntegral (realAmt, integralRuleDetail, datePicker, currentTime,  rule, customerPoints, customerPointsRecord, customerPointsInfo);
+                                                        break;
                                                     }
-                                                    customerPoints.setPoints(customerPointsInfo.getPoints() + Integer.valueOf(integral.toString()));
-                                                    customerPoints.setAccumulatePoints(customerPointsInfo.getPoints() + Integer.valueOf(integral.toString()));
-                                                    customerPointsRecord.setIntegral(Integer.valueOf(integral.toString()));
-                                                    break;
-                                                }else {
-                                                    //计算积分并取整
-                                                    BigDecimal integral = realAmt.divide(integralRuleDetail.getSaleAmt(), 0).multiply(integralRuleDetail.getIntegral()).setScale(0, BigDecimal.ROUND_DOWN);
-                                                    //设置积分多倍时间时
-                                                    if(datePicker !=null){
-                                                        for(String str: datePicker){
-                                                            if (str.contains(currentTime) && rule.get(0).getIntegralProportion() != null){
-                                                                integral=integral.multiply(new BigDecimal(rule.get(0).getIntegralProportion()));
-                                                                break;
-                                                            }
-                                                        }
+                                                }else if(ruleType !=null && ruleType =="2" && receivableAmt.compareTo(integralRuleDetail.getRuleTerms()) ==1){
+                                                    //应收金额为准时
+                                                    if(discountPlanType == "1" && integralRuleDetail.getGread() !=null && customerManage.getGrade().equals(integralRuleDetail.getGread())){
+                                                        //计算积分并取整
+                                                        countIntegral (receivableAmt, integralRuleDetail, datePicker, currentTime,  rule, customerPoints, customerPointsRecord, customerPointsInfo);
+                                                        break;
+                                                    }else {
+                                                        //计算积分并取整
+                                                        countIntegral (receivableAmt, integralRuleDetail, datePicker, currentTime,  rule, customerPoints, customerPointsRecord, customerPointsInfo);
+                                                        break;
                                                     }
-                                                    customerPoints.setPoints(customerPointsInfo.getPoints() + Integer.valueOf(integral.toString()));
-                                                    customerPoints.setAccumulatePoints(customerPointsInfo.getPoints() + Integer.valueOf(integral.toString()));
-                                                    customerPointsRecord.setIntegral(Integer.valueOf(integral.toString()));
-                                                    break;
-                                                }
-                                            }else if(ruleType !=null && ruleType =="2" && receivableAmt.compareTo(integralRuleDetail.getRuleTerms()) ==1){
-                                                //应收金额为准时
-                                                if(discountPlanType == "1" && integralRuleDetail.getGread() !=null && customerManage.getGrade().equals(integralRuleDetail.getGread())){
-                                                    //计算积分并取整
-                                                    BigDecimal integral = receivableAmt.divide(integralRuleDetail.getSaleAmt(), 0).multiply(integralRuleDetail.getIntegral()).setScale(0, BigDecimal.ROUND_DOWN);
-                                                    //设置积分多倍时间时
-                                                    if(datePicker !=null){
-                                                        for(String str: datePicker){
-                                                            if (str.contains(currentTime) && rule.get(0).getIntegralProportion() != null){
-                                                                integral=integral.multiply(new BigDecimal(rule.get(0).getIntegralProportion()));
-                                                                break;
-                                                            }
-                                                        }
-                                                    }
-                                                    customerPoints.setPoints(customerPointsInfo.getPoints() + Integer.valueOf(integral.toString()));
-                                                    customerPoints.setAccumulatePoints(customerPointsInfo.getPoints() + Integer.valueOf(integral.toString()));
-                                                    customerPointsRecord.setIntegral(Integer.valueOf(integral.toString()));
-                                                    break;
-                                                }else {
-                                                    //计算积分并取整
-                                                    BigDecimal integral = receivableAmt.divide(integralRuleDetail.getSaleAmt(), 0).multiply(integralRuleDetail.getIntegral()).setScale(0, BigDecimal.ROUND_DOWN);
-                                                    //设置积分多倍时间时
-                                                    if(datePicker !=null){
-                                                        for(String str: datePicker){
-                                                            if (str.contains(currentTime) && rule.get(0).getIntegralProportion() != null){
-                                                                integral=integral.multiply(new BigDecimal(rule.get(0).getIntegralProportion()));
-                                                                break;
-                                                            }
-                                                        }
-                                                    }
-                                                    customerPoints.setPoints(customerPointsInfo.getPoints() + Integer.valueOf(integral.toString()));
-                                                    customerPoints.setAccumulatePoints(customerPointsInfo.getPoints() + Integer.valueOf(integral.toString()));
-                                                    customerPointsRecord.setIntegral(Integer.valueOf(integral.toString()));
-                                                    break;
-                                                }
 
-                                            }else if(ruleType !=null && ruleType =="3" && orderLiters.compareTo(integralRuleDetail.getRuleTerms()) ==1){
-                                                //加油升数为准时
-                                                if(discountPlanType == "1" && integralRuleDetail.getGread() !=null && customerManage.getGrade().equals(integralRuleDetail.getGread())){
-                                                    //计算积分并取整
-                                                    BigDecimal integral = orderLiters.divide(integralRuleDetail.getSaleAmt(), 0).multiply(integralRuleDetail.getIntegral()).setScale(0, BigDecimal.ROUND_DOWN);
-                                                    //设置积分多倍时间时
-                                                    if(datePicker !=null){
-                                                        for(String str: datePicker){
-                                                            if (str.contains(currentTime) && rule.get(0).getIntegralProportion() !=null ){
-                                                                integral=integral.multiply(new BigDecimal(rule.get(0).getIntegralProportion()));
-                                                                break;
-                                                            }
-                                                        }
-                                                    }
-                                                    customerPoints.setPoints(customerPointsInfo.getPoints() + Integer.valueOf(integral.toString()));
-                                                    customerPoints.setAccumulatePoints(customerPointsInfo.getPoints() + Integer.valueOf(integral.toString()));
-                                                    customerPointsRecord.setIntegral(Integer.valueOf(integral.toString()));
-                                                    break;
-                                                }else {
-                                                    //计算积分并取整
-                                                    BigDecimal integral = orderLiters.divide(integralRuleDetail.getSaleAmt(), 0).multiply(integralRuleDetail.getIntegral()).setScale(0, BigDecimal.ROUND_DOWN);
-                                                    //设置积分多倍时间时
-                                                    if(datePicker !=null){
-                                                        for(String str: datePicker){
-                                                            if (str.contains(currentTime) && rule.get(0).getIntegralProportion() !=null ){
-                                                                integral=integral.multiply(new BigDecimal(rule.get(0).getIntegralProportion()));
-                                                                break;
-                                                            }
-                                                        }
+                                                }else if(ruleType !=null && ruleType =="3" && orderLiters.compareTo(integralRuleDetail.getRuleTerms()) ==1){
+                                                    //加油升数为准时
+                                                    if(discountPlanType == "1" && integralRuleDetail.getGread() !=null && customerManage.getGrade().equals(integralRuleDetail.getGread())){
+                                                        //计算积分并取整
+                                                        countIntegral (orderLiters, integralRuleDetail, datePicker, currentTime,  rule, customerPoints, customerPointsRecord, customerPointsInfo);
+                                                        break;
+                                                    }else {
+                                                        //计算积分并取整
+                                                        countIntegral (orderLiters, integralRuleDetail, datePicker, currentTime,  rule, customerPoints, customerPointsRecord, customerPointsInfo);
+                                                        break;
                                                     }
-                                                    customerPoints.setPoints(customerPointsInfo.getPoints() + Integer.valueOf(integral.toString()));
-                                                    customerPoints.setAccumulatePoints(customerPointsInfo.getPoints() + Integer.valueOf(integral.toString()));
-                                                    customerPointsRecord.setIntegral(Integer.valueOf(integral.toString()));
-                                                    break;
                                                 }
+                                            }else if(integralRuleDetail.getOilType().equals("2")){ //非油品
+                                                //计算积分并取整
+                                                countIntegral (realAmt, integralRuleDetail, datePicker, currentTime,  rule, customerPoints, customerPointsRecord, customerPointsInfo);
+                                                break;
                                             }
                                         }
                                     }
@@ -1012,4 +945,24 @@ public class PayController {
             req.put("msg","失败");
         }
     }
+
+    //计算积分并赋值
+    public void  countIntegral (BigDecimal b1, IntegralRuleDetail integralRuleDetail,
+                                String[] datePicker, String currentTime, List<IntegralRule> rule,
+                                CustomerPoints customerPoints, CustomerPointsRecord customerPointsRecord, CustomerPoints customerPointsInfo){
+        BigDecimal integral = b1.divide(integralRuleDetail.getSaleAmt(), 0).multiply(integralRuleDetail.getIntegral()).setScale(0, BigDecimal.ROUND_DOWN);
+        //设置积分多倍时间时
+        if(datePicker !=null){
+            for(String str: datePicker){
+                if (str.contains(currentTime) && rule.get(0).getIntegralProportion() !=null ){
+                    integral=integral.multiply(new BigDecimal(rule.get(0).getIntegralProportion()));
+                    break;
+                }
+            }
+        }
+        customerPoints.setPoints(customerPointsInfo.getPoints() + Integer.valueOf(integral.toString()));
+        customerPoints.setAccumulatePoints(customerPointsInfo.getPoints() + Integer.valueOf(integral.toString()));
+        customerPointsRecord.setIntegral(Integer.valueOf(integral.toString()));
+    }
+
 }

+ 1 - 0
YijiaRestful/src/main/java/com/platform/yijia/pojo/IntegralRuleDetail.java

@@ -18,4 +18,5 @@ public class IntegralRuleDetail {
     private String oilName;                 //'油品名称',
     private BigDecimal saleAmt;             //'每消费金额',
     private BigDecimal integral;            //'兑换积分',
+    private String oilType;                 //'油品类型',
 }

+ 8 - 5
YijiaRestful/src/main/resources/mapper/CustomerPointsRecordMapper.xml

@@ -18,7 +18,7 @@
     id, union_id, customer_name, record_type, integral, station_id, station_name, create_time
   </sql>
 
-  <!--查询客户积分信息-->
+  <!--查询客户积分记录信息-->
   <select id="getCustomerPointsRecordList" resultMap="BaseResultMap" parameterType="com.platform.yijia.pojo.CustomerPointsRecord">
     SELECT
         <include refid="Base_Column_List" />
@@ -27,14 +27,17 @@
         <if test="unionId !=null and unionId !=''">
           union_id = #{unionId}
         </if>
-      <if test="stationId !=null and stationId !=''">
-        AND station_id = #{stationId}
-      </if>
+        <if test="stationId !=null and stationId !=''">
+          AND station_id = #{stationId}
+        </if>
+        <if test="createTime !=null">
+          <![CDATA[ AND create_time >=  #{createTime}  ]]>
+        </if>
     </where>
     ORDER BY create_time DESC
   </select>
 
-  <!--插入客户积分表-->
+  <!--插入客户积分记录表-->
   <insert id="insertCustomerPointsInfo" parameterType="com.platform.yijia.pojo.CustomerPoints">
     INSERT INTO customer_points_record
     <trim prefix="(" suffix=")" suffixOverrides=",">

+ 3 - 1
YijiaRestful/src/main/resources/mapper/IntegralRuleMapper.xml

@@ -28,6 +28,7 @@
       <result column="oil_name"               jdbcType="VARCHAR" property="oilName" />
       <result column="sale_amt"               jdbcType="DECIMAL" property="saleAmt" />
       <result column="integral"               jdbcType="DECIMAL" property="integral" />
+      <result column="oil_type"               jdbcType="VARCHAR" property="oilType" />
   </resultMap>
 
   <!--查询油站积分规则信息-->
@@ -52,7 +53,8 @@
         T2.gread,
         T2.oil_name,
         T2.sale_amt,
-        T2.integral
+        T2.integral,
+        T2.oil_type
     FROM
         integral_rule AS T1 LEFT JOIN integral_rule_detail AS T2 ON T1.id = T2.parent_id
     <where>