liurunyu
2024-07-08 a9417136ffaed5635199864a3719e77822903270
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);