瀏覽代碼

修改调整

jk-GitHub-coder 4 年之前
父節點
當前提交
ff3d8dfc3c

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

@@ -1,5 +1,6 @@
 package com.platform.yijia.dao;
 
+import com.platform.yijia.pojo.AppUserInfo;
 import com.platform.yijia.pojo.CustomerManage;
 import com.platform.yijia.pojo.PayOrder;
 import com.platform.yijia.pojo.PayOrderExample;
@@ -23,6 +24,13 @@ public interface PayOrderMapper {
     CustomerManage isExistCustomer(CustomerManage customerManage);
 
     /*
+     * 根据用户登录openId 获取用户信息用于插入客户表
+     * @param appUserInfo
+     * @return
+     */
+    List<AppUserInfo> getUserInfoByOpenId(AppUserInfo appUserInfo);
+
+    /*
      *  插入客户
      * @param customerManage
      * @return

+ 6 - 0
YijiaRestful/src/main/java/com/platform/yijia/pojo/CustomerManage.java

@@ -33,4 +33,10 @@ public class CustomerManage {
     private String minaOpenid;     //'小程序openid',
     private Integer blogUserId; // '公众号userid',
     private Integer minaUserId;  //'小程序的userid',
+    private String grade;   //等级
+    private String oilName; //油品名称  oil_name
+    private BigDecimal liters; //总升数
+    private BigDecimal amt; //总金额
+    private String unionId; //用户unionId  union_id
+
 }

+ 62 - 93
YijiaRestful/src/main/java/com/platform/yijia/service/impl/PayOrderServiceImpl.java

@@ -14,6 +14,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import javax.xml.crypto.Data;
 import java.math.BigDecimal;
 import java.text.DateFormat;
 import java.text.ParseException;
@@ -37,11 +38,6 @@ public class PayOrderServiceImpl implements PayOrderService {
     @Transactional
     public String AddPayOrderInfo(PayOrderRequest payOrderRequest, PayOrder payOrder) {
 
-        //存放查询用户信息
-        AppUserInfo appUserInfo = new AppUserInfo();
-        //存放客户信息
-        CustomerManage customerManage = new CustomerManage();
-
         //订单规则 时间+6位随机数
         Random random = new Random();
         String result="";
@@ -104,30 +100,6 @@ public class PayOrderServiceImpl implements PayOrderService {
         if(receivableAmt != null && oilPrice != null){
             payOrder.setOrderLiters(recKonOrderLiters(String.valueOf(receivableAmt), String.valueOf(oilPrice), 2));
         }
-
-        //根据油品名称和油站id获取当前油品调价信息
-//        params.put("oilName", payOrderRequest.getOilName());
-//        List<Map> oilPriceAdjustList = payOrderMapper.selectOilPriceAdjust(params);
-//        String amt = payOrderRequest.getAmt();  //订单金额
-//        if(oilPriceAdjustList != null && oilPriceAdjustList.size() > 0){  //若存在油价价格调整时
-//            for (Map m : oilPriceAdjustList){
-//                // 如果生效时间小于当前时间则使用生效时间 取离当前时间最近的调整价格(查询结果按生效时间降序排序故只做此判断即可)
-//                if(compareEffectTime(m.get("takeEffectDate").toString())){
-//                    if(m.containsKey("oilAdjustPrice") && m.get("oilAdjustPrice").toString() !=null && !m.get("oilAdjustPrice").toString().equals("")){
-//                        payOrder.setOrderLiters(recKonOrderLiters(amt, m.get("oilAdjustPrice").toString(), 2));       //计算加油升数且存入
-//                        payOrder.setOilPirce(m.get("oilAdjustPrice").toString());
-//                    }
-//                    break;
-//                }
-//            }
-//        }else {     //若没有油价调整时则使用原始油价计算加油升数
-//            if(mapResultList.get(0).containsKey("oilPrice") && mapResultList.get(0).get("oilPrice").toString() !=null && !mapResultList.get(0).get("oilPrice").toString().equals("")){
-//                String oilPrice = mapResultList.get(0).get("oilPrice").toString();    //原始价格
-//                payOrder.setOilPirce(oilPrice);
-//                payOrder.setOrderLiters(recKonOrderLiters(amt, oilPrice, 2));     //计算油价升数存放
-//            }
-//        }
-
         String oilName = payOrderRequest.getOilName();
         payOrder.setOilName(oilName);      //油品名称
         //根据油品名称存储油品类型 1.柴油 2 汽油
@@ -161,82 +133,79 @@ public class PayOrderServiceImpl implements PayOrderService {
         //返回订单号
         ordNo= payOrderList.get(0).getOrderNo();
 
+        //存放查询用户信息
+        AppUserInfo appUserInfo = new AppUserInfo();
+        //存放客户信息
+        CustomerManage customerManage = new CustomerManage();
         //向客户表中插入数据
         appUserInfo.setUserType(payOrderRequest.getUserType()); //用户类型
         if(payOrderRequest.getUserType().equals("1")){
-            //1 是公众号
-            appUserInfo.setBlogOpenid(payOrderRequest.getToken());
-            customerManage.setBlogOpenid(payOrderRequest.getToken());
-            //customerManage
+            appUserInfo.setBlogOpenid(payOrderRequest.getToken());      //1 是公众号
         }else if(payOrderRequest.getUserType().equals("2")){
-            //2是小程序
-            appUserInfo.setMinaOpenid(payOrderRequest.getToken());
-            customerManage.setMinaOpenid(payOrderRequest.getToken());
+            appUserInfo.setMinaOpenid(payOrderRequest.getToken());      //2是小程序
         }
-
-        //判断该用户是否已存在
-        customerManage.setStationId(payOrderRequest.getStationId());
+        //从客户信息表查询数据用于插入客户表
+        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(payOrder.getOilType().equals("1")){
-                //数据库使用decimal 防空处理
-                //柴油总金额
-                if(existCustomer.getCyAmt() ==null){
-                    customerManage.setCyAmt(BigDecimal.valueOf(Double.valueOf(payOrderRequest.getAmt())));
-                }else{
-                    BigDecimal sumCyAmt = existCustomer.getCyAmt().add(BigDecimal.valueOf(Double.valueOf(payOrderRequest.getAmt())));
-                    customerManage.setCyAmt(sumCyAmt);
-                }
-                //柴油总升数
-                if(existCustomer.getCyLiters() ==null){
-                    customerManage.setCyLiters(BigDecimal.valueOf(Double.valueOf(payOrder.getOrderLiters())));
-                }else{
-                    BigDecimal sumCyLiters = existCustomer.getCyLiters().add(BigDecimal.valueOf(Double.valueOf(payOrder.getOrderLiters())));
-                    customerManage.setCyLiters(sumCyLiters);
-                }
+            //此处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())));
+            }
 
-            }else if(payOrder.getOilType().equals("2")) {
-                //汽油金额
-                if(existCustomer.getQyAmt() ==null){
-                    customerManage.setQyAmt(BigDecimal.valueOf(Double.valueOf(payOrderRequest.getAmt())));
-                }else{
-                    BigDecimal sumQyAmt = existCustomer.getQyAmt().add(BigDecimal.valueOf(Double.valueOf(payOrderRequest.getAmt())));
-                    customerManage.setQyAmt(sumQyAmt);
-                }
-                //汽油升数
-                if(existCustomer.getQyLiters() == null){
-                    customerManage.setQyLiters(BigDecimal.valueOf(Double.valueOf(payOrder.getOrderLiters())));
-                }else{
-                    BigDecimal sumQyLiters = existCustomer.getQyLiters().add(BigDecimal.valueOf(Double.valueOf(payOrder.getOrderLiters())));
-                    customerManage.setQyLiters(sumQyLiters);
-                }
+            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{
-            //不存在时从客户信息表查询插入
-            List<AppUserInfo> userInfos = appUserInfoService.Authentication(appUserInfo);
-            if(userInfos.size() == 1 && userInfos !=null){
-                customerManage.setPhoneNumber(userInfos.get(0).getMobilePhone());
-                //存入客户表用户表的id
-                if(userInfos.get(0).getUserType().equals("1")){
-                    customerManage.setBlogUserId(userInfos.get(0).getUserId());
-                }else if(userInfos.get(0).getUserType().equals("2")){
-                    customerManage.setMinaUserId(userInfos.get(0).getUserId());
-                }
-                customerManage.setRegtime(userInfos.get(0).getRegisteDate());   //存入注册时间
-            }
-            //customerManage.setPhoneNumber(payOrderRequest.getCustomerPhone());  //客户电话
-            customerManage.setStationName(payOrder.getStationName());   //存入油站名称
-            //存入柴油 汽油 金额 升数
-            if(payOrder.getOilType().equals("1")){
-                customerManage.setCyAmt(BigDecimal.valueOf(Double.valueOf(payOrderRequest.getAmt())));
-                customerManage.setCyLiters(BigDecimal.valueOf(Double.valueOf(payOrder.getOrderLiters())));
-            }else if(payOrder.getOilType().equals("2")) {
-                customerManage.setQyAmt(BigDecimal.valueOf(Double.valueOf(payOrderRequest.getAmt())));
-                customerManage.setQyLiters(BigDecimal.valueOf(Double.valueOf(payOrder.getOrderLiters())));
-            }
+            customerManage.setAmt(BigDecimal.valueOf(Double.valueOf(payOrderRequest.getAmt())));    //存入金额
+            customerManage.setLiters(BigDecimal.valueOf(Double.valueOf(payOrder.getOrderLiters())));    //存入升数
             payOrderMapper.insertCustomer(customerManage);
         }
         return ordNo;

+ 2 - 2
YijiaRestful/src/main/java/com/platform/yijia/service/impl/StationServiceImpl.java

@@ -72,7 +72,7 @@ public class StationServiceImpl implements StationService {
                     double distance = MapHelper.GetPointDistance(coordinate, distanceData);
                     Double format = Double.parseDouble(String.format("%.1f", distance));
                     //计算距离 展示距离小于5公里以内的站
-                    if(format<=5){
+                    //if(format<=5){
                         stationInfoResponse.setStationId(stationInfo.getStationId());
                         stationInfoResponse.setStationName(stationInfo.getStationName());
                         stationInfoResponse.setStationAddress(stationInfo.getStationAddress());
@@ -87,7 +87,7 @@ public class StationServiceImpl implements StationService {
                         stationInfoResponse.setDistance(format);
                         stationInfoResponse.setMno(stationInfo.getMno());
                         stationInfoList.add(stationInfoResponse);
-                    }
+                    //}
                 }
             }
         }

+ 82 - 18
YijiaRestful/src/main/resources/mapper/PayOrderMapper.xml

@@ -259,7 +259,7 @@
         member_no, member_amt, print_count, car_no, customer_phone, customer_grade, oil_type)
     VALUES (
         #{orderId,jdbcType=INTEGER}, #{orderNo,jdbcType=VARCHAR}, #{oilGun,jdbcType=VARCHAR},
-        #{oilName,jdbcType=VARCHAR}, #{oilPirce,jdbcType=VARCHAR}, #{consumerId,jdbcType=INTEGER}, #{consumer,jdbcType=VARCHAR},
+        #{oilName,jdbcType=VARCHAR}, #{oilPirce,jdbcType=DOUBLE}, #{consumerId,jdbcType=INTEGER}, #{consumer,jdbcType=VARCHAR},
         #{amt,jdbcType=DOUBLE}, #{stationId,jdbcType=INTEGER}, #{status,jdbcType=VARCHAR},
         #{orderLiters,jdbcType=VARCHAR}, #{payType,jdbcType=VARCHAR}, #{payWay,jdbcType=VARCHAR},
         #{payDate,jdbcType=TIMESTAMP}, #{oilPersonnel,jdbcType=VARCHAR}, #{createdDate,jdbcType=TIMESTAMP},
@@ -416,7 +416,7 @@
         #{oilName,jdbcType=VARCHAR},
       </if>
       <if test="oilPirce != null">
-        #{oilPirce,jdbcType=VARCHAR},
+        #{oilPirce,jdbcType=DOUBLE},
       </if>
       <if test="consumerId != null">
         #{consumerId,jdbcType=INTEGER},
@@ -669,7 +669,7 @@
         customer_grade = #{record.customerGrade,jdbcType=VARCHAR},
       </if>
       <if test="oilType != null">
-        oil_type = #{record.oilType,jdbcType=VARCHAR}
+        oil_type = #{record.oilType,jdbcType=VARCHAR},
       </if>
     </set>
     <if test="_parameter != null">
@@ -692,7 +692,7 @@
           pay_date = #{payDate,jdbcType=TIMESTAMP},
         </if>
         <if test="printCount != null">
-          print_count = #{printCount,jdbcType=INTEGER}
+          print_count = #{printCount,jdbcType=INTEGER},
         </if>
     </set>
     <where>
@@ -700,6 +700,36 @@
     </where>
   </update>
 
+
+  <!--根据用户登录openId 获取用户信息用于插入客户表-->
+  <select id="getUserInfoByOpenId" parameterType="com.platform.yijia.pojo.AppUserInfo" resultType="com.platform.yijia.pojo.AppUserInfo">
+    SELECT
+        user_id 		 AS userId,
+        mina_openid      AS minaOpenid,
+        blog_openid      AS blogOpenid,
+        registe_date     AS registeDate,
+        mobile_phone     AS mobilePhone,
+        user_type 	     AS userType
+    FROM
+        app_user_info
+    WHERE
+        mobile_phone = (
+            SELECT
+                mobile_phone
+            FROM
+                app_user_info
+            <where>
+                <if test="blogOpenid !=null and blogOpenid !='' ">
+                    blog_openid = #{blogOpenid}
+                </if>
+                <if test="minaOpenid !=null and minaOpenid !='' ">
+                    mina_openid = #{minaOpenid}
+                </if>
+            </where>
+        )
+  </select>
+
+
   <!-- 判断客户表是否已存在-->
   <select id="isExistCustomer" parameterType="com.platform.yijia.pojo.CustomerManage" resultType="com.platform.yijia.pojo.CustomerManage">
     SELECT
@@ -709,6 +739,9 @@
         phone_number    AS phoneNumber,
         regtime         AS regtime,
         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,
@@ -716,14 +749,14 @@
     FROM
         customer_manage
     <where>
-      <if test="blogOpenid !=null and blogOpenid !='' ">
-        blog_openid = #{blogOpenid}
+      <if test="stationId !=null and stationId !='' ">
+         station_id = #{stationId}
       </if>
-      <if test="minaOpenid !=null and minaOpenid !='' ">
-        AND mina_openid = #{minaOpenid}
+      <if test="phoneNumber !=null and phoneNumber !='' ">
+        AND phone_number = #{phoneNumber}
       </if>
-      <if test="stationId !=null and stationId !='' ">
-        AND station_id = #{stationId}
+      <if test="oilName !=null and oilName !='' ">
+        AND oil_name = #{oilName}
       </if>
     </where>
   </select>
@@ -745,6 +778,17 @@
         <if test="stationName !=null ">
           station_name = #{stationName},
         </if>
+        <if test="oilName !=null ">
+          oil_name = #{oilName},
+        </if>
+        <if test="liters !=null ">
+          liters = #{liters},
+        </if>
+        <if test="amt !=null ">
+          amt = #{amt},
+        </if>
+
+
         <if test="cyLiters !=null ">
           cy_liters = #{cyLiters},
         </if>
@@ -759,14 +803,14 @@
         </if>
     </set>
     <where>
-      <if test="blogOpenid != null and blogOpenid !='' ">
-        blog_openid = #{blogOpenid}
+      <if test="stationId != null and stationId !='' ">
+         station_id = #{stationId}
       </if>
-      <if test="minaOpenid != null and minaOpenid !='' ">
-         mina_openid = #{minaOpenid}
+      <if test="phoneNumber !=null and phoneNumber !='' ">
+        AND phone_number = #{phoneNumber}
       </if>
-      <if test="stationId != null and stationId !='' ">
-        AND station_id = #{stationId}
+      <if test="oilName !=null and oilName !='' ">
+        AND oil_name = #{oilName}
       </if>
     </where>
   </update>
@@ -814,6 +858,16 @@
             station_name,
           </if>
 
+          <if test="oilName !=null ">
+            oil_name,
+          </if>
+          <if test="liters !=null ">
+            liters,
+          </if>
+          <if test="amt !=null ">
+            amt,
+          </if>
+
           <if test="cyGrade !=null ">
             cy_grade,
           </if>
@@ -889,6 +943,16 @@
             #{stationName, jdbcType=VARCHAR},
           </if>
 
+          <if test="oilName !=null ">
+            #{oilName},
+          </if>
+          <if test="liters !=null ">
+            #{liters},
+          </if>
+          <if test="amt !=null ">
+            #{amt},
+          </if>
+
           <if test="cyGrade !=null ">
             #{cyGrade},
           </if>
@@ -994,7 +1058,7 @@
         oil_name = #{oilName,jdbcType=VARCHAR},
       </if>
       <if test="oilPirce != null">
-        oil_pirce = #{oilPirce,jdbcType=VARCHAR},
+        oil_pirce = #{oilPirce,jdbcType=DOUBLE},
       </if>
       <if test="consumerId != null">
         consumer_id = #{consumerId,jdbcType=INTEGER},
@@ -1116,7 +1180,7 @@
     set order_no = #{orderNo,jdbcType=VARCHAR},
       oil_gun = #{oilGun,jdbcType=VARCHAR},
       oil_name = #{oilName,jdbcType=VARCHAR},
-      oil_pirce = #{oilPirce,jdbcType=VARCHAR},
+      oil_pirce = #{oilPirce,jdbcType=DOUBLE},
       consumer_id = #{consumerId,jdbcType=INTEGER},
       consumer = #{consumer,jdbcType=VARCHAR},
       amt = #{amt,jdbcType=VARCHAR},