From eb6b6dbb35a9f029e0b7d269773685c19fd40976 Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期四, 11 七月 2024 10:47:51 +0800
Subject: [PATCH] 玩湃微信商户认证代码

---
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/OperatorController.java | 1260 ++++++++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 1,056 insertions(+), 204 deletions(-)

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 9afcddf..0b44a40 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,14 +9,17 @@
 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;
 
 import com.dsh.course.feignClient.account.model.Coach;
+import com.dsh.course.mapper.TOperatorAuthWxMapper;
 import com.dsh.guns.core.base.controller.BaseController;
 import com.dsh.guns.core.common.constant.factory.PageFactory;
 import com.dsh.guns.core.util.SinataUtil;
@@ -24,16 +27,46 @@
 import com.dsh.guns.modular.system.model.*;
 import com.dsh.guns.modular.system.service.*;
 
+import com.dsh.guns.modular.system.util.AutoUpdateVerifierTest;
+import com.dsh.guns.modular.system.util.HttpRequestUtil;
+import com.dsh.guns.modular.system.util.PayMoneyUtil;
 import com.dsh.guns.modular.system.util.ResultUtil;
 
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.github.binarywang.wxpay.service.BankService;
+import com.github.binarywang.wxpay.v3.WechatPayUploadHttpPost;
+import com.mysql.cj.x.protobuf.MysqlxExpr;
+import com.sun.org.apache.bcel.internal.generic.NEW;
+import org.apache.commons.codec.digest.DigestUtils;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpPost;
 import org.apache.poi.ss.formula.functions.T;
+import org.springframework.beans.BeanUtils;
 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 org.springframework.web.client.RestTemplate;
 
 
+import javax.crypto.BadPaddingException;
+import javax.crypto.Cipher;
+import javax.crypto.IllegalBlockSizeException;
+import javax.crypto.NoSuchPaddingException;
+import javax.security.cert.X509Certificate;
+import java.io.*;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.security.InvalidKeyException;
+import java.security.NoSuchAlgorithmException;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
 
@@ -50,22 +83,34 @@
     @Autowired
     private TOperatorCityService operatorCityService;
     @Autowired
+    private IOperatorAuthService operatorAuthService;
+    @Autowired
+    private IOperatorAuthWxService operatorAuthWxService;
+    @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 获取运营商管理的省市
+     * 根据运营商id查询所有门店
      */
-    @RequestMapping(value = "/getCityByOperatorId")
+    @RequestMapping("/getStores")
     @ResponseBody
