From 2987ec0f865eb816cdcb3fd10e2d556f9b7d95d4 Mon Sep 17 00:00:00 2001 From: xuhy <3313886187@qq.com> Date: 星期三, 03 九月 2025 16:18:10 +0800 Subject: [PATCH] bug修改 --- ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TServiceController.java | 120 +++++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 103 insertions(+), 17 deletions(-) diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TServiceController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TServiceController.java index 6e3d633..4e3886b 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TServiceController.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TServiceController.java @@ -1,10 +1,15 @@ package com.ruoyi.other.controller; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.ruoyi.chargingPile.api.feignClient.SiteClient; +import com.ruoyi.chargingPile.api.model.Site; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.log.annotation.Log; import com.ruoyi.common.log.enums.BusinessType; import com.ruoyi.common.security.service.TokenService; +import com.ruoyi.other.api.domain.IntegralPay; import com.ruoyi.other.api.domain.ServicePay; import com.ruoyi.other.api.domain.TIntegralRule; import com.ruoyi.other.query.IntegralListQuery; @@ -12,18 +17,17 @@ import com.ruoyi.other.service.TIntegralRecordService; import com.ruoyi.other.service.TIntegralRuleService; import com.ruoyi.other.service.TServicePayService; -import com.ruoyi.other.util.MyQrCodeUtil; -import com.ruoyi.other.util.ObsUploadUtil; -import com.ruoyi.other.util.QRCodeUtil; -import com.ruoyi.other.util.UUIDUtil; +import com.ruoyi.other.util.*; +import com.ruoyi.other.util.pay.CreateLinkStringByGet1; +import com.ruoyi.other.util.pay.HttpRequester; +import com.ruoyi.other.util.pay.HttpRespons; +import com.ruoyi.other.util.pay.Md5_Sign; import com.ruoyi.other.util.payment.wx.WechatPayService; -import com.ruoyi.other.vo.IntegralListVO; -import com.ruoyi.other.vo.IntegralVO; -import com.ruoyi.other.vo.ServiceListVO; -import com.ruoyi.other.vo.ServiceVO; +import com.ruoyi.other.vo.*; import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.feignClient.SysUserClient; import io.swagger.annotations.ApiOperation; +import io.swagger.models.auth.In; import org.apache.tomcat.util.http.fileupload.ByteArrayOutputStream; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.io.ByteArrayResource; @@ -36,9 +40,12 @@ import java.awt.image.BufferedImage; import java.io.IOException; import java.math.BigDecimal; +import java.math.RoundingMode; import java.text.SimpleDateFormat; import java.time.LocalDateTime; import java.util.Date; +import java.util.HashMap; +import java.util.List; import java.util.Map; /** @@ -66,8 +73,31 @@ private WechatPayService wechatPayService; @Resource private TServicePayService servicePayService; + @Resource + private SiteClient siteClient; + // 查询服务费缴纳情况 + @GetMapping("/getServiceStatus/{userId}") + public R<String> getServiceStatus(@PathVariable("userId") Integer userId) { + ServicePay servicePayBefore = servicePayService.lambdaQuery() + .eq(ServicePay::getUserId, userId) + .eq(ServicePay::getPayStatus,2) + .eq(ServicePay::getDelFlag,0) + .orderByDesc(ServicePay::getCreateTime) + .last("limit 1") + .one(); + if (servicePayBefore==null){ + return R.ok("1"); + } + else if (servicePayBefore.getEndTime().isBefore(LocalDateTime.now())) { + return R.ok("2"); + } + else{ + return R.ok("3"); + } + + } @PostMapping("/servicePageList") - @ApiOperation(tags = {"2.0-服务费管理"},value = "服务费管理") + @ApiOperation(tags = {"2.0-服务费"},value = "服务费管理") public R<ServiceVO> integralPageList(@RequestBody ServiceListQuery query) { Long userid = tokenService.getLoginUser().getUserid(); R<SysUser> sysUser = sysUserClient.getSysUser(userid); @@ -78,6 +108,7 @@ ServicePay servicePayBefore = servicePayService.lambdaQuery() .eq(ServicePay::getUserId, userid) .eq(ServicePay::getPayStatus,2) + .eq(ServicePay::getDelFlag,0) .orderByDesc(ServicePay::getCreateTime) .last("limit 1") .one(); @@ -95,26 +126,31 @@ } @PostMapping("/queryPayStatus") @ApiOperation(tags = {"2.0-服务费"},value = "查询支付结果 true成功 false失败") - public R<Boolean> integralPageList(@RequestParam("code") String code) throws Exception { - Map<String, String> resMap = wechatPayService.queryOrder(code); - if("SUCCESS".equals(resMap.get("return_code"))){ + public R<Boolean> integralPageList(@RequestParam("id") Integer id) throws Exception { + ServicePay servicePay = servicePayService.getById(id); + if (servicePay.getPayStatus()==2){ return R.ok(true); }else{ return R.ok(false); } } @PostMapping("/nativePay") - @ApiOperation(tags = {"2.0-服务费"},value = "获取支付二维码") - public R nativePay(@RequestParam("amount") String amount) throws Exception { + @ApiOperation(tags = {"2.0-服务费"},value = "管理后台缴纳服务费获取支付二维码") + public R<PayDto> nativePay() throws Exception { Long userid = tokenService.getLoginUser().getUserid(); R<SysUser> sysUser = sysUserClient.getSysUser(userid); SysUser data = sysUser.getData(); + List<Site> sites = siteClient.getSiteAll().getData(); + Site site = sites.stream().filter(e -> e.getId().equals(data.getSiteId())).findFirst().orElse(null); + if (site==null){ + return R.fail("当前登录用户未绑定站点"); + } SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); String code = sdf.format(new Date()) + UUIDUtil.getNumberRandom(5); - Map<String,String> res = wechatPayService.unifiedOrder(code, amount, "服务费缴纳", "/other/wx/serviceCallback"); + Map<String,String> res = wechatPayService.unifiedOrder(code, site.getAnnualServiceFee()+"", site.getCode()+"服务费缴纳", "/other/wx/serviceCallback"); ServicePay servicePay = new ServicePay(); servicePay.setUserId(data.getUserId()); - servicePay.setAmount(new BigDecimal( amount)); + servicePay.setAmount(site.getAnnualServiceFee()); servicePay.setCode(code); servicePay.setPayStatus(1); servicePay.setPayType(1); @@ -127,7 +163,57 @@ MultipartFile blueFile = convert(blueImage, new Date().getTime() + UUIDUtil.getRandomCode(3) + ".PNG"); String s = ObsUploadUtil.obsUpload(blueFile); System.err.println(s); - return R.ok(s); + PayDto payDto = new PayDto(); + payDto.setId(servicePay.getId()); + payDto.setQrCode(s); + payDto.setServiceMoney(site.getAnnualServiceFee()); + return R.ok(payDto); + } + @Resource + private WeChatUtil weChatUtil; + @PostMapping("/bindOpenId") + @ApiOperation(tags = {"2.0-服务费"},value = "小程序绑定openId") + public R bindOpenId(@RequestParam("jscode") String jscode) throws Exception { + //使用jscode获取微信openid + Map<String, Object> map = weChatUtil.code2Session(jscode); + Integer errcode = Integer.valueOf(map.get("errcode").toString()); + if(0 != errcode){ + return R.fail(map.get("msg").toString()); + } + String openid = map.get("openid").toString(); + Long userid = tokenService.getLoginUser().getUserid(); + R<SysUser> sysUser = sysUserClient.getSysUser(userid); + SysUser data = sysUser.getData(); + data.setOpenId(openid); + sysUserClient.updateSysUser(data); + return R.ok(); + } + @PostMapping("/servicePayApplet") + @ApiOperation(tags = {"2.0-服务费"},value = "小程序缴纳服务费") + public R servicePayApplet() throws Exception { + + Long userid = tokenService.getLoginUser().getUserid(); + R<SysUser> sysUser = sysUserClient.getSysUser(userid); + SysUser data = sysUser.getData(); + List<Site> sites = siteClient.getSiteAll().getData(); + Site site = sites.stream().filter(e -> e.getId().equals(data.getSiteId())).findFirst().orElse(null); + if (site==null){ + return R.fail("当前登录用户未绑定站点"); + } + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); + String code = sdf.format(new Date()) + UUIDUtil.getNumberRandom(5); + ServicePay servicePay = new ServicePay(); + servicePay.setUserId(data.getUserId()); + servicePay.setAmount(site.getAnnualServiceFee()); + servicePay.setCode(code); + servicePay.setPayStatus(1); + servicePay.setPayType(1); + servicePay.setDelFlag(0); + servicePay.setCreateTime(LocalDateTime.now()); + servicePayService.save(servicePay); + + + return wechatPayService.unifiedOrderApplet(servicePay.getId()+"",code, site.getAnnualServiceFee()+"", site.getCode()+"服务费缴纳",data.getOpenId(), "/other/wx/serviceCallback"); } public static MultipartFile convert(BufferedImage bufferedImage, String fileName) throws IOException { // 将 BufferedImage 转换为字节数组 -- Gitblit v1.7.1