Browse Source

接口基本都做完了,反正都是基本接口

skyfffire 1 month ago
parent
commit
b0cda29054

+ 81 - 0
src/main/java/modules/deposit/DepositController.java

@@ -9,6 +9,7 @@ import com.jfinal.kit.StrKit;
 import com.wechat.pay.java.service.payments.model.Transaction;
 import com.wechat.pay.java.service.payments.model.Transaction;
 import common.interceptor.LoginInterceptor;
 import common.interceptor.LoginInterceptor;
 import common.interceptor.empty.EmptyInterface;
 import common.interceptor.empty.EmptyInterface;
+import common.interceptor.role.RequiredRoleInterface;
 import common.jfinal.AppConfig;
 import common.jfinal.AppConfig;
 import common.model.Deposit;
 import common.model.Deposit;
 import common.model.User;
 import common.model.User;
@@ -16,6 +17,7 @@ import common.utils.IpAddressUtil;
 import common.utils.http.MyController;
 import common.utils.http.MyController;
 import common.utils.http.MyRet;
 import common.utils.http.MyRet;
 import common.utils.wechat.WeChatService;
 import common.utils.wechat.WeChatService;
+import modules.user.UserController;
 import modules.user.UserService;
 import modules.user.UserService;
 
 
 import java.util.HashMap;
 import java.util.HashMap;
@@ -159,4 +161,83 @@ public class DepositController extends MyController {
         // 创建并返回支付链接给前端
         // 创建并返回支付链接给前端
         renderJson(service.createDepositOrder(amount, ip, user.getId()));
         renderJson(service.createDepositOrder(amount, ip, user.getId()));
     }
     }
+
+    @Before(LoginInterceptor.class)
+    @EmptyInterface({"page_size", "page_number"})
+    public void list() {
+        JSONObject requestBodyJson = MyController.getJsonModelByRequestAndType(getRequest(), JSONObject.class);
+
+        // 页面大小
+        String pageSizeStr = requestBodyJson.getString("page_size");
+        int pageSizeInt;
+        try {
+            pageSizeInt = Integer.parseInt(pageSizeStr);
+
+            if (pageSizeInt <= 0) {
+                renderJson(MyRet.fail("页面大小(page_size)期待是正整数,你传的是: " + pageSizeStr));
+                return;
+            }
+        } catch (Exception e) {
+            renderJson(MyRet.fail("页面大小(page_size)格式不正确: " + e.getMessage()));
+            return;
+        }
+
+        // 页码
+        String pageNumberStr = requestBodyJson.getString("page_number");
+        int pageNumberInt;
+        try {
+            pageNumberInt = Integer.parseInt(pageNumberStr);
+
+            if (pageNumberInt <= 0) {
+                renderJson(MyRet.fail("页码(page_number)期待是正整数,你传的是: " + pageNumberStr));
+                return;
+            }
+        } catch (Exception e) {
+            renderJson(MyRet.fail("页码(page_number)格式不正确: " + e.getMessage()));
+            return;
+        }
+
+        User user = userService.findUserByMobileNumber(getSessionAttr("mobile_number"));
+
+        renderJson(service.list(pageNumberInt, pageSizeInt, user.getId()));
+    }
+
+    @Before(LoginInterceptor.class)
+    @RequiredRoleInterface({UserController.ROLE_CHECK_ADMIN, UserController.ROLE_SUPER_ADMIN})
+    @EmptyInterface({"page_size", "page_number"})
+    public void listByAdmin() {
+        JSONObject requestBodyJson = MyController.getJsonModelByRequestAndType(getRequest(), JSONObject.class);
+
+        // 页面大小
+        String pageSizeStr = requestBodyJson.getString("page_size");
+        int pageSizeInt;
+        try {
+            pageSizeInt = Integer.parseInt(pageSizeStr);
+
+            if (pageSizeInt <= 0) {
+                renderJson(MyRet.fail("页面大小(page_size)期待是正整数,你传的是: " + pageSizeStr));
+                return;
+            }
+        } catch (Exception e) {
+            renderJson(MyRet.fail("页面大小(page_size)格式不正确: " + e.getMessage()));
+            return;
+        }
+
+        // 页码
+        String pageNumberStr = requestBodyJson.getString("page_number");
+        int pageNumberInt;
+        try {
+            pageNumberInt = Integer.parseInt(pageNumberStr);
+
+            if (pageNumberInt <= 0) {
+                renderJson(MyRet.fail("页码(page_number)期待是正整数,你传的是: " + pageNumberStr));
+                return;
+            }
+        } catch (Exception e) {
+            renderJson(MyRet.fail("页码(page_number)格式不正确: " + e.getMessage()));
+            return;
+        }
+
+        renderJson(service.list(pageNumberInt, pageSizeInt, null));
+    }
 }
 }

