Pārlūkot izejas kodu

电子卡业务逻辑修改

jk-GitHub-coder 4 gadi atpakaļ
vecāks
revīzija
b777493beb

+ 2 - 2
YijiaRestful/src/main/java/com/platform/yijia/controller/AppUserInfoController.java

@@ -630,7 +630,7 @@ public class AppUserInfoController {
             }
             //是否开起电子卡功能
             if(stationInfos !=null && stationInfos.getCardEnabledFlag().equals("1")){
-                this.insertCustomerElectronicCard(customerElectronicCard, request);
+                this.insertCustomerElectronicCard(customerElectronicCard, request, stationInfos);
             }
             resultData = ResultData.success(CodeMsg.SUCCESS);
         }catch (Exception e){
@@ -665,7 +665,7 @@ public class AppUserInfoController {
     }
 
     //客户电子会员卡表操作
-    public void insertCustomerElectronicCard(CustomerElectronicCard customerElectronicCard, AppUserInfoRequest request){
+    public void insertCustomerElectronicCard(CustomerElectronicCard customerElectronicCard, AppUserInfoRequest request, StationInfo stationInfos){
 
         List<CustomerElectronicCard> electronicCardList = electronicMembershipCardService.getElectronicCardList(customerElectronicCard);
         if(electronicCardList !=null && electronicCardList.size() ==2){

+ 57 - 12
YijiaRestful/src/main/java/com/platform/yijia/controller/ElectronicMembershipCardController.java

@@ -89,8 +89,54 @@ public class ElectronicMembershipCardController {
         ResultData resultData = null;
         logger.info("获取用户电子会员卡信息参数:油站ID:"+ stationId+"用户unionId:"+unionId);
         if(stationId !=null && unionId !=null && unionId !=""){
-            String stationCardEnabledFlag = electronicMembershipCardService.getStationCardEnabledFlag(stationId);
-            if(stationCardEnabledFlag.equals("1")){
+            StationInfo stationInfo = new StationInfo();
+            stationInfo.setStationId(stationId);
+            StationInfo stationInfos = stationService.selectStationInfo(stationInfo);
+            if(stationInfos.getCardEnabledFlag().equals("1")){
+                //1.获取当前油站所开启的电子卡种类
+                CustomerCardSetting customerCardSetting = new CustomerCardSetting();
+                customerCardSetting.setStationId(stationId);
+                if(stationInfos.getCardRuleFlag().equals("1")){
+                    //集团下油站共享充值规则
+                    customerCardSetting.setStationId(stationInfos.getGroupId());
+                }
+                List<CustomerCardSetting> cardRechargeSettingList = electronicMembershipCardService.getCardRechargeSettingList(customerCardSetting);
+                if(cardRechargeSettingList !=null && cardRechargeSettingList.size() >0){
+                    //2.获取油站开卡的种类
+                    String cardOilsType = cardRechargeSettingList.get(0).getCardOilsType();
+                    String[] cardOilsTypeArray = cardOilsType.split(",");
+
+                    //2.1查询客户现已拥有的电子卡
+                    CustomerElectronicCard customerElectronicCard = new CustomerElectronicCard();
+                    customerElectronicCard.setStationId(customerCardSetting.getStationId());
+                    customerElectronicCard.setUnionId(unionId);
+                    String[] cardTypesArray = {};
+                    List<String> hasCard = Arrays.asList(cardTypesArray);
+                    List<CustomerElectronicCard> electronicCardList = electronicMembershipCardService.getElectronicCardList(customerElectronicCard);
+                    for(CustomerElectronicCard c : electronicCardList){
+                        hasCard.add(c.getCardOilsType());
+                    }
+                    List<String> cardOilsTypeArrayList = Arrays.asList(cardOilsTypeArray);
+                    //2.2获取客户要新增的电子卡
+                    for (int i=0; i<cardOilsTypeArrayList.size(); i++){
+                        for (int y=0; y< hasCard.size(); y++){
+                            if(cardOilsTypeArrayList.get(i).equals(hasCard.get(y))){
+                                cardOilsTypeArrayList.remove(i);
+                            }
+                        }
+                    }
+                    //3.依次生成该用户的电子卡
+                    System.out.println(cardOilsTypeArrayList);
+                    List<CustomerElectronicCard> listParam = new ArrayList<>();
+                    for(int i =0; i<cardOilsTypeArrayList.size(); i++){
+                        CustomerElectronicCard c = new CustomerElectronicCard();
+                        listParam.add(c);
+                    }
+                    //3.1批量插入
+
+                }
+
+
                 CustomerElectronicCard customerElectronicCard = new CustomerElectronicCard();
                 customerElectronicCard.setStationId(stationId);
                 customerElectronicCard.setUnionId(unionId);
@@ -353,8 +399,8 @@ public class ElectronicMembershipCardController {
                     params_1.put("stationId", stationId);
                     params_1.put("oilName", oilName);
                     //获取该油站的优惠方式
-                    String discountPlanType = stationService.getStationDiscountWay(stationId);
-                    logger.info("油站优惠方式:"+discountPlanType);
+//                    String discountPlanType = stationService.getStationDiscountWay(stationId);
+//                    logger.info("油站优惠方式:"+discountPlanType);
                     //获取客户会员信息
                     CustomerManage customerManageInfo = customerManagerService.getCustomerManageInfo(customerManage);
                     customerManage.setGroupId(Integer.valueOf(groupId));
@@ -616,10 +662,7 @@ public class ElectronicMembershipCardController {
         }
     }
 
-
-    /**
-     * 打印小票
-     */
+    //小票机打印
     public void printReceipt(PayOrder payOrder) {
         Map<String, Object> infoMap = payOrderService.getOrderInfoAndUserInfoByOrderNo(payOrder);
         //打印机打印小票
@@ -1035,6 +1078,7 @@ public class ElectronicMembershipCardController {
                         logger.info("客户当前充值后应有金额:" + customerElectronicCard.getAmt().toString());
                         electronicMembershipCardService.updateElectronicCardInfoByUnionId(customerElectronicCard);
                     }
+                    customerCardUseRecord.setMobilePhone(electronicCardInfo.getMobilePhone());
                     customerCardUseRecord.setStatus("1");
                     customerCardUseRecord.setBalance(customerElectronicCard.getAmt());
                     customerCardUseRecord.setOrderNo(ordNo);
@@ -1074,11 +1118,8 @@ public class ElectronicMembershipCardController {
                                 wxPushUtil.push(gzhAppId, gzhAppSecret, gzhNewsTemplateInfo.getTemplateId(), blogOpenid, wxMpTemplate);
                                 logger.info("电子会员卡公众号消息推送成功,推送人:"+ blogOpenid);
                                 logger.info("===================================本次充值流程结束===========================================");
-
                             }
-
                         }
-
                     }
                 }
             }
@@ -1096,7 +1137,11 @@ public class ElectronicMembershipCardController {
         ResultData resultData = null;
         if(stationId !=null && unionId !=null){
             CustomerCardUseRecord customerCardUseRecord = new CustomerCardUseRecord();
-            customerCardUseRecord.setUsageType(usageType); // '1' 代表充值 '0' 代表消费
+            if(usageType.equals("1")){
+                customerCardUseRecord.setUsageType("+");
+            }else if(usageType.equals("0")){
+                customerCardUseRecord.setUsageType("-"); // '1' 代表充值 '0' 代表消费
+            }
             customerCardUseRecord.setStationId(stationId);
             customerCardUseRecord.setUnionId(unionId);
             List<CustomerCardUseRecord> cardUseRecordList = electronicMembershipCardService.getCardUseRecordList(customerCardUseRecord);

+ 16 - 14
YijiaRestful/src/main/java/com/platform/yijia/pojo/CustomerCardUseRecord.java

@@ -11,18 +11,20 @@ import java.util.Date;
 @Data
 public class CustomerCardUseRecord {
     private Integer id;
-    private String orderNo;      //'充值订单号',
-    private String unionId;        //'微信用户唯一标识',
-    private String customerNo;      //会员ID
-    private String customerName;    //''客户名'',
-    private String usageType;            //'电子会员卡消费充值类型:+,充值;-,消费;',
-    private String payType;      //'电子会员卡充值消费类型:1.微信;2.POS机',
-    private String cardOilsType;        //油类:1.柴油;2.汽油;
-    private BigDecimal amt;         //'充值,消费金额'
-    private BigDecimal presentAmt;     //''赠送金额''
-    private BigDecimal balance;         //余额
-    private Date createTime;            //'记录时间'
-    private Integer stationId;      //'油站ID'
-    private String stationName;     //'油站名称'
-    private String status;     //'油站名称'
+    private String orderNo;                 //'充值订单号',
+    private String unionId;                 //'微信用户唯一标识',
+    private String aliId;                   // 支付宝用户ID
+    private String customerNo;              // 会员ID
+    private String customerName;            //'客户名'',
+    private String mobilePhone;             //'客户手机号'',
+    private String usageType;               //'电子会员卡消费充值类型:+,充值;-,消费;',
+    private String payType;                 //'电子会员卡充值消费类型:1.微信;2.POS机',
+    private String cardOilsType;            //油类:1.柴油;2.汽油;
+    private BigDecimal amt;                 //'充值,消费金额'
+    private BigDecimal presentAmt;          //'赠送金额''
+    private BigDecimal balance;             //余额
+    private Date createTime;                //'记录时间'
+    private Integer stationId;              //'油站ID'
+    private String stationName;             //'油站名称'
+    private String status;                  //'充值状态'
 }

+ 30 - 16
YijiaRestful/src/main/resources/mapper/ElectronicMembershipCardMapper.xml

@@ -23,8 +23,10 @@
         <id     column="id"                    jdbcType="INTEGER"   property="id" />
         <result column="order_no"              jdbcType="VARCHAR"   property="orderNo" />
         <result column="union_id"              jdbcType="VARCHAR"   property="unionId" />
+        <result column="ali_id"                jdbcType="VARCHAR"   property="aliId" />
         <result column="customer_no"           jdbcType="VARCHAR"   property="customerNo" />
         <result column="customer_name"         jdbcType="VARCHAR"   property="customerName" />
+        <result column="mobile_phone"          jdbcType="VARCHAR"   property="mobilePhone" />
         <result column="usage_type"            jdbcType="VARCHAR"   property="usageType" />
         <result column="pay_type"              jdbcType="VARCHAR"   property="payType" />
         <result column="card_oils_type"        jdbcType="VARCHAR"   property="cardOilsType" />
@@ -116,7 +118,9 @@
             id,
             order_no,
             union_id,
+            ali_id,
             customer_name,
+            mobile_phone,
             usage_type,
             pay_type,
             card_oils_type,
@@ -128,7 +132,7 @@
             station_name,
             status
         FROM
-            customer_card_record_recharge
+            customer_card_use_record
         <where>
             <if test=" orderNo !=null and orderNo !=''">
                 order_no = #{orderNo}
@@ -139,7 +143,7 @@
     <!--根据订单号更新用户充值记录的状态-->
     <update id="updateCardRecordStatusByOrderNo" parameterType="com.platform.yijia.pojo.CustomerElectronicCard">
         UPDATE
-            customer_card_record_recharge
+            customer_card_use_record
         <set>
             <if test="status !=null">
                 status = #{status},
@@ -157,8 +161,7 @@
 
     <!--插入用户电子会员卡的充值使用记录-->
     <insert id="insetCardUseRecordRecharge" parameterType="com.platform.yijia.pojo.CustomerCardUseRecord">
-        INSERT INTO
-            customer_card_record_recharge
+        INSERT INTO customer_card_use_record
         <trim prefix="(" suffix=")" suffixOverrides=",">
             <if test="orderNo !=null">
                 order_no,
@@ -166,6 +169,9 @@
             <if test="unionId !=null">
                 union_id,
             </if>
+            <if test="aliId !=null">
+                ali_id,
+            </if>
             <if test="customerNo !=null">
                 customer_no,
             </if>
@@ -210,6 +216,9 @@
             <if test="unionId !=null">
                 #{unionId},
             </if>
+            <if test="aliId !=null">
+                #{aliId},
+            </if>
             <if test="customerNo !=null">
                 #{customerNo},
             </if>
@@ -251,8 +260,7 @@
 
     <!--插入用户电子会员卡的消费使用记录-->
     <insert id="insetCardUseRecordConsumption" parameterType="com.platform.yijia.pojo.CustomerCardUseRecord">
-        INSERT INTO
-        customer_card_record_consumption
+        INSERT INTO customer_card_use_record
         <trim prefix="(" suffix=")" suffixOverrides=",">
             <if test="orderNo !=null">
                 order_no,
@@ -431,15 +439,21 @@
 
     <!--查询客户电子会员卡的使用记录-->
     <select id="getCardUseRecordList" resultMap="CardRecordBaseResultMap" parameterType="com.platform.yijia.pojo.CustomerCardUseRecord">
-        <if test="usageType !=null and usageType =='0'.toString()">
-            <include refid="Base_Column_List_consumption"/>
-        </if>
-        <if test="usageType !=null and usageType =='1'.toString()">
-            <include refid="Base_Column_List_recharge"/>
-        </if>
-        <if test="usageType ==''">
-            <include refid="Base_Column_List"/>
-        </if>
+        SELECT
+            union_id, station_id, amt, present_amt, usage_type, balance, card_oils_type, usage_type, create_time, `status`
+        FROM customer_card_use_record
+        <where>
+            status ="1"
+            <if test="stationId !=null and stationId !=''">
+                AND station_id = #{stationId}
+            </if>
+            <if test="unionId !=null and unionId !=''">
+                AND union_id = #{unionId}
+            </if>
+            <if test="usageType !=null and usageType !=''">
+                AND usage_type = #{usageType}
+            </if>
+        </where>
     </select>
 
 
@@ -699,7 +713,7 @@
         SELECT
             card_enabled_flag AS cardEnabledFlag
         FROM
-            station_pay
+            sys_dept
         <where>
             <if test="stationId !='' and stationId != null" >
                 station_id = #{stationId}

+ 1 - 1
YijiaRestful/src/main/resources/mapper/StationInfoMapper.xml

@@ -532,7 +532,7 @@
     SELECT
         discount_setting AS discountSetting
     FROM
-        station_pay
+        sys_dept
     <where>
       <if test="stationId !='' and stationId != null" >
         station_id = #{stationId}

+ 18 - 30
YijiaRestful/src/test/java/com/palatform/yijia/test.java

@@ -1,46 +1,34 @@
 package com.palatform.yijia;
 
+import com.platform.yijia.pojo.CustomerElectronicCard;
 import org.apache.commons.codec.digest.DigestUtils;
 
 import java.math.BigDecimal;
 import java.math.BigInteger;
 import java.text.Bidi;
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
 
 public class test {
 
     public static void main(String[] args) {
 
-//        BigDecimal discountAmt_b = new BigDecimal(5.79);
-//        BigDecimal receivableAmt_b = new BigDecimal(100);
-//        BigDecimal oilLiters =null;
-//        oilLiters = receivableAmt_b.divide(discountAmt_b, 2, BigDecimal.ROUND_HALF_UP);
-//        System.out.println(oilLiters);
-//        String s = oilLiters.toString();
-//        String substring = s.substring(s.indexOf(".") + 1);
-//        System.out.println(substring);
-//        if(!substring.equals("00")){
-//            oilLiters = receivableAmt_b.divide(discountAmt_b, 2, BigDecimal.ROUND_UP);
-//        }
-//        System.out.println(oilLiters);
-
-//        String ss = "20210508171257";
-//        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-//        //sdf.
-//        System.out.println(sdf.format(ss));
-
-        String  sss = null;
-        String ddd  =null;
-
-        List<String> aa  = new ArrayList<>();
-//        aa.add(sss);
-//        aa.add(ddd);
-        System.out.println(aa);
-
+        List<String> hasCard = new ArrayList<>();
+        hasCard.add("1");
+        hasCard.add("3");
+        List<String> splitList = new ArrayList<>();
+        splitList.add("1");
+        splitList.add("2");
+        splitList.add("3");
+        splitList.add("4");
+        for (int i=0; i<splitList.size(); i++){
+            for (int y=0; y< hasCard.size(); y++){
+                if(splitList.get(i).equals(hasCard.get(y))){
+                    splitList.remove(i);
+                }
+            }
+        }
+        System.out.println(hasCard);