From 168d852672f8f671a01d6f0f053349d0d321ec7c Mon Sep 17 00:00:00 2001 From: puzhibing <393733352@qq.com> Date: 星期三, 03 一月 2024 11:43:11 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- cloud-server-management/src/main/java/com/dsh/guns/modular/system/util/PayMoneyUtil.java | 385 +++++++ cloud-server-other/src/main/java/com/dsh/other/util/PayMoneyUtil.java | 70 + cloud-server-management/src/main/webapp/WEB-INF/view/system/operator/OperatorUser_proportionAuth_info.html | 283 +++++ cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/TBankService.java | 17 cloud-server-course/src/main/java/com/dsh/course/controller/CourseStudentController.java | 7 cloud-server-other/pom.xml | 2 cloud-server-account/src/main/java/com/dsh/account/service/impl/TStudentServiceImpl.java | 38 cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/OperatorAuthAlipay.java | 103 + cloud-server-activity/src/main/resources/sharding-jdbc.properties | 4 cloud-server-account/src/main/java/com/dsh/account/feignclient/other/model/Store.java | 5 cloud-server-other/src/main/resources/mapper/SiteMapper.xml | 3 cloud-server-other/src/main/java/com/dsh/other/mapper/SiteMapper.java | 2 cloud-server-competition/src/main/resources/sharding-jdbc.properties | 4 cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java | 36 cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackageSchedulingController.java | 1 cloud-server-management/src/main/java/com/dsh/course/mapper/TOperatorAuthMapper.java | 3 cloud-server-management/src/main/java/com/dsh/guns/modular/system/api/AliPayProperties.java | 38 cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/IOperatorAuthService.java | 3 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TStoredValueConfigController.java | 1 cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java | 3 cloud-server-competition/src/main/java/com/dsh/competition/service/impl/CompetitionServiceImpl.java | 25 cloud-server-competition/src/main/java/com/dsh/competition/feignclient/other/StoreClient.java | 7 cloud-server-account/src/main/java/com/dsh/account/util/PayMoneyUtil.java | 63 + cloud-server-course/src/main/java/com/dsh/course/controller/CourseRecordController.java | 4 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/OperatorUserController.java | 1 cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteServiceImpl.java | 32 cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java | 29 cloud-server-management/src/main/java/com/dsh/course/mapper/BankMapper.java | 9 cloud-server-course/src/main/java/com/dsh/course/controller/CourseController.java | 5 cloud-server-account/src/main/java/com/dsh/account/feignclient/other/StoreClient.java | 7 cloud-server-course/src/main/java/com/dsh/course/feignclient/other/model/Store.java | 4 cloud-server-course/pom.xml | 2 cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/BankServiceImpl.java | 12 cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackageController.java | 5 cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java | 8 cloud-server-management/src/main/webapp/WEB-INF/view/system/operator/OperatorUser_proportion.html | 10 cloud-server-course/src/main/java/com/dsh/course/util/PayMoneyUtil.java | 64 + cloud-server-management/src/main/java/com/dsh/guns/modular/system/api/SaticScheduleTask.java | 315 +++-- cloud-server-other/src/main/java/com/dsh/other/controller/SiteController.java | 13 cloud-server-account/src/main/resources/sharding-jdbc.properties | 4 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/OperatorController.java | 491 +++++--- cloud-server-account/src/main/java/com/dsh/account/service/impl/VipPaymentServiceImpl.java | 10 cloud-server-course/src/main/resources/sharding-jdbc.properties | 4 cloud-server-management/src/main/resources/mapper/BankMapper.xml | 5 cloud-server-management/src/main/webapp/WEB-INF/view/system/operatorUser/OperatorUser.html | 11 cloud-server-competition/src/main/java/com/dsh/competition/util/PayMoneyUtil.java | 68 + cloud-server-competition/pom.xml | 3 cloud-server-other/src/main/java/com/dsh/other/service/ISiteService.java | 2 cloud-server-course/src/main/java/com/dsh/course/feignclient/other/StoreClient.java | 6 cloud-server-management/src/main/java/com/dsh/guns/modular/system/api/AliPayMsgConfig.java | 90 + cloud-server-management/src/main/webapp/static/modular/system/operator/operator.js | 16 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCompetitionController.java | 11 cloud-server-management/src/main/webapp/WEB-INF/view/system/operator/OperatorUser_proportionAuth.html | 346 ++---- cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java | 21 cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TOperatorAuthServiceImpl.java | 3 cloud-server-management/src/main/resources/mapper/TOperatorMapper.xml | 3 cloud-server-account/src/main/java/com/dsh/account/service/impl/RechargeRecordsServiceImpl.java | 10 cloud-server-management/src/main/webapp/static/modular/system/operatorUser/operatorUser.js | 325 +++--- cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TOperatorUserServiceImpl.java | 47 cloud-server-competition/src/main/java/com/dsh/competition/controller/CompetitionController.java | 2 60 files changed, 2,245 insertions(+), 856 deletions(-) diff --git a/cloud-server-account/src/main/java/com/dsh/account/feignclient/other/StoreClient.java b/cloud-server-account/src/main/java/com/dsh/account/feignclient/other/StoreClient.java index 081a5d7..e3bb3b9 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/feignclient/other/StoreClient.java +++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/other/StoreClient.java @@ -13,10 +13,15 @@ @FeignClient(value = "mb-cloud-other") public interface StoreClient { + /** + * 根据运营商id获取对应运营商商户号 + * @return + */ + @PostMapping("/base/getSMIDByOperatorId") + String getSMIDByOperatorId(Integer id); @PostMapping("/store/queryByStoreId") OperatorUser queryByStoreId(Integer storeId); - /** * 获取门店列表 diff --git a/cloud-server-account/src/main/java/com/dsh/account/feignclient/other/model/Store.java b/cloud-server-account/src/main/java/com/dsh/account/feignclient/other/model/Store.java index cc1aa66..95cb58e 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/feignclient/other/model/Store.java +++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/other/model/Store.java @@ -87,4 +87,9 @@ * 状态(1=正常,2=冻结,3=删除) */ private Integer state; + /** + * 运营商id + */ + private Integer operatorId; + } diff --git a/cloud-server-account/src/main/java/com/dsh/account/service/impl/RechargeRecordsServiceImpl.java b/cloud-server-account/src/main/java/com/dsh/account/service/impl/RechargeRecordsServiceImpl.java index 39e2c5b..ca8c34c 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/service/impl/RechargeRecordsServiceImpl.java +++ b/cloud-server-account/src/main/java/com/dsh/account/service/impl/RechargeRecordsServiceImpl.java @@ -288,9 +288,9 @@ return ResultUtil.success(); } - + private String smid = "2088330203191220";//平台支付宝商户号 private ResultUtil AlipayPayment(String code, BigDecimal amount) { - ResultUtil alipay = payMoneyUtil.alipay("玩湃币充值", "玩湃币充值", "", code, amount.toString(), + ResultUtil alipay = payMoneyUtil.alipay(smid,"玩湃币充值", "玩湃币充值", "", code, amount.toString(), "/base/recharge/alipayRechargeCallback"); if (alipay.getCode() == 200) { new Thread(new Runnable() { @@ -328,8 +328,14 @@ if ("TRADE_CLOSED".equals(tradeStatus) || "TRADE_FINISHED".equals(tradeStatus) || num == 10) { records.setState(3); rereMapper.deleteById(records.getId()); + if ("TRADE_FINISHED".equals(tradeStatus)) { + // todo 资金结算 + payMoneyUtil.confirm(smid,code,tradeNo,amount.toString()); + break; + } break; } + if ("TRADE_SUCCESS".equals(tradeStatus)) { records.setAppUserId(null); records.setPayStatus(2); diff --git a/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java b/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java index 5043af1..979be10 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java +++ b/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java @@ -1369,7 +1369,7 @@ return ResultUtil.success(returnId); } //积分+现金 - if(coupon.getRedemptionMethod() == 1){ + if(coupon.getRedemptionMethod() == 2){ userCouponPaymentClient.addUserCouponPayment(userCouponPayment); try { if(exchangeType.getPayType() == 1){ @@ -1707,11 +1707,12 @@ * @return * @throws Exception */ + private String smid = "2088330203191220";//平台支付宝商户号 public ResultUtil aliPaymentCoupon(String body, UserCouponPayment userCouponPayment) throws Exception { String code = userCouponPayment.getCode(); Double cash = userCouponPayment.getCash(); - ResultUtil alipay = payMoneyUtil.alipay(body, body, "", code, cash.toString(), "/base/coupon/aliPaymentCouponCallback"); + ResultUtil alipay = payMoneyUtil.alipay(smid, body, "",String.valueOf(userCouponPayment.getId()), code, cash.toString(), "/base/coupon/aliPaymentCouponCallback"); if (alipay.getCode() == 200) { new Thread(new Runnable() { @Override @@ -1744,6 +1745,10 @@ //有待支付的订单,这里不处理 userCouponPayment1.setStatus(-1); userCouponPaymentClient.updateUserCouponPayment(userCouponPayment1); + if ("TRADE_FINISHED".equals(s)) { + // todo 资金结算 + + } break; } if ("TRADE_SUCCESS".equals(s)) { @@ -1751,22 +1756,23 @@ userCouponPayment1.setPaymentTime(new Date()); userCouponPayment1.setOrderNumber(tradeNo); userCouponPaymentClient.updateUserCouponPayment(userCouponPayment1); - UserCoupon userCoupon = new UserCoupon(); userCoupon.setCouponId(userCouponPayment1.getCouponId()); userCoupon.setUserId(userCouponPayment1.getUserId()); userCoupon.setStatus(1); userCoupon.setInsertTime(new Date()); userConponClient.insertToAppuserCoupon(userCoupon); - if(null != userCouponPayment1.getIntegral() && 0 != userCouponPayment1.getIntegral()){ //扣积分 TAppUser user = appUserService.getById(userCouponPayment1.getUserId()); user.setIntegral(user.getIntegral() - userCouponPayment1.getIntegral().intValue()); appUserService.updateById(user); } + payMoneyUtil.confirm(smid,code,tradeNo,cash.toString()); break; + } + if ("WAIT_BUYER_PAY".equals(s)) { num++; } @@ -1838,7 +1844,7 @@ } private ResultUtil AlipayPayment(BigDecimal cash, String code, Long returnId) { - ResultUtil alipay = payMoneyUtil.alipay("优惠卷", "优惠卷", String.valueOf(returnId), code, cash.toString(), + ResultUtil alipay = payMoneyUtil.alipay(smid,"优惠卷", "优惠卷", String.valueOf(returnId), code, cash.toString(), "/base/pointMer/exchangeGoodPaymentAliCallback"); if (alipay.getCode() == 200) { new Thread(new Runnable() { @@ -1886,6 +1892,11 @@ moneyOut(tradeNo, tradeNo); break; } + if ("TRADE_FINISHED".equals(tradeStatus)) { + // todo 资金结算 + payMoneyUtil.confirm(smid,code,tradeNo,cash.toString()); + break; + } // if("REFUND".equals(tradeStatus) || "NOTPAY".equals(tradeStatus) || "CLOSED".equals(tradeStatus) || "REVOKED".equals(tradeStatus) || "PAYERROR".equals(tradeStatus) || num == 10){ // mcClient.deletePaymentRecord(code); // break; diff --git a/cloud-server-account/src/main/java/com/dsh/account/service/impl/TStudentServiceImpl.java b/cloud-server-account/src/main/java/com/dsh/account/service/impl/TStudentServiceImpl.java index f0f8c64..6fabab4 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/service/impl/TStudentServiceImpl.java +++ b/cloud-server-account/src/main/java/com/dsh/account/service/impl/TStudentServiceImpl.java @@ -104,6 +104,8 @@ @Resource private ParticipantClient participantClient; + @Autowired + private CoursePackageClient coursePackageClient; @Autowired private PayMoneyUtil payMoneyUtil; @@ -474,9 +476,24 @@ } return weixinpay; } - + private String smid = "2088330203191220";//平台支付宝商户号 public ResultUtil AlipayPayment(String code, BigDecimal amount, Integer hour) { - ResultUtil alipay = payMoneyUtil.alipay("课包续费", "课包续费", "", code, amount.toString(), + TCoursePackagePayment coursePackagePayment = couPayClient.getCoursePackagePaymentByCode(code); + Integer coursePackageId = coursePackagePayment.getCoursePackageId(); + // 判断这个课包是属于哪个运营商的 + CoursePackage coursePackage = coursePackageClient.queryCoursePackageById(coursePackageId); + Integer storeId = coursePackage.getStoreId(); + Store store = storeClient.queryStoreById(storeId); + String smid1= ""; + if (store.getOperatorId()==null){ + // 平台 + smid1 = smid; + }else{ + String smidByOperatorId = storeClient.getSMIDByOperatorId(store.getOperatorId()); + smid1 = smidByOperatorId; + } + + ResultUtil alipay = payMoneyUtil.alipay(smid1,"课包续费", "课包续费", "", code, amount.toString(), "/base/coursePackage/alipayPaymentCallback"); if (alipay.getCode() == 200) { new Thread(new Runnable() { @@ -494,7 +511,6 @@ break; } AlipayTradeQueryResponse resultUtil = payMoneyUtil.queryALIOrder(code); - if (resultUtil.getCode().equals("10000") && coursePackagePayment.getPayStatus() == 1) { /** * WAIT_BUYER_PAY(交易创建,等待买家付款)、 @@ -519,8 +535,20 @@ coursePackagePayment.setLaveClassHours(hour); coursePackagePayment.setOrderNumber(tradeNo); couPayClient.updatePaymentCoursePackage(coursePackagePayment); - - + Integer coursePackageId = coursePackagePayment.getCoursePackageId(); + // 判断这个课包是属于哪个运营商的 + CoursePackage coursePackage = coursePackageClient.queryCoursePackageById(coursePackageId); + Integer storeId = coursePackage.getStoreId(); + Store store = storeClient.queryStoreById(storeId); + String smid1= ""; + if (store.getOperatorId()==null){ + // 平台 + smid1 = smid; + }else{ + String smidByOperatorId = storeClient.getSMIDByOperatorId(store.getOperatorId()); + smid1 = smidByOperatorId; + } + payMoneyUtil.confirm(smid1,code,tradeNo,amount.toString()); break; } if ("WAIT_BUYER_PAY".equals(tradeStatus)) { diff --git a/cloud-server-account/src/main/java/com/dsh/account/service/impl/VipPaymentServiceImpl.java b/cloud-server-account/src/main/java/com/dsh/account/service/impl/VipPaymentServiceImpl.java index f74c4f8..e8b4200 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/service/impl/VipPaymentServiceImpl.java +++ b/cloud-server-account/src/main/java/com/dsh/account/service/impl/VipPaymentServiceImpl.java @@ -169,9 +169,14 @@ * @return * @throws Exception */ + private String smid = "2088330203191220";//平台支付宝商户号 public ResultUtil alipay(VipPayment vipPayment) throws Exception { String code = vipPayment.getCode(); - ResultUtil alipay = payMoneyUtil.alipay("购买年度会员", "购买年度会员", vipPayment.getAppUserId() + "", code, vipPayment.getAmount().toString(), + String amount = vipPayment.getAmount().toString(); + ResultUtil alipay = payMoneyUtil.alipay + (smid,"购买年度会员", "购买年度会员", + vipPayment.getAppUserId() + "", + code, vipPayment.getAmount().toString(), "/base/appUser/addVipPaymentAliCallback"); if (alipay.getCode() == 200) { new Thread(new Runnable() { @@ -204,6 +209,7 @@ if ("TRADE_CLOSED".equals(tradeStatus) || "TRADE_FINISHED".equals(tradeStatus)) { vipPayment1.setState(3); VipPaymentServiceImpl.this.updateById(vipPayment1); + return; } if ("TRADE_SUCCESS".equals(tradeStatus)) { @@ -226,6 +232,8 @@ // 注册会员送券 先判断是否有注册送券类型的优惠券 判断优惠券状态 审核是否通过 是否删除 是否在有效期内 是否领取数量达上限 List<Long> longs = userConponClient.queryCouponByUser(appUser.getId()); redisUtil.setStrValue("VIP_P_" + vipPayment1.getAppUserId(), JSON.toJSONString(longs), 3600); + // 如果交易结束 将当前订单金额分配到商户 + payMoneyUtil.confirm(smid,vipPayment.getCode(),tradeNo,amount); return; } if ("WAIT_BUYER_PAY".equals(tradeStatus)) { diff --git a/cloud-server-account/src/main/java/com/dsh/account/util/PayMoneyUtil.java b/cloud-server-account/src/main/java/com/dsh/account/util/PayMoneyUtil.java index 1133e92..045db5c 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/util/PayMoneyUtil.java +++ b/cloud-server-account/src/main/java/com/dsh/account/util/PayMoneyUtil.java @@ -71,6 +71,7 @@ private String appid = "";//微信appid private String appletsAppid = "";//微信小程序appid + private String smid = "2088330203191220";//平台支付宝商户号 private String mchId = "";//微信商户号 @@ -90,7 +91,7 @@ /** * 支付宝支付 */ - public ResultUtil alipay(String body, String subject, String passbackParams, String outTradeNo, String amount, String notifyUrl) { + public ResultUtil alipay(String smid,String body, String subject, String passbackParams, String outTradeNo, String amount, String notifyUrl) { // //构造client // CertAlipayRequest certAlipayRequest = new CertAlipayRequest (); // //设置网关地址 @@ -142,7 +143,6 @@ // e.printStackTrace(); // } - //实例化客户端 AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", aliAppid, appPrivateKey, "json", "UTF-8", alipay_public_key, "RSA2"); //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay @@ -156,8 +156,21 @@ model.setTotalAmount(amount);//付款金额 model.setProductCode("QUICK_MSECURITY_PAY"); model.setPassbackParams(passbackParams);//自定义参数 - - + SettleInfo settleInfo = new SettleInfo(); + settleInfo.setSettlePeriodTime("3d"); + SettleDetailInfo settleDetailInfo = new SettleDetailInfo(); + settleDetailInfo.setTransInType("defaultSettle"); + settleDetailInfo.setAmount(amount); + List<SettleDetailInfo> settleDetailInfos = new ArrayList<>(); + settleDetailInfos.add(settleDetailInfo); + settleInfo.setSettleDetailInfos(settleDetailInfos); + model.setSettleInfo(settleInfo); + SubMerchant subMerchant = new SubMerchant(); + subMerchant.setMerchantId(smid); + model.setSubMerchant(subMerchant); + ExtendParams extendParams = new ExtendParams(); + extendParams.setRoyaltyFreeze("true");// 冻结资金 用于后续分账处理 + model.setExtendParams(extendParams); //分账 // Integer coursePackagePayments = coursePackageClient.queryByCode(outTradeNo); // Integer paymentCompetitions = competitionsClient.queryByCode(outTradeNo); @@ -245,7 +258,47 @@ System.err.print(alipay_trade_precreate_response.getString("qr_code")); return ResultUtil.success(alipay_trade_precreate_response.getString("qr_code")); } - + // 直付通模式 alipay.trade.settle.confirm(统一收单确认结算接口) + public ResultUtil confirm(String smid1,String code, String outTradeNo, String amount) { + AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", + aliAppid, + appPrivateKey, + "json", + "GBK", + alipay_public_key, + "RSA2"); + AlipayTradeSettleConfirmRequest request = new AlipayTradeSettleConfirmRequest(); + request.setBizContent("{" + + " \"out_request_no\":\""+code+"\"," + + " \"trade_no\":\""+outTradeNo+"\"," + + " \"settle_info\":{" + + " \"settle_detail_infos\":[" + + " {" + + " \"trans_in_type\":\"defaultSettle\"," + + " \"settle_entity_id\":\""+smid1+"\"," + + " \"settle_entity_type\":\"SecondMerchant\"," + + " \"amount\":"+amount+"," + + " }" + + " ]" + + " }," + + " \"extend_params\":{" + + " \"royalty_freeze\":\"false\"" + + " }" + + "}"); + AlipayTradeSettleConfirmResponse response = null; + try { + response = alipayClient.execute(request); + } catch (AlipayApiException e) { + e.printStackTrace(); + } + if(response.isSuccess()){ + System.out.println("调用成功"); + return ResultUtil.success(); + } else { + System.out.println("调用失败"); + return ResultUtil.error("出现问题啦"); + } + } /** * 支付成功后的回调处理逻辑 diff --git a/cloud-server-account/src/main/resources/sharding-jdbc.properties b/cloud-server-account/src/main/resources/sharding-jdbc.properties index 5c8b0e0..920a1eb 100644 --- a/cloud-server-account/src/main/resources/sharding-jdbc.properties +++ b/cloud-server-account/src/main/resources/sharding-jdbc.properties @@ -14,9 +14,9 @@ datasource.names=master0 datasource.master0.type=com.alibaba.druid.pool.DruidDataSource datasource.master0.driverClassName=com.mysql.cj.jdbc.Driver -datasource.master0.url=jdbc:mysql://127.0.0.1:3306/playpai_account?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai +datasource.master0.url=jdbc:mysql://192.168.110.110/playpai_account?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai datasource.master0.username=root -datasource.master0.password=playpai2023! +datasource.master0.password=123456 datasource.master0.maxActive=20 datasource.master0.maxWait=60000 datasource.master0.minIdle=5 diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java b/cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java index 7709f2d..a276027 100644 --- a/cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java +++ b/cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java @@ -926,14 +926,11 @@ String endDate = dateFormat.format(end); detailsResponse.setStartTime(startDate); detailsResponse.setEndTime(startDate); - Date now = new Date(); Calendar cal1 = Calendar.getInstance(); cal1.setTime(pointsMerchandise.getInsertTime()); - Calendar cal2 = Calendar.getInstance(); cal2.setTime(now); - // Compare the year, month, and day of the two Calendar instances boolean isSameDate = cal1.get(Calendar.YEAR) == cal2.get(Calendar.YEAR) && cal1.get(Calendar.MONTH) == cal2.get(Calendar.MONTH) && diff --git a/cloud-server-activity/src/main/resources/sharding-jdbc.properties b/cloud-server-activity/src/main/resources/sharding-jdbc.properties index 7f8645e..2a2b63f 100644 --- a/cloud-server-activity/src/main/resources/sharding-jdbc.properties +++ b/cloud-server-activity/src/main/resources/sharding-jdbc.properties @@ -14,9 +14,9 @@ datasource.names=master0 datasource.master0.type=com.alibaba.druid.pool.DruidDataSource datasource.master0.driverClassName=com.mysql.cj.jdbc.Driver -datasource.master0.url=jdbc:mysql://127.0.0.1:3306/playpai_activity?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai +datasource.master0.url=jdbc:mysql://192.168.110.110/playpai_activity?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai datasource.master0.username=root -datasource.master0.password=playpai2023! +datasource.master0.password=123456 datasource.master0.maxActive=20 datasource.master0.maxWait=60000 datasource.master0.minIdle=5 diff --git a/cloud-server-competition/pom.xml b/cloud-server-competition/pom.xml index 81dc2e7..14a4946 100644 --- a/cloud-server-competition/pom.xml +++ b/cloud-server-competition/pom.xml @@ -89,10 +89,11 @@ <artifactId>dom4j</artifactId> <version>1.6.1</version> </dependency> + <dependency> <groupId>com.alipay.sdk</groupId> <artifactId>alipay-sdk-java</artifactId> - <version>4.8.10.ALL</version> + <version>4.38.10.ALL</version> </dependency> </dependencies> diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/controller/CompetitionController.java b/cloud-server-competition/src/main/java/com/dsh/competition/controller/CompetitionController.java index 21c51fa..1ad835f 100644 --- a/cloud-server-competition/src/main/java/com/dsh/competition/controller/CompetitionController.java +++ b/cloud-server-competition/src/main/java/com/dsh/competition/controller/CompetitionController.java @@ -755,9 +755,7 @@ String refund_id = map.get("refund_id"); paymentCompetition.setRefundOrderNo(refund_id); paymentCompetitionService.updateById(paymentCompetition); - storeClient.addBackRecord(paymentCompetition.getAmount() + "_" + paymentCompetition.getAppUserId()); - } if (paymentCompetition.getPayType() == 2) {//支付宝支付 diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/feignclient/other/StoreClient.java b/cloud-server-competition/src/main/java/com/dsh/competition/feignclient/other/StoreClient.java index 91719ff..9e9a07d 100644 --- a/cloud-server-competition/src/main/java/com/dsh/competition/feignclient/other/StoreClient.java +++ b/cloud-server-competition/src/main/java/com/dsh/competition/feignclient/other/StoreClient.java @@ -13,7 +13,12 @@ */ @FeignClient("mb-cloud-other") public interface StoreClient { - + /** + * 根据运营商id获取对应运营商商户号 + * @return + */ + @PostMapping("/base/getSMIDByOperatorId") + String getSMIDByOperatorId(Integer id); /** * 根据名称模糊搜索门店 diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/CompetitionServiceImpl.java b/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/CompetitionServiceImpl.java index b1d0666..06518cc 100644 --- a/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/CompetitionServiceImpl.java +++ b/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/CompetitionServiceImpl.java @@ -85,7 +85,7 @@ private String alipayPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAouYvZ1v4RiydwNOnGcU0Hb4hQu0x6XUooaE2Bi6/atNOobtFdunnATGP6OMOW7yF9DpP8qH5mbFXAiaQD721y/7qlayI50UcV4mngRU4ZcaAVE3bp721Eg2H85RISa+Tb1CiOh+pc9p4l5UBseKsvB2ruHHForfZDPI8FL7AVUKBYCQPsa4zL6KAO2C6KULaTg/lCa+bYQKU0n9ca569VtdsqJUyxB9eSZjVd+9nKl62FLqp2NELGj7cXqiVBgDnBnVS5ZUO3mrBM5z/AxQbw3RwE3JqdkhzUA1BFjejAlT2zIGNOjUFagF8ao0wGElYfuk0bum6Hz5qWAt02QdNNwIDAQAB";//支付宝应用公钥 private String alipay_public_key = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmu8n/4yTHWbn7VOrNc9OsLtDL1bEQ8gC1dHkj8Wy5z0mkaOsjJRIG/28ze12M0V8jdCKuuDr5Z1OPKiqf+XO3ypguEh+mYUVMBM/cZodDFQfTY1TKLWjvQCuaqlA+QUTCK6f7T7stsgyQ1o9Jj0rXZDz6PM4QHSTzjrLIBaeqM5WIBvH+fy/X+QG5Utd+/UT0kc0JyvuKhZ65yVUd/C9VcwJJAPliRsAQNrqYterwAJ9zvw9tF11wj9W0XgJ8Ccu4x3gR1vrlLRJJo/OA97RmxPQ+5hSacWQZCUd1dwiBq+YCrKVHGTj14izRHXrLc0yBlRXo7tBOIqcy3IsvKVthQIDAQAB";//支付宝支付公钥 - + private String smid = "2088330203191220";//平台支付宝商户号 /** * 获取赛事列表 @@ -300,7 +300,16 @@ } if (paymentCompetitionVo.getPayType() == 2) {//支付宝 - return aliPaymentCompetition(code, money); + // 判断当前赛事属于哪个运营商 + Competition byId = competitionService.getById(paymentCompetitionVo.getId()); + Integer operatorId = byId.getOperatorId(); + if (operatorId == null ){ + // 说明是平台 + return aliPaymentCompetition(smid,code, money); + } + // 获取该运营商的商户号 + String smid = storeClient.getSMIDByOperatorId(operatorId); + return aliPaymentCompetition(smid,code, money); } if (paymentCompetitionVo.getPayType() == 3) {//玩湃币 appUser.setPlayPaiCoins(appUser.getPlayPaiCoins() - money.intValue()); @@ -418,8 +427,9 @@ * @return * @throws Exception */ - public ResultUtil aliPaymentCompetition(String code, BigDecimal money) throws Exception { - ResultUtil alipay = payMoneyUtil.alipay("报名赛事", "", "", code, money.toString(), "/base/competition/aliPaymentCompetitionCallback"); + public ResultUtil aliPaymentCompetition(String smid,String code, BigDecimal money) throws Exception { + ResultUtil alipay = payMoneyUtil.alipay + (smid,"报名赛事", "", "", code, money.toString(), "/base/competition/aliPaymentCompetitionCallback"); if (alipay.getCode() == 200) { new Thread(new Runnable() { @Override @@ -453,6 +463,7 @@ paymentCompetition.setAppUserId(null); paymentCompetition.setState(3); userCompetitionService.remove(new QueryWrapper<UserCompetition>().eq("paymentCompetitionId", paymentCompetition.getId())); + break; } if ("TRADE_SUCCESS".equals(s)) { @@ -461,12 +472,10 @@ paymentCompetition.setPayTime(new Date()); paymentCompetition.setPayOrderNo(tradeNo); paymentCompetitionService.updateById(paymentCompetition); - + // 结算资金到商户账号 + payMoneyUtil.confirm(smid,code,tradeNo,money.toString()); //分账 - - // moneyOut(tradeNo, tradeNo,code); - break; } if ("WAIT_BUYER_PAY".equals(s)) { diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/util/PayMoneyUtil.java b/cloud-server-competition/src/main/java/com/dsh/competition/util/PayMoneyUtil.java index e85dd04..3c5e8eb 100644 --- a/cloud-server-competition/src/main/java/com/dsh/competition/util/PayMoneyUtil.java +++ b/cloud-server-competition/src/main/java/com/dsh/competition/util/PayMoneyUtil.java @@ -6,7 +6,7 @@ import com.alipay.api.AlipayClient; import com.alipay.api.CertAlipayRequest; import com.alipay.api.DefaultAlipayClient; -import com.alipay.api.domain.AlipayTradeAppPayModel; +import com.alipay.api.domain.*; import com.alipay.api.request.*; import com.alipay.api.response.*; import com.dsh.competition.util.httpClinet.HttpClientUtil; @@ -71,7 +71,7 @@ /** * 支付宝支付 */ - public ResultUtil alipay(String body, String subject, String passbackParams, String outTradeNo, String amount, String notifyUrl) { + public ResultUtil alipay(String smid,String body, String subject, String passbackParams, String outTradeNo, String amount, String notifyUrl) { // //构造client // CertAlipayRequest certAlipayRequest = new CertAlipayRequest (); // //设置网关地址 @@ -137,8 +137,24 @@ model.setTotalAmount(amount);//付款金额 model.setProductCode("QUICK_MSECURITY_PAY"); model.setPassbackParams(passbackParams);//自定义参数 + SettleInfo settleInfo = new SettleInfo(); + settleInfo.setSettlePeriodTime("3d"); + SettleDetailInfo settleDetailInfo = new SettleDetailInfo(); + settleDetailInfo.setTransInType("defaultSettle"); + settleDetailInfo.setAmount(amount); + List<SettleDetailInfo> settleDetailInfos = new ArrayList<>(); + settleDetailInfos.add(settleDetailInfo); + settleInfo.setSettleDetailInfos(settleDetailInfos); + model.setSettleInfo(settleInfo); + SubMerchant subMerchant = new SubMerchant(); + subMerchant.setMerchantId(smid); + model.setSubMerchant(subMerchant); + ExtendParams extendParams = new ExtendParams(); + extendParams.setRoyaltyFreeze("true");// 冻结资金 用于后续分账处理 + model.setExtendParams(extendParams); request.setBizModel(model); request.setNotifyUrl(callbackPath + notifyUrl); + try { //这里和普通的接口调用不同,使用的是sdkExecute AlipayTradeAppPayResponse response = alipayClient.sdkExecute(request); @@ -273,6 +289,54 @@ } } + /** + * 统一确认结算接口 + * @param smid + * @param code + * @param outTradeNo + * @param amount + * @return + */ + public ResultUtil confirm(String smid,String code, String outTradeNo, String amount) { + AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", + aliAppid, + appPrivateKey, + "json", + "GBK", + alipay_public_key, + "RSA2"); + AlipayTradeSettleConfirmRequest request = new AlipayTradeSettleConfirmRequest(); + request.setBizContent("{" + + " \"out_request_no\":\""+code+"\"," + + " \"trade_no\":\""+outTradeNo+"\"," + + " \"settle_info\":{" + + " \"settle_detail_infos\":[" + + " {" + + " \"trans_in_type\":\"defaultSettle\"," + + " \"settle_entity_id\":\""+smid+"\"," + + " \"settle_entity_type\":\"SecondMerchant\"," + + " \"amount\":"+amount+"," + + " }" + + " ]" + + " }," + + " \"extend_params\":{" + + " \"royalty_freeze\":\"false\"" + + " }" + + "}"); + AlipayTradeSettleConfirmResponse response = null; + try { + response = alipayClient.execute(request); + } catch (AlipayApiException e) { + e.printStackTrace(); + } + if(response.isSuccess()){ + System.out.println("调用成功"); + return ResultUtil.success(); + } else { + System.out.println("调用失败"); + return ResultUtil.error("出现问题啦"); + } + } /** * 微信统一下单 diff --git a/cloud-server-competition/src/main/resources/sharding-jdbc.properties b/cloud-server-competition/src/main/resources/sharding-jdbc.properties index ae42f8b..d16fa36 100644 --- a/cloud-server-competition/src/main/resources/sharding-jdbc.properties +++ b/cloud-server-competition/src/main/resources/sharding-jdbc.properties @@ -14,9 +14,9 @@ datasource.names=master0 datasource.master0.type=com.alibaba.druid.pool.DruidDataSource datasource.master0.driverClassName=com.mysql.cj.jdbc.Driver -datasource.master0.url=jdbc:mysql://127.0.0.1:3306/playpai_competition?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai +datasource.master0.url=jdbc:mysql://192.168.110.110/playpai_competition?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai datasource.master0.username=root -datasource.master0.password=playpai2023! +datasource.master0.password=123456 datasource.master0.maxActive=20 datasource.master0.maxWait=60000 datasource.master0.minIdle=5 diff --git a/cloud-server-course/pom.xml b/cloud-server-course/pom.xml index 518fb93..f84b131 100644 --- a/cloud-server-course/pom.xml +++ b/cloud-server-course/pom.xml @@ -122,7 +122,7 @@ <dependency> <groupId>com.alipay.sdk</groupId> <artifactId>alipay-sdk-java</artifactId> - <version>4.8.10.ALL</version> + <version>4.38.10.ALL</version> </dependency> <dependency> <groupId>com.huaweicloud</groupId> diff --git a/cloud-server-course/src/main/java/com/dsh/course/controller/CourseController.java b/cloud-server-course/src/main/java/com/dsh/course/controller/CourseController.java index 1d0f34f..e9c6c2d 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/controller/CourseController.java +++ b/cloud-server-course/src/main/java/com/dsh/course/controller/CourseController.java @@ -293,7 +293,6 @@ } } - /** * 根据id获取课程数据 * @@ -500,14 +499,12 @@ @PostMapping("/course/auditDiscount") public Boolean auditDiscount(@RequestBody AuditDiscount auditDiscount) { - List<TCoursePackageDiscount> list = discountService.list(new LambdaQueryWrapper<TCoursePackageDiscount>() .eq(TCoursePackageDiscount::getCoursePackageId, auditDiscount.getId())); for (TCoursePackageDiscount tCoursePackageDiscount : list) { tCoursePackageDiscount.setAuditStatus(auditDiscount.getType()); tCoursePackageDiscount.setAuditRemark(auditDiscount.getText()); } - return discountService.updateBatchById(list); } @@ -525,8 +522,6 @@ selectDto.setValue(String.valueOf(coursePackagePaymentConfig.getClassHours())); integerList.add(selectDto); } - - return integerList; } diff --git a/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackageController.java b/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackageController.java index 74c3169..597b4f1 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackageController.java +++ b/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackageController.java @@ -242,8 +242,6 @@ StoreOfCourseVo courseVo = new StoreOfCourseVo(); courseVo.setCourseId(coursePackage.getId()); courseVo.setName(coursePackage.getName() + "(" + store.getName() + ")"); - - String classStartTime = coursePackage.getClassStartTime(); String classEndTime = coursePackage.getClassEndTime(); ArrayList<String> classTime = new ArrayList<>(); @@ -255,11 +253,8 @@ classTime.add(s); } } - // coursePackageInfo.setTimes(classTime); String classTimeAsString = String.join("|", classTime); - - courseVo.setClassStartTime(classTimeAsString); courseVo.setCoverDrawing(coursePackage.getCoverDrawing()); courseVo.setApplicantsNumber(count); diff --git a/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java b/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java index ba122dc..3908b88 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java +++ b/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java @@ -768,7 +768,6 @@ return lisco; } - @PostMapping("/base/coursePack/continuingCourse") public StudentOfCourseVo getStudentCourse(@RequestBody GetStudentCourse getStudentCourse) { StudentOfCourseVo courseVo = new StudentOfCourseVo(); @@ -777,7 +776,6 @@ .eq("coursePackageId", getStudentCourse.getCourseId()) .eq("studentId", getStudentCourse.getStuId())); if (tCoursePackagePayments.size() > 0) { - List<CourseHoursType> typeList = new ArrayList<>(); tCoursePackagePayments.forEach(cou -> { CourseHoursType hoursType = new CourseHoursType(); @@ -788,7 +786,6 @@ TCoursePackagePayment tCoursePackagePayment = tCoursePackagePayments.get(0); courseVo.setCoursePackageId(tCoursePackagePayment.getCoursePackageId()); courseVo.setTypeList(typeList); - TCoursePackage coursePackage = tcpService.getById(tCoursePackagePayment.getCoursePackageId()); courseVo.setPackageImg(coursePackage.getCoverDrawing()); courseVo.setCourseName(coursePackage.getName()); @@ -1826,7 +1823,6 @@ // 其他星期减一即可得到1-6的数字表示 dayOfWeek -= 1; } - // todo if (weeks.contains(String.valueOf(dayOfWeek))){ // 限时折扣判断是否在有效期 try { @@ -2434,7 +2430,6 @@ coursePackagePayment.setAppUserId(null); packagePaymentService.updateById(coursePackagePayment); } - /** * 修改数据 @@ -3052,10 +3047,7 @@ weekData.add(count2); weekData.add(count1); weekData.add(count); - map.put("weekData", weekData); - - LocalDateTime currentDateTime = LocalDateTime.now(); List<Integer> amountByDay = new ArrayList<>(Collections.nCopies(7, 0)); for (CoursePackageStudent coursePackageStudent : list) { diff --git a/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackageSchedulingController.java b/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackageSchedulingController.java index b7a6ba6..f620bc1 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackageSchedulingController.java +++ b/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackageSchedulingController.java @@ -55,7 +55,6 @@ return coursePackageSchedulingService.getById(id); } - @ResponseBody @PostMapping("/coursePackageScheduling/queryCoursePackageSchedulingsById") public List<CoursePackageScheduling> queryCoursePackageSchedulingsById(@RequestBody Long id) { diff --git a/cloud-server-course/src/main/java/com/dsh/course/controller/CourseRecordController.java b/cloud-server-course/src/main/java/com/dsh/course/controller/CourseRecordController.java index bb2888b..c8d81b5 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/controller/CourseRecordController.java +++ b/cloud-server-course/src/main/java/com/dsh/course/controller/CourseRecordController.java @@ -51,7 +51,6 @@ .eq("studentId", course.getStuId()) .eq("appUserId", course.getAppUserId()) .eq("signInOrNot", 1)); - if (coursePackageStudents.size() > 0) { List<CancelledClasses> list = caccService.list(new QueryWrapper<CancelledClasses>() .eq("coursePackageId", course.getCourseId())); @@ -64,7 +63,6 @@ } return sult; } - @Autowired private CourseCounsumService courseCounsumService; @@ -73,7 +71,6 @@ courseCounsumService.save(courseCounsum); } - @PostMapping("/base/courseRecord/cancelCourseData") public Integer cancelCourseRecordClass(@RequestBody Integer courseRecordId) { int sult = 0; @@ -81,7 +78,6 @@ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy.MM.dd"); SimpleDateFormat format = new SimpleDateFormat("yyyy.MM.dd HH:mm"); String tis = simpleDateFormat.format(new Date()); - if (ToolUtil.isNotEmpty(packageStudent)) { TCoursePackage coursePackage = tcpService.getById(packageStudent.getCoursePackageId()); String startTime = tis + " " + coursePackage.getClassStartTime(); diff --git a/cloud-server-course/src/main/java/com/dsh/course/controller/CourseStudentController.java b/cloud-server-course/src/main/java/com/dsh/course/controller/CourseStudentController.java index 1e18d25..33021bf 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/controller/CourseStudentController.java +++ b/cloud-server-course/src/main/java/com/dsh/course/controller/CourseStudentController.java @@ -52,7 +52,6 @@ private TCoursePackageService coursePackageService; @Resource private CoursePackageStudentMapper cpsMapper; - //获取退费记录 @RequestMapping("/getRefund") @ResponseBody @@ -60,20 +59,14 @@ // 查询已通过申请的退费记录 return counsumService.getRefund(); } - - @Resource private CoursePackageSchedulingMapper coursePackageSchedulingService; - - @RequestMapping("/getStudentTotal") @ResponseBody public List<Map<String, Object>> get(@RequestBody StudentQeryDto studentQeryDto) { List<Map<String, Object>> pays = paymentService.getStudentTotal(studentQeryDto); return pays; - } - @RequestMapping("/bypac") @ResponseBody diff --git a/cloud-server-course/src/main/java/com/dsh/course/feignclient/other/StoreClient.java b/cloud-server-course/src/main/java/com/dsh/course/feignclient/other/StoreClient.java index d12cc4f..33df8b0 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/feignclient/other/StoreClient.java +++ b/cloud-server-course/src/main/java/com/dsh/course/feignclient/other/StoreClient.java @@ -16,10 +16,12 @@ @FeignClient("mb-cloud-other") public interface StoreClient { - /** - * 根据管理员id获取 + * 根据运营商id获取对应运营商商户号 + * @return */ + @PostMapping("/base/getSMIDByOperatorId") + String getSMIDByOperatorId(Integer id); /** * 根据名称模糊搜索门店 * diff --git a/cloud-server-course/src/main/java/com/dsh/course/feignclient/other/model/Store.java b/cloud-server-course/src/main/java/com/dsh/course/feignclient/other/model/Store.java index dfd38a7..efcdff4 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/feignclient/other/model/Store.java +++ b/cloud-server-course/src/main/java/com/dsh/course/feignclient/other/model/Store.java @@ -24,6 +24,10 @@ */ private Integer cityManagerId; /** + * 运营商id + */ + private Integer operatorId; + /** * 省 */ private String province; diff --git a/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java b/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java index d8fc6ed..21f0578 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java +++ b/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java @@ -948,11 +948,22 @@ } return weixinpay; } - + private String smid = "2088330203191220";//平台支付宝商户号 public ResultUtil AlipayPayment(String code, BigDecimal request) { TCoursePackagePaymentMapper baseMapper1 = this.baseMapper; - ResultUtil alipay = payMoneyUtil.alipay("课包购买", "课包购买", "", code, request.toString(), + TCoursePackagePayment coursePackagePayment = baseMapper1.getCoursePackagePaymentByCode(code); + // 判断这个课包属于哪个门店 属于哪个运营商 根据运营商 id 获取对应的商户号 + Integer coursePackageId = coursePackagePayment.getCoursePackageId(); + TCoursePackage byId = coursePackageService.getById(coursePackageId); + Store store = storeClient.queryStoreById(byId.getStoreId()); + String smid1=""; + if (store.getOperatorId() == null ){ + smid1 = smid; + }else{ + smid1 = storeClient.getSMIDByOperatorId(store.getOperatorId()); + } + ResultUtil alipay = payMoneyUtil.alipay(smid1,"课包购买", "课包购买", "", code, request.toString(), "/base/coursePackage/alipayRegisteredCoursesCallback"); if (alipay.getCode() == 200) { new Thread(new Runnable() { @@ -984,12 +995,24 @@ if ("TRADE_CLOSED".equals(s) || "TRADE_FINISHED".equals(s) || num == 10) { coursePackagePayment.setState(3); baseMapper1.deleteById(coursePackagePayment.getId()); + break; } if ("TRADE_SUCCESS".equals(s)) { coursePackagePayment.setPayStatus(2); coursePackagePayment.setOrderNumber(tradeNo); baseMapper1.updateById(coursePackagePayment); + // 判断这个课包属于哪个门店 属于哪个运营商 根据运营商 id 获取对应的商户号 + Integer coursePackageId = coursePackagePayment.getCoursePackageId(); + TCoursePackage byId = coursePackageService.getById(coursePackageId); + Store store = storeClient.queryStoreById(byId.getStoreId()); + if (store.getOperatorId()== null ){ + // 说明是平台的门店 + payMoneyUtil.confirm(smid,code,tradeNo,request.toString()); + }else{ + String smid = storeClient.getSMIDByOperatorId(store.getOperatorId()); + payMoneyUtil.confirm(smid,code,tradeNo,request.toString()); + } break; } if ("WAIT_BUYER_PAY".equals(s)) { @@ -1010,7 +1033,7 @@ TCoursePackagePayment packagePayment = this.baseMapper.selectOne(new QueryWrapper<TCoursePackagePayment>() .eq("code", code)); if (appUser.getPlayPaiCoins() < wpGold) { - return ResultUtil.error("玩牌币不足!"); + return ResultUtil.error("玩湃币不足!"); } packagePayment.setPayStatus(2); packagePayment.setPayUserId(appUser.getId()); diff --git a/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java b/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java index e140bb1..1d0b910 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java +++ b/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java @@ -1041,7 +1041,7 @@ return weixinpay; } - + private String smid = "2088330203191220";//平台支付宝商户号 /** * 课程支付宝支付 * @@ -1055,6 +1055,7 @@ CoursePackagePaymentConfig coursePackagePaymentConfig = coursePackagePaymentConfigService.getById(paymentCourseVo.getCoursePackagePaymentConfigId()); SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); String code = sdf.format(new Date()) + UUIDUtil.getNumberRandom(5); + String smid1=""; //生成支付订单 if (paymentCourseVo.getOrderId()==null){ CoursePackageOrder coursePackageOrder = new CoursePackageOrder(); @@ -1083,8 +1084,18 @@ coursePackageOrder.setPayUserId(uid); coursePackageOrderService.updateById(coursePackageOrder); } - - ResultUtil alipay = payMoneyUtil.alipay("购买课程", "购买课程", coursePackagePaymentConfig.getId().toString(), code, paymentPrice.toString(), "/base/course/aliPaymentCourseCallback"); + // 判断这个课包属于哪个门店 属于哪个运营商 根据运营商 id 获取对应的商户号 + Integer coursePackageId = paymentCourseVo.getId(); + TCoursePackage byId = coursePackageService.getById(coursePackageId); + Store store = storeClient.queryStoreById(byId.getStoreId()); + if (store.getOperatorId() == null ){ + smid1 = smid; + }else{ + smid1 = storeClient.getSMIDByOperatorId(store.getOperatorId()); + } + ResultUtil alipay = payMoneyUtil.alipay(smid1,"购买课程", "购买课程", + coursePackagePaymentConfig.getId().toString(), + code, paymentPrice.toString(), "/base/course/aliPaymentCourseCallback"); if (alipay.getCode() == 200) { String finalCode = code; new Thread(new Runnable() { @@ -1092,7 +1103,6 @@ public void run() { try { Thread.sleep(1000); - int num = 1; int wait = 0; while (num <= 10) { @@ -1128,7 +1138,23 @@ coursePackageOrderService.updateById(coursePackageOrder1); addCoursePackageOrderStudent(coursePackageOrder1.getId(), coursePackagePaymentConfig); moneyOut(tradeNo,tradeNo,finalCode); - break; + // 根据课程id 查询这个课程属于哪个门店 属于哪个运营商 + Integer id = paymentCourseVo.getId(); + TCoursePackage byId = coursePackageService.getById(id); + Integer storeId = byId.getStoreId(); + Store store = storeClient.queryStoreById(storeId); + Integer operatorId = store.getOperatorId(); + if (operatorId==null){ + String smid ="2088330203191220"; + // 说明是平台的 + payMoneyUtil.confirm(smid,finalCode,tradeNo,paymentPrice.toString()); + break; + }else{ + // 当前课程不属于门店 查询这个课程属于哪个门店 属于哪个运营商 + String smidByOperatorId = storeClient.getSMIDByOperatorId(operatorId); + payMoneyUtil.confirm(smidByOperatorId,finalCode,tradeNo,paymentPrice.toString()); + break; + } } if ("WAIT_BUYER_PAY".equals(s)) { num++; diff --git a/cloud-server-course/src/main/java/com/dsh/course/util/PayMoneyUtil.java b/cloud-server-course/src/main/java/com/dsh/course/util/PayMoneyUtil.java index a568526..5272413 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/util/PayMoneyUtil.java +++ b/cloud-server-course/src/main/java/com/dsh/course/util/PayMoneyUtil.java @@ -6,7 +6,7 @@ import com.alipay.api.AlipayClient; import com.alipay.api.CertAlipayRequest; import com.alipay.api.DefaultAlipayClient; -import com.alipay.api.domain.AlipayTradeAppPayModel; +import com.alipay.api.domain.*; import com.alipay.api.request.*; import com.alipay.api.response.*; import com.dsh.course.util.httpClinet.HttpClientUtil; @@ -54,6 +54,7 @@ private String appid = "wx82f853a410b0c7c0";//微信appid private String appletsAppid = "";//微信小程序appid + private String smid = "2088330203191220";//平台支付宝商户号 private String mchId = "1501481761";//微信商户号 @@ -69,11 +70,50 @@ private String certPath = "C:\\cert\\1523106371_20211206_cert\\apiclient_cert.p12";//微信证书 - + public ResultUtil confirm(String smid,String code, String outTradeNo, String amount) { + AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", + aliAppid, + appPrivateKey, + "json", + "GBK", + alipay_public_key, + "RSA2"); + AlipayTradeSettleConfirmRequest request = new AlipayTradeSettleConfirmRequest(); + request.setBizContent("{" + + " \"out_request_no\":\""+code+"\"," + + " \"trade_no\":\""+outTradeNo+"\"," + + " \"settle_info\":{" + + " \"settle_detail_infos\":[" + + " {" + + " \"trans_in_type\":\"defaultSettle\"," + + " \"settle_entity_id\":\""+smid+"\"," + + " \"settle_entity_type\":\"SecondMerchant\"," + + " \"amount\":"+amount+"," + + " }" + + " ]" + + " }," + + " \"extend_params\":{" + + " \"royalty_freeze\":\"true\"" + + " }" + + "}"); + AlipayTradeSettleConfirmResponse response = null; + try { + response = alipayClient.execute(request); + } catch (AlipayApiException e) { + e.printStackTrace(); + } + if(response.isSuccess()){ + System.out.println("调用成功"); + return ResultUtil.success(); + } else { + System.out.println("调用失败"); + return ResultUtil.error("出现问题啦"); + } + } /** * 支付宝支付 */ - public ResultUtil alipay(String body, String subject, String passbackParams, String outTradeNo, String amount, String notifyUrl) { + public ResultUtil alipay(String smid,String body, String subject, String passbackParams, String outTradeNo, String amount, String notifyUrl) { // //构造client // CertAlipayRequest certAlipayRequest = new CertAlipayRequest (); // //设置网关地址 @@ -124,8 +164,6 @@ // } catch (AlipayApiException e ) { // e.printStackTrace(); // } - - //实例化客户端 AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", aliAppid, appPrivateKey, "json", "UTF-8", alipay_public_key, "RSA2"); //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay @@ -139,9 +177,23 @@ model.setTotalAmount(amount);//付款金额 model.setProductCode("QUICK_MSECURITY_PAY"); model.setPassbackParams(passbackParams);//自定义参数 + SettleInfo settleInfo = new SettleInfo(); + settleInfo.setSettlePeriodTime("3d"); + SettleDetailInfo settleDetailInfo = new SettleDetailInfo(); + settleDetailInfo.setTransInType("defaultSettle"); + settleDetailInfo.setAmount(amount); + List<SettleDetailInfo> settleDetailInfos = new ArrayList<>(); + settleDetailInfos.add(settleDetailInfo); + settleInfo.setSettleDetailInfos(settleDetailInfos); + model.setSettleInfo(settleInfo); + SubMerchant subMerchant = new SubMerchant(); + subMerchant.setMerchantId(smid); + model.setSubMerchant(subMerchant); + ExtendParams extendParams = new ExtendParams(); + extendParams.setRoyaltyFreeze("true");// 冻结资金 用于后续分账处理 + model.setExtendParams(extendParams); request.setBizModel(model); request.setNotifyUrl(callbackPath + notifyUrl); - try { //这里和普通的接口调用不同,使用的是sdkExecute AlipayTradeAppPayResponse response = alipayClient.sdkExecute(request); diff --git a/cloud-server-course/src/main/resources/sharding-jdbc.properties b/cloud-server-course/src/main/resources/sharding-jdbc.properties index 02b67d5..c467a6f 100644 --- a/cloud-server-course/src/main/resources/sharding-jdbc.properties +++ b/cloud-server-course/src/main/resources/sharding-jdbc.properties @@ -14,9 +14,9 @@ datasource.names=master0 datasource.master0.type=com.alibaba.druid.pool.DruidDataSource datasource.master0.driverClassName=com.mysql.cj.jdbc.Driver -datasource.master0.url=jdbc:mysql://127.0.0.1:3306/playpai_course?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai +datasource.master0.url=jdbc:mysql://192.168.110.110:3306/playpai_course?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai datasource.master0.username=root -datasource.master0.password=playpai2023! +datasource.master0.password=123456 datasource.master0.maxActive=20 datasource.master0.maxWait=60000 datasource.master0.minIdle=5 diff --git a/cloud-server-management/src/main/java/com/dsh/course/mapper/BankMapper.java b/cloud-server-management/src/main/java/com/dsh/course/mapper/BankMapper.java new file mode 100644 index 0000000..f4093bd --- /dev/null +++ b/cloud-server-management/src/main/java/com/dsh/course/mapper/BankMapper.java @@ -0,0 +1,9 @@ +package com.dsh.course.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.dsh.guns.modular.system.model.Bank; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface BankMapper extends BaseMapper<Bank> { +} diff --git a/cloud-server-management/src/main/java/com/dsh/course/mapper/TOperatorAuthMapper.java b/cloud-server-management/src/main/java/com/dsh/course/mapper/TOperatorAuthMapper.java index b87b6b6..8d4a30c 100644 --- a/cloud-server-management/src/main/java/com/dsh/course/mapper/TOperatorAuthMapper.java +++ b/cloud-server-management/src/main/java/com/dsh/course/mapper/TOperatorAuthMapper.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.dsh.guns.modular.system.model.OperatorAuth; +import com.dsh.guns.modular.system.model.OperatorAuthAlipay; import com.dsh.guns.modular.system.model.TTurn; import org.apache.ibatis.annotations.Mapper; @@ -15,6 +16,6 @@ * @since 2023-09-19 */ @Mapper -public interface TOperatorAuthMapper extends BaseMapper<OperatorAuth> { +public interface TOperatorAuthMapper extends BaseMapper<OperatorAuthAlipay> { } diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/api/AliPayMsgConfig.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/api/AliPayMsgConfig.java new file mode 100644 index 0000000..1778705 --- /dev/null +++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/api/AliPayMsgConfig.java @@ -0,0 +1,90 @@ +package com.dsh.guns.modular.system.api; + +import cn.hutool.core.io.FileUtil; +import com.alibaba.fastjson.JSONObject; +import com.alipay.api.msg.AlipayMsgClient; +import com.alipay.api.msg.MsgHandler; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.dsh.guns.modular.system.model.OperatorAuthAlipay; +import com.dsh.guns.modular.system.model.OperatorUser; +import com.dsh.guns.modular.system.service.IOperatorAuthService; +import com.dsh.guns.modular.system.service.IOperatorUserService; +import com.dsh.guns.modular.system.service.IUserService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.stereotype.Component; + +@Component +@Configuration +@EnableConfigurationProperties({AliPayProperties.class}) +public class AliPayMsgConfig { + @Autowired + private IOperatorAuthService operatorAuthService; + @Autowired + private IOperatorUserService operatorUserService; + @Autowired + private IUserService userService; + private AliPayProperties aliPay; + public AliPayMsgConfig(AliPayProperties aliPay) { + this.aliPay = aliPay; + } + @Bean + public AlipayMsgClient alipayMsgClient() throws Exception { + AlipayMsgClient alipayMsgClient = AlipayMsgClient.getInstance(aliPay.getAppId()); + alipayMsgClient.setConnector("openchannel.alipay.com"); + alipayMsgClient.setSecurityConfig(aliPay.getSignType(), aliPay.getAppPrivateKey(), aliPay.getAlipay_public_key()); + alipayMsgClient.setCharset(aliPay.getChartSet()); + alipayMsgClient.setMessageHandler(new MsgHandler() { + /** + * 客户端接收到消息后回调此方法 + * @param msgApi 接收到的消息的消息api名 + * @param msgId 接收到的消息的消息id + * @param bizContent 接收到的消息的内容,json格式 + */ + @Override + public void onMessage (String msgApi, String msgId, String bizContent) { + System.err.println("消息对象"+msgApi); + System.err.println("id"+msgId); + System.err.println("内容"+bizContent); + if (msgApi.equals("ant.merchant.expand.indirect.zft.passed")){ + // 审核通过 + JSONObject json = JSONObject.parseObject(bizContent); + String smid = json.getString("smid"); + String order_id = json.getString("order_id"); + OperatorAuthAlipay orderNo = operatorAuthService.getOne(new QueryWrapper<OperatorAuthAlipay>() + .eq("orderNo", order_id)); + if (orderNo!=null){ + Integer operatorId = orderNo.getOperatorId(); + OperatorUser operatorId1 = operatorUserService.getOne(new QueryWrapper<OperatorUser>() + .eq("operatorId", operatorId)); + if (operatorId1!=null){ + operatorId1.setAlipayNum(smid); + operatorId1.setAlipayAudit(2); + } + } + }else if (msgApi.equals("ant.merchant.expand.indirect.zft.rejected")){ + // 审核拒绝 + JSONObject json = JSONObject.parseObject(bizContent); + String reason = json.getString("reason"); + String order_id = json.getString("order_id"); + OperatorAuthAlipay orderNo = operatorAuthService.getOne(new QueryWrapper<OperatorAuthAlipay>() + .eq("orderNo", order_id)); + if (orderNo!=null){ + orderNo.setRefuseReason(reason); + Integer operatorId = orderNo.getOperatorId(); + OperatorUser operatorId1 = operatorUserService.getOne(new QueryWrapper<OperatorUser>() + .eq("operatorId", operatorId)); + if (operatorId1!=null){ + operatorId1.setAlipayAudit(3); + } + } + } + + } + }); + alipayMsgClient.connect(); + return alipayMsgClient; + } + } diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/api/AliPayProperties.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/api/AliPayProperties.java new file mode 100644 index 0000000..da58467 --- /dev/null +++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/api/AliPayProperties.java @@ -0,0 +1,38 @@ +package com.dsh.guns.modular.system.api; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; + +@Data +@ConfigurationProperties(prefix = "alipay") +public class AliPayProperties { + /** + * 加签类型 + */ + private String signType = "RSA2"; + /** + * 应用id + */ + private String appId = "2021004105665036"; + /** + * 请求使用的编码格式,如utf-8,gbk,gb2312等 + */ + private String chartSet = "utf-8"; + + private String appPrivateKey="MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCi5i9nW/hGLJ3A06cZxTQdviFC7THpdSihoTYGLr9q006hu0V26ecBMY/o4w5bvIX0Ok/yofmZsVcCJpAPvbXL/uqVrIjnRRxXiaeBFThlxoBUTdunvbUSDYfzlEhJr5NvUKI6H6lz2niXlQGx4qy8Hau4ccWit9kM8jwUvsBVQoFgJA+xrjMvooA7YLopQtpOD+UJr5thApTSf1xrnr1W12yolTLEH15JmNV372cqXrYUuqnY0QsaPtxeqJUGAOcGdVLllQ7easEznP8DFBvDdHATcmp2SHNQDUEWN6MCVPbMgY06NQVqAXxqjTAYSVh+6TRu6bofPmpYC3TZB003AgMBAAECggEBAJAcR2+PA3NBYUYHeFrqBRMS8uX8ZR19kjZ7IgoSLTFaQsP9opRylPSPXhrPVBKAE5leRQAHn4MCSlESwHvMfxo7KFjFTFAc6dffZZpipYQUOc9bGampwJh58/3e/pyBgVMG6J23CPf/HJQtNFSkjd/V9+ayb/9l2dUEL3bC0fAZ/dbx8HsxdLw8wn3fLlWLj68hOMqa2deCZe3JdSVsPbeWqkh56FFsMLug0Nd+Ar4TgRl9/jnhXF0JWiD0LmPUYLhboY7EfUBzN4w1iYbDi1P+3zvoOYsiVKAXox9GMhQ2VzOO2UcSTuizSza2e98mGpabl/GpKmCz+RDFjtkX6eECgYEA2MyCij65eO3aGIm3FUe93DULRBYTfX8qJQSJq2WOWA3mmQlEW6L3O2B5/lG2h+8WmN6iLEs9eHpgycGYp7vAqgrANEn16ACVcuyx0scFtrZfZ+kmHMzFfiUWxJjVYk/6YngsGVBLdw6ueM42C8TTP67X9tU5TdVGoGWuqEj4W98CgYEAwFqwprXOch5Pqk/RPbb49r0Ou03K/UbciWnWWKzUhFFNS8MdlQPoDvQZbMwHLeWsa2VhaKITK3x5biLQb3U+0GLOn6lTvEyrEUH+ucREyLgVYTRAvwBPtnvlrzpyxPk2HnslQjju8WrvvLLBMKWUjlTrTOzhaHT21gz3pHMiOakCgYEAhLmfaXdBITGshb054sNLDtdCkGpbgEcrzAHdLps769iGxkYQHXHFngpQZUwtTUcoNGqIKknd1jZFrv7gsD+XkgKG7PwimehRlkwmCX5ilxtLiVgJRzRt6+5U5AMVD90a0tHzXYP0z2yjj73fBJF5KtGl0a10KZxaYrQdm1UhB00CgYBZZgzx/k9rtHC8LAqIj1CYhHejT92G53c6Gkl3vyOqN4sgKhfGmSEySfrDGPRBPZxr8ZtbIPCd5mUdberH0osWGMYFaJI1UsCy7aQwvGpniz7MhZeN7dweaOjwDs8mgtjHQ96mL4XGCDhR0BZ/wIURvZ/6iaGdhbbu9unlsWj3uQKBgQCmZYdsbbZkd3ev6f8rwyvMz+DrCQyYpY44cegBYuJgrZiQnL2fJioeN7ixX0UM48SfwsZEIrzshP/LGAwnc2MdjxKUl4jLN8SEe0NAjXOnz9Zaw740+aOmLpXcLWdP4uM2gIhWsvW1tEkQZCXmm7c9s/RsU8Pmzv+YL3+fSijOzA=="; + private String alipay_public_key = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmu8n/4yTHWbn7VOrNc9OsLtDL1bEQ8gC1dHkj8Wy5z0mkaOsjJRIG/28ze12M0V8jdCKuuDr5Z1OPKiqf+XO3ypguEh+mYUVMBM/cZodDFQfTY1TKLWjvQCuaqlA+QUTCK6f7T7stsgyQ1o9Jj0rXZDz6PM4QHSTzjrLIBaeqM5WIBvH+fy/X+QG5Utd+/UT0kc0JyvuKhZ65yVUd/C9VcwJJAPliRsAQNrqYterwAJ9zvw9tF11wj9W0XgJ8Ccu4x3gR1vrlLRJJo/OA97RmxPQ+5hSacWQZCUd1dwiBq+YCrKVHGTj14izRHXrLc0yBlRXo7tBOIqcy3IsvKVthQIDAQAB";//支付宝支付公钥 + /** + * 应用公钥证书路径 + */ + private String appCertPublicKeyPath; + + /** + * 支付宝公钥证书路径 + */ + private String aliPayCertPublicKeyPath; + + /** + * 支付宝根证书路径 + */ + private String aliPayRootCertPath; +} diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/api/SaticScheduleTask.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/api/SaticScheduleTask.java index 2fbe5e5..7f58c9b 100644 --- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/api/SaticScheduleTask.java +++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/api/SaticScheduleTask.java @@ -8,19 +8,24 @@ import com.alipay.api.domain.PrivilegeBenefit; import com.alipay.api.request.AlipayMerchantIndirectAuthorderCloseRequest; import com.alipay.api.request.AlipayMerchantIndirectAuthorderQuerystatusRequest; +import com.alipay.api.request.AntMerchantExpandIndirectZftorderQueryRequest; import com.alipay.api.response.AlipayMerchantIndirectAuthorderCloseResponse; import com.alipay.api.response.AlipayMerchantIndirectAuthorderQuerystatusResponse; +import com.alipay.api.response.AntMerchantExpandIndirectZftorderQueryResponse; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.dsh.guns.modular.system.model.OperatorAuth; +import com.dsh.guns.modular.system.model.OperatorAuthAlipay; import com.dsh.guns.modular.system.model.OperatorUser; import com.dsh.guns.modular.system.model.User; import com.dsh.guns.modular.system.service.IOperatorAuthService; import com.dsh.guns.modular.system.service.IOperatorUserService; import com.dsh.guns.modular.system.service.IUserService; +import com.dsh.guns.modular.system.util.PayMoneyUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.Scheduled; +import sun.applet.Main; import java.time.LocalDateTime; import java.util.List; @@ -34,131 +39,199 @@ private IOperatorUserService operatorUserService; @Autowired private IUserService userService; + @Autowired + private PayMoneyUtil payMoneyUtil; + private String appPrivateKey = "MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCi5i9nW/hGLJ3A06cZxTQdviFC7THpdSihoTYGLr9q006hu0V26ecBMY/o4w5bvIX0Ok/yofmZsVcCJpAPvbXL/uqVrIjnRRxXiaeBFThlxoBUTdunvbUSDYfzlEhJr5NvUKI6H6lz2niXlQGx4qy8Hau4ccWit9kM8jwUvsBVQoFgJA+xrjMvooA7YLopQtpOD+UJr5thApTSf1xrnr1W12yolTLEH15JmNV372cqXrYUuqnY0QsaPtxeqJUGAOcGdVLllQ7easEznP8DFBvDdHATcmp2SHNQDUEWN6MCVPbMgY06NQVqAXxqjTAYSVh+6TRu6bofPmpYC3TZB003AgMBAAECggEBAJAcR2+PA3NBYUYHeFrqBRMS8uX8ZR19kjZ7IgoSLTFaQsP9opRylPSPXhrPVBKAE5leRQAHn4MCSlESwHvMfxo7KFjFTFAc6dffZZpipYQUOc9bGampwJh58/3e/pyBgVMG6J23CPf/HJQtNFSkjd/V9+ayb/9l2dUEL3bC0fAZ/dbx8HsxdLw8wn3fLlWLj68hOMqa2deCZe3JdSVsPbeWqkh56FFsMLug0Nd+Ar4TgRl9/jnhXF0JWiD0LmPUYLhboY7EfUBzN4w1iYbDi1P+3zvoOYsiVKAXox9GMhQ2VzOO2UcSTuizSza2e98mGpabl/GpKmCz+RDFjtkX6eECgYEA2MyCij65eO3aGIm3FUe93DULRBYTfX8qJQSJq2WOWA3mmQlEW6L3O2B5/lG2h+8WmN6iLEs9eHpgycGYp7vAqgrANEn16ACVcuyx0scFtrZfZ+kmHMzFfiUWxJjVYk/6YngsGVBLdw6ueM42C8TTP67X9tU5TdVGoGWuqEj4W98CgYEAwFqwprXOch5Pqk/RPbb49r0Ou03K/UbciWnWWKzUhFFNS8MdlQPoDvQZbMwHLeWsa2VhaKITK3x5biLQb3U+0GLOn6lTvEyrEUH+ucREyLgVYTRAvwBPtnvlrzpyxPk2HnslQjju8WrvvLLBMKWUjlTrTOzhaHT21gz3pHMiOakCgYEAhLmfaXdBITGshb054sNLDtdCkGpbgEcrzAHdLps769iGxkYQHXHFngpQZUwtTUcoNGqIKknd1jZFrv7gsD+XkgKG7PwimehRlkwmCX5ilxtLiVgJRzRt6+5U5AMVD90a0tHzXYP0z2yjj73fBJF5KtGl0a10KZxaYrQdm1UhB00CgYBZZgzx/k9rtHC8LAqIj1CYhHejT92G53c6Gkl3vyOqN4sgKhfGmSEySfrDGPRBPZxr8ZtbIPCd5mUdberH0osWGMYFaJI1UsCy7aQwvGpniz7MhZeN7dweaOjwDs8mgtjHQ96mL4XGCDhR0BZ/wIURvZ/6iaGdhbbu9unlsWj3uQKBgQCmZYdsbbZkd3ev6f8rwyvMz+DrCQyYpY44cegBYuJgrZiQnL2fJioeN7ixX0UM48SfwsZEIrzshP/LGAwnc2MdjxKUl4jLN8SEe0NAjXOnz9Zaw740+aOmLpXcLWdP4uM2gIhWsvW1tEkQZCXmm7c9s/RsU8Pmzv+YL3+fSijOzA==";//支付宝开发者应用私钥 + private String alipay_public_key = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmu8n/4yTHWbn7VOrNc9OsLtDL1bEQ8gC1dHkj8Wy5z0mkaOsjJRIG/28ze12M0V8jdCKuuDr5Z1OPKiqf+XO3ypguEh+mYUVMBM/cZodDFQfTY1TKLWjvQCuaqlA+QUTCK6f7T7stsgyQ1o9Jj0rXZDz6PM4QHSTzjrLIBaeqM5WIBvH+fy/X+QG5Utd+/UT0kc0JyvuKhZ65yVUd/C9VcwJJAPliRsAQNrqYterwAJ9zvw9tF11wj9W0XgJ8Ccu4x3gR1vrlLRJJo/OA97RmxPQ+5hSacWQZCUd1dwiBq+YCrKVHGTj14izRHXrLc0yBlRXo7tBOIqcy3IsvKVthQIDAQAB";//支付宝支付公钥 + private String aliAppid = "2021004105665036";//支付宝appid // 一个小时执行一次 - @Scheduled(fixedRate=6000) + @Scheduled(fixedRate=60000) private void configureTasks() { - System.err.println("执行定时任务时间: " + LocalDateTime.now()); - // 回查商户认证单审核状态 查询除了审核通过以外的认证单 - List<OperatorAuth> list = operatorAuthService.list(new QueryWrapper<OperatorAuth>().ne("orderStatus", "AUDIT_PASS")); - AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do","2021003199648333", - "MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCXnbOiY2VkKb5ubpcwKqzmqbKotpKGA79yn2aQeZiTWhqmLdCKjVp64naGpnOQEC7hDZluOO1crWHVhIEp7XGIEVawA7mb/dBbzo4wQQYVtLX6iEZViYk/mA7G59S/lvsLVi+jkVGlx2Co8JhvkTRtCEFgUnVA9o2jKy5BIEwrusNuDjrn5X+3ZvfZJN/iV0yzhzXynzioZt/DIcdODOVPUrem8T/5ifJ6ydSKIumgquBKyQnFOj+LRt5qMioBVzLnod0S/6kKMoNVN3/qx/PHRaeHbrF7I67IpGNROg0D9C4d9xXbGhSqQciXitLVnNzWuCov4Ie5nT5VCg9RjXyVAgMBAAECggEAf5rU81lgnnqbseoWCQ4B02kD2wc+Lti8qsYJ1pLgnTP6td5dZB8wBbjQNOem35sfOX7uoVv8OkIa00/gPd9/7BtbsGySLP3j/UDNX0N60Y30k1VajOdiwklCNpor7swtog75rVrDMxmo+sb0JQI684E9NMpxsSlRcAEJvvpl4W7LkhfJZyCUNXPAAh9SOkFOeaXATueEQ57V5vpeKM2JRJy//1P1LS2c/quLRIPqaTYgVAvxfdAYQvvP0vPijxHtxJlDxPa8xBCv7D46d+HeIA6X5ZkoTKLYbe2D36utP8rqGsXw1EyrYyuq6HdEAi/I4YXvWyLsXuQTSACSp+piAQKBgQD6am94xyQ4CRiMA/T1kvPPkXD+y/1Sbr3+T1S6X4naAGdkZS+TbPaWEddd2Huml6q+C2UcGhQpupBkbk88Nbs94jOulsfF6b24nOo1xH5z/BtS0kYuYaNLhebJtzrR9gupT1Uv0q+QybWZ3hQswOK0vwpkDk9DOysFynfMyXXlwQKBgQCa/z3oZ4iYZpTLNdRhMS0u593Jq8MDemimBJGEXPvDBByyE5Ohf22UqP5MjS1euosAQSva+/HmKeEigLgjoQTo29mA1nzPe0AKN3huWbqPIOdeIOA694Nj6ooOPS8iDMjKu61wPz/rZ57bv41LsPXr0y4UsU30JWg2rzgRnGgT1QKBgH30c0VIxUr6KEKk6t1qoP/SpAdFC5Ie6am0tWVZELl6Yob47kk1EYLCTpWBghB1UQhuKtlLtMCYenBJm8kpLZke4ef7J1jBDRCCvLt2rjQgpo2t/mbt7XjbTQ5A/3EEVTFAGhUH4A7vpkxSi8tG6cEIJm3VVMD4TdeH02JKIucBAoGAA0v+kxzwqN01uQTSGackIOVJsGp44XAPHcjnF3uq10EVIyyLbVn6iLj3f8VY+7TYFA9O0X+ea5jkcwlt4UQhiJp0i+sECJ3EhPMdGqvJ7hVzFmt4mYh+QPfSK+9dO0ouUzGexM5zm5w+osn2RW/kKzn4tvP2hoTtLIyZkrZS+GkCgYAQGKe84pXggSIPwztg0aBJUC9b4fXe3PR4DFTM85lBUKYJnQGRzf6NDCD83hwJoNdnyZkztyK72LDOn2NOzPfYcfUl6MQFPovXeMWaVidRfo4ZgyFA/C1egduebaIkXE+DpGhiy7alQ4k+LxUfy6oJBT9Sq8oq7EVBEkeff3p66g==","json","GBK", - "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmu8n/4yTHWbn7VOrNc9OsLtDL1bEQ8gC1dHkj8Wy5z0mkaOsjJRIG/28ze12M0V8jdCKuuDr5Z1OPKiqf+XO3ypguEh+mYUVMBM/cZodDFQfTY1TKLWjvQCuaqlA+QUTCK6f7T7stsgyQ1o9Jj0rXZDz6PM4QHSTzjrLIBaeqM5WIBvH+fy/X+QG5Utd+/UT0kc0JyvuKhZ65yVUd/C9VcwJJAPliRsAQNrqYterwAJ9zvw9tF11wj9W0XgJ8Ccu4x3gR1vrlLRJJo/OA97RmxPQ+5hSacWQZCUd1dwiBq+YCrKVHGTj14izRHXrLc0yBlRXo7tBOIqcy3IsvKVthQIDAQAB","RSA2"); - for (OperatorAuth operatorAuth : list) { - // 第三步:查询申请单审核结果 - AlipayMerchantIndirectAuthorderQuerystatusRequest request1 = new AlipayMerchantIndirectAuthorderQuerystatusRequest(); - request1.setBizContent("{" + - " \"order_no\":\""+operatorAuth.getOrderNo()+"\"," + - " \"out_biz_no\":\""+operatorAuth.getOutBizNo()+"\"," + - "}"); - AlipayMerchantIndirectAuthorderQuerystatusResponse response1 = null; - try { - response1 = alipayClient.execute(request1); - } catch (AlipayApiException e) { - e.printStackTrace(); - } - if(response1.isSuccess()){ - System.out.println("调用成功"); - } else { - System.out.println("调用失败"); - } - JSONObject json = JSONObject.parseObject(response1.getBody()); - JSONObject sign = json.getJSONObject("alipay_merchant_indirect_authorder_querystatus_response"); - String orderNo = sign.getString("order_no"); - String order_status = sign.getString("order_status"); - operatorAuth.setOrderStatus(order_status); - operatorAuth.setOrderNo(orderNo); - // 失败原因 - JSONArray verify_list = sign.getJSONArray("verify_list"); - StringBuilder reason = new StringBuilder(""); - // 失败原因 - if (verify_list!=null){ - for (int i = 0; i < verify_list.size(); i++) { - JSONObject jsonObject = verify_list.getJSONObject(i); - String fail_reason = jsonObject.getString("fail_reason"); - reason.append(fail_reason+","); - } - String res = reason.toString(); - String substring = res.substring(0, res.length() - 1); - operatorAuth.setRefuseReason(substring); - operatorAuthService.updateById(operatorAuth); - // 获取运营商的管理员id - -/** - * 状态 1=审核中(AUDITING)、2=待联系人确认(CONTACT_CONFIRM), - * 3=待法人确认(LEGAL_CONFIRM)、4=审核通过(AUDIT_PASS)、 - * 5=审核失败(AUDIT_REJECT)、6=已冻结(AUDIT_FREEZE)、 - * 7=已撤回(CANCELED)、8=联系人处理中(CONTACT_PROCESSING) - */ - } - Integer operatorId = operatorAuth.getOperatorId(); - User one = userService.getOne(new QueryWrapper<User>().eq("objectId", operatorId) - .eq("objectType", 2)); - OperatorUser userId = operatorUserService.getOne(new QueryWrapper<OperatorUser>() - .eq("userId", one.getId())); - if (userId!=null){ - switch (order_status){ - case "AUDITING": - userId.setAlipayAudit(1); - break; - case "CONTACT_CONFIRM": - userId.setAlipayAudit(2); - break; - case "LEGAL_CONFIRM": - userId.setAlipayAudit(3); - break; - case "AUDIT_PASS": - userId.setAlipayAudit(4); - break; - case "AUDIT_REJECT": - userId.setAlipayAudit(5); - break; - case "AUDIT_FREEZE": - userId.setAlipayAudit(6); - break; - case "CANCELED": - userId.setAlipayAudit(7); - break; - case "CONTACT_PROCESSING": - userId.setAlipayAudit(8); - break; - } - operatorUserService.updateById(userId); - } - // 审核通过 - String qr_code = sign.getString("qr_code"); - if (qr_code!=null&& (!qr_code.equals(""))){ - // 将二维码链接保存起来 - operatorAuth.setQrCode(qr_code); - operatorAuthService.updateById(operatorAuth); - } -// if (operatorAuth.getOrderStatus().equals("AUDIT_REJECT") -// || operatorAuth.getOrderStatus().equals("AUDIT_FREEZE") -// || operatorAuth.getOrderStatus().equals("CANCELED")){ -// // 未通过审核 撤销申请单 -// AlipayClient alipayClient1 = new DefaultAlipayClient -// ("https://openapi.alipay.com/gateway.do", -// "2021004123692417","MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCq1V7akWZ/V9mr8NGW2CihIbY93M7M33LpVM5y63qEuN7yqyJV197WT6c7uHBcttY6cJLawXLihgC8KF6ZzdXWbm4n4RiigxIaz9LbSVBjYplkNgG2rg7W7dB8wrrqcwBQU0n+pFX3KWJkHRXDugqE21VCGgzySKQBkhiztmTI/z039PdWp2RTGLiL/OuwVrPjQv3He2orYIZgADWid0mtZXCEFosDkaQDTEqCfuDEuMouEiaIk/lw0ZWxiR1Fvfr82nO0r94lM/CC1wNRif2+2ESR+YystsWQPm16eRgS3wAQz2cOTP4L5VNKNzcUAgxTQK3Bj8GvqrYUUlcC7VCTAgMBAAECggEAPKmYDTUkmIOxoATb6BzKEK3P8Re/t7CBNaoPxW8pCog7YyCyCJmnX6LZV7Oe8s1aNVZUT6nyCc5b5HTRYvxcutBr/W1JOiwg+bRiw8u86A3TOmqTITOdwWShbCwaA7binaN12x6wCByB+9r4J5Cgu5zHIbnubvqsgoJGk0ppb5XbyYkikOAXPHli4PUe4GOorSuhRdq3XlGWiMwh4yt48kF4vP+2ByuDOYQU6LjGs0wn/5LpN+ReLdXTab65Cz7WYTDrTndyIrhFg7cyT5m2gtiJuEgIJ45uaaeGNIecV6JSnRsEv4YD4m+I58yhyyvw9zd0Z5qP04QNjy7OK2UeQQKBgQD/EJpaVv0RR83Z6Hp2YVrPoiMz279U5bgkBbcxgr9GR2YYE3rrHqBdqch1Uitu+g6LIC+SDtib7yG9C7EqPHB3fsfEw8NtL54gy3OFbCcH3lqFxgtrCpQ2SIXQjd8932TpzcMdD6jzyUoSraT+lgkf2MgjqFiMbNVg50lGDyWujQKBgQCrdbXTttuazdwU0pdRFCuTz42iIJSZtHFUPvmbrBy7LFQ8NTN76dqLM1RUH7gJukPc4+Ax+DfpDgHZ4nQ2KSk9FweLqKSf10kojibKpc3nkgDRtUtSTar8fZn9VKTuXK1Ho0LUkjDlHjlEwUuf/Ef+IdjzXDJ2UPWHp2YzxvNDnwKBgBWGtjAnpUX/FF1upF83Si251lS7GAO3O3o2zUYtba0lu3UOt9H+DLS67oMQQ0AjdHTDa6BdBmTqoqNMyE/zN96t4Xg2uViOqz7DTOWWwhiE6IjftPj8tJN8PWbjglK7ds3QosXiG3UvqMO4yfL+gJiieAmiXI7FZKDABEwYXSrFAoGASXVe91vKbmJwPgOTjMsleGhd9+4ZfFjQjRWF/2oXzSFK3Zi1fAtO9ICDSp9kS9afqI2AyifcXF8B8AWTYHj2EBRDyVPxZAHqeBOfDwdGVkY5T59qq9JWxWJSjTSsjOrr2ltaEJSpmh/+zTQ7YEnH1ltOBcWkYQiCiSHxKZG9O2UCgYBfBTkjktzv81SnW47d0qRwmiXrcyObmXTe5fIW9e6KaB0SnzcVvoCmm7TTk+Bm4WqNmfb5k8U6J22vdxB1TPlRksnY+VZDM0Grv/xUII9G8oVQ4+NiE5XvQ7+nc5EBJ12of6GxE7/yXZiDld62q2sFZgrFzhvvHV+IADsu/VdIEw==", -// "json","GBK", -// "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApCzq4BIE4gMdEXxIAAUbiMpSytkzp+LVLVsBtji87rFGfWUcnrr3NKftaw0WtRu+36d1nDVOWW4CmgsOPyj1GOFoTcJOR/BqyIriwyLxpuMS8qgOqGJZXi+W4Nw2AJL6iMVwY2eI8F1G10gACK2I9TNJRzHh3tMTA6ItysbGoekRDtn6Xrkh5V6cyHQjLw0Q6MJK/68XT6/LWzarDEEYrSnIevOydMY32ptAgm5fp/h08M2khCmI6CuMWKmc87dPpd2krGVTALqprAQvB74AIqO+5DE0fN4LoitOYXAtWDCEF4kHN0hQUygIEGCwtMgEVzkf92VLlCX35YtDhWd1yQIDAQAB","RSA2"); -// AlipayMerchantIndirectAuthorderCloseRequest request = new AlipayMerchantIndirectAuthorderCloseRequest(); -// request.setBizContent("{" + -// " \"order_no\":\""+operatorAuth.getOrderNo()+"\"," + -// " \"out_biz_no\":\""+operatorAuth.getOutBizNo()+"\"" + -// "}"); -// AlipayMerchantIndirectAuthorderCloseResponse response = null; -// try { -// response = alipayClient1.execute(request); -// } catch (AlipayApiException e) { -// e.printStackTrace(); -// } -// if(response.isSuccess()){ -// System.out.println("撤销申请单调用成功"); -// } else { -// System.out.println("撤销申请单调用失败"); -// } +// payMoneyUtil.getMessage(); +// List<OperatorAuthAlipay> list = operatorAuthService.list(new QueryWrapper<OperatorAuthAlipay>()); +// for (OperatorAuthAlipay operatorAuthAlipay : list) { +// System.err.println("执行定时任务时间: " + LocalDateTime.now()); +// AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", +// aliAppid, +// appPrivateKey, "json", "GBK", +// alipay_public_key, +// "RSA2"); +// AntMerchantExpandIndirectZftorderQueryRequest request = new AntMerchantExpandIndirectZftorderQueryRequest(); +// request.setBizContent("{" + +// " \"order_id\":\"" + operatorAuthAlipay.getOrderNo() + "\"," + +// " \"external_id\":\"" + operatorAuthAlipay.getOutBizNo() + "\"" + +// "}"); +// AntMerchantExpandIndirectZftorderQueryResponse response = null; +// try { +// response = alipayClient.execute(request); +// } catch (AlipayApiException e) { +// e.printStackTrace(); // } +// if (response.isSuccess()) { +// System.out.println("调用成功"); +// JSONObject json = JSONObject.parseObject(response.getBody()); +// System.err.println(json); +// JSONObject sign = json.getJSONObject("ant_merchant_expand_indirect_zftorder_query_response"); +// JSONArray orders = sign.getJSONArray("orders"); +// JSONObject order = orders.getJSONObject(0); +// // 提取订单信息 +// String reason = order.getString("reason"); +// String smid = order.getString("smid"); +// String merchantName = order.getString("merchant_name"); +// String applyTime = order.getString("apply_time"); +// String externalId = order.getString("external_id"); +// String orderId = order.getString("order_id"); +// String applyType = order.getString("apply_type"); +// String status = order.getString("status"); +// // 打印订单信息 +// System.out.println("Reason: " + reason); +// System.out.println("Merchant Name: " + merchantName); +// System.out.println("Apply Time: " + applyTime); +// System.out.println("External ID: " + externalId); +// System.out.println("Order ID: " + orderId); +// System.out.println("Apply Type: " + applyType); +// System.out.println("Status: " + status); +// } else { +// System.out.println("调用失败"); +// } +// } - } + + +// // 回查商户认证单审核状态 查询除了审核通过以外的认证单 +// List<OperatorAuthAlipay> list = operatorAuthService.list(new QueryWrapper<OperatorAuthAlipay>().ne("orderStatus", "AUDIT_PASS")); +// AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do","2021003199648333", +// "MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCXnbOiY2VkKb5ubpcwKqzmqbKotpKGA79yn2aQeZiTWhqmLdCKjVp64naGpnOQEC7hDZluOO1crWHVhIEp7XGIEVawA7mb/dBbzo4wQQYVtLX6iEZViYk/mA7G59S/lvsLVi+jkVGlx2Co8JhvkTRtCEFgUnVA9o2jKy5BIEwrusNuDjrn5X+3ZvfZJN/iV0yzhzXynzioZt/DIcdODOVPUrem8T/5ifJ6ydSKIumgquBKyQnFOj+LRt5qMioBVzLnod0S/6kKMoNVN3/qx/PHRaeHbrF7I67IpGNROg0D9C4d9xXbGhSqQciXitLVnNzWuCov4Ie5nT5VCg9RjXyVAgMBAAECggEAf5rU81lgnnqbseoWCQ4B02kD2wc+Lti8qsYJ1pLgnTP6td5dZB8wBbjQNOem35sfOX7uoVv8OkIa00/gPd9/7BtbsGySLP3j/UDNX0N60Y30k1VajOdiwklCNpor7swtog75rVrDMxmo+sb0JQI684E9NMpxsSlRcAEJvvpl4W7LkhfJZyCUNXPAAh9SOkFOeaXATueEQ57V5vpeKM2JRJy//1P1LS2c/quLRIPqaTYgVAvxfdAYQvvP0vPijxHtxJlDxPa8xBCv7D46d+HeIA6X5ZkoTKLYbe2D36utP8rqGsXw1EyrYyuq6HdEAi/I4YXvWyLsXuQTSACSp+piAQKBgQD6am94xyQ4CRiMA/T1kvPPkXD+y/1Sbr3+T1S6X4naAGdkZS+TbPaWEddd2Huml6q+C2UcGhQpupBkbk88Nbs94jOulsfF6b24nOo1xH5z/BtS0kYuYaNLhebJtzrR9gupT1Uv0q+QybWZ3hQswOK0vwpkDk9DOysFynfMyXXlwQKBgQCa/z3oZ4iYZpTLNdRhMS0u593Jq8MDemimBJGEXPvDBByyE5Ohf22UqP5MjS1euosAQSva+/HmKeEigLgjoQTo29mA1nzPe0AKN3huWbqPIOdeIOA694Nj6ooOPS8iDMjKu61wPz/rZ57bv41LsPXr0y4UsU30JWg2rzgRnGgT1QKBgH30c0VIxUr6KEKk6t1qoP/SpAdFC5Ie6am0tWVZELl6Yob47kk1EYLCTpWBghB1UQhuKtlLtMCYenBJm8kpLZke4ef7J1jBDRCCvLt2rjQgpo2t/mbt7XjbTQ5A/3EEVTFAGhUH4A7vpkxSi8tG6cEIJm3VVMD4TdeH02JKIucBAoGAA0v+kxzwqN01uQTSGackIOVJsGp44XAPHcjnF3uq10EVIyyLbVn6iLj3f8VY+7TYFA9O0X+ea5jkcwlt4UQhiJp0i+sECJ3EhPMdGqvJ7hVzFmt4mYh+QPfSK+9dO0ouUzGexM5zm5w+osn2RW/kKzn4tvP2hoTtLIyZkrZS+GkCgYAQGKe84pXggSIPwztg0aBJUC9b4fXe3PR4DFTM85lBUKYJnQGRzf6NDCD83hwJoNdnyZkztyK72LDOn2NOzPfYcfUl6MQFPovXeMWaVidRfo4ZgyFA/C1egduebaIkXE+DpGhiy7alQ4k+LxUfy6oJBT9Sq8oq7EVBEkeff3p66g==","json","GBK", +// "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmu8n/4yTHWbn7VOrNc9OsLtDL1bEQ8gC1dHkj8Wy5z0mkaOsjJRIG/28ze12M0V8jdCKuuDr5Z1OPKiqf+XO3ypguEh+mYUVMBM/cZodDFQfTY1TKLWjvQCuaqlA+QUTCK6f7T7stsgyQ1o9Jj0rXZDz6PM4QHSTzjrLIBaeqM5WIBvH+fy/X+QG5Utd+/UT0kc0JyvuKhZ65yVUd/C9VcwJJAPliRsAQNrqYterwAJ9zvw9tF11wj9W0XgJ8Ccu4x3gR1vrlLRJJo/OA97RmxPQ+5hSacWQZCUd1dwiBq+YCrKVHGTj14izRHXrLc0yBlRXo7tBOIqcy3IsvKVthQIDAQAB","RSA2"); +// for (OperatorAuthAlipay operatorAuth : list) { +// // 第三步:查询申请单审核结果 +// AlipayMerchantIndirectAuthorderQuerystatusRequest request1 = new AlipayMerchantIndirectAuthorderQuerystatusRequest(); +// request1.setBizContent("{" + +// " \"order_no\":\""+"202312011045284847"+"\"," + +// " \"out_biz_no\":\""+"83972149e3f84216ad2654a1571963f4"+"\"," + +// "}"); +// AlipayMerchantIndirectAuthorderQuerystatusResponse response1 = null; +// try { +// response1 = alipayClient.execute(request1); +// } catch (AlipayApiException e) { +// e.printStackTrace(); +// } +// if(response1.isSuccess()){ +// System.out.println("调用成功"); +// } else { +// System.out.println("调用失败"); +// } +// JSONObject json = JSONObject.parseObject(response1.getBody()); +// JSONObject sign = json.getJSONObject("alipay_merchant_indirect_authorder_querystatus_response"); +// String orderNo = sign.getString("order_no"); +// String order_status = sign.getString("order_status"); +//// operatorAuth.setOrderStatus(order_status); +// operatorAuth.setOrderNo(orderNo); +// System.err.println("审核状态:"+order_status); +// +// // 失败原因 +// JSONArray verify_list = sign.getJSONArray("verify_list"); +// StringBuilder reason = new StringBuilder(""); +// // 失败原因 +// if (verify_list!=null){ +// for (int i = 0; i < verify_list.size(); i++) { +// JSONObject jsonObject = verify_list.getJSONObject(i); +// String fail_reason = jsonObject.getString("fail_reason"); +// reason.append(fail_reason+","); +// } +// String res = reason.toString(); +// String substring = res.substring(0, res.length() - 1); +// operatorAuth.setRefuseReason(substring); +// operatorAuthService.updateById(operatorAuth); +///** +// * 状态 1=审核中(AUDITING)、2=待联系人确认(CONTACT_CONFIRM), +// * 3=待法人确认(LEGAL_CONFIRM)、4=审核通过(AUDIT_PASS)、 +// * 5=审核失败(AUDIT_REJECT)、6=已冻结(AUDIT_FREEZE)、 +// * 7=已撤回(CANCELED)、8=联系人处理中(CONTACT_PROCESSING) +// */ +// }else{ +// operatorAuth.setRefuseReason(null); +// } +// Integer operatorId = operatorAuth.getOperatorId(); +// User one = userService.getOne(new QueryWrapper<User>().eq("objectId", operatorId) +// .eq("objectType", 2)); +// OperatorUser userId = operatorUserService.getOne(new QueryWrapper<OperatorUser>() +// .eq("userId", one.getId())); +//// if (userId!=null){ +//// switch (order_status){ +//// case "AUDITING": +////// operatorAuth.setOrderStatus("AUDITING"); +//// userId.setAlipayAudit(1); +//// break; +//// case "CONTACT_CONFIRM": +//// operatorAuth.setOrderStatus("CONTACT_CONFIRM"); +//// userId.setAlipayAudit(2); +//// break; +//// case "LEGAL_CONFIRM": +//// operatorAuth.setOrderStatus("LEGAL_CONFIRM"); +//// userId.setAlipayAudit(3); +//// break; +//// case "AUDIT_PASS": +//// operatorAuth.setOrderStatus("AUDIT_PASS"); +//// userId.setAlipayAudit(4); +//// break; +//// case "AUDIT_REJECT": +//// operatorAuth.setOrderStatus("AUDIT_REJECT"); +//// userId.setAlipayAudit(5); +//// break; +//// case "AUDIT_FREEZE": +//// operatorAuth.setOrderStatus("AUDIT_FREEZE"); +//// userId.setAlipayAudit(6); +//// break; +//// case "CANCELED": +//// operatorAuth.setOrderStatus("CANCELED"); +//// userId.setAlipayAudit(7); +//// break; +//// case "CONTACT_PROCESSING": +//// operatorAuth.setOrderStatus("CONTACT_PROCESSING"); +//// userId.setAlipayAudit(8); +//// break; +//// } +//// operatorUserService.updateById(userId); +//// } +// // 审核通过 +// String qr_code = sign.getString("qr_code"); +//// operatorAuth.setQrCode(qr_code); +// operatorAuthService.updateById(operatorAuth); +// System.err.println("二维码"+qr_code); +//// if (operatorAuth.getOrderStatus().equals("AUDIT_REJECT") +//// || operatorAuth.getOrderStatus().equals("AUDIT_FREEZE") +//// || operatorAuth.getOrderStatus().equals("CANCELED")){ +//// // 未通过审核 撤销申请单 +//// AlipayClient alipayClient1 = new DefaultAlipayClient +//// ("https://openapi.alipay.com/gateway.do", +//// "2021004123692417","MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCq1V7akWZ/V9mr8NGW2CihIbY93M7M33LpVM5y63qEuN7yqyJV197WT6c7uHBcttY6cJLawXLihgC8KF6ZzdXWbm4n4RiigxIaz9LbSVBjYplkNgG2rg7W7dB8wrrqcwBQU0n+pFX3KWJkHRXDugqE21VCGgzySKQBkhiztmTI/z039PdWp2RTGLiL/OuwVrPjQv3He2orYIZgADWid0mtZXCEFosDkaQDTEqCfuDEuMouEiaIk/lw0ZWxiR1Fvfr82nO0r94lM/CC1wNRif2+2ESR+YystsWQPm16eRgS3wAQz2cOTP4L5VNKNzcUAgxTQK3Bj8GvqrYUUlcC7VCTAgMBAAECggEAPKmYDTUkmIOxoATb6BzKEK3P8Re/t7CBNaoPxW8pCog7YyCyCJmnX6LZV7Oe8s1aNVZUT6nyCc5b5HTRYvxcutBr/W1JOiwg+bRiw8u86A3TOmqTITOdwWShbCwaA7binaN12x6wCByB+9r4J5Cgu5zHIbnubvqsgoJGk0ppb5XbyYkikOAXPHli4PUe4GOorSuhRdq3XlGWiMwh4yt48kF4vP+2ByuDOYQU6LjGs0wn/5LpN+ReLdXTab65Cz7WYTDrTndyIrhFg7cyT5m2gtiJuEgIJ45uaaeGNIecV6JSnRsEv4YD4m+I58yhyyvw9zd0Z5qP04QNjy7OK2UeQQKBgQD/EJpaVv0RR83Z6Hp2YVrPoiMz279U5bgkBbcxgr9GR2YYE3rrHqBdqch1Uitu+g6LIC+SDtib7yG9C7EqPHB3fsfEw8NtL54gy3OFbCcH3lqFxgtrCpQ2SIXQjd8932TpzcMdD6jzyUoSraT+lgkf2MgjqFiMbNVg50lGDyWujQKBgQCrdbXTttuazdwU0pdRFCuTz42iIJSZtHFUPvmbrBy7LFQ8NTN76dqLM1RUH7gJukPc4+Ax+DfpDgHZ4nQ2KSk9FweLqKSf10kojibKpc3nkgDRtUtSTar8fZn9VKTuXK1Ho0LUkjDlHjlEwUuf/Ef+IdjzXDJ2UPWHp2YzxvNDnwKBgBWGtjAnpUX/FF1upF83Si251lS7GAO3O3o2zUYtba0lu3UOt9H+DLS67oMQQ0AjdHTDa6BdBmTqoqNMyE/zN96t4Xg2uViOqz7DTOWWwhiE6IjftPj8tJN8PWbjglK7ds3QosXiG3UvqMO4yfL+gJiieAmiXI7FZKDABEwYXSrFAoGASXVe91vKbmJwPgOTjMsleGhd9+4ZfFjQjRWF/2oXzSFK3Zi1fAtO9ICDSp9kS9afqI2AyifcXF8B8AWTYHj2EBRDyVPxZAHqeBOfDwdGVkY5T59qq9JWxWJSjTSsjOrr2ltaEJSpmh/+zTQ7YEnH1ltOBcWkYQiCiSHxKZG9O2UCgYBfBTkjktzv81SnW47d0qRwmiXrcyObmXTe5fIW9e6KaB0SnzcVvoCmm7TTk+Bm4WqNmfb5k8U6J22vdxB1TPlRksnY+VZDM0Grv/xUII9G8oVQ4+NiE5XvQ7+nc5EBJ12of6GxE7/yXZiDld62q2sFZgrFzhvvHV+IADsu/VdIEw==", +//// "json","GBK", +//// "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApCzq4BIE4gMdEXxIAAUbiMpSytkzp+LVLVsBtji87rFGfWUcnrr3NKftaw0WtRu+36d1nDVOWW4CmgsOPyj1GOFoTcJOR/BqyIriwyLxpuMS8qgOqGJZXi+W4Nw2AJL6iMVwY2eI8F1G10gACK2I9TNJRzHh3tMTA6ItysbGoekRDtn6Xrkh5V6cyHQjLw0Q6MJK/68XT6/LWzarDEEYrSnIevOydMY32ptAgm5fp/h08M2khCmI6CuMWKmc87dPpd2krGVTALqprAQvB74AIqO+5DE0fN4LoitOYXAtWDCEF4kHN0hQUygIEGCwtMgEVzkf92VLlCX35YtDhWd1yQIDAQAB","RSA2"); +//// AlipayMerchantIndirectAuthorderCloseRequest request = new AlipayMerchantIndirectAuthorderCloseRequest(); +//// request.setBizContent("{" + +//// " \"order_no\":\""+operatorAuth.getOrderNo()+"\"," + +//// " \"out_biz_no\":\""+operatorAuth.getOutBizNo()+"\"" + +//// "}"); +//// AlipayMerchantIndirectAuthorderCloseResponse response = null; +//// try { +//// response = alipayClient1.execute(request); +//// } catch (AlipayApiException e) { +//// e.printStackTrace(); +//// } +//// if(response.isSuccess()){ +//// System.out.println("撤销申请单调用成功"); +//// } else { +//// System.out.println("撤销申请单调用失败"); +//// } +//// } + +// } } + public static void main(String[] args) { + String s = "{\"sign\":\"Q8wa/EiKqeRiatW3mDhPA3Ia1jYXK6c8CxlhTQb0o9XHui16UURb7oiqnoS+P22q3a3POjmuhl/Rwm6MBGzp8RNcXwoWTExNq29OR/jZ6SU9HWiOUewv0/kGgNj4WHpbGbVqaoaW3/Q6w0IhCSRT3GAsULHPBeWQ2HyrScl549y/mwsI6bX132S9dHJ5O7we4Oho0pDWrQfE+daP4p+y1HVGeD6WGBq5HjXIuqNmE/ZrRFc/R+8baMwRQgECeohKhpPs9Ov1xuzeq/wuk/NuDG9YbE/+cKs/Kkg3fYIPM1CsIwvam3wP2iYhTaUlEYidt++EwJ2QVIB3OD5So5aKdg==\",\"ant_merchant_expand_indirect_zftorder_query_response\":{\"msg\":\"Success\",\"code\":\"10000\",\"orders\":[{\"reason\":\"公安网校验失败\",\"merchant_name\":\"成都玩湃生活体育发展有限公司\",\"apply_time\":\"2023-12-20 18:36:26\",\"external_id\":\"273c5a8ad59f4e5397253045af1de8fe\",\"order_id\":\"2023122000502000000005299341\",\"apply_type\":\"ZHIFUTONG_CREATE\",\"status\":\"-1\"}]}}"; + + + } } \ No newline at end of file diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/OperatorController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/OperatorController.java index 6e7ae25..359427c 100644 --- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/OperatorController.java +++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/OperatorController.java @@ -9,9 +9,11 @@ import com.alipay.api.request.AlipayMerchantIndirectAuthorderCreateRequest; import com.alipay.api.request.AlipayMerchantIndirectAuthorderQuerystatusRequest; import com.alipay.api.request.AntMerchantExpandIndirectImageUploadRequest; +import com.alipay.api.request.AntMerchantExpandIndirectZftCreateRequest; import com.alipay.api.response.AlipayMerchantIndirectAuthorderCreateResponse; import com.alipay.api.response.AlipayMerchantIndirectAuthorderQuerystatusResponse; import com.alipay.api.response.AntMerchantExpandIndirectImageUploadResponse; +import com.alipay.api.response.AntMerchantExpandIndirectZftCreateResponse; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -24,17 +26,22 @@ import com.dsh.guns.modular.system.model.*; import com.dsh.guns.modular.system.service.*; +import com.dsh.guns.modular.system.util.PayMoneyUtil; import com.dsh.guns.modular.system.util.ResultUtil; +import com.github.binarywang.wxpay.service.BankService; import com.mysql.cj.x.protobuf.MysqlxExpr; import org.apache.poi.ss.formula.functions.T; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; +import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import java.util.stream.Collectors; @@ -51,17 +58,21 @@ @Autowired private TOperatorCityService operatorCityService; @Autowired + private IOperatorAuthService operatorAuthService; + @Autowired private IOperatorUserService operatorUserService; @Autowired private IUserService userService; @Autowired private ICityService cityService; @Autowired - private IOperatorAuthService operatorAuthService; + private PayMoneyUtil payMoneyUtil; + @Autowired private IStoreService storeService; - - + private String appPrivateKey = "MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCi5i9nW/hGLJ3A06cZxTQdviFC7THpdSihoTYGLr9q006hu0V26ecBMY/o4w5bvIX0Ok/yofmZsVcCJpAPvbXL/uqVrIjnRRxXiaeBFThlxoBUTdunvbUSDYfzlEhJr5NvUKI6H6lz2niXlQGx4qy8Hau4ccWit9kM8jwUvsBVQoFgJA+xrjMvooA7YLopQtpOD+UJr5thApTSf1xrnr1W12yolTLEH15JmNV372cqXrYUuqnY0QsaPtxeqJUGAOcGdVLllQ7easEznP8DFBvDdHATcmp2SHNQDUEWN6MCVPbMgY06NQVqAXxqjTAYSVh+6TRu6bofPmpYC3TZB003AgMBAAECggEBAJAcR2+PA3NBYUYHeFrqBRMS8uX8ZR19kjZ7IgoSLTFaQsP9opRylPSPXhrPVBKAE5leRQAHn4MCSlESwHvMfxo7KFjFTFAc6dffZZpipYQUOc9bGampwJh58/3e/pyBgVMG6J23CPf/HJQtNFSkjd/V9+ayb/9l2dUEL3bC0fAZ/dbx8HsxdLw8wn3fLlWLj68hOMqa2deCZe3JdSVsPbeWqkh56FFsMLug0Nd+Ar4TgRl9/jnhXF0JWiD0LmPUYLhboY7EfUBzN4w1iYbDi1P+3zvoOYsiVKAXox9GMhQ2VzOO2UcSTuizSza2e98mGpabl/GpKmCz+RDFjtkX6eECgYEA2MyCij65eO3aGIm3FUe93DULRBYTfX8qJQSJq2WOWA3mmQlEW6L3O2B5/lG2h+8WmN6iLEs9eHpgycGYp7vAqgrANEn16ACVcuyx0scFtrZfZ+kmHMzFfiUWxJjVYk/6YngsGVBLdw6ueM42C8TTP67X9tU5TdVGoGWuqEj4W98CgYEAwFqwprXOch5Pqk/RPbb49r0Ou03K/UbciWnWWKzUhFFNS8MdlQPoDvQZbMwHLeWsa2VhaKITK3x5biLQb3U+0GLOn6lTvEyrEUH+ucREyLgVYTRAvwBPtnvlrzpyxPk2HnslQjju8WrvvLLBMKWUjlTrTOzhaHT21gz3pHMiOakCgYEAhLmfaXdBITGshb054sNLDtdCkGpbgEcrzAHdLps769iGxkYQHXHFngpQZUwtTUcoNGqIKknd1jZFrv7gsD+XkgKG7PwimehRlkwmCX5ilxtLiVgJRzRt6+5U5AMVD90a0tHzXYP0z2yjj73fBJF5KtGl0a10KZxaYrQdm1UhB00CgYBZZgzx/k9rtHC8LAqIj1CYhHejT92G53c6Gkl3vyOqN4sgKhfGmSEySfrDGPRBPZxr8ZtbIPCd5mUdberH0osWGMYFaJI1UsCy7aQwvGpniz7MhZeN7dweaOjwDs8mgtjHQ96mL4XGCDhR0BZ/wIURvZ/6iaGdhbbu9unlsWj3uQKBgQCmZYdsbbZkd3ev6f8rwyvMz+DrCQyYpY44cegBYuJgrZiQnL2fJioeN7ixX0UM48SfwsZEIrzshP/LGAwnc2MdjxKUl4jLN8SEe0NAjXOnz9Zaw740+aOmLpXcLWdP4uM2gIhWsvW1tEkQZCXmm7c9s/RsU8Pmzv+YL3+fSijOzA==";//支付宝开发者应用私钥 + private String alipay_public_key = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmu8n/4yTHWbn7VOrNc9OsLtDL1bEQ8gC1dHkj8Wy5z0mkaOsjJRIG/28ze12M0V8jdCKuuDr5Z1OPKiqf+XO3ypguEh+mYUVMBM/cZodDFQfTY1TKLWjvQCuaqlA+QUTCK6f7T7stsgyQ1o9Jj0rXZDz6PM4QHSTzjrLIBaeqM5WIBvH+fy/X+QG5Utd+/UT0kc0JyvuKhZ65yVUd/C9VcwJJAPliRsAQNrqYterwAJ9zvw9tF11wj9W0XgJ8Ccu4x3gR1vrlLRJJo/OA97RmxPQ+5hSacWQZCUd1dwiBq+YCrKVHGTj14izRHXrLc0yBlRXo7tBOIqcy3IsvKVthQIDAQAB";//支付宝支付公钥 + private String aliAppid = "2021004105665036";//支付宝appid /** * 根据运营商id查询所有门店 */ @@ -69,6 +80,7 @@ @ResponseBody public List<TStore> getStores(Integer id) { + payMoneyUtil.getMessage(); return storeService.list(new QueryWrapper<TStore>() .eq("operatorId",id) .ne("state",3)); @@ -149,6 +161,7 @@ page.setRecords(list); return super.packForBT(page); } + /** * 跳转运营商商户去认证页面 */ @@ -159,63 +172,170 @@ User byId = userService.getById(data.getUserId()); model.addAttribute("user",byId); List<TCity> list = cityService.list(new LambdaQueryWrapper<TCity>().eq(TCity::getParentId, 0)); - model.addAttribute("provinceList",list); + model.addAttribute("list",list); model.addAttribute("data",data); - OperatorAuth info = operatorAuthService.getOne(new QueryWrapper<OperatorAuth>().eq("operatorId", id)); + OperatorAuthAlipay info = operatorAuthService.getOne(new QueryWrapper<OperatorAuthAlipay>().eq("operatorId", id)); model.addAttribute("item",info); + if (info==null){ - OperatorAuth operatorAuth = new OperatorAuth(); + OperatorAuthAlipay operatorAuth = new OperatorAuthAlipay(); model.addAttribute("item",operatorAuth); model.addAttribute("bodyType",0); model.addAttribute("code",null); model.addAttribute("reasons",null); // 0不显示二维码 model.addAttribute("type",0); - }else{ - if (info.getOrderStatus().equals("AUDIT_PASS")){ - // 通过才展示二维码 - model.addAttribute("type",1); - }else{ - model.addAttribute("type",0); - } - model.addAttribute("code",info.getQrCode()); - model.addAttribute("item",info); model.addAttribute("bodyType",info.getBodyType()); - if (info.getRefuseReason()!=null && (!info.getRefuseReason().equals(""))){ - model.addAttribute("reasons",info.getRefuseReason()); - }else{ - model.addAttribute("reasons",null); - } + model.addAttribute("accountType",info.getAccountType()); + model.addAttribute("useType",info.getUseType()); + model.addAttribute("cardType",info.getCardType()); + model.addAttribute("reasons",info.getRefuseReason()); +// TCity one = cityService.getOne(new LambdaQueryWrapper<TCity>().eq(TCity::getCode, info.getCityCode())); +// List<TCity> district = cityService.list(new QueryWrapper<TCity>().eq("parent_id", one.getId())); +// model.addAttribute("district",district); +// if (info.getOrderStatus().equals("AUDIT_PASS")||info.getOrderStatus().equals("LEGAL_CONFIRM")||info.getOrderStatus().equals("CONTACT_CONFIRM")){ +// // 通过才展示二维码 +// model.addAttribute("type",1); +// }else{ +// model.addAttribute("type",0); +// } +// model.addAttribute("code",info.getQrCode()); +// model.addAttribute("item",info); +// model.addAttribute("bodyType",info.getBodyType()); +// if (info.getRefuseReason()!=null && (!info.getRefuseReason().equals(""))){ +// model.addAttribute("reasons",info.getRefuseReason()); +// }else{ +// model.addAttribute("reasons",null); +// } } return PREFIX + "OperatorUser_proportionAuth.html"; } + /** + * 跳转运营商商户去认证页面 详情页面 + */ + @RequestMapping("/proportionAuth1/{id}") + public String proportionAuth1(Model model,@PathVariable("id") Integer id) { + model.addAttribute("id",id); + TOperator data = operatorService.getById(id); + User byId = userService.getById(data.getUserId()); + model.addAttribute("user",byId); + model.addAttribute("data",data); + OperatorAuthAlipay info = operatorAuthService.getOne(new QueryWrapper<OperatorAuthAlipay>() + .eq("operatorId", id)); + model.addAttribute("item",info); + List<TCity> list1 = cityService.list(new LambdaQueryWrapper<TCity>().eq(TCity::getParentId, 0)); + model.addAttribute("list1",list1); + if (StringUtils.hasLength(info.getProvince())){ + // 获取银行开户省 + List<TCity> list4 = cityService.list(new LambdaQueryWrapper<TCity>().eq(TCity::getParentId, 0)); + // 获取银行开户市 + TCity city = cityService.getOne(new QueryWrapper<TCity>().eq("code", info.getProvinceCode())); + List<TCity> list5 = cityService.list(new LambdaQueryWrapper<TCity>().eq(TCity::getParentId, city.getId())); + model.addAttribute("list4",list4); + model.addAttribute("list5",list5); + }else{ + List<TCity> list6 = cityService.list(new LambdaQueryWrapper<TCity>().eq(TCity::getParentId, 0)); + model.addAttribute("list4",list6); + } + + + + model.addAttribute("bodyType",info.getBodyType()); + model.addAttribute("accountType",info.getAccountType()); + model.addAttribute("useType",info.getUseType()); + model.addAttribute("cardType",info.getCardType()); + model.addAttribute("reasons",info.getRefuseReason()); + + + +// TCity one = cityService.getOne(new LambdaQueryWrapper<TCity>().eq(TCity::getCode, info.getCityCode())); +// List<TCity> district = cityService.list(new QueryWrapper<TCity>().eq("parent_id", one.getId())); +// model.addAttribute("district",district); +// if (info.getOrderStatus().equals("AUDIT_PASS")||info.getOrderStatus().equals("LEGAL_CONFIRM")||info.getOrderStatus().equals("CONTACT_CONFIRM")){ +// // 通过才展示二维码 +// model.addAttribute("type",1); +// }else{ +// model.addAttribute("type",0); +// } +// model.addAttribute("code",info.getQrCode()); +// model.addAttribute("item",info); +// model.addAttribute("bodyType",info.getBodyType()); +// if (info.getRefuseReason()!=null && (!info.getRefuseReason().equals(""))){ +// model.addAttribute("reasons",info.getRefuseReason()); +// }else{ +// model.addAttribute("reasons",null); +// } + + return PREFIX + "OperatorUser_proportionAuth_info.html"; + } + /** + * 根据所选市 获取区 + */ + @RequestMapping(value = "/getDistrict") + @ResponseBody + public Object onChange(String cityCode) { + try { + TCity one = cityService.getOne(new LambdaQueryWrapper<TCity>().eq(TCity::getCode, cityCode)); + List<TCity> parent_id = cityService.list(new QueryWrapper<TCity>().eq("parent_id", one.getId())); + return parent_id; + }catch (Exception e){ + e.printStackTrace(); + return ERROR; + } + } + public static void main(String[] args) { + String bankName = "中国工商银行"; // 要转换为简写的银行名称 + + Pattern pattern = Pattern.compile("([\\u4e00-\\u9fa5]+)(?=\\s+[A-Za-z]+$)"); + Matcher matcher = pattern.matcher(bankName); + if (matcher.find()) { + System.out.println(matcher.group()); // 输出结果:"工商银行" -> "ICBC" + } else { + System.out.println("无法识别该银行名称!"); + } + } /** * 支付宝商户认证提交 */ @RequestMapping(value = "/auth") @ResponseBody - public Object auth(String beneficiaryEnd,String businessEnd,String legalEnd, String name,String phone,String number - ,Integer operatorId,String bodyType,Integer type,String businessName,String businessNumber, - String legalRepresentative,String registerAddress,String businessTerm,String businessPicture, - String legalPerson,String legalNumber,String legalPhone,String legalEmail,String legalTerm, - String legalAddress,String legalFront,String legalBack,Integer accountType,String bank, - String accountName,String province,String provinceCode,String city,String cityCode, - String bankName,String bankNumber,String isBeneficiary,String beneficiary,String beneficiaryPhone, - String beneficiaryNumber,String beneficiaryAddress,String beneficiaryTerm,String beneficiaryFront,String beneficiaryBack, - String remark) { + public Object auth(Integer operatorId,String bodyType,String businessName,String aliasName,String businessNumber, + String license,String name,String phone,String shopProvinceCode,String shopProvince,String shopCityCode, + String shopCity, String shopDistrictCode,String shopDistrict,String registerAddress,String legalPerson, + String leagleNumber,String legalFront,String legalBack,String accountType,String alipayAccount, + String bankCard,String useType,String cardType,String bankName,String bankNameTwo, + String accountName,String provinceCode,String province,String cityCode,String city,String zfbAccount, + String iqImage) { UUID uuid = UUID.randomUUID(); - OperatorAuth data = operatorAuthService.getOne(new QueryWrapper<OperatorAuth>().eq("operatorId", operatorId)); - OperatorAuth operatorAuth = new OperatorAuth(); + // 通过运营商id查询 + TOperator byId = operatorService.getById(operatorId); + Integer userId1 = byId.getUserId(); + OperatorUser userId2 = operatorUserService.getOne(new QueryWrapper<OperatorUser>() + .eq("userId", userId1)); + // 0未认证 1待审核 2通过 3驳回 + userId2.setAlipayAudit(1); + operatorUserService.updateById(userId2); + OperatorAuthAlipay data = operatorAuthService.getOne(new QueryWrapper<OperatorAuthAlipay>().eq("operatorId", operatorId)); + String group="ABC"; +// if(StringUtils.hasLength(bankName)){ +// Pattern pattern = Pattern.compile(".*[\\u4e00-\\u9fa5]+"); // 只保留汉字部分 +// Matcher matcher = pattern.matcher(bankName); +// group = matcher.group(); +// if (matcher.find()) { +// System.out.println("银行名称简写为:" + matcher.group()); +// } else { +// System.out.println("无法获取到银行名称简写!"); +// return 5007; +// } +// } + + OperatorAuthAlipay operatorAuth = new OperatorAuthAlipay(); if (data!=null){ operatorAuth.setId(data.getId()); - if(businessPicture==null || businessPicture.equals("")){ - operatorAuth.setBusinessPicture(data.getBusinessPicture()); - businessPicture = data.getBusinessPicture(); - } if(legalFront==null || legalFront.equals("")){ legalFront = data.getLegalFront(); operatorAuth.setLegalFront(data.getLegalFront()); @@ -224,16 +344,21 @@ legalBack = data.getLegalBack(); operatorAuth.setLegalBack(data.getLegalBack()); } - if(beneficiaryFront==null || beneficiaryFront.equals("")){ - beneficiaryFront = data.getBeneficiaryFront(); - operatorAuth.setBeneficiaryFront(data.getBeneficiaryFront()); + if(iqImage==null || iqImage.equals("")){ + iqImage = data.getIqImage(); + operatorAuth.setIqImage(data.getIqImage()); } - if(beneficiaryBack==null || beneficiaryBack.equals("")){ - beneficiaryBack = data.getBeneficiaryBack(); - operatorAuth.setBeneficiaryBack(data.getBeneficiaryBack()); + + if(license==null || license.equals("")){ + license = data.getCertImage(); + operatorAuth.setCertImage(data.getCertImage()); } }else{ - if(businessPicture==null || businessPicture.equals("")){ + operatorAuth.setLegalFront(legalFront); + operatorAuth.setLegalBack(legalBack); + operatorAuth.setIqImage(iqImage); + operatorAuth.setCertImage(license); + if(license==null || license.equals("")){ // 未上传营业执照 return 5001; } @@ -245,196 +370,173 @@ // 未上传法人身份证背面照 return 5003; } - if (businessPicture!=null && businessPicture.equals("ENTERPRISE")){ - if(beneficiaryFront==null || beneficiaryFront.equals("")){ - // 未上传受益人身份证正面照 - return 5004; - } - if(beneficiaryBack==null || beneficiaryBack.equals("")){ - // 未上传受益人身份证背面照 - return 5005; - } - } } String numericUUID = uuid.toString().replaceAll("-", ""); + operatorAuth.setOutBizNo(numericUUID); + operatorAuth.setOperatorId(operatorId); + operatorAuth.setRegisterAddress(registerAddress); + operatorAuth.setAliasName(aliasName); + operatorAuth.setBodyType(bodyType); operatorAuth.setName(name); operatorAuth.setPhone(phone); - operatorAuth.setNumber(number); - operatorAuth.setBusinessEnd(businessEnd); - operatorAuth.setLegalEnd(legalEnd); - operatorAuth.setBeneficiaryEnd(beneficiaryEnd); - operatorAuth.setOperatorId(operatorId); - operatorAuth.setBodyType(bodyType); - operatorAuth.setType(type); operatorAuth.setBusinessName(businessName); operatorAuth.setBusinessNumber(businessNumber); - operatorAuth.setLegalRepresentative(legalRepresentative); - operatorAuth.setRegisterAddress(registerAddress); - operatorAuth.setBusinessTerm(businessTerm); - operatorAuth.setOutBizNo(numericUUID); - operatorAuth.setBusinessPicture(businessPicture); + operatorAuth.setCertImage(license); operatorAuth.setLegalPerson(legalPerson); - operatorAuth.setLeagleNumber(legalNumber); - operatorAuth.setLegalPhone(legalPhone); - operatorAuth.setLegalEmail(legalEmail); - operatorAuth.setLegalTerm(legalTerm); - operatorAuth.setLegalAddress(legalAddress); operatorAuth.setLegalFront(legalFront); operatorAuth.setLegalBack(legalBack); + operatorAuth.setLeagleNumber(leagleNumber); operatorAuth.setAccountType(accountType); - operatorAuth.setBank(bank); + operatorAuth.setBankName(bankName); operatorAuth.setAccountName(accountName); + operatorAuth.setBankCard(bankCard); operatorAuth.setProvince(province); operatorAuth.setProvinceCode(provinceCode); operatorAuth.setCity(city); operatorAuth.setCityCode(cityCode); - operatorAuth.setBankName(bankName); - operatorAuth.setBankNumber(bankNumber); + operatorAuth.setShopCity(shopCity); + operatorAuth.setShopProvince(shopProvince); + operatorAuth.setShopProvinceCode(shopProvinceCode); + operatorAuth.setShopCityCode(shopCityCode); + operatorAuth.setProvince(province); + operatorAuth.setProvinceCode(provinceCode); + operatorAuth.setShopDistrict(shopDistrict); + operatorAuth.setShopDistrictCode(shopDistrictCode); + operatorAuth.setAlipayAccount(alipayAccount); + operatorAuth.setUseType(useType); + operatorAuth.setCardType(cardType); + operatorAuth.setBankNameTwo(bankNameTwo); operatorAuth.setAuditState(0); - operatorAuth.setIsBeneficiary(isBeneficiary); - operatorAuth.setBeneficiary(beneficiary); - operatorAuth.setBeneficiaryNumber(beneficiaryNumber); - operatorAuth.setBeneficiaryAddress(beneficiaryAddress); - operatorAuth.setBeneficiaryTerm(beneficiaryTerm); - operatorAuth.setBeneficiaryFront(beneficiaryFront); - operatorAuth.setBeneficiaryBack(beneficiaryBack); operatorAuth.setRefuseReason(""); - operatorAuth.setRemark(remark); - - + operatorAuth.setZfbAccount(zfbAccount); // 将图片上传至阿里存储 // 营业执照 - String string = uploadImg(businessPicture).toString(); + String string = uploadImg(license).toString(); // 法人身份证正面照 legalFront = uploadImg(legalFront).toString(); // 法人身份证背面照 legalBack = uploadImg(legalBack).toString(); - - if (bodyType.equals("ENTERPRISE")){ - // 受益人身份证正面照 - beneficiaryFront=uploadImg(beneficiaryFront).toString(); - // 受益人身份证背面照 - beneficiaryBack=uploadImg(beneficiaryBack).toString(); - } - - - //第二步:提交申请单 - AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do","2021003199648333", - "MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCXnbOiY2VkKb5ubpcwKqzmqbKotpKGA79yn2aQeZiTWhqmLdCKjVp64naGpnOQEC7hDZluOO1crWHVhIEp7XGIEVawA7mb/dBbzo4wQQYVtLX6iEZViYk/mA7G59S/lvsLVi+jkVGlx2Co8JhvkTRtCEFgUnVA9o2jKy5BIEwrusNuDjrn5X+3ZvfZJN/iV0yzhzXynzioZt/DIcdODOVPUrem8T/5ifJ6ydSKIumgquBKyQnFOj+LRt5qMioBVzLnod0S/6kKMoNVN3/qx/PHRaeHbrF7I67IpGNROg0D9C4d9xXbGhSqQciXitLVnNzWuCov4Ie5nT5VCg9RjXyVAgMBAAECggEAf5rU81lgnnqbseoWCQ4B02kD2wc+Lti8qsYJ1pLgnTP6td5dZB8wBbjQNOem35sfOX7uoVv8OkIa00/gPd9/7BtbsGySLP3j/UDNX0N60Y30k1VajOdiwklCNpor7swtog75rVrDMxmo+sb0JQI684E9NMpxsSlRcAEJvvpl4W7LkhfJZyCUNXPAAh9SOkFOeaXATueEQ57V5vpeKM2JRJy//1P1LS2c/quLRIPqaTYgVAvxfdAYQvvP0vPijxHtxJlDxPa8xBCv7D46d+HeIA6X5ZkoTKLYbe2D36utP8rqGsXw1EyrYyuq6HdEAi/I4YXvWyLsXuQTSACSp+piAQKBgQD6am94xyQ4CRiMA/T1kvPPkXD+y/1Sbr3+T1S6X4naAGdkZS+TbPaWEddd2Huml6q+C2UcGhQpupBkbk88Nbs94jOulsfF6b24nOo1xH5z/BtS0kYuYaNLhebJtzrR9gupT1Uv0q+QybWZ3hQswOK0vwpkDk9DOysFynfMyXXlwQKBgQCa/z3oZ4iYZpTLNdRhMS0u593Jq8MDemimBJGEXPvDBByyE5Ohf22UqP5MjS1euosAQSva+/HmKeEigLgjoQTo29mA1nzPe0AKN3huWbqPIOdeIOA694Nj6ooOPS8iDMjKu61wPz/rZ57bv41LsPXr0y4UsU30JWg2rzgRnGgT1QKBgH30c0VIxUr6KEKk6t1qoP/SpAdFC5Ie6am0tWVZELl6Yob47kk1EYLCTpWBghB1UQhuKtlLtMCYenBJm8kpLZke4ef7J1jBDRCCvLt2rjQgpo2t/mbt7XjbTQ5A/3EEVTFAGhUH4A7vpkxSi8tG6cEIJm3VVMD4TdeH02JKIucBAoGAA0v+kxzwqN01uQTSGackIOVJsGp44XAPHcjnF3uq10EVIyyLbVn6iLj3f8VY+7TYFA9O0X+ea5jkcwlt4UQhiJp0i+sECJ3EhPMdGqvJ7hVzFmt4mYh+QPfSK+9dO0ouUzGexM5zm5w+osn2RW/kKzn4tvP2hoTtLIyZkrZS+GkCgYAQGKe84pXggSIPwztg0aBJUC9b4fXe3PR4DFTM85lBUKYJnQGRzf6NDCD83hwJoNdnyZkztyK72LDOn2NOzPfYcfUl6MQFPovXeMWaVidRfo4ZgyFA/C1egduebaIkXE+DpGhiy7alQ4k+LxUfy6oJBT9Sq8oq7EVBEkeff3p66g==","json","GBK", - "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmu8n/4yTHWbn7VOrNc9OsLtDL1bEQ8gC1dHkj8Wy5z0mkaOsjJRIG/28ze12M0V8jdCKuuDr5Z1OPKiqf+XO3ypguEh+mYUVMBM/cZodDFQfTY1TKLWjvQCuaqlA+QUTCK6f7T7stsgyQ1o9Jj0rXZDz6PM4QHSTzjrLIBaeqM5WIBvH+fy/X+QG5Utd+/UT0kc0JyvuKhZ65yVUd/C9VcwJJAPliRsAQNrqYterwAJ9zvw9tF11wj9W0XgJ8Ccu4x3gR1vrlLRJJo/OA97RmxPQ+5hSacWQZCUd1dwiBq+YCrKVHGTj14izRHXrLc0yBlRXo7tBOIqcy3IsvKVthQIDAQAB","RSA2"); - AlipayMerchantIndirectAuthorderCreateRequest request = new AlipayMerchantIndirectAuthorderCreateRequest(); + operatorAuthService.saveOrUpdate(operatorAuth); + AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", + aliAppid, + appPrivateKey, + "json","GBK", + alipay_public_key, + "RSA2"); + AntMerchantExpandIndirectZftCreateRequest request = new AntMerchantExpandIndirectZftCreateRequest(); String param = "{" + - " \"out_biz_no\":\""+uuid+"\"," + - " \"contact_person_info\":{" + - " \"contact_name\":\""+name+"\"," + - " \"contact_phone_no\":\""+phone+"\"," + - " \"contact_card_no\":\""+number+"\"," + - " \"contact_cert_type\":\"RESIDENT\"" + - " }," + - " \"auth_identity_info\":{" + - " \"identity_type\":\""+bodyType+"\"," + - " \"is_financial_org\":false," + - " \"certificate_type\":\"BUSINESS_CERT\"," + - " \"certificate_info\":{" + - " \"cert_no\":\""+businessNumber+"\"," + - " \"cert_image\":\""+string+"\"," + - " \"merchant_name\":\""+businessName+"\"," + - " \"legal_person_name\":\""+legalRepresentative+"\"," + - " \"register_address\":\""+registerAddress+"\"," + - " \"effect_time\":\""+businessTerm+"\"," + - " \"expire_time\":\""+businessEnd+"\"" + - " }," + - " }," + - " \"legal_person_info\":{" + - " \"card_type\":\"RESIDENT\"," + - " \"person_name\":\""+legalRepresentative+"\"," + - " \"card_no\":\""+legalNumber+"\"," + - " \"effect_time\":\""+legalTerm+"\"," + - " \"expire_time\":\""+legalEnd+"\"," + - " \"card_front_img\":\""+legalFront+"\"," + - " \"card_back_img\":\""+legalBack+"\"," + - " \"is_benefit_person\":"+isBeneficiary+"" + - " },"; - String bene = " \"benefit_person_info\":{" + - " \"person_name\":\""+beneficiary+"\"," + - " \"card_no\":\""+beneficiaryNumber+"\"," + - " \"card_type\":\"RESIDENT\"," + - " \"effect_time\":\""+beneficiaryTerm+"\"," + - " \"expire_time\":\""+beneficiaryEnd+"\"," + - " \"card_front_img\":\""+beneficiaryFront+"\"," + - " \"card_back_img\":\""+beneficiaryBack+"\"" + - " },"; - if (bodyType.equals("ENTERPRISE")){ - request.setBizContent(param - + bene+ - "}"); - }else{ - request.setBizContent(param - + - "}"); - } + " \"external_id\":\""+numericUUID+"\"," + + " \"merchant_type\":\""+bodyType+"\"," + + " \"name\":\""+businessName+"\"," + + " \"alias_name\":\""+aliasName+"\"," + + " \"mcc\":\"B0068\"," + + " \"cert_no\":\""+businessNumber+"\"," + + " \"cert_type\":\"201\"," + + " \"cert_image\":\""+string+"\"," + + " \"legal_name\":\""+legalPerson+"\"," + + " \"legal_cert_no\":\""+leagleNumber+"\"," + + " \"legal_cert_front_image\":\""+legalFront+"\"," + + " \"legal_cert_back_image\":\""+legalBack+"\"," + + " \"contact_infos\":[" + + " {" + + " \"name\":\""+name+"\"," + + " \"mobile\":\""+phone+"\"," + + " }" + + " ],"; - AlipayMerchantIndirectAuthorderCreateResponse response = null; + // todo 拼接 + String biz_cards=" \"biz_cards\":[" + + " {" + + " \"account_holder_name\":\""+accountName+"\"," + + " \"account_no\":\""+bankCard+"\"," + + " \"account_inst_province\":\""+province+"\"," + + " \"account_inst_city\":\""+city+"\"," + + " \"account_branch_name\":\""+bankNameTwo+"\"," + + " \"usage_type\":\""+useType+"\"," + + " \"account_type\":\""+cardType+"\"," + + " \"account_inst_name\":\""+bankName+"\"," + + " \"account_inst_id\":\""+group+"\"," + + " }" + + " ]," ; + // 结算类型 支付宝账户 / 银行卡 + String type ; + // 结算类型为支付宝 填写支付宝账号 结算类型为银行卡填写银行卡号 + String account; + if (StringUtils.hasLength(alipayAccount)){ + type = accountType; + account = alipayAccount; + }else{ + type = accountType; + account = bankCard; + } + String res= + " \"service\":[" + + " \"app支付\"" + + " ]," + + " \"alipay_logon_id\":" + + " \""+zfbAccount+"\"" + + " ," + + " \"sites\":[" + + " {" + + " \"site_type\":\"02\"," + + " \"site_name\":\"玩湃生活\"," + + " \"tiny_app_id\":\"wx82f853a410b0c7c0\"" + + " }" + + " ]," + + " \"cert_name\":\""+businessName+"\","+ + " \"binding_alipay_logon_id\":\""+zfbAccount+"\","+ + " \"default_settle_rule\":{" + + " \"default_settle_type\":\""+type+"\"," + + " \"default_settle_target\":\""+account+"\"" + + " }" + + "}"; + if (accountType.equals("bankCard")){ + request.setBizContent(param + + biz_cards+res); + } + AntMerchantExpandIndirectZftCreateResponse response = null; try { response = alipayClient.execute(request); } catch (AlipayApiException e) { e.printStackTrace(); } if(response.isSuccess()){ - System.out.println("上传认证单"); + System.out.println("调用成功"); JSONObject json = JSONObject.parseObject(response.getBody()); - JSONObject json1 = json.getJSONObject("alipay_merchant_indirect_authorder_create_response"); - String order_no = json1.getString("order_no"); - String order_status = json1.getString("order_status"); -// // 申请单号 -// String orderNo = r.getString("order_no"); - /** - * 状态 审核中(AUDITING)、待联系人确认(CONTACT_CONFIRM), - * 待法人确认(LEGAL_CONFIRM)、审核通过(AUDIT_PASS)、 - * 审核失败(AUDIT_REJECT)、已冻结(AUDIT_FREEZE)、 - * 已撤回(CANCELED)、联系人处理中(CONTACT_PROCESSING) - */ -// String orderStatus = r.getString("order_status"); + JSONObject json1 = json.getJSONObject("ant_merchant_expand_indirect_zft_create_response"); + String order_no = json1.getString("order_id"); + System.err.println("订单号"+order_no); operatorAuth.setOrderNo(order_no); - operatorAuth.setOrderStatus(order_status); - - + operatorAuth.setRefuseReason(""); operatorAuthService.saveOrUpdate(operatorAuth); - // 通过运营商id找到用户id - TOperator byId = operatorService.getById(operatorId); - if (byId!=null){ - Integer userId = byId.getUserId(); - OperatorUser userId1 = operatorUserService.getOne(new QueryWrapper<OperatorUser>().eq("userId", userId)); - if (userId1!=null){ - // 设置为审核中状态 - userId1.setAlipayAudit(1); - if (bodyType.equals("ENTERPRISE")){ - userId1.setAlipayType(2); - }else{ - userId1.setAlipayType(1); - } -// userId1.setWechatAudit(1); - operatorUserService.updateById(userId1); - operatorAuth.setQrCode(null); - operatorAuthService.saveOrUpdate(operatorAuth); - // 根据选择类型修改认证类型 - - } + Integer userId = operatorService.getById(operatorId).getUserId(); + OperatorUser user = operatorUserService.getOne(new QueryWrapper<OperatorUser>().eq("userId", userId)); + user.setAlipayAudit(1); + // 01是企业 + if (bodyType.equals("01")){ + user.setAlipayType(2); + }else{ + user.setAlipayType(1); } + operatorUserService.saveOrUpdate(user); } else { - System.out.println("调用失败"); + if (response.getCode().equals("40004")){ + String subMsg = response.getSubMsg(); + return ResultUtil.error(subMsg); + } } - return SUCCESS_TIP; + return ResultUtil.success(); } public static Object uploadImg(String img){ - String privateKey = "MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCXnbOiY2VkKb5ubpcwKqzmqbKotpKGA79yn2aQeZiTWhqmLdCKjVp64naGpnOQEC7hDZluOO1crWHVhIEp7XGIEVawA7mb/dBbzo4wQQYVtLX6iEZViYk/mA7G59S/lvsLVi+jkVGlx2Co8JhvkTRtCEFgUnVA9o2jKy5BIEwrusNuDjrn5X+3ZvfZJN/iV0yzhzXynzioZt/DIcdODOVPUrem8T/5ifJ6ydSKIumgquBKyQnFOj+LRt5qMioBVzLnod0S/6kKMoNVN3/qx/PHRaeHbrF7I67IpGNROg0D9C4d9xXbGhSqQciXitLVnNzWuCov4Ie5nT5VCg9RjXyVAgMBAAECggEAf5rU81lgnnqbseoWCQ4B02kD2wc+Lti8qsYJ1pLgnTP6td5dZB8wBbjQNOem35sfOX7uoVv8OkIa00/gPd9/7BtbsGySLP3j/UDNX0N60Y30k1VajOdiwklCNpor7swtog75rVrDMxmo+sb0JQI684E9NMpxsSlRcAEJvvpl4W7LkhfJZyCUNXPAAh9SOkFOeaXATueEQ57V5vpeKM2JRJy//1P1LS2c/quLRIPqaTYgVAvxfdAYQvvP0vPijxHtxJlDxPa8xBCv7D46d+HeIA6X5ZkoTKLYbe2D36utP8rqGsXw1EyrYyuq6HdEAi/I4YXvWyLsXuQTSACSp+piAQKBgQD6am94xyQ4CRiMA/T1kvPPkXD+y/1Sbr3+T1S6X4naAGdkZS+TbPaWEddd2Huml6q+C2UcGhQpupBkbk88Nbs94jOulsfF6b24nOo1xH5z/BtS0kYuYaNLhebJtzrR9gupT1Uv0q+QybWZ3hQswOK0vwpkDk9DOysFynfMyXXlwQKBgQCa/z3oZ4iYZpTLNdRhMS0u593Jq8MDemimBJGEXPvDBByyE5Ohf22UqP5MjS1euosAQSva+/HmKeEigLgjoQTo29mA1nzPe0AKN3huWbqPIOdeIOA694Nj6ooOPS8iDMjKu61wPz/rZ57bv41LsPXr0y4UsU30JWg2rzgRnGgT1QKBgH30c0VIxUr6KEKk6t1qoP/SpAdFC5Ie6am0tWVZELl6Yob47kk1EYLCTpWBghB1UQhuKtlLtMCYenBJm8kpLZke4ef7J1jBDRCCvLt2rjQgpo2t/mbt7XjbTQ5A/3EEVTFAGhUH4A7vpkxSi8tG6cEIJm3VVMD4TdeH02JKIucBAoGAA0v+kxzwqN01uQTSGackIOVJsGp44XAPHcjnF3uq10EVIyyLbVn6iLj3f8VY+7TYFA9O0X+ea5jkcwlt4UQhiJp0i+sECJ3EhPMdGqvJ7hVzFmt4mYh+QPfSK+9dO0ouUzGexM5zm5w+osn2RW/kKzn4tvP2hoTtLIyZkrZS+GkCgYAQGKe84pXggSIPwztg0aBJUC9b4fXe3PR4DFTM85lBUKYJnQGRzf6NDCD83hwJoNdnyZkztyK72LDOn2NOzPfYcfUl6MQFPovXeMWaVidRfo4ZgyFA/C1egduebaIkXE+DpGhiy7alQ4k+LxUfy6oJBT9Sq8oq7EVBEkeff3p66g=="; - String alipayPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmu8n/4yTHWbn7VOrNc9OsLtDL1bEQ8gC1dHkj8Wy5z0mkaOsjJRIG/28ze12M0V8jdCKuuDr5Z1OPKiqf+XO3ypguEh+mYUVMBM/cZodDFQfTY1TKLWjvQCuaqlA+QUTCK6f7T7stsgyQ1o9Jj0rXZDz6PM4QHSTzjrLIBaeqM5WIBvH+fy/X+QG5Utd+/UT0kc0JyvuKhZ65yVUd/C9VcwJJAPliRsAQNrqYterwAJ9zvw9tF11wj9W0XgJ8Ccu4x3gR1vrlLRJJo/OA97RmxPQ+5hSacWQZCUd1dwiBq+YCrKVHGTj14izRHXrLc0yBlRXo7tBOIqcy3IsvKVthQIDAQAB"; + String appPrivateKey = "MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCi5i9nW/hGLJ3A06cZxTQdviFC7THpdSihoTYGLr9q006hu0V26ecBMY/o4w5bvIX0Ok/yofmZsVcCJpAPvbXL/uqVrIjnRRxXiaeBFThlxoBUTdunvbUSDYfzlEhJr5NvUKI6H6lz2niXlQGx4qy8Hau4ccWit9kM8jwUvsBVQoFgJA+xrjMvooA7YLopQtpOD+UJr5thApTSf1xrnr1W12yolTLEH15JmNV372cqXrYUuqnY0QsaPtxeqJUGAOcGdVLllQ7easEznP8DFBvDdHATcmp2SHNQDUEWN6MCVPbMgY06NQVqAXxqjTAYSVh+6TRu6bofPmpYC3TZB003AgMBAAECggEBAJAcR2+PA3NBYUYHeFrqBRMS8uX8ZR19kjZ7IgoSLTFaQsP9opRylPSPXhrPVBKAE5leRQAHn4MCSlESwHvMfxo7KFjFTFAc6dffZZpipYQUOc9bGampwJh58/3e/pyBgVMG6J23CPf/HJQtNFSkjd/V9+ayb/9l2dUEL3bC0fAZ/dbx8HsxdLw8wn3fLlWLj68hOMqa2deCZe3JdSVsPbeWqkh56FFsMLug0Nd+Ar4TgRl9/jnhXF0JWiD0LmPUYLhboY7EfUBzN4w1iYbDi1P+3zvoOYsiVKAXox9GMhQ2VzOO2UcSTuizSza2e98mGpabl/GpKmCz+RDFjtkX6eECgYEA2MyCij65eO3aGIm3FUe93DULRBYTfX8qJQSJq2WOWA3mmQlEW6L3O2B5/lG2h+8WmN6iLEs9eHpgycGYp7vAqgrANEn16ACVcuyx0scFtrZfZ+kmHMzFfiUWxJjVYk/6YngsGVBLdw6ueM42C8TTP67X9tU5TdVGoGWuqEj4W98CgYEAwFqwprXOch5Pqk/RPbb49r0Ou03K/UbciWnWWKzUhFFNS8MdlQPoDvQZbMwHLeWsa2VhaKITK3x5biLQb3U+0GLOn6lTvEyrEUH+ucREyLgVYTRAvwBPtnvlrzpyxPk2HnslQjju8WrvvLLBMKWUjlTrTOzhaHT21gz3pHMiOakCgYEAhLmfaXdBITGshb054sNLDtdCkGpbgEcrzAHdLps769iGxkYQHXHFngpQZUwtTUcoNGqIKknd1jZFrv7gsD+XkgKG7PwimehRlkwmCX5ilxtLiVgJRzRt6+5U5AMVD90a0tHzXYP0z2yjj73fBJF5KtGl0a10KZxaYrQdm1UhB00CgYBZZgzx/k9rtHC8LAqIj1CYhHejT92G53c6Gkl3vyOqN4sgKhfGmSEySfrDGPRBPZxr8ZtbIPCd5mUdberH0osWGMYFaJI1UsCy7aQwvGpniz7MhZeN7dweaOjwDs8mgtjHQ96mL4XGCDhR0BZ/wIURvZ/6iaGdhbbu9unlsWj3uQKBgQCmZYdsbbZkd3ev6f8rwyvMz+DrCQyYpY44cegBYuJgrZiQnL2fJioeN7ixX0UM48SfwsZEIrzshP/LGAwnc2MdjxKUl4jLN8SEe0NAjXOnz9Zaw740+aOmLpXcLWdP4uM2gIhWsvW1tEkQZCXmm7c9s/RsU8Pmzv+YL3+fSijOzA==";//支付宝开发者应用私钥 + String alipay_public_key = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmu8n/4yTHWbn7VOrNc9OsLtDL1bEQ8gC1dHkj8Wy5z0mkaOsjJRIG/28ze12M0V8jdCKuuDr5Z1OPKiqf+XO3ypguEh+mYUVMBM/cZodDFQfTY1TKLWjvQCuaqlA+QUTCK6f7T7stsgyQ1o9Jj0rXZDz6PM4QHSTzjrLIBaeqM5WIBvH+fy/X+QG5Utd+/UT0kc0JyvuKhZ65yVUd/C9VcwJJAPliRsAQNrqYterwAJ9zvw9tF11wj9W0XgJ8Ccu4x3gR1vrlLRJJo/OA97RmxPQ+5hSacWQZCUd1dwiBq+YCrKVHGTj14izRHXrLc0yBlRXo7tBOIqcy3IsvKVthQIDAQAB";//支付宝支付公钥 + String aliAppid = "2021004105665036";//支付宝appid AlipayConfig alipayConfig = new AlipayConfig(); alipayConfig.setServerUrl("https://openapi.alipay.com/gateway.do"); - alipayConfig.setAppId("2021003199648333"); - alipayConfig.setPrivateKey(privateKey); + alipayConfig.setAppId(aliAppid); + alipayConfig.setPrivateKey(appPrivateKey); alipayConfig.setFormat("json"); - alipayConfig.setAlipayPublicKey(alipayPublicKey); + alipayConfig.setAlipayPublicKey(alipay_public_key); alipayConfig.setCharset("UTF8"); alipayConfig.setSignType("RSA2"); AlipayClient alipayClient = null; @@ -475,15 +577,10 @@ */ @RequestMapping(value = "/proportion") @ResponseBody - public Object auth(Integer operatorIdOne ,String alipayProportion,String alipayNum,String wechatProportion, - String wechatNum) { - Integer id1 = operatorService.getOne(new QueryWrapper<TOperator>().eq("id", operatorIdOne)) - .getUserId(); - OperatorUser id = operatorUserService.getOne(new QueryWrapper<OperatorUser>().eq("userId", id1)); + public Object auth(Integer operatorIdOne ,String alipayProportion,String wechatProportion) { + OperatorUser id = operatorUserService.getOne(new QueryWrapper<OperatorUser>().eq("operatorId", operatorIdOne)); id.setAlipayProportion(alipayProportion); id.setWechatProportion(wechatProportion); - id.setAlipayNum(alipayNum); - id.setWechatNum(wechatNum); operatorUserService.updateById(id); return SUCCESS_TIP; } diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/OperatorUserController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/OperatorUserController.java index de62eb5..6f35ce3 100644 --- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/OperatorUserController.java +++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/OperatorUserController.java @@ -68,7 +68,6 @@ } - /** * 获取运营商列表 */ diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCompetitionController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCompetitionController.java index fd80080..0e8cd59 100644 --- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCompetitionController.java +++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCompetitionController.java @@ -431,11 +431,11 @@ @ResponseBody public Object onChange(Integer oneId) { System.out.println("======"+oneId); - List<TOperatorCity> list = operatorCityService.list(new LambdaQueryWrapper<TOperatorCity>().eq(TOperatorCity::getOperatorId, oneId).eq(TOperatorCity::getType, 2)); + List<TOperatorCity> list = operatorCityService.list(new LambdaQueryWrapper<TOperatorCity>() + .eq(TOperatorCity::getOperatorId, oneId).eq(TOperatorCity::getType, 2)); if (list.size()!=0){ return list; } - try { TCity one = cityService.getOne(new LambdaQueryWrapper<TCity>().eq(TCity::getCode, oneId)); return cityService.list(new LambdaQueryWrapper<TCity>().eq(TCity::getParentId,one.getId())); @@ -444,6 +444,13 @@ return ERROR; } } + + @RequestMapping(value = "/onChange3") + @ResponseBody + public Object onChange3(String oneId) { + TCity one = cityService.getOne(new LambdaQueryWrapper<TCity>().eq(TCity::getCode, oneId)); + return cityService.list(new LambdaQueryWrapper<TCity>().eq(TCity::getParentId,one.getId())); + } @RequestMapping(value = "/oneChangeNext") @ResponseBody public Object oneChangeNext(Integer oneId) { diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TStoredValueConfigController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TStoredValueConfigController.java index 4cb4650..9017240 100644 --- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TStoredValueConfigController.java +++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TStoredValueConfigController.java @@ -26,7 +26,6 @@ @Controller @RequestMapping("/storeValueConfig") public class TStoredValueConfigController { - private String PREFIX = "/system/storeValueConfig/"; @Autowired private StoreValueConfigClient storeValueConfigClient; diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/OperatorAuthAlipay.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/OperatorAuthAlipay.java new file mode 100644 index 0000000..5701c0c --- /dev/null +++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/OperatorAuthAlipay.java @@ -0,0 +1,103 @@ +package com.dsh.guns.modular.system.model; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 支付宝认证 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("t_operator_auth_alipay") +public class OperatorAuthAlipay { + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + @TableField(value = "operatorId") + private Integer operatorId; + @TableField(value = "bodyType") + private String bodyType; + @TableField(value = "registerAddress") + private String registerAddress; + @TableField(value = "inDoorImages") + private String inDoorImages; + @TableField(value = "outDoorImages") + private String outDoorImages; + @TableField(value = "aliasName") + private String aliasName; + @TableField(value = "businessName") + private String businessName; + @TableField(value = "businessNumber") + private String businessNumber; + @TableField(value = "certImage") + private String certImage; + @TableField(value = "legalPerson") + private String legalPerson; + @TableField(value = "leagleNumber") + private String leagleNumber; + @TableField(value = "legalFront") + private String legalFront; + @TableField(value = "legalBack") + private String legalBack; + @TableField(value = "accountType") + private String accountType; + @TableField(value = "province") + private String province; + @TableField(value = "provinceCode") + private String provinceCode; + @TableField(value = "city") + private String city; + @TableField(value = "cityCode") + private String cityCode; + @TableField(value = "bankName") + private String bankName; + @TableField(value = "accountName") + private String accountName; + @TableField(value = "bankCard") + private String bankCard; + @TableField(value = "refuseReason") + private String refuseReason; + @TableField(value = "smid") + private String smid; + @TableField(value = "auditState") + private Integer auditState; + @TableField(value = "outBizNo") + private String outBizNo; + @TableField(value = "name") + private String name; + @TableField(value = "phone") + private String phone; + @TableField(value = "orderNo") + private String orderNo; + @TableField(value = "shopProvince") + private String shopProvince; + @TableField(value = "shopProvinceCode") + private String shopProvinceCode; + @TableField(value = "shopCity") + private String shopCity; + @TableField(value = "shopCityCode") + private String shopCityCode; + @TableField(value = "shopDistrictCode") + private String shopDistrictCode; + @TableField(value = "shopDistrict") + private String shopDistrict; + @TableField(value = "certName") + private String certName; + @TableField(value = "alipayAccount") + private String alipayAccount; + @TableField(value = "iqImage") + private String iqImage; + @TableField(value = "useType") + private String useType; + @TableField(value = "cardType") + private String cardType; + @TableField(value = "bankNameTwo") + private String bankNameTwo; + @TableField(value = "zfbAccount") + private String zfbAccount; +} diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/IOperatorAuthService.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/IOperatorAuthService.java index d572aa2..656a506 100644 --- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/IOperatorAuthService.java +++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/IOperatorAuthService.java @@ -2,11 +2,12 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.dsh.guns.modular.system.model.OperatorAuth; +import com.dsh.guns.modular.system.model.OperatorAuthAlipay; import com.dsh.guns.modular.system.model.TSite; /** * @author zhibing.pu * @Date 2023/8/1 17:49 */ -public interface IOperatorAuthService extends IService<OperatorAuth> { +public interface IOperatorAuthService extends IService<OperatorAuthAlipay> { } diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/TBankService.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/TBankService.java new file mode 100644 index 0000000..5e88704 --- /dev/null +++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/TBankService.java @@ -0,0 +1,17 @@ +package com.dsh.guns.modular.system.service; + + +import com.baomidou.mybatisplus.extension.service.IService; +import com.dsh.guns.modular.system.model.Bank; + +/** + * <p> + * 银行 服务类 + * </p> + * + * @author administrator + * @since 2023-10-09 + */ +public interface TBankService extends IService<Bank> { + +} diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/BankServiceImpl.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/BankServiceImpl.java new file mode 100644 index 0000000..b1af254 --- /dev/null +++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/BankServiceImpl.java @@ -0,0 +1,12 @@ +package com.dsh.guns.modular.system.service.impl; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.dsh.course.mapper.BankMapper; +import com.dsh.guns.modular.system.model.Bank; +import org.springframework.stereotype.Service; + +@Service +public class BankServiceImpl extends ServiceImpl<BankMapper, Bank> implements IService<Bank> { + +} diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TOperatorAuthServiceImpl.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TOperatorAuthServiceImpl.java index 172150e..c85504e 100644 --- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TOperatorAuthServiceImpl.java +++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TOperatorAuthServiceImpl.java @@ -5,6 +5,7 @@ import com.dsh.course.mapper.TOperatorAuthMapper; import com.dsh.course.mapper.TTurnMapper; import com.dsh.guns.modular.system.model.OperatorAuth; +import com.dsh.guns.modular.system.model.OperatorAuthAlipay; import com.dsh.guns.modular.system.model.TTurn; import com.dsh.guns.modular.system.service.IOperatorAuthService; import com.dsh.guns.modular.system.service.TTurnService; @@ -19,6 +20,6 @@ * @since 2023-09-19 */ @Service -public class TOperatorAuthServiceImpl extends ServiceImpl<TOperatorAuthMapper, OperatorAuth> implements IOperatorAuthService { +public class TOperatorAuthServiceImpl extends ServiceImpl<TOperatorAuthMapper, OperatorAuthAlipay> implements IOperatorAuthService { } diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TOperatorUserServiceImpl.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TOperatorUserServiceImpl.java index 0808124..4f67843 100644 --- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TOperatorUserServiceImpl.java +++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TOperatorUserServiceImpl.java @@ -49,30 +49,35 @@ @Autowired private WeChatUtil weChatUtil; +// @Override +// public void mgtShopAuth(MgtShopAuthDto mgtShopAuthDto) { +// +// OperatorAuthAlipay shopAuthentication = new OperatorAuth(); +// +// if(mgtShopAuthDto.getBlBusinessFoeverFlag()!=null&&mgtShopAuthDto.getBlBusinessFoeverFlag()==1){ +// mgtShopAuthDto.setBlBusinessDeanline("长期"); +// } +// if(mgtShopAuthDto.getLpIcForeverFlag()!=null&&mgtShopAuthDto.getLpIcForeverFlag()==1){ +// mgtShopAuthDto.setLpIcEndDate("长期"); +// } +// BeanUtils.copyProperties(mgtShopAuthDto , shopAuthentication); +// TOperator operator = operatorMapper.selectById(shopAuthentication.getOperatorId()); +// String applyNumber = UUIDUtil.getNativeUUID().replace("-",""); +// shopAuthentication.setOutBizNo(applyNumber); +// ApplymentsResult applymentsResult; +// try { +// applymentsResult = weChatUtil.ecommerceApply(shopAuthentication,applyNumber,operator); +// } catch (Exception e) { +// throw new ServiceException(e.getMessage()); +// } +// shopAuthentication.setOrderStatus("AUDITING"); +// shopAuthentication.setOrderNo(applymentsResult.getApplymentId()); +// operatorAuthService.saveOrUpdate(shopAuthentication); +// } + @Override public void mgtShopAuth(MgtShopAuthDto mgtShopAuthDto) { - OperatorAuth shopAuthentication = new OperatorAuth(); - - if(mgtShopAuthDto.getBlBusinessFoeverFlag()!=null&&mgtShopAuthDto.getBlBusinessFoeverFlag()==1){ - mgtShopAuthDto.setBlBusinessDeanline("长期"); - } - if(mgtShopAuthDto.getLpIcForeverFlag()!=null&&mgtShopAuthDto.getLpIcForeverFlag()==1){ - mgtShopAuthDto.setLpIcEndDate("长期"); - } - BeanUtils.copyProperties(mgtShopAuthDto , shopAuthentication); - TOperator operator = operatorMapper.selectById(shopAuthentication.getOperatorId()); - String applyNumber = UUIDUtil.getNativeUUID().replace("-",""); - shopAuthentication.setOutBizNo(applyNumber); - ApplymentsResult applymentsResult; - try { - applymentsResult = weChatUtil.ecommerceApply(shopAuthentication,applyNumber,operator); - } catch (Exception e) { - throw new ServiceException(e.getMessage()); - } - shopAuthentication.setOrderStatus("AUDITING"); - shopAuthentication.setOrderNo(applymentsResult.getApplymentId()); - operatorAuthService.saveOrUpdate(shopAuthentication); } @Override diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/util/PayMoneyUtil.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/util/PayMoneyUtil.java new file mode 100644 index 0000000..8c82471 --- /dev/null +++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/util/PayMoneyUtil.java @@ -0,0 +1,385 @@ +package com.dsh.guns.modular.system.util; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.alipay.api.AlipayApiException; +import com.alipay.api.AlipayClient; +import com.alipay.api.CertAlipayRequest; +import com.alipay.api.DefaultAlipayClient; +import com.alipay.api.domain.AlipayTradeAppPayModel; +import com.alipay.api.msg.AlipayMsgClient; +import com.alipay.api.msg.MsgHandler; +import com.alipay.api.request.*; +import com.alipay.api.response.*; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.dsh.guns.modular.system.model.OperatorAuthAlipay; +import com.dsh.guns.modular.system.model.OperatorUser; +import com.dsh.guns.modular.system.service.IOperatorAuthService; +import com.dsh.guns.modular.system.service.IOperatorUserService; +import org.apache.commons.lang3.StringUtils; +import org.dom4j.Document; +import org.dom4j.DocumentException; +import org.dom4j.Element; +import org.dom4j.io.SAXReader; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import javax.servlet.http.HttpServletRequest; +import java.io.*; +import java.util.*; +/** + * 第三方支付工具类 + */ +@Component +public class PayMoneyUtil { + private String aliAppid = "2021004105665036";//支付宝appid + + private String appPrivateKey = "MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCi5i9nW/hGLJ3A06cZxTQdviFC7THpdSihoTYGLr9q006hu0V26ecBMY/o4w5bvIX0Ok/yofmZsVcCJpAPvbXL/uqVrIjnRRxXiaeBFThlxoBUTdunvbUSDYfzlEhJr5NvUKI6H6lz2niXlQGx4qy8Hau4ccWit9kM8jwUvsBVQoFgJA+xrjMvooA7YLopQtpOD+UJr5thApTSf1xrnr1W12yolTLEH15JmNV372cqXrYUuqnY0QsaPtxeqJUGAOcGdVLllQ7easEznP8DFBvDdHATcmp2SHNQDUEWN6MCVPbMgY06NQVqAXxqjTAYSVh+6TRu6bofPmpYC3TZB003AgMBAAECggEBAJAcR2+PA3NBYUYHeFrqBRMS8uX8ZR19kjZ7IgoSLTFaQsP9opRylPSPXhrPVBKAE5leRQAHn4MCSlESwHvMfxo7KFjFTFAc6dffZZpipYQUOc9bGampwJh58/3e/pyBgVMG6J23CPf/HJQtNFSkjd/V9+ayb/9l2dUEL3bC0fAZ/dbx8HsxdLw8wn3fLlWLj68hOMqa2deCZe3JdSVsPbeWqkh56FFsMLug0Nd+Ar4TgRl9/jnhXF0JWiD0LmPUYLhboY7EfUBzN4w1iYbDi1P+3zvoOYsiVKAXox9GMhQ2VzOO2UcSTuizSza2e98mGpabl/GpKmCz+RDFjtkX6eECgYEA2MyCij65eO3aGIm3FUe93DULRBYTfX8qJQSJq2WOWA3mmQlEW6L3O2B5/lG2h+8WmN6iLEs9eHpgycGYp7vAqgrANEn16ACVcuyx0scFtrZfZ+kmHMzFfiUWxJjVYk/6YngsGVBLdw6ueM42C8TTP67X9tU5TdVGoGWuqEj4W98CgYEAwFqwprXOch5Pqk/RPbb49r0Ou03K/UbciWnWWKzUhFFNS8MdlQPoDvQZbMwHLeWsa2VhaKITK3x5biLQb3U+0GLOn6lTvEyrEUH+ucREyLgVYTRAvwBPtnvlrzpyxPk2HnslQjju8WrvvLLBMKWUjlTrTOzhaHT21gz3pHMiOakCgYEAhLmfaXdBITGshb054sNLDtdCkGpbgEcrzAHdLps769iGxkYQHXHFngpQZUwtTUcoNGqIKknd1jZFrv7gsD+XkgKG7PwimehRlkwmCX5ilxtLiVgJRzRt6+5U5AMVD90a0tHzXYP0z2yjj73fBJF5KtGl0a10KZxaYrQdm1UhB00CgYBZZgzx/k9rtHC8LAqIj1CYhHejT92G53c6Gkl3vyOqN4sgKhfGmSEySfrDGPRBPZxr8ZtbIPCd5mUdberH0osWGMYFaJI1UsCy7aQwvGpniz7MhZeN7dweaOjwDs8mgtjHQ96mL4XGCDhR0BZ/wIURvZ/6iaGdhbbu9unlsWj3uQKBgQCmZYdsbbZkd3ev6f8rwyvMz+DrCQyYpY44cegBYuJgrZiQnL2fJioeN7ixX0UM48SfwsZEIrzshP/LGAwnc2MdjxKUl4jLN8SEe0NAjXOnz9Zaw740+aOmLpXcLWdP4uM2gIhWsvW1tEkQZCXmm7c9s/RsU8Pmzv+YL3+fSijOzA==";//支付宝开发者应用私钥 + + private String alipayPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAouYvZ1v4RiydwNOnGcU0Hb4hQu0x6XUooaE2Bi6/atNOobtFdunnATGP6OMOW7yF9DpP8qH5mbFXAiaQD721y/7qlayI50UcV4mngRU4ZcaAVE3bp721Eg2H85RISa+Tb1CiOh+pc9p4l5UBseKsvB2ruHHForfZDPI8FL7AVUKBYCQPsa4zL6KAO2C6KULaTg/lCa+bYQKU0n9ca569VtdsqJUyxB9eSZjVd+9nKl62FLqp2NELGj7cXqiVBgDnBnVS5ZUO3mrBM5z/AxQbw3RwE3JqdkhzUA1BFjejAlT2zIGNOjUFagF8ao0wGElYfuk0bum6Hz5qWAt02QdNNwIDAQAB";//支付宝应用公钥 + + private String alipay_public_key = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmu8n/4yTHWbn7VOrNc9OsLtDL1bEQ8gC1dHkj8Wy5z0mkaOsjJRIG/28ze12M0V8jdCKuuDr5Z1OPKiqf+XO3ypguEh+mYUVMBM/cZodDFQfTY1TKLWjvQCuaqlA+QUTCK6f7T7stsgyQ1o9Jj0rXZDz6PM4QHSTzjrLIBaeqM5WIBvH+fy/X+QG5Utd+/UT0kc0JyvuKhZ65yVUd/C9VcwJJAPliRsAQNrqYterwAJ9zvw9tF11wj9W0XgJ8Ccu4x3gR1vrlLRJJo/OA97RmxPQ+5hSacWQZCUd1dwiBq+YCrKVHGTj14izRHXrLc0yBlRXo7tBOIqcy3IsvKVthQIDAQAB";//支付宝支付公钥 + + private String appid = "";//微信appid + + private String appletsAppid = "";//微信小程序appid + + private String mchId = "";//微信商户号 + + private String key = "";//微信商户号 + + private String callbackPath = "http://221.182.45.100:56666/account";//支付回调网关地址 + + private String app_cert_path = "C:/cert/alipay/user/app_cert_path.crt";//应用公钥证书路径 + + private String alipay_cert_path = "C:/cert/alipay/user/alipay_cert_path.crt";//支付宝公钥证书文件路径 + + private String alipay_root_cert_path = "C:/cert/alipay/user/alipay_root_cert_path.crt";//支付宝CA根证书文件路径 + + private String certPath = "C:\\cert\\1523106371_20211206_cert\\apiclient_cert.p12";//微信证书 + String signType = "RSA2" ; + String serverHost = "openchannel.alipay.com" ; + + @Autowired + private IOperatorAuthService operatorAuthService; + @Autowired + private IOperatorUserService operatorUserService; + + + + + /** + * 处理直付通审核通过和拒绝消息 + */ + public void getMessage() { + System.err.println("进入"); + final AlipayMsgClient alipayMsgClient = AlipayMsgClient.getInstance(aliAppid); + try { + alipayMsgClient.setConnector(serverHost); + } catch (Exception e) { + e.printStackTrace(); + } + alipayMsgClient.setSecurityConfig(signType, appPrivateKey, alipay_public_key); + try { + alipayMsgClient.connect(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + alipayMsgClient.setMessageHandler( new MsgHandler() { + /** + * 客户端接收到消息后回调此方法 + * @param msgApi 接收到的消息的消息api名 + * @param msgId 接收到的消息的消息id + * @param bizContent 接收到的消息的内容,json格式 + */ + public void onMessage (String msgApi, String msgId, String bizContent) { + // 直付通进件审核通过 + if (StringUtils.equals(msgApi,"ant.merchant.expand.indirect.zft.passed")){ + // 修改运营商状态 将返回的商户号填入运营商 + System.out.println( "receive message. msgApi:" + msgApi + " msgId:" + msgId + " bizContent:" + bizContent); + JSONObject json = JSONObject.parseObject(bizContent); + // 商户号 + String smid = json.getString("smid"); + // 审核备注信息 + String memo = json.getString("memo"); + // 订单id + String orderId = json.getString("order_id"); + // 通过订单id查询 + OperatorAuthAlipay auth = operatorAuthService.getOne(new QueryWrapper<OperatorAuthAlipay>() + .eq("orderNo",orderId)); + auth.setSmid(smid); + auth.setAuditState(2); + auth.setRefuseReason(memo); + operatorAuthService.updateById(auth); + Integer operatorId = auth.getOperatorId(); + OperatorUser operatorId1 = operatorUserService.getOne(new QueryWrapper<OperatorUser>() + .eq("operatorId", operatorId)); + operatorId1.setAlipayNum(smid); + operatorId1.setAlipayAudit(2); + operatorUserService.updateById(operatorId1); + } + // 直付通进件审核失败 + if (StringUtils.equals(msgApi,"ant.merchant.expand.indirect.zft.rejected")){ + JSONObject json = JSONObject.parseObject(bizContent); + // 商户号 + String orderId = json.getString("order_id"); + // 官方拒绝理由 + String reason = json.getString("reason"); + // 通过订单id查询 + OperatorAuthAlipay auth = operatorAuthService.getOne(new QueryWrapper<OperatorAuthAlipay>() + .eq("orderNo",orderId)); + auth.setAuditState(3); + auth.setRefuseReason(reason); + operatorAuthService.updateById(auth); + Integer operatorId = auth.getOperatorId(); + OperatorUser operatorId1 = operatorUserService.getOne(new QueryWrapper<OperatorUser>() + .eq("operatorId", operatorId)); + operatorId1.setAlipayAudit(3); + operatorUserService.updateById(operatorId1); + } + } + }); + } + /** + * 支付宝支付 + */ + public ResultUtil alipay(String body, String subject, String passbackParams, String outTradeNo, String amount, String notifyUrl) { +// //构造client +// CertAlipayRequest certAlipayRequest = new CertAlipayRequest (); +// //设置网关地址 +// certAlipayRequest.setServerUrl("https://openapi.alipay.com/gateway.do"); +// //设置应用Id +// certAlipayRequest.setAppId(aliAppid); +// //设置应用私钥 +// certAlipayRequest.setPrivateKey(appPrivateKey); +// //设置请求格式,固定值json +// certAlipayRequest.setFormat("json"); +// //设置字符集 +// certAlipayRequest.setCharset("UTF-8"); +// //设置签名类型 +// certAlipayRequest.setSignType("RSA2"); +// //设置应用公钥证书路径 +// certAlipayRequest.setCertPath(app_cert_path); +// //设置支付宝公钥证书路径 +// certAlipayRequest.setAlipayPublicCertPath(alipay_cert_path); +// //设置支付宝根证书路径 +// certAlipayRequest.setRootCertPath(alipay_root_cert_path); +// //构造client +// AlipayClient alipayClient = null; +// try { +// alipayClient = new DefaultAlipayClient(certAlipayRequest); +// } catch (AlipayApiException e) { +// e.printStackTrace(); +// } +// //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay +// AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest (); +// //SDK已经封装掉了公共参数,这里只需要传入业务参数。以下方法为sdk的model入参方式(model和biz_content同时存在的情况下取biz_content)。 +// AlipayTradeAppPayModel model = new AlipayTradeAppPayModel (); +// model.setBody(body); +// model.setSubject (subject); +// model.setOutTradeNo (outTradeNo); +// model.setTimeoutExpress ("30m" ); +// model.setTotalAmount (amount); +// model.setProductCode ( "QUICK_MSECURITY_PAY" ); +// model.setPassbackParams(passbackParams);//自定义参数 +// request.setBizModel ( model ); +// request.setNotifyUrl (callbackPath + notifyUrl); +// try { +// //这里和普通的接口调用不同,使用的是sdkExecute +// AlipayTradeAppPayResponse response = alipayClient.sdkExecute(request); +// Map<String, String> map = new HashMap<>(); +// map.put("orderString", response.getBody()); +// System.out.println(map);//就是orderString 可以直接给客户端请求,无需再做处理。 +// return ResultUtil.success(map); +// } catch (AlipayApiException e ) { +// e.printStackTrace(); +// } + + + //实例化客户端 + AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", aliAppid, appPrivateKey, "json", "UTF-8", alipay_public_key, "RSA2"); + //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay + AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest(); + //SDK已经封装掉了公共参数,这里只需要传入业务参数。以下方法为sdk的model入参方式(model和biz_content同时存在的情况下取biz_content)。 + AlipayTradeAppPayModel model = new AlipayTradeAppPayModel(); + model.setBody(body);//对一笔交易的具体描述信息。如果是多种商品,请将商品描述字符串累加传给body。 + model.setSubject(subject);//商品的标题/交易标题/订单标题/订单关键字等。 + model.setOutTradeNo(outTradeNo);//商户网站唯一订单号 + model.setTimeoutExpress("30m"); + model.setTotalAmount(amount);//付款金额 + model.setProductCode("QUICK_MSECURITY_PAY"); + model.setPassbackParams(passbackParams);//自定义参数 + + + //分账 +// Integer coursePackagePayments = coursePackageClient.queryByCode(outTradeNo); +// Integer paymentCompetitions = competitionsClient.queryByCode(outTradeNo); +// Integer siteBookings = siteClient.queryByCode(outTradeNo); +// List<Integer> stores = new ArrayList<>(); +// stores.add(coursePackagePayments); +// stores.add(paymentCompetitions); +// stores.add(siteBookings); +// +// OperatorUser operatorUser = siteClient.queryOperator(stores); +// +// String alipayProportion = operatorUser.getAlipayProportion(); +// String alipayNum = operatorUser.getAlipayNum(); +// +// ExtendParams extendParams = new ExtendParams(); +//// extendParams.setSysServiceProviderId("YOUR_SERVICE_PROVIDER_ID"); +// model.setExtendParams(extendParams); +// +// RoyaltyInfo royaltyInfo = new RoyaltyInfo(); +//// royaltyInfo.setRoyaltyType("transfer"); +// +// +// RoyaltyDetailInfos royaltyDetailInfo1 = new RoyaltyDetailInfos(); +// royaltyDetailInfo1.setTransOutType("userId"); +// royaltyDetailInfo1.setTransOut(aliAppid); +// royaltyDetailInfo1.setTransInType("loginName"); +// royaltyDetailInfo1.setTransIn("18398968484"); +// +// royaltyDetailInfo1.setDesc("分账描述1"); +// royaltyDetailInfo1.setAmountPercentage(alipayProportion); +// List<RoyaltyDetailInfos> royaltyDetailInfos = new ArrayList<>(); +// +// +// +// royaltyInfo.setRoyaltyDetailInfos(royaltyDetailInfos); +// model.setRoyaltyInfo(royaltyInfo); +// System.err.println("=================="+royaltyInfo); + // + request.setBizModel(model); + request.setNotifyUrl(callbackPath + notifyUrl); + try { + //这里和普通的接口调用不同,使用的是sdkExecute + AlipayTradeAppPayResponse response = alipayClient.sdkExecute(request); + Map<String, String> map = new HashMap<>(); + map.put("orderString", response.getBody()); + map.put("returnId", passbackParams); + System.out.println(map);//就是orderString 可以直接给客户端请求,无需再做处理。 + return ResultUtil.success(map); + } catch (AlipayApiException e) { + e.printStackTrace(); + } + return null; + } + + + + + /** + * 支付宝查询订单支付状态 + * + * @param out_trade_no + * @return + * @throws Exception + */ + public AlipayTradeQueryResponse queryALIOrder(String out_trade_no) throws Exception { + AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", aliAppid, appPrivateKey, "json", "UTF-8", alipay_public_key, "RSA2"); + AlipayTradeQueryRequest request = new AlipayTradeQueryRequest(); + request.setBizContent("{" + + " \"out_trade_no\":\"" + out_trade_no + "\"" + + "}"); + AlipayTradeQueryResponse response = alipayClient.execute(request); + return response; + + } + + + + + + + + + + + + + + + + + + + + + + /** + * 获取请求内容 + * + * @param request + * @return + * @throws IOException + */ + private String getParam(HttpServletRequest request) throws IOException { + // 读取参数 + InputStream inputStream; + StringBuilder sb = new StringBuilder(); + inputStream = request.getInputStream(); + String s; + BufferedReader in = new BufferedReader(new InputStreamReader(inputStream, "UTF-8")); + while ((s = in.readLine()) != null) { + sb.append(s); + } + in.close(); + inputStream.close(); + return sb.toString(); + } + + + + + + + +// public static void main(String[] ages){ +// PayMoneyUtil payMoneyUtil = new PayMoneyUtil(); +// ResultUtil ce = payMoneyUtil.alipay("测试", "测试", "", "121456457", "10", "http://123.com"); +// System.err.println(ce); +// ResultUtil resultUtil = null; +// try { +// resultUtil = payMoneyUtil.queryALIOrder("121456457"); +// } catch (Exception e) { +// e.printStackTrace(); +// } +// System.err.println(resultUtil); +// } + + + /** + * xml转map + * + * @param xml + * @param charset + * @return + * @throws UnsupportedEncodingException + * @throws DocumentException + */ + public static Map<String, String> xmlToMap(String xml, String charset) throws UnsupportedEncodingException, DocumentException { + + Map<String, String> respMap = new HashMap<String, String>(); + + SAXReader reader = new SAXReader(); + Document doc = reader.read(new ByteArrayInputStream(xml.getBytes(charset))); + Element root = doc.getRootElement(); + xmlToMap(root, respMap); + return respMap; + } + + public static Map<String, String> xmlToMap(Element tmpElement, Map<String, String> respMap) { + if (tmpElement.isTextOnly()) { + respMap.put(tmpElement.getName(), tmpElement.getText()); + return respMap; + } + + @SuppressWarnings("unchecked") + Iterator<Element> eItor = tmpElement.elementIterator(); + while (eItor.hasNext()) { + Element element = eItor.next(); + xmlToMap(element, respMap); + } + return respMap; + } +} diff --git a/cloud-server-management/src/main/resources/mapper/BankMapper.xml b/cloud-server-management/src/main/resources/mapper/BankMapper.xml new file mode 100644 index 0000000..19b899c --- /dev/null +++ b/cloud-server-management/src/main/resources/mapper/BankMapper.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.dsh.course.mapper.BankMapper"> + +</mapper> \ No newline at end of file diff --git a/cloud-server-management/src/main/resources/mapper/TOperatorMapper.xml b/cloud-server-management/src/main/resources/mapper/TOperatorMapper.xml index 780ffae..cf50d24 100644 --- a/cloud-server-management/src/main/resources/mapper/TOperatorMapper.xml +++ b/cloud-server-management/src/main/resources/mapper/TOperatorMapper.xml @@ -15,7 +15,8 @@ </update> <select id="listAll" resultType="java.util.Map"> - select t1.id as id, t1.name as name,t1.type as `type`,t1.state as state,t1.status as status,t2.name as userName,t2.phone as phone from t_operator t1 + select t1.id as id, t1.name as name,t1.type as `type`,t1.state as state,t1.status as status,t2.name as userName,t2.phone as phone + from t_operator t1 left join sys_user t2 on t1.userId = t2.id where 1=1 <if test="userName != null and userName != ''"> diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/operator/OperatorUser_proportion.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/operator/OperatorUser_proportion.html index 45d9478..cee9c86 100644 --- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/operator/OperatorUser_proportion.html +++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/operator/OperatorUser_proportion.html @@ -49,20 +49,14 @@ <input hidden id="id" value="${id}"> <div class="col-lg-6" style=""> <div class="form-group" > - <label class="col-sm-3 control-label">*支付宝商户号:</label> - <div class="col-sm-9"> - <input style="width: 300px" class="form-control" id="alipayNum" value="${alipayNum}" placeholder="请输入" type="text"> - </div> + <label class="col-sm-3 control-label">*支付宝分账比例(%):</label> <div class="col-sm-9"> <input style="width: 300px" class="form-control" id="alipayProportion" value="${alipayProportion}" placeholder="请输入" type="number"> </div> </div> <div class="form-group" > - <label class="col-sm-3 control-label">*微信商户号:</label> - <div class="col-sm-9"> - <input style="width: 300px" class="form-control" id="wechatNum" value="${wechatNum}" placeholder="请输入" type="text"> - </div> + <label class="col-sm-3 control-label">*微信分账比例(%):</label> <div class="col-sm-9"> <input style="width: 300px" class="form-control" id="wechatProportion" value="${wechatProportion}" placeholder="请输入" type="number"> diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/operator/OperatorUser_proportionAuth.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/operator/OperatorUser_proportionAuth.html index a3b2079..10faf49 100644 --- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/operator/OperatorUser_proportionAuth.html +++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/operator/OperatorUser_proportionAuth.html @@ -51,7 +51,6 @@ <span>管理员姓名:</span><span>${user.name}</span> <span>管理员电话:</span><span>${user.phone}</span> </div> - <h2>商户号信息</h2> </br> </br> @@ -60,196 +59,142 @@ <div class="col-lg-6" style=""> <div class="form-group"> <label class="col-sm-4 control-label" > - 主体类型:<input checked type="radio" name="bodyType" value="ENTERPRISE" onclick="updateHalf(2)">企业 - <input type="radio" name="bodyType" value="IND_BIZ" onclick="updateHalf(1)">个人 - + 商户类型:<input checked type="radio" name="bodyType" value="01" onclick="updateHalf(2)">企业 + <input type="radio" name="bodyType" value="07" onclick="updateHalf(1)">个人 </label> </div> <div class="form-group" > + <label class="col-sm-3 control-label">*商户名称(一般与证件名称相同):</label> + <div class="col-sm-9"> + <input style="width: 300px" class="form-control" value="" id="businessName" placeholder="请输入商户名称" type="text"> + </div> + </div> + <div class="form-group" > + <label class="col-sm-3 control-label">*商户别名(支付宝账单显示的商户名称):</label> + <div class="col-sm-9"> + <input style="width: 300px" class="form-control" value="" id="aliasName" placeholder="请输入商户别名" type="text"> + </div> + </div> + + <div class="form-group" > <label class="col-sm-3 control-label">*联系人姓名:</label> <div class="col-sm-9"> - <input style="width: 300px" class="form-control" value="${item.name}" id="name" placeholder="请输入" type="text"> + <input style="width: 300px" class="form-control" value="" id="name" placeholder="请输入" type="text"> </div> </div> <div class="form-group" > <label class="col-sm-3 control-label">*联系人电话:</label> <div class="col-sm-9"> - <input style="width: 300px" class="form-control" value="${item.phone}" id="phone" placeholder="请输入" type="text"> + <input style="width: 300px" class="form-control" value="" id="phone" placeholder="请输入" type="text"> </div> </div> - <div class="form-group" > - <label class="col-sm-3 control-label">*联系人身份证号:</label> - <div class="col-sm-9"> - <input style="width: 300px" class="form-control" value="${item.number}" id="number" placeholder="请输入" type="text"> + <div class="form-group" > + <label class="col-sm-3 control-label">*法人姓名:</label> + <div class="col-sm-9" > + <input style="width: 300px" class="form-control" id="legalPerson" value="" placeholder="请输入" type="text"> + </div> </div> - </div> - <div class="form-group" > - <label class="col-sm-3 control-label">*法定代表人姓名:</label> - <div class="col-sm-9"> - <input style="width: 300px" class="form-control" id="lrName" value="${item.legalPerson}" placeholder="请输入" type="text"> + <div class="form-group"> + <label class="col-sm-3 control-label">*法人身份证号:</label> + <div class="col-sm-9"> + <input style="width: 300px" class="form-control" value="" id="leagleNumber" placeholder="请输入" type="text"> + </div> </div> - </div> - </div> - <div class="col-lg-6" style=""> - <div class="form-group" > - <label class="col-sm-3 control-label">*营业执照商户名称:</label> - <div class="col-sm-9"> - <input style="width: 300px" class="form-control" value="${item.businessName}" id="merchantName" placeholder="请输入" type="text"> + <div class="form-group"> + <#avatar id="IDCardImg" name="*法人身份证正面照" avatarImg="" /> </div> - </div> - <div class="form-group"> - <label class="col-sm-3 control-label">*营业证照生效时间:</label> - <div class="col-sm-9" style="display: flex"> - <input style="width: 300px" class="form-control" id="tradeTime" value="${item.businessTerm}" name="tradeTime" type="date"> + <div class="form-group"> + <#avatar id="IDCardImg1" name="*法人身份证背面照" avatarImg="" /> </div> - </div> - <div class="form-group"> - <label class="col-sm-3 control-label">*营业证照过期时间:</label> - <div class="col-sm-9" style="display: flex"> - <input style="width: 300px" class="form-control" id="endTime" value="${item.businessEnd}" name="endTime" type="date"> - <input type="checkbox" style="margin-left: 10px" id="tradeE" value="0" onchange="TSite.tradeYse(this)">长期</input> - </div> - </div> - <div class="form-group" > - <label class="col-sm-3 control-label">*营业执照注册号:</label> - <div class="col-sm-9" > - <input style="width: 300px" class="form-control" id="licenseRegistration" value="${item.businessNumber}" placeholder="请输入" type="text"> - </div> - </div> - <div class="form-group" > - <label class="col-sm-3 control-label">*注册地址:</label> - <div class="col-sm-9" > - <input style="width: 300px" class="form-control" id="registerAddress" value="${item.registerAddress}" placeholder="请输入" type="text"> - </div> - </div> - <div class="form-group"> - <#avatar id="license" name="*营业执照" avatarImg="${item.businessPicture}" /> - </div> - </div> - </div> - <div class="row"> - <div class="col-lg-6" style=""> - <div class="form-group" > - <label class="col-sm-3 control-label">*法人姓名:</label> - <div class="col-sm-9" > - <input style="width: 300px" class="form-control" id="legalPerson" value="${item.legalPerson}" placeholder="请输入" type="text"> - </div> - </div> - <div class="form-group" > - <label class="col-sm-3 control-label">*法人手机号:</label> - <div class="col-sm-9"> - <input style="width: 300px" class="form-control" id="legalPhone" value="${item.legalPhone}" placeholder="请输入" type="text"> - </div> - </div> - <div class="form-group"> - <label class="col-sm-3 control-label">*法人身份证开始时间:</label> - <div class="col-sm-9" style="display: flex"> - <input style="width: 300px" class="form-control" id="IDCardTime" value="${item.legalTerm}" name="IDCardTime" type="date"> - </div> - </div> - <div class="form-group"> - <label class="col-sm-3 control-label">*法人身份证结束时间:</label> - <div class="col-sm-9" style="display: flex"> - <input style="width: 300px" class="form-control" value="${item.legalEnd}" id="IDCardEnd" name="IDCardTime" type="date"> - <input type="checkbox" style="margin-left: 10px" id="IDCardE" value="0" onchange="TSite.tradeYse(this)">长期</input> - </div> - </div> - <div class="form-group"> - <#avatar id="IDCardImg" name="*法人身份证正面照" avatarImg="${item.legalFront}" /> - </div> - </div> - <div class="col-lg-6" style=""> - <div class="form-group"> - <label class="col-sm-3 control-label">*法人身份证号:</label> - <div class="col-sm-9"> - <input style="width: 300px" class="form-control" value="${item.leagleNumber}" id="lIDNumber" placeholder="请输入" type="text"> - </div> - </div> - <div class="form-group" > - <label class="col-sm-3 control-label">*法人邮箱:</label> - <div class="col-sm-9"> - <input style="width: 300px" class="form-control" value="${item.legalEmail}" id="lEmail" placeholder="请输入" type="text"> - </div> - </div> - <div class="form-group" > - <label class="col-sm-3 control-label">*法人身份证地址:</label> - <div class="col-sm-9"> - <input style="width: 300px" class="form-control" value="${item.legalAddress}" id="lIDAddress" placeholder="请输入" type="text"> - </div> - </div> - <div class="form-group"> - <#avatar id="IDCardImg1" name="*法人身份证背面照" avatarImg="${item.legalBack}" /> - </div> - </div> - </div> - <div class="row" id="benefit"> + <div class="form-group" > + <label class="col-sm-3 control-label">*签约支付宝账号:</label> + <div class="col-sm-9" > + <input style="width: 300px" class="form-control" id="zfbAccount" value="${item.zfbAccount}" placeholder="请输入" type="text"> + </div> + </div> + </div> <div class="col-lg-6" style=""> + <div class="form-group" > + <label class="col-sm-3 control-label">*营业执照编号:</label> + <div class="col-sm-9" > + <input style="width: 300px" class="form-control" id="businessNumber" value="" placeholder="请输入" type="text"> + </div> + </div> + <div class="form-group"> + <#avatar id="license" name="*营业执照" avatarImg="${item.certImage}" /> + </div> <div class="form-group"> <label class="col-sm-4 control-label" > - 法人是否为受益人:<input type="radio" checked name="type" value="true">是 - <input checked type="radio" name="type" value="false">否 + 结算账户类型:<input checked type="radio" name="accountType" value="bankCard" onclick="updateHalf(3)">银行卡 + <input type="radio" name="accountType" value="alipayAccount" onclick="updateHalf(4)">支付宝账号 </label> </div> - <div class="form-group"> - <label class="col-sm-3 control-label">*受益人姓名:</label> - <div class="col-sm-9"> - <input style="width: 300px" class="form-control" value="${item.beneficiary}" id="bName" name="bName" type="text"> - </div> - </div> - <div class="form-group"> - <label class="col-sm-3 control-label">*受益人身份证地址:</label> - <div class="col-sm-9"> - <input style="width: 300px" class="form-control" id="bAddress" value="${item.beneficiaryAddress}" placeholder="请输入" type="text"> - </div> - </div> - <div class="form-group"> - <label class="col-sm-3 control-label">*受益人身份证有效期:</label> - <div class="col-sm-9"> - <input style="width: 300px" class="form-control" value="${item.beneficiaryTerm}" id="bTime" name="bTime" type="date"> - </div> - </div> - <div class="form-group"> - <label class="col-sm-3 control-label">*受益人身份证结束时间:</label> - <div class="col-sm-9" style="display: flex"> - <input style="width: 300px" class="form-control" id="bEnd" value="${item.beneficiaryEnd}" name="IDCardTime" type="date"> - <input type="checkbox" style="margin-left: 10px" id="bIDCardT" value="0" onchange="TSite.tradeYse(this)">长期</input> - </div> - </div> - <div class="form-group"> - <#avatar id="bImg1" avatarImg="${item.beneficiaryFront}" name="*受益人身份证正面照" /> - </div> - </div> - <div class="col-lg-6" > - <div class="form-group"> - <label class="col-sm-3 control-label">*受益人身份证号:</label> + <div class="form-group" hidden id="aliNumber"> + <label class="col-sm-3 control-label">*支付宝账号:</label> <div class="col-sm-9" > - <input style="width: 300px" class="form-control" id="bIDNumber" value="${item.beneficiaryNumber}" placeholder="请输入" type="text"> + <input style="width: 300px" class="form-control" id="alipayAccount" value="" placeholder="请输入" type="text"> </div> </div> - <div class="form-group"> - <#avatar id="bImg2" avatarImg="${item.beneficiaryBack}" name="*受益人身份证背面照" /> - </div> - </div> - </div> - @if(reasons != null){ - <div class="row" id="reasons"> - <div class="col-lg-6" > - <div class="form-group"> - <label class="col-sm-3 control-label">*拒绝理由:</label> - <div class="col-sm-9"> - <h3 style="color: red">${item.refuseReason}</h3> + <div id="banks"> + <div class="form-group" > + <label class="col-sm-3 control-label">*银行卡号:</label> + <div class="col-sm-9" > + <input style="width: 300px" class="form-control" id="bankCard" value="" placeholder="请输入" type="text"> + </div> + </div> + <div class="form-group"> + <label class="col-sm-4 control-label" > + 账号使用类型:<input checked type="radio" name="useType" value="01" >对公 + <input type="radio" name="useType" value="02" >对私 + </label> + </div> + <div class="form-group"> + <label class="col-sm-4 control-label" > + 银行卡类型:<input checked type="radio" name="cardType" value="DC" onclick="updateHalf(2)">借记卡 + <input type="radio" name="cardType" value="CC" onclick="updateHalf(1)">信用卡 + </label> + </div> + <div class="form-group"> + <label class="col-sm-3 control-label">*开户银行:</label> + <div class="col-sm-9"> + <input style="width: 300px" class="form-control" id="bankName" value="" placeholder="请输入(例:中国农业银行)" type="text"> + </div> + </div> + <div class="form-group" > + <label class="col-sm-3 control-label">*开户支行名称:</label> + <div class="col-sm-9" > + <input style="width: 300px" class="form-control" id="bankName1" value="" placeholder="请输入" type="text"> + </div> + </div> + <div class="form-group" > + <label class="col-sm-3 control-label">*开户名称:</label> + <div class="col-sm-9" > + <input style="width: 300px" class="form-control" id="bankUserName" value="" placeholder="请输入" type="text"> + </div> + </div> + <div class="form-group" id="provinceCode"> + <label class="col-sm-3 control-label">*开户行所在省:</label> + <div class="col-sm-9"> + <select style="width: 300px" class="form-control" id="pCode" name="pCode" onchange="TSite.oneChange2(this)"> + <option value="">请选择省</option> + @for(obj in list){ + <option style="width: 300px" value="${obj.code}">${obj.name}</option> + @} + </select> + </div> + </div> + <div class="form-group" id="cityCode"> + <label class="col-sm-3 control-label">*开户行所在市:</label> + <div class="col-sm-9"> + <select style="width: 300px" class="form-control" id="cCode" name="cCode" > + <option value="">请选择市</option> + </select> + </div> </div> </div> </div> </div> - @} - @if(code != null){ - @if(type==1){ - <label class="col-sm-3 control-label">请使用手机支付宝扫描下方二维码完成进一步认证</label> - <img src="${code}"> - @} - @} <div class="form-group"> <div class="row btn-group-m-t"> <div class="col-sm-10 col-sm-offset-5" > @@ -268,77 +213,16 @@ <link rel="stylesheet" href="${ctxPath}/js/elementui/index.css"> <script> function updateHalf(e) { - if(e==1){ - console.log("隐藏") - $("#benefit").hide() - }else { + if(e==3){ console.log("展示") - $("#benefit").show() + $("#banks").show() + $("#aliNumber").hide() + }else if (e==4){ + // 结算到支付宝账号 + console.log("隐藏") + $("#banks").hide() + $("#aliNumber").show() } - } - window.onload = function(){ - if ("${item.orderStatus}"=="AUDIT_PASS"){ - $("#reasons").hide() - }else{ - $("#reasons").show() - } - if ("${item.orderStatus}"==null){ - $("#reasons").hide() - } - console.log("${bodyType}") - var OBJradio=document.getElementsByName("bodyType") - var type=document.getElementsByName("type") - console.log("回显") - if ("${bodyType}" != 0){ - console.log("进入") - if("${bodyType}"=="ENTERPRISE"){ - OBJradio[0].checked=true - $("#benefit").show() - // 受益人身份证有效期 - var IDCardE = document.getElementById("IDCardE"); - var IDCardEnd = document.getElementById('IDCardEnd'); - if ("${item.legalEnd}" == "forever"){ - IDCardE.checked=true; - IDCardEnd.disabled = true; - IDCardEnd.value=""; - } - if ("${item.isBeneficiary}" == "true"){ - type[0].checked=true - }else{ - type[1].checked=true - } - }else { - OBJradio[1].checked=true - $("#benefit").hide() - } - } - - // 营业执照有效结束期 - var bunessTime = document.getElementById("tradeE"); - var endTime = document.getElementById('endTime'); - if ("${item.businessEnd}" == "forever"){ - bunessTime.checked=true; - endTime.disabled = true; - endTime.value=""; - } - // 法人身份证有效期 - var IDCardE = document.getElementById("IDCardE"); - var IDCardEnd = document.getElementById('IDCardEnd'); - if ("${item.legalEnd}" == "forever"){ - IDCardE.checked=true; - IDCardEnd.disabled = true; - IDCardEnd.value=""; - } - // 受益人身份证有效期 - var bEnd = document.getElementById("bEnd"); - var bIDCardT = document.getElementById('bIDCardT'); - if ("${item.beneficiaryEnd}" == "forever"){ - bIDCardT.checked=true; - bEnd.disabled = true; - bEnd.value=""; - } - - } </script> @} diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/operator/OperatorUser_proportionAuth_info.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/operator/OperatorUser_proportionAuth_info.html new file mode 100644 index 0000000..11420bb --- /dev/null +++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/operator/OperatorUser_proportionAuth_info.html @@ -0,0 +1,283 @@ +@layout("/common/_container.html"){ +<style> + .avatar-uploader .el-upload { + border: 1px dashed #d9d9d9; + border-radius: 6px; + cursor: pointer; + position: relative; + height: 100px; + width: 100px; + overflow: hidden; + } + + .avatar-uploader .el-upload:hover { + border-color: #409EFF; + } + .avatar-uploader-icon { + font-size: 28px; + color: #8c939d; + width: 100px; + height: 100px; + line-height: 100px; + margin-top: 32px; + text-align: center; + } + .avatar { + width: 100px; + height: 100px; + display: block; + } + + .col-sm-12 { + margin-top: 20px; + } + + .col-sm-12 select { + height: 33px; + } + #app1{ + margin-left: 255px; + } + + +</style> +<script type="text/javascript" src="http://webapi.amap.com/maps?v=1.4.15&key=77b37f0753049c4e712ea79a24e0719c"></script> +<div class="ibox float-e-margins"> + <div class="ibox-content"> + <div class="form-horizontal" id="carInfoForm"> + <h2>商户信息</h2> + <div style="display: flex"> + <span>运营商名称:</span><span>${data.name}</span> + <span>管理员姓名:</span><span>${user.name}</span> + <span>管理员电话:</span><span>${user.phone}</span> + </div> + <h2>商户号信息</h2> + </br> + </br> + <input hidden id="id" value="${id}"> + <div class="row"> + <div class="col-lg-6" style=""> + <div class="form-group"> + <label class="col-sm-4 control-label" > + 商户类型:<input checked type="radio" name="bodyType" value="01" onclick="updateHalf(2)">企业 + <input type="radio" name="bodyType" value="07" onclick="updateHalf(1)">个人 + </label> + </div> + <div class="form-group" > + <label class="col-sm-3 control-label">*商户名称(一般与证件名称相同):</label> + <div class="col-sm-9"> + <input style="width: 300px" class="form-control" value="${item.businessName}" id="businessName" placeholder="请输入商户名称" type="text"> + </div> + </div> + <div class="form-group" > + <label class="col-sm-3 control-label">*商户别名(支付宝账单显示的商户名称):</label> + <div class="col-sm-9"> + <input style="width: 300px" class="form-control" value="${item.aliasName}" id="aliasName" placeholder="请输入商户别名" type="text"> + </div> + </div> + + <div class="form-group" > + <label class="col-sm-3 control-label">*联系人姓名:</label> + <div class="col-sm-9"> + <input style="width: 300px" class="form-control" value="${item.name}" id="name" placeholder="请输入" type="text"> + </div> + </div> + <div class="form-group" > + <label class="col-sm-3 control-label">*联系人电话:</label> + <div class="col-sm-9"> + <input style="width: 300px" class="form-control" value="${item.phone}" id="phone" placeholder="请输入" type="text"> + </div> + </div> + <div class="form-group" > + <label class="col-sm-3 control-label">*法人姓名:</label> + <div class="col-sm-9" > + <input style="width: 300px" class="form-control" id="legalPerson" value="${item.legalPerson}" placeholder="请输入" type="text"> + </div> + </div> + <div class="form-group"> + <label class="col-sm-3 control-label">*法人身份证号:</label> + <div class="col-sm-9"> + <input style="width: 300px" class="form-control" value="${item.leagleNumber}" id="leagleNumber" placeholder="请输入" type="text"> + </div> + </div> + <div class="form-group"> + <#avatar id="IDCardImg" name="*法人身份证正面照" avatarImg="${item.legalFront}" /> + </div> + <div class="form-group"> + <#avatar id="IDCardImg1" name="*法人身份证背面照" avatarImg="${item.legalBack}" /> + </div> + + <div class="form-group" > + <label class="col-sm-3 control-label">*签约支付宝账号:</label> + <div class="col-sm-9" > + <input style="width: 300px" class="form-control" id="zfbAccount" value="${item.zfbAccount}" placeholder="请输入" type="text"> + </div> + </div> + </div> + <div class="col-lg-6" style=""> + <div class="form-group" > + <label class="col-sm-3 control-label">*营业执照编号:</label> + <div class="col-sm-9" > + <input style="width: 300px" class="form-control" id="businessNumber" value="${item.businessNumber}" placeholder="请输入" type="text"> + </div> + </div> + <div class="form-group"> + <#avatar id="license" name="*营业执照" avatarImg="${item.certImage}" /> + </div> + <div class="form-group"> + <label class="col-sm-4 control-label" > + 结算账户类型:<input checked type="radio" name="accountType" value="bankCard" onclick="updateHalf(3)">银行卡 + <input type="radio" name="accountType" value="alipayAccount" onclick="updateHalf(4)">支付宝账号 + </label> + </div> + <div class="form-group" hidden id="aliNumber"> + <label class="col-sm-3 control-label">*支付宝账号:</label> + <div class="col-sm-9" > + <input style="width: 300px" class="form-control" id="alipayAccount" value="${item.alipayAccount}" placeholder="请输入" type="text"> + </div> + </div> + <div id="banks"> + <div class="form-group" > + <label class="col-sm-3 control-label">*银行卡号:</label> + <div class="col-sm-9" > + <input style="width: 300px" class="form-control" id="bankCard" value="${item.bankCard}" placeholder="请输入" type="text"> + </div> + </div> + <div class="form-group"> + <label class="col-sm-4 control-label" > + 账号使用类型:<input checked type="radio" name="useType" value="01" >对公 + <input type="radio" name="useType" value="02" >对私 + </label> + </div> + <div class="form-group"> + <label class="col-sm-4 control-label" > + 银行卡类型:<input checked type="radio" name="cardType" value="DC" onclick="updateHalf(2)">借记卡 + <input type="radio" name="cardType" value="CC" onclick="updateHalf(1)">信用卡 + </label> + </div> + <div class="form-group"> + <label class="col-sm-3 control-label">*开户银行:</label> + <div class="col-sm-9"> + <input style="width: 300px" class="form-control" id="bankName" value="${item.bankName}" placeholder="请输入(例:中国农业银行)" type="text"> + </div> + </div> + <div class="form-group" > + <label class="col-sm-3 control-label">*开户支行名称:</label> + <div class="col-sm-9" > + <input style="width: 300px" class="form-control" id="bankName1" value="${item.bankNameTwo}" placeholder="请输入" type="text"> + </div> + </div> + <div class="form-group" > + <label class="col-sm-3 control-label">*开户名称:</label> + <div class="col-sm-9" > + <input style="width: 300px" class="form-control" id="bankUserName" value="${item.accountName}" placeholder="请输入" type="text"> + </div> + </div> + <div class="form-group" id="provinceCode"> + <label class="col-sm-3 control-label">*开户行所在省:</label> + <div class="col-sm-9"> + <select style="width: 300px" class="form-control" id="pCode" name="pCode" onchange="TSite.oneChange2(this)"> + @for(obj in list4){ + <option style="width: 300px" value="${obj.code}" ${obj.code == item.provinceCode ? 'selected=selected' : ''}>${obj.name}</option> + @} + </select> + </div> + </div> + <div class="form-group" id="cityCode"> + <label class="col-sm-3 control-label">*开户行所在市:</label> + <div class="col-sm-9"> + <select style="width: 300px" class="form-control" id="cCode" name="cCode" > + @for(obj in list5){ + <option style="width: 300px" value="${obj.code}" ${obj.code == item.cityCode ? 'selected=selected' : ''}>${obj.name}</option> + @} + </select> + </div> + </div> + </div> + </div> + </div> + + @if(reasons != null && reasons!=""){ + <div class="row" id="reasons"> + <div class="col-lg-6" > + <div class="form-group"> + <label class="col-sm-3 control-label">*拒绝理由:</label> + <div class="col-sm-9"> + <h3 style="color: red">${item.refuseReason}</h3> + </div> + </div> + </div> + </div> + @} + <div class="form-group"> + <div class="row btn-group-m-t"> + <div class="col-sm-10 col-sm-offset-5" > + <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="TSite.addSubmit()"/> + <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TSite.close()"/> + </div> + </div> + </div> + </div> + </div> +</div> + +<script src="${ctxPath}/modular/system/operatorUser/operatorUser.js"></script> +<script src="${ctxPath}/js/vue/vue.js"></script> +<script src="${ctxPath}/js/elementui/index.js"></script> +<link rel="stylesheet" href="${ctxPath}/js/elementui/index.css"> +<script> + function updateHalf(e) { + if(e==3){ + console.log("展示") + $("#banks").show() + $("#aliNumber").hide() + }else if (e==4){ + // 结算到支付宝账号 + console.log("隐藏") + $("#banks").hide() + $("#aliNumber").show() + } + } + window.onload = function(){ + console.log("${accountType}") + console.log("${useType}") + console.log("${cardType}") + var accountType = "${accountType}"; + var useType = "${useType}"; + var cardType = "${cardType}"; + var OBJradio=document.getElementsByName("bodyType") + var type=document.getElementsByName("type") + if("${bodyType}"=="01"){ + OBJradio[0].checked=true + }else { + OBJradio[1].checked=true + } + // 如果结算账户选择银行卡 + var OBJradio1=document.getElementsByName("accountType") + if (accountType!="alipayAccount"){ + $("#aliNumber").hide(); + OBJradio1[0].checked=true + $("#banks").show(); + }else{ + OBJradio1[1].checked=true + $("#aliNumber").show(); + $("#banks").hide(); + } + // 账户使用类型 + var OBJradio2=document.getElementsByName("useType") + if (useType=="01"){ + OBJradio2[0].checked=true + }else{ + OBJradio2[1].checked=true + } + // 银行卡类型 + var OBJradio3=document.getElementsByName("cardType") + if (cardType=="DC"){ + OBJradio3[0].checked=true + }else{ + OBJradio3[1].checked=true + } + + } +</script> +@} diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/operatorUser/OperatorUser.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/operatorUser/OperatorUser.html index adb41d3..f34b0b5 100644 --- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/operatorUser/OperatorUser.html +++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/operatorUser/OperatorUser.html @@ -9,7 +9,6 @@ <div class="row row-lg"> <div class="col-sm-12"> <div class="row"> - <div class="col-sm-3"> <#NameCon id="name" name="管理员姓名:" /> </div> @@ -44,7 +43,6 @@ </select> </div> </div> - <div class="col-sm-3"> <div class="input-group"> <div class="input-group-btn open"> @@ -56,13 +54,8 @@ <option value="">全部</option> <option value="0">未认证</option> <option value="1">审核中</option> - <option value="2">待联系人确认</option> - <option value="3">待法人确认</option> - <option value="4">审核通过</option> - <option value="5">审核失败</option> - <option value="6">已冻结</option> - <option value="7">已撤回</option> - <option value="8">联系人处理中</option> + <option value="2">审核通过</option> + <option value="3">审核失败</option> </select> </div> </div> diff --git a/cloud-server-management/src/main/webapp/static/modular/system/operator/operator.js b/cloud-server-management/src/main/webapp/static/modular/system/operator/operator.js index 72f8003..e376ae5 100644 --- a/cloud-server-management/src/main/webapp/static/modular/system/operator/operator.js +++ b/cloud-server-management/src/main/webapp/static/modular/system/operator/operator.js @@ -96,6 +96,22 @@ } }; /** + * 商户号认证页面回显 + */ +TSite.auth1 = function () { + if (this.check()) { + var index = layer.open({ + type: 2, + title: "商户认证详情", + area: ['100%', '100%'], //宽高 + fix: false, //不固定 + maxmin: true, + content: Feng.ctxPath + '/operator/proportionAuth1/' + TSite.seItem.id + }); + this.layerIndex = index; + } +}; +/** * 分账比例 */ TSite.proportion = function () { diff --git a/cloud-server-management/src/main/webapp/static/modular/system/operatorUser/operatorUser.js b/cloud-server-management/src/main/webapp/static/modular/system/operatorUser/operatorUser.js index 2c02a4b..c9b08b3 100644 --- a/cloud-server-management/src/main/webapp/static/modular/system/operatorUser/operatorUser.js +++ b/cloud-server-management/src/main/webapp/static/modular/system/operatorUser/operatorUser.js @@ -40,7 +40,7 @@ {title: '分账比例', field: 'proportion', visible: true, align: 'center', valign: 'middle'}, {title: '审核状态', field: 'audit', visible: true, align: 'center', valign: 'middle', formatter:function (data) { - return {0:"未认证",1:"审核中",2:"待联系人确认",3:"待法人确认",4:"审核通过",5:"审核失败",6:"已冻结",7:"已撤回",8:"联系人处理中"}[data] + return {0:"未认证",1:"待审核",2:"审核通过",3:"审核失败"}[data] } }, {title: '操作', field: 'audit', visible: true, align: 'center', valign: 'middle', @@ -50,7 +50,7 @@ var str = '<button class="btn btn-outline btn-primary" onclick="TSite.auth('+row.operatorId+')" >去认证</button>' btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="" onfocus="TUser.tooltip()">' + str + '</p>'] }else { - var str = '<button class="btn btn-outline btn-primary" onclick="TSite.auth(' + row.operatorId + ')" >详情</button>' + var str = '<button class="btn btn-outline btn-primary" onclick="TSite.auth1(' + row.operatorId + ')" >详情</button>' btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="" onfocus="TUser.tooltip()">' + str + '</p>'] } return btn; @@ -71,13 +71,28 @@ this.layerIndex = index; } }; +/** + * 商户号认证页面回显 + */ +TSite.auth1 = function () { + if (this.check()) { + var index = layer.open({ + type: 2, + title: "商户认证详情", + area: ['100%', '100%'], //宽高 + fix: false, //不固定 + maxmin: true, + content: Feng.ctxPath + '/operator/proportionAuth1/' + TSite.seItem.operatorId + }); + this.layerIndex = index; + } +}; TSite.proportion = function () { var selected = $('#' + this.id).bootstrapTable('getSelections'); if(selected.length >1 ){ Feng.info("只能选择一个运营商商户设置分账比例!"); }else { if (this.check()) { - var index = layer.open({ type: 2, title: "认证", @@ -93,23 +108,12 @@ TSite.commit = function(){ var alipayProportion = $("#alipayProportion").val(); var wechatProportion = $("#wechatProportion").val(); - if($("#alipayNum").val()=='' ){ + if($("#alipayProportion").val()=='' ){ Feng.info("请输入支付宝分账比例") return; } - if($("#wechatNum").val()=='' ){ + if($("#wechatProportion").val()=='' ){ Feng.info("请输入微信分账比例") - return; - } - if (Number(alipayProportion)+Number(wechatProportion)!=100){ - Feng.info("总比例应该是100%,当前比例:"+Number(Number(alipayProportion)+Number(wechatProportion))); - return; - } - - var ali = $("#alipayProportion").val() - var wechat = $("#wechatProportion").val() - if(Number(ali)+Number(wechat)!=100){ - Feng.success("总比例需为100%!"); return; } //提交信息 @@ -127,14 +131,78 @@ ajax.set("wechatNum", $("#wechatNum").val() ); ajax.start(); }; - +// 银行卡使用 +TSite.oneChange2 = function (e) { + var oneId=$(e).val(); + console.log(oneId) + console.log("!!!!!!!!!!!!!") + var ajax = new $ax(Feng.ctxPath + "/tCompetition/onChange3", function(data){ + if(data!=null){ + var content='<option value="">选择市</option>'; + $.each(data, function(k,v) { + content += "<option value='"+v.code+"'>"+v.name+"</option>"; + }); + $("#cCode").empty().append(content); + } + }); + ajax.set("oneId",oneId); + ajax.start(); +}; +// 经营地址使用 +TSite.oneChange6 = function (e) { + var oneId=$(e).val(); + console.log(oneId) + console.log("!!!!!!!!!!!!!") + var ajax = new $ax(Feng.ctxPath + "/tCompetition/onChange3", function(data){ + if(data!=null){ + var content='<option value="">选择市</option>'; + $.each(data, function(k,v) { + content += "<option value='"+v.code+"'>"+v.name+"</option>"; + }); + $("#bcCode").empty().append(content); + } + }); + ajax.set("oneId",oneId); + ajax.start(); +}; +// 经营地址使用 +TSite.twoChange = function (e) { + var oneId=$(e).val(); + console.log(oneId) + console.log("!!!!!!!!!!!!!") + var ajax = new $ax(Feng.ctxPath + "/operator/getDistrict", function(data){ + if(data!=null){ + var content='<option value="">选择区(县)</option>'; + $.each(data, function(k,v) { + content += "<option value='"+v.code+"'>"+v.name+"</option>"; + }); + $("#bdCode").empty().append(content); + } + }); + ajax.set("cityCode",oneId); + ajax.start(); +}; TSite.addSubmit = function(){ - var bodyType = $("input[name='bodyType']:checked").val(); - var accountType = $("input[name='accountType']:checked").val(); var type = $("input[name='type']:checked").val(); if (bodyType=="" || null == bodyType){ Feng.error("请选择主体类型"); + return; + } + if ("" == $("#businessName").val() ){ + Feng.error("请输入商户名称"); + return; + } + if ("" == $("#aliasName").val() ){ + Feng.error("请输入商户别名"); + return; + } + if ("" == $("#businessNumber").val() ){ + Feng.error("请输入营业执照编号"); + return; + } + if ("" == $("#businessNumber").val() ){ + Feng.error("请上传营业执照"); return; } if ("" == $("#name").val() ){ @@ -145,186 +213,119 @@ Feng.error("请输入联系人电话"); return; } - if ("" == $("#number").val() ){ - Feng.error("请输入联系人身份证号"); - return; - } - var platform = $("input[name='platform']:checked").val(); - - if ("" == $("#merchantName").val() ){ - Feng.error("请输入营业执照商户名称"); - return; - } - if ("" == $("#lrName").val() ){ - Feng.error("请输入法定代表人姓名"); - return; - } - var tradeT = document.getElementById("tradeE"); - if (!tradeT.checked){ - if ("" == $("#endTime").val() || null == $("#endTime").val()){ - Feng.error("请输入营业证照过期时间"); - return; - } - } - if ("" == $("#tradeTime").val() || null == $("#tradeTime").val()){ - Feng.error("请输入营业执照生效期间"); - return; - } - if ("" == $("#licenseRegistration").val() ){ - Feng.error("请输入营业执照注册号"); - return; - } - if ("" == $("#registerAddress").val() ){ - Feng.error("请输入注册地址"); - return; - } if ("" == $("#legalPerson").val()){ Feng.error("请输入法人姓名"); return; - }if ("" == $("#legalPhone").val()){ - Feng.error("请输入法人手机号"); - return; } - var IDCardT = document.getElementById("IDCardE"); - if (!IDCardT.checked){ - if ("" == $("#IDCardTime").val() || null == $("#IDCardTime").val()){ - Feng.error("请输入法人身份证结束时间"); - return; - } - } - if ("" == $("#IDCardTime").val()){ - Feng.error("请输入法人身份证开始时间"); - return; - } + if ("" == $("#lIDNumber").val()){ Feng.error("请输入法人身份证号"); return; - }if ("" == $("#lEmail").val()){ - Feng.error("请输入法人邮箱"); - return; - }if ("" == $("#lIDAddress").val()){ - Feng.error("请输入法人身份证地址"); + } + if ("" == $("#zfbAccount").val()){ + Feng.error("请输入签约支付宝账号"); return; } - if(bodyType=="ENTERPRISE"){ - if ("" == $("#bName").val()){ - Feng.error("请输入受益人姓名"); + // 结算账户类型 + var accountType = $("input[name='accountType']:checked").val(); + // 结算到银行卡 + if (accountType == "bankCard"){ + if ("" == $("#bankCard").val()){ + Feng.error("请输入银行卡号"); return; } - if ("" == $("#bAddress").val()){ - Feng.error("请输入受益人身份证地址"); + if ("" == $("#bankName").val()){ + Feng.error("请选择开户银行"); return; } - var bIDCardT = document.getElementById("bIDCardT"); - if (!bIDCardT.checked){ - if ("" == $("#bEnd").val()){ - Feng.error("请输入受益人身份证结束时间"); - return; - } - } - if ("" == $("#bTime").val()){ - Feng.error("请输入受益人身份证开始时间"); + if ("" == $("#bankName1").val()){ + Feng.error("请输入开户支行名称"); return; } - - if ("" == $("#bIDNumber").val()){ - Feng.error("请输入受益人身份证号"); + if ("" == $("#bankUserName").val()){ + Feng.error("请输入开户名称"); return; } - + if ("" == $("#pCode").val()){ + Feng.error("请选择开户银行所在省"); + return; + } + if ("" == $("#cCode").val()){ + Feng.error("请选择开户银行所在市"); + return; + } + }else{ + // 结算到支付宝 + if ("" == $("#alipayAccount").val()){ + Feng.error("请输入支付宝账号"); + return; + } } + //提交信息 var ajax = new $ax(Feng.ctxPath + "/operator/auth", function(data){ if (data==5001){ Feng.error("未上传营业执照!"); + return; }else if(data==5002){ Feng.error("未上传法人身份证正面照!"); + return; }else if(data==5003){ Feng.error("未上传法人身份证背面照!"); - }else if(data==5004){ - Feng.error("未上传受益人身份证正面照!"); - }else if(data==5005){ - Feng.error("未上传受益人身份证背面照!"); + return; + }else if(data==5007){ + Feng.error("输入的开户银行名称有误!"); + return; + } else if (data.code==500){ + console.log(data) + Feng.error("认证失败:"+data.msg); + return; }else{ - Feng.success("操作成功!"); + Feng.success("认证成功!请等待支付宝审核"); window.parent.TSite.table.refresh(); TSite.close(); } },function(data){ Feng.error("操作失败!"); }); - ajax.set("operatorId", $("#id").val() ); - ajax.set("bodyType", bodyType ); - ajax.set("type", platform ); - ajax.set("businessName", $("#merchantName").val() ); - ajax.set("businessNumber", $("#licenseRegistration").val() ); - ajax.set("legalRepresentative", $("#lrName").val() ); - ajax.set("registerAddress", $("#registerAddress").val() ); - if ($("#endTime").val()==""){ - ajax.set("businessEnd","forever"); - }else{ - ajax.set("businessEnd",$("#endTime").val()); - } - if ($("#IDCardEnd").val()==""){ - ajax.set("legalEnd","forever"); - ajax.set("lpIcForeverFlag", 0); - }else{ - ajax.set("legalEnd",$("#IDCardEnd").val()); - ajax.set("lpIcForeverFlag", 1); - } - - if(bodyType=="ENTERPRISE"){ - if ($("#bEnd").val()==""){ - console.log("永远") - ajax.set("beneficiaryEnd","forever"); - - }else{ - console.log("嗯嗯嗯") - ajax.set("beneficiaryEnd",$("#bEnd").val()); - } - } - - var tradeT = document.getElementById('tradeE'); - if (tradeT.checked) { - endTime.disabled = true; - endTime.value=""; - ajax.set("blBusinessFoeverFlag", 1); - } else { - ajax.set("blBusinessFoeverFlag", 0); - endTime.disabled = false; - } - ajax.set("businessTerm", $("#tradeTime").val() ); + ajax.set("operatorId", $("#id").val()); + ajax.set("bodyType", bodyType ); + ajax.set("businessName", $("#businessName").val()); + ajax.set("aliasName", $("#aliasName").val()); + ajax.set("businessNumber", $("#businessNumber").val() ); + ajax.set("license", $("#license").val() ); ajax.set("name", $("#name").val() ); ajax.set("phone", $("#phone").val() ); - ajax.set("number", $("#number").val() ); - ajax.set("businessPicture", $("#license").val() ); + ajax.set("shopProvinceCode", $("#bpCode").val() ); + ajax.set("shopProvince", $('#bpCode option:selected').text()); + ajax.set("shopCityCode", $("#bcCode").val() ); + ajax.set("shopCity", $('#bcCode option:selected').text()); + ajax.set("shopDistrictCode", $("#bdCode").val() ); + ajax.set("shopDistrict", $('#bdCode option:selected').text()); + ajax.set("registerAddress", $("#registerAddress").val() ); ajax.set("legalPerson", $("#legalPerson").val() ); - ajax.set("legalNumber", $("#lIDNumber").val() ); - ajax.set("legalPhone", $("#legalPhone").val() ); - ajax.set("legalEmail", $("#lEmail").val() ); - ajax.set("legalTerm", $("#IDCardTime").val() ); - ajax.set("legalAddress", $("#lIDAddress").val() ); + ajax.set("leagleNumber", $("#leagleNumber").val() ); ajax.set("legalFront", $("#IDCardImg").val() ); ajax.set("legalBack", $("#IDCardImg1").val() ); ajax.set("accountType", accountType ); - ajax.set("bank", $("#bank").val() ); - ajax.set("accountName", $("#backUserName").val() ); - ajax.set("province", $('#pCode option:selected').text() ); + ajax.set("alipayAccount", $("#alipayAccount").val() ); + ajax.set("bankCard", $("#bankCard").val() ); + // 结算账户类型 + var useType = $("input[name='useType']:checked").val(); + ajax.set("useType", useType ); + // 银行卡类型 + var cardType = $("input[name='cardType']:checked").val(); + ajax.set("cardType", cardType ); + ajax.set("bankName", $("#bankName").val() ); + ajax.set("bankNameTwo", $("#bankName1").val() ); + ajax.set("accountName", $("#bankUserName").val() ); ajax.set("provinceCode", $("#pCode").val() ); - ajax.set("city", $('#cCode option:selected').text() ); + ajax.set("province", $('#pCode option:selected').text()); ajax.set("cityCode", $("#cCode").val() ); - ajax.set("bankName", $("#backName").val() ); - ajax.set("bankNumber", $("#backNumber").val() ); - ajax.set("isBeneficiary", type ); - ajax.set("beneficiary", $("#bName").val() ); - ajax.set("beneficiaryPhone", $("#bPhone").val() ); - ajax.set("beneficiaryNumber", $("#bIDNumber").val() ); - ajax.set("beneficiaryAddress", $("#bAddress").val() ); - ajax.set("beneficiaryTerm", $("#bTime").val() ); - ajax.set("beneficiaryFront", $("#bImg1").val() ); - ajax.set("beneficiaryBack", $("#bImg2").val() ); - ajax.set("remark", $("#remark").val() ); + ajax.set("city", $('#cCode option:selected').text()); + ajax.set("iqImage", $("#iqImage").val() ); + ajax.set("zfbAccount", $("#zfbAccount").val() ); ajax.start(); }; /** @@ -435,7 +436,6 @@ $(function () { - var defaultColunms = TSite.initColumn(); var table = new BSTable(TSite.id, "/operatorUser/listAll", defaultColunms); table.setPaginationType("client"); @@ -446,6 +446,9 @@ var c4 = new $WebUpload("bImg1"); var c5 = new $WebUpload("bImg2"); var c6 = new $WebUpload("Img"); + var inDoorImages = new $WebUpload("inDoorImages"); + var outDoorImages = new $WebUpload("outDoorImages"); + var iqImage = new $WebUpload("iqImage"); c1.setUploadBarId("progressBar"); c1.init(); c2.setUploadBarId("progressBar"); @@ -458,4 +461,10 @@ c5.init(); c6.setUploadBarId("progressBar"); c6.init(); + inDoorImages.setUploadBarId("progressBar"); + inDoorImages.init(); + outDoorImages.setUploadBarId("progressBar"); + outDoorImages.init(); + iqImage.setUploadBarId("progressBar"); + iqImage.init(); }); diff --git a/cloud-server-other/pom.xml b/cloud-server-other/pom.xml index a0a4e2b..178af5d 100644 --- a/cloud-server-other/pom.xml +++ b/cloud-server-other/pom.xml @@ -104,7 +104,7 @@ <dependency> <groupId>com.alipay.sdk</groupId> <artifactId>alipay-sdk-java</artifactId> - <version>4.8.10.ALL</version> + <version>4.38.10.ALL</version> </dependency> </dependencies> diff --git a/cloud-server-other/src/main/java/com/dsh/other/controller/SiteController.java b/cloud-server-other/src/main/java/com/dsh/other/controller/SiteController.java index 59e44a1..b17ef77 100644 --- a/cloud-server-other/src/main/java/com/dsh/other/controller/SiteController.java +++ b/cloud-server-other/src/main/java/com/dsh/other/controller/SiteController.java @@ -66,6 +66,15 @@ private CityManagerClient cityManagerClient; /** + * 通过运营商id查询运营商对应的支付宝商户号 + */ + @RequestMapping("/base/getSMIDByOperatorId") + @ResponseBody + public String getSMIDByOperatorId(Integer id) { + // 获取运营商的管理员 + return siteService.getSMIDByOperatorId(id); + } + /** * 获取所有场地 */ @RequestMapping("/base/site/getList") @@ -340,7 +349,6 @@ } } - /** * 预约场地支付宝回调 * @@ -356,7 +364,8 @@ if (null != map) { String code = map.get("out_trade_no"); String trade_no = map.get("trade_no"); - SiteBooking siteBooking = siteBookingService.getOne(new QueryWrapper<SiteBooking>().eq("orderNo", code).eq("state", 1)); + SiteBooking siteBooking = siteBookingService.getOne(new QueryWrapper<SiteBooking>() + .eq("orderNo", code).eq("state", 1)); if (siteBooking.getStatus() == 0) { siteBooking.setPayTime(new Date()); siteBooking.setStatus(1); diff --git a/cloud-server-other/src/main/java/com/dsh/other/mapper/SiteMapper.java b/cloud-server-other/src/main/java/com/dsh/other/mapper/SiteMapper.java index 8d4b6ca..c677a2c 100644 --- a/cloud-server-other/src/main/java/com/dsh/other/mapper/SiteMapper.java +++ b/cloud-server-other/src/main/java/com/dsh/other/mapper/SiteMapper.java @@ -48,4 +48,6 @@ List<TSiteDTO> listExipre(@Param("query") ExpireSiteSearchVO vo); + String getSMIDByOperatorId(@Param("id")Integer id); + } diff --git a/cloud-server-other/src/main/java/com/dsh/other/service/ISiteService.java b/cloud-server-other/src/main/java/com/dsh/other/service/ISiteService.java index 004f19f..15295f6 100644 --- a/cloud-server-other/src/main/java/com/dsh/other/service/ISiteService.java +++ b/cloud-server-other/src/main/java/com/dsh/other/service/ISiteService.java @@ -101,4 +101,6 @@ Object changeState(SiteChangeStateVO vo); + String getSMIDByOperatorId(Integer id); + } diff --git a/cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteServiceImpl.java b/cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteServiceImpl.java index c35c64a..361a4e5 100644 --- a/cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteServiceImpl.java +++ b/cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteServiceImpl.java @@ -522,7 +522,7 @@ return weixinpay; } - + private String smid = "2088330203191220";//平台支付宝商户号 /** * 课程支付宝支付 * @@ -533,7 +533,18 @@ public ResultUtil aliPaymentSite(Double paymentPrice, SiteBooking siteBooking) throws Exception { String code = siteBooking.getOrderNo(); Integer id = siteBooking.getId(); - ResultUtil alipay = payMoneyUtil.alipay("预约场地", "预约场地", id.toString(), code, paymentPrice.toString(), "/base/site/aliPaymentSiteCallback"); + // 判断预约的门店 属于哪个运营商 + Integer storeId = siteBooking.getStoreId(); + Store byId = storeService.getById(storeId); + Integer operatorId = byId.getOperatorId(); + String smid1 = ""; + if (operatorId == null ){ + // 平台的门店 + smid1 = smid; + }else{ + smid1 = siteService.getSMIDByOperatorId(operatorId); + } + ResultUtil alipay = payMoneyUtil.alipay(smid1,"预约场地", "预约场地", id.toString(), code, paymentPrice.toString(), "/base/site/aliPaymentSiteCallback"); System.out.println("预约场地----" + alipay.getCode()); if (alipay.getCode() == 200) { new Thread(new Runnable() { @@ -572,6 +583,18 @@ siteBooking.setPayOrderNo(tradeNo); siteBookingService.updateById(siteBooking); System.err.println("======完成支付"); + // 判断预约的门店 属于哪个运营商 + Integer storeId = siteBooking.getStoreId(); + Store byId = storeService.getById(storeId); + Integer operatorId = byId.getOperatorId(); + String smid1 = ""; + if (operatorId == null ){ + // 平台的门店 + smid1 = smid; + }else{ + smid1 = siteService.getSMIDByOperatorId(operatorId); + } + payMoneyUtil.confirm(smid1,code,tradeNo,paymentPrice.toString()); break; } if ("WAIT_BUYER_PAY".equals(s)) { @@ -892,4 +915,9 @@ return siteMapper.changeState(siteIds, type); } + + @Override + public String getSMIDByOperatorId(Integer id) { + return siteMapper.getSMIDByOperatorId(id); + } } diff --git a/cloud-server-other/src/main/java/com/dsh/other/util/PayMoneyUtil.java b/cloud-server-other/src/main/java/com/dsh/other/util/PayMoneyUtil.java index fad56b9..b5519f5 100644 --- a/cloud-server-other/src/main/java/com/dsh/other/util/PayMoneyUtil.java +++ b/cloud-server-other/src/main/java/com/dsh/other/util/PayMoneyUtil.java @@ -6,10 +6,9 @@ import com.alipay.api.AlipayClient; import com.alipay.api.CertAlipayRequest; import com.alipay.api.DefaultAlipayClient; -import com.alipay.api.domain.AlipayTradeAppPayModel; -import com.alipay.api.domain.ExtendParams; -import com.alipay.api.domain.RoyaltyDetailInfos; -import com.alipay.api.domain.RoyaltyInfo; +import com.alipay.api.domain.*; +import com.alipay.api.msg.AlipayMsgClient; +import com.alipay.api.msg.MsgHandler; import com.alipay.api.request.*; import com.alipay.api.response.*; import lombok.Synchronized; @@ -72,12 +71,54 @@ private String certPath = "C:\\cert\\1523106371_20211206_cert\\apiclient_cert.p12";//微信证书 + + + public ResultUtil confirm(String smid,String code, String outTradeNo, String amount) { + + AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", + aliAppid, + appPrivateKey, + "json", + "GBK", + alipay_public_key, + "RSA2"); + AlipayTradeSettleConfirmRequest request = new AlipayTradeSettleConfirmRequest(); + request.setBizContent("{" + + " \"out_request_no\":\""+code+"\"," + + " \"trade_no\":\""+outTradeNo+"\"," + + " \"settle_info\":{" + + " \"settle_detail_infos\":[" + + " {" + + " \"trans_in_type\":\"defaultSettle\"," + + " \"settle_entity_id\":\""+smid+"\"," + + " \"settle_entity_type\":\"SecondMerchant\"," + + " \"amount\":"+amount+"," + + " }" + + " ]" + + " }," + + " \"extend_params\":{" + + " \"royalty_freeze\":\"true\"" + + " }" + + "}"); + AlipayTradeSettleConfirmResponse response = null; + try { + response = alipayClient.execute(request); + } catch (AlipayApiException e) { + e.printStackTrace(); + } + if(response.isSuccess()){ + System.out.println("调用成功"); + return ResultUtil.success(); + } else { + System.out.println("调用失败"); + return ResultUtil.error("出现问题啦"); + } + } /** * 支付宝支付 */ - - public ResultUtil alipay(String body, String subject, String passbackParams, String outTradeNo, String amount, String notifyUrl) { -// //构造client + public ResultUtil alipay(String smid,String body, String subject, String passbackParams, String outTradeNo, String amount, String notifyUrl) { +//// //构造client // CertAlipayRequest certAlipayRequest = new CertAlipayRequest (); // //设置网关地址 // certAlipayRequest.setServerUrl("https://openapi.alipay.com/gateway.do"); @@ -142,6 +183,21 @@ model.setTotalAmount(amount);//付款金额 model.setProductCode("QUICK_MSECURITY_PAY"); model.setPassbackParams(passbackParams);//自定义参数 + SettleInfo settleInfo = new SettleInfo(); + settleInfo.setSettlePeriodTime("3d"); + SettleDetailInfo settleDetailInfo = new SettleDetailInfo(); + settleDetailInfo.setTransInType("defaultSettle"); + settleDetailInfo.setAmount(amount); + List<SettleDetailInfo> settleDetailInfos = new ArrayList<>(); + settleDetailInfos.add(settleDetailInfo); + settleInfo.setSettleDetailInfos(settleDetailInfos); + model.setSettleInfo(settleInfo); + SubMerchant subMerchant = new SubMerchant(); + subMerchant.setMerchantId(smid); + model.setSubMerchant(subMerchant); + ExtendParams extendParams = new ExtendParams(); + extendParams.setRoyaltyFreeze("true");// 冻结资金 用于后续分账处理 + model.setExtendParams(extendParams); request.setBizModel(model); request.setNotifyUrl(callbackPath + notifyUrl); diff --git a/cloud-server-other/src/main/resources/mapper/SiteMapper.xml b/cloud-server-other/src/main/resources/mapper/SiteMapper.xml index 8a54140..68abd26 100644 --- a/cloud-server-other/src/main/resources/mapper/SiteMapper.xml +++ b/cloud-server-other/src/main/resources/mapper/SiteMapper.xml @@ -141,4 +141,7 @@ ORDER BY insertTime desc </select> + <select id="getSMIDByOperatorId" resultType="java.lang.String"> + select alipayNum from t_operator_user where operatorId = #{id} + </select> </mapper> -- Gitblit v1.7.1