From f604f87781d7cdae5571465a3bafffff53313028 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期五, 02 六月 2023 08:34:56 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/1.1' into 1.1

---
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TAgentController.java |  188 ++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 178 insertions(+), 10 deletions(-)

diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TAgentController.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TAgentController.java
index d6a3819..c2d7aba 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TAgentController.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TAgentController.java
@@ -1,10 +1,15 @@
 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;
 import com.stylefeng.guns.core.util.DateUtil;
 import com.stylefeng.guns.modular.system.controller.resp.TAgentResp;
 import com.stylefeng.guns.modular.system.controller.util.ExcelUtil;
@@ -13,22 +18,27 @@
 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;
 import io.swagger.annotations.ApiOperation;
 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;
@@ -58,13 +68,23 @@
 
     @Autowired
     private ITDriverService tDriverService;
+    @Autowired
+    private ITDriverWorkService tDriverWorkService;
+    @Autowired
+    private IUserService userService;
+    @Autowired
+    private RedisUtil redisUtil;
+
+    @Value("${callbackPath}")
+    private String callbackPath;
 
 
     /**
      * 跳转到首页
      */
     @RequestMapping("")
-    public String index() {
+    public String index(Model model) {
+        model.addAttribute("userType", Objects.requireNonNull(ShiroKit.getUser()).getRoleType());
         return PREFIX + "tAgent.html";
     }
 
@@ -130,8 +150,8 @@
      */
     @RequestMapping(value = "/list")
     @ResponseBody
-    public Object list(String principal,String principalPhone,String createTime) {
-        EntityWrapper<TAgent> wrapper = tAgentService.getAgentWrapper(principal,principalPhone,createTime);
+    public Object list(String principal,String principalPhone,String createTime,Integer status) {
+        EntityWrapper<TAgent> wrapper = tAgentService.getAgentWrapper(principal,principalPhone,createTime,status);
         List<TAgent> tAgents = tAgentService.selectList(wrapper);
         // 代理商列表数据封装(导出共用)
         return tAgentService.getAgentResp(tAgents);
@@ -151,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("/");
@@ -160,6 +181,14 @@
             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(" ",""));
+
+
         String[] split = tAgent.getAreaId().split("/");
         // 查询省市
         // 黑龙江省/大兴安岭地区
@@ -168,11 +197,134 @@
         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());
+        }
+    }
+
+
+
 
     /**
      * 删除
@@ -204,12 +356,27 @@
         for (TDriver tDriver : list) {
             if(1 == status){
                 tDriver.setStatus(2);
+                String value = redisUtil.getValue("DRIVER_" + tDriver.getPhone());
+                redisUtil.remove(value);
+                redisUtil.remove("DRIVER_" + tDriver.getPhone());
+                TDriverWork tDriverWork = tDriverWorkService.selectOne(new EntityWrapper<TDriverWork>()
+                        .eq("driverId", tDriver.getId())
+                        .eq("status", 1)
+                        .orderBy("workTime", false)
+                        .last("LIMIT 1"));
+                if(Objects.nonNull(tDriverWork)){
+                    tDriverWork.setStatus(2);
+                    tDriverWork.setOffWorkTime(new Date());
+                    tDriverWorkService.updateById(tDriverWork);
+                }
             }
             if(2 == status){
                 tDriver.setStatus(1);
             }
         }
-        tDriverService.updateBatchById(list);
+        if(!CollectionUtils.isEmpty(list)){
+            tDriverService.updateBatchById(list);
+        }
         return SUCCESS_TIP;
     }
 
@@ -219,6 +386,7 @@
     @RequestMapping(value = "/update")
     @ResponseBody
     public Object update(TAgent tAgent) {
+        tAgent.setPrincipal(tAgent.getPrincipal().replace(" ",""));
         tAgentService.updateById(tAgent);
         return SUCCESS_TIP;
     }
@@ -258,7 +426,7 @@
     @ApiOperation(value = "导出代理商列表",notes="导出代理商列表")
     @RequestMapping(value = "/export")
     @ResponseBody
-    public void export(String principal,String principalPhone,String createTime, HttpServletResponse response) {
+    public void export(String principal,String principalPhone,Integer status,String createTime, HttpServletResponse response) {
         try {
             Date date = new Date();
             DateFormat format = new SimpleDateFormat("yyyyMMdd");
@@ -266,7 +434,7 @@
             String fileName = "Agent"+time1+".xls";
             String[] title = new String[] {"时间","姓名","联系电话","代理区域","客服电话","订单数量",
                     "有效订单","已发放优惠券","已使用优惠券","累计优惠券金额","司机充值","司机数","状态"};
-            EntityWrapper<TAgent> wrapper = tAgentService.getAgentWrapper(principal,principalPhone,createTime);
+            EntityWrapper<TAgent> wrapper = tAgentService.getAgentWrapper(principal,principalPhone,createTime,status);
             // 是否异常
             List<TAgent> list = tAgentService.selectList(wrapper);
 

--
Gitblit v1.7.1