Administrator
2024-07-08 d4da9210f2bf5fd1ed533cb9a94af6b114349ce4
2024-07-08 朱宝民 优化营销接口,支持10位水卡编号
6个文件已修改
199 ■■■■ 已修改文件
pipIrr-platform/pipIrr-global/src/main/resources/application-database-sp.yml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeCardOperateMapper.xml 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientCardMapper.xml 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateCtrl.java 133 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateSv.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/clientCard/ClientCardCtrl.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/application-database-sp.yml
@@ -5,8 +5,8 @@
      #name: sp
      type: com.alibaba.druid.pool.DruidDataSource
      driverClassName: com.mysql.cj.jdbc.Driver
#      url: jdbc:mysql://192.168.40.166:3306/pipIrr_sp?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull
      url: jdbc:mysql://8.140.179.55:3306/pipIrr_sp?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull
      url: jdbc:mysql://192.168.40.166:3306/pipIrr_sp?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull
#      url: jdbc:mysql://8.140.179.55:3306/pipIrr_sp?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull
      username: root
      password: dysql,;.abc!@#
      druid:
pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeCardOperateMapper.xml
@@ -240,7 +240,7 @@
    INNER JOIN ba_user us ON ope.operator = us.id
    Left JOIN se_payment_method pay ON ope.payment_id = pay.id
    <where>
      AND ope.operate_type in(2, 5)
      AND ope.operate_type in(1, 2, 5)
      <if test = "clientName != null and clientName !=''">
        AND cli.name like CONCAT('%',#{clientName},'%')
      </if>
@@ -274,10 +274,11 @@
      cli.clientNum,
      cli.address,
      card.money,
      CASE
        WHEN card.cardNum LIKE '10%' THEN CONCAT(SUBSTRING(card.cardNum, 7, 6),SUBSTRING(card.cardNum, 14, 4))
        ELSE card.cardNum
      END AS cardNum,
      cardNum,
<!--      CASE-->
<!--        WHEN card.cardNum LIKE '10%' THEN CONCAT(SUBSTRING(card.cardNum, 7, 6),SUBSTRING(card.cardNum, 14, 4))-->
<!--        ELSE card.cardNum-->
<!--      END AS cardNum,-->
      IFNULL(ope.card_cost,0) AS cardCost,
      IFNULL(ope.trade_amount, 0) AS amount,
      IFNULL(ope.refund_amount, 0) AS refundAmount,
pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientCardMapper.xml
@@ -68,7 +68,7 @@
  <select id="getCardNumOfMax"  resultType="java.lang.String">
    SELECT cardNum
    FROM se_client_card
    WHERE cardNum LIKE CONCAT('%',#{areaCode},'%')
    WHERE cardNum LIKE CONCAT(#{areaCode},'%')
    ORDER BY cardNum desc
    LIMIT 0,1
  </select>
@@ -366,10 +366,11 @@
    SELECT
        cli.clientNum,
        cli.name AS clientName,
        CASE
            WHEN card.cardNum LIKE '10%' THEN CONCAT(SUBSTRING(card.cardNum, 7, 6),SUBSTRING(card.cardNum, 14, 4))
            ELSE card.cardNum
        END AS cardNum,
        cardNum,
<!--        CASE-->
<!--            WHEN card.cardNum LIKE '10%' THEN CONCAT(SUBSTRING(card.cardNum, 7, 6),SUBSTRING(card.cardNum, 14, 4))-->
<!--            ELSE card.cardNum-->
<!--        END AS cardNum,-->
        cli.phone,
        cli.idCard,
        card.state AS cardState,
@@ -419,10 +420,11 @@
    SELECT
        cli.clientNum,
        cli.name AS clientName,
        CASE
          WHEN card.cardNum LIKE '10%' THEN CONCAT(SUBSTRING(card.cardNum, 7, 6),SUBSTRING(card.cardNum, 14, 4))
          ELSE card.cardNum
        END AS cardNum,
        cardNum,
<!--        CASE-->
<!--          WHEN card.cardNum LIKE '10%' THEN CONCAT(SUBSTRING(card.cardNum, 7, 6),SUBSTRING(card.cardNum, 14, 4))-->
<!--          ELSE card.cardNum-->
<!--        END AS cardNum,-->
        cli.phone,
        cli.idCard,
        card.state AS cardState,
@@ -431,7 +433,7 @@
        FORMAT(card.money,2) AS money
    FROM se_client_card card
        INNER JOIN se_client cli ON card.clientId = cli.id
    WHERE card.state = 3 AND NOT EXISTS (SELECT * FROM se_client_card card2 WHERE card2.original_card_id = card.cardNum)
    WHERE card.state = 3 AND NOT EXISTS (SELECT * FROM se_client_card card2 WHERE card2.original_card_id = card.id)
    ORDER BY card.id
    <trim prefix="limit " >
      <if test="start != null and count != null">
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateCtrl.java
@@ -76,27 +76,40 @@
            return BaseResponseUtils.buildErrorMsg(SellResultCode.AREA_CODE_MISTAKE.getMessage());
        }
        // p206V1_0_1协议,将前6位行政区划改为100000
        if(po.getProtocol().trim().equals("p206V1_0_1")) {
            areaCode = "100000" + areaCode.substring(6);
        // p206V1_0_1协议,取行政区划的后6位
        if(po.getProtocol() != null && po.getProtocol().trim().equals("p206V1_0_1")) {
            areaCode = areaCode.substring(6);
        }
        /**
         * 根据行政区划串(areaCode)在水卡表中针对水卡编号(cardNum)进行模糊查询
         * 如果4位顺序号已经达到最大值,提示用户联系系统管理员
         * 如果4位顺序号未达到最大值,则加1
         * 如果顺序号已经达到最大值,提示用户联系系统管理员
         * 如果顺序号未达到最大值,则加1
         * cardNum为新的卡号
         */
        String cardNum = Optional.ofNullable(cardOperateSv.getCardNumOfMax(areaCode)).orElse("");
        if(cardNum != null && cardNum.trim().length() > 0) {
            Integer number = Integer.parseInt(cardNum.substring(12));
            number = number + 1;
            if(number > 65535) {
                return BaseResponseUtils.buildErrorMsg(SellResultCode.CARD_NUMBER_OVERRUN.getMessage());
        if(po.getProtocol().trim().equals("p206V1_0_1")) {
            if(cardNum != null && cardNum.trim().length() > 0) {
                Integer number = Integer.parseInt(cardNum.substring(6));
                number = number + 1;
                if(number > 9999) {
                    return BaseResponseUtils.buildErrorMsg(SellResultCode.CARD_NUMBER_OVERRUN.getMessage());
                }
                cardNum = cardNum.substring(0, 6) + String.format("%04d", number);
            } else {
                cardNum = areaCode + "0001";
            }
            cardNum = cardNum.substring(0, 12) + String.format("%05d", number);
        } else {
            cardNum = areaCode + "00001";
        }else {
            if(cardNum != null && cardNum.trim().length() > 0) {
                Integer number = Integer.parseInt(cardNum.substring(12));
                number = number + 1;
                if(number > 65535) {
                    return BaseResponseUtils.buildErrorMsg(SellResultCode.CARD_NUMBER_OVERRUN.getMessage());
                }
                cardNum = cardNum.substring(0, 12) + String.format("%05d", number);
            } else {
                cardNum = areaCode + "00001";
            }
        }
        /**
@@ -182,13 +195,9 @@
            }
        }
        if(po.getProtocol().trim().equals("p206V1_0_1")) {
            cardNum = cardNum.substring(6,12) + cardNum.substring(13);
        }
        Map map = new HashMap();
        map.put("projectNo", String.format("%02x", Integer.parseInt(cardOperateSv.getProjectNo())));
        map.put("orderNumber", cardId);
        map.put("orderNumber", rec);
        map.put("cardNum", cardNum);
        return BaseResponseUtils.buildSuccess(map) ;
    }
@@ -231,21 +240,13 @@
        Long operator = po.getOperator();
        String protocol = null;
        // 如果传入的是10位的水卡编号,升为17位水卡编号
        String cardNumS = String.valueOf(cardNum).trim();
        if(cardNumS.length() == 10) {
            cardNumS = "100000" + cardNumS.substring(0,6) + "0" + cardNumS.substring(6);
            protocol = "p206V1_0_1";
        }
        cardNum = Long.valueOf(cardNumS);
        // 判断当前水卡是否为挂失状态且未补卡,仅已经挂失且未补卡的可以补卡
        if(!cardOperateSv.isLostAndUnreplaced(cardNum)) {
            return BaseResponseUtils.buildErrorMsg(SellResultCode.THE_CARD_NOT_SUPPORT_THIS_OPERATION.getMessage());
        }
        // 如果传入了退还金额,需要判断老卡(被挂失的水卡)挂失时是否已经退款,无论退款多少都提示用户挂失时已退款
        if(reissueAmount != null) {
        if(reissueAmount != null && reissueAmount > 0) {
            Double tradeAmount = cardOperateSv.getTradeAmountByCardNo(cardNum);
            if(tradeAmount != null) {
                return BaseResponseUtils.buildErrorMsg(SellResultCode.THE_FEE_CANNOT_BE_REFUNDED.getMessage());
@@ -275,12 +276,14 @@
        /**
         * 添加开卡记录,退还金额冲到新卡中
         */
        if(String.valueOf(cardNum).trim().length() == 10) {
            protocol = "p206V1_0_1";
        }
        DtoActiveCard dtoActiveCard = new DtoActiveCard();
        dtoActiveCard.setProtocol(protocol);
        dtoActiveCard.setCardAddr(cardAddr);
        dtoActiveCard.setClientNum(clientNum);
        dtoActiveCard.setOriginalCardId(cardId);
        //dtoActiveCard.setOriginalCardId(cardNum);
        dtoActiveCard.setCardCost(cardCost);
        dtoActiveCard.setAmount(reissueAmount);
        dtoActiveCard.setPaymentId(paymentId);
@@ -353,13 +356,6 @@
        Long operator = po.getOperator();
        Date cancelTime = new Date();
        // 如果传入的是10位的水卡编号,升为17位水卡编号
        String cardNumS = String.valueOf(cardNum).trim();
        if(cardNumS.length() == 10) {
            cardNumS = "100000" + cardNumS.substring(0,6) + "0" + cardNumS.substring(6);
        }
        cardNum = Long.valueOf(cardNumS);
        // 验证水卡状态是否支持当前操作
        String stateName = Optional.ofNullable(clientCardSv.getCardStateByCardNum(cardNum)).orElse("");
        if(stateName.length() == 0 || !stateName.equals("正常")) {
@@ -411,14 +407,6 @@
            return BaseResponseUtils.buildErrorMsg(SellResultCode.CANCEL_FAIL_WRITE_CANCELL_ERROR.getMessage());
        }
        //return BaseResponseUtils.buildSuccess(true) ;
        cardNumS = String.valueOf(cardNum).trim();
        if(cardNumS.substring(0,2).equals("10")) {
            cardNumS = cardNumS.substring(6, 12) + cardNumS.substring(13);
        }
        cardNum = Long.valueOf(cardNumS);
        Map map_response = new HashMap();
        map_response.put("projectNo", String.format("%02x", Integer.parseInt(cardOperateSv.getProjectNo())));
        map_response.put("orderNumber", rec);
@@ -458,13 +446,6 @@
        String remarks = po.getRemarks();
        Long operator = po.getOperator();
        Date lossTime = new Date();
        // 如果传入的是10位的水卡编号,升为17位水卡编号
        String cardNumS = String.valueOf(cardNum).trim();
        if(cardNumS.length() == 10) {
            cardNumS = "100000" + cardNumS.substring(0,6) + "0" + cardNumS.substring(6);
        }
        cardNum = Long.valueOf(cardNumS);
        // 验证水卡状态是否支持当前操作
        String stateName = Optional.ofNullable(clientCardSv.getCardStateByCardNum(cardNum)).orElse("");
@@ -519,13 +500,6 @@
            return BaseResponseUtils.buildErrorMsg(SellResultCode.LOSS_FAIL_WRITE_LOSS_ERROR.getMessage());
        }
        //return BaseResponseUtils.buildSuccess(true) ;
        cardNumS = String.valueOf(cardNum).trim();
        if(cardNumS.substring(0,2).equals("10")) {
            cardNumS = cardNumS.substring(6, 12) + cardNumS.substring(13);
        }
        cardNum = Long.valueOf(cardNumS);
        Map map_response = new HashMap();
        map_response.put("projectNo", String.format("%02x", Integer.parseInt(cardOperateSv.getProjectNo())));
        map_response.put("orderNumber", rec);
@@ -565,13 +539,6 @@
        String remarks = po.getRemarks();
        Long operator = po.getOperator();
        Date reversalTime = new Date();
        // 如果传入的是10位的水卡编号,升为17位水卡编号
        String cardNumS = String.valueOf(cardNum).trim();
        if(cardNumS.length() == 10) {
            cardNumS = "100000" + cardNumS.substring(0,6) + "0" + cardNumS.substring(6);
        }
        cardNum = Long.valueOf(cardNumS);
        // 验证水卡状态是否支持当前操作
        String stateName = Optional.ofNullable(clientCardSv.getCardStateByCardNum(cardNum)).orElse("");
@@ -621,13 +588,6 @@
            return BaseResponseUtils.buildErrorMsg(SellResultCode.REVERSAL_FAIL_WRITE_REVERSAL_ERROR.getMessage());
        }
        //return BaseResponseUtils.buildSuccess(true) ;
        cardNumS = String.valueOf(cardNum).trim();
        if(cardNumS.substring(0,2).equals("10")) {
            cardNumS = cardNumS.substring(6, 12) + cardNumS.substring(13);
        }
        cardNum = Long.valueOf(cardNumS);
        Map map_response = new HashMap();
        map_response.put("projectNo", String.format("%02x", Integer.parseInt(cardOperateSv.getProjectNo())));
        map_response.put("orderNumber", rec);
@@ -669,13 +629,6 @@
        Long operator = po.getOperator();
        Date refundTime = new Date();
        // 如果传入的是10位的水卡编号,升为17位水卡编号
        String cardNumS = String.valueOf(cardNum).trim();
        if(cardNumS.length() == 10) {
            cardNumS = "100000" + cardNumS.substring(0,6) + "0" + cardNumS.substring(6);
        }
        cardNum = Long.valueOf(cardNumS);
        // 验证水卡状态是否支持当前操作
        String stateName = Optional.ofNullable(clientCardSv.getCardStateByCardNum(cardNum)).orElse("");
        if(stateName.length() == 0 || !stateName.equals("正常")) {
@@ -714,7 +667,6 @@
        seCardOperate.setCardId(cardId);
        seCardOperate.setClientId(clientId);
        seCardOperate.setMoney(money);
        //seCardOperate.setNoTradeAmount(refund);
        seCardOperate.setRefundAmount(refund);
        seCardOperate.setOperateType(OperateTypeENUM.REFUND.getCode());
        seCardOperate.setRemarks(remarks);
@@ -758,13 +710,6 @@
        String remarks = po.getRemarks();
        Long operator = po.getOperator();
        Date unlockTime = new Date();
        // 如果传入的是10位的水卡编号,升为17位水卡编号
        String cardNumS = String.valueOf(cardNum).trim();
        if(cardNumS.length() == 10) {
            cardNumS = "100000" + cardNumS.substring(0,6) + "0" + cardNumS.substring(6);
        }
        cardNum = Long.valueOf(cardNumS);
        // 判断当前水卡是否为挂失状态且未补卡,仅已经挂失其未补卡的可以解锁
        if(!cardOperateSv.isLostAndUnreplaced(cardNum)) {
@@ -813,13 +758,6 @@
            return BaseResponseUtils.buildErrorMsg(SellResultCode.UNLOCK_FAIL_WRITE_UNLOCK_ERROR.getMessage());
        }
        //return BaseResponseUtils.buildSuccess(true) ;
        cardNumS = String.valueOf(cardNum).trim();
        if(cardNumS.substring(0,2).equals("10")) {
            cardNumS = cardNumS.substring(6, 12) + cardNumS.substring(13);
        }
        cardNum = Long.valueOf(cardNumS);
        Map map_response = new HashMap();
        map_response.put("projectNo", String.format("%02x", Integer.parseInt(cardOperateSv.getProjectNo())));
        map_response.put("orderNumber", rec);
@@ -845,15 +783,6 @@
    @GetMapping(path = "/getRecharges")
    @SsoAop()
    public BaseResponse<QueryResultVo<List<VoRecharge>>> get(QoRecharge vo){
        // 如果传入的是10位的水卡编号,升为17位水卡编号
        if(vo != null && vo.getCardNum() != null) {
            String cardNumS = String.valueOf(vo.getCardNum()).trim();
            if(cardNumS.length() == 10) {
                cardNumS = "100000" + cardNumS.substring(0,6) + "0" + cardNumS.substring(6);
                vo.setCardNum(Long.parseLong(cardNumS));
            }
        }
        try {
            QueryResultVo<List<VoRecharge>> res = cardOperateSv.getRecharges(vo);
            return BaseResponseUtils.buildSuccess(res);
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateSv.java
@@ -150,13 +150,6 @@
        Long operator = po.getOperator();
        Date rechargeTime = new Date();
        // 如果传入的是10位的水卡编号,升为17位水卡编号
        String cardNumS = String.valueOf(cardNum).trim();
        if(cardNumS.length() == 10) {
            cardNumS = "100000" + cardNumS.substring(0,6) + "0" + cardNumS.substring(6);
        }
        cardNum = Long.valueOf(cardNumS);
        // 验证水卡状态是否支持当前操作
        String stateName = Optional.ofNullable(clientCardSv.getCardStateByCardNum(cardNum)).orElse("");
        if(stateName.length() == 0 || !stateName.equals("正常")) {
@@ -209,14 +202,6 @@
        if(rec == 0) {
            return BaseResponseUtils.buildErrorMsg(SellResultCode.REPLACE_FAIL_WRITE_RECHARGE_ERROR.getMessage());
        }
        //return BaseResponseUtils.buildSuccess(true) ;
        cardNumS = String.valueOf(cardNum).trim();
        if(cardNumS.substring(0,2).equals("10")) {
            cardNumS = cardNumS.substring(6,12) + cardNumS.substring(13);
        }
        cardNum = Long.parseLong(cardNumS);
        Map map_response = new HashMap();
        map_response.put("projectNo", String.format("%02x", Integer.parseInt(getProjectNo())));
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/clientCard/ClientCardCtrl.java
@@ -136,15 +136,6 @@
    @GetMapping(path = "getcards")
    @SsoAop()
    public BaseResponse<QueryResultVo<List<VoCards>>> getcards(QoCards vo){
        // 如果传入的是10位的水卡编号,升为17位水卡编号
        if(vo != null && vo.getCardNum() != null) {
            String cardNumS = String.valueOf(vo.getCardNum()).trim();
            if(cardNumS.length() == 10) {
                cardNumS = "100000" + cardNumS.substring(0,6) + "0" + cardNumS.substring(6);
                vo.setCardNum(Long.parseLong(cardNumS));
            }
        }
        try {
            QueryResultVo<List<VoCards>> res = clientCardSv.getCards(vo);
            return BaseResponseUtils.buildSuccess(res);
@@ -175,11 +166,6 @@
            QueryResultVo<List<VoCards>> res = clientCardSv.getUnreplaced(vo);
            return BaseResponseUtils.buildSuccess(res);
            //if(res.itemTotal != null && res.itemTotal > 0) {
            //    return BaseResponseUtils.buildSuccess(res);
            //}else {
            //    return BaseResponseUtils.buildFail(SellResultCode.THE_CARD_NOT_EXIST.getMessage());
            //}
        } catch (Exception e) {
            log.error("查询农户异常", e);
            return BaseResponseUtils.buildException(e.getMessage()) ;