-    public List<TOperatorCity> getCityByOperatorId(@RequestBody Integer operatorId) {
-        return operatorCityService.list(new QueryWrapper<TOperatorCity>().eq("operatorId",operatorId));
+    public List<TStore> getStores(Integer id)
+    {
+        payMoneyUtil.getMessage();
+        return storeService.list(new QueryWrapper<TStore>()
+                .eq("operatorId",id)
+                .ne("state",3));
     }
 
     /**
@@ -143,38 +188,620 @@
         page.setRecords(list);
         return super.packForBT(page);
     }
+
     /**
-     * 跳转运营商商户去认证页面
+     * 支付宝跳转运营商商户去认证页面
      */
     @RequestMapping("/proportionAuth/{id}")
     public String proportionAuth(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);
         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{
-            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("/proportionAuthWx/{id}")
+    public String proportionAuthWx(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);
+        List<TCity> list = cityService.list(new LambdaQueryWrapper<TCity>().eq(TCity::getParentId, 0));
+        model.addAttribute("list",list);
+        model.addAttribute("data",data);
+        OperatorAuthAlipay info = operatorAuthService.getOne(new QueryWrapper<OperatorAuthAlipay>().eq("operatorId", id));
+        model.addAttribute("item",info);
+
+        if (info==null){
+            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{
+            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_proportionAuthWX.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);
+        OperatorUser operatorId = operatorUserService.getOne(new QueryWrapper<OperatorUser>()
+                .eq("operatorId", data.getId()));
+
+        model.addAttribute("data",data);
+        String state="";
+        switch (operatorId.getAlipayAudit()){
+            case 0:
+                state="未认证";
+                break;
+            case 1:
+                state="待审核";
+                break;
+            case 2:
+                state="已通过";
+                break;
+            case 3:
+                state="已拒绝";
+                break;
+        }
+        model.addAttribute("state",state);
+        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);
+            List<TCity> list5 = cityService.list(new LambdaQueryWrapper<TCity>().eq(TCity::getParentId, 1));
+            model.addAttribute("list5",list5);
+        }
+        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("/proportionAuth1Wx/{id}")
+    public String proportionAuth1Wx(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);
+        OperatorUser operatorId = operatorUserService.getOne(new QueryWrapper<OperatorUser>()
+                .eq("operatorId", data.getId()));
+        model.addAttribute("data",data);
+        OperatorAuth info = operatorAuthWxService.getOne(new QueryWrapper<OperatorAuth>()
+                .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);
+            List<TCity> list5 = cityService.list(new LambdaQueryWrapper<TCity>().eq(TCity::getParentId, 1));
+            model.addAttribute("list5",list5);
+        }
+        model.addAttribute("bodyType",info.getBodyType());
+        model.addAttribute("accountType",info.getAccountType());
+        model.addAttribute("useType",info.getAccountType());
+        model.addAttribute("cardType","");
+        model.addAttribute("reasons",info.getRefuseReason());
+        // 【申请状态】 枚举值:
+        //CHECKING:资料校验中
+        //ACCOUNT_NEED_VERIFY:待账户验证
+        //AUDITING:审核中
+        //REJECTED:已驳回
+        //NEED_SIGN:待签约
+        //FINISH:完成
+        //FROZEN:已冻结
+        //CANCELED:已作废
+        switch (info.getApplymentState()){
+            case "CHECKING":
+                model.addAttribute("applymentState","资料校验中");
+                break;
+            case "ACCOUNT_NEED_VERIFY":
+                model.addAttribute("applymentState","待账户验证");
+                break;
+            case "AUDITING":
+                model.addAttribute("applymentState","审核中");
+                break;
+            case "REJECTED":
+                model.addAttribute("applymentState","已驳回");
+                break;
+            case "NEED_SIGN":
+                model.addAttribute("applymentState","待签约");
+                break;
+            case "FINISH":
+                model.addAttribute("applymentState","完成");
+                break;
+            case "FROZEN":
+                model.addAttribute("applymentState","已冻结");
+                break;
+            case "CANCELED":
+                model.addAttribute("applymentState","已作废");
+                break;
+        }
+        if (info.getSignState()!=null){
+            switch (info.getApplymentState()){
+                case "CHECKING":
+                    model.addAttribute("applymentState","资料校验中");
+                    break;
+                case "ACCOUNT_NEED_VERIFY":
+                    model.addAttribute("applymentState","待账户验证");
+                    break;
+                case "AUDITING":
+                    model.addAttribute("applymentState","审核中");
+                    break;
+                case "REJECTED":
+                    model.addAttribute("applymentState","已驳回");
+                    break;
+                case "NEED_SIGN":
+                    model.addAttribute("applymentState","待签约");
+                    break;
+                case "FINISH":
+                    model.addAttribute("applymentState","完成");
+                    break;
+                case "FROZEN":
+                    model.addAttribute("applymentState","已冻结");
+                    break;
+                case "CANCELED":
+                    model.addAttribute("applymentState","已作废");
+                    break;
+            }
+        }
+
+        model.addAttribute("state",info.getApplymentState());
+        if (info.getSignState() == null){
+            model.addAttribute("signState",0);
+
+        }else{
+            model.addAttribute("signState",info.getSignState());
+
+        }
+        // todo 查询申请单状态
+        model.addAttribute("accountName",info.getSignState());
+        model.addAttribute("accountNo",info.getSignState());
+        model.addAttribute("payAmount",info.getSignState());
+        model.addAttribute("destinationAccountNumber",info.getSignState());
+        model.addAttribute("destinationAccountName",info.getSignState());
+        model.addAttribute("destinationAccountBank",info.getSignState());
+        model.addAttribute("city",info.getSignState());
+        model.addAttribute("remark",info.getSignState());
+        model.addAttribute("deadline",info.getSignState());
+        model.addAttribute("signState",info.getSignState());
+
+//            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_infoWX.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 url = "https://ccdcapi.alipay.com/validateAndCacheCardInfo.json?_input_charset=utf-8&" +
+//                "cardNo=6217003800041315031&cardBinCheck=true";
+//        HashMap<String, String> hashMap = new HashMap<>();
+//        String result = HttpRequestUtil.postRequest(url,hashMap);
+//        System.err.println(result);
+//        JSONObject json = JSONObject.parseObject(result);
+//        String bank = json.getString("bank");
+//        String cardType = json.getString("cardType");
+//        System.err.println(bank);
+//        System.err.println(cardType);
+//
+//    }
+    public static String rsaEncryptOAEP(String message, X509Certificate certificate)
+            throws IllegalBlockSizeException, IOException {
+        try {
+            Cipher cipher = Cipher.getInstance("RSA/ECB/OAEPWithSHA-1AndMGF1Padding");
+            cipher.init(Cipher.ENCRYPT_MODE, certificate.getPublicKey());
+            byte[] data = message.getBytes("utf-8");
+            byte[] cipherdata = cipher.doFinal(data);
+            return Base64.getEncoder().encodeToString(cipherdata);
+        } catch (NoSuchAlgorithmException | NoSuchPaddingException e) {
+            throw new RuntimeException("当前Java环境不支持RSA v1.5/OAEP", e);
+        } catch (InvalidKeyException e) {
+            throw new IllegalArgumentException("无效的证书", e);
+        } catch (IllegalBlockSizeException | BadPaddingException e) {
+            throw new IllegalBlockSizeException("加密原串的长度不能超过214字节");
+        }
+    }
+
+    /**
+     * 微信商户认证提交
+     */
+    @RequestMapping(value = "/wxAuth")
+    @ResponseBody
+    public Object wxAuth(Integer operatorId,String bodyType,String businessName,String businessNumber,String companyAddress,
+                         String aliasName,
+                         String license,String legalPhone,
+                         String legalEmail,
+                         String legalPerson,String legalAddress,
+                         String IDCardTime,String IDCardEnd,String tradeTime,String endTime,
+                         String leagleNumber,String legalFront,String legalBack,
+                         String bankCard,String bankCardTwo,Integer useType,String bank,String bankName,
+                         String accountName,String provinceCode,String province,String cityCode,String city,
+                         String isBenefits,
+                         String benefitsName,
+                         String benefitsFront,
+                         String benefitsBack,
+                         String benefitsNumber,
+                         String benefitsStartTime,
+                         String benefitsEndTime,
+                         String benefitsAddress
+                        ) {
+        OperatorAuth operatorId1 = operatorAuthWxService.getOne(new QueryWrapper<OperatorAuth>()
+                .eq("operatorId", operatorId));
+        TOperator byId = operatorService.getById(operatorId);
+        Integer userId1 = byId.getUserId();
+        OperatorUser userId2 = operatorUserService.getOne(new QueryWrapper<OperatorUser>()
+                .eq("userId", userId1));
+        userId2.setWechatAudit(1);
+        // 2是企业 4个体
+        if (bodyType.equals("2")){
+            userId2.setWechatType(2);
+        }else{
+            userId2.setWechatType(4);
+        }
+        operatorUserService.updateById(userId2);
+        if (null == endTime || "".equals(endTime)){
+            endTime = "长期";
+        }
+        if (null == IDCardEnd || "".equals(IDCardEnd)){
+            IDCardEnd = "长期";
+        }
+        OperatorAuth operatorAuth = new OperatorAuth();
+
+
+        operatorAuth.setOperatorId(operatorId);
+        operatorAuth.setBodyType(bodyType);
+        operatorAuth.setAliasName(aliasName);
+        operatorAuth.setBusinessName(businessName);
+        operatorAuth.setAccountType(useType);
+        operatorAuth.setBusinessNumber(businessNumber);
+        operatorAuth.setLegalRepresentative(legalPerson);
+        operatorAuth.setRegisterAddress(companyAddress);
+        operatorAuth.setBusinessTerm(tradeTime);
+        operatorAuth.setBusinessEnd(endTime);
+        operatorAuth.setLegalPerson(legalPerson);
+        operatorAuth.setLeagleNumber(leagleNumber);
+        operatorAuth.setLegalTerm(IDCardTime);
+        operatorAuth.setLegalEnd(IDCardEnd);
+        operatorAuth.setLegalEmail(legalEmail);
+        operatorAuth.setLegalAddress(legalAddress);
+        operatorAuth.setBusinessPicture(license);
+        operatorAuth.setLegalFront(legalFront);
+        operatorAuth.setLegalBack(legalBack);
+        if (!StringUtils.hasLength(license))operatorAuth.setBusinessPicture(null);
+        if (!StringUtils.hasLength(legalFront))operatorAuth.setLegalFront(null);
+        if (!StringUtils.hasLength(legalBack))operatorAuth.setLegalBack(null);
+        operatorAuth.setBank(bank);
+        operatorAuth.setAccountName(accountName);
+        operatorAuth.setProvince(province);
+        operatorAuth.setProvinceCode(provinceCode);
+        operatorAuth.setCity(city);
+        operatorAuth.setCityCode(cityCode);
+        operatorAuth.setBankName(bankName);
+        operatorAuth.setBankNumber(bankCard);
+        operatorAuth.setAuditState(0);
+        operatorAuth.setName(legalPerson);
+        operatorAuth.setLegalPhone(legalPhone);
+        operatorAuth.setPhone(legalPhone);
+        operatorAuth.setNumber(leagleNumber);
+        operatorAuth.setBankCardTwo(bankCardTwo);
+        operatorAuth.setIsBenefits(isBenefits);
+
+        if (isBenefits.equals("true")){
+            operatorAuth.setBenefitsName(legalPerson);
+            operatorAuth.setBenefitsFront(legalFront);
+            operatorAuth.setBenefitsBack(legalBack);
+            operatorAuth.setBenefitsNumber(leagleNumber);
+            operatorAuth.setBenefitsStartTime(IDCardTime);
+            operatorAuth.setBenefitsEndTime(IDCardEnd);
+            operatorAuth.setBenefitsAddress(legalAddress);
+            benefitsName = legalPerson;
+            benefitsFront = legalFront;
+            benefitsBack =legalBack;
+            benefitsNumber =leagleNumber;
+            benefitsStartTime =IDCardTime;
+            benefitsEndTime =IDCardEnd;
+            benefitsAddress = legalAddress;
+        }
+        LocalDateTime currentDateTime = LocalDateTime.now();
+        // 格式化日期和时间信息
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
+        String formattedDateTime = currentDateTime.format(formatter);
+        // 生成随机数,填充剩余位数
+        Random random = new Random();
+        StringBuilder randomPart = new StringBuilder();
+        for (int i = 0; i < 3; i++) {
+            // 大写字母
+            randomPart.append((char) (random.nextInt(26) + 'A'));
+        }
+        // 组合业务申请编号 若申请单被驳回,可填写相同的“业务申请编号”,即可覆盖修改原申请单信息 。
+        String orderNumber = formattedDateTime + randomPart;
+        if (operatorId1 == null){
+            operatorAuth.setOutBizNo(orderNumber);
+            operatorAuth.setAuditState(1);
+            operatorAuth.setApplymentState("CHECKING");
+            operatorAuthWxService.save(operatorAuth);
+        }else{
+            operatorAuth.setId(operatorId1.getId());
+            operatorAuth.setBenefitsFront(operatorId1.getLegalFront());
+            operatorAuth.setBenefitsBack(operatorId1.getLegalBack());
+            BeanUtils.copyProperties(operatorAuth,operatorId1);
+            operatorId1.setAuditState(1);
+            operatorId1.setApplymentState("CHECKING");
+            operatorAuthWxService.updateById(operatorId1);
+        }
+        String param="{"+
+                "\"out_request_no\" :"+ "\""+orderNumber+"\""+","+
+                "    \"organization_type\" :"+"\""+bodyType+"\""+","+
+                "    \"finance_institution\" : false,\n" +
+                "    \"business_license_info\" : {\n" +
+                // 主体为“个体工商户/企业”时,不填。
+//                "cert_type:" + "CERTIFICATE_TYPE_2388,"+
+                "      \"business_license_copy\" :"+ "\""+license+"\""+","+
+                "      \"business_license_number\" : "+"\""+businessNumber+"\""+","+
+                "      \"merchant_name\" : "+ "\""+businessName+"\""+","+
+                "      \"legal_person\" : "+ "\""+legalPerson+"\""+","+
+                "\"company_address\" :"+ "\""+companyAddress+"\""+","+
+                "      \"business_time\" : \"[\\\\\\\""+tradeTime+"\\\\\\\",\\\\\\\""+endTime+"\\\\\\\"]\"\n" +
+                "    },\n" +
+//            "finance_institution_info:" +" {"+
+//                "finance_type:" + "BANK_AGENT,"+
+//                        "finance_license_pics:" +"["+
+//                "example_finance_license_pics"+
+//      "]},"+
+//            "id_holder_type:" + "LEGAL,"+
+                "    \"id_doc_type\" : \"IDENTIFICATION_TYPE_MAINLAND_IDCARD\",\n" +
+//                    "authorize_letter_copy:" + "47ZC6GC-vnrbEny_Ie_An5-tCpqxucuxi-vByf3Gjm7KEIUv0OF4wFNIO4kqg05InE4d2I6_H7I4,"+
+                "    \"id_card_info\" : {\n" +
+                "      \"id_card_copy\" : "+ "\""+legalFront+"\""+","+
+                "      \"id_card_national\" : "+ "\""+legalBack+"\""+","+
+                "      \"id_card_name\" : "+ "\""+legalPerson+"\""+","+
+                "      \"id_card_number\" : "+ "\""+leagleNumber+"\""+","+
+                "      \"id_card_address\" : "+ "\""+legalAddress+"\""+","+
+                "      \"id_card_valid_time_begin\" : "+ "\""+IDCardTime+"\""+","+
+                "      \"id_card_valid_time\" : "+ "\""+IDCardEnd+"\""+","+
+//            "id_doc_info:"  +
+//                "{id_doc_name:" + "jTpGmxUX3FBWVQ5NJTZvlKX_gdU4cRz7z5NxpnFuAxhBTEO_PvWkfSCJ3zVIn001D8daLC-ehEuo0BJqRTvDujqhThn4ReFxikqJ5YW6zFQ,"+
+//                        "id_doc_number:" + "jTpGmxUX3FBWVQ5NJTZvlKX_gdU4cRz7z5NxpnFuAxhBTEO_PvWkfSCJ3zVIn001D8daLC-ehEuo0BJqRTvDujqhThn4ReFxikqJ5YW6zFQ,"+
+//                        "id_doc_copy:" + "47ZC6GC-vnrbEny__Ie_An5-tCpqxucuxi-vByf3Gjm7KE53JXvGy9tqZm2XAUf-4KGprrKhpVBDIUv0OF4wFNIO4kqg05InE4d2I6_H7I4,"+
+//                        "id_doc_copy_back:" + "47ZC6GC-vnrbEny__Ie_An5-tCpqxucuxi-vByf3Gjm7KE53JXvGy9tqZm2XAUf-4KGprrKhpVBDIUv0OF4wFNIO4kqg05InE4d2I6_H7I4,"+
+//                        "id_doc_address:" + "jTpGmxUX3FBWVQ5NJTZvlKX_gdU4cRz7z5NxpnFuAxhBTEO_PvWkfSCJ3zVIn001D8daLC-ehEuo0BJqRTvDujqhThn4ReFxikqJ5YW6zFQ,"+
+//                        "doc_period_begin:" + "2019-06-06,"+
+//                        "doc_period_end:" + "2020-01-02},"+
+
+                "    \"owner\" : true,\n" +
+                "    \"account_info\" : {\n" +
+                "      \"bank_account_type\" :  "+ "\""+useType+"\""+","+
+                "      \"account_bank\" : "+ "\""+bank+"\""+","+
+                "      \"account_name\" : "+ "\""+accountName+"\""+","+
+                "      \"bank_address_code\" :"+ "\""+cityCode+"\""+","+
+                "      \"bank_branch_id\" : "+ "\""+bankCardTwo+"\""+","+
+                "      \"bank_name\" : "+ "\""+bankName+"\""+","+
+                "      \"account_number\" : "+ "\""+bankCard+"\""+","+
+                "    \"contact_info\" : {\n" +
+                "      \"contact_type\" : \"65\",\n" +
+                "      \"contact_name\" :"+ "\""+legalPerson+"\""+","+
+                "      \"contact_id_doc_type\" : \"IDENTIFICATION_TYPE_MAINLAND_IDCARD\",\n" +
+                "      \"contact_id_card_number\" : "+ "\""+leagleNumber+"\""+","+
+                "      \"contact_id_doc_copy\" : "+ "\""+legalFront+"\""+","+
+                "      \"contact_id_doc_copy_back\" :"+ "\""+legalBack+"\""+","+
+//              "contact_id_doc_period_begin:"+  "2019-06-06,"+
+//              "contact_id_doc_period_end:" + "2026-06-06,"+
+//              "business_authorization_letter:" + "47ZC6GC-vnrbEny_Ie_An5-tCpqxucuxi-vByf3Gjm7KEIUv0OF4wFNIO4kqg05InE4d2I6_H7I4,"+
+                "      \"mobile_phone\" : "+ "\""+legalPhone+"\""+","+
+                "      \"contact_email\" : "+ "\""+legalEmail+"\""+
+                "    },\n" +
+                "    \"sales_scene_info\" : {\n" +
+                "      \"store_name\" : \"爱烧烤\",\n" +
+                "      \"store_url\" : \"http://www.qq.com\",\n" +
+                "      \"store_qr_code\" : \"jTpGmxUX3FBWVQ5NJTZvlKX_gdU4cRz7z5NxpnFuAxhBTEO_PvWkfSCJ3zVIn001D8daLC-ehEuo0BJqRTvDujqhThn4ReFxikqJ5YW6zFQ\",\n" +
+                "      \"mini_program_sub_appid\" : \"wxa123344545577\"\n" +
+                "    },\n" +
+                "    \"settlement_info\" : {\n" ;
+        if (Integer.parseInt(bodyType) == 4){
+            param =  param+"      \"settlement_id\" : 802,\n" +
+                    "      \"qualification_type\" : \"休闲娱乐/旅游服务\"\n" +"    },\n" ;
+        }else{
+            param =  param+"      \"settlement_id\" : 800,\n" +
+                    "      \"qualification_type\" : \"休闲娱乐/旅游服务\"\n" +"    },\n" ;
+        }
+        param+= "    \"merchant_shortname\" : "+ "\""+aliasName+"\""+
+
+//                    "qualifications:" + "[\"jTpGmxUX3FBWVQ5NJTZvlKX_gdU4cRz7z5NxpnFuAxhBTEO_PvWkfSCJ3zVIn001D8daLC-ehEuo0BJqRTvDujqhThn4ReFxikqJ5YW6zFQ\",\"47ZC6GC-vnrbEny__Ie_An5-tCpqxucuxi-vByf3Gjm7KE53JXvGy9tqZm2XAUf-4KGprrKhpVBDIUv0OF4wFNIO4kqg05InE4d2I6_H7I4\"],"+
+//                    "business_addition_pics:" + "[\"jTpGmxUX3FBWVQ5NJTZvlKX_gdU4cRz7z5NxpnFuAxhBTEO_PvWkfSCJ3zVIn001D8daLC-ehEuo0BJqRTvDujqhThn4ReFxikqJ5YW6zFQ\",\"47ZC6GC-vnrbEny__Ie_An5-tCpqxucuxi-vByf3Gjm7KE53JXvGy9tqZm2XAUf-4KGprrKhpVBDIUv0OF4wFNIO4kqg05InE4d2I6_H7I4\"],"+
+//                    "business_addition_desc:" + "特殊情况,说明原因,"+
+//                    "ubo_info_list:"+  "[{"+
+                "\"ubo_info_list\" : [\n" +
+                "      {\n" +
+                "        \"ubo_id_doc_type\" : \"IDENTIFICATION_TYPE_MAINLAND_IDCARD\",\n" +
+                "        \"ubo_id_doc_copy\" : "+ "\""+benefitsFront+"\""+
+                "        \"ubo_id_doc_copy_back\" : "+ "\""+benefitsBack+"\""+
+                "        \"ubo_id_doc_name\" : "+ "\""+benefitsName+"\""+
+                "        \"ubo_id_doc_number\" : "+ "\""+benefitsNumber+"\""+
+                "        \"ubo_id_doc_address\" : "+ "\""+benefitsAddress+"\""+
+                "        \"ubo_id_doc_period_begin\" : "+ "\""+benefitsStartTime+"\""+
+                "        \"ubo_id_doc_period_end\" : "+ "\""+benefitsEndTime+"\""+
+                "      }\n" +
+                "    ]"+
+                "  }\n"+
+                "  }\n"+
+                "  }\n";
+
+
+        // 使用 Jackson 解析 JSON
+        ObjectMapper objectMapper = new ObjectMapper();
+        try {
+            // 将 JSON 字符串解析为 Map
+            Map<String, Object> map = objectMapper.readValue(param, Map.class);
+
+            // 输出 Map 中的内容
+            for (Map.Entry<String, Object> entry : map.entrySet()) {
+                System.out.println(entry.getKey() + ": " + entry.getValue());
+            }
+            System.err.println(map);
+            String s = HttpRequestUtil.postRequest1("https://api.mch.weixin.qq.com/v3/ecommerce/applyments/", map);
+            System.err.println("返回结果:"+s);
+            JSONObject jsonObject = JSON.parseObject(s);
+            String string = jsonObject.getString("out_request_no");
+            // 获取业务申请编号 后续用该字段查询申请状态
+            operatorAuth.setOrderNo(string);
+            System.err.println(jsonObject);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        System.err.println(param);
+
+        return SUCCESS_TIP;
     }
 
     /**
@@ -182,23 +809,54 @@
      */
     @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));
