Bläddra i källkod

feat: 充值模板

xdd 3 veckor sedan
förälder
incheckning
86e90f8da7

+ 83 - 0
fs-admin/src/main/java/com/fs/his/controller/RechargeTemplateController.java

@@ -0,0 +1,83 @@
+package com.fs.his.controller;
+
+import com.fs.common.core.controller.BaseController;
+import com.fs.common.core.domain.R;
+import com.fs.common.core.page.TableDataInfo;
+import com.fs.recharge.domain.RechargeTemplate;
+import com.fs.recharge.param.RechargeParam;
+import com.fs.recharge.param.RechargeTemplateQuery;
+import com.fs.recharge.service.RechargeTemplateService;
+import com.fs.recharge.vo.RechargeTemplateVO;
+import com.github.pagehelper.PageHelper;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * 充值模板控制器
+ */
+@Slf4j
+@Api(tags = "充值模板管理")
+@RestController
+@RequestMapping("/recharge-templates")
+public class RechargeTemplateController extends BaseController {
+
+    @Autowired
+    private RechargeTemplateService rechargeTemplateService;
+
+    @ApiOperation("获取可用的充值模板列表")
+    @PostMapping("/list")
+    public TableDataInfo getValidTemplates(@RequestBody RechargeTemplateQuery query) {
+        log.info("获取可用的充值模板列表 参数 query: {}",query);
+
+        Integer pageNum = query.getPageNum();
+        Integer pageSize = query.getPageSize();
+
+        PageHelper.startPage(pageNum, pageSize);
+
+        List<RechargeTemplateVO> templates = rechargeTemplateService.queryList(query);
+        return getDataTable(templates);
+    }
+
+    @ApiOperation("获取充值模板详情")
+    @GetMapping("/{id}")
+    public R getTemplateDetail(
+            @ApiParam(value = "模板ID", required = true) @PathVariable Long id) {
+        RechargeTemplateVO template = rechargeTemplateService.getTemplateDetail(id);
+        if (template == null) {
+            return R.error("模板不存在");
+        }
+        return R.ok().put("data",template);
+    }
+
+    @ApiOperation("创建充值模板")
+    @PostMapping
+    public R createTemplate(@RequestBody RechargeTemplate template) {
+        boolean success = rechargeTemplateService.createTemplate(template);
+        return R.ok();
+    }
+
+    @ApiOperation("更新充值模板")
+    @PutMapping("/{id}")
+    public R updateTemplate(
+            @ApiParam(value = "模板ID", required = true) @PathVariable Long id,
+            @RequestBody RechargeTemplate template) {
+        template.setId(id);
+        boolean success = rechargeTemplateService.updateTemplate(template);
+        return R.ok();
+    }
+
+    @ApiOperation("启用或禁用充值模板")
+    @PutMapping("/{id}/status")
+    public R updateStatus(
+            @ApiParam(value = "模板ID", required = true) @PathVariable Long id,
+            @ApiParam(value = "状态:0-禁用,1-启用", required = true) @RequestParam Integer status) {
+        boolean success = rechargeTemplateService.updateStatus(id, status);
+        return R.ok();
+    }
+}

+ 1 - 1
fs-service/src/main/java/com/fs/recharge/mapper/FsUserRechargeRecordMapper.java

@@ -51,5 +51,5 @@ public interface FsUserRechargeRecordMapper extends BaseMapper<FsUserRechargeRec
      * @return 购买次数
      */
     @Select("SELECT COUNT(*) FROM fs_user_recharge_record WHERE user_id = #{userId} AND template_id = #{templateId} AND status = 1")
-    int countUserPurchaseByTemplateId(@Param("userId") Long userId, @Param("templateId") Long templateId);
+    Long countUserPurchaseByTemplateId(@Param("userId") Long userId, @Param("templateId") Long templateId);
 }

+ 15 - 0
fs-service/src/main/java/com/fs/recharge/param/RechargeTemplateQuery.java

@@ -0,0 +1,15 @@
+package com.fs.recharge.param;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class RechargeTemplateQuery implements Serializable {
+    private Integer pageNum;
+    private Integer pageSize;
+    private String templateName;
+    private Integer status;
+    private String tag;
+    private String userType;
+}

