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