+        userId2.setAlipayAudit(1);
+        // 01是企业
+        if (bodyType.equals("01")){
+            userId2.setAlipayType(2);
+        }else{
+            userId2.setAlipayType(1);
+        }
+        operatorUserService.saveOrUpdate(userId2);
+        OperatorAuthAlipay data = operatorAuthService.getOne(new QueryWrapper<OperatorAuthAlipay>().eq("operatorId", operatorId));
+        // 调用支付宝接口 通过银行卡号获取银行信息
+        String url = "https://ccdcapi.alipay.com/validateAndCacheCardInfo.json?_input_charset=utf-8&" +
+                "cardNo="+bankCard+"&cardBinCheck=true";
+        HashMap<String, String> hashMap = new HashMap<>();
+        String result = HttpRequestUtil.postRequest(url,hashMap);
+        System.err.println(result);
+        JSONObject json2 = JSONObject.parseObject(result);
+        String bank = json2.getString("bank");
+        String cardType1 = json2.getString("cardType");
+        // 根据银行卡号查询所属银行
+        String group=bank;
+//        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());
@@ -207,182 +865,213 @@
                 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{
+            operatorAuth.setLegalFront(legalFront);
+            operatorAuth.setLegalBack(legalBack);
+            operatorAuth.setIqImage(iqImage);
+            operatorAuth.setCertImage(license);
+            if(license==null || license.equals("")){
+                // 未上传营业执照
+                return 5001;
+            }
+            if(legalFront==null || legalFront.equals("")){
+                // 未上传法人身份证正面照
+                return 5002;
+            }
+            if(legalBack==null || legalBack.equals("")){
+                // 未上传法人身份证背面照
+                return 5003;
             }
         }
         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);
