44323
2024-01-30 987fd6c12a7dcfb2b6ae9ee585fc182d2d865040
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/OperatorController.java
@@ -5,34 +5,44 @@
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alipay.api.*;
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.CityManagerClient;
import com.dsh.course.feignClient.account.CoachClient;
import com.dsh.course.feignClient.account.CoachTypeClient;
import com.dsh.course.feignClient.account.model.CityManager;
import com.dsh.course.feignClient.account.model.Coach;
import com.dsh.course.feignClient.account.model.CoachSerchVO;
import com.dsh.course.feignClient.account.model.CoachType;
import com.dsh.guns.config.UserExt;
import com.dsh.guns.core.base.controller.BaseController;
import com.dsh.guns.core.common.constant.factory.PageFactory;
import com.dsh.guns.core.util.SinataUtil;
import com.dsh.guns.modular.system.controller.util.MD5;
import com.dsh.guns.modular.system.model.*;
import com.dsh.guns.modular.system.service.ICityService;
import com.dsh.guns.modular.system.service.IUserService;
import com.dsh.guns.modular.system.service.TOperatorCityService;
import com.dsh.guns.modular.system.service.TOperatorService;
import com.dsh.guns.modular.system.service.*;
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 io.swagger.models.auth.In;
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.text.SimpleDateFormat;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
@@ -49,9 +59,34 @@
    @Autowired
    private TOperatorCityService operatorCityService;
    @Autowired
    private IOperatorAuthService operatorAuthService;
    @Autowired
    private IOperatorUserService operatorUserService;
    @Autowired
    private IUserService userService;
    @Autowired
    private ICityService cityService;
    @Autowired
    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查询所有门店
     */
    @RequestMapping("/getStores")
    @ResponseBody
    public List<TStore> getStores(Integer id)
    {
        payMoneyUtil.getMessage();
        return storeService.list(new QueryWrapper<TStore>()
                .eq("operatorId",id)
                .ne("state",3));
    }
    /**
     * 跳转运营商管理首页
     */
@@ -129,6 +164,465 @@
    }
    /**
     * 跳转运营商商户去认证页面
     */
    @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("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_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);
            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(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);
    }
    /**
     * 支付宝商户认证提交
     */
    @RequestMapping(value = "/auth")
    @ResponseBody
    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();
        // 通过运营商id查询
        TOperator byId = operatorService.getById(operatorId);
        Integer userId1 = byId.getUserId();
        OperatorUser userId2 = operatorUserService.getOne(new QueryWrapper<OperatorUser>()
                .eq("userId", userId1));
        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(legalFront==null || legalFront.equals("")){
                legalFront = data.getLegalFront();
                operatorAuth.setLegalFront(data.getLegalFront());
            }
            if(legalBack==null || legalBack.equals("")){
                legalBack = data.getLegalBack();
                operatorAuth.setLegalBack(data.getLegalBack());
            }
            if(iqImage==null || iqImage.equals("")){
                iqImage = data.getIqImage();
                operatorAuth.setIqImage(data.getIqImage());
            }
            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.setBusinessName(businessName);
        operatorAuth.setBusinessNumber(businessNumber);
        operatorAuth.setCertImage(license);
        operatorAuth.setLegalPerson(legalPerson);
        operatorAuth.setLegalFront(legalFront);
        operatorAuth.setLegalBack(legalBack);
        operatorAuth.setLeagleNumber(leagleNumber);
        operatorAuth.setAccountType(accountType);
        operatorAuth.setBankName(bankName);
        operatorAuth.setAccountName(accountName);
        operatorAuth.setBankCard(bankCard);
        operatorAuth.setProvince(province);
        operatorAuth.setProvinceCode(provinceCode);
        operatorAuth.setCity(city);
        operatorAuth.setCityCode(cityCode);
        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.setRefuseReason("");
        operatorAuth.setZfbAccount(zfbAccount);
        // 将图片上传至阿里存储
        // 营业执照
        String string = uploadImg(license).toString();
        // 法人身份证正面照
        legalFront = uploadImg(legalFront).toString();
        // 法人身份证背面照
        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 = "{" +
                "  \"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+"\"," +
                "    }" +
                "  ],";
        // 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 (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
                    + biz_cards+res);
        }else{
            request.setBizContent(param
                    +res);
        }
        AntMerchantExpandIndirectZftCreateResponse response = null;
        try {
            response = alipayClient.execute(request);
        } catch (AlipayApiException e) {
            e.printStackTrace();
        }
        if(response.isSuccess()){
            System.out.println("调用成功");
            JSONObject json = JSONObject.parseObject(response.getBody());
            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.setRefuseReason("");
            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 {
            if (response.getCode().equals("40004")){
                String subMsg = response.getSubMsg();
                return ResultUtil.error(subMsg);
            }
        }
        return ResultUtil.success();
    }
    public static Object uploadImg(String img){
        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(aliAppid);
        alipayConfig.setPrivateKey(appPrivateKey);
        alipayConfig.setFormat("json");
        alipayConfig.setAlipayPublicKey(alipay_public_key);
        alipayConfig.setCharset("UTF8");
        alipayConfig.setSignType("RSA2");
        AlipayClient alipayClient = null;
        try {
            alipayClient = new DefaultAlipayClient(alipayConfig);
        } catch (AlipayApiException e) {
            e.printStackTrace();
        }
        // 这是一个1x1像素的图片流
        String imageBase64 = "iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAEUlEQVR42mP4TyRgGFVIX4UAI/uOgGWVNeQAAAAASUVORK5CYII=";
        // 下列FileItem中也可用直接读取本地文件的方式来获取文件
        // FileItem imageContent = new FileItem("本地文件的绝对路径");
        AntMerchantExpandIndirectImageUploadRequest request = new AntMerchantExpandIndirectImageUploadRequest();
        FileItem imageContent = new FileItem(img, Base64.getDecoder().decode(imageBase64));
        request.setImageContent(imageContent);
        request.setImageType("jpg");
        AntMerchantExpandIndirectImageUploadResponse response = null;
        try {
            response = alipayClient.execute(request);
        } catch (AlipayApiException e) {
            e.printStackTrace();
        }
        System.out.println(response.getBody());
        if (response.isSuccess()) {
            System.out.println("调用成功");
        } else {
            System.out.println("调用失败");
        }
        JSONObject json = JSONObject.parseObject(response.getBody());
        String sign = json.getString("ant_merchant_expand_indirect_image_upload_response");
        JSONObject r = JSONObject.parseObject(sign);
        String image_id = r.getString("image_id");
        return image_id;
    }
    /**
     * 分账比例提交
     */
    @RequestMapping(value = "/proportion")
    @ResponseBody
    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;
    }
    /**
     * 跳转运营商设置分账比例页面
     */
    @RequestMapping("/proportion/{id}")
    public String proportion(Model model,@PathVariable("id") Integer id) {
        OperatorUser o = operatorUserService.getOne(new QueryWrapper<OperatorUser>().eq("operatorId", id));
        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";
    }
    /**
     * 批量重置密码
     * @return
     */