+ 87 - 0
src/main/java/modules/deposit/DepositService.java

@@ -1,11 +1,17 @@
 package modules.deposit;
 package modules.deposit;
 
 
+import com.jfinal.plugin.activerecord.Db;
 import com.wechat.pay.java.service.payments.h5.model.H5Info;
 import com.wechat.pay.java.service.payments.h5.model.H5Info;
 import com.wechat.pay.java.service.payments.h5.model.PrepayResponse;
 import com.wechat.pay.java.service.payments.h5.model.PrepayResponse;
 import com.wechat.pay.java.service.payments.h5.model.SceneInfo;
 import com.wechat.pay.java.service.payments.h5.model.SceneInfo;
 import common.model.Deposit;
 import common.model.Deposit;
 import common.utils.http.MyRet;
 import common.utils.http.MyRet;
 
 
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
 import static common.utils.wechat.WeChatService.prepay;
 import static common.utils.wechat.WeChatService.prepay;
 
 
 public class DepositService {
 public class DepositService {
@@ -52,4 +58,85 @@ public class DepositService {
     public Deposit findDepositByWxOrderNo(String wxOrderNo) {
     public Deposit findDepositByWxOrderNo(String wxOrderNo) {
         return Deposit.dao.findFirst("SELECT * FROM t_deposit WHERE wx_order_no=?", wxOrderNo);
         return Deposit.dao.findFirst("SELECT * FROM t_deposit WHERE wx_order_no=?", wxOrderNo);
     }
     }
+    
+    public MyRet list(int pageNumber, int pageSize, Long userId) {
+        // 接收 Integer 类型的 orderStatus
+        // 构建用于查询当前页订单列表的 SQL
+        String columns = " * ";
+        String select = "SELECT " + columns;
+        StringBuilder fromWhere = new StringBuilder("FROM t_deposit"); // 基础 from 子句
+        String orderBy = "ORDER BY create_time DESC";
+        boolean hasWhereClause = false; // 标志位,用于判断是否已经添加了 WHERE 关键字
+
+        List<Object> params = new ArrayList<>(); // 用于 SELECT 列表查询的参数
+
+        // ✅ 根据 userId 筛选
+        // 通常 userId 是正整数,如果 userId 可能为 0 需要特别对待
+        if (userId != null && userId > 0) { // 通常 userId 从 1 开始,或者根据你的业务逻辑设定
+            fromWhere.append(hasWhereClause ? " AND" : " WHERE").append(" user_id = ?");
+            params.add(userId);
+            hasWhereClause = true;
+        }
+
+        // 计算 LIMIT 的 offset (偏移量)
+        int offset = (pageNumber - 1) * pageSize;
+
+        // 构建查询当前页订单列表的最终 SQL (手动添加 LIMIT)
+        String listSql = select + " " + fromWhere + " " + orderBy + " LIMIT ?, ?";
+        params.add(offset);
+        params.add(pageSize);
+
+        List<Deposit> withdrawList = Deposit.dao.find(listSql, params.toArray());
+
+        // 如果列表为空,直接返回
+        if (withdrawList.isEmpty()) {
+            Map<String, Object> response = new HashMap<>(); // 准备返回结构
+            response.put("list", new ArrayList<>());
+            response.put("total_row", 0);
+            response.put("total_page", 0);
+            response.put("page_size", pageSize);
+            response.put("page_number", pageNumber);
+            response.put("total_order_count", 0); // 与你的 total_user_count 对应
+            return MyRet.ok("查询成功").setData(response);
+        }
+
+        // 获取符合条件的条目数量
+        long totalRowLong = countWithdraws(userId);
+
+        // 手动计算 total_page
+        int totalPage = (int) Math.ceil((double) totalRowLong / pageSize);
+        if (totalPage == 0 && totalRowLong > 0) { // 解决总行数大于0但总页数为0(pageSize大于totalRow)的问题
+            totalPage = 1;
+        }
+
+        // 封装最终响应
+        Map<String, Object> response = new HashMap<>();
+        response.put("list", withdrawList);
+        response.put("total_row", totalRowLong); // 符合条件的订单总数
+        response.put("total_page", totalPage); // 手动计算的总页数
+        response.put("page_size", pageSize);
+        response.put("page_number", pageNumber);
+        response.put("total_order_count", totalRowLong); // 对应 total_user_count,这里是符合订单状态筛选的总数
+
+        return MyRet.ok("查询成功").setData(response);
+    }
+
+    public long countWithdraws(Long userId) { // 接收 Integer 类型的 status
+        StringBuilder sql = new StringBuilder("SELECT COUNT(*) FROM t_deposit"); // 使用 COUNT(*),更通用
+        List<Object> params = new ArrayList<>();
+        boolean hasWhereClause = false; // 标志位,用于判断是否已经添加了 WHERE 关键字
+
+        // ✅ 根据 userId 筛选
+        // 通常 userId 是正整数,如果 userId 可能为 0 需要特别对待
+        if (userId != null && userId > 0) { // 通常 userId 从 1 开始,或者根据你的业务逻辑设定
+            sql.append(hasWhereClause ? " AND" : " WHERE").append(" user_id = ?");
+            params.add(userId);
+            hasWhereClause = true;
+        }
+
+        // 执行查询并返回结果
+        // Db.queryLong() 如果没有结果会返回 null,如果查询结果行数为 0,则返回 Long 0
+        // 这符合 COUNT() 函数的预期
+        return Db.queryLong(sql.toString(), params.toArray());
+    }
 }
 }

+ 3 - 0
src/main/java/modules/withdraw/WithdrawController.java

@@ -55,6 +55,7 @@ public class WithdrawController extends MyController {
     }
     }
 
 
     @Before(LoginInterceptor.class)
     @Before(LoginInterceptor.class)
