puzhibing
2023-06-02 f604f87781d7cdae5571465a3bafffff53313028
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TAgentController.java
@@ -1,8 +1,12 @@
package com.stylefeng.guns.modular.system.controller.general;
import cn.hutool.crypto.SecureUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.stylefeng.guns.core.base.controller.BaseController;
import com.stylefeng.guns.core.base.tips.SuccessTip;
import com.stylefeng.guns.core.common.constant.state.ManagerStatus;
import com.stylefeng.guns.core.exception.GunsException;
import com.stylefeng.guns.core.exception.ServiceExceptionEnum;
import com.stylefeng.guns.core.shiro.ShiroKit;
@@ -14,6 +18,10 @@
import com.stylefeng.guns.modular.system.enums.UserTypeEnum;
import com.stylefeng.guns.modular.system.model.*;
import com.stylefeng.guns.modular.system.service.*;
import com.stylefeng.guns.modular.system.util.MallBook.model.BindAccount;
import com.stylefeng.guns.modular.system.util.MallBook.model.InterfaceResponse;
import com.stylefeng.guns.modular.system.util.MallBook.model.Register;
import com.stylefeng.guns.modular.system.util.MallBook.util.TrhRequest;
import com.stylefeng.guns.modular.system.util.RedisUtil;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
@@ -21,16 +29,16 @@
import org.apache.poi.hdf.extractor.TC;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.*;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.beans.factory.annotation.Autowired;
import com.stylefeng.guns.core.log.LogObjectHolder;
import org.springframework.web.bind.annotation.RequestParam;
import javax.servlet.http.HttpServletResponse;
import java.io.OutputStream;
@@ -63,7 +71,12 @@
    @Autowired
    private ITDriverWorkService tDriverWorkService;
    @Autowired
    private IUserService userService;
    @Autowired
    private RedisUtil redisUtil;
    @Value("${callbackPath}")
    private String callbackPath;
    /**
@@ -158,6 +171,7 @@
     */
    @RequestMapping(value = "/add")
    @ResponseBody
    @Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRES_NEW)
    public Object add(TAgent tAgent) {
        String[] split1 = tAgent.getArea().split("/");
@@ -165,7 +179,11 @@
        int count = tAgentService.selectCount(new EntityWrapper<TAgent>().eq("provinceName", split1[0]).eq("cityName",split1[1]));
        if(count>0){
            return new SuccessTip(500,"该代理商已存在!");
        }
        int count1 = userService.selectCount(new EntityWrapper<User>().eq("account", tAgent.getAccount()));
        if (count1 > 0){
            return new SuccessTip(500,"该账号已存在!");
        }
        tAgent.setPrincipal(tAgent.getPrincipal().replace(" ",""));
@@ -179,12 +197,135 @@
        tAgent.setProvinceName(province.getName());
        tAgent.setProvinceCode(province.getCode());
        TRegion city = tRegionService.selectById(split[1]);
        if(Objects.isNull(city)){
            city = tRegionService.selectOne(new EntityWrapper<TRegion>()
                    .eq("name",split[1])
                    .last("LIMIT 1"));
        }
        tAgent.setCityName(city.getName());
        tAgent.setCityCode(city.getCode());
        tAgentService.insert(tAgent);
        //添加User对象
        User user = new User();
        user.setAccount(tAgent.getAccount());
        user.setSalt(ShiroKit.getRandomSalt(5));
        user.setPassword(ShiroKit.md5(tAgent.getPassword(), user.getSalt()));
        user.setStatus(ManagerStatus.OK.getCode());
        user.setRoleid("2");
        user.setDeptid(25);
        user.setCreatetime(new Date());
        user.setRoleType(3);
        user.setObjectId(tAgent.getId());
        user.setName(tAgent.getPrincipal());
        user.setSex(1);
        userService.insert(user);
        return SUCCESS_TIP;
    }
    public void registeredMerchant(TAgent tAgent){
        Register registerVO = new Register();
        registerVO.setMerUserId("agent_" + tAgent.getId());
        registerVO.setPhone(tAgent.getPrincipalPhone());
        registerVO.setUserType(tAgent.getUserType().toString());
        registerVO.setUserName(tAgent.getMerchantName());
        registerVO.setCertId(tAgent.getMerchantIDCode());
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
        registerVO.setCertIdExpires(sdf.format(tAgent.getCertIdExpires()));
        registerVO.setBusinessScope(tAgent.getBusinessScope());
        registerVO.setSocialCreditCode(tAgent.getSocialCreditCode());
        registerVO.setSocialCreditCodeExpires(sdf.format(tAgent.getSocialCreditCodeExpires()));
        registerVO.setLegalPhone(tAgent.getLegalPhone());
        registerVO.setLegalPerson(tAgent.getLegalPerson());
        registerVO.setAddress(tAgent.getAddress());
        /**
         * 省份编码(子商户类型非小微必填) 字段长度最长:4位
         */
        registerVO.setProvCode("0035");
        /**
         * 地区编码(子商户类型非小微必填) 字段长度最长:4位
         */
        registerVO.setAreaCode("3501");
        registerVO.setFileNo(tAgent.getFileNo());
        registerVO.setNotifyUrl(callbackPath + "/base/driver/microenterpriseCallback");
        registerVO.setParameter1(tAgent.getId().toString());
        TrhRequest<Register> request = new TrhRequest();
        InterfaceResponse response = request.execute(registerVO, Register.SERVICE_CODE);
        if("0000".equals(response.getCode())){
            JSONObject jsonObject = JSON.parseObject(response.getResult());
            String status = jsonObject.getString("status");
            if("2".equals(status)){
                tAgent.setMerchantStatus(2);
                tAgentService.updateById(tAgent);
                System.err.println("注册代理商子商户失败");
            }
            if("0".equals(status)){
                tAgent.setMerchantStatus(0);
                tAgentService.updateById(tAgent);
                System.err.println("注册代理商子商户处理中");
            }
            if("1".equals(status)){
                String userId = jsonObject.getString("userId");
                tAgent.setMerchantNumber(userId);
                tAgent.setMerchantStatus(1);
                tAgentService.updateById(tAgent);
                //开始绑定结算账户
                BindAccount bindAccount = new BindAccount();
                bindAccount.setUserId(tAgent.getMerchantNumber());
                bindAccount.setCertId(tAgent.getMerchantIDCode());
                bindAccount.setCardName(tAgent.getCardName());
                bindAccount.setCardNo(tAgent.getCardNo());
                bindAccount.setBankAcctType(tAgent.getBankAcctType().toString());
                bindAccount.setPhone(tAgent.getPhone());
                bindAccount.setBankCode(tAgent.getBankCode());
                /**
                 * 省份编码
                 */
                bindAccount.setProvCode("0035");
                /**
                 * 地区编码
                 */
                bindAccount.setAreaCode("3501");
                TrhRequest<BindAccount> request1 = new TrhRequest();
                InterfaceResponse execute = request1.execute(bindAccount, BindAccount.SERVICE_CODE);
                if("0000".equals(execute.getCode())){
                    JSONObject jsonObject1 = JSON.parseObject(execute.getResult());
                    String status1 = jsonObject1.getString("status");
                    if("2".equals(status1)){
                        tAgent.setBankStatus(2);
                        tAgentService.updateById(tAgent);
                        System.err.println("绑定结算账户失败" );
                    }
                    if("1".equals(status1)){
                        tAgent.setBankStatus(1);
                        tAgentService.updateById(tAgent);
                        System.err.println("绑定结算账户成功");
                    }
                    if("0".equals(status1)){
                        tAgent.setBankStatus(0);
                        tAgentService.updateById(tAgent);
                        System.err.println("绑定结算账户处理中");
                    }
                }else{
                    System.err.println("绑定结算账户失败:" + execute.getMsg());
                }
            }
        }else{
            System.err.println("注册代理商子商户异常:" + response.getMsg());
        }
    }
    /**
     * 删除
     */