From 709a4a10be56952ead6340e4822fce41a66e47cd Mon Sep 17 00:00:00 2001 From: puzhibing <393733352@qq.com> Date: 星期三, 26 七月 2023 18:39:28 +0800 Subject: [PATCH] Merge branch '1.1' of http://120.76.84.145:10101/gitblit/r/java/SuperSaveDriving into dev --- management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TAgentController.java | 728 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 703 insertions(+), 25 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 5e692d4..0a7ac7e 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,44 +1,56 @@ package com.stylefeng.guns.modular.system.controller.general; +import cn.hutool.core.codec.Base64; +import cn.hutool.core.util.ZipUtil; import cn.hutool.crypto.SecureUtil; +import cn.hutool.http.server.HttpServerResponse; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.mapper.Wrapper; 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.shiro.ShiroUser; import com.stylefeng.guns.core.util.DateUtil; +import com.stylefeng.guns.core.util.ToolUtil; import com.stylefeng.guns.modular.system.controller.resp.TAgentResp; import com.stylefeng.guns.modular.system.controller.util.ExcelUtil; +import com.stylefeng.guns.modular.system.controller.util.UUIDUtil; import com.stylefeng.guns.modular.system.enums.OrderStateEnum; import com.stylefeng.guns.modular.system.enums.PayStatusEnum; 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.*; +import com.stylefeng.guns.modular.system.util.MallBook.util.TrhRequest; import com.stylefeng.guns.modular.system.util.RedisUtil; +import com.stylefeng.guns.modular.system.util.ResultUtil; 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 org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; -import java.io.OutputStream; +import java.io.*; import java.math.BigDecimal; +import java.net.InetAddress; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.*; @@ -51,7 +63,7 @@ * @Date 2023-02-20 09:18:08 */ @Controller -@RequestMapping("/tAgent") +@RequestMapping("") public class TAgentController extends BaseController { private String PREFIX = "/system/tAgent/"; @@ -71,11 +83,23 @@ @Autowired private RedisUtil redisUtil; + @Autowired + private ISettlementRecordService settlementRecordService; + + @Autowired + private IRechargeRecordService rechargeRecordService; + + @Autowired + private ITSystemConfigService systemConfigService; + + @Value("${callbackPath}") + private String callbackPath; + /** * 跳转到首页 */ - @RequestMapping("") + @RequestMapping("/tAgent") public String index(Model model) { model.addAttribute("userType", Objects.requireNonNull(ShiroKit.getUser()).getRoleType()); return PREFIX + "tAgent.html"; @@ -84,7 +108,7 @@ /** * 跳转到添加 */ - @RequestMapping("/tAgent_add") + @RequestMapping("/tAgent/tAgent_add") public String tAgentAdd() { return PREFIX + "tAgent_add.html"; } @@ -92,7 +116,7 @@ /** * 跳转到修改 */ - @RequestMapping("/tAgent_update/{tAgentId}") + @RequestMapping("/tAgent/tAgent_update/{tAgentId}") public String tAgentUpdate(@PathVariable Integer tAgentId, Model model) { TAgent tAgent = tAgentService.selectById(tAgentId); model.addAttribute("item",tAgent); @@ -103,7 +127,7 @@ /** * 跳转详情页面 */ - @RequestMapping("/agentDetail") + @RequestMapping("/tAgent/agentDetail") public String agentDetail(Integer agentId, Model model) { tAgentService.detail(agentId,model); return PREFIX + "tAgentDetail.html"; @@ -112,12 +136,61 @@ /** * 跳转区域页面 */ - @RequestMapping("/areaDetail") + @RequestMapping("/tAgent/areaDetail") public String areaDetail(String area,String areaId,Model model) { +// String[] split1 = areaId.split("/"); +// List<TRegion> tRegions = tRegionService.selectList(new EntityWrapper<TRegion>().eq("parent_id", 0)); +// model.addAttribute("provinceList",tRegions); +//// List<Integer> provinceIds = tRegions.stream().map(TRegion::getId).collect(Collectors.toList()); +//// // 查询市 +//// List<TRegion> tRegions1 = tRegionService.selectList(new EntityWrapper<TRegion>().eq("parent_id", split1[0])); +//// model.addAttribute("cityList",tRegions1); +//// +//// // 查询区 +//// List<Integer> cityIds = tRegions1.stream().map(TRegion::getId).collect(Collectors.toList()); +//// List<TRegion> tRegions2 = tRegionService.selectList(new EntityWrapper<TRegion>().in("parent_id", cityIds)); +//// model.addAttribute("districtList",tRegions2); +// +// if(StringUtils.hasLength(area) && StringUtils.hasLength(areaId)){ +// String[] split = area.split("/"); +// model.addAttribute("provinceName",split[0]); +// model.addAttribute("cityName",split[1]); +// if(split.length>2){ +// model.addAttribute("districtName",split[2]); +// }else { +// model.addAttribute("districtName",""); +// } +// +// model.addAttribute("provinceId",split1[0]); +// model.addAttribute("cityId",split1[1]); +// if(split1.length>2) { +// model.addAttribute("districtId", split1[2]); +// }else { +// model.addAttribute("districtId", ""); +// } +// +// List<TRegion> tRegions1 = tRegionService.selectList(new EntityWrapper<TRegion>().eq("parent_id", split1[0])); +// model.addAttribute("cityList",tRegions1); +// +// // 查询区 +// List<TRegion> tRegions2 = tRegionService.selectList(new EntityWrapper<TRegion>().in("parent_id", split1[1])); +// model.addAttribute("districtList",tRegions2); +// }else { +// model.addAttribute("cityList",new ArrayList<>()); +// model.addAttribute("districtList",new ArrayList<>()); +// +// model.addAttribute("provinceName",""); +// model.addAttribute("cityName",""); +// model.addAttribute("districtName",""); +// +// model.addAttribute("provinceId",""); +// model.addAttribute("cityId",""); +// model.addAttribute("districtId", ""); +// } String[] split1 = areaId.split("/"); List<TRegion> tRegions = tRegionService.selectList(new EntityWrapper<TRegion>().eq("parent_id", 0)); - model.addAttribute("province",tRegions); - List<Integer> provinceIds = tRegions.stream().map(TRegion::getId).collect(Collectors.toList()); + model.addAttribute("provinceList",tRegions); +// List<Integer> provinceIds = tRegions.stream().map(TRegion::getId).collect(Collectors.toList()); // 查询市 List<TRegion> tRegions1 = tRegionService.selectList(new EntityWrapper<TRegion>().eq("parent_id", split1[0])); model.addAttribute("cityList",tRegions1); @@ -141,7 +214,7 @@ /** * 获取列表 */ - @RequestMapping(value = "/list") + @RequestMapping(value = "/tAgent/list") @ResponseBody public Object list(String principal,String principalPhone,String createTime,Integer status) { EntityWrapper<TAgent> wrapper = tAgentService.getAgentWrapper(principal,principalPhone,createTime,status); @@ -153,7 +226,7 @@ /** * 获取列表 */ - @RequestMapping(value = "/list-back") + @RequestMapping(value = "/tAgent/list-back") @ResponseBody public Object listBack(String condition) { return tAgentService.selectList(null); @@ -162,14 +235,19 @@ /** * 新增 */ - @RequestMapping(value = "/add") + @RequestMapping(value = "/tAgent/add") @ResponseBody @Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRES_NEW) public Object add(TAgent tAgent) { String[] split1 = tAgent.getArea().split("/"); - int count = tAgentService.selectCount(new EntityWrapper<TAgent>().eq("provinceName", split1[0]).eq("cityName",split1[1])); +// int count = tAgentService.selectCount(new EntityWrapper<TAgent>() +// .eq("provinceName", split1[0]) +// .eq("cityName",split1[1]) +// .eq("districtName",sp)); + int count = tAgentService.selectCount(new EntityWrapper<TAgent>() + .eq("merchantName", tAgent.getMerchantName())); if(count>0){ return new SuccessTip(500,"该代理商已存在!"); } @@ -214,13 +292,250 @@ user.setSex(1); userService.insert(user); + new Thread(new Runnable() { + @Override + public void run() { + registeredMerchant(tAgent); + } + }).start(); + return SUCCESS_TIP; } + + + + public void registeredMerchant(TAgent tAgent){ + if(tAgent.getUserType() == 0){ + Register registerVO = new Register(); + registerVO.setMerUserId("agent_" + tAgent.getId()); + registerVO.setPhone(tAgent.getPrincipalPhone()); + registerVO.setUserType("0"); + registerVO.setUserName(tAgent.getMerchantName()); + registerVO.setCertId(tAgent.getMerchantIDCode()); + registerVO.setNotifyUrl(callbackPath + "/base/tAgent/microenterpriseCallback"); + TrhRequest<Register> request = new TrhRequest(); + InterfaceResponse execute = request.execute(registerVO, Register.SERVICE_CODE); + if("0000".equals(execute.getCode())){ + JSONObject jsonObject = JSON.parseObject(execute.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()); + TrhRequest<BindAccount> request1 = new TrhRequest(); + InterfaceResponse execute1 = request1.execute(bindAccount, BindAccount.SERVICE_CODE); + if("0000".equals(execute1.getCode())){ + JSONObject jsonObject1 = JSON.parseObject(execute1.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("注册代理商子商户异常:" + execute.getMsg()); + } + }else{ + 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()); + registerVO.setProvCode(tAgent.getProvCodeEnterprise()); + registerVO.setAreaCode(tAgent.getAreaCodeEnterprise()); + registerVO.setFileNo(tAgent.getFileNo()); + registerVO.setNotifyUrl(callbackPath + "/base/tAgent/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(tAgent.getProvCodeBank()); + bindAccount.setAreaCode(tAgent.getAreaCodeBank()); + 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()); + } + } + } + + + + /** + * 注册商户回调 + */ + @ResponseBody + @PostMapping("/base/tAgent/microenterpriseCallback") + public void microenterpriseCallback(@RequestBody InterfaceResponse interfaceResponse, HttpServletResponse response){ + try { + if("0000".equals(interfaceResponse.getCode())) { + JSONObject jsonObject = JSON.parseObject(interfaceResponse.getResult()); + String status = jsonObject.getString("status"); + String parameter1 = jsonObject.getString("parameter1"); + TAgent tAgent = tAgentService.selectById(parameter1); + 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(tAgent.getProvCodeBank()); + bindAccount.setAreaCode(tAgent.getAreaCodeBank()); + 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()); + } + response.setStatus(200); + PrintWriter out = response.getWriter(); + out.print("OK"); + out.flush(); + out.close(); + } + } + }catch (Exception e){ + e.printStackTrace(); + } + } + + + + /** * 删除 */ - @RequestMapping(value = "/delete") + @RequestMapping(value = "/tAgent/delete") @ResponseBody public Object delete(@RequestParam Integer tAgentId) { tAgentService.deleteById(tAgentId); @@ -230,7 +545,7 @@ /** * 修改用户状态 */ - @RequestMapping(value = "/update-status") + @RequestMapping(value = "/tAgent/update-status") @ResponseBody public Object updateStatus(Integer id,Integer status) { TAgent tAgent = tAgentService.selectById(id); @@ -274,7 +589,7 @@ /** * 修改 */ - @RequestMapping(value = "/update") + @RequestMapping(value = "/tAgent/update") @ResponseBody public Object update(TAgent tAgent) { tAgent.setPrincipal(tAgent.getPrincipal().replace(" ","")); @@ -285,7 +600,7 @@ /** * 详情 */ - @RequestMapping(value = "/detail/{tAgentId}") + @RequestMapping(value = "/tAgent/detail/{tAgentId}") @ResponseBody public Object detail(@PathVariable("tAgentId") Integer tAgentId) { return tAgentService.selectById(tAgentId); @@ -293,21 +608,21 @@ @ApiOperation(value = "省市区查询",notes="省市区查询") - @RequestMapping(value = "/area") + @RequestMapping(value = "/tAgent/area") @ResponseBody public Object area() { return tRegionService.getAreaList(); } @ApiOperation(value = "省查询",notes="省查询") - @RequestMapping(value = "/areaProvince") + @RequestMapping(value = "/tAgent/areaProvince") @ResponseBody public Object areaProvince(Model model) { return tRegionService.selectList(new EntityWrapper<TRegion>().eq("parent_id", 0)); } @ApiOperation(value = "市区查询",notes="市区查询") - @RequestMapping(value = "/areaCity") + @RequestMapping(value = "/tAgent/areaCity") @ResponseBody public Object areaCity(Integer parentId) { return tRegionService.selectList(new EntityWrapper<TRegion>().eq("parent_id",parentId)); @@ -315,7 +630,7 @@ @ApiOperation(value = "导出代理商列表",notes="导出代理商列表") - @RequestMapping(value = "/export") + @RequestMapping(value = "/tAgent/export") @ResponseBody public void export(String principal,String principalPhone,Integer status,String createTime, HttpServletResponse response) { try { @@ -367,4 +682,367 @@ } } + + @ResponseBody + @RequestMapping(value = "/tAgent/uploadFile") + public String uploadFile(MultipartFile file){ + File srcFile = null; + String originalFilename = file.getOriginalFilename(); + String substring = originalFilename.substring(originalFilename.lastIndexOf(".")); + String fileName = ""; + try { + fileName = UUIDUtil.getRandomCode(28) + ".png"; + srcFile = multipartFileToFile(file, fileName); + } catch (Exception e) { + e.printStackTrace(); + } + ImageUpload imageUpload = new ImageUpload(); + imageUpload.setMerUserId("33567678901213221"); + File zip = ZipUtil.zip(srcFile); + imageUpload.setName(zip.getName()); + imageUpload.setFile(Base64.encode(zip)); + TrhRequest<ImageUpload> request = new TrhRequest(); + InterfaceResponse execute = request.execute(imageUpload, ImageUpload.SERVICE_CODE); + if(execute.getCode().equals("0000")){ + JSONObject jsonObject = JSON.parseObject(execute.getResult()); + return jsonObject.getString("fileNo"); + } + return ""; + } + + + public File multipartFileToFile(MultipartFile file, String fileName) throws Exception { + File toFile = null; + if (file.equals("") || file.getSize() <= 0) { + file = null; + } else { + InputStream ins = null; + ins = file.getInputStream(); + toFile = new File("D:\\logs\\" + fileName); + inputStreamToFile(ins, toFile); + ins.close(); + } + return toFile; + + } + + + private static void inputStreamToFile(InputStream ins, File file) { + try { + OutputStream os = new FileOutputStream(file); + int bytesRead = 0; + byte[] buffer = new byte[8192]; + while ((bytesRead = ins.read(buffer, 0, 8192)) != -1) { + os.write(buffer, 0, bytesRead); + } + os.close(); + ins.close(); + } catch (Exception e) { + e.printStackTrace(); + } + } + + + /** + * 跳转到企业信息页 + * @return + */ + @GetMapping("/tAgent/showEnterprisePage") + public String showEnterprisePage(Model model){ + ShiroUser user = ShiroKit.getUser(); + Integer objectId = user.getObjectId(); + Integer roleType = user.getRoleType(); + User user1 = userService.selectById(user.getId()); + TAgent tAgent = new TAgent(); + if(roleType == 1){//平台 + tAgent.setPrincipal(user1.getName()); + tAgent.setPrincipalPhone(user1.getPhone()); + tAgent.setEmail(user1.getEmail()); + tAgent.setMerchantNumber("553021440975"); + } + if(roleType == 3){//代理商 + tAgent = tAgentService.selectById(objectId); + } + model.addAttribute("roleType", roleType); + model.addAttribute("item", tAgent); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + model.addAttribute("socialCreditCodeExpires", roleType == 1 ? "" :Objects.isNull(tAgent.getSocialCreditCodeExpires())?"": sdf.format(tAgent.getSocialCreditCodeExpires())); + model.addAttribute("certIdExpires", roleType == 1 ? "" : null == tAgent.getCertIdExpires() ? "" : sdf.format(tAgent.getCertIdExpires())); + Wrapper<SettlementRecord> settlementRecordWrapper = new EntityWrapper<SettlementRecord>().eq("type", roleType == 1 ? 1 : 2); + if(roleType == 2){ + settlementRecordWrapper.eq("objectId", objectId); + } + List<SettlementRecord> settlementRecords = settlementRecordService.selectList(settlementRecordWrapper.isNotNull("arrivalTime").orderBy("insertTime desc")); + model.addAttribute("settlementRecords", settlementRecords); + + QueryBalance queryBalance = new QueryBalance(); + queryBalance.setUserId(tAgent.getMerchantNumber()); + TrhRequest<QueryBalance> request = new TrhRequest(); + InterfaceResponse execute = request.execute(queryBalance, QueryBalance.SERVICE_CODE); + model.addAttribute("balance", 0); + model.addAttribute("marketingAmount", 0); + if("0000".equals(execute.getCode())){ + JSONObject jsonObject = JSON.parseObject(execute.getResult()); + model.addAttribute("balance", jsonObject.getDoubleValue("settledAmount") / 100); + if(roleType == 1){ + Double amount = rechargeRecordService.querSumSurplusDividedAmount(4); + model.addAttribute("marketingAmount", amount); + } + } + return PREFIX + "enterprisePage.html"; + } + + + /** + * 提现申请 + * @return + */ + @ResponseBody + @PostMapping("/tAgent/withdrawCash") + public ResultUtil withdrawCash(){ + ShiroUser user = ShiroKit.getUser(); + Integer objectId = user.getObjectId(); + Integer roleType = user.getRoleType(); + User user1 = userService.selectById(user.getId()); + TAgent tAgent = new TAgent(); + if(roleType == 1){//平台 + tAgent.setLegalPerson(user1.getName()); + tAgent.setLegalPhone(user1.getPhone()); + tAgent.setEmail(user1.getEmail()); + tAgent.setMerchantNumber("553021440975"); + } + if(roleType == 3){//代理商 + tAgent = tAgentService.selectById(objectId); + } + QueryBalance queryBalance = new QueryBalance(); + queryBalance.setUserId(tAgent.getMerchantNumber()); + TrhRequest<QueryBalance> request = new TrhRequest(); + InterfaceResponse execute = request.execute(queryBalance, QueryBalance.SERVICE_CODE); + if("0000".equals(execute.getCode())){ + JSONObject jsonObject = JSON.parseObject(execute.getResult()); + Integer settledAmount = jsonObject.getInteger("settledAmount"); + if(0 == settledAmount){ + return ResultUtil.error("余额不足"); + } + SettlementRecord settlementRecord = new SettlementRecord(); + settlementRecord.setType(roleType == 1 ? 1 : 2); + if(roleType == 3){ + settlementRecord.setObjectId(tAgent.getId()); + } + settlementRecord.setAmount(Double.valueOf(settledAmount) / 100); + settlementRecord.setInsertTime(new Date()); + settlementRecordService.insert(settlementRecord); + + + Withdraw withdraw = new Withdraw(); + withdraw.setUserId(tAgent.getMerchantNumber()); + withdraw.setAmount(String.valueOf(settledAmount)); + withdraw.setOrderName("账户余额提现"); + withdraw.setRemark("账户余额提现"); + withdraw.setNotifyUrl(callbackPath + "/base/tAgent/withdrawCashCallback"); + withdraw.setParameter1(settlementRecord.getId().toString()); + TrhRequest<Withdraw> request1 = new TrhRequest(); + InterfaceResponse execute1 = request1.execute(withdraw, Withdraw.SERVICE_CODE);//结算(提现) + if("0000".equals(execute1.getCode())){ + JSONObject jsonObject1 = JSON.parseObject(execute1.getResult()); + String merOrderId1 = jsonObject1.getString("merOrderId"); + Integer status = jsonObject1.getInteger("status");//0:待处理;1:成功;2:失败 + if(0 == status){ + return ResultUtil.error("申请处理中"); + } + if(1 == status){ + settlementRecord.setOrderNumber(merOrderId1); + settlementRecord.setArrivalTime(new Date()); + settlementRecordService.updateById(settlementRecord); + return ResultUtil.success(); + } + if(2 == status){ + return ResultUtil.error("结算接口异常【提现】:" + jsonObject1.getString("statusMsg")); + } + }else{ + return ResultUtil.error("结算接口异常【提现】:" + execute.getMsg()); + } + + }else{ + return ResultUtil.error(execute.getMsg()); + } + return ResultUtil.error("未知异常"); + } + + + /** + * 提现回调 + * @param interfaceResponse + */ + @ResponseBody + @PostMapping("/base/tAgent/withdrawCashCallback") + public void withdrawCashCallback(@RequestBody InterfaceResponse interfaceResponse, HttpServletResponse response) { + try { + if("0000".equals(interfaceResponse.getCode())){ + JSONObject jsonObject1 = JSON.parseObject(interfaceResponse.getResult()); + String merOrderId1 = jsonObject1.getString("merOrderId"); + Integer status = jsonObject1.getInteger("status");//0:待处理;1:成功;2:失败 + if(1 == status){ + String parameter1 = jsonObject1.getString("parameter1"); + SettlementRecord settlementRecord = settlementRecordService.selectById(parameter1); + settlementRecord.setOrderNumber(merOrderId1); + settlementRecord.setArrivalTime(new Date()); + settlementRecordService.updateById(settlementRecord); + response.setStatus(200); + PrintWriter out = response.getWriter(); + out.print("OK"); + out.flush(); + out.close(); + } + if(2 == status){ + System.err.println("结算接口异常【提现】:" + jsonObject1.getString("statusMsg")); + } + }else{ + System.err.println("结算接口异常【提现】:" + interfaceResponse.getMsg()); + } + }catch (Exception e){ + e.printStackTrace(); + } + } + + + /** + * 充值补贴金额 + * @param amount + * @return + */ + @ResponseBody + @PostMapping("/tAgent/accountRecharge") + public ResultUtil accountRecharge(Double amount){ + try { + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); + String out_trade_no = sdf.format(new Date()) + UUIDUtil.getNumberRandom(3); + RechargeRecord rechargeRecord = new RechargeRecord(); + rechargeRecord.setCode(out_trade_no); + rechargeRecord.setType(4); + rechargeRecord.setAmount(amount); + rechargeRecord.setPayType(2); + rechargeRecord.setPayStatus(1); + rechargeRecord.setCreateTime(new Date()); + rechargeRecordService.insert(rechargeRecord); + + Deposit deposit = new Deposit(); + deposit.setAmount(String.valueOf(Double.valueOf(amount * 100).intValue())); + deposit.setOrderName("补贴充值"); + deposit.setPayType("ALI_CB"); + deposit.setTerminalIp(InetAddress.getLocalHost().getHostAddress()); + deposit.setFrontUrl(callbackPath + "/base/tAgent/accountRechargeCallback"); + deposit.setNotifyUrl(callbackPath + "/base/tAgent/accountRechargeCallback"); + deposit.setParameter1(rechargeRecord.getId().toString()); + TrhRequest<Deposit> request = new TrhRequest(); + InterfaceResponse execute = request.execute(deposit, Deposit.SERVICE_CODE); + if("0000".equals(execute.getCode())){ + JSONObject jsonObject = JSON.parseObject(execute.getResult()); + Integer status = jsonObject.getInteger("status"); + if(2 == status){ + return ResultUtil.error("支付异常"); + } + String merOrderId = jsonObject.getString("merOrderId"); + String payCode = jsonObject.getString("payCode"); + if(ToolUtil.isNotEmpty(payCode)){ + new Thread(new Runnable() { + @Override + public void run() { + try { + int num = 1; + int wait = 0; + while (num <= 10){ + int min = 5000; + wait += (min * num); + RechargeRecord rechargeRecord1 = rechargeRecordService.selectById(rechargeRecord.getId()); + if(rechargeRecord1.getPayStatus() != 1){ + return; + } + QueryOrder queryOrder = new QueryOrder(); + queryOrder.setOriginalMerOrderId(merOrderId); + /** + * 1:支付查询 2:退款查询 3:确认收货查询 4:结算查询 5:充值查询 6:转账查询 7:异步分账查询(必填) 字段长度最长:1位 + */ + queryOrder.setQueryType("5"); + TrhRequest<QueryOrder> request = new TrhRequest(); + InterfaceResponse execute1 = request.execute(queryOrder, QueryOrder.SERVICE_CODE); + if("0000".equals(execute1.getCode())){ + JSONObject jsonObject1 = JSON.parseObject(execute1.getResult()); + String status1 = jsonObject1.getString("status"); + if("0".equals(status1)){//待处理 + Thread.sleep(wait); + num++; + } + if("1".equals(status1)){//成功 + String merOrderId = jsonObject1.getString("merOrderId"); + rechargeRecord1.setPayTime(new Date()); + rechargeRecord1.setPayStatus(2); + rechargeRecord1.setOrderNumber(merOrderId); + rechargeRecord1.setSurplusDividedAmount(rechargeRecord1.getAmount()); + rechargeRecordService.updateById(rechargeRecord1); + break; + } + if("2".equals(status1) || 10 == num){//失败 + rechargeRecordService.deleteById(rechargeRecord1.getId()); + break; + } + }else{ + Thread.sleep(wait); + num++; + } + } + }catch (Exception e){ + e.printStackTrace(); + } + } + }).start(); + } + return ResultUtil.success(payCode); + }else{ + return ResultUtil.error(execute.getMsg()); + } + }catch (Exception e){ + e.printStackTrace(); + return ResultUtil.runErr(); + } + } + + + /** + * 补贴金额充值回调 + * @param interfaceResponse + */ + @ResponseBody + @PostMapping("/base/tAgent/accountRechargeCallback") + public void accountRechargeCallback(@RequestBody InterfaceResponse interfaceResponse, HttpServletResponse response){ + try { + if("0000".equals(interfaceResponse.getCode())){ + JSONObject jsonObject = JSON.parseObject(interfaceResponse.getResult()); + Integer status = jsonObject.getInteger("status"); + if(2 == status){ + System.err.println("支付异常"); + return; + } + if(1 == status){ + String parameter1 = jsonObject.getString("parameter1"); + RechargeRecord rechargeRecord = rechargeRecordService.selectById(parameter1); + rechargeRecord.setPayStatus(2); + rechargeRecord.setPayTime(new Date()); + rechargeRecord.setOrderNumber(jsonObject.getString("merOrderId")); + rechargeRecord.setSurplusDividedAmount(rechargeRecord.getAmount()); + rechargeRecordService.updateById(rechargeRecord); + response.setStatus(200); + PrintWriter out = response.getWriter(); + out.print("OK"); + out.flush(); + out.close(); + } + }else{ + System.err.println(interfaceResponse.getMsg()); + } + }catch (Exception e){ + e.printStackTrace(); + } + } + } -- Gitblit v1.7.1