+    @EmptyInterface({"page_size", "page_number"})
     public void list() {
     public void list() {
         JSONObject requestBodyJson = MyController.getJsonModelByRequestAndType(getRequest(), JSONObject.class);
         JSONObject requestBodyJson = MyController.getJsonModelByRequestAndType(getRequest(), JSONObject.class);
 
 
@@ -160,6 +161,8 @@ public class WithdrawController extends MyController {
     }
     }
 
 
     @Before(LoginInterceptor.class)
     @Before(LoginInterceptor.class)
+    @RequiredRoleInterface({UserController.ROLE_CHECK_ADMIN, UserController.ROLE_SUPER_ADMIN})
+    @EmptyInterface({"page_size", "page_number"})
     public void listByAdmin() {
     public void listByAdmin() {
         JSONObject requestBodyJson = MyController.getJsonModelByRequestAndType(getRequest(), JSONObject.class);
         JSONObject requestBodyJson = MyController.getJsonModelByRequestAndType(getRequest(), JSONObject.class);
 
 

+ 2 - 2
src/test/rest/DepositControllerTest.http

@@ -11,7 +11,7 @@ dl-token: {{dl_token_var}}
 }
 }
 
 
 ### 获取用户自己的充值订单
 ### 获取用户自己的充值订单
-POST {{ baseUrl }}/deposit/deposits
+POST {{ baseUrl }}/deposit/list
 Content-Type: application/json
 Content-Type: application/json
 dl-token: {{dl_token_var}}
 dl-token: {{dl_token_var}}
 
 
@@ -28,7 +28,7 @@ dl-token: {{dl_token_var}}
 ### total_deposit_count 符合条件的总记录数
 ### total_deposit_count 符合条件的总记录数
 
 
 ### 【超级管理员】获取所有用户的充值订单
 ### 【超级管理员】获取所有用户的充值订单
-POST {{ baseUrl }}/deposit/depositsByAdmin
+POST {{ baseUrl }}/deposit/listByAdmin
 Content-Type: application/json
 Content-Type: application/json
 dl-token: {{dl_token_var}}
 dl-token: {{dl_token_var}}