Procházet zdrojové kódy

修改向客户表插入数据

jk-GitHub-coder před 4 roky
rodič
revize
7207db948e

+ 79 - 0
YijiaRestful/src/main/java/com/platform/yijia/controller/PayController.java

@@ -5,6 +5,7 @@ import com.alibaba.fastjson.parser.Feature;
 import com.google.gson.Gson;
 import com.platform.yijia.param.request.*;
 import com.platform.yijia.pojo.AppUserInfo;
+import com.platform.yijia.pojo.CustomerManage;
 import com.platform.yijia.pojo.PayOrder;
 import com.platform.yijia.service.AppUserInfoService;
 import com.platform.yijia.service.PayOrderService;
@@ -16,6 +17,8 @@ import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.*;
 import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.*;
 
@@ -474,6 +477,82 @@ public class PayController {
                         req.put("code","success");
                         req.put("msg","修改订单状态成功");
                         logger.info(req.toString());
+
+                        //将用户消费的信息插入顾客表
+                        Map<String, Object> infoMap = payOrderService.getOrderInfoAndUserInfoByOrderNo(payOrder);
+                        //手机号必须有
+                        if(infoMap != null && infoMap.containsKey("mobilePhone") && infoMap.get("mobilePhone") !=null ){
+                            //存放客户信息
+                            CustomerManage customerManage = new CustomerManage();
+                            String userType = infoMap.get("userType").toString();
+                            Date blogRegTime = null;    //公众号注册时间
+                            Date minaRegTime = null;    //小程序注册时间
+                            switch (userType){
+                                case "1":
+                                    customerManage.setBlogOpenid(infoMap.get("blogOpenid").toString());
+                                    customerManage.setBlogUserId((Integer) infoMap.get("userId"));
+                                    customerManage.setPhoneNumber(infoMap.get("mobilePhone").toString());
+                                    blogRegTime = (Date) infoMap.get("registeDate");
+                                    break;
+                                case "2":
+                                    customerManage.setMinaOpenid(infoMap.get("minaOpenid").toString());
+                                    customerManage.setMinaUserId((Integer) infoMap.get("userId"));
+                                    customerManage.setPhoneNumber(infoMap.get("mobilePhone").toString());
+                                    minaRegTime = (Date) infoMap.get("registeDate");
+                                    break;
+                            }
+                            //判断公众号和小程序时间取最早的时间
+                            if(blogRegTime !=null && minaRegTime != null){
+                                if(blogRegTime.compareTo(minaRegTime) >0){
+                                    customerManage.setRegtime(minaRegTime);
+                                }else if(blogRegTime.compareTo(minaRegTime) <0){
+                                    customerManage.setRegtime(blogRegTime);
+                                }else if(blogRegTime.compareTo(minaRegTime) ==0){
+                                    //相等时随便取一个
+                                    customerManage.setRegtime(minaRegTime);
+                                }
+                            }else if(blogRegTime == null){
+                                customerManage.setRegtime(minaRegTime);
+                            }else if(minaRegTime == null){
+                                customerManage.setRegtime(blogRegTime);
+                            }
+                            customerManage.setStationId(Integer.valueOf(infoMap.get("stationId").toString()));    //油站ID
+                            customerManage.setOilName(infoMap.get("oilName").toString());    //油品名称
+                            customerManage.setStationName(infoMap.get("stationName").toString());   //存入油站名称
+                            //已存在用户信息 existCustomer
+                            CustomerManage existCustomer = payOrderService.isExistCustomer(customerManage);
+                            logger.info("查询出客户是否存在数据 null 表示没有" + existCustomer);
+                            //判断该用户是否已存在
+                            if(existCustomer != null){  //存在该用户时更新
+                                //此处if放null处理
+                                if(existCustomer.getAmt() !=null){
+                                    //存入金额 累加原来金额
+                                    customerManage.setAmt(existCustomer.getAmt().add(BigDecimal.valueOf((Double) infoMap.get("amt"))));
+                                }else {
+                                    customerManage.setAmt(BigDecimal.valueOf((Double) infoMap.get("amt")));
+                                }
+
+                                if(existCustomer.getLiters() !=null){
+                                    //存入升数 累加原来升数
+                                    customerManage.setLiters(existCustomer.getLiters().add(BigDecimal.valueOf((Double) infoMap.get("orderLiters"))));
+                                }else {
+                                    customerManage.setLiters(BigDecimal.valueOf((Double) infoMap.get("orderLiters")));
+                                }
+                                logger.info("存在客户 更新时参数: " + customerManage.getPhoneNumber());
+                                //存在 更新
+                                payOrderService.updateCustomer(customerManage);
+                            }else{
+                                customerManage.setAmt(BigDecimal.valueOf((Double) infoMap.get("amt")));    //存入金额
+                                customerManage.setLiters(BigDecimal.valueOf((Double) infoMap.get("orderLiters")));    //存入升数
+                                //不存在 新增
+                                logger.info("不存在客户 新增时参数: " + customerManage.toString());
+                                payOrderService.insertCustomer(customerManage);
+                            }
+                        }else{
+                            logger.info("该用户无手机号!");
+                        }
+
+
                         //开始打印
                         List<PayOrder> listUp = payOrderService.getPayOrderList(ordNo);
                         String content1;

+ 7 - 0
YijiaRestful/src/main/java/com/platform/yijia/dao/PayOrderMapper.java

@@ -44,6 +44,13 @@ public interface PayOrderMapper {
      */
     void updateCustomer(CustomerManage customerManage);
 
+    /*
+     * 根据订单号查询订单信息和用户信息  注:此方法在随行付回调校验之后修改状态完成后
+     * @param payOrder
+     * @return
+     */
+    Map<String, Object> getOrderInfoAndUserInfoByOrderNo(PayOrder payOrder);
+
     /***
      * 根据油品名称和油站查询油品调价信息
      * @param map

+ 20 - 1
YijiaRestful/src/main/java/com/platform/yijia/service/PayOrderService.java

@@ -2,6 +2,7 @@ package com.platform.yijia.service;
 
 import com.platform.yijia.param.request.PayOrderRequest;
 import com.platform.yijia.pojo.AppUserInfo;
+import com.platform.yijia.pojo.CustomerManage;
 import com.platform.yijia.pojo.PayOrder;
 
 import java.util.List;
@@ -21,5 +22,23 @@ public interface PayOrderService {
      //根据订单号查询
      PayOrder searchPayOrder(Integer orderId);
 
-
+    /*
+     * 根据订单号查询订单信息和用户信息  注:此方法在随行付回调校验之后修改状态完成后
+     * @param payOrder
+     * @return
+     */
+    Map<String, Object> getOrderInfoAndUserInfoByOrderNo(PayOrder payOrder);
+
+    /*
+     * 判断该客户是否存在
+     * @param customerManage
+     * @return
+     */
+    CustomerManage isExistCustomer(CustomerManage customerManage);
+
+    //更新客户表
+    void updateCustomer(CustomerManage customerManage);
+
+    //插入客户表
+    void insertCustomer(CustomerManage customerManage);
 }

+ 38 - 78
YijiaRestful/src/main/java/com/platform/yijia/service/impl/PayOrderServiceImpl.java

@@ -47,8 +47,6 @@ public class PayOrderServiceImpl implements PayOrderService {
         //System.out.println("随机生成6位数result :"+result);
         String ordNo=System.nanoTime()+result;
         payOrder.setOrderNo(ordNo);
-
-
         payOrder.setDiscountAmt(payOrderRequest.getDiscountAmt());  //优惠金额
         payOrder.setDiscountCouponAmt(payOrderRequest.getDiscountCouponAmt());  //优惠劵金额
         payOrder.setDiscountCoupon(payOrderRequest.getDiscountCoupon());        //优惠券
@@ -132,82 +130,6 @@ public class PayOrderServiceImpl implements PayOrderService {
         List<PayOrder> payOrderList= payOrderMapper.selectByExample(example);
         //返回订单号
         ordNo= payOrderList.get(0).getOrderNo();
-
-        //存放查询用户信息
-        AppUserInfo appUserInfo = new AppUserInfo();
-        //存放客户信息
-        CustomerManage customerManage = new CustomerManage();
-        //向客户表中插入数据
-        appUserInfo.setUserType(payOrderRequest.getUserType()); //用户类型
-        if(payOrderRequest.getUserType().equals("1")){
-            appUserInfo.setBlogOpenid(payOrderRequest.getToken());      //1 是公众号
-        }else if(payOrderRequest.getUserType().equals("2")){
-            appUserInfo.setMinaOpenid(payOrderRequest.getToken());      //2是小程序
-        }
-        //从客户信息表查询数据用于插入客户表
-        List<AppUserInfo> appUserInfoList = payOrderMapper.getUserInfoByOpenId(appUserInfo);
-        Date blogRegTime = null;    //公众号注册时间
-        Date minaRegTime = null;    //小程序注册时间
-        if(appUserInfoList != null && appUserInfoList.size() >0){
-            for(AppUserInfo u : appUserInfoList){
-                switch (u.getUserType()){
-                    case "1":
-                        customerManage.setBlogOpenid(u.getBlogOpenid());
-                        customerManage.setBlogUserId(u.getUserId());
-                        customerManage.setPhoneNumber(u.getMobilePhone());
-                        blogRegTime =u.getRegisteDate();
-                        break;
-                    case "2":
-                        customerManage.setMinaOpenid(u.getMinaOpenid());
-                        customerManage.setMinaUserId(u.getUserId());
-                        customerManage.setPhoneNumber(u.getMobilePhone());
-                        minaRegTime = u.getRegisteDate();
-                        break;
-                }
-            }
-            //判断公众号和小程序时间取最早的时间
-            if(blogRegTime !=null && minaRegTime != null){
-                if(blogRegTime.compareTo(minaRegTime) >0){
-                    customerManage.setRegtime(minaRegTime);
-                }else if(blogRegTime.compareTo(minaRegTime) <0){
-                    customerManage.setRegtime(blogRegTime);
-                }else if(blogRegTime.compareTo(minaRegTime) ==0){
-                    //相等时随便取一个
-                    customerManage.setRegtime(minaRegTime);
-                }
-            }else if(blogRegTime == null){
-                customerManage.setRegtime(minaRegTime);
-            }else if(minaRegTime == null){
-                customerManage.setRegtime(blogRegTime);
-            }
-        }
-        customerManage.setStationId(payOrderRequest.getStationId());    //油站ID
-        customerManage.setOilName(payOrderRequest.getOilName());    //油品名称
-        customerManage.setStationName(payOrder.getStationName());   //存入油站名称
-        //已存在用户信息 existCustomer
-        CustomerManage existCustomer = payOrderMapper.isExistCustomer(customerManage);
-        //判断该用户是否已存在
-        if(existCustomer != null){  //存在该用户时更新
-            //此处if放null处理
-            if(existCustomer.getAmt() !=null){
-                //存入金额 累加原来金额
-                customerManage.setAmt(existCustomer.getAmt().add(BigDecimal.valueOf(Double.valueOf(payOrderRequest.getAmt()))));
-            }else {
-                customerManage.setAmt(BigDecimal.valueOf(Double.valueOf(payOrderRequest.getAmt())));
-            }
-
-            if(existCustomer.getLiters() !=null){
-                //存入升数 累加原来升数
-                customerManage.setLiters(existCustomer.getLiters().add(BigDecimal.valueOf(Double.valueOf(payOrder.getOrderLiters()))));
-            }else {
-                customerManage.setLiters(BigDecimal.valueOf(Double.valueOf(payOrder.getOrderLiters())));
-            }
-            payOrderMapper.updateCustomer(customerManage);
-        }else{
-            customerManage.setAmt(BigDecimal.valueOf(Double.valueOf(payOrderRequest.getAmt())));    //存入金额
-            customerManage.setLiters(BigDecimal.valueOf(Double.valueOf(payOrder.getOrderLiters())));    //存入升数
-            payOrderMapper.insertCustomer(customerManage);
-        }
         return ordNo;
     }
 
@@ -268,4 +190,42 @@ public class PayOrderServiceImpl implements PayOrderService {
         PayOrder payOrder= payOrderMapper.selectByPrimaryKey(orderId);
         return payOrder;
     }
+
+    /*
+     * 根据订单号查询订单信息和用户信息  注:此方法在随行付回调校验之后修改状态完成后
+     * @param payOrder
+     * @return
+     */
+    @Override
+    public Map<String, Object> getOrderInfoAndUserInfoByOrderNo(PayOrder payOrder) {
+        return payOrderMapper.getOrderInfoAndUserInfoByOrderNo(payOrder);
+    }
+
+    /*
+     * 判断客户表是否已存在
+     * @param customerManage
+     * @return
+     */
+    @Override
+    public CustomerManage isExistCustomer(CustomerManage customerManage) {
+        return payOrderMapper.isExistCustomer(customerManage);
+    }
+
+    /*
+     * 更新客户表 注:限用于随行付支付完成处
+     * @param customerManage
+     */
+    @Override
+    public void updateCustomer(CustomerManage customerManage) {
+        payOrderMapper.updateCustomer(customerManage);
+    }
+
+    /*
+     * 新增客户 注:限用于随行付支付完成处
+     * @param customerManage
+     */
+    @Override
+    public void insertCustomer(CustomerManage customerManage) {
+        payOrderMapper.insertCustomer(customerManage);
+    }
 }

+ 26 - 49
YijiaRestful/src/main/resources/mapper/PayOrderMapper.xml

@@ -677,6 +677,30 @@
     </if>
   </update>
 
+  <!--根据订单号查询订单信息和用户信息  此方法在随行付回调之后修改状态完成后-->
+  <select id="getOrderInfoAndUserInfoByOrderNo" parameterType="com.platform.yijia.pojo.PayOrder" resultType="map">
+    SELECT
+        A.order_no				AS orderNo,
+        A.station_name 			AS stationName,
+        A.station_id		    AS stationId,
+        A.status 				AS status,
+        A.oil_name 				AS oilName,
+        A.order_liters 			AS orderLiters,
+        A.amt 					AS amt,
+        B.user_type 			AS userType,
+        B.blog_openid			AS blogOpenid,
+        B.mina_openid			AS minaOpenid,
+        B.mobile_phone			AS mobilePhone,
+        B.user_id				AS userId,
+        B.registe_date			AS registeDate
+    FROM
+        pay_order AS A
+    LEFT JOIN app_user_info AS B ON A.consumer_id = B.user_id
+    WHERE
+        A.order_no = #{orderNo}
+  </select>
+
+
   <!-- 更新订单-->
   <update id="updateOrderStatus" parameterType="com.platform.yijia.pojo.PayOrder">
     UPDATE
@@ -714,10 +738,7 @@
         app_user_info
     WHERE
         mobile_phone = (
-            SELECT
-                mobile_phone
-            FROM
-                app_user_info
+            SELECT mobile_phone FROM app_user_info
             <where>
                 <if test="blogOpenid !=null and blogOpenid !='' ">
                     blog_openid = #{blogOpenid}
@@ -741,11 +762,7 @@
         station_name    AS stationName,
         oil_name        AS oilName,
         liters          AS liters,
-        amt             AS amt,
-        cy_liters       AS cyLiters,
-        qy_liters       AS qyLiters,
-        cy_amt          AS cyAmt,
-        qy_amt          AS qyAmt
+        amt             AS amt
     FROM
         customer_manage
     <where>
@@ -787,20 +804,6 @@
         <if test="amt !=null ">
           amt = #{amt},
         </if>
-
-
-        <if test="cyLiters !=null ">
-          cy_liters = #{cyLiters},
-        </if>
-        <if test="qyLiters !=null ">
-          qy_liters = #{qyLiters},
-        </if>
-        <if test="cyAmt !=null ">
-          cy_amt = #{cyAmt},
-        </if>
-        <if test="qyAmt !=null ">
-          qy_amt = #{qyAmt},
-        </if>
     </set>
     <where>
       <if test="stationId != null and stationId !='' ">
@@ -875,20 +878,6 @@
             qy_grade,
           </if>
 
-
-          <if test="cyLiters !=null ">
-            cy_liters,
-          </if>
-          <if test="qyLiters !=null ">
-            qy_liters,
-          </if>
-
-          <if test="cyAmt !=null ">
-            cy_amt,
-          </if>
-          <if test="qyAmt !=null ">
-            qy_amt,
-          </if>
           <if test="blogOpenid !=null ">
             blog_openid,
           </if>
@@ -959,19 +948,7 @@
           <if test="qyGrade !=null ">
             #{qyGrade},
           </if>
-          <if test="cyLiters !=null ">
-            #{cyLiters},
-          </if>
-          <if test="qyLiters !=null ">
-            #{qyLiters},
-          </if>
 
-          <if test="cyAmt !=null ">
-            #{cyAmt},
-          </if>
-          <if test="qyAmt !=null ">
-            #{qyAmt},
-          </if>
           <if test="blogOpenid !=null ">
             #{blogOpenid},
           </if>