Ver código fonte

优化生成积分订单业务逻辑

jk-GitHub-coder 4 anos atrás
pai
commit
4200d59670

+ 40 - 36
YijiaRestful/src/main/java/com/platform/yijia/controller/IntegralShoppingMallController.java

@@ -164,44 +164,48 @@ public class IntegralShoppingMallController {
             if(customerPointsInfo !=null){
                 BigDecimal multiply = new BigDecimal(request.getIntegral()).multiply(new BigDecimal(request.getExchangeNum())); //该订单总积分
                 orderSumIntegral = multiply.toString();
-                //用户剩余积分
-                BigDecimal points = new BigDecimal(customerPointsInfo.getPoints()).subtract(multiply);
-                customerPoints.setPoints(Integer.valueOf(points.toString()));
-                surplusPoints = points.toString();
-                //用户已消费积分累积
-                BigDecimal consumptionPoints = new BigDecimal(customerPointsInfo.getConsumptionPoints()).add(multiply);
-                customerPoints.setConsumptionPoints(Integer.valueOf(consumptionPoints.toString()));
-                logger.info("用户积分: "+ consumptionPoints.toString());
-                customerPointsService.updateCustomerPointsInfo(customerPoints);
-            }
+                //用户剩余积分且大于订单积分
+                if(new BigDecimal(customerPointsInfo.getPoints()).compareTo(multiply) ==1){
+                    BigDecimal points = new BigDecimal(customerPointsInfo.getPoints()).subtract(multiply);
+                    customerPoints.setPoints(Integer.valueOf(points.toString()));
+                    surplusPoints = points.toString();
+                    //用户已消费积分累积
+                    BigDecimal consumptionPoints = new BigDecimal(customerPointsInfo.getConsumptionPoints()).add(multiply);
+                    customerPoints.setConsumptionPoints(Integer.valueOf(consumptionPoints.toString()));
+                    logger.info("用户积分: "+ consumptionPoints.toString());
+                    customerPointsService.updateCustomerPointsInfo(customerPoints);
 
-            integralWares.setWaresOutCount(integralWaresInfoList.get(0).getWaresOutCount()+1);
-            integralWares.setWaresCount(integralWaresInfoList.get(0).getWaresCount()-1);
-            logger.info("商品已售数量: "+ integralWares.toString());
-            integralWaresService.updateIntegralWaresInfo(integralWares);
-            //插入客户记录表
-            customerPointsRecord.setRecordType("-");    //客户积分表记录
-            customerPointsRecord.setCreateTime(new Date());
-            //插入客户积分记录
-            customerPointsRecordService.insertCustomerPointsInfo(customerPointsRecord);
+                    integralWares.setWaresOutCount(integralWaresInfoList.get(0).getWaresOutCount()+1);
+                    integralWares.setWaresCount(integralWaresInfoList.get(0).getWaresCount()-1);
+                    logger.info("商品已售数量: "+ integralWares.toString());
+                    integralWaresService.updateIntegralWaresInfo(integralWares);
+                    //插入客户记录表
+                    customerPointsRecord.setRecordType("-");    //客户积分表记录
+                    customerPointsRecord.setCreateTime(new Date());
+                    //插入客户积分记录
+                    customerPointsRecordService.insertCustomerPointsInfo(customerPointsRecord);
 
-            boolean b = integralOrderService.insertIntegralOrder(integralOrder);
-            if (b){
-                //公众号积分消耗消息推送
-                List<WxMpTemplateData> wxMpTemplate = new ArrayList<>();
-                wxMpTemplate.add(new WxMpTemplateData("first","您好!您已成功在"+stationName+"完成积分商品兑换:"));
-                wxMpTemplate.add(new WxMpTemplateData("keyword1", request.getCustomerName()));
-                wxMpTemplate.add(new WxMpTemplateData("keyword2", integralOrderNo));
-                wxMpTemplate.add(new WxMpTemplateData("keyword3", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())));
-                wxMpTemplate.add(new WxMpTemplateData("keyword4", request.getWaresName()+"   x "+ request.getExchangeNum()));
-                wxMpTemplate.add(new WxMpTemplateData("keyword5", orderSumIntegral));
-                wxMpTemplate.add(new WxMpTemplateData("remark",
-                        "截止至" + new SimpleDateFormat(" yyyy年MM月dd日HH时mm分").format(new Date())+",您在"+stationName+"的积分值还剩余 "+surplusPoints+" 分"));
-                String templateId = "9EWrreI-P8r4xDgoOcczC4jHt1v0HEjKzkgVRDzoNXA";  //积分兑换成功通知模板
-                wxPushUtil.push(gzhAppId, gzhAppSecret, templateId, request.getOpenId(), wxMpTemplate);
-                resultData=ResultData.success(CodeMsg.SUCCESS);
-            }else {
-                resultData=ResultData.error(CodeMsg.REQUEST_FAIL);
+                    boolean b = integralOrderService.insertIntegralOrder(integralOrder);
+                    if (b){
+                        //公众号积分消耗消息推送
+                        List<WxMpTemplateData> wxMpTemplate = new ArrayList<>();
+                        wxMpTemplate.add(new WxMpTemplateData("first","您好!您已成功在"+stationName+"完成积分商品兑换:"));
+                        wxMpTemplate.add(new WxMpTemplateData("keyword1", request.getCustomerName()));
+                        wxMpTemplate.add(new WxMpTemplateData("keyword2", integralOrderNo));
+                        wxMpTemplate.add(new WxMpTemplateData("keyword3", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())));
+                        wxMpTemplate.add(new WxMpTemplateData("keyword4", request.getWaresName()+"   x "+ request.getExchangeNum()));
+                        wxMpTemplate.add(new WxMpTemplateData("keyword5", orderSumIntegral));
+                        wxMpTemplate.add(new WxMpTemplateData("remark",
+                                "截止至" + new SimpleDateFormat(" yyyy年MM月dd日HH时mm分").format(new Date())+",您在"+stationName+"的积分值还剩余 "+surplusPoints+" 分"));
+                        String templateId = "9EWrreI-P8r4xDgoOcczC4jHt1v0HEjKzkgVRDzoNXA";  //积分兑换成功通知模板
+                        wxPushUtil.push(gzhAppId, gzhAppSecret, templateId, request.getOpenId(), wxMpTemplate);
+                        resultData=ResultData.success(CodeMsg.SUCCESS);
+                    }else {
+                        resultData=ResultData.error(CodeMsg.REQUEST_FAIL);
+                    }
+                }else {
+                    resultData=ResultData.error(CodeMsg.INTEGRAL_INSUFFICIENT);
+                }
             }
         }else {
             resultData=ResultData.error(CodeMsg.WARSECOUNT_FAIL);

+ 1 - 0
YijiaRestful/src/main/java/com/platform/yijia/utils/CodeMsg.java

@@ -20,6 +20,7 @@ public class CodeMsg {
     public static CodeMsg CHECK_DATA = new CodeMsg(007,"与后台检验不一致,请联系……");
     public static CodeMsg PARAMS_NUll = new CodeMsg(010,"请求失败,参数缺失");
     public static CodeMsg WARSECOUNT_FAIL = new CodeMsg(011,"暂无库存");
+    public static CodeMsg INTEGRAL_INSUFFICIENT = new CodeMsg(012,"您的积分不足");
     private CodeMsg(int retCode, String message) {
         this.retCode = retCode;
         this.message = message;

+ 1 - 4
YijiaRestful/src/main/resources/mapper/CustomerPointsMapper.xml

@@ -132,9 +132,6 @@
     UPDATE
         customer_points
     <set>
-      <if test="unionId !=null">
-        union_id =#{unionId},
-      </if>
       <if test="blogOpenId !=null">
         blog_openid =#{blogOpenId},
       </if>
@@ -173,7 +170,7 @@
       </if>
     </set>
     <where>
-      <if test="unionId !=null">
+      <if test="unionId !=null and unionId !=''">
         union_id = #{unionId}
       </if>
     </where>

+ 23 - 0
YijiaRestful/src/test/java/com/palatform/yijia/YijiaApplicationTests.java

@@ -45,6 +45,29 @@ public  class YijiaApplicationTests {
 
     @Test
     public void testIntegral() {
+        String str = "2021-01-01";
+        //String str = "2021-01-01, 2021-01-02";
+
+//        String [] datePicker={};     //积分比例时间
+//        if(str != null && str !=""){
+//            if(str.contains(",")){
+//                datePicker = str.split(",");
+//            }else {
+//                datePicker= new String[1];
+//                datePicker[0] =str;
+//            }
+//
+//        }
+//        System.out.println(datePicker);
+
+
+
+        BigDecimal b1 = new BigDecimal(0.01);
+
+        BigDecimal integral = b1.divide(new BigDecimal(0.01), 0).multiply(new BigDecimal(100)).setScale(0, BigDecimal.ROUND_DOWN);
+        System.out.println(Integer.valueOf(integral.toString()));
+        System.out.println(integral);
+
 
 //        Map<String, Object> userSessionKeyAndOpenID = weiXinUserUtil.getUserSessionKeyAndOpenID("wxe1135cd390b38a54", "f5a7cf7318cf8638b85bd0fa38f800d0", "003nzx000zeDkL1ssD0001GMQT3nzx0W");
 //        System.out.println(userSessionKeyAndOpenID);