Эх сурвалжийг харах

feat(business): 新增优惠券模块及相关功能

- 添加优惠券实体类、控制器、服务层及映射器
- 实现优惠券模板重命名为 CouponTemplate 并调整字段结构
- 引入逻辑删除注解支持软删除操作
- 创建对应的 VO、Form、Query 和 Converter 类
- 配置 MyBatis XML 查询语句与分页支持
- 更新 Controller 接口权限控制和 Swagger 文档注释
- 提供完整的 CRUD 功能接口实现
- 优化模板表单验证规则及状态管理逻辑
wzq 1 өдөр өмнө
parent
commit
a649aead59
35 өөрчлөгдсөн 968 нэмэгдсэн , 296 устгасан
  1. 81 0
      src/main/java/com/zsElectric/boot/business/controller/CouponController.java
  2. 81 0
      src/main/java/com/zsElectric/boot/business/controller/CouponTemplateController.java
  3. 0 81
      src/main/java/com/zsElectric/boot/business/controller/PromotionCouponTemplateController.java
  4. 20 0
      src/main/java/com/zsElectric/boot/business/converter/CouponConverter.java
  5. 20 0
      src/main/java/com/zsElectric/boot/business/converter/CouponTemplateConverter.java
  6. 0 20
      src/main/java/com/zsElectric/boot/business/converter/PromotionCouponTemplateConverter.java
  7. 28 0
      src/main/java/com/zsElectric/boot/business/mapper/CouponMapper.java
  8. 28 0
      src/main/java/com/zsElectric/boot/business/mapper/CouponTemplateMapper.java
  9. 0 29
      src/main/java/com/zsElectric/boot/business/mapper/PromotionCouponTemplateMapper.java
  10. 86 0
      src/main/java/com/zsElectric/boot/business/model/entity/Coupon.java
  11. 28 14
      src/main/java/com/zsElectric/boot/business/model/entity/CouponTemplate.java
  12. 2 0
      src/main/java/com/zsElectric/boot/business/model/entity/FirmInfo.java
  13. 2 0
      src/main/java/com/zsElectric/boot/business/model/entity/FirmStationTimePrice.java
  14. 2 0
      src/main/java/com/zsElectric/boot/business/model/entity/RechargeLevel.java
  15. 2 0
      src/main/java/com/zsElectric/boot/business/model/entity/UserAccount.java
  16. 2 0
      src/main/java/com/zsElectric/boot/business/model/entity/UserFirm.java
  17. 2 0
      src/main/java/com/zsElectric/boot/business/model/entity/UserInfo.java
  18. 93 0
      src/main/java/com/zsElectric/boot/business/model/form/CouponForm.java
  19. 25 17
      src/main/java/com/zsElectric/boot/business/model/form/CouponTemplateForm.java
  20. 3 0
      src/main/java/com/zsElectric/boot/business/model/form/UserFirmForm.java
  21. 21 0
      src/main/java/com/zsElectric/boot/business/model/query/CouponQuery.java
  22. 21 0
      src/main/java/com/zsElectric/boot/business/model/query/CouponTemplateQuery.java
  23. 0 37
      src/main/java/com/zsElectric/boot/business/model/query/PromotionCouponTemplateQuery.java
  24. 3 0
      src/main/java/com/zsElectric/boot/business/model/vo/BannerInfoVO.java
  25. 61 0
      src/main/java/com/zsElectric/boot/business/model/vo/CouponTemplateVO.java
  26. 61 0
      src/main/java/com/zsElectric/boot/business/model/vo/CouponVO.java
  27. 3 0
      src/main/java/com/zsElectric/boot/business/model/vo/UserAccountVO.java
  28. 58 0
      src/main/java/com/zsElectric/boot/business/service/CouponService.java
  29. 58 0
      src/main/java/com/zsElectric/boot/business/service/CouponTemplateService.java
  30. 0 58
      src/main/java/com/zsElectric/boot/business/service/PromotionCouponTemplateService.java
  31. 103 0
      src/main/java/com/zsElectric/boot/business/service/impl/CouponServiceImpl.java
  32. 21 21
      src/main/java/com/zsElectric/boot/business/service/impl/CouponTemplateServiceImpl.java
  33. 31 0
      src/main/resources/mapper/business/CouponMapper.xml
  34. 21 18
      src/main/resources/mapper/business/CouponTemplateMapper.xml
  35. 1 1
      src/main/resources/mapper/business/UserInfoMapper.xml

+ 81 - 0
src/main/java/com/zsElectric/boot/business/controller/CouponController.java

@@ -0,0 +1,81 @@
+package com.zsElectric.boot.business.controller;
+
+import com.zsElectric.boot.business.service.CouponService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.zsElectric.boot.business.model.form.CouponForm;
+import com.zsElectric.boot.business.model.query.CouponQuery;
+import com.zsElectric.boot.business.model.vo.CouponVO;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.zsElectric.boot.core.web.PageResult;
+import com.zsElectric.boot.core.web.Result;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Operation;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+import jakarta.validation.Valid;
+
+/**
+ * 优惠劵前端控制层
+ *
+ * @author zsElectric
+ * @since 2025-12-15 09:38
+ */
+@Tag(name = "优惠劵接口")
+@RestController
+@RequestMapping("/api/v1/coupon")
+@RequiredArgsConstructor
+public class CouponController  {
+
+    private final CouponService couponService;
+
+    @Operation(summary = "优惠劵分页列表")
+    @GetMapping("/page")
+    @PreAuthorize("@ss.hasPerm('business:coupon:query')")
+    public PageResult<CouponVO> getCouponPage(CouponQuery queryParams ) {
+        IPage<CouponVO> result = couponService.getCouponPage(queryParams);
+        return PageResult.success(result);
+    }
+
+    @Operation(summary = "新增优惠劵")
+    @PostMapping
+    @PreAuthorize("@ss.hasPerm('business:coupon:add')")
+    public Result<Void> saveCoupon(@RequestBody @Valid CouponForm formData ) {
+        boolean result = couponService.saveCoupon(formData);
+        return Result.judge(result);
+    }
+
+    @Operation(summary = "获取优惠劵表单数据")
+    @GetMapping("/{id}/form")
+    @PreAuthorize("@ss.hasPerm('business:coupon:edit')")
+    public Result<CouponForm> getCouponForm(
+        @Parameter(description = "优惠劵ID") @PathVariable Long id
+    ) {
+        CouponForm formData = couponService.getCouponFormData(id);
+        return Result.success(formData);
+    }
+
+    @Operation(summary = "修改优惠劵")
+    @PutMapping(value = "/{id}")
+    @PreAuthorize("@ss.hasPerm('business:coupon:edit')")
+    public Result<Void> updateCoupon(
+            @Parameter(description = "优惠劵ID") @PathVariable Long id,
+            @RequestBody @Validated CouponForm formData
+    ) {
+        boolean result = couponService.updateCoupon(id, formData);
+        return Result.judge(result);
+    }
+
+    @Operation(summary = "删除优惠劵")
+    @DeleteMapping("/{ids}")
+    @PreAuthorize("@ss.hasPerm('business:coupon:delete')")
+    public Result<Void> deleteCoupons(
+        @Parameter(description = "优惠劵ID,多个以英文逗号(,)分割") @PathVariable String ids
+    ) {
+        boolean result = couponService.deleteCoupons(ids);
+        return Result.judge(result);
+    }
+}