+        if(StringUtils.hasLength(province)&& province.equals("请选择省")){
+            operatorAuth.setProvince(null);
+        }
+        if(StringUtils.hasLength(city)&& province.equals("请选择市")){
+            operatorAuth.setCity(null);
+        }
+        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();
+        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","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");
-        AlipayMerchantIndirectAuthorderCreateRequest request = new AlipayMerchantIndirectAuthorderCreateRequest();
+        legalBack = uploadImg(legalBack).toString();
+        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")){
+                "  \"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+"\"," +
+                "    }" +
+                "  ],";
+        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 (accountType.equals("bankCard")){
+            type = accountType;
+            account = bankCard;
+        }else{
+            type =  accountType;
+            account = alipayAccount;
+        }
+        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
-                    + bene+
-                    "}");
+                    + biz_cards+res);
         }else{
             request.setBizContent(param
-                    +
-                    "}");
+                    +res);
         }
-
-        AlipayMerchantIndirectAuthorderCreateResponse response = null;
+        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);
-                    userId1.setWechatAudit(1);
-                }
+            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("调用失败");
+            Integer userId = operatorService.getById(operatorId).getUserId();
+            OperatorUser user = operatorUserService.getOne(new QueryWrapper<OperatorUser>().eq("userId", userId));
+            user.setAlipayAudit(3);
+            operatorUserService.saveOrUpdate(user);
+            operatorAuth.setRefuseReason(response.getSubMsg());
+            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 = "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==";
-        String alipayPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApCzq4BIE4gMdEXxIAAUbiMpSytkzp+LVLVsBtji87rFGfWUcnrr3NKftaw0WtRu+36d1nDVOWW4CmgsOPyj1GOFoTcJOR/BqyIriwyLxpuMS8qgOqGJZXi+W4Nw2AJL6iMVwY2eI8F1G10gACK2I9TNJRzHh3tMTA6ItysbGoekRDtn6Xrkh5V6cyHQjLw0Q6MJK/68XT6/LWzarDEEYrSnIevOydMY32ptAgm5fp/h08M2khCmI6CuMWKmc87dPpd2krGVTALqprAQvB74AIqO+5DE0fN4LoitOYXAtWDCEF4kHN0hQUygIEGCwtMgEVzkf92VLlCX35YtDhWd1yQIDAQAB";
+        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("2021004123692417");
-        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;
@@ -419,26 +1108,176 @@
     }
 
     /**
+     * 查询进件申请单审核状态
+     */
+    public  JSONObject queryState(String orderNo) {
+        String url = "https://api.mch.weixin.qq.com/v3/ecommerce/applyments/out-request-no/"+orderNo;
+        String req1 = HttpRequestUtil.getReq1(url, new HashMap<>());
+        System.err.println("查询申请单审核状态字符串"+req1);
+        JSONObject jsonObject = JSON.parseObject(req1);
+        System.err.println("查询申请单审核状态Json"+jsonObject);
+        String applymentState = jsonObject.getString("applyment_state");
+        String outBizNo = jsonObject.getString("out_request_no");
+        OperatorAuth operatorAuth = operatorAuthWxService.getOne(
+                new QueryWrapper<OperatorAuth>()
+                .eq("outBizNo", outBizNo));
+        OperatorUser operatorUser = operatorUserService.getOne(new QueryWrapper<OperatorUser>()
+                .eq("operatorId", operatorAuth.getOperatorId()));
+        // 审核状态
+        operatorAuth.setApplymentState(applymentState);
+        if (applymentState.equals("REJECTED") || applymentState.equals("FROZEN")){
+            operatorUser.setWechatAudit(3);
+            operatorAuth.setAuditState(2);
+            // 如果被拒 赋值拒绝原因
+            operatorAuth.setRefuseReason(jsonObject.getJSONObject("audit_detail").getString("reject_reason"));
+        }
+        if (applymentState.equals("NEED_SIGN")){
+            operatorAuth.setSignUrl(jsonObject.getString("sign_url"));
+            operatorAuth.setMerchantNumber(jsonObject.getString("sub_mchid"));
+        }
+        if (applymentState.equals("FINISH")){
+            operatorAuth.setMerchantNumber(jsonObject.getString("sub_mchid"));
+            operatorUser.setWechatAudit(2);
+            operatorAuth.setAuditState(1);
+        }
+        if (applymentState.equals("ACCOUNT_NEED_VERIFY")){
+            operatorAuth.setLegalValidationUrl(jsonObject.getString("legal_validation_url"));
+        }
+        return jsonObject;
+        /**
+         * {
+         *   "applyment_state" : "FINISH",
+         *   "applyment_state_desc" : "审核中",
+         *   "sign_url" : "https://pay.weixin.qq.com/public/apply4ec_sign/s?applymentId=2000002126198476&sign=b207b673049a32c858f3aabd7d27c7ec",
+         *   "sub_mchid" : "1542488631",
+         *   "account_validation" : {
+         *     "account_name" : "aOf7Gk2qT26kakkuTZpbFAn7Mb7xcar0LlQaYoi3+LnnWwgAsfaUUTg9+GmYJq6YCz+RiluWHeHFq1lt8n3eIkF0laVvqmAU80xIWGZgWJnRmnRuZxsg0HJZfnUac2JfqyuL8OoyM2YSuYDqdsyvcOlgUQgq8MPCR6pmvhBCmIeJvnVSm8J+L+yx912itUmTDxhdBlu1CFBIUefME9nYB70vCVTNAVXgURkf65mjHMBiE9Y+wrPZVmTIIz3C3PtPVMZYDEvBT4rDdICA3ZYXshYqeOSslSjSMf+MhhC4oaujiISFzq3AE+as7mAEDJly+DgRuVs74msmKUH8pl+3oA==",
+         *     "account_no" : "aOf7Gk2qT26kakkuTZpbFAn7Mb7xcar0LlQaYoi3+LnnWwgAsfaUUTg9+GmYJq6YCz+RiluWHeHFq1lt8n3eIkF0laVvqmAU80xIWGZgWJnRmnRuZxsg0HJZfnUac2JfqyuL8OoyM2YSuYDqdsyvcOlgUQgq8MPCR6pmvhBCmIeJvnVSm8J+L+yx912itUmTDxhdBlu1CFBIUefME9nYB70vCVTNAVXgURkf65mjHMBiE9Y+wrPZVmTIIz3C3PtPVMZYDEvBT4rDdICA3ZYXshYqeOSslSjSMf+MhhC4oaujiISFzq3AE+as7mAEDJly+DgRuVs74msmKUH8pl+3oA==",
+         *     "pay_amount" : 124,
+         *     "destination_account_number" : "7222223333322332",
+         *     "destination_account_name" : "财付通支付科技有限公司",
+         *     "destination_account_bank" : "招商银行威盛大厦支行",
+         *     "city" : "深圳",
+         *     "remark" : "入驻账户验证",
+         *     "deadline" : "2018-12-10 17:09:01"
+         *   },
+         *   "audit_detail" : [
+         *     {
+         *       "param_name" : "id_card_copy",
+         *       "reject_reason" : "身份证背面识别失败,请上传更清晰的身份证图片。"
+         *     }
+         *   ],
+         *   "legal_validation_url" : "https://pay.weixin.qq.com/public/apply4ec_sign/s?applymentId=2000002126198476&sign=b207b673049a32c858f3aabd7d27c7ec",
+         *   "out_request_no" : "APPLYMENT_00000000001",
+         *   "applyment_id" : 2000002124775691,
+         *   "sign_state" : "SIGNED"
+         * }
+         */
+    }
+
+    /**
      * 分账比例提交
      */
     @RequestMapping(value = "/proportion")
     @ResponseBody
