Эх сурвалжийг харах

支付功能调整,保留新网支付

xucaiqin 1 жил өмнө
parent
commit
b74bb79ea3

+ 7 - 3
sckw-modules-api/sckw-payment-api/src/main/java/com/sckw/payment/api/model/constant/ChannelEnum.java

@@ -7,9 +7,11 @@ import org.apache.commons.lang3.StringUtils;
 @Getter
 @AllArgsConstructor
 public enum ChannelEnum {
-    HF("11", "1", "huifu", "汇付渠道"),
-    XS("12", "2", "newpay", "新生渠道"),
-    ZX("13", "3", "citic", "中信渠道");
+//    HF("11", "1", "huifu", "汇付渠道"),
+//    XS("12", "2", "newpay", "新生渠道"),
+//    ZX("13", "3", "citic", "中信渠道"),
+    XW("14", "4", "xinwang", "新网银行"),
+    ;
 
     /**
      * 预付款+支付渠道
@@ -25,6 +27,7 @@ public enum ChannelEnum {
 
     /**
      * 通过交易方式获取支付渠道
+     *
      * @param trading 交易方式字典
      * @return
      */
@@ -41,6 +44,7 @@ public enum ChannelEnum {
         }
         return null;
     }
+
     public static ChannelEnum getByCode(String code) {
         for (ChannelEnum channelEnum : ChannelEnum.values()) {
             if (channelEnum.getCode().equals(code)) {

+ 3 - 1
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/constant/PayCenterEnum.java

@@ -51,7 +51,9 @@ public enum PayCenterEnum {
     PAY_AGENT_PAY_V2("/v2/pay/agent_pay", "清分"),
     AGENT_PAY_QUERY("/v2/pay/status/query", "清分结果查询"),
     WITHDRAW_TRANSFER("/v2/wallet/withdraw/transfer", "转出加提现"),
-    WALLET_INDEX("/v1/wallet/index", "创建钱包");
+    WALLET_INDEX("/v1/wallet/index", "创建钱包"),
+    REFUND_APPLY("/v1/pay/refund_apply", "充值订单退款"),
+    ;
     private final String addr;
     private final String desc;
 

+ 8 - 6
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/constant/WalletChannelEnum.java

@@ -12,12 +12,14 @@ import java.util.List;
 public enum WalletChannelEnum {
     ALL(0, "0", "all", "全部"),
 
-    //汇付
-    HF(1, "1", "huifu", "汇付天下"),
-    //新生
-    XS(2, "2", "newpay", "新生"),
-    //中信
-    ZX(3, "3", "citic", "中信银行");
+//    //汇付
+//    HF(1, "1", "huifu", "汇付天下"),
+//    //新生
+//    XS(2, "2", "newpay", "新生"),
+//    //中信
+//    ZX(3, "3", "citic", "中信银行"),
+    XW(4, "4", "xinwang", "新网银行"),
+    ;
 
     private final int status;
     private final String value;

+ 2 - 0
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/req/AddWalletReq.java

@@ -35,4 +35,6 @@ public class AddWalletReq implements MoneyChange {
     @Size(message = "备注不能超过200")
     private String remark;
 
+    private Integer type;
+
 }

+ 1 - 1
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/req/WalletAppendReq.java

@@ -18,7 +18,7 @@ import java.math.BigDecimal;
  */
 @Getter
 @Setter
-public class WalletAppendReq  implements MoneyChange {
+public class WalletAppendReq implements MoneyChange {
     /**
      * 支付通道 huifu
      */

+ 40 - 4
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/PayCenterService.java

@@ -171,6 +171,7 @@ public class PayCenterService {
         String sync = getHttp(PayCenterEnum.MEMBER_DETAIL, new HashMap<>() {{
             put("uid", uid);
             put("channel", channel);
+            put("channels", "xinwang");
         }});
         return JSONObject.parseObject(sync, new TypeReference<>() {
         });
@@ -186,6 +187,7 @@ public class PayCenterService {
     public R<WalletOverview> general(String uid) {
         String sync = getHttp(PayCenterEnum.MEMBER_GENERAL, new HashMap<>() {{
             put("uid", uid);
+            put("channels", "xinwang");
         }});
         return JSONObject.parseObject(sync, new TypeReference<>() {
         });
@@ -201,6 +203,7 @@ public class PayCenterService {
         String sync = getHttp(PayCenterEnum.USER, new HashMap<>() {{
             put("uid", uid);
             put("channel", channelEnum);
+            put("channels", "xinwang");
         }});
         return JSONObject.parseObject(sync, new TypeReference<>() {
         });
@@ -235,13 +238,14 @@ public class PayCenterService {
      * @return
      */
     public R<Wallet> walletSum(@NotNull String uid, ChannelEnum channel, String filter) {
-        if (StringUtils.isBlank(uid)) {
-            throw new BusinessException("提现用户不能为空");
-        }
+//        if (StringUtils.isBlank(uid)) {
+//            throw new BusinessException("提现用户不能为空");
+//        }
         String sync = getHttp(PayCenterEnum.MEMBER_WALLET_V2, new HashMap<>() {{
             put("uid", uid);
             put("channel", Objects.isNull(channel) ? "" : channel);
             put("filter", filter);
+            put("channels", "xinwang");
         }});
         return JSONObject.parseObject(sync, new TypeReference<>() {
         });
@@ -264,6 +268,7 @@ public class PayCenterService {
         String sync = getHttp(PayCenterEnum.WITHDRAW_DETAIL, new HashMap<>() {{
             put("uid", uid);
             put("order_no", orderNo);
+            put("channels", "xinwang");
         }});
         return JSONObject.parseObject(sync, new TypeReference<>() {
         });
@@ -296,6 +301,7 @@ public class PayCenterService {
             put("page", finalPage);
             put("pageSize", finalPageSize);
             put("status", status);
+            put("channels", "xinwang");
         }});
         return JSONObject.parseObject(sync, new TypeReference<>() {
         });
@@ -314,6 +320,7 @@ public class PayCenterService {
         String sync = getHttp(PayCenterEnum.WITHDRAW_CATEGORY, new HashMap<>() {{
             put("uid", uid);
             put("channel", channel);
+            put("channels", "xinwang");
         }});
         return parseArray(sync, CashCount.class);
     }
@@ -331,6 +338,7 @@ public class PayCenterService {
         String finalType = type;
         String sync = getHttp(PayCenterEnum.WITHDRAW_STATUS, new HashMap<>() {{
             put("type", finalType);
+            put("channels", "xinwang");
         }});
         return JSONObject.parseObject(sync, new TypeReference<>() {
         });
@@ -412,6 +420,7 @@ public class PayCenterService {
             put("uid", uid);
             put("channel", channel);
             put("filter", filter);
+            put("channels", "xinwang");
         }});
         return JSONObject.parseObject(sync, new TypeReference<>() {
         });
@@ -517,6 +526,7 @@ public class PayCenterService {
             put("filter", filter);
             put("page", page);
             put("pageSize", pageSize);
+            put("channels", "xinwang");
         }});
         return JSONObject.parseObject(sync, new TypeReference<>() {
         });
@@ -617,7 +627,7 @@ public class PayCenterService {
             put("page", page);
             put("pageSize", pageSize);
             put("keyword", keyword);
-
+            put("channels", "xinwang");
         }});
         return JSONObject.parseObject(sync, new TypeReference<>() {
         });
@@ -640,6 +650,7 @@ public class PayCenterService {
             put("filter", filter);
             put("page", page);
             put("pageSize", pageSize);
+            put("channels", "xinwang");
         }});
         return JSONObject.parseObject(sync, new TypeReference<>() {
         });
@@ -656,6 +667,7 @@ public class PayCenterService {
         String sync = getHttp(PayCenterEnum.ADVANCE_PAY_PAY_CHANNELS, new HashMap<>() {{
             put("uid", uid);
             put("filter", filter);
+            put("channels", "xinwang");
         }});
         return parseArray(sync, ChannelStatistics.class);
     }
@@ -677,6 +689,7 @@ public class PayCenterService {
             put("filter", filter);
             put("page", page);
             put("pageSize", pageSize);
+            put("channels", "xinwang");
         }});
         return JSONObject.parseObject(sync, new TypeReference<>() {
         });
@@ -705,6 +718,7 @@ public class PayCenterService {
             put("endDate", endDate);
             put("page", page);
             put("pageSize", pageSize);
+            put("channels", "xinwang");
         }});
         return JSONObject.parseObject(sync, new TypeReference<>() {
         });
@@ -781,6 +795,7 @@ public class PayCenterService {
             put("uid", uid);
             put("channel", channel);
             put("business_no", businessNo);
+            put("channels", "xinwang");
         }});
         return parseArray(sync, SplitDto.class);
     }
