Răsfoiți Sursa

feat(income): add cash out record detail query functionality

- Added new API endpoint /getCashOutRecordDetail to query cash out record details
- Implemented service method to fetch cash out record with ID validation
- Added permission check to ensure only record owner can access details
- Updated API order annotations for better documentation structure
- Included proper error handling and logging for failed queries
wxd 3 săptămâni în urmă
părinte
comite
a34d421420

+ 22 - 4
alien-store-platform/src/main/java/shop/alien/storeplatform/controller/IncomeManageController.java

@@ -6,6 +6,7 @@ import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.web.bind.annotation.*;
 import shop.alien.entity.result.R;
+import shop.alien.entity.store.StoreCashOutRecord;
 import shop.alien.storeplatform.service.IncomeManageService;
 import shop.alien.storeplatform.util.LoginUserUtil;
 
@@ -126,9 +127,26 @@ public class IncomeManageController {
         }
     }
 
-    @ApiOperation("团购收益查询")
+    @ApiOperation("提现记录详情查询")
     @ApiOperationSupport(order = 5)
     @ApiImplicitParams({
+            @ApiImplicitParam(name = "id", value = "提现记录ID", dataType = "Integer", paramType = "query", required = true)
+    })
+    @GetMapping("/getCashOutRecordDetail")
+    public R<StoreCashOutRecord> getCashOutRecordDetail(@RequestParam("id") Integer id) {
+        log.info("IncomeManageController.getCashOutRecordDetail?id={}", id);
+        try {
+            StoreCashOutRecord result = incomeManageService.getCashOutRecordDetail(id);
+            return R.data(result);
+        } catch (Exception e) {
+            log.error("IncomeManageController.getCashOutRecordDetail ERROR: {}", e.getMessage(), e);
+            return R.fail("查询失败:" + e.getMessage());
+        }
+    }
+
+    @ApiOperation("团购收益查询")
+    @ApiOperationSupport(order = 6)
+    @ApiImplicitParams({
             @ApiImplicitParam(name = "date", value = "日期(格式:yyyy-MM-dd)", dataType = "String", paramType = "query", required = true),
             @ApiImplicitParam(name = "incomeType", value = "收入类型, 0:主页, 1:优惠券, 2:代金券, 3:套餐, 4:联名卡", dataType = "Integer", paramType = "query"),
             @ApiImplicitParam(name = "page", value = "页码", dataType = "Integer", paramType = "query"),
@@ -153,7 +171,7 @@ public class IncomeManageController {
     }
 
     @ApiOperation("快速提现申请(免审核)")
-    @ApiOperationSupport(order = 6)
+    @ApiOperationSupport(order = 7)
     @ApiImplicitParams({
             @ApiImplicitParam(name = "payPassword", value = "支付密码", dataType = "String", paramType = "query", required = true),
             @ApiImplicitParam(name = "withdrawalMoney", value = "提现金额(单位:分)", dataType = "Integer", paramType = "query", required = true)
@@ -174,7 +192,7 @@ public class IncomeManageController {
     }
 
     @ApiOperation("已入账/未入账详情查询")
-    @ApiOperationSupport(order = 7)
+    @ApiOperationSupport(order = 8)
     @ApiImplicitParams({
             @ApiImplicitParam(name = "incomeType", value = "收入类型, 0:主页, 1:优惠券, 2:代金券, 3:套餐, 4:联名卡", dataType = "Integer", paramType = "query"),
             @ApiImplicitParam(name = "paymentType", value = "账期类型, 0:未入账, 1:已入账", dataType = "Integer", paramType = "query", required = true),
@@ -205,7 +223,7 @@ public class IncomeManageController {
     }
 
     @ApiOperation("收入汇总统计")
-    @ApiOperationSupport(order = 8)
+    @ApiOperationSupport(order = 9)
     @GetMapping("/getIncomeSummary")
     public R<Map<String, Object>> getIncomeSummary() {
         log.info("IncomeManageController.getIncomeSummary - 查询收入汇总统计");

+ 9 - 0
alien-store-platform/src/main/java/shop/alien/storeplatform/service/IncomeManageService.java

@@ -2,6 +2,7 @@ package shop.alien.storeplatform.service;
 
 import com.alibaba.fastjson2.JSONObject;
 import shop.alien.entity.result.R;
+import shop.alien.entity.store.StoreCashOutRecord;
 
 import java.util.Map;
 
@@ -61,6 +62,14 @@ public interface IncomeManageService {
                                 String paymentStatus, Integer page, Integer size);
 
     /**
+     * 提现记录详情查询
+     *
+     * @param id 提现记录ID
+     * @return 提现记录详情
+     */
+    StoreCashOutRecord getCashOutRecordDetail(Integer id);
+
+    /**
      * 团购收益查询
      *
      * @param storeId    门店ID

+ 38 - 0
alien-store-platform/src/main/java/shop/alien/storeplatform/service/impl/IncomeManageServiceImpl.java

@@ -22,6 +22,7 @@ import shop.alien.mapper.StoreIncomeDetailsRecordMapper;
 import shop.alien.mapper.StoreInfoMapper;
 import shop.alien.mapper.StoreUserMapper;
 import shop.alien.storeplatform.service.IncomeManageService;
+import shop.alien.storeplatform.util.LoginUserUtil;
 import shop.alien.util.common.ListToPage;
 import shop.alien.util.common.constant.CouponTypeEnum;
 import shop.alien.util.date.DateUtils;
@@ -417,6 +418,43 @@ public class IncomeManageServiceImpl extends ServiceImpl<StoreIncomeDetailsRecor
     }
 
     /**
+     * 提现记录详情查询
+     *
+     * @param id 提现记录ID
+     * @return 提现记录详情
+     */
+    @Override
+    public StoreCashOutRecord getCashOutRecordDetail(Integer id) {
+        log.info("IncomeManageServiceImpl.getCashOutRecordDetail - 开始查询提现记录详情: id={}", id);
+
+        // ==================== 1. 参数验证 ====================
+        if (id == null) {
+            log.warn("IncomeManageServiceImpl.getCashOutRecordDetail - 提现记录ID为空");
+            throw new RuntimeException("提现记录ID不能为空");
+        }
+
+        // ==================== 2. 查询提现记录 ====================
+        StoreCashOutRecord record = storeCashOutRecordMapper.selectById(id);
+        if (record == null || record.getDeleteFlag() == 1) {
+            log.warn("IncomeManageServiceImpl.getCashOutRecordDetail - 提现记录不存在: id={}", id);
+            throw new RuntimeException("提现记录不存在");
+        }
+
+        // ==================== 3. 权限校验(只能查看自己店铺的提现记录) ====================
+        Integer storeId = LoginUserUtil.getCurrentStoreId();
+        if (!record.getStoreId().equals(storeId)) {
+            log.warn("IncomeManageServiceImpl.getCashOutRecordDetail - 无权查看他人提现记录: currentStoreId={}, recordStoreId={}",
+                    storeId, record.getStoreId());
+            throw new RuntimeException("无权查看该提现记录");
+        }
+
+        log.info("IncomeManageServiceImpl.getCashOutRecordDetail - 查询完成: id={}, storeId={}, money={}, status={}",
+                id, record.getStoreId(), record.getMoney(), record.getPaymentStatus());
+
+        return record;
+    }
+
+    /**
      * 团购收益查询
      *
      * @param storeId    门店ID