+ 1 - 1
fs-service/src/main/java/com/fs/recharge/service/FsUserRechargeRecordService.java

@@ -57,7 +57,7 @@ public interface FsUserRechargeRecordService extends IService<FsUserRechargeReco
      * @param templateId 模板ID
      * @return 购买次数
      */
-    int countUserPurchaseByTemplateId(Long userId, Long templateId);
+    Long countUserPurchaseByTemplateId(Long userId, Long templateId);
 
     /**
      * 取消充值订单

+ 8 - 0
fs-service/src/main/java/com/fs/recharge/service/RechargeTemplateService.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.fs.common.core.domain.R;
 import com.fs.recharge.domain.RechargeTemplate;
 import com.fs.recharge.param.RechargeParam;
+import com.fs.recharge.param.RechargeTemplateQuery;
 import com.fs.recharge.vo.RechargeTemplateVO;
 
 import java.util.List;
@@ -63,4 +64,11 @@ public interface RechargeTemplateService extends IService<RechargeTemplate> {
      * @return 次数
      */
     Long countUserPurchaseByTemplateId(Long userId, Long id);
+
+    /**
+     * 分页查询充值模板
+     * @param query
+     * @return
+     */
+    List<RechargeTemplateVO> queryList(RechargeTemplateQuery query);
 }

+ 1 - 1
fs-service/src/main/java/com/fs/recharge/service/impl/FsUserRechargeRecordServiceImpl.java

@@ -43,7 +43,7 @@ public class FsUserRechargeRecordServiceImpl extends ServiceImpl<FsUserRechargeR
     }
 
     @Override
-    public int countUserPurchaseByTemplateId(Long userId, Long templateId) {
+    public Long countUserPurchaseByTemplateId(Long userId, Long templateId) {
         return baseMapper.countUserPurchaseByTemplateId(userId, templateId);
     }
 

+ 38 - 1
fs-service/src/main/java/com/fs/recharge/service/impl/RechargeTemplateServiceImpl.java

@@ -1,7 +1,9 @@
 package com.fs.recharge.service.impl;
 
 import cn.hutool.json.JSONUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fs.common.core.domain.R;
@@ -28,6 +30,7 @@ import com.fs.recharge.domain.FsUserRechargeRecord;
 import com.fs.recharge.domain.RechargeTemplate;
 import com.fs.recharge.mapper.RechargeTemplateMapper;
 import com.fs.recharge.param.RechargeParam;
+import com.fs.recharge.param.RechargeTemplateQuery;
 import com.fs.recharge.service.FsUserRechargeRecordService;
 import com.fs.recharge.service.RechargeTemplateService;
 import com.fs.recharge.vo.RechargeTemplateVO;
@@ -317,9 +320,43 @@ public class RechargeTemplateServiceImpl extends ServiceImpl<RechargeTemplateMap
     }
 
 
+    /**
+     * 获取用户购买数量
+     */
     @Override
     public Long countUserPurchaseByTemplateId(Long userId, Long id) {
-        return 0L;
+        return this.fsUserRechargeRecordService.countUserPurchaseByTemplateId(userId,id);
+    }
+
+    @Override
+    public List<RechargeTemplateVO> queryList(RechargeTemplateQuery query) {
+        log.info("查询充值模板列表,参数:{}", query);
+
+        QueryWrapper<RechargeTemplate> queryWrapper = new QueryWrapper<>();
+
+        if (StringUtil.isNotBlank(query.getTemplateName())) {
+            queryWrapper.like("template_name", query.getTemplateName());
+        }
+
+        if (query.getStatus() != null) {
+            queryWrapper.eq("status", query.getStatus());
+        }
+
+        if (StringUtil.isNotBlank(query.getTag())) {
+            queryWrapper.eq("tag", query.getTag());
+        }
+
+        queryWrapper.orderByAsc("sort_order");
+
+        List<RechargeTemplate> templateList = baseMapper.selectList(queryWrapper);
+
+        if (CollectionUtils.isEmpty(templateList)) {
+            return Collections.emptyList();
+        }
+
+        return templateList.stream()
+                .map(this::convertToVO)
+                .collect(Collectors.toList());
     }
 
     /**