-    public Object auth(String alipayProportion,String wechatProportion,Integer operatorIdOne ) {
-        OperatorUser id = operatorUserService.getOne(new QueryWrapper<OperatorUser>().eq("id", operatorIdOne));
+    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);
         operatorUserService.updateById(id);
         return SUCCESS_TIP;
     }
+
+
+//    public static void main(String[] args) throws URISyntaxException {
+//        String filePath = "https://we-park-life.oss-cn-beijing.aliyuncs.com/img/a5e24fc4b13b4ea48bb2455ad8662a5d.jpg"; // 替换成你的OSS图片链接
+//        String string = UUID.randomUUID().toString();
+//        try {
+//            URL url = new URL(filePath);
+//            InputStream inputStream = url.openStream();
+//            // 这里可以根据需求处理 inputStream,比如保存到本地文件
+//            // 例如保存到本地文件
+//            saveInputStreamToFile(inputStream, "D:\\tempImg\\"+string+".jpg");
+//        } catch (IOException e) {
+//            e.printStackTrace();
+//        }
+//        URI uri = new URI("https://api.mch.weixin.qq.com/v3/merchant/media/upload");
+//        File file = new File("D:\\tempImg\\"+string+".jpg");
+//        try (FileInputStream ins1 = new FileInputStream(file)) {
+//            String sha256 = DigestUtils.sha256Hex(ins1);
+//            try (InputStream ins2 = new FileInputStream(file)) {
+//                HttpPost request = new WechatPayUploadHttpPost.Builder(uri)
+//                        .withImage(file.getName(), sha256, ins2)
+//                        .build();
+////                CloseableHttpResponse response1 = httpClient.execute(request);
+//            }
+//        } catch (IOException e) {
+//            throw new RuntimeException(e);
+//        }
+//    }
+    private static void saveInputStreamToFile(InputStream inputStream, String filePath) throws IOException {
+        OutputStream outputStream = new FileOutputStream(filePath);
+        byte[] buffer = new byte[1024];
+        int bytesRead;
+        while ((bytesRead = inputStream.read(buffer)) != -1) {
+            outputStream.write(buffer, 0, bytesRead);
+        }
+        outputStream.close();
+        inputStream.close();
+    }
+    /**
+     * 微信商户认证上传图片
+     */
+    @RequestMapping(value = "/wxUpload")
+    @ResponseBody
+    public Object wxUpload(String img) throws URISyntaxException, FileNotFoundException {
+        String filePath = "https://we-park-life.oss-cn-beijing.aliyuncs.com/img/a5e24fc4b13b4ea48bb2455ad8662a5d.jpg"; // 替换成你的OSS图片链接
+        String string = UUID.randomUUID().toString();
+        try {
+            URL url = new URL(filePath);
+            InputStream inputStream = url.openStream();
+            // 这里可以根据需求处理 inputStream,比如保存到本地文件
+            // 例如保存到本地文件
+
+
+            saveInputStreamToFile(inputStream, "D:\\tempImg\\"+string+".jpg");
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        URI uri = new URI("https://api.mch.weixin.qq.com/v3/merchant/media/upload");
+        File file = new File("D:\\tempImg\\"+string+".jpg");
+        try (FileInputStream ins1 = new FileInputStream(file)) {
+            String sha256 = DigestUtils.sha256Hex(ins1);
+            try (InputStream ins2 = new FileInputStream(file)) {
+                HttpPost request = new WechatPayUploadHttpPost.Builder(uri)
+                        .withImage(file.getName(), sha256, ins2)
+                        .build();
+//                CloseableHttpResponse response1 = httpClient.execute(request);
+            }
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+        return null;
+    }
+    // 辅助方法:将 InputStream 转换为 FileInputStream
+    private static FileInputStream convertInputStreamToFileInputStream(InputStream inputStream) throws IOException {
+        // 将 InputStream 转为临时文件,然后返回其 FileInputStream
+        File tempFile = File.createTempFile("temp", null);
+        org.apache.commons.io.IOUtils.copy(inputStream, new java.io.FileOutputStream(tempFile));
+        return new FileInputStream(tempFile);
+    }
+
     /**
      * 跳转运营商设置分账比例页面
      */
     @RequestMapping("/proportion/{id}")
     public String proportion(Model model,@PathVariable("id") Integer id) {
         OperatorUser o = operatorUserService.getOne(new QueryWrapper<OperatorUser>().eq("operatorId", id));
-        model.addAttribute("operatorIdOne",o.getId());
+        model.addAttribute("id",id);
         model.addAttribute("alipayProportion",o.getAlipayProportion());
         model.addAttribute("wechatProportion",o.getWechatProportion());
+        model.addAttribute("alipayNum",o.getAlipayNum());
+        model.addAttribute("wechatNum",o.getWechatNum());
         return PREFIX + "OperatorUser_proportion.html";
     }
     /**
@@ -527,6 +1366,8 @@
         // 添加运营商商户认证
         operatorUser.setAlipayProportion("未设置");
         operatorUser.setWechatProportion("未设置");
+        operatorUser.setWechatAudit(0);
+        operatorUser.setAlipayAudit(0);
         operatorUserService.save(operatorUser);
         user.setObjectId(data.getId());
         userService.updateById(user);
@@ -602,48 +1443,59 @@
         data.setState(1);
         operatorService.updateById(data);
         if (type != 1){
-        if (SinataUtil.isNotEmpty(comArr)){
-            JSONArray jsonArray = JSON.parseArray(comArr);
-            int size = jsonArray.size();
-            for (int i = 0; i < size; i++) {
-                JSONObject jsonObject = jsonArray.getJSONObject(i);
-                TOperatorCity province = new TOperatorCity();
-                TOperatorCity city = new TOperatorCity();
-                TOperatorCity one1 = operatorCityService.getOne(new QueryWrapper<TOperatorCity>()
-                        .eq("name", jsonObject.getString("province"))
-                        .eq("operatorId", data.getId()));
-                // 省
-                if (one1==null){
-                    province.setName(jsonObject.getString("province"));
-                    province.setCode(jsonObject.getInteger("provinceCode"));
-                    province.setPid(0);
-                    province.setType(jsonObject.getInteger("areaType"));
-                    province.setOperatorId(data.getId());
-                    city.setPid(province.getId());
-                    operatorCityService.save(province);
-                    // 市
-                    if (!jsonObject.getString("city").equals("")){
-                        city.setName(jsonObject.getString("city"));
-                        city.setCode(jsonObject.getInteger("cityCode"));
+            if (SinataUtil.isNotEmpty(comArr)){
+                JSONArray jsonArray = JSON.parseArray(comArr);
+                int size = jsonArray.size();
+                for (int i = 0; i < size; i++) {
+                    JSONObject jsonObject = jsonArray.getJSONObject(i);
+                    TOperatorCity province = new TOperatorCity();
+                    TOperatorCity city = new TOperatorCity();
+                    TOperatorCity one1 = operatorCityService.getOne(new QueryWrapper<TOperatorCity>()
+                            .eq("name", jsonObject.getString("province"))
+                            .eq("operatorId", data.getId()));
+                    // 省
+                    if (one1==null){
+                        province.setName(jsonObject.getString("province"));
+                        province.setCode(jsonObject.getInteger("provinceCode"));
+                        province.setPid(0);
+                        province.setType(jsonObject.getInteger("areaType"));
+                        province.setOperatorId(data.getId());
                         city.setPid(province.getId());
-                        city.setType(jsonObject.getInteger("areaType"));
-                        city.setOperatorId(data.getId());
-                        operatorCityService.save(city);
-                    }
-                }else{
-                    // 市
-                    if (!jsonObject.getString("city").equals("")){
-                        city.setName(jsonObject.getString("city"));
-                        city.setCode(jsonObject.getInteger("cityCode"));
-                        city.setPid(one1.getId());
-                        city.setType(jsonObject.getInteger("areaType"));
-                        city.setOperatorId(data.getId());
-                        operatorCityService.save(city);
+                        operatorCityService.save(province);
+                        // 市
+                        if (!jsonObject.getString("city").equals("")){
+                            city.setName(jsonObject.getString("city"));
+                            city.setCode(jsonObject.getInteger("cityCode"));
+                            city.setPid(province.getId());
+                            city.setType(jsonObject.getInteger("areaType"));
+                            city.setOperatorId(data.getId());
+                            operatorCityService.save(city);
+                        }
+                    }else{
+                        // 市
+                        if (!jsonObject.getString("city").equals("")){
+                            city.setName(jsonObject.getString("city"));
+                            city.setCode(jsonObject.getInteger("cityCode"));
+                            city.setPid(one1.getId());
+                            city.setType(jsonObject.getInteger("areaType"));
+                            city.setOperatorId(data.getId());
+                            operatorCityService.save(city);
+                        }
                     }
                 }
             }
         }
-        }
         return ResultUtil.success("添加成功");
     }
-}
+
+
+    /**
+     * 获取所有运营商
+     * @return
+     */
+    @ResponseBody
+    @PostMapping("/getOperatorListAll")
+    public Object getOperatorListAll(){
+        return operatorService.list(new QueryWrapper<TOperator>().eq("state", 1));
+    }
+}
\ No newline at end of file

--
Gitblit v1.7.1