From 6b8c59ead0bcd43d54658b78f463d8ea420143d6 Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期一, 01 九月 2025 15:24:33 +0800
Subject: [PATCH] 提现新增订单号

---
 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..b31d1bb 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()+"", "服务费缴纳", "/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()+"", "服务费缴纳",data.getOpenId(), "/other/wx/serviceCallback");
     }
     public static MultipartFile convert(BufferedImage bufferedImage, String fileName) throws IOException {
         // 将 BufferedImage 转换为字节数组

--
Gitblit v1.7.1