Commit c8ec5c8952da003a63d3a8c327a951ab125bac20

Authored by wuxiran
1 parent 515c0de7

mall:上传enum类,做后端模板添加判定、前端页面添加

Showing 19 changed files with 883 additions and 91 deletions
yudao-module-mall/yudao-module-coupon-api/src/main/java/cn/iocoder/yudao/module/CouponTemplete/enums/CouponExpireTimeTypeEnum.java 0 → 100644
  1 +package cn.iocoder.yudao.module.CouponTemplete.enums;
  2 +
  3 +
  4 +import lombok.Getter;
  5 +import lombok.RequiredArgsConstructor;
  6 +
  7 +
  8 +/**
  9 + * 优惠券 - 是否开启过期提醒
  10 + *
  11 + * @author Sin
  12 + */
  13 +@RequiredArgsConstructor
  14 +@Getter
  15 +public enum CouponExpireTimeTypeEnum {
  16 +
  17 + OPEN(1,"不开启"),CLOSE(0,"开启"),;
  18 +
  19 + /**
  20 + * 是否开启过期提醒
  21 + */
  22 + private final Integer type;
  23 + /**
  24 + * 是否开启过期提醒
  25 + */
  26 + private final String name;
  27 +
  28 +}
... ...
yudao-module-mall/yudao-module-coupon-api/src/main/java/cn/iocoder/yudao/module/CouponTemplete/enums/CouponFetchTypeEnum.java 0 → 100644
  1 +package cn.iocoder.yudao.module.CouponTemplete.enums;
  2 +
  3 +
  4 +import lombok.Getter;
  5 +import lombok.RequiredArgsConstructor;
  6 +
  7 +
  8 +/**
  9 + * 优惠券 - 领取是否无限制 0
  10 + *
  11 + * @author Sin
  12 + */
  13 +@RequiredArgsConstructor
  14 +@Getter
  15 +public enum CouponFetchTypeEnum {
  16 +
  17 + LIMIT(0,"否"),NOT_LIMIT(0,"开启"),;
  18 +
  19 + /**
  20 + * 是否开启过期提醒
  21 + */
  22 + private final Integer type;
  23 + /**
  24 + * 是否开启过期提醒
  25 + */
  26 + private final String name;
  27 +
  28 +}
... ...
yudao-module-mall/yudao-module-coupon-api/src/main/java/cn/iocoder/yudao/module/CouponTemplete/enums/CouponProductTypeEnum.java 0 → 100644
  1 +package cn.iocoder.yudao.module.CouponTemplete.enums;
  2 +
  3 +
  4 +import lombok.Getter;
  5 +import lombok.RequiredArgsConstructor;
  6 +
  7 +
  8 +/**
  9 + * 优惠券 - 优惠券类型
  10 + *
  11 + * @author Sin
  12 + */
  13 +@RequiredArgsConstructor
  14 +@Getter
  15 +public enum CouponProductTypeEnum {
  16 +
  17 + PROCESSING(1,"进行中"),
  18 + END(2,"已结束"),
  19 + CLOSE(3,"已关闭"),;
  20 +
  21 + /**
  22 + * 优惠券类型
  23 + */
  24 + private final Integer type;
  25 + /**
  26 + * 优惠券类型名
  27 + */
  28 + private final String name;
  29 +
  30 +}
... ...
yudao-module-mall/yudao-module-coupon-api/src/main/java/cn/iocoder/yudao/module/CouponTemplete/enums/CouponStatusTypeEnum.java 0 → 100644
  1 +package cn.iocoder.yudao.module.CouponTemplete.enums;
  2 +
  3 +
  4 +import lombok.Getter;
  5 +import lombok.RequiredArgsConstructor;
  6 +
  7 +
  8 +/**
  9 + * 优惠券 - 优惠券类型
  10 + *
  11 + * @author Sin
  12 + */
  13 +@RequiredArgsConstructor
  14 +@Getter
  15 +public enum CouponStatusTypeEnum {
  16 +
  17 + ALL(1,"全部商品可用"),
  18 + POINT_PRODUCT(2,"指定商品可用"),
  19 + POINT_PRODUCT_NOT(3,"指定商品不可用不能为空"),;
  20 +
  21 + /**
  22 + * 优惠券类型
  23 + */
  24 + private final Integer type;
  25 + /**
  26 + * 优惠券类型名
  27 + */
  28 + private final String name;
  29 +
  30 +}
... ...
yudao-module-mall/yudao-module-coupon-api/src/main/java/cn/iocoder/yudao/module/CouponTemplete/enums/CouponTypeEnum.java 0 → 100644
  1 +package cn.iocoder.yudao.module.CouponTemplete.enums;
  2 +
  3 +
  4 +import lombok.Getter;
  5 +import lombok.RequiredArgsConstructor;
  6 +
  7 +
  8 +/**
  9 + * 优惠券 - 优惠券类型
  10 + *
  11 + * @author Sin
  12 + */
  13 +@RequiredArgsConstructor
  14 +@Getter
  15 +public enum CouponTypeEnum {
  16 +
  17 + REWARD(1,"满减"),
  18 + DISCOUNT(2,"折扣"),
  19 + RANDOW(3,"随机"),;
  20 +
  21 + /**
  22 + * 优惠券类型
  23 + */
  24 + private final Integer type;
  25 + /**
  26 + * 优惠券类型名
  27 + */
  28 + private final String name;
  29 +
  30 +}
... ...
yudao-module-mall/yudao-module-coupon-api/src/main/java/cn/iocoder/yudao/module/CouponTemplete/enums/CouponUseLimitEnum.java 0 → 100644
  1 +package cn.iocoder.yudao.module.CouponTemplete.enums;
  2 +
  3 +
  4 +import lombok.Getter;
  5 +import lombok.RequiredArgsConstructor;
  6 +
  7 +
  8 +/**
  9 + * 优惠券 - 优惠券类型
  10 + *
  11 + * @author Sin
  12 + */
  13 +@RequiredArgsConstructor
  14 +@Getter
  15 +public enum CouponUseLimitEnum {
  16 +
  17 + HAS_LIMIT(1,"无门槛"),
  18 + NO_LIMIT(2,"有门槛"),;
  19 +
  20 + /**
  21 + * 优惠券类型
  22 + */
  23 + private final Integer type;
  24 + /**
  25 + * 优惠券类型名
  26 + */
  27 + private final String name;
  28 +
  29 +}
... ...
yudao-module-mall/yudao-module-coupon-api/src/main/java/cn/iocoder/yudao/module/CouponTemplete/enums/CouponValidityTypeEnum.java 0 → 100644
  1 +package cn.iocoder.yudao.module.CouponTemplete.enums;
  2 +
  3 +import lombok.Getter;
  4 +import lombok.RequiredArgsConstructor;
  5 +
  6 +/**
  7 + * 过期类型 - 状态
  8 + *
  9 + * @author Sin
  10 + */
  11 +@RequiredArgsConstructor
  12 +@Getter
  13 +public enum CouponValidityTypeEnum {
  14 +
  15 + TIME_RANGE_EXPIRTED(1,"时间范围过期"),
  16 + EXPIRES_AFTER_FIXED_DATE(2,"领取之日固定日期后过期"),
  17 + EXPIRES_DATE_NEXT_FIEXD_DATE(3,"领取次日固定日期后过期不能为空"),;
  18 +
  19 +
  20 + /**
  21 + * 状态值
  22 + */
  23 + private final Integer status;
  24 + /**
  25 + * 状态名
  26 + */
  27 + private final String name;
  28 +
  29 +}