@@ -140,7 +634,7 @@
            List<Integer> userIds = list.stream()
                    .map(TOperator::getUserId)
                    .collect(Collectors.toList());
            String a123456 = SecureUtil.md5("123456");
            String a123456 = SecureUtil.md5("a123456");
            List<User> users = userService.list(new QueryWrapper<User>().in("id", userIds));
            for (User user : users) {
                user.setPassword(a123456);
@@ -161,6 +655,18 @@
    @ResponseBody
    public Object changeState(@RequestBody CoachChangeStateVO vo){
        operatorService.changeState(vo);
        List<Integer> ids = vo.getIds();
        // 将运营商账号也冻结
        List<TOperator> list = operatorService.list(new QueryWrapper<TOperator>()
                .in("id",ids));
        // 用户ids
        List<Integer> collect = list.stream().map(TOperator::getUserId).collect(Collectors.toList());
        for (Integer integer : collect) {
            User user = new User();
            user.setId(integer);
            user.setStatus(vo.getState());
            userService.updateById(user);
        }
        return ResultUtil.success();
    }
    /**
@@ -168,7 +674,7 @@
     */
    @ResponseBody
    @RequestMapping(value = "/addOperator")
    public ResultUtil addOperator(String name,String userName,String phone,Integer type ,@RequestParam String comArr) {
    public ResultUtil addOperator(String name,String userName,String phone,Integer type , String comArr) {
        User one = userService.getOne(new QueryWrapper<User>().eq("name", name).eq("phone", phone));
        if (one!=null){
            return ResultUtil.error("当前管理员名称和电话已存在!");
@@ -177,6 +683,12 @@
        user.setName(userName);
        user.setPhone(phone);
        user.setObjectType(2);
        String s = MD5.md5("a123456");
        user.setPassword(s);
        user.setAccount(phone);
        user.setRoleid("2");
        user.setObjectType(2);
        user.setStatus(1);
        userService.save(user);
        TOperator data = new TOperator();
        data.setUserId(user.getId());
@@ -185,6 +697,22 @@
        data.setStatus(1);
        data.setState(1);
        operatorService.save(data);
        // 添加运营商认证数据
        OperatorUser operatorUser = new OperatorUser();
        operatorUser.setUserId(user.getId());
        operatorUser.setAlipay("支付宝");
        operatorUser.setWechat("微信");
        operatorUser.setAlipayType(3);
        operatorUser.setWechatType(3);
        operatorUser.setOperatorId(data.getId());
        // 添加运营商商户认证
        operatorUser.setAlipayProportion("未设置");
        operatorUser.setWechatProportion("未设置");
        operatorUser.setWechatAudit(0);
        operatorUser.setAlipayAudit(0);
        operatorUserService.save(operatorUser);
        user.setObjectId(data.getId());
        userService.updateById(user);
        if (SinataUtil.isNotEmpty(comArr)){
            JSONArray jsonArray = JSON.parseArray(comArr);
            int size = jsonArray.size();
@@ -226,6 +754,8 @@
                }
            }
        }
        return ResultUtil.success("添加成功");
    }
    /**
@@ -233,19 +763,19 @@
     */
    @ResponseBody
    @RequestMapping(value = "/updateOperator")
    public ResultUtil updateOperator(Integer id,String name,String userName,String phone,Integer type ,@RequestParam String comArr) {
    public ResultUtil updateOperator(Integer id,String name,String userName
            ,String phone,Integer type ,@RequestParam String comArr) {
        User one = userService.getOne(new QueryWrapper<User>().eq("name", name).eq("phone", phone));
        if (one!=null){
            return ResultUtil.error("当前管理员名称和电话已存在!");
        }
        operatorCityService.remove(new QueryWrapper<TOperatorCity>().eq("operatorId",id));
        User user = new User();
        User user = userService.getOne(new QueryWrapper<User>().eq("objectId", id).
                eq("objectType", 2));
        user.setName(userName);
        user.setAccount(phone);
        user.setPhone(phone);
        user.setObjectType(2);
        String a123456 = SecureUtil.md5("a123456");
        user.setPassword(a123456);
        userService.save(user);
        userService.updateById(user);
        TOperator data = new TOperator();
        data.setId(id);
        data.setUserId(user.getId());
@@ -255,47 +785,47 @@
        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("添加成功");
    }