+ 81 - 0
src/main/java/com/zsElectric/boot/business/controller/CouponTemplateController.java

@@ -0,0 +1,81 @@
+package com.zsElectric.boot.business.controller;
+
+import com.zsElectric.boot.business.service.CouponTemplateService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.zsElectric.boot.business.model.form.CouponTemplateForm;
+import com.zsElectric.boot.business.model.query.CouponTemplateQuery;
+import com.zsElectric.boot.business.model.vo.CouponTemplateVO;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.zsElectric.boot.core.web.PageResult;
+import com.zsElectric.boot.core.web.Result;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Operation;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+import jakarta.validation.Valid;
+
+/**
+ * 优惠劵模板前端控制层
+ *
+ * @author zsElectric
+ * @since 2025-12-15 11:14
+ */
+@Tag(name = "优惠劵模板接口")
+@RestController
+@RequestMapping("/api/v1/coupon-template")
+@RequiredArgsConstructor
+public class CouponTemplateController  {
+
+    private final CouponTemplateService couponTemplateService;
+
+    @Operation(summary = "优惠劵模板分页列表")
+    @GetMapping("/page")
+    @PreAuthorize("@ss.hasPerm('business:coupon-template:query')")
+    public PageResult<CouponTemplateVO> getCouponTemplatePage(CouponTemplateQuery queryParams ) {
+        IPage<CouponTemplateVO> result = couponTemplateService.getCouponTemplatePage(queryParams);
+        return PageResult.success(result);
+    }
+
+    @Operation(summary = "新增优惠劵模板")
+    @PostMapping
+    @PreAuthorize("@ss.hasPerm('business:coupon-template:add')")
+    public Result<Void> saveCouponTemplate(@RequestBody @Valid CouponTemplateForm formData ) {
+        boolean result = couponTemplateService.saveCouponTemplate(formData);
+        return Result.judge(result);
+    }
+
+    @Operation(summary = "获取优惠劵模板表单数据")
+    @GetMapping("/{id}/form")
+    @PreAuthorize("@ss.hasPerm('business:coupon-template:edit')")
+    public Result<CouponTemplateForm> getCouponTemplateForm(
+        @Parameter(description = "优惠劵模板ID") @PathVariable Long id
+    ) {
+        CouponTemplateForm formData = couponTemplateService.getCouponTemplateFormData(id);
+        return Result.success(formData);
+    }
+
+    @Operation(summary = "修改优惠劵模板")
+    @PutMapping(value = "/{id}")
+    @PreAuthorize("@ss.hasPerm('business:coupon-template:edit')")
+    public Result<Void> updateCouponTemplate(
+            @Parameter(description = "优惠劵模板ID") @PathVariable Long id,
+            @RequestBody @Validated CouponTemplateForm formData
+    ) {
+        boolean result = couponTemplateService.updateCouponTemplate(id, formData);
+        return Result.judge(result);
+    }
+
+    @Operation(summary = "删除优惠劵模板")
+    @DeleteMapping("/{ids}")
+    @PreAuthorize("@ss.hasPerm('business:coupon-template:delete')")
+    public Result<Void> deleteCouponTemplates(
+        @Parameter(description = "优惠劵模板ID,多个以英文逗号(,)分割") @PathVariable String ids
+    ) {
+        boolean result = couponTemplateService.deleteCouponTemplates(ids);
+        return Result.judge(result);
+    }
+}

+ 0 - 81
src/main/java/com/zsElectric/boot/business/controller/PromotionCouponTemplateController.java

@@ -1,81 +0,0 @@
-package com.zsElectric.boot.business.controller;
-
-import com.zsElectric.boot.business.service.PromotionCouponTemplateService;
-import lombok.RequiredArgsConstructor;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import com.zsElectric.boot.business.model.form.PromotionCouponTemplateForm;
-import com.zsElectric.boot.business.model.query.PromotionCouponTemplateQuery;
-import com.zsElectric.boot.business.model.vo.PromotionCouponTemplateVO;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.zsElectric.boot.core.web.PageResult;
-import com.zsElectric.boot.core.web.Result;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import io.swagger.v3.oas.annotations.Operation;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-import jakarta.validation.Valid;
-
-/**
- * 优惠劵模板前端控制层
- *
- * @author zsElectric
- * @since 2025-12-12 15:11
- */
-@Tag(name = "优惠劵模板接口")
-@RestController
-@RequestMapping("/api/v1/promotion-coupon-template")
-@RequiredArgsConstructor
-public class PromotionCouponTemplateController  {
-
-    private final PromotionCouponTemplateService promotionCouponTemplateService;
-
-    @Operation(summary = "优惠劵模板分页列表")
-    @GetMapping("/page")
-    @PreAuthorize("@ss.hasPerm('business:promotion-coupon-template:query')")
-    public PageResult<PromotionCouponTemplateVO> getPromotionCouponTemplatePage(PromotionCouponTemplateQuery queryParams ) {
-        IPage<PromotionCouponTemplateVO> result = promotionCouponTemplateService.getPromotionCouponTemplatePage(queryParams);
-        return PageResult.success(result);
-    }
-
-    @Operation(summary = "新增优惠劵模板")
-    @PostMapping
-    @PreAuthorize("@ss.hasPerm('business:promotion-coupon-template:add')")
-    public Result<Void> savePromotionCouponTemplate(@RequestBody @Valid PromotionCouponTemplateForm formData ) {
-        boolean result = promotionCouponTemplateService.savePromotionCouponTemplate(formData);
-        return Result.judge(result);
-    }
-
-    @Operation(summary = "获取优惠劵模板表单数据")
-    @GetMapping("/{id}/form")
-    @PreAuthorize("@ss.hasPerm('business:promotion-coupon-template:edit')")
-    public Result<PromotionCouponTemplateForm> getPromotionCouponTemplateForm(
-        @Parameter(description = "优惠劵模板ID") @PathVariable Long id
-    ) {
-        PromotionCouponTemplateForm formData = promotionCouponTemplateService.getPromotionCouponTemplateFormData(id);
-        return Result.success(formData);
-    }
-
-    @Operation(summary = "修改优惠劵模板")
-    @PutMapping(value = "/{id}")
-    @PreAuthorize("@ss.hasPerm('business:promotion-coupon-template:edit')")
-    public Result<Void> updatePromotionCouponTemplate(
-            @Parameter(description = "优惠劵模板ID") @PathVariable Long id,
-            @RequestBody @Validated PromotionCouponTemplateForm formData
-    ) {
-        boolean result = promotionCouponTemplateService.updatePromotionCouponTemplate(id, formData);
-        return Result.judge(result);
-    }
-
-    @Operation(summary = "删除优惠劵模板")
-    @DeleteMapping("/{ids}")
-    @PreAuthorize("@ss.hasPerm('business:promotion-coupon-template:delete')")
-    public Result<Void> deletePromotionCouponTemplates(
-        @Parameter(description = "优惠劵模板ID,多个以英文逗号(,)分割") @PathVariable String ids
-    ) {
-        boolean result = promotionCouponTemplateService.deletePromotionCouponTemplates(ids);
-        return Result.judge(result);
-    }
-}

+ 20 - 0
src/main/java/com/zsElectric/boot/business/converter/CouponConverter.java