... ...
yudao-module-mall/yudao-module-coupon-api/src/main/java/cn/iocoder/yudao/module/CouponTemplete/enums/ErrorCodeConstants.java
... ... @@ -11,6 +11,13 @@ public interface ErrorCodeConstants {
11 11 // ========== COUPON分类相关 1010001000 ============
12 12  
13 13 ErrorCode COUPON_TEMPLETE_NOT_EXISTS = new ErrorCode(1010001000, "优惠券模板不存在");
  14 + ErrorCode MONEY_NOT_NULL = new ErrorCode(1010001001, "当type为reward时需要添加发放面额不能为空");
  15 + ErrorCode DISCOUNT_NOT_NULL = new ErrorCode(1010001001, "当type为discount时需要添加折扣不能为空");
  16 + ErrorCode DISCOUNT_LIMIT_NOT_NULL = new ErrorCode(1010001001, "当type为discount时可选择性添加最多折扣金额不能为空");
  17 + ErrorCode MIN_MAX_NOT_NULL = new ErrorCode(1010001001, "当type为radom时需要添加最低金额");
  18 + ErrorCode START_END_TIME_NOT_NULL = new ErrorCode(1010001001, "使用开始日期,使用结束日期不能为空");
  19 + ErrorCode FIXED_TERM_NOT_NULL = new ErrorCode(1010001001, "领取之日起或者次日N天内有效不能为空");
  20 +
14 21  
15 22 // ========== COUPON分类相关 1010002000 ============
16 23 ErrorCode COUPON_NOT_EXISTS = new ErrorCode(1010001000, "优惠券模板不存在");
... ...
yudao-module-mall/yudao-module-coupon-biz/src/main/java/cn/iocoder/yudao/module/coupon/controller/admin/coupon/CouponController.java
... ... @@ -6,20 +6,13 @@ import org.springframework.validation.annotation.Validated;
6 6 import org.springframework.security.access.prepost.PreAuthorize;
7 7 import io.swagger.annotations.*;
8 8  
9   -import javax.validation.constraints.*;
10 9 import javax.validation.*;
11   -import javax.servlet.http.*;
12 10 import java.util.*;
13   -import java.io.IOException;
14 11  
15 12 import cn.iocoder.yudao.framework.common.pojo.PageResult;
16 13 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
17 14 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
18 15  
19   -import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
20   -
21   -import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
22   -import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.*;
23 16  
24 17 import cn.iocoder.yudao.module.coupon.controller.admin.coupon.vo.*;
25 18 import cn.iocoder.yudao.module.coupon.dal.dataobject.coupon.CouponDO;
... ... @@ -28,25 +21,29 @@ import cn.iocoder.yudao.module.coupon.service.coupon.CouponService;
28 21  
29 22 @Api(tags = "管理后台 - 优惠券")
30 23 @RestController
31   -@RequestMapping("/coupon/")
  24 +@RequestMapping("/coupon/coupon/")
32 25 @Validated
33 26 public class CouponController {
34 27  
35 28 @Resource
36   - private CouponService Service;
  29 + private CouponService couponService;
  30 +
37 31  
  32 + //todo 用户优惠券
38 33 @PostMapping("/create")
39   - @ApiOperation("创建优惠券")
  34 + @ApiOperation("用户领取优惠券")
40 35 @PreAuthorize("@ss.hasPermission('coupon::create')")
41   - public CommonResult<Long> create(@Valid @RequestBody CouponCreateReqVO createReqVO) {
42   - return success(Service.create(createReqVO));
  36 + public CommonResult<Long> create(@RequestParam("couponTemplateId") Long couponTemplateId) {
  37 +
  38 + return success(couponService.create(couponTemplateId));
43 39 }
44 40  
  41 +
45 42 @PutMapping("/update")
46 43 @ApiOperation("更新优惠券")
47 44 @PreAuthorize("@ss.hasPermission('coupon::update')")
48 45 public CommonResult<Boolean> update(@Valid @RequestBody CouponUpdateReqVO updateReqVO) {
49   - Service.update(updateReqVO);
  46 + couponService.update(updateReqVO);
50 47 return success(true);
51 48 }
52 49  
... ... @@ -55,7 +52,7 @@ public class CouponController {
55 52 @ApiImplicitParam(name = "id", value = "编号", required = true, dataTypeClass = Long.class)
56 53 @PreAuthorize("@ss.hasPermission('coupon::delete')")
57 54 public CommonResult<Boolean> delete(@RequestParam("id") Long id) {
58   - Service.delete(id);
  55 + couponService.delete(id);
59 56 return success(true);
60 57 }
61 58  
... ... @@ -64,16 +61,18 @@ public class CouponController {
64 61 @ApiImplicitParam(name = "id", value = "编号", required = true, example = "1024", dataTypeClass = Long.class)
65 62 @PreAuthorize("@ss.hasPermission('coupon::query')")
66 63 public CommonResult<CouponRespVO> get(@RequestParam("id") Long id) {
67   - CouponDO couponDO = Service.get(id);
  64 + CouponDO couponDO = couponService.get(id);
68 65 return success(CouponConvert.INSTANCE.convert(couponDO));
69 66 }
70 67  
  68 +
  69 +
71 70 @GetMapping("/list")
72 71 @ApiOperation("获得优惠券列表")
73   - @ApiImplicitParam(name = "ids", value = "编号列表", required = true, example = "1024,2048", dataTypeClass = List.class)
  72 +// @ApiImplicitParam(name = "ids", value = "编号列表", required = true, example = "1024,2048", dataTypeClass = List.class)
74 73 @PreAuthorize("@ss.hasPermission('coupon::query')")
75 74 public CommonResult<List<CouponRespVO>> getList(@RequestParam("ids") Collection<Long> ids) {
76   - List<CouponDO> list = Service.getList(ids);
  75 + List<CouponDO> list = couponService.getList(ids);
77 76 return success(CouponConvert.INSTANCE.convertList(list));
78 77 }
79 78  
... ... @@ -81,20 +80,9 @@ public class CouponController {
81 80 @ApiOperation("获得优惠券分页")
82 81 @PreAuthorize("@ss.hasPermission('coupon::query')")
83 82 public CommonResult<PageResult<CouponRespVO>> getPage(@Valid CouponPageReqVO pageVO) {
84   - PageResult<CouponDO> pageResult = Service.getPage(pageVO);
  83 + PageResult<CouponDO> pageResult = couponService.getPage(pageVO);
85 84 return success(CouponConvert.INSTANCE.convertPage(pageResult));
86 85 }
87 86  
88   - @GetMapping("/export-excel")
89   - @ApiOperation("导出优惠券 Excel")
90   - @PreAuthorize("@ss.hasPermission('coupon::export')")
91   - @OperateLog(type = EXPORT)
92   - public void exportExcel(@Valid CouponExportReqVO exportReqVO,
93   - HttpServletResponse response) throws IOException {
94   - List<CouponDO> list = Service.getList(exportReqVO);
95   - // 导出 Excel
96   - List<CouponExcelVO> datas = CouponConvert.INSTANCE.convertList02(list);
97   - ExcelUtils.write(response, "优惠券.xls", "数据", CouponExcelVO.class, datas);
98   - }
99 87  
100 88 }
... ...
yudao-module-mall/yudao-module-coupon-biz/src/main/java/cn/iocoder/yudao/module/coupon/controller/admin/coupontemplete/CouponTempleteController.java
... ... @@ -11,24 +11,15 @@ import org.springframework.security.access.prepost.PreAuthorize;
11 11 import io.swagger.annotations.*;
12 12  
13 13 import javax.validation.*;
14   -import javax.servlet.http.*;
15 14 import java.util.*;
16   -import java.io.IOException;
17 15  
18 16 import cn.iocoder.yudao.framework.common.pojo.PageResult;
19 17 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
20 18 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
21 19  
22   -import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
23   -
24   -import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
25   -import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.*;
26   -
27   -
28   -
29 20 @Api(tags = "管理后台 - 优惠券模板")
30 21 @RestController
31   -@RequestMapping("/CouponTemplete/")
  22 +@RequestMapping("/coupon/CouponTemplete/")
32 23 @Validated
33 24 public class CouponTempleteController {
34 25  
... ... @@ -61,7 +52,7 @@ public class CouponTempleteController {
61 52  
62 53 @GetMapping("/get")
63 54 @ApiOperation("获得优惠券模板")
64   - @ApiImplicitParam(name = "id", value = "编号", required = true, example = "1024", dataTypeClass = Long.class)
  55 +// @ApiImplicitParam(name = "id", value = "编号", required = true, example = "1024", dataTypeClass = Long.class)
65 56 @PreAuthorize("@ss.hasPermission('CouponTemplete::query')")
66 57 public CommonResult<CouponTempleteRespVO> get(@RequestParam("id") Long id) {
67 58 CouponTempleteDO couponTempleteDO = Service.get(id);
... ... @@ -70,7 +61,7 @@ public class CouponTempleteController {
70 61  
71 62 @GetMapping("/list")
72 63 @ApiOperation("获得优惠券模板列表")
73   - @ApiImplicitParam(name = "ids", value = "编号列表", required = true, example = "1024,2048", dataTypeClass = List.class)
  64 +// @ApiImplicitParam(name = "ids", value = "编号列表", required = true, example = "1024,2048", dataTypeClass = List.class)
74 65 @PreAuthorize("@ss.hasPermission('CouponTemplete::query')")
75 66 public CommonResult<List<CouponTempleteRespVO>> getList(@RequestParam("ids") Collection<Long> ids) {
76 67 List<CouponTempleteDO> list = Service.getList(ids);
... ... @@ -85,16 +76,6 @@ public class CouponTempleteController {
85 76 return success(CouponTempleteConvert.INSTANCE.convertPage(pageResult));
86 77 }
87 78  
88   - @GetMapping("/export-excel")
89   - @ApiOperation("导出优惠券模板 Excel")
90   - @PreAuthorize("@ss.hasPermission('CouponTemplete::export')")
91   - @OperateLog(type = EXPORT)
92   - public void exportExcel(@Valid CouponTempleteExportReqVO exportReqVO,
93   - HttpServletResponse response) throws IOException {
94   - List<CouponTempleteDO> list = Service.getList(exportReqVO);
95   - // 导出 Excel
96   - List<CouponTempleteExcelVO> datas = CouponTempleteConvert.INSTANCE.convertList02(list);
97   - ExcelUtils.write(response, "优惠券模板.xls", "数据", CouponTempleteExcelVO.class, datas);
98   - }
  79 +
99 80  
100 81 }
... ...
yudao-module-mall/yudao-module-coupon-biz/src/main/java/cn/iocoder/yudao/module/coupon/controller/admin/coupontemplete/vo/CouponTempleteBaseVO.java
... ... @@ -16,9 +16,8 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_
16 16 @Data
17 17 public class CouponTempleteBaseVO {
18 18  
19   - @ApiModelProperty(value = "优惠券类型 reward-满减 discount-折扣 random-随机", required = true)
20   - @NotNull(message = "优惠券类型 reward-满减 discount-折扣 random-随机不能为空")
21   - private String type;
  19 +
  20 + //基本信息
22 21  
23 22 @ApiModelProperty(value = "优惠券名称", required = true)
24 23 @NotNull(message = "优惠券名称不能为空")
... ... @@ -30,17 +29,8 @@ public class CouponTempleteBaseVO {
30 29 @ApiModelProperty(value = "优惠券图片")
31 30 private String image;
32 31  
33   - @ApiModelProperty(value = "发放数量", required = true)
34   - @NotNull(message = "发放数量不能为空")
35   - private Integer count;
36   -
37   - @ApiModelProperty(value = "已领取数量", required = true)
38   - @NotNull(message = "已领取数量不能为空")
39   - private Integer leadCount;
  32 + /* ============判断适用商品——开始============= */
40 33  
41   - @ApiModelProperty(value = "已使用数量", required = true)
42   - @NotNull(message = "已使用数量不能为空")
43   - private Integer usedCount;
44 34  
45 35 @ApiModelProperty(value = "适用商品类型1-全部商品可用;2-指定商品可用;3-指定商品不可用", required = true)
46 36 @NotNull(message = "适用商品类型1-全部商品可用;2-指定商品可用;3-指定商品不可用不能为空")
... ... @@ -57,15 +47,22 @@ public class CouponTempleteBaseVO {
57 47 @NotNull(message = "满多少元使用 0代表无限制不能为空")
58 48 private BigDecimal atLeast;
59 49  
60   - @ApiModelProperty(value = "发放面额 当type为reward时需要添加", required = true)
  50 +
  51 + /* ============折扣类型——开始============= */
  52 +
  53 + @ApiModelProperty(value = "优惠券类型 reward-满减 discount-折扣 random-随机", required = true)
  54 + @NotNull(message = "优惠券类型 reward-满减 discount-折扣 random-随机不能为空")
  55 + private String type;
  56 +
  57 + @ApiModelProperty(value = "发放面额 当type为reward时需要添加")
61 58 @NotNull(message = "发放面额 当type为reward时需要添加不能为空")
62 59 private BigDecimal money;
63 60  
64   - @ApiModelProperty(value = "1 =< 折扣 <= 9.9 当type为discount时需要添加", required = true)
  61 + @ApiModelProperty(value = "1 =< 折扣 <= 9.9 当type为discount时需要添加")
65 62 @NotNull(message = "1 =< 折扣 <= 9.9 当type为discount时需要添加不能为空")
66 63 private BigDecimal discount;
67 64  
68   - @ApiModelProperty(value = "最多折扣金额 当type为discount时可选择性添加", required = true)
  65 + @ApiModelProperty(value = "最多折扣金额 当type为discount时可选择性添加")
69 66 @NotNull(message = "最多折扣金额 当type为discount时可选择性添加不能为空")
70 67 private BigDecimal discountLimit;
71 68  
... ... @@ -77,9 +74,15 @@ public class CouponTempleteBaseVO {
77 74 @NotNull(message = "最大金额 当type为radom时需要添加不能为空")
78 75 private BigDecimal maxMoney;
79 76  
  77 + /* ============折扣类型——结束============= */
  78 +
  79 +
  80 + /* ============过期类型——开始============= */
  81 +
  82 +
80 83 @ApiModelProperty(value = "过期类型1-时间范围过期 2-领取之日固定日期后过期 3-领取次日固定日期后过期", required = true)
81   - @NotNull(message = "过期类型1-时间范围过期 2-领取之日固定日期后过期 3-领取次日固定日期后过期不能为空")
82   - private Boolean validityType;
  84 + @NotNull(message = "过期类型1-时间范围过期 2-领取之日固定日期后过期 3-领取次日固定日期后过期 不能为空")
  85 + private Integer validityType;
83 86  
84 87 @ApiModelProperty(value = "使用开始日期 过期类型1时必填")
85 88 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
... ... @@ -89,19 +92,26 @@ public class CouponTempleteBaseVO {
89 92 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
90 93 private Date endUseTime;
91 94  
92   - @ApiModelProperty(value = "当validity_type为2或者3时需要添加 领取之日起或者次日N天内有效", required = true)
  95 + @ApiModelProperty(value = "当validity_type为2或者3时需要添加 领取之日起或者次日N天内有效")
93 96 @NotNull(message = "当validity_type为2或者3时需要添加 领取之日起或者次日N天内有效不能为空")
94 97 private Integer fixedTerm;
95 98  
96   - @ApiModelProperty(value = "是否无限制0-否 1是", required = true)
97   - @NotNull(message = "是否无限制0-否 1是不能为空")
  99 + @ApiModelProperty(value = "有效日期结束时间")
  100 + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
  101 + private Date endTime;
  102 +
  103 + /* ============过期类型——结束============= */
  104 +
  105 +
  106 + @ApiModelProperty(value = "领取是否无限制0-否 1是", required = true)
  107 + @NotNull(message = "是否无限制0-否 1是 不能为空")
98 108 private Boolean whetherLimitless;
99 109  
100 110 @ApiModelProperty(value = "每人最大领取个数", required = true)
101 111 @NotNull(message = "每人最大领取个数不能为空")
102 112 private Integer maxFetch;
103 113  
104   - @ApiModelProperty(value = "是否开启过期提醒0-不开启 1-开启", required = true)
  114 + @ApiModelProperty(value = "是否开启过期提醒 0-不开启 1-开启", required = true)
105 115 @NotNull(message = "是否开启过期提醒0-不开启 1-开启不能为空")
106 116 private Boolean whetherExpireNotice;
107 117  
... ... @@ -117,6 +127,18 @@ public class CouponTempleteBaseVO {
117 127 @NotNull(message = "是否显示不能为空")
118 128 private Integer whetherShow;
119 129  
  130 + @ApiModelProperty(value = "是否禁止发放0-否 1-是", required = true)
  131 + @NotNull(message = "是否禁止发放0-否 1-是不能为空")
  132 + private Boolean whetherForbidden;
  133 +
  134 + /* ============汇总计算——开始============= */
  135 +
  136 +
  137 +
  138 + @ApiModelProperty(value = "使用优惠券购买的商品数量", required = true)
  139 + @NotNull(message = "使用优惠券购买的商品数量不能为空")
  140 + private Integer orderGoodsNum;
  141 +
120 142 @ApiModelProperty(value = "订单的优惠总金额", required = true)
121 143 @NotNull(message = "订单的优惠总金额不能为空")
122 144 private BigDecimal discountOrderMoney;
... ... @@ -125,20 +147,26 @@ public class CouponTempleteBaseVO {
125 147 @NotNull(message = "用券总成交额不能为空")
126 148 private BigDecimal orderMoney;
127 149  
128   - @ApiModelProperty(value = "是否禁止发放0-否 1-是", required = true)
129   - @NotNull(message = "是否禁止发放0-否 1-是不能为空")
130   - private Boolean whetherForbidden;
  150 + @ApiModelProperty(value = "发放数量", required = true)
  151 + @NotNull(message = "发放数量不能为空")
  152 + private Integer count;
  153 +
  154 + @ApiModelProperty(value = "已领取数量", required = true)
  155 + @NotNull(message = "已领取数量不能为空")
  156 + private Integer leadCount;
  157 +
  158 + @ApiModelProperty(value = "已使用数量", required = true)
  159 + @NotNull(message = "已使用数量不能为空")
  160 + private Integer usedCount;
  161 +
  162 +
  163 + /* ============汇总计算——结束============= */
131 164  
132   - @ApiModelProperty(value = "使用优惠券购买的商品数量", required = true)
133   - @NotNull(message = "使用优惠券购买的商品数量不能为空")
134   - private Integer orderGoodsNum;
135 165  
136   - @ApiModelProperty(value = "状态(1进行中2已结束-1已关闭)", required = true)
  166 + @ApiModelProperty(value = "状态(1进行中2已结束3已关闭)", required = true)
137 167 @NotNull(message = "状态(1进行中2已结束-1已关闭)不能为空")
138 168 private Integer status;
139 169  
140   - @ApiModelProperty(value = "有效日期结束时间")
141   - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
142   - private Date endTime;
  170 +
143 171  
144 172 }
... ...
yudao-module-mall/yudao-module-coupon-biz/src/main/java/cn/iocoder/yudao/module/coupon/service/CouponTemplete/CouponTempleteServiceImpl.java
1 1 package cn.iocoder.yudao.module.coupon.service.CouponTemplete;
2 2  
  3 +import cn.iocoder.yudao.module.CouponTemplete.enums.CouponTypeEnum;
  4 +import cn.iocoder.yudao.module.CouponTemplete.enums.CouponValidityTypeEnum;
3 5 import cn.iocoder.yudao.module.coupon.controller.admin.coupontemplete.vo.CouponTempleteCreateReqVO;
4 6 import cn.iocoder.yudao.module.coupon.controller.admin.coupontemplete.vo.CouponTempleteExportReqVO;
5 7 import cn.iocoder.yudao.module.coupon.controller.admin.coupontemplete.vo.CouponTempletePageReqVO;
... ... @@ -18,7 +20,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
18 20  
19 21  
20 22 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
21   -import static cn.iocoder.yudao.module.CouponTemplete.enums.ErrorCodeConstants.COUPON_TEMPLETE_NOT_EXISTS;
  23 +import static cn.iocoder.yudao.module.CouponTemplete.enums.ErrorCodeConstants.*;
22 24  
23 25 /**
24 26 * 优惠券模板 Service 实现类
... ... @@ -36,11 +38,57 @@ public class CouponTempleteServiceImpl implements CouponTempleteService {
36 38 public Long create(CouponTempleteCreateReqVO createReqVO) {
37 39 // 插入
38 40 CouponTempleteDO couponTempleteDO = CouponTempleteConvert.INSTANCE.convert(createReqVO);
  41 + /* 验证类型、判断必填*/
  42 + checkCouponType(createReqVO);
  43 +
  44 + /*todo 验证过期类型、判断必填*/
  45 + checkValidityType(createReqVO);
  46 +
  47 +
  48 +
39 49 couponTempleteMapper.insert(couponTempleteDO);
40 50 // 返回
41 51 return couponTempleteDO.getId();
42 52 }
43 53  
  54 + /*确认优惠券类型*/
  55 + private void checkValidityType(CouponTempleteCreateReqVO createReqVO) {
  56 + Integer validtyType = createReqVO.getValidityType();
  57 +
  58 + if(CouponValidityTypeEnum.TIME_RANGE_EXPIRTED.getStatus().equals(validtyType)){
  59 + if(createReqVO.getStartUseTime() == null||createReqVO.getEndUseTime() == null){
  60 + throw exception(START_END_TIME_NOT_NULL);
  61 + }
  62 + }else{
  63 + if(createReqVO.getFixedTerm() == null){
  64 + throw exception(FIXED_TERM_NOT_NULL);
  65 + }
  66 + }
  67 + }
  68 +
  69 + private void checkCouponType(CouponTempleteCreateReqVO createReqVO) {
  70 +
  71 + String couponType = createReqVO.getType();
  72 + //当type=reward时候,需要添加
  73 + if(couponType.equals(CouponTypeEnum.REWARD.getName())){
  74 + if(createReqVO.getMoney()==null){
  75 + throw exception(MONEY_NOT_NULL);
  76 + }
  77 + }else if(couponType.equals(CouponTypeEnum.DISCOUNT.getName())){
  78 + if(createReqVO.getDiscount()==null){
  79 + throw exception(DISCOUNT_NOT_NULL);
  80 + }
  81 + if(createReqVO.getDiscountLimit()==null){
  82 + throw exception(DISCOUNT_LIMIT_NOT_NULL);
  83 + }
  84 + }else if (couponType.equals(CouponTypeEnum.RANDOW.getName())){
  85 + //当type为radom时需要添加不能为空
  86 + if(createReqVO.getMinMoney()==null||createReqVO.getMaxMoney()==null){
  87 + throw exception(MIN_MAX_NOT_NULL);
  88 + }
  89 + }
  90 + }
  91 +
44 92 @Override
45 93 public void update(CouponTempleteUpdateReqVO updateReqVO) {
46 94 // 校验存在
... ...
yudao-module-mall/yudao-module-coupon-biz/src/main/java/cn/iocoder/yudao/module/coupon/service/coupon/CouponService.java
... ... @@ -16,10 +16,10 @@ public interface CouponService {
16 16 /**
17 17 * 创建优惠券
18 18 *
19   - * @param createReqVO 创建信息
  19 + * @param templateId 优惠券模板id
20 20 * @return 编号
21 21 */
22   - Long create(@Valid CouponCreateReqVO createReqVO);
  22 + Long create(Long templateId);
23 23  
24 24 /**
25 25 * 更新优惠券
... ...
yudao-module-mall/yudao-module-coupon-biz/src/main/java/cn/iocoder/yudao/module/coupon/service/coupon/CouponServiceImpl.java
1 1 package cn.iocoder.yudao.module.coupon.service.coupon;
2 2  
  3 +import cn.hutool.core.bean.BeanUtil;
  4 +import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
  5 +import cn.iocoder.yudao.module.coupon.dal.dataobject.CouponTemplete.CouponTempleteDO;
  6 +import cn.iocoder.yudao.module.coupon.dal.mysql.CouponTemplete.CouponTempleteMapper;
  7 +import io.micrometer.core.instrument.Counter;
3 8 import org.springframework.stereotype.Service;
4 9 import javax.annotation.Resource;
5 10 import org.springframework.validation.annotation.Validated;
... ... @@ -27,7 +32,9 @@ public class CouponServiceImpl implements CouponService {
27 32 @Resource
28 33 private CouponMapper couponMapper;
29 34  
30   - @Override
  35 + @Resource
  36 + private CouponTempleteMapper couponTempleteMapper;
  37 +
31 38 public Long create(CouponCreateReqVO createReqVO) {
32 39 // 插入
33 40 CouponDO couponDO = CouponConvert.INSTANCE.convert(createReqVO);
... ... @@ -36,6 +43,24 @@ public class CouponServiceImpl implements CouponService {
36 43 return couponDO.getId();
37 44 }
38 45  
  46 +
  47 + /**
  48 + *todo 获取用户id收获优惠券
  49 + *@author:wxr
  50 + *@date:2022-08-13 3:11
  51 + *@Description
  52 + */
  53 + @Override
  54 + public Long create(Long templateId) {
  55 + Long userid = SecurityFrameworkUtils.getLoginUserId();
  56 + CouponDO couponDO = CouponDO.builder().memberId(userid).build();
  57 + CouponTempleteDO couponTempleteDO = couponTempleteMapper.selectById(templateId);
  58 + //todo 缺少判空
  59 + BeanUtil.copyProperties(couponTempleteDO,couponTempleteDO);
  60 + couponMapper.insert(couponDO);
  61 + return couponDO.getId();
  62 + }
  63 +
39 64 @Override
40 65 public void update(CouponUpdateReqVO updateReqVO) {
41 66 // 校验存在
... ...
yudao-ui-admin/.env.dev
... ... @@ -5,7 +5,7 @@ ENV = &#39;development&#39;
5 5 VUE_APP_TITLE = 芋道管理系统
6 6  
7 7 # 芋道管理系统/开发环境
8   -VUE_APP_BASE_API = 'http://localhost:48080'
  8 +VUE_APP_BASE_API = 'http://localhost:48081'
9 9  
10 10 # 路由懒加载
11 11 VUE_CLI_BABEL_TRANSPILE_MODULES = true
... ...
yudao-ui-admin/.env.local
... ... @@ -6,7 +6,7 @@ VUE_APP_TITLE = 芋道管理系统
6 6  
7 7 # 芋道管理系统/本地环境
8 8 # VUE_APP_BASE_API = '/proxy-api'
9   -VUE_APP_BASE_API = 'http://127.0.0.1:48080'
  9 +VUE_APP_BASE_API = 'http://127.0.0.1:48081'
10 10  
11 11 # 路由懒加载
12 12 VUE_CLI_BABEL_TRANSPILE_MODULES = true
... ...
yudao-ui-admin/.eslintignore
... ... @@ -7,4 +7,4 @@ public
7 7 # 忽略当前目录下为js的文件的语法检查
8 8 *.js
9 9 # 忽略当前目录下为vue的文件的语法检查
10   -*.vue
11 10 \ No newline at end of file
  11 +*.vue
... ...
yudao-ui-admin/src/api/mall/CouponTemplete/CouponTemplete.js 0 → 100644
  1 +import request from '@/utils/request'
  2 +
  3 +// 创建优惠券模板
  4 +export function create(data) {
  5 + return request({
  6 + url: '/coupon/CouponTemplete/create',
  7 + method: 'post',
  8 + data: data
  9 + })
  10 +}
  11 +
  12 +// 更新优惠券模板
  13 +export function update(data) {
  14 + return request({
  15 + url: '/coupon/CouponTemplete/update',
  16 + method: 'put',
  17 + data: data
  18 + })
  19 +}
  20 +
  21 +// 删除优惠券模板
  22 +export function deleteCouponTemplete (id) {
  23 + return request({
  24 + url: '/coupon/CouponTemplete/delete?id=' + id,
  25 + method: 'delete'
  26 + })
  27 +}
  28 +
  29 +// 获得优惠券模板
  30 +export function get(id) {
  31 + return request({
  32 + url: '/coupon/CouponTemplete/get?id=' + id,
  33 + method: 'get'
  34 + })
  35 +}
  36 +
  37 +// 获得优惠券模板分页
  38 +export function getPage(query) {
  39 + return request({
  40 + url: '/coupon/CouponTemplete/page',
  41 + method: 'get',
  42 + params: query
  43 + })
  44 +}
  45 +
  46 +// 导出优惠券模板 Excel
  47 +export function exportExcel(query) {
  48 + return request({
  49 + url: '/coupon/CouponTemplete/export-excel',
  50 + method: 'get',
  51 + params: query,
  52 + responseType: 'blob'
  53 + })
  54 +}
... ...
yudao-ui-admin/src/views/mall/CouponTemplete/index.vue 0 → 100644
  1 +<template>
  2 + <div class="app-container">
  3 +
  4 + <!-- 搜索工作栏 -->
  5 + <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
  6 + <el-form-item label="优惠券类" prop="type">
  7 + <el-select v-model="queryParams.type" placeholder="请选择优惠券类型 reward-满减 discount-折扣 random-随机" clearable size="small">
  8 + <el-option label="请选择字典生成" value="" />
  9 + </el-select>
  10 + </el-form-item>
  11 + <el-form-item label="优惠券名称" prop="name">
  12 + <el-input v-model="queryParams.name" placeholder="请输入优惠券名称" clearable @keyup.enter.native="handleQuery"/>
  13 + </el-form-item>
  14 +
  15 + <el-form-item label="状态" prop="status">
  16 + <el-select v-model="queryParams.status" placeholder="请选择状态(1进行中2已结束-1已关闭)" clearable size="small">
  17 + <el-option label="请选择字典生成" value="" />
  18 + </el-select>
  19 + </el-form-item>
  20 + <el-form-item label="有效日期结束时间" prop="endTime">
  21 + <el-date-picker v-model="queryParams.endTime" style="width: 240px" value-format="yyyy-MM-dd HH:mm:ss" type="daterange"
  22 + range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" :default-time="['00:00:00', '23:59:59']" />
  23 + </el-form-item>
  24 +
  25 + <el-form-item>
  26 + <el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
  27 + <el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button>
  28 + </el-form-item>
  29 + </el-form>
  30 +
  31 + <!-- 操作工具栏 -->
  32 + <el-row :gutter="10" class="mb8">
  33 + <el-col :span="1.5">
  34 + <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
  35 + v-hasPermi="['CouponTemplete::create']">新增</el-button>
  36 + </el-col>
  37 + <el-col :span="1.5">
  38 + <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" :loading="exportLoading"
  39 + v-hasPermi="['CouponTemplete::export']">导出</el-button>
  40 + </el-col>
  41 + <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
  42 + </el-row>
  43 +
  44 + <!-- 列表 -->
  45 + <el-table v-loading="loading" :data="list">
  46 + <el-table-column label="用户ID" align="center" prop="id" />
  47 +
  48 + <!-- todo 优惠券类型-->
  49 + <el-table-column label="优惠券类型" align="center" prop="type" />
  50 + <el-table-column label="优惠券名称" align="center" prop="name" />
  51 + <el-table-column label="优惠券图片" align="center" prop="image" />
  52 + <el-table-column label="发放数量" align="center" prop="count" />
  53 + <el-table-column label="已领取数量" align="center" prop="leadCount" />
  54 + <el-table-column label="已使用数量" align="center" prop="usedCount" />
  55 +<!-- todo 适用商品类型-->
  56 +<!-- <el-table-column label="适用商品类型" align="center" prop="goodsType" />-->
  57 + <!-- todo 使用门槛0-无门槛 1-有门槛-->
  58 +
  59 + <el-table-column label="使用门槛" align="center" prop="hasUseLimit" />
  60 +<!-- <el-table-column label="满多少元使用 0代表无限制" align="center" prop="atLeast" />-->
  61 + <!-- todo 发放面额 折扣-->
  62 + <el-table-column label="优惠金额/折扣" align="center" prop="money" />
  63 +<!-- <el-table-column label="1 =< 折扣 <= 9.9 当type为discount时需要添加" align="center" prop="discount" />-->
  64 +<!-- <el-table-column label="最多折扣金额 当type为discount时可选择性添加" align="center" prop="discountLimit" />-->
  65 +<!-- <el-table-column label="最低金额 当type为radom时需要添加" align="center" prop="minMoney" />-->
  66 +<!-- <el-table-column label="最大金额 当type为radom时需要添加" align="center" prop="maxMoney" />-->
  67 + <!-- todo 1-时间范围过期 2-领取之日固定日期后过期 3-领取次日固定日期后过期 -->
  68 + <el-table-column label="有效期限" align="center" prop="validityType" />
  69 +<!-- <el-table-column label="使用开始日期 过期类型1时必填" align="center" prop="startUseTime" width="180">-->
  70 +<!-- <template slot-scope="scope">-->
  71 +<!-- <span>{{ parseTime(scope.row.startUseTime) }}</span>-->
  72 +<!-- </template>-->
  73 +<!-- </el-table-column>-->
  74 +<!-- <el-table-column label="使用结束日期 过期类型1时必填" align="center" prop="endUseTime" width="180">-->
  75 +<!-- <template slot-scope="scope">-->
  76 +<!-- <span>{{ parseTime(scope.row.endUseTime) }}</span>-->
  77 +<!-- </template>-->
  78 +<!-- </el-table-column>-->
  79 +<!-- <el-table-column label="有效日期结束时间" align="center" prop="endTime" width="180">-->
  80 +<!-- <template slot-scope="scope">-->
  81 +<!-- <span>{{ parseTime(scope.row.endTime) }}</span>-->
  82 +<!-- </template>-->
  83 +<!-- </el-table-column>-->
  84 +<!-- <el-table-column label="当validity_type为2或者3时需要添加 领取之日起或者次日N天内有效" align="center" prop="fixedTerm" />-->
  85 +<!-- <el-table-column label="是否无限制0-否 1是" align="center" prop="whetherLimitless" />-->
  86 + <el-table-column label="领取上限" align="center" prop="maxFetch" />
  87 + <!-- todo 0-不限制 1- 优惠券仅原价购买商品时可用-->
  88 + <el-table-column label="优惠叠加" align="center" prop="whetherForbidPreference" />
  89 + <el-table-column label="是否显示" align="center" prop="whetherShow" />
  90 + <el-table-column label="订单的优惠总金额" align="center" prop="discountOrderMoney" />
  91 + <el-table-column label="用券总成交额" align="center" prop="orderMoney" />
  92 + <el-table-column label="是否禁止发放" align="center" prop="whetherForbidden" />
  93 + <el-table-column label="使用优惠券购买的商品数量" align="center" prop="orderGoodsNum" />
  94 + <el-table-column label="状态" align="center" prop="status" />
  95 +
  96 + <el-table-column label="备注" align="center" prop="couponNameRemark" />
  97 +
  98 + <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
  99 +
  100 + <template #scope>
  101 + <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
  102 + v-hasPermi="['CouponTemplete::update']">修改</el-button>
  103 + <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
  104 + v-hasPermi="['CouponTemplete::delete']">删除</el-button>
  105 + </template>
  106 + </el-table-column>
  107 + </el-table>
  108 + <!-- 分页组件 -->
  109 + <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize"
  110 + @pagination="getList"/>
  111 +
  112 + <!-- 对话框(添加 / 修改) -->
  113 + <el-dialog :title="title" :visible.sync="open" width="800px" append-to-body>
  114 + <el-form ref="form" :model="form" :rules="rules" label-width="150px">
  115 + <el-form-item label="优惠券类型" prop="type">
  116 + <el-select v-model="form.type" placeholder="请选择优惠券类型 reward-满减 discount-折扣 random-随机">
  117 + <el-option label="请选择字典生成" value="" />
  118 + </el-select>
  119 + </el-form-item>
  120 + <el-form-item label="优惠券名称" prop="name">
  121 + <el-input v-model="form.name" placeholder="请输入优惠券名称" />
  122 + </el-form-item>
  123 + <el-form-item label="名称备注" prop="couponNameRemark">
  124 + <el-input v-model="form.couponNameRemark" placeholder="请输入名称备注" />
  125 + </el-form-item>
  126 + <el-form-item label="发放数量" prop="count">
  127 + <el-input v-model="form.count" placeholder="请输入发放数量" />
  128 + </el-form-item>
  129 + <el-form-item label="适用商品类型" prop="goodsType">
  130 + <el-radio-group v-model="form.goodsType">
  131 + <el-radio label="1">请选择字典生成</el-radio>
  132 + </el-radio-group>
  133 + </el-form-item>
  134 + <!-- todo 请输入适用商品id-->
  135 + <el-form-item label="适用商品id" prop="productIds">
  136 + <el-input v-model="form.productIds" placeholder="请输入适用商品id" />
  137 + </el-form-item>
  138 + <el-form-item label="使用门槛" prop="hasUseLimit">
  139 + <el-radio-group v-model="form.hasUseLimit">
  140 + <el-radio label="1">请选择字典生成</el-radio>
  141 + </el-radio-group>
  142 + </el-form-item>
  143 + <el-form-item label="满多少元使用" prop="atLeast">
  144 + <el-input v-model="form.atLeast" placeholder="请输入满多少元使用 0代表无限制" />
  145 + </el-form-item>
  146 + <el-form-item label="发放面额" prop="money">
  147 + <el-input v-model="form.money" placeholder="请输入发放面额 当type为reward时需要添加" />
  148 + </el-form-item>
  149 + <el-form-item label="1 =< 折扣 <= 9.9" prop="discount">
  150 + <el-input v-model="form.discount" placeholder="请输入1 =< 折扣 <= 9.9 当type为discount时需要添加" />
  151 + </el-form-item>
  152 + <el-form-item label="最多折扣金额" prop="discountLimit">
  153 + <el-input v-model="form.discountLimit" placeholder="请输入最多折扣金额 当type为discount时可选择性添加" />
  154 + </el-form-item>
  155 + <el-form-item label="最低金额" prop="minMoney">
  156 + <el-input v-model="form.minMoney" placeholder="请输入最低金额 当type为radom时需要添加" />
  157 + </el-form-item>
  158 + <el-form-item label="最大金额" prop="maxMoney">
  159 + <el-input v-model="form.maxMoney" placeholder="请输入最大金额 当type为radom时需要添加" />
  160 + </el-form-item>
  161 + <el-form-item label="过期类型" prop="validityType">
  162 + <el-radio-group v-model="form.validityType">
  163 + <el-radio label="1">请选择字典生成</el-radio>
  164 + </el-radio-group>
  165 + </el-form-item>
  166 + <el-form-item label="使用开始日期 过期类型1时必填" prop="startUseTime">
  167 + <el-date-picker clearable v-model="form.startUseTime" type="date" value-format="timestamp" placeholder="选择使用开始日期 过期类型1时必填" />
  168 + </el-form-item>
  169 + <el-form-item label="使用结束日期 过期类型1时必填" prop="endUseTime">
  170 + <el-date-picker clearable v-model="form.endUseTime" type="date" value-format="timestamp" placeholder="选择使用结束日期 过期类型1时必填" />
  171 + </el-form-item>
  172 + <el-form-item label="当validity_type为2或者3时需要添加 领取之日起或者次日N天内有效" prop="fixedTerm">
  173 + <el-input v-model="form.fixedTerm" placeholder="请输入当validity_type为2或者3时需要添加 领取之日起或者次日N天内有效" />
  174 + </el-form-item>
  175 + <el-form-item label="是否无限制0-否 1是" prop="whetherLimitless">
  176 + <el-radio-group v-model="form.whetherLimitless">
  177 + <el-radio label="1">请选择字典生成</el-radio>
  178 + </el-radio-group>
  179 + </el-form-item>
  180 + <el-form-item label="每人最大领取个数" prop="maxFetch">
  181 + <el-input v-model="form.maxFetch" placeholder="请输入每人最大领取个数" />
  182 + </el-form-item>
  183 + <el-form-item label="是否开启过期提醒0-不开启 1-开启" prop="whetherExpireNotice">
  184 + <el-radio-group v-model="form.whetherExpireNotice">
  185 + <el-radio label="1">请选择字典生成</el-radio>
  186 + </el-radio-group>
  187 + </el-form-item>
  188 + <el-form-item label="过期前N天提醒" prop="expireNoticeFixedTerm">
  189 + <el-input v-model="form.expireNoticeFixedTerm" placeholder="请输入过期前N天提醒" />
  190 + </el-form-item>
  191 + <el-form-item label="优惠叠加 0-不限制 1- 优惠券仅原价购买商品时可用" prop="whetherForbidPreference">
  192 + <el-radio-group v-model="form.whetherForbidPreference">
  193 + <el-radio label="1">请选择字典生成</el-radio>
  194 + </el-radio-group>
  195 + </el-form-item>
  196 + <el-form-item label="是否显示" prop="whetherShow">
  197 + <el-input v-model="form.whetherShow" placeholder="请输入是否显示" />
  198 + </el-form-item>
  199 + <el-form-item label="订单的优惠总金额" prop="discountOrderMoney">
  200 + <el-input v-model="form.discountOrderMoney" placeholder="请输入订单的优惠总金额" />
  201 + </el-form-item>
  202 + <el-form-item label="用券总成交额" prop="orderMoney">
  203 + <el-input v-model="form.orderMoney" placeholder="请输入用券总成交额" />
  204 + </el-form-item>
  205 + <el-form-item label="是否禁止发放0-否 1-是" prop="whetherForbidden">
  206 + <el-radio-group v-model="form.whetherForbidden">
  207 + <el-radio label="1">请选择字典生成</el-radio>
  208 + </el-radio-group>
  209 + </el-form-item>
  210 + <el-form-item label="使用优惠券购买的商品数量" prop="orderGoodsNum">
  211 + <el-input v-model="form.orderGoodsNum" placeholder="请输入使用优惠券购买的商品数量" />
  212 + </el-form-item>
  213 + <el-form-item label="状态" prop="status">
  214 + <el-radio-group v-model="form.status">
  215 + <el-radio label="1">请选择字典生成</el-radio>
  216 + </el-radio-group>
  217 + </el-form-item>
  218 + <el-form-item label="有效日期结束时间" prop="endTime">
  219 + <el-date-picker clearable v-model="form.endTime" type="date" value-format="timestamp" placeholder="选择有效日期结束时间" />
  220 + </el-form-item>
  221 + </el-form>
  222 + <div slot="footer" class="dialog-footer">
  223 + <el-button type="primary" @click="submitForm">确 定</el-button>
  224 + <el-button @click="cancel">取 消</el-button>
  225 + </div>
  226 + </el-dialog>
  227 + </div>
  228 +</template>
  229 +
  230 +<script>
  231 +import { create, update, deleteCouponTemplete, get, getPage, exportExcel } from "@/api/mall/CouponTemplete/CouponTemplete.js";
  232 +
  233 +export default {
  234 + name: "",
  235 + components: {
  236 + },
  237 + data() {
  238 + return {
  239 + // 遮罩层
  240 + loading: true,
  241 + // 导出遮罩层
  242 + exportLoading: false,
  243 + // 显示搜索条件
  244 + showSearch: true,
  245 + // 总条数
  246 + total: 0,
  247 + // 优惠券模板列表
  248 + list: [],
  249 + // 弹出层标题
  250 + title: "",
  251 + // 是否显示弹出层
  252 + open: false,
  253 + // 查询参数
  254 + queryParams: {
  255 + pageNo: 1,
  256 + pageSize: 10,
  257 + type: null,
  258 + name: null,
  259 + couponNameRemark: null,
  260 + image: null,
  261 + count: null,
  262 + leadCount: null,
  263 + usedCount: null,
  264 + goodsType: null,
  265 + productIds: null,
  266 + hasUseLimit: null,
  267 + atLeast: null,
  268 + money: null,
  269 + discount: null,
  270 + discountLimit: null,
  271 + minMoney: null,
  272 + maxMoney: null,
  273 + validityType: null,
  274 + startUseTime: [],
  275 + endUseTime: [],
  276 + fixedTerm: null,
  277 + whetherLimitless: null,
  278 + maxFetch: null,
  279 + whetherExpireNotice: null,
  280 + expireNoticeFixedTerm: null,
  281 + whetherForbidPreference: null,
  282 + whetherShow: null,
  283 + discountOrderMoney: null,
  284 + orderMoney: null,
  285 + whetherForbidden: null,
  286 + orderGoodsNum: null,
  287 + status: null,
  288 + endTime: [],
  289 + createTime: [],
  290 + },
  291 + // 表单参数
  292 + form: {},
  293 + // 表单校验
  294 + rules: {
  295 + type: [{ required: true, message: "优惠券类型 reward-满减 discount-折扣 random-随机不能为空", trigger: "change" }],
  296 + name: [{ required: true, message: "优惠券名称不能为空", trigger: "blur" }],
  297 + count: [{ required: true, message: "发放数量不能为空", trigger: "blur" }],
  298 + leadCount: [{ required: true, message: "已领取数量不能为空", trigger: "blur" }],
  299 + usedCount: [{ required: true, message: "已使用数量不能为空", trigger: "blur" }],
  300 + goodsType: [{ required: true, message: "适用商品类型1-全部商品可用;2-指定商品可用;3-指定商品不可用不能为空", trigger: "blur" }],
  301 + hasUseLimit: [{ required: true, message: "使用门槛0-无门槛 1-有门槛不能为空", trigger: "blur" }],
  302 + atLeast: [{ required: true, message: "满多少元使用 0代表无限制不能为空", trigger: "blur" }],
  303 + money: [{ required: true, message: "发放面额 当type为reward时需要添加不能为空", trigger: "blur" }],
  304 + discount: [{ required: true, message: "1 =< 折扣 <= 9.9 当type为discount时需要添加不能为空", trigger: "blur" }],
  305 + discountLimit: [{ required: true, message: "最多折扣金额 当type为discount时可选择性添加不能为空", trigger: "blur" }],
  306 + minMoney: [{ required: true, message: "最低金额 当type为radom时需要添加不能为空", trigger: "blur" }],
  307 + maxMoney: [{ required: true, message: "最大金额 当type为radom时需要添加不能为空", trigger: "blur" }],
  308 + validityType: [{ required: true, message: "过期类型1-时间范围过期 2-领取之日固定日期后过期 3-领取次日固定日期后过期不能为空", trigger: "blur" }],
  309 + fixedTerm: [{ required: true, message: "当validity_type为2或者3时需要添加 领取之日起或者次日N天内有效不能为空", trigger: "blur" }],
  310 + whetherLimitless: [{ required: true, message: "是否无限制0-否 1是不能为空", trigger: "blur" }],
  311 + maxFetch: [{ required: true, message: "每人最大领取个数不能为空", trigger: "blur" }],
  312 + whetherExpireNotice: [{ required: true, message: "是否开启过期提醒0-不开启 1-开启不能为空", trigger: "blur" }],
  313 + expireNoticeFixedTerm: [{ required: true, message: "过期前N天提醒不能为空", trigger: "blur" }],
  314 + whetherForbidPreference: [{ required: true, message: "优惠叠加 0-不限制 1- 优惠券仅原价购买商品时可用不能为空", trigger: "blur" }],
  315 + whetherShow: [{ required: true, message: "是否显示不能为空", trigger: "blur" }],
  316 + discountOrderMoney: [{ required: true, message: "订单的优惠总金额不能为空", trigger: "blur" }],
  317 + orderMoney: [{ required: true, message: "用券总成交额不能为空", trigger: "blur" }],
  318 + whetherForbidden: [{ required: true, message: "是否禁止发放0-否 1-是不能为空", trigger: "blur" }],
  319 + orderGoodsNum: [{ required: true, message: "使用优惠券购买的商品数量不能为空", trigger: "blur" }],
  320 + status: [{ required: true, message: "状态(1进行中2已结束-1已关闭)不能为空", trigger: "blur" }],
  321 + }
  322 + };
  323 + },
  324 + created() {
  325 + this.getList();
  326 + },
  327 + methods: {
  328 + /** 查询列表 */
  329 + getList() {
  330 + this.loading = true;
  331 + // 执行查询
  332 + getPage(this.queryParams).then(response => {
  333 + this.list = response.data.list;
  334 + this.total = response.data.total;
  335 + this.loading = false;
  336 + });
  337 + },
  338 + /** 取消按钮 */
  339 + cancel() {
  340 + this.open = false;
  341 + this.reset();
  342 + },
  343 + /** 表单重置 */
  344 + reset() {
  345 + this.form = {
  346 + id: undefined,
  347 + type: undefined,
  348 + name: undefined,
  349 + couponNameRemark: undefined,
  350 + image: undefined,
  351 + count: undefined,
  352 + leadCount: undefined,
  353 + usedCount: undefined,
  354 + goodsType: undefined,
  355 + productIds: undefined,
  356 + hasUseLimit: undefined,
  357 + atLeast: undefined,
  358 + money: undefined,
  359 + discount: undefined,
  360 + discountLimit: undefined,
  361 + minMoney: undefined,
  362 + maxMoney: undefined,
  363 + validityType: undefined,
  364 + startUseTime: undefined,
  365 + endUseTime: undefined,
  366 + fixedTerm: undefined,
  367 + whetherLimitless: undefined,
  368 + maxFetch: undefined,
  369 + whetherExpireNotice: undefined,
  370 + expireNoticeFixedTerm: undefined,
  371 + whetherForbidPreference: undefined,
  372 + whetherShow: undefined,
  373 + discountOrderMoney: undefined,
  374 + orderMoney: undefined,
  375 + whetherForbidden: undefined,
  376 + orderGoodsNum: undefined,
  377 + status: undefined,
  378 + endTime: undefined,
  379 + };
  380 + this.resetForm("form");
  381 + },
  382 + /** 搜索按钮操作 */
  383 + handleQuery() {
  384 + this.queryParams.pageNo = 1;
  385 + this.getList();
  386 + },
  387 + /** 重置按钮操作 */
  388 + resetQuery() {
  389 + this.resetForm("queryForm");
  390 + this.handleQuery();
  391 + },
  392 + /** 新增按钮操作 */
  393 + handleAdd() {
  394 + this.reset();
  395 + this.open = true;
  396 + this.title = "添加优惠券模板";
  397 + },
  398 + /** 修改按钮操作 */
  399 + handleUpdate(row) {
  400 + this.reset();
  401 + const id = row.id;
  402 + get(id).then(response => {
  403 + this.form = response.data;
  404 + this.open = true;
  405 + this.title = "修改优惠券模板";
  406 + });
  407 + },
  408 + /** 提交按钮 */
  409 + submitForm() {
  410 + this.$refs["form"].validate(valid => {
  411 + if (!valid) {
  412 + return;
  413 + }
  414 + // 修改的提交
  415 + if (this.form.id != null) {
  416 + update(this.form).then(response => {
  417 + this.$modal.msgSuccess("修改成功");
  418 + this.open = false;
  419 + this.getList();
  420 + });
  421 + return;
  422 + }
  423 + // 添加的提交
  424 + create(this.form).then(response => {
  425 + this.$modal.msgSuccess("新增成功");
  426 + this.open = false;
  427 + this.getList();
  428 + });
  429 + });
  430 + },
  431 + /** 删除按钮操作 */
  432 + handleDelete(row) {
  433 + const id = row.id;
  434 + this.$modal.confirm('是否确认删除优惠券模板编号为"' + id + '"的数据项?').then(function() {
  435 + return deleteCouponTemplete(id);
  436 + }).then(() => {
  437 + this.getList();
  438 + this.$modal.msgSuccess("删除成功");
  439 + }).catch(() => {});
  440 + },
  441 + /** 导出按钮操作 */
  442 + handleExport() {
  443 + // 处理查询参数
  444 + let params = {...this.queryParams};
  445 + params.pageNo = undefined;
  446 + params.pageSize = undefined;
  447 + this.$modal.confirm('是否确认导出所有优惠券模板数据项?').then(() => {
  448 + this.exportLoading = true;
  449 + return exportExcel(params);
  450 + }).then(response => {
  451 + this.$download.excel(response, '优惠券模板.xls');
  452 + this.exportLoading = false;
  453 + }).catch(() => {});
  454 + }
  455 + }
  456 +};
  457 +</script>
... ...