From 33fb76bd70cf84cebbe26b96e5faedd22961f0b0 Mon Sep 17 00:00:00 2001 From: puzhibing <393733352@qq.com> Date: 星期三, 16 八月 2023 15:54:47 +0800 Subject: [PATCH] 修改bug --- management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TAgentController.java | 236 ++++++++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 185 insertions(+), 51 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 1827b37..406ea88 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 @@ -2,39 +2,29 @@ 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.baomidou.mybatisplus.plugins.Page; import com.stylefeng.guns.core.base.controller.BaseController; import com.stylefeng.guns.core.base.tips.SuccessTip; +import com.stylefeng.guns.core.common.constant.factory.PageFactory; 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; @@ -54,7 +44,6 @@ import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.*; -import java.util.stream.Collectors; /** * 控制器 @@ -63,7 +52,7 @@ * @Date 2023-02-20 09:18:08 */ @Controller -@RequestMapping("/tAgent") +@RequestMapping("") public class TAgentController extends BaseController { private String PREFIX = "/system/tAgent/"; @@ -89,6 +78,12 @@ @Autowired private IRechargeRecordService rechargeRecordService; + @Autowired + private ITSystemConfigService systemConfigService; + + @Autowired + private ICompanyFundFlowService companyFundFlowService; + @Value("${callbackPath}") private String callbackPath; @@ -96,7 +91,7 @@ /** * 跳转到首页 */ - @RequestMapping("") + @RequestMapping("/tAgent") public String index(Model model) { model.addAttribute("userType", Objects.requireNonNull(ShiroKit.getUser()).getRoleType()); return PREFIX + "tAgent.html"; @@ -105,7 +100,7 @@ /** * 跳转到添加 */ - @RequestMapping("/tAgent_add") + @RequestMapping("/tAgent/tAgent_add") public String tAgentAdd() { return PREFIX + "tAgent_add.html"; } @@ -113,18 +108,20 @@ /** * 跳转到修改 */ - @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); LogObjectHolder.me().set(tAgent); + User user = userService.selectOne(new EntityWrapper<User>().eq("role_type", 3).eq("object_id", tAgentId)); + model.addAttribute("user", user); return PREFIX + "tAgent_edit.html"; } /** * 跳转详情页面 */ - @RequestMapping("/agentDetail") + @RequestMapping("/tAgent/agentDetail") public String agentDetail(Integer agentId, Model model) { tAgentService.detail(agentId,model); return PREFIX + "tAgentDetail.html"; @@ -133,12 +130,12 @@ /** * 跳转区域页面 */ - @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("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); @@ -162,7 +159,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); @@ -174,7 +171,7 @@ /** * 获取列表 */ - @RequestMapping(value = "/list-back") + @RequestMapping(value = "/tAgent/list-back") @ResponseBody public Object listBack(String condition) { return tAgentService.selectList(null); @@ -183,14 +180,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,"该代理商已存在!"); } @@ -255,7 +257,7 @@ registerVO.setUserType("0"); registerVO.setUserName(tAgent.getMerchantName()); registerVO.setCertId(tAgent.getMerchantIDCode()); - registerVO.setNotifyUrl(callbackPath + "/tAgent/microenterpriseCallback"); + registerVO.setNotifyUrl(callbackPath + "/base/tAgent/microenterpriseCallback"); TrhRequest<Register> request = new TrhRequest(); InterfaceResponse execute = request.execute(registerVO, Register.SERVICE_CODE); if("0000".equals(execute.getCode())){ @@ -329,7 +331,7 @@ registerVO.setProvCode(tAgent.getProvCodeEnterprise()); registerVO.setAreaCode(tAgent.getAreaCodeEnterprise()); registerVO.setFileNo(tAgent.getFileNo()); - registerVO.setNotifyUrl(callbackPath + "/tAgent/microenterpriseCallback"); + registerVO.setNotifyUrl(callbackPath + "/base/tAgent/microenterpriseCallback"); registerVO.setParameter1(tAgent.getId().toString()); TrhRequest<Register> request = new TrhRequest(); @@ -401,7 +403,7 @@ * 注册商户回调 */ @ResponseBody - @PostMapping("/microenterpriseCallback") + @PostMapping("/base/tAgent/microenterpriseCallback") public void microenterpriseCallback(@RequestBody InterfaceResponse interfaceResponse, HttpServletResponse response){ try { if("0000".equals(interfaceResponse.getCode())) { @@ -478,7 +480,7 @@ /** * 删除 */ - @RequestMapping(value = "/delete") + @RequestMapping(value = "/tAgent/delete") @ResponseBody public Object delete(@RequestParam Integer tAgentId) { tAgentService.deleteById(tAgentId); @@ -488,7 +490,7 @@ /** * 修改用户状态 */ - @RequestMapping(value = "/update-status") + @RequestMapping(value = "/tAgent/update-status") @ResponseBody public Object updateStatus(Integer id,Integer status) { TAgent tAgent = tAgentService.selectById(id); @@ -532,18 +534,48 @@ /** * 修改 */ - @RequestMapping(value = "/update") + @RequestMapping(value = "/tAgent/update") @ResponseBody public Object update(TAgent tAgent) { + TAgent tAgent1 = tAgentService.selectOne(new EntityWrapper<TAgent>() + .eq("merchantName", tAgent.getMerchantName())); + if(null != tAgent1 && tAgent1.getId().compareTo(tAgent.getId()) != 0){ + return new SuccessTip(500,"该代理商已存在!"); + } + User user = userService.selectOne(new EntityWrapper<User>().eq("account", tAgent.getAccount())); + User user1 = userService.selectOne(new EntityWrapper<User>().eq("role_type", 3).eq("object_id", tAgent.getId())); + if (null != user && user.getId().compareTo(user1.getId()) != 0){ + return new SuccessTip(500,"该账号已存在!"); + } tAgent.setPrincipal(tAgent.getPrincipal().replace(" ","")); + String[] split = tAgent.getAreaId().split("/"); + // 查询省市 + // 黑龙江省/大兴安岭地区 + // 702/852 + TRegion province = tRegionService.selectById(split[0]); + 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.updateById(tAgent); + user1.setAccount(tAgent.getAccount()); + if(ToolUtil.isNotEmpty(tAgent.getPassword())){ + user1.setPassword(ShiroKit.md5(tAgent.getPassword(), user.getSalt())); + } + userService.updateById(user1); return SUCCESS_TIP; } /** * 详情 */ - @RequestMapping(value = "/detail/{tAgentId}") + @RequestMapping(value = "/tAgent/detail/{tAgentId}") @ResponseBody public Object detail(@PathVariable("tAgentId") Integer tAgentId) { return tAgentService.selectById(tAgentId); @@ -551,21 +583,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)); @@ -573,7 +605,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 { @@ -627,7 +659,7 @@ @ResponseBody - @RequestMapping(value = "/uploadFile") + @RequestMapping(value = "/tAgent/uploadFile") public String uploadFile(MultipartFile file){ File srcFile = null; String originalFilename = file.getOriginalFilename(); @@ -690,7 +722,7 @@ * 跳转到企业信息页 * @return */ - @GetMapping("/showEnterprisePage") + @GetMapping("/tAgent/showEnterprisePage") public String showEnterprisePage(Model model){ ShiroUser user = ShiroKit.getUser(); Integer objectId = user.getObjectId(); @@ -709,8 +741,8 @@ model.addAttribute("roleType", roleType); model.addAttribute("item", tAgent); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); - model.addAttribute("socialCreditCodeExpires", roleType == 1 ? "" : sdf.format(tAgent.getSocialCreditCodeExpires())); - model.addAttribute("certIdExpires", roleType == 1 ? "" : sdf.format(tAgent.getCertIdExpires())); + 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); @@ -728,7 +760,8 @@ JSONObject jsonObject = JSON.parseObject(execute.getResult()); model.addAttribute("balance", jsonObject.getDoubleValue("settledAmount") / 100); if(roleType == 1){ - model.addAttribute("marketingAmount", jsonObject.getDoubleValue("marketingAmount") / 100); + Double amount = rechargeRecordService.querSumSurplusDividedAmount(4); + model.addAttribute("marketingAmount", amount); } } return PREFIX + "enterprisePage.html"; @@ -740,7 +773,7 @@ * @return */ @ResponseBody - @PostMapping("/withdrawCash") + @PostMapping("/tAgent/withdrawCash") public ResultUtil withdrawCash(){ ShiroUser user = ShiroKit.getUser(); Integer objectId = user.getObjectId(); @@ -762,26 +795,34 @@ InterfaceResponse execute = request.execute(queryBalance, QueryBalance.SERVICE_CODE); if("0000".equals(execute.getCode())){ JSONObject jsonObject = JSON.parseObject(execute.getResult()); - double settledAmount = jsonObject.getDoubleValue("settledAmount"); + Integer settledAmount = jsonObject.getInteger("settledAmount"); if(0 == settledAmount){ return ResultUtil.error("余额不足"); } + + Double balance = 0D; + if(roleType == 1){ + balance = rechargeRecordService.queryCompanyBalance(); + }else{ + balance = rechargeRecordService.queryAgentBalance(tAgent.getId()); + } + SettlementRecord settlementRecord = new SettlementRecord(); settlementRecord.setType(roleType == 1 ? 1 : 2); if(roleType == 3){ settlementRecord.setObjectId(tAgent.getId()); } - settlementRecord.setAmount(settledAmount); + settlementRecord.setAmount(Double.valueOf(settledAmount) / 100); settlementRecord.setInsertTime(new Date()); settlementRecordService.insert(settlementRecord); Withdraw withdraw = new Withdraw(); withdraw.setUserId(tAgent.getMerchantNumber()); - withdraw.setAmount(settledAmount + ""); + withdraw.setAmount(String.valueOf(settledAmount)); withdraw.setOrderName("账户余额提现"); withdraw.setRemark("账户余额提现"); - withdraw.setNotifyUrl(callbackPath + "/tAgent/withdrawCashCallback"); + withdraw.setNotifyUrl(callbackPath + "/base/tAgent/withdrawCashCallback"); withdraw.setParameter1(settlementRecord.getId().toString()); TrhRequest<Withdraw> request1 = new TrhRequest(); InterfaceResponse execute1 = request1.execute(withdraw, Withdraw.SERVICE_CODE);//结算(提现) @@ -796,6 +837,17 @@ settlementRecord.setOrderNumber(merOrderId1); settlementRecord.setArrivalTime(new Date()); settlementRecordService.updateById(settlementRecord); + + CompanyFundFlow companyFundFlow = new CompanyFundFlow(); + companyFundFlow.setType(2); + companyFundFlow.setObjectType(roleType == 1 ? 1 : 2); + if(roleType == 3){ + companyFundFlow.setObjectId(tAgent.getId()); + } + companyFundFlow.setBalance(new BigDecimal(balance)); + companyFundFlow.setMoney(new BigDecimal(settlementRecord.getAmount())); + companyFundFlow.setCreateTime(new Date()); + companyFundFlowService.insert(companyFundFlow); return ResultUtil.success(); } if(2 == status){ @@ -817,7 +869,7 @@ * @param interfaceResponse */ @ResponseBody - @PostMapping("/withdrawCashCallback") + @PostMapping("/base/tAgent/withdrawCashCallback") public void withdrawCashCallback(@RequestBody InterfaceResponse interfaceResponse, HttpServletResponse response) { try { if("0000".equals(interfaceResponse.getCode())){ @@ -830,6 +882,25 @@ settlementRecord.setOrderNumber(merOrderId1); settlementRecord.setArrivalTime(new Date()); settlementRecordService.updateById(settlementRecord); + Integer type = settlementRecord.getType(); + Double balance = 0D; + if(type == 1){ + balance = rechargeRecordService.queryCompanyBalance(); + }else{ + balance = rechargeRecordService.queryAgentBalance(settlementRecord.getObjectId()); + } + BigDecimal bigDecimal = new BigDecimal(balance).add(new BigDecimal(settlementRecord.getAmount())); + CompanyFundFlow companyFundFlow = new CompanyFundFlow(); + companyFundFlow.setType(2); + companyFundFlow.setObjectType(type); + if(type == 2){ + companyFundFlow.setObjectId(settlementRecord.getObjectId()); + } + companyFundFlow.setBalance(bigDecimal); + companyFundFlow.setMoney(new BigDecimal(settlementRecord.getAmount())); + companyFundFlow.setCreateTime(new Date()); + companyFundFlowService.insert(companyFundFlow); + response.setStatus(200); PrintWriter out = response.getWriter(); out.print("OK"); @@ -854,11 +925,12 @@ * @return */ @ResponseBody - @PostMapping("/accountRecharge") + @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); @@ -873,8 +945,8 @@ deposit.setOrderName("补贴充值"); deposit.setPayType("ALI_CB"); deposit.setTerminalIp(InetAddress.getLocalHost().getHostAddress()); - deposit.setFrontUrl(callbackPath + "/tAgent/accountRechargeCallback"); - deposit.setNotifyUrl(callbackPath + "/tAgent/accountRechargeCallback"); + 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); @@ -916,12 +988,22 @@ num++; } if("1".equals(status1)){//成功 + Double balance = rechargeRecordService.queryCompanyBalance();//平台余额 + String merOrderId = jsonObject1.getString("merOrderId"); rechargeRecord1.setPayTime(new Date()); rechargeRecord1.setPayStatus(2); rechargeRecord1.setOrderNumber(merOrderId); rechargeRecord1.setSurplusDividedAmount(rechargeRecord1.getAmount()); rechargeRecordService.updateById(rechargeRecord1); + + CompanyFundFlow companyFundFlow = new CompanyFundFlow(); + companyFundFlow.setType(1); + companyFundFlow.setObjectType(1); + companyFundFlow.setBalance(new BigDecimal(balance)); + companyFundFlow.setMoney(new BigDecimal(rechargeRecord1.getAmount())); + companyFundFlow.setCreateTime(new Date()); + companyFundFlowService.insert(companyFundFlow); break; } if("2".equals(status1) || 10 == num){//失败 @@ -955,7 +1037,7 @@ * @param interfaceResponse */ @ResponseBody - @PostMapping("/accountRechargeCallback") + @PostMapping("/base/tAgent/accountRechargeCallback") public void accountRechargeCallback(@RequestBody InterfaceResponse interfaceResponse, HttpServletResponse response){ try { if("0000".equals(interfaceResponse.getCode())){ @@ -966,6 +1048,7 @@ return; } if(1 == status){ + Double balance = rechargeRecordService.queryCompanyBalance();//平台余额 String parameter1 = jsonObject.getString("parameter1"); RechargeRecord rechargeRecord = rechargeRecordService.selectById(parameter1); rechargeRecord.setPayStatus(2); @@ -973,6 +1056,14 @@ rechargeRecord.setOrderNumber(jsonObject.getString("merOrderId")); rechargeRecord.setSurplusDividedAmount(rechargeRecord.getAmount()); rechargeRecordService.updateById(rechargeRecord); + CompanyFundFlow companyFundFlow = new CompanyFundFlow(); + companyFundFlow.setType(1); + companyFundFlow.setObjectType(1); + companyFundFlow.setBalance(new BigDecimal(balance)); + companyFundFlow.setMoney(new BigDecimal(rechargeRecord.getAmount())); + companyFundFlow.setCreateTime(new Date()); + companyFundFlowService.insert(companyFundFlow); + response.setStatus(200); PrintWriter out = response.getWriter(); out.print("OK"); @@ -987,4 +1078,47 @@ } } + + /** + * 获取企业流水 + * @param type + * @param time + * @return + */ + @ResponseBody + @PostMapping("/tAgent/queryCompanyFundFlow") + public Object queryCompanyFundFlow(Integer type, String time){ + Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage(); + List<Map<String, Object>> list = companyFundFlowService.queryCompanyFundFlow(page, type, time); + page.setRecords(list); + return super.packForBT(page); + } + + + /** + * 获取代理商汇总数据 + * @param id + * @param time + * @return + */ + @ResponseBody + @PostMapping("/tAgent/queryAgentSummaryData") + public Map<String, Object> queryAgentSummaryData(Integer id, String time){ + return tAgentService.queryAgentSummaryData(id, time); + } + + + /** + * 获取代理商明细列表 + * @param id + * @return + */ + @ResponseBody + @PostMapping("/tAgent/queryAgentCompanyFundFlow") + public Object queryAgentCompanyFundFlow(Integer id){ + Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage(); + List<Map<String, Object>> list = companyFundFlowService.queryAgentCompanyFundFlow(page, id); + page.setRecords(list); + return super.packForBT(page); + } } -- Gitblit v1.7.1