@@ -0,0 +1,20 @@
+package com.zsElectric.boot.business.converter;
+
+import org.mapstruct.Mapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.zsElectric.boot.business.model.entity.Coupon;
+import com.zsElectric.boot.business.model.form.CouponForm;
+
+/**
+ * 优惠劵对象转换器
+ *
+ * @author zsElectric
+ * @since 2025-12-15 09:38
+ */
+@Mapper(componentModel = "spring")
+public interface CouponConverter{
+
+    CouponForm toForm(Coupon entity);
+
+    Coupon toEntity(CouponForm formData);
+}

+ 20 - 0
src/main/java/com/zsElectric/boot/business/converter/CouponTemplateConverter.java

@@ -0,0 +1,20 @@
+package com.zsElectric.boot.business.converter;
+
+import org.mapstruct.Mapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.zsElectric.boot.business.model.entity.CouponTemplate;
+import com.zsElectric.boot.business.model.form.CouponTemplateForm;
+
+/**
+ * 优惠劵模板对象转换器
+ *
+ * @author zsElectric
+ * @since 2025-12-15 11:14
+ */
+@Mapper(componentModel = "spring")
+public interface CouponTemplateConverter{
+
+    CouponTemplateForm toForm(CouponTemplate entity);
+
+    CouponTemplate toEntity(CouponTemplateForm formData);
+}

+ 0 - 20
src/main/java/com/zsElectric/boot/business/converter/PromotionCouponTemplateConverter.java

@@ -1,20 +0,0 @@
-package com.zsElectric.boot.business.converter;
-
-import org.mapstruct.Mapper;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.zsElectric.boot.business.model.entity.PromotionCouponTemplate;
-import com.zsElectric.boot.business.model.form.PromotionCouponTemplateForm;
-
-/**
- * 优惠劵模板对象转换器
- *
- * @author zsElectric
- * @since 2025-12-12 15:11
- */
-@Mapper(componentModel = "spring")
-public interface PromotionCouponTemplateConverter{
-
-    PromotionCouponTemplateForm toForm(PromotionCouponTemplate entity);
-
-    PromotionCouponTemplate toEntity(PromotionCouponTemplateForm formData);
-}

+ 28 - 0
src/main/java/com/zsElectric/boot/business/mapper/CouponMapper.java

@@ -0,0 +1,28 @@
+package com.zsElectric.boot.business.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zsElectric.boot.business.model.entity.Coupon;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.zsElectric.boot.business.model.query.CouponQuery;
+import com.zsElectric.boot.business.model.vo.CouponVO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 优惠劵Mapper接口
+ *
+ * @author zsElectric
+ * @since 2025-12-15 09:38
+ */
+@Mapper
+public interface CouponMapper extends BaseMapper<Coupon> {
+
+    /**
+     * 获取优惠劵分页数据
+     *
+     * @param page 分页对象
+     * @param queryParams 查询参数
+     * @return {@link Page<CouponVO>} 优惠劵分页列表
+     */
+    Page<CouponVO> getCouponPage(Page<CouponVO> page, CouponQuery queryParams);
+
+}

+ 28 - 0
src/main/java/com/zsElectric/boot/business/mapper/CouponTemplateMapper.java

@@ -0,0 +1,28 @@
+package com.zsElectric.boot.business.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zsElectric.boot.business.model.entity.CouponTemplate;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.zsElectric.boot.business.model.query.CouponTemplateQuery;
+import com.zsElectric.boot.business.model.vo.CouponTemplateVO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 优惠劵模板Mapper接口
+ *
+ * @author zsElectric
+ * @since 2025-12-15 11:14
+ */
+@Mapper
+public interface CouponTemplateMapper extends BaseMapper<CouponTemplate> {
+
+    /**
+     * 获取优惠劵模板分页数据
+     *
+     * @param page 分页对象
+     * @param queryParams 查询参数
+     * @return {@link Page<CouponTemplateVO>} 优惠劵模板分页列表
+     */
+    Page<CouponTemplateVO> getCouponTemplatePage(Page<CouponTemplateVO> page, CouponTemplateQuery queryParams);
+
+}

+ 0 - 29
src/main/java/com/zsElectric/boot/business/mapper/PromotionCouponTemplateMapper.java

@@ -1,29 +0,0 @@
-package com.zsElectric.boot.business.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.zsElectric.boot.business.model.entity.PromotionCouponTemplate;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.zsElectric.boot.business.model.query.PromotionCouponTemplateQuery;
-import com.zsElectric.boot.business.model.vo.PromotionCouponTemplateVO;
-import org.apache.ibatis.annotations.Mapper;
-import org.apache.ibatis.annotations.Param;
-
-/**
- * 优惠劵模板Mapper接口
- *
- * @author zsElectric
- * @since 2025-12-12 15:11
- */
-@Mapper
-public interface PromotionCouponTemplateMapper extends BaseMapper<PromotionCouponTemplate> {
-
-    /**
-     * 获取优惠劵模板分页数据
-     *
-     * @param page 分页对象
-     * @param queryParams 查询参数
-     * @return {@link Page<PromotionCouponTemplateVO>} 优惠劵模板分页列表
-     */
-    Page<PromotionCouponTemplateVO> getPromotionCouponTemplatePage(Page<PromotionCouponTemplateVO> page,@Param("queryParams") PromotionCouponTemplateQuery queryParams);
-
-}

+ 86 - 0
src/main/java/com/zsElectric/boot/business/model/entity/Coupon.java

@@ -0,0 +1,86 @@
+package com.zsElectric.boot.business.model.entity;
+
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.zsElectric.boot.common.base.BaseEntity;
+import lombok.Getter;
+import lombok.Setter;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.time.LocalDateTime;
+
+/**
+ * 优惠劵实体对象
+ *
+ * @author zsElectric
+ * @since 2025-12-15 09:38
+ */
+@Getter
+@Setter
+@TableName("c_coupon")
+public class Coupon extends BaseEntity {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 优惠劵模板编号
+     */
+    private Long templateId;
+    /**
+     * 优惠劵名
+     */
+    private String name;
+    /**
+     * 优惠码状态
+ * 1-未使用
+  * 2-已使用
+ * 3-已失效
+     */
+    private Integer status;
+    /**
+     * 用户编号
+     */
+    private Long userId;
+    /**
+     * 领取类型
+ (1-用户主动领取
+  2-后台自动发放)
+     */
+    private Integer takeType;
+    /**
+     * 设置满多少金额可用,单位:分
+     */
+    private Integer usePrice;
+    /**
+     * 生效结束时间
+     */
+    private LocalDateTime validEndTime;
+    /**
+     * 优惠金额,单位:分
+     */
+    private Integer discountPrice;
+    /**
+     * 使用订单号
+     */
+    private Long useOrderId;
+    /**
+     * 使用时间
+     */
+    private LocalDateTime useTime;
+    /**
+     * 优惠劵描述
+     */
+    private String description;
+    /**
+     * 创建者
+     */
+    private Long createBy;
+    /**
+     * 更新者
+     */
+    private Long updateBy;
+    /**
+     * 逻辑删除(0-未删除 1-已删除)
+     */
+    @TableLogic
+    private Integer isDeleted;
+}

+ 28 - 14
src/main/java/com/zsElectric/boot/business/model/entity/PromotionCouponTemplate.java → src/main/java/com/zsElectric/boot/business/model/entity/CouponTemplate.java

