| | |
| | | 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; |
| | |
| | | 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; |
| | | |
| | | |
| | |
| | | @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查询所有门店 |
| | | */ |
| | | @RequestMapping("/getStores") |
| | | @ResponseBody |
| | | public List<TStore> getStores(Integer id) |
| | | { |
| | | payMoneyUtil.getMessage(); |
| | | return storeService.list(new QueryWrapper<TStore>() |
| | | .eq("operatorId",id) |
| | | .ne("state",3)); |
| | | } |
| | | |
| | | /** |
| | | * 跳转运营商管理首页 |
| | |
| | | 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; |
| | | } |
| | | |
| | | /** |
| | |
| | | */ |
| | | @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()); |
| | |
| | | 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; |
| | |
| | | } |
| | | |
| | | /** |
| | | * 查询进件申请单审核状态 |
| | | */ |
| | | 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"; |
| | | } |
| | | /** |
| | |
| | | // 添加运营商商户认证 |
| | | operatorUser.setAlipayProportion("未设置"); |
| | | operatorUser.setWechatProportion("未设置"); |
| | | operatorUser.setWechatAudit(0); |
| | | operatorUser.setAlipayAudit(0); |
| | | operatorUserService.save(operatorUser); |
| | | user.setObjectId(data.getId()); |
| | | userService.updateById(user); |
| | |
| | | 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)); |
| | | } |
| | | } |