@@ -814,6 +829,7 @@ public class PayCenterService {
             put("endDate", endDate);
             put("page", finalPage);
             put("pageSize", finalPageSize);
+            put("channels", "xinwang");
         }});
         return JSONObject.parseObject(sync, new TypeReference<>() {
         });
@@ -985,4 +1001,24 @@ public class PayCenterService {
         return JSONObject.parseObject(sync, new TypeReference<>() {
         });
     }
+
+    /**
+     * 充值订单退款
+     *
+     * @param uid
+     * @param filter
+     * @param channel
+     * @param money
+     * @return
+     */
+    public R<BusinessNo> refundApply(String uid, String filter, ChannelEnum channel, Long money) {
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("uid", uid);
+        jsonObject.put("filter", filter);
+        jsonObject.put("channel", Objects.nonNull(channel) ? channel.getChannel() : "");
+        jsonObject.put("money", money);
+        String sync = jsonHttp(PayCenterEnum.REFUND_APPLY, jsonObject);
+        return JSONObject.parseObject(sync, new TypeReference<>() {
+        });
+    }
 }

+ 52 - 8
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/WalletService.java

@@ -407,7 +407,7 @@ public class WalletService {
             if (wallet.getStatus()) {
                 WalletOverview data = wallet.getData();
                 //已开通的渠道
-                List<String> channels = data.getChannels();
+                List<String> channels = CollectionUtils.isEmpty(data.getChannels()) ? new ArrayList<>() : data.getChannels();
 
                 List<ChannelDetail> res = new ArrayList<>();
                 for (WalletChannelEnum value : WalletChannelEnum.channelEnumList()) {
@@ -691,9 +691,7 @@ public class WalletService {
 
     /**
      * 提现
-     * 重新提现:只针对汇付
-     * 1.余额转出
-     * 2.申请提现
+     * 重新提现:只针对汇付 3.20调整为只有新网渠道,其它渠道不接入
      *
      * @return
      */
@@ -703,7 +701,7 @@ public class WalletService {
         if (Objects.isNull(byChannel)) {
             throw new BusinessException("支付通道不存在");
         }
-        R<Order> payIndexR = payCenterService.withdrawTransfer(cashWalletReq.getUid(), cashWalletReq.getFilter(), byChannel, cashWalletReq.bigMoney(cashWalletReq.getMoney()));
+        R<Order> payIndexR = payCenterService.withdrawTake(cashWalletReq.getUid(), byChannel, cashWalletReq.bigMoney(cashWalletReq.getMoney()), cashWalletReq.getRemark());
         if (!payIndexR.getStatus()) {
             throw new BusinessException(StringUtils.isNotBlank(payIndexR.getMsg()) ? payIndexR.getMsg() : "申请提现异常");
         }
@@ -713,7 +711,7 @@ public class WalletService {
         kwpWallet.setChannel(byChannel.getChannel());
         kwpWallet.setAction(WalletActionEnum.CASHING.getDesc());
         kwpWallet.setActionTime(LocalDateTime.now());
-        kwpWallet.setRemark("");
+        kwpWallet.setRemark(cashWalletReq.getRemark());
         kwpWallet.setOrderNo(Objects.nonNull(payIndexR.getData()) ? payIndexR.getData().getOrderNo() : "");
         kwpWallet.setStatus(WalletActionEnum.CASHING.getStatus());
         kwpWalletService.saveOrUpdate(kwpWallet);
@@ -1101,7 +1099,7 @@ public class WalletService {
      */
     public Object prePayList2(PrePayPage prePayPage) {
 //        List<String> all = walletRelationService.getAll();
-                /*增加客户经理数据过滤*/
+        /*增加客户经理数据过滤*/
         List<Long> authEntIdList = LoginUserHolder.getAuthEntIdList();
         if (CollectionUtils.isEmpty(authEntIdList)) {
             List<Long> ids = remoteUserService.findEnterpriseIdsByUserIdIsMain(LoginUserHolder.getUserId());
@@ -1504,6 +1502,7 @@ public class WalletService {
      * 退款50元,调用2次清分。
      * 1. 清分 A->B 50元
      * 2. 清分 B->A 50元
+     * 3.20 退款逻辑调整,新网退款是充值订单原路退回
      *
      * @return
      */
@@ -1523,6 +1522,20 @@ public class WalletService {
                 if (Objects.isNull(channelEnum)) {
                     throw new BusinessException("支付通道不存在");
                 }
+                //新网银行特殊处理
+                if (ChannelEnum.XW.equals(channelEnum)) {
+                    R<BusinessNo> businessNoR = payCenterService.refundApply(kwpWalletRefund.getUid(), kwpWalletRefund.getFilter(), channelEnum, refundReq.bigMoney(refundReq.getMoney()));
+
+                    //保存操作记录
+                    kwpWalletRefundSubService.saveRecord(kwpWalletRefund.getId(), refundReq.getRemark(), RefundEnum.REFUNDING.getStatus());
+                    //修改主订单状态
+                    kwpWalletRefund.setStatus(RefundEnum.REFUNDING.getStatus());
+
+                    kwpWalletRefundMapper.updateById(kwpWalletRefund);
+
+                    kwpWalletService.saveTime(kwpWalletRefund.getUid(), kwpWalletRefund.getFilter(), channelEnum.getChannel());
+                    return businessNoR;
+                }
                 // 1.记账
                 List<PatchPay> list = new ArrayList<>();
                 PatchPay patchPay = new PatchPay();
@@ -1565,6 +1578,37 @@ public class WalletService {
         if (Objects.isNull(channelEnum)) {
             throw new BusinessException("支付通道不存在");
         }
+        //新网银行特殊处理。新网银行退款是原路退回的方式。所有退款不是预收预付的退款
+        if (ChannelEnum.XW.equals(channelEnum)) {
+            R<WalletInfo> walletInfoR = payCenterService.totalInfo(kwpWalletRefund.getUid(), channelEnum, kwpWalletRefund.getFilter());
+            // 未开通钱包
+            if (!walletInfoR.getStatus()) {
+                WalletInfoDto walletInfoDto = new WalletInfoDto();
+                walletInfoDto.setOpenFlag(false);
+                return walletInfoDto;
+            }
+            WalletInfo data = walletInfoR.getData();
+            if (Objects.isNull(data)) {
+                WalletInfoDto walletInfoDto = new WalletInfoDto();
+                walletInfoDto.setOpenFlag(false);
+                return walletInfoDto;
+            }
+            WalletInfoDto walletInfoDto = new WalletInfoDto();
+            walletInfoDto.setOpenFlag(true);
+            walletInfoDto.setChannel(data.getChannel());
+            walletInfoDto.setApMoney(walletInfoDto.smallMoney(data.getApMoney()));
+            walletInfoDto.setWdMoney(walletInfoDto.smallMoney(data.getWdMoney()));
+            walletInfoDto.setMoney(walletInfoDto.smallMoney(data.getMoney()));
+            //申请退款金额
+            walletInfoDto.setRefundMoney(kwpWalletRefund.getMoney());
+
+            walletInfoDto.setChannelLabel(channelEnum.getDesc());
+            walletInfoDto.setUid(kwpWalletRefund.getUid());
+            walletInfoDto.setUidName(getFirmName(kwpWalletRefund.getUid()));
+            walletInfoDto.setFilter(kwpWalletRefund.getFilter());
+            walletInfoDto.setFilterName(getFirmName(kwpWalletRefund.getFilter()));
+            return walletInfoDto;
+        }
         //发起退款是预收业务,uid和filter是相反的,查询时需要方向查询钱包
         R<WalletInfo> walletInfoR = payCenterService.totalInfo(kwpWalletRefund.getFilter(), channelEnum, kwpWalletRefund.getUid());
         // 未开通钱包
@@ -1689,7 +1733,7 @@ public class WalletService {
             throw new BusinessException("退款订单不存在");
         }
         if (kwpWalletRefund.getStatus() != RefundEnum.APPLY.getStatus()) {
-            throw new BusinessException("请勿重复提交");
+            throw new BusinessException("订单已处理,请勿重复提交");
         }
         kwpWalletRefund.setStatus(RefundEnum.BACK.getStatus());
         kwpWalletRefund.setRemark(refundReq.getRemark());

+ 2 - 2
sckw-modules/sckw-payment/src/main/resources/mapper/KwpWalletRefundMapper.xml

@@ -27,7 +27,7 @@
         from kwp_wallet_refund kwr
         <where>
             kwr.del_flag = 0
-              and kwr.status = 1
+<!--              and kwr.status = 1-->
             <if test="refundPage.uid != null and refundPage.uid != ''">
                 and kwr.uid = #{refundPage.uid,jdbcType=VARCHAR}
             </if>
@@ -46,4 +46,4 @@
             </if>
         </where>
     </select>
-</mapper>
+</mapper>