@@ -1,45 +1,41 @@
 package com.zsElectric.boot.business.model.entity;
 
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.Version;
 import com.zsElectric.boot.common.base.BaseEntity;
 import lombok.Getter;
 import lombok.Setter;
 import com.baomidou.mybatisplus.annotation.TableName;
 
-import java.math.BigDecimal;
-
 /**
  * 优惠劵模板实体对象
  *
  * @author zsElectric
- * @since 2025-12-12 15:11
+ * @since 2025-12-15 11:14
  */
 @Getter
 @Setter
-@TableName("c_promotion_coupon_template")
-public class PromotionCouponTemplate extends BaseEntity {
+@TableName("c_coupon_template")
+public class CouponTemplate extends BaseEntity {
 
     private static final long serialVersionUID = 1L;
 
     /**
-     * 优惠劵名
+     * 优惠劵名
      */
     private String name;
     /**
-     * 描述
+     * 优惠劵描述
      */
     private String description;
     /**
-     * 上线状态 ( 0-下线 1-上线)
+     * 状态  1.上线 2.下线
      */
     private Integer status;
     /**
      * 发放数量, -1 - 则表示不限制
      */
     private Integer totalCount;
-    /**
-     * 每人限领个数, -1 - 则表示不限制
-     */
-    private Integer takeLimitCount;
     /**
      * 失效时间,领取后的几天。
      */
@@ -47,11 +43,11 @@ public class PromotionCouponTemplate extends BaseEntity {
     /**
      * 设置满多少金额可用,单位:分
      */
-    private BigDecimal usePrice;
+    private Integer usePrice;
     /**
      * 优惠金额,单位:分
      */
-    private BigDecimal discountPrice;
+    private Integer discountPrice;
     /**
      * 领取时间:周  星期一 1  2  3 4 5 6 7
      */
@@ -60,6 +56,14 @@ public class PromotionCouponTemplate extends BaseEntity {
      * 领取时间 时分  08:20
      */
     private String validTimeHour;
+    /**
+     * 发放的总数量
+     */
+    private Integer totalCountAll;
+    /**
+     * 失效的数量
+     */
+    private Integer failureCount;
     /**
      * 创建人
      */
@@ -68,4 +72,14 @@ public class PromotionCouponTemplate extends BaseEntity {
      * 更新人
      */
     private Long updateBy;
+    /**
+     * 乐观锁
+     */
+    @Version
+    private Integer version;
+    /**
+     * 逻辑删除(0-未删除 1-已删除)
+     */
+    @TableLogic
+    private Integer isDeleted;
 }

+ 2 - 0
src/main/java/com/zsElectric/boot/business/model/entity/FirmInfo.java

@@ -1,5 +1,6 @@
 package com.zsElectric.boot.business.model.entity;
 
+import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.zsElectric.boot.common.base.BaseEntity;
 import lombok.Getter;
 import lombok.Setter;
@@ -45,5 +46,6 @@ public class FirmInfo extends BaseEntity {
     /**
      * 逻辑删除(0-未删 1-已删)
      */
+    @TableLogic
     private Integer isDeleted;
 }

+ 2 - 0
src/main/java/com/zsElectric/boot/business/model/entity/FirmStationTimePrice.java

@@ -1,5 +1,6 @@
 package com.zsElectric.boot.business.model.entity;
 
+import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.zsElectric.boot.common.base.BaseEntity;
 import lombok.Getter;
 import lombok.Setter;
@@ -51,5 +52,6 @@ public class FirmStationTimePrice extends BaseEntity {
     /**
      * 逻辑删除(0-未删除 1-已删除)
      */
+    @TableLogic
     private Integer isDeleted;
 }

+ 2 - 0
src/main/java/com/zsElectric/boot/business/model/entity/RechargeLevel.java

@@ -1,5 +1,6 @@
 package com.zsElectric.boot.business.model.entity;
 
+import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.zsElectric.boot.common.base.BaseEntity;
 import lombok.Getter;
 import lombok.Setter;
@@ -47,5 +48,6 @@ public class RechargeLevel extends BaseEntity {
     /**
      * 逻辑删除(0-未删除 1-已删除)
      */
+    @TableLogic
     private Integer isDeleted;
 }

+ 2 - 0
src/main/java/com/zsElectric/boot/business/model/entity/UserAccount.java

@@ -1,5 +1,6 @@
 package com.zsElectric.boot.business.model.entity;
 
+import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.zsElectric.boot.common.base.BaseEntity;
 import lombok.Getter;
 import lombok.Setter;
@@ -47,5 +48,6 @@ public class UserAccount extends BaseEntity {
     /**
      * 逻辑删除(0-未删除 1-已删除)
      */
+    @TableLogic
     private Integer isDeleted;
 }

+ 2 - 0
src/main/java/com/zsElectric/boot/business/model/entity/UserFirm.java

@@ -1,5 +1,6 @@
 package com.zsElectric.boot.business.model.entity;
 
+import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.zsElectric.boot.common.base.BaseEntity;
 import lombok.Getter;
 import lombok.Setter;
@@ -45,5 +46,6 @@ public class UserFirm extends BaseEntity {
     /**
      * 逻辑删除(0-未删除 1-已删除)
      */
+    @TableLogic
     private Integer isDeleted;
 }

+ 2 - 0
src/main/java/com/zsElectric/boot/business/model/entity/UserInfo.java

@@ -1,5 +1,6 @@
 package com.zsElectric.boot.business.model.entity;
 
+import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.zsElectric.boot.common.base.BaseEntity;
 import lombok.Getter;
 import lombok.Setter;
@@ -55,5 +56,6 @@ public class UserInfo extends BaseEntity {
     /**
      * 逻辑删除(0-未删除 1-已删除)
      */
+    @TableLogic
     private Integer isDeleted;
 }

+ 93 - 0
src/main/java/com/zsElectric/boot/business/model/form/CouponForm.java

@@ -0,0 +1,93 @@
+package com.zsElectric.boot.business.model.form;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Getter;
+import lombok.Setter;
+import java.time.LocalDateTime;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import jakarta.validation.constraints.*;
+
+/**
+ * 优惠劵表单对象
+ *
+ * @author zsElectric
+ * @since 2025-12-15 09:38
+ */
+@Getter
+@Setter
+@Schema(description = "优惠劵表单对象")
+public class CouponForm implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    @Schema(description = "优惠劵编号")
+    @NotNull(message = "优惠劵编号不能为空")
+    private Long id;
+
+    @Schema(description = "优惠劵模板编号")
+    @NotNull(message = "优惠劵模板编号不能为空")
+    private Long templateId;
+
+    @Schema(description = "优惠劵名")
+    @Size(max=50, message="优惠劵名长度不能超过50个字符")
+    private String name;
+
+    @Schema(description = "优惠码状态1-未使用2-已使用3-已失效")
+    private Integer status;
+
+    @Schema(description = "用户编号")
+    @NotNull(message = "用户编号不能为空")
+    private Long userId;
+
+    @Schema(description = "领取类型(1-用户主动领取2-后台自动发放)")
+    private Integer takeType;
+
+    @Schema(description = "设置满多少金额可用,单位:分")
+    @NotNull(message = "设置满多少金额可用,单位:分不能为空")
+    private Integer usePrice;
+
+    @Schema(description = "生效结束时间")
+    @NotNull(message = "生效结束时间不能为空")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime validEndTime;
+
+    @Schema(description = "优惠金额,单位:分")
+    @NotNull(message = "优惠金额,单位:分不能为空")
+    private Integer discountPrice;
+
+    @Schema(description = "使用订单号")
+    private Long useOrderId;
+
+    @Schema(description = "使用时间")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime useTime;
+
+    @Schema(description = "优惠劵描述")
+    @Size(max=512, message="优惠劵描述长度不能超过512个字符")
+    private String description;
+
+    @Schema(description = "创建者")
+    private Long createBy;
+
+    @Schema(description = "创建时间")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime createTime;
+
+    @Schema(description = "更新者")
+    private Long updateBy;
+
+    @Schema(description = "更新时间")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime updateTime;
+
+    @Schema(description = "逻辑删除(0-未删除 1-已删除)")
+    @TableLogic
+    private Integer isDeleted;
+
+
+}

+ 25 - 17
src/main/java/com/zsElectric/boot/business/model/form/PromotionCouponTemplateForm.java → src/main/java/com/zsElectric/boot/business/model/form/CouponTemplateForm.java

@@ -7,57 +7,53 @@ import lombok.Getter;
 import lombok.Setter;
 import java.time.LocalDateTime;
 import com.fasterxml.jackson.annotation.JsonFormat;
-import java.math.BigDecimal;
 import jakarta.validation.constraints.*;
 
 /**
  * 优惠劵模板表单对象
  *
  * @author zsElectric
- * @since 2025-12-12 15:11
+ * @since 2025-12-15 11:14
  */
 @Getter
 @Setter
 @Schema(description = "优惠劵模板表单对象")
-public class PromotionCouponTemplateForm implements Serializable {
+public class CouponTemplateForm implements Serializable {
 
     @Serial
     private static final long serialVersionUID = 1L;
 
-    @Schema(description = "主键ID")
-    @NotNull(message = "主键ID不能为空")
+    @Schema(description = "模板编号,自增唯一。")
+    @NotNull(message = "模板编号,自增唯一。不能为空")
     private Long id;
 
-    @Schema(description = "优惠劵名称")
-    @NotBlank(message = "优惠劵名称不能为空")
-    @Size(max=50, message="优惠劵名称长度不能超过50个字符")
+    @Schema(description = "优惠劵名")
+    @Size(max=50, message="优惠劵名长度不能超过50个字符")
     private String name;
 
-    @Schema(description = "描述")
-    @Size(max=500, message="描述长度不能超过500个字符")
+    @Schema(description = "优惠劵描述")
+    @Size(max=512, message="优惠劵描述长度不能超过512个字符")
     private String description;
 
-    @Schema(description = "上线状态 ( 0-下线 1-上线)")
-    @NotNull(message = "上线状态 ( 0-下线 1-上线)不能为空")
+    @Schema(description = "状态  1.上线 2.下线")
+    @NotNull(message = "状态  1.上线 2.下线不能为空")
     private Integer status;
 
     @Schema(description = "发放数量, -1 - 则表示不限制")
     @NotNull(message = "发放数量, -1 - 则表示不限制不能为空")
     private Integer totalCount;
 
-    @Schema(description = "每人限领个数, -1 - 则表示不限制")
-    private Integer takeLimitCount;
-
     @Schema(description = "失效时间,领取后的几天。")
+    @NotNull(message = "失效时间,领取后的几天。不能为空")
     private Integer failureTime;
 
     @Schema(description = "设置满多少金额可用,单位:分")
     @NotNull(message = "设置满多少金额可用,单位:分不能为空")
-    private BigDecimal usePrice;
+    private Integer usePrice;
 
     @Schema(description = "优惠金额,单位:分")
     @NotNull(message = "优惠金额,单位:分不能为空")
-    private BigDecimal discountPrice;
+    private Integer discountPrice;
 
     @Schema(description = "领取时间:周  星期一 1  2  3 4 5 6 7")
     @NotBlank(message = "领取时间:周  星期一 1  2  3 4 5 6 7不能为空")
@@ -69,6 +65,12 @@ public class PromotionCouponTemplateForm implements Serializable {
     @Size(max=50, message="领取时间 时分  08:20长度不能超过50个字符")
     private String validTimeHour;
 
+    @Schema(description = "发放的总数量")
+    private Integer totalCountAll;
+
+    @Schema(description = "失效的数量")
+    private Integer failureCount;
+
     @Schema(description = "创建时间")
     @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
     private LocalDateTime createTime;
@@ -83,5 +85,11 @@ public class PromotionCouponTemplateForm implements Serializable {
     @Schema(description = "更新人")
     private Long updateBy;
 
+    @Schema(description = "乐观锁")
+    private Integer version;
+
+    @Schema(description = "逻辑删除(0-未删除 1-已删除)")
+    private Integer isDeleted;
+
 
 }

+ 3 - 0
src/main/java/com/zsElectric/boot/business/model/form/UserFirmForm.java

@@ -2,6 +2,8 @@ package com.zsElectric.boot.business.model.form;
 
 import java.io.Serial;
 import java.io.Serializable;
+
+import com.baomidou.mybatisplus.annotation.TableLogic;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Getter;
 import lombok.Setter;
@@ -54,6 +56,7 @@ public class UserFirmForm implements Serializable {
     private Long updateBy;
 
     @Schema(description = "逻辑删除(0-未删除 1-已删除)")
+    @TableLogic
     private Integer isDeleted;
 
 

+ 21 - 0
src/main/java/com/zsElectric/boot/business/model/query/CouponQuery.java

@@ -0,0 +1,21 @@
+package com.zsElectric.boot.business.model.query;
+
+import com.zsElectric.boot.common.base.BasePageQuery;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Getter;
+import lombok.Setter;
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * 优惠劵分页查询对象
+ *
+ * @author zsElectric
+ * @since 2025-12-15 09:38
+ */
+@Schema(description ="优惠劵查询对象")
+@Getter
+@Setter
+public class CouponQuery extends BasePageQuery {
+
+}

+ 21 - 0
src/main/java/com/zsElectric/boot/business/model/query/CouponTemplateQuery.java

@@ -0,0 +1,21 @@
+package com.zsElectric.boot.business.model.query;
+
+import com.zsElectric.boot.common.base.BasePageQuery;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Getter;
+import lombok.Setter;
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * 优惠劵模板分页查询对象
+ *
+ * @author zsElectric
+ * @since 2025-12-15 11:14
+ */
+@Schema(description ="优惠劵模板查询对象")
+@Getter
+@Setter
+public class CouponTemplateQuery extends BasePageQuery {
+
+}

+ 0 - 37
src/main/java/com/zsElectric/boot/business/model/query/PromotionCouponTemplateQuery.java

@@ -1,37 +0,0 @@
-package com.zsElectric.boot.business.model.query;
-
-import com.zsElectric.boot.common.base.BasePageQuery;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Getter;
-import lombok.Setter;
-import org.springframework.format.annotation.DateTimeFormat;
-
-import java.time.LocalDateTime;
-import java.util.List;
-import java.math.BigDecimal;
-
-/**
- * 优惠劵模板分页查询对象
- *
- * @author zsElectric
- * @since 2025-12-12 15:11
- */
-@Schema(description ="优惠劵模板查询对象")
-@Getter
-@Setter
-public class PromotionCouponTemplateQuery extends BasePageQuery {
-
-    @Schema(description = "优惠劵模板名称")
-    private String name;
-
-    @Schema(description = "上线状态 ( 0-下线 1-上线)")
-    private Integer status;
-
-    @Schema(description = "开始时间")
-    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    private LocalDateTime startTime;
-
-    @Schema(description = "结束时间")
-    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    private LocalDateTime endTime;
-}

+ 3 - 0
src/main/java/com/zsElectric/boot/business/model/vo/BannerInfoVO.java

@@ -3,6 +3,8 @@ package com.zsElectric.boot.business.model.vo;
 import java.io.Serial;
 import java.io.Serializable;
 import java.time.LocalDateTime;
+
+import com.baomidou.mybatisplus.annotation.TableLogic;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Getter;
 import lombok.Setter;
@@ -45,5 +47,6 @@ public class BannerInfoVO implements Serializable {
     @Schema(description = "更新人")
     private String updateBy;
     @Schema(description = "逻辑删除标识(0-未删除 1-已删除)")
+    @TableLogic
     private Integer isDeleted;
 }

+ 61 - 0
src/main/java/com/zsElectric/boot/business/model/vo/CouponTemplateVO.java

@@ -0,0 +1,61 @@
+package com.zsElectric.boot.business.model.vo;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Getter;
+import lombok.Setter;
+import java.time.LocalDateTime;
+
+/**
+ * 优惠劵模板视图对象
+ *
+ * @author zsElectric
+ * @since 2025-12-15 11:14
+ */
+@Getter
+@Setter
+@Schema( description = "优惠劵模板视图对象")
+public class CouponTemplateVO implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    @Schema(description = "模板编号,自增唯一。")
+    private Long id;
+    @Schema(description = "优惠劵名")
+    private String name;
+    @Schema(description = "优惠劵描述")
+    private String description;
+    @Schema(description = "状态  1.上线 2.下线")
+    private Integer status;
+    @Schema(description = "发放数量, -1 - 则表示不限制")
+    private Integer totalCount;
+    @Schema(description = "失效时间,领取后的几天。")
+    private Integer failureTime;
+    @Schema(description = "设置满多少金额可用,单位:分")
+    private Integer usePrice;
+    @Schema(description = "优惠金额,单位:分")
+    private Integer discountPrice;
+    @Schema(description = "领取时间:周  星期一 1  2  3 4 5 6 7")
+    private String validTimeWeeks;
+    @Schema(description = "领取时间 时分  08:20")
+    private String validTimeHour;
+    @Schema(description = "发放的总数量")
+    private Integer totalCountAll;
+    @Schema(description = "失效的数量")
+    private Integer failureCount;
+    @Schema(description = "创建时间")
+    private LocalDateTime createTime;
+    @Schema(description = "创建人")
+    private Long createBy;
+    @Schema(description = "更新时间")
+    private LocalDateTime updateTime;
+    @Schema(description = "更新人")
+    private Long updateBy;
+    @Schema(description = "乐观锁")
+    private Integer version;
+    @Schema(description = "逻辑删除(0-未删除 1-已删除)")
+    private Integer isDeleted;
+}

+ 61 - 0
src/main/java/com/zsElectric/boot/business/model/vo/CouponVO.java

@@ -0,0 +1,61 @@
+package com.zsElectric.boot.business.model.vo;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Getter;
+import lombok.Setter;
+import java.time.LocalDateTime;
+
+/**
+ * 优惠劵视图对象
+ *
+ * @author zsElectric
+ * @since 2025-12-15 09:38
+ */
+@Getter
+@Setter
+@Schema( description = "优惠劵视图对象")
+public class CouponVO implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    @Schema(description = "优惠劵编号")
+    private Long id;
+    @Schema(description = "优惠劵模板编号")
+    private Long templateId;
+    @Schema(description = "优惠劵名")
+    private String name;
+    @Schema(description = "优惠码状态1-未使用2-已使用3-已失效")
+    private Integer status;
+    @Schema(description = "用户编号")
+    private Long userId;
+    @Schema(description = "领取类型(1-用户主动领取 2-后台自动发放)")
+    private Integer takeType;
+    @Schema(description = "设置满多少金额可用,单位:分")
+    private Integer usePrice;
+    @Schema(description = "生效结束时间")
+    private LocalDateTime validEndTime;
+    @Schema(description = "优惠金额,单位:分")
+    private Integer discountPrice;
+    @Schema(description = "使用订单号")
+    private Long useOrderId;
+    @Schema(description = "使用时间")
+    private LocalDateTime useTime;
+    @Schema(description = "优惠劵描述")
+    private String description;
+    @Schema(description = "创建者")
+    private Long createBy;
+    @Schema(description = "创建时间")
+    private LocalDateTime createTime;
+    @Schema(description = "更新者")
+    private Long updateBy;
+    @Schema(description = "更新时间")
+    private LocalDateTime updateTime;
+    @Schema(description = "逻辑删除(0-未删除 1-已删除)")
+    private Integer isDeleted;
+}

+ 3 - 0
src/main/java/com/zsElectric/boot/business/model/vo/UserAccountVO.java

@@ -3,6 +3,8 @@ package com.zsElectric.boot.business.model.vo;
 import java.io.Serial;
 import java.io.Serializable;
 import java.time.LocalDateTime;
+
+import com.baomidou.mybatisplus.annotation.TableLogic;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Getter;
 import lombok.Setter;
@@ -42,5 +44,6 @@ public class UserAccountVO implements Serializable {
     @Schema(description = "更新人")
     private Long updateBy;
     @Schema(description = "逻辑删除(0-未删除 1-已删除)")
+    @TableLogic
     private Integer isDeleted;
 }

+ 58 - 0
src/main/java/com/zsElectric/boot/business/service/CouponService.java

@@ -0,0 +1,58 @@
+package com.zsElectric.boot.business.service;
+
+import com.zsElectric.boot.business.model.entity.Coupon;
+import com.zsElectric.boot.business.model.form.CouponForm;
+import com.zsElectric.boot.business.model.query.CouponQuery;
+import com.zsElectric.boot.business.model.vo.CouponVO;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * 优惠劵服务类
+ *
+ * @author zsElectric
+ * @since 2025-12-15 09:38
+ */
+public interface CouponService extends IService<Coupon> {
+
+    /**
+     *优惠劵分页列表
+     *
+     * @return {@link IPage<CouponVO>} 优惠劵分页列表
+     */
+    IPage<CouponVO> getCouponPage(CouponQuery queryParams);
+
+    /**
+     * 获取优惠劵表单数据
+     *
+     * @param id 优惠劵ID
+     * @return 优惠劵表单数据
+     */
+     CouponForm getCouponFormData(Long id);
+
+    /**
+     * 新增优惠劵
+     *
+     * @param formData 优惠劵表单对象
+     * @return 是否新增成功
+     */
+    boolean saveCoupon(CouponForm formData);
+
+    /**
+     * 修改优惠劵
+     *
+     * @param id   优惠劵ID
+     * @param formData 优惠劵表单对象
+     * @return 是否修改成功
+     */
+    boolean updateCoupon(Long id, CouponForm formData);
+
+    /**
+     * 删除优惠劵
+     *
+     * @param ids 优惠劵ID,多个以英文逗号(,)分割
+     * @return 是否删除成功
+     */
+    boolean deleteCoupons(String ids);
+
+}

+ 58 - 0
src/main/java/com/zsElectric/boot/business/service/CouponTemplateService.java

@@ -0,0 +1,58 @@
+package com.zsElectric.boot.business.service;
+
+import com.zsElectric.boot.business.model.entity.CouponTemplate;
+import com.zsElectric.boot.business.model.form.CouponTemplateForm;
+import com.zsElectric.boot.business.model.query.CouponTemplateQuery;
+import com.zsElectric.boot.business.model.vo.CouponTemplateVO;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * 优惠劵模板服务类
+ *
+ * @author zsElectric
+ * @since 2025-12-15 11:14
+ */
+public interface CouponTemplateService extends IService<CouponTemplate> {
+
+    /**
+     *优惠劵模板分页列表
+     *
+     * @return {@link IPage<CouponTemplateVO>} 优惠劵模板分页列表
+     */
+    IPage<CouponTemplateVO> getCouponTemplatePage(CouponTemplateQuery queryParams);
+
+    /**
+     * 获取优惠劵模板表单数据
+     *
+     * @param id 优惠劵模板ID
+     * @return 优惠劵模板表单数据
+     */
+     CouponTemplateForm getCouponTemplateFormData(Long id);
+
+    /**
+     * 新增优惠劵模板
+     *
+     * @param formData 优惠劵模板表单对象
+     * @return 是否新增成功
+     */
+    boolean saveCouponTemplate(CouponTemplateForm formData);
+
+    /**
+     * 修改优惠劵模板
+     *
+     * @param id   优惠劵模板ID
+     * @param formData 优惠劵模板表单对象
+     * @return 是否修改成功
+     */
+    boolean updateCouponTemplate(Long id, CouponTemplateForm formData);
+
+    /**
+     * 删除优惠劵模板
+     *
+     * @param ids 优惠劵模板ID,多个以英文逗号(,)分割
+     * @return 是否删除成功
+     */
+    boolean deleteCouponTemplates(String ids);
+
+}

+ 0 - 58
src/main/java/com/zsElectric/boot/business/service/PromotionCouponTemplateService.java

@@ -1,58 +0,0 @@
-package com.zsElectric.boot.business.service;
-
-import com.zsElectric.boot.business.model.entity.PromotionCouponTemplate;
-import com.zsElectric.boot.business.model.form.PromotionCouponTemplateForm;
-import com.zsElectric.boot.business.model.query.PromotionCouponTemplateQuery;
-import com.zsElectric.boot.business.model.vo.PromotionCouponTemplateVO;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.service.IService;
-
-/**
- * 优惠劵模板服务类
- *
- * @author zsElectric
- * @since 2025-12-12 15:11
- */
-public interface PromotionCouponTemplateService extends IService<PromotionCouponTemplate> {
-
-    /**
-     *优惠劵模板分页列表
-     *
-     * @return {@link IPage<PromotionCouponTemplateVO>} 优惠劵模板分页列表
-     */
-    IPage<PromotionCouponTemplateVO> getPromotionCouponTemplatePage(PromotionCouponTemplateQuery queryParams);
-
-    /**
-     * 获取优惠劵模板表单数据
-     *
-     * @param id 优惠劵模板ID
-     * @return 优惠劵模板表单数据
-     */
-     PromotionCouponTemplateForm getPromotionCouponTemplateFormData(Long id);
-
-    /**
-     * 新增优惠劵模板
-     *
-     * @param formData 优惠劵模板表单对象
-     * @return 是否新增成功
-     */
-    boolean savePromotionCouponTemplate(PromotionCouponTemplateForm formData);
-
-    /**
-     * 修改优惠劵模板
-     *
-     * @param id   优惠劵模板ID
-     * @param formData 优惠劵模板表单对象
-     * @return 是否修改成功
-     */
-    boolean updatePromotionCouponTemplate(Long id, PromotionCouponTemplateForm formData);
-
-    /**
-     * 删除优惠劵模板
-     *
-     * @param ids 优惠劵模板ID,多个以英文逗号(,)分割
-     * @return 是否删除成功
-     */
-    boolean deletePromotionCouponTemplates(String ids);
-
-}

+ 103 - 0
src/main/java/com/zsElectric/boot/business/service/impl/CouponServiceImpl.java

@@ -0,0 +1,103 @@
+package com.zsElectric.boot.business.service.impl;
+
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zsElectric.boot.business.mapper.CouponMapper;
+import com.zsElectric.boot.business.service.CouponService;
+import com.zsElectric.boot.business.model.entity.Coupon;
+import com.zsElectric.boot.business.model.form.CouponForm;
+import com.zsElectric.boot.business.model.query.CouponQuery;
+import com.zsElectric.boot.business.model.vo.CouponVO;
+import com.zsElectric.boot.business.converter.CouponConverter;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.StrUtil;
+
+/**
+ * 优惠劵服务实现类
+ *
+ * @author zsElectric
+ * @since 2025-12-15 09:38
+ */
+@Service
+@RequiredArgsConstructor
+public class CouponServiceImpl extends ServiceImpl<CouponMapper, Coupon> implements CouponService {
+
+    private final CouponConverter couponConverter;
+
+    /**
+    * 获取优惠劵分页列表
+    *
+    * @param queryParams 查询参数
+    * @return {@link IPage<CouponVO>} 优惠劵分页列表
+    */
+    @Override
+    public IPage<CouponVO> getCouponPage(CouponQuery queryParams) {
+        Page<CouponVO> pageVO = this.baseMapper.getCouponPage(
+                new Page<>(queryParams.getPageNum(), queryParams.getPageSize()),
+                queryParams
+        );
+        return pageVO;
+    }
+
+    /**
+     * 获取优惠劵表单数据
+     *
+     * @param id 优惠劵ID
+     * @return 优惠劵表单数据
+     */
+    @Override
+    public CouponForm getCouponFormData(Long id) {
+        Coupon entity = this.getById(id);
+        return couponConverter.toForm(entity);
+    }
+
+    /**
+     * 新增优惠劵
+     *
+     * @param formData 优惠劵表单对象
+     * @return 是否新增成功
+     */
+    @Override
+    public boolean saveCoupon(CouponForm formData) {
+        Coupon entity = couponConverter.toEntity(formData);
+        return this.save(entity);
+    }
+
+    /**
+     * 更新优惠劵
+     *
+     * @param id   优惠劵ID
+     * @param formData 优惠劵表单对象
+     * @return 是否修改成功
+     */
+    @Override
+    public boolean updateCoupon(Long id,CouponForm formData) {
+        Coupon entity = couponConverter.toEntity(formData);
+        return this.updateById(entity);
+    }
+
+    /**
+     * 删除优惠劵
+     *
+     * @param ids 优惠劵ID,多个以英文逗号(,)分割
+     * @return 是否删除成功
+     */
+    @Override
+    public boolean deleteCoupons(String ids) {
+        Assert.isTrue(StrUtil.isNotBlank(ids), "删除的优惠劵数据为空");
+        // 逻辑删除
+        List<Long> idList = Arrays.stream(ids.split(","))
+                .map(Long::parseLong)
+                .toList();
+        return this.removeByIds(idList);
+    }
+
+}

+ 21 - 21
src/main/java/com/zsElectric/boot/business/service/impl/PromotionCouponTemplateServiceImpl.java → src/main/java/com/zsElectric/boot/business/service/impl/CouponTemplateServiceImpl.java

@@ -5,13 +5,13 @@ import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.zsElectric.boot.business.mapper.PromotionCouponTemplateMapper;
-import com.zsElectric.boot.business.service.PromotionCouponTemplateService;
-import com.zsElectric.boot.business.model.entity.PromotionCouponTemplate;
-import com.zsElectric.boot.business.model.form.PromotionCouponTemplateForm;
-import com.zsElectric.boot.business.model.query.PromotionCouponTemplateQuery;
-import com.zsElectric.boot.business.model.vo.PromotionCouponTemplateVO;
-import com.zsElectric.boot.business.converter.PromotionCouponTemplateConverter;
+import com.zsElectric.boot.business.mapper.CouponTemplateMapper;
+import com.zsElectric.boot.business.service.CouponTemplateService;
+import com.zsElectric.boot.business.model.entity.CouponTemplate;
+import com.zsElectric.boot.business.model.form.CouponTemplateForm;
+import com.zsElectric.boot.business.model.query.CouponTemplateQuery;
+import com.zsElectric.boot.business.model.vo.CouponTemplateVO;
+import com.zsElectric.boot.business.converter.CouponTemplateConverter;
 
 import java.util.Arrays;
 import java.util.List;
@@ -24,23 +24,23 @@ import cn.hutool.core.util.StrUtil;
  * 优惠劵模板服务实现类
  *
  * @author zsElectric
- * @since 2025-12-12 15:11
+ * @since 2025-12-15 11:14
  */
 @Service
 @RequiredArgsConstructor
-public class PromotionCouponTemplateServiceImpl extends ServiceImpl<PromotionCouponTemplateMapper, PromotionCouponTemplate> implements PromotionCouponTemplateService {
+public class CouponTemplateServiceImpl extends ServiceImpl<CouponTemplateMapper, CouponTemplate> implements CouponTemplateService {
 
-    private final PromotionCouponTemplateConverter promotionCouponTemplateConverter;
+    private final CouponTemplateConverter couponTemplateConverter;
 
     /**
     * 获取优惠劵模板分页列表
     *
     * @param queryParams 查询参数
-    * @return {@link IPage<PromotionCouponTemplateVO>} 优惠劵模板分页列表
+    * @return {@link IPage<CouponTemplateVO>} 优惠劵模板分页列表
     */
     @Override
-    public IPage<PromotionCouponTemplateVO> getPromotionCouponTemplatePage(PromotionCouponTemplateQuery queryParams) {
-        Page<PromotionCouponTemplateVO> pageVO = this.baseMapper.getPromotionCouponTemplatePage(
+    public IPage<CouponTemplateVO> getCouponTemplatePage(CouponTemplateQuery queryParams) {
+        Page<CouponTemplateVO> pageVO = this.baseMapper.getCouponTemplatePage(
                 new Page<>(queryParams.getPageNum(), queryParams.getPageSize()),
                 queryParams
         );
@@ -54,9 +54,9 @@ public class PromotionCouponTemplateServiceImpl extends ServiceImpl<PromotionCou
      * @return 优惠劵模板表单数据
      */
     @Override
-    public PromotionCouponTemplateForm getPromotionCouponTemplateFormData(Long id) {
-        PromotionCouponTemplate entity = this.getById(id);
-        return promotionCouponTemplateConverter.toForm(entity);
+    public CouponTemplateForm getCouponTemplateFormData(Long id) {
+        CouponTemplate entity = this.getById(id);
+        return couponTemplateConverter.toForm(entity);
     }
     
     /**
@@ -66,8 +66,8 @@ public class PromotionCouponTemplateServiceImpl extends ServiceImpl<PromotionCou
      * @return 是否新增成功
      */
     @Override
-    public boolean savePromotionCouponTemplate(PromotionCouponTemplateForm formData) {
-        PromotionCouponTemplate entity = promotionCouponTemplateConverter.toEntity(formData);
+    public boolean saveCouponTemplate(CouponTemplateForm formData) {
+        CouponTemplate entity = couponTemplateConverter.toEntity(formData);
         return this.save(entity);
     }
     
@@ -79,8 +79,8 @@ public class PromotionCouponTemplateServiceImpl extends ServiceImpl<PromotionCou
      * @return 是否修改成功
      */
     @Override
-    public boolean updatePromotionCouponTemplate(Long id,PromotionCouponTemplateForm formData) {
-        PromotionCouponTemplate entity = promotionCouponTemplateConverter.toEntity(formData);
+    public boolean updateCouponTemplate(Long id,CouponTemplateForm formData) {
+        CouponTemplate entity = couponTemplateConverter.toEntity(formData);
         return this.updateById(entity);
     }
     
@@ -91,7 +91,7 @@ public class PromotionCouponTemplateServiceImpl extends ServiceImpl<PromotionCou
      * @return 是否删除成功
      */
     @Override
-    public boolean deletePromotionCouponTemplates(String ids) {
+    public boolean deleteCouponTemplates(String ids) {
         Assert.isTrue(StrUtil.isNotBlank(ids), "删除的优惠劵模板数据为空");
         // 逻辑删除
         List<Long> idList = Arrays.stream(ids.split(","))

+ 31 - 0
src/main/resources/mapper/business/CouponMapper.xml

@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zsElectric.boot.business.mapper.CouponMapper">
+
+    <!-- 获取优惠劵分页列表 -->
+    <select id="getCouponPage" resultType="com.zsElectric.boot.business.model.vo.CouponVO">
+        SELECT
+                id,
+                template_id,
+                name,
+                status,
+                user_id,
+                take_type,
+                use_price,
+                valid_end_time,
+                discount_price,
+                use_order_id,
+                use_time,
+                description,
+                create_by,
+                create_time,
+                update_by,
+                update_time,
+                is_deleted
+        FROM
+            c_coupon
+        <where>
+        </where>
+    </select>
+
+</mapper>

+ 21 - 18
src/main/resources/mapper/business/PromotionCouponTemplateMapper.xml → src/main/resources/mapper/business/CouponTemplateMapper.xml

@@ -1,27 +1,30 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.zsElectric.boot.business.mapper.PromotionCouponTemplateMapper">
+<mapper namespace="com.zsElectric.boot.business.mapper.CouponTemplateMapper">
 
     <!-- 获取优惠劵模板分页列表 -->
-    <select id="getPromotionCouponTemplatePage" resultType="com.zsElectric.boot.business.model.vo.PromotionCouponTemplateVO">
+    <select id="getCouponTemplatePage" resultType="com.zsElectric.boot.business.model.vo.CouponTemplateVO">
         SELECT
-        id,
-        name,
-        description,
-        status,
-        total_count,
-        take_limit_count,
-        failure_time,
-        use_price,
-        discount_price,
-        valid_time_weeks,
-        valid_time_hour,
-        create_time,
-        create_by,
-        update_time,
-        update_by
+                id,
+                name,
+                description,
+                status,
+                total_count,
+                failure_time,
+                use_price,
+                discount_price,
+                valid_time_weeks,
+                valid_time_hour,
+                total_count_all,
+                failure_count,
+                create_time,
+                create_by,
+                update_time,
+                update_by,
+                version,
+                is_deleted
         FROM
-        c_promotion_coupon_template
+            c_coupon_template
         <where>
             is_deleted = 0
             <if test="queryParams.name != null and queryParams.name != ''">

+ 1 - 1
src/main/resources/mapper/business/UserInfoMapper.xml

@@ -7,7 +7,7 @@
         SELECT
                 id,
                 ec_id,
-                nickName,
+                nick_name,
                 phone,
                 wechat,
                 integral_num,