后端 + 前端:优惠劵模板添加
							parent
							
								
									f6c847d104
								
							
						
					
					
						commit
						8418641731
					
				| 
						 | 
					@ -105,7 +105,7 @@ export default class BaseMenu extends PureComponent {
 | 
				
			||||||
        onClick={
 | 
					        onClick={
 | 
				
			||||||
          isMobile
 | 
					          isMobile
 | 
				
			||||||
            ? () => {
 | 
					            ? () => {
 | 
				
			||||||
                onCollapse(true);
 | 
					                onCollapsetrue;
 | 
				
			||||||
              }
 | 
					              }
 | 
				
			||||||
            : undefined
 | 
					            : undefined
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -220,11 +220,12 @@ const AddOrUpdateForm = Form.create()(props => {
 | 
				
			||||||
      if (err) return;
 | 
					      if (err) return;
 | 
				
			||||||
      let newFileds = {
 | 
					      let newFileds = {
 | 
				
			||||||
        ...fields,
 | 
					        ...fields,
 | 
				
			||||||
        priceAvailable: fields['priceAvailable'] ? parseInt(fields.priceAvailable * 100) : undefined,
 | 
					        priceAvailable: fields.priceAvailable ? parseInt(fields.priceAvailable * 100) : undefined,
 | 
				
			||||||
        priceOff: fields['priceOff'] ? parseInt(fields.priceOff * 100) : undefined,
 | 
					        priceOff: fields.priceOff ? parseInt(fields.priceOff * 100) : undefined,
 | 
				
			||||||
        discountPriceLimit: fields['discountPriceLimit'] ? parseInt(fields.discountPriceLimit * 100) : undefined,
 | 
					        discountPriceLimit: fields.discountPriceLimit ? parseInt(fields.discountPriceLimit * 100) : undefined,
 | 
				
			||||||
      }
 | 
					        validStartTime: fields.validStartTime ? fields.validStartTime.format('YYYY-MM-DD') : undefined,
 | 
				
			||||||
      debugger;
 | 
					        validEndTime: fields.validEndTime ? fields.validEndTime.format('YYYY-MM-DD') : undefined
 | 
				
			||||||
 | 
					      };
 | 
				
			||||||
      // 添加表单
 | 
					      // 添加表单
 | 
				
			||||||
      if (modalType === 'add') {
 | 
					      if (modalType === 'add') {
 | 
				
			||||||
        dispatch({
 | 
					        dispatch({
 | 
				
			||||||
| 
						 | 
					@ -291,7 +292,8 @@ const AddOrUpdateForm = Form.create()(props => {
 | 
				
			||||||
    >
 | 
					    >
 | 
				
			||||||
      <FormItem labelCol={{ span: 5 }} wrapperCol={{ span: 15 }} label="标题">
 | 
					      <FormItem labelCol={{ span: 5 }} wrapperCol={{ span: 15 }} label="标题">
 | 
				
			||||||
        {form.getFieldDecorator('title', {
 | 
					        {form.getFieldDecorator('title', {
 | 
				
			||||||
          rules: [{ required: true, message: '请输入标题!' }],
 | 
					          rules: [{ required: true, message: '请输入标题!' },
 | 
				
			||||||
 | 
					            {max: 16, min:2, message: '长度为 2-16 位'},],
 | 
				
			||||||
          initialValue: formVals.title,
 | 
					          initialValue: formVals.title,
 | 
				
			||||||
        })(<Input placeholder="请输入" />)}
 | 
					        })(<Input placeholder="请输入" />)}
 | 
				
			||||||
      </FormItem>
 | 
					      </FormItem>
 | 
				
			||||||
| 
						 | 
					@ -310,7 +312,6 @@ const AddOrUpdateForm = Form.create()(props => {
 | 
				
			||||||
          initialValue: formVals.quota,
 | 
					          initialValue: formVals.quota,
 | 
				
			||||||
        })(
 | 
					        })(
 | 
				
			||||||
          <Select placeholder="请选择" style={{ maxWidth: 200, width: '100%' }}>
 | 
					          <Select placeholder="请选择" style={{ maxWidth: 200, width: '100%' }}>
 | 
				
			||||||
            <SelectOption value="">不限次数</SelectOption>
 | 
					 | 
				
			||||||
            <SelectOption value="1">1 次</SelectOption>
 | 
					            <SelectOption value="1">1 次</SelectOption>
 | 
				
			||||||
            <SelectOption value="2">2 次</SelectOption>
 | 
					            <SelectOption value="2">2 次</SelectOption>
 | 
				
			||||||
            <SelectOption value="3">3 次</SelectOption>
 | 
					            <SelectOption value="3">3 次</SelectOption>
 | 
				
			||||||
| 
						 | 
					@ -391,12 +392,14 @@ const AddOrUpdateForm = Form.create()(props => {
 | 
				
			||||||
        formVals.dateType == 2 ?
 | 
					        formVals.dateType == 2 ?
 | 
				
			||||||
          <FormItem labelCol={{ span: 5 }} wrapperCol={{ span: 15 }} label="领取日期">
 | 
					          <FormItem labelCol={{ span: 5 }} wrapperCol={{ span: 15 }} label="领取日期">
 | 
				
			||||||
            {form.getFieldDecorator('fixedBeginTerm', {
 | 
					            {form.getFieldDecorator('fixedBeginTerm', {
 | 
				
			||||||
              rules: [{ required: true, message: '请输入固定日期!' },],
 | 
					              rules: [{ required: true, message: '请输入固定日期!' },
 | 
				
			||||||
 | 
					                {min: 1, type: 'number', message: '最小值为 1'}],
 | 
				
			||||||
              initialValue: formVals.fixedBeginTerm,
 | 
					              initialValue: formVals.fixedBeginTerm,
 | 
				
			||||||
            })(<InputNumber placeholder="请输入" />)}
 | 
					            })(<InputNumber placeholder="请输入" />)}
 | 
				
			||||||
             - 
 | 
					             - 
 | 
				
			||||||
            {form.getFieldDecorator('fixedEndTerm', {
 | 
					            {form.getFieldDecorator('fixedEndTerm', {
 | 
				
			||||||
              rules: [{ required: false, message: '请输入固定日期!' },],
 | 
					              rules: [{ required: true, message: '请输入固定日期!' },
 | 
				
			||||||
 | 
					                {min: 1, type: 'number', message: '最小值为 1'}],
 | 
				
			||||||
              initialValue: formVals.fixedEndTerm,
 | 
					              initialValue: formVals.fixedEndTerm,
 | 
				
			||||||
            })(<InputNumber placeholder="请输入" />)} 天
 | 
					            })(<InputNumber placeholder="请输入" />)} 天
 | 
				
			||||||
          </FormItem> : ''
 | 
					          </FormItem> : ''
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -43,7 +43,74 @@ public class DateUtil {
 | 
				
			||||||
        if (date == null) {
 | 
					        if (date == null) {
 | 
				
			||||||
            return "";
 | 
					            return "";
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        // TODO 芋艿,后面改成缓存
 | 
				
			||||||
        return new SimpleDateFormat(pattern).format(date);
 | 
					        return new SimpleDateFormat(pattern).format(date);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 获取指定天结束时间
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param date 日期
 | 
				
			||||||
 | 
					     * @return 获得该日期的开始
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public static Date getDayBegin(Date date) {
 | 
				
			||||||
 | 
					        if (date == null) {
 | 
				
			||||||
 | 
					            return null;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        Calendar calendar = Calendar.getInstance();
 | 
				
			||||||
 | 
					        calendar.setTime(date);
 | 
				
			||||||
 | 
					        setCalender(calendar, 0, 0, 0, 0);
 | 
				
			||||||
 | 
					        return calendar.getTime();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 获取当天开始时间
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @return 获得该日期的开始
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public static Date getDayBegin() {
 | 
				
			||||||
 | 
					        return getDayBegin(new Date());
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 获取指定天结束时间
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param date 日期
 | 
				
			||||||
 | 
					     * @return 获得该日期的结束
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public static Date getDayEnd(Date date) {
 | 
				
			||||||
 | 
					        if (date == null) {
 | 
				
			||||||
 | 
					            return null;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        Calendar calendar = Calendar.getInstance();
 | 
				
			||||||
 | 
					        calendar.setTime(date);
 | 
				
			||||||
 | 
					        setCalender(calendar, 23, 59, 59, 999);
 | 
				
			||||||
 | 
					        return calendar.getTime();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 获取当天结束时间
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @return 获得该日期的开始
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public static Date getDayEnd() {
 | 
				
			||||||
 | 
					        return getDayEnd(new Date());
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 设置Calendar的小时、分钟、秒、毫秒
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param calendar    日历
 | 
				
			||||||
 | 
					     * @param hour        小时
 | 
				
			||||||
 | 
					     * @param minute      分钟
 | 
				
			||||||
 | 
					     * @param second      秒
 | 
				
			||||||
 | 
					     * @param milliSecond 毫秒
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public static void setCalender(Calendar calendar, int hour, int minute, int second, int milliSecond) {
 | 
				
			||||||
 | 
					        calendar.set(Calendar.HOUR_OF_DAY, hour);
 | 
				
			||||||
 | 
					        calendar.set(Calendar.MINUTE, minute);
 | 
				
			||||||
 | 
					        calendar.set(Calendar.SECOND, second);
 | 
				
			||||||
 | 
					        calendar.set(Calendar.MILLISECOND, milliSecond);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,6 @@
 | 
				
			||||||
package cn.iocoder.mall.promotion.application.controller.admins;
 | 
					package cn.iocoder.mall.promotion.application.controller.admins;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import cn.iocoder.common.framework.util.DateUtil;
 | 
				
			||||||
import cn.iocoder.common.framework.vo.CommonResult;
 | 
					import cn.iocoder.common.framework.vo.CommonResult;
 | 
				
			||||||
import cn.iocoder.mall.promotion.api.CouponService;
 | 
					import cn.iocoder.mall.promotion.api.CouponService;
 | 
				
			||||||
import cn.iocoder.mall.promotion.api.bo.CouponTemplateBO;
 | 
					import cn.iocoder.mall.promotion.api.bo.CouponTemplateBO;
 | 
				
			||||||
| 
						 | 
					@ -11,6 +12,7 @@ import io.swagger.annotations.Api;
 | 
				
			||||||
import io.swagger.annotations.ApiImplicitParam;
 | 
					import io.swagger.annotations.ApiImplicitParam;
 | 
				
			||||||
import io.swagger.annotations.ApiImplicitParams;
 | 
					import io.swagger.annotations.ApiImplicitParams;
 | 
				
			||||||
import io.swagger.annotations.ApiOperation;
 | 
					import io.swagger.annotations.ApiOperation;
 | 
				
			||||||
 | 
					import org.springframework.format.annotation.DateTimeFormat;
 | 
				
			||||||
import org.springframework.web.bind.annotation.PostMapping;
 | 
					import org.springframework.web.bind.annotation.PostMapping;
 | 
				
			||||||
import org.springframework.web.bind.annotation.RequestMapping;
 | 
					import org.springframework.web.bind.annotation.RequestMapping;
 | 
				
			||||||
import org.springframework.web.bind.annotation.RequestParam;
 | 
					import org.springframework.web.bind.annotation.RequestParam;
 | 
				
			||||||
| 
						 | 
					@ -19,7 +21,7 @@ import org.springframework.web.bind.annotation.RestController;
 | 
				
			||||||
import java.util.Date;
 | 
					import java.util.Date;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@RestController
 | 
					@RestController
 | 
				
			||||||
@RequestMapping("admins/product_recommend")
 | 
					@RequestMapping("admins/coupon")
 | 
				
			||||||
@Api("优惠劵(码)模块")
 | 
					@Api("优惠劵(码)模块")
 | 
				
			||||||
public class AdminsCouponTemplateController {
 | 
					public class AdminsCouponTemplateController {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -33,8 +35,8 @@ public class AdminsCouponTemplateController {
 | 
				
			||||||
    @ApiImplicitParams({
 | 
					    @ApiImplicitParams({
 | 
				
			||||||
            @ApiImplicitParam(name = "title", value = "标题", required = true, example = "优惠劵牛逼"),
 | 
					            @ApiImplicitParam(name = "title", value = "标题", required = true, example = "优惠劵牛逼"),
 | 
				
			||||||
            @ApiImplicitParam(name = "description", value = "使用说明", example = "我只是描述"),
 | 
					            @ApiImplicitParam(name = "description", value = "使用说明", example = "我只是描述"),
 | 
				
			||||||
            @ApiImplicitParam(name = "quota", value = "每人限领个数", example = "null - 则表示不限制"),
 | 
					            @ApiImplicitParam(name = "quota", value = "每人限领个数", required = true),
 | 
				
			||||||
            @ApiImplicitParam(name = "stock", value = "剩余可用库存", example = "null - 则表示无限库存"),
 | 
					            @ApiImplicitParam(name = "total", value = "发行总量"),
 | 
				
			||||||
            @ApiImplicitParam(name = "priceAvailable", value = "是否设置满多少金额可用,单位:分", example = "0-不限制;大于0-多少金额可用"),
 | 
					            @ApiImplicitParam(name = "priceAvailable", value = "是否设置满多少金额可用,单位:分", example = "0-不限制;大于0-多少金额可用"),
 | 
				
			||||||
            @ApiImplicitParam(name = "rangeType", value = "可用范围的类型", required = true, example = "参见 CouponTemplateRangeTypeEnum 枚举"),
 | 
					            @ApiImplicitParam(name = "rangeType", value = "可用范围的类型", required = true, example = "参见 CouponTemplateRangeTypeEnum 枚举"),
 | 
				
			||||||
            @ApiImplicitParam(name = "rangeValues", value = "指定商品 / 分类列表,使用逗号分隔商品编号"),
 | 
					            @ApiImplicitParam(name = "rangeValues", value = "指定商品 / 分类列表,使用逗号分隔商品编号"),
 | 
				
			||||||
| 
						 | 
					@ -50,13 +52,15 @@ public class AdminsCouponTemplateController {
 | 
				
			||||||
    })
 | 
					    })
 | 
				
			||||||
    public CommonResult<AdminsCouponTemplateVO> add(@RequestParam(value = "title") String title,
 | 
					    public CommonResult<AdminsCouponTemplateVO> add(@RequestParam(value = "title") String title,
 | 
				
			||||||
                                                    @RequestParam(value = "description", required = false) String description,
 | 
					                                                    @RequestParam(value = "description", required = false) String description,
 | 
				
			||||||
                                                    @RequestParam(value = "quota", required = false) Integer quota,
 | 
					                                                    @RequestParam(value = "quota") Integer quota,
 | 
				
			||||||
                                                    @RequestParam(value = "stock", required = false) Integer stock,
 | 
					                                                    @RequestParam(value = "total", required = false) Integer total,
 | 
				
			||||||
                                                    @RequestParam(value = "priceAvailable") Integer priceAvailable,
 | 
					                                                    @RequestParam(value = "priceAvailable") Integer priceAvailable,
 | 
				
			||||||
                                                    @RequestParam(value = "rangeType") Integer rangeType,
 | 
					                                                    @RequestParam(value = "rangeType") Integer rangeType,
 | 
				
			||||||
                                                    @RequestParam(value = "rangeType", required = false) String rangeValues,
 | 
					                                                    @RequestParam(value = "rangeType", required = false) String rangeValues,
 | 
				
			||||||
                                                    @RequestParam(value = "dateType") Integer dateType,
 | 
					                                                    @RequestParam(value = "dateType") Integer dateType,
 | 
				
			||||||
 | 
					                                                    @DateTimeFormat(pattern = "yyyy-MM-dd")
 | 
				
			||||||
                                                    @RequestParam(value = "validStartTime", required = false) Date validStartTime,
 | 
					                                                    @RequestParam(value = "validStartTime", required = false) Date validStartTime,
 | 
				
			||||||
 | 
					                                                    @DateTimeFormat(pattern = "yyyy-MM-dd")
 | 
				
			||||||
                                                    @RequestParam(value = "validEndTime", required = false) Date validEndTime,
 | 
					                                                    @RequestParam(value = "validEndTime", required = false) Date validEndTime,
 | 
				
			||||||
                                                    @RequestParam(value = "fixedBeginTerm", required = false) Integer fixedBeginTerm,
 | 
					                                                    @RequestParam(value = "fixedBeginTerm", required = false) Integer fixedBeginTerm,
 | 
				
			||||||
                                                    @RequestParam(value = "fixedEndTerm", required = false) Integer fixedEndTerm,
 | 
					                                                    @RequestParam(value = "fixedEndTerm", required = false) Integer fixedEndTerm,
 | 
				
			||||||
| 
						 | 
					@ -65,9 +69,11 @@ public class AdminsCouponTemplateController {
 | 
				
			||||||
                                                    @RequestParam(value = "percentOff", required = false) Integer percentOff,
 | 
					                                                    @RequestParam(value = "percentOff", required = false) Integer percentOff,
 | 
				
			||||||
                                                    @RequestParam(value = "discountPriceLimit", required = false) Integer discountPriceLimit) {
 | 
					                                                    @RequestParam(value = "discountPriceLimit", required = false) Integer discountPriceLimit) {
 | 
				
			||||||
        // 创建 CouponCardTemplateAddDTO 对象
 | 
					        // 创建 CouponCardTemplateAddDTO 对象
 | 
				
			||||||
 | 
					        validStartTime = DateUtil.getDayBegin(validStartTime); // 开始时间,以当前 00:00:00 为准
 | 
				
			||||||
 | 
					        validEndTime = DateUtil.getDayBegin(validEndTime); // 结束时间,以当前 25:59:59 为准
 | 
				
			||||||
        CouponCardTemplateAddDTO couponCardTemplateAddDTO = new CouponCardTemplateAddDTO()
 | 
					        CouponCardTemplateAddDTO couponCardTemplateAddDTO = new CouponCardTemplateAddDTO()
 | 
				
			||||||
                .setTitle(title).setDescription(description)
 | 
					                .setTitle(title).setDescription(description)
 | 
				
			||||||
                .setQuota(quota).setStock(stock)
 | 
					                .setQuota(quota).setTotal(total)
 | 
				
			||||||
                .setPriceAvailable(priceAvailable).setRangeType(rangeType).setRangeValues(rangeValues)
 | 
					                .setPriceAvailable(priceAvailable).setRangeType(rangeType).setRangeValues(rangeValues)
 | 
				
			||||||
                .setDateType(dateType).setValidStartTime(validStartTime).setValidEndTime(validEndTime)
 | 
					                .setDateType(dateType).setValidStartTime(validStartTime).setValidEndTime(validEndTime)
 | 
				
			||||||
                .setFixedBeginTerm(fixedBeginTerm).setFixedEndTerm(fixedEndTerm)
 | 
					                .setFixedBeginTerm(fixedBeginTerm).setFixedEndTerm(fixedEndTerm)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -136,15 +136,6 @@ public class AdminsCouponTemplateVO {
 | 
				
			||||||
        return this;
 | 
					        return this;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public Integer getStock() {
 | 
					 | 
				
			||||||
        return stock;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public AdminsCouponTemplateVO setStock(Integer stock) {
 | 
					 | 
				
			||||||
        this.stock = stock;
 | 
					 | 
				
			||||||
        return this;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public Integer getPriceAvailable() {
 | 
					    public Integer getPriceAvailable() {
 | 
				
			||||||
        return priceAvailable;
 | 
					        return priceAvailable;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -19,7 +19,7 @@ public class CouponCardTemplateAddDTO {
 | 
				
			||||||
     * 标题
 | 
					     * 标题
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    @NotEmpty(message = "标题不能为空")
 | 
					    @NotEmpty(message = "标题不能为空")
 | 
				
			||||||
    @Length(min = 6, max = 16, message = "标题长度为 {min}-{max} 位")
 | 
					    @Length(min = 2, max = 16, message = "标题长度为 {min}-{max} 位")
 | 
				
			||||||
    private String title;
 | 
					    private String title;
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 使用说明
 | 
					     * 使用说明
 | 
				
			||||||
| 
						 | 
					@ -31,9 +31,8 @@ public class CouponCardTemplateAddDTO {
 | 
				
			||||||
    // ========== 领取规则 BEGIN ==========
 | 
					    // ========== 领取规则 BEGIN ==========
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 每人限领个数
 | 
					     * 每人限领个数
 | 
				
			||||||
     *
 | 
					 | 
				
			||||||
     * null - 则表示不限制
 | 
					 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
 | 
					    @NotNull(message = "每人限领个数不能为空")
 | 
				
			||||||
    @Min(value = 1, message = "每人限领个数最小为 {value}")
 | 
					    @Min(value = 1, message = "每人限领个数最小为 {value}")
 | 
				
			||||||
    private Integer quota;
 | 
					    private Integer quota;
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -82,11 +82,9 @@ public class CouponTemplateDO extends BaseDO {
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    private Integer quota;
 | 
					    private Integer quota;
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 剩余可用库存
 | 
					     * 发行总量
 | 
				
			||||||
     *
 | 
					 | 
				
			||||||
     * null - 则表示无限库存
 | 
					 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    private Integer stock;
 | 
					    private Integer total;
 | 
				
			||||||
    // ========== 领取规则 END ==========
 | 
					    // ========== 领取规则 END ==========
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // ========== 使用规则 BEGIN ==========
 | 
					    // ========== 使用规则 BEGIN ==========
 | 
				
			||||||
| 
						 | 
					@ -274,12 +272,12 @@ public class CouponTemplateDO extends BaseDO {
 | 
				
			||||||
        return this;
 | 
					        return this;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public Integer getStock() {
 | 
					    public Integer getTotal() {
 | 
				
			||||||
        return stock;
 | 
					        return total;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public CouponTemplateDO setStock(Integer stock) {
 | 
					    public CouponTemplateDO setTotal(Integer total) {
 | 
				
			||||||
        this.stock = stock;
 | 
					        this.total = total;
 | 
				
			||||||
        return this;
 | 
					        return this;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -49,8 +49,8 @@ public class CouponServiceImpl implements CouponService {
 | 
				
			||||||
        // 校验优惠类型
 | 
					        // 校验优惠类型
 | 
				
			||||||
        CommonResult<Boolean> checkCouponTemplateDateTypeResult = this.checkCouponTemplatePreferentialType(
 | 
					        CommonResult<Boolean> checkCouponTemplateDateTypeResult = this.checkCouponTemplatePreferentialType(
 | 
				
			||||||
                couponCardTemplateAddDTO.getPreferentialType(), couponCardTemplateAddDTO.getPercentOff(),
 | 
					                couponCardTemplateAddDTO.getPreferentialType(), couponCardTemplateAddDTO.getPercentOff(),
 | 
				
			||||||
                couponCardTemplateAddDTO.getPriceOff());
 | 
					                couponCardTemplateAddDTO.getPriceOff(), couponCardTemplateAddDTO.getPriceAvailable());
 | 
				
			||||||
        if (checkCouponCodeTemplateDateTypeResult.isError()) {
 | 
					        if (checkCouponTemplateDateTypeResult.isError()) {
 | 
				
			||||||
            return CommonResult.error(checkCouponTemplateDateTypeResult);
 | 
					            return CommonResult.error(checkCouponTemplateDateTypeResult);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        // 保存优惠劵模板到数据库
 | 
					        // 保存优惠劵模板到数据库
 | 
				
			||||||
| 
						 | 
					@ -58,6 +58,7 @@ public class CouponServiceImpl implements CouponService {
 | 
				
			||||||
                .setType(CouponTemplateTypeEnum.CARD.getValue())
 | 
					                .setType(CouponTemplateTypeEnum.CARD.getValue())
 | 
				
			||||||
                .setStatus(CouponTemplateStatusEnum.ENABLE.getValue())
 | 
					                .setStatus(CouponTemplateStatusEnum.ENABLE.getValue())
 | 
				
			||||||
                .setStatFetchNum(0);
 | 
					                .setStatFetchNum(0);
 | 
				
			||||||
 | 
					        template.setCreateTime(new Date());
 | 
				
			||||||
        couponTemplateMapper.insert(template);
 | 
					        couponTemplateMapper.insert(template);
 | 
				
			||||||
        // 返回成功
 | 
					        // 返回成功
 | 
				
			||||||
        return CommonResult.success(CouponTemplateConvert.INSTANCE.convert(template));
 | 
					        return CommonResult.success(CouponTemplateConvert.INSTANCE.convert(template));
 | 
				
			||||||
| 
						 | 
					@ -106,6 +107,9 @@ public class CouponServiceImpl implements CouponService {
 | 
				
			||||||
            if (validEndTime == null) {
 | 
					            if (validEndTime == null) {
 | 
				
			||||||
                return CommonResult.error(SysErrorCodeEnum.VALIDATION_REQUEST_PARAM_ERROR.getCode(), "生效结束时间不能为空");
 | 
					                return CommonResult.error(SysErrorCodeEnum.VALIDATION_REQUEST_PARAM_ERROR.getCode(), "生效结束时间不能为空");
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					            if (validStartTime.after(validEndTime)) {
 | 
				
			||||||
 | 
					                return CommonResult.error(SysErrorCodeEnum.VALIDATION_REQUEST_PARAM_ERROR.getCode(), "生效开始时间不能大于生效结束时间");
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
        } else if (CouponTemplateDateTypeEnum.FIXED_TERM.getValue().equals(dateType)) { // 领取日期
 | 
					        } else if (CouponTemplateDateTypeEnum.FIXED_TERM.getValue().equals(dateType)) { // 领取日期
 | 
				
			||||||
            if (fixedBeginTerm == null) {
 | 
					            if (fixedBeginTerm == null) {
 | 
				
			||||||
                return CommonResult.error(SysErrorCodeEnum.VALIDATION_REQUEST_PARAM_ERROR.getCode(), "领取日期开始时间不能为空");
 | 
					                return CommonResult.error(SysErrorCodeEnum.VALIDATION_REQUEST_PARAM_ERROR.getCode(), "领取日期开始时间不能为空");
 | 
				
			||||||
| 
						 | 
					@ -119,11 +123,15 @@ public class CouponServiceImpl implements CouponService {
 | 
				
			||||||
        return CommonResult.success(true);
 | 
					        return CommonResult.success(true);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private CommonResult<Boolean> checkCouponTemplatePreferentialType(Integer preferentialType, Integer percentOff, Integer priceOff) {
 | 
					    private CommonResult<Boolean> checkCouponTemplatePreferentialType(Integer preferentialType, Integer percentOff,
 | 
				
			||||||
 | 
					                                                                      Integer priceOff, Integer priceAvailable) {
 | 
				
			||||||
        if (CouponTemplatePreferentialTypeEnum.PRICE.getValue().equals(preferentialType)) {
 | 
					        if (CouponTemplatePreferentialTypeEnum.PRICE.getValue().equals(preferentialType)) {
 | 
				
			||||||
            if (priceOff == null) {
 | 
					            if (priceOff == null) {
 | 
				
			||||||
                return CommonResult.error(SysErrorCodeEnum.VALIDATION_REQUEST_PARAM_ERROR.getCode(), "优惠金额不能为空");
 | 
					                return CommonResult.error(SysErrorCodeEnum.VALIDATION_REQUEST_PARAM_ERROR.getCode(), "优惠金额不能为空");
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					            if (priceOff >= priceAvailable) {
 | 
				
			||||||
 | 
					                return CommonResult.error(SysErrorCodeEnum.VALIDATION_REQUEST_PARAM_ERROR.getCode(), "优惠金额不能d大于等于使用金额门槛");
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
        } else if (CouponTemplatePreferentialTypeEnum.DISCOUNT.getValue().equals(preferentialType)) {
 | 
					        } else if (CouponTemplatePreferentialTypeEnum.DISCOUNT.getValue().equals(preferentialType)) {
 | 
				
			||||||
            if (percentOff == null) {
 | 
					            if (percentOff == null) {
 | 
				
			||||||
                return CommonResult.error(SysErrorCodeEnum.VALIDATION_REQUEST_PARAM_ERROR.getCode(), "折扣百分比不能为空");
 | 
					                return CommonResult.error(SysErrorCodeEnum.VALIDATION_REQUEST_PARAM_ERROR.getCode(), "折扣百分比不能为空");
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4,7 +4,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <sql id="FIELDS">
 | 
					    <sql id="FIELDS">
 | 
				
			||||||
        id, title, description, type, code_type,
 | 
					        id, title, description, type, code_type,
 | 
				
			||||||
        status, quota, stock, price_available, range_type,
 | 
					        status, quota, total, price_available, range_type,
 | 
				
			||||||
        range_values, date_type, valid_start_time, valid_end_time, fixed_term,
 | 
					        range_values, date_type, valid_start_time, valid_end_time, fixed_term,
 | 
				
			||||||
        preferential_type, percent_off, price_off, discount_price_limit, stat_fetch_num,
 | 
					        preferential_type, percent_off, price_off, discount_price_limit, stat_fetch_num,
 | 
				
			||||||
        create_time
 | 
					        create_time
 | 
				
			||||||
| 
						 | 
					@ -100,8 +100,8 @@
 | 
				
			||||||
            <if test="quota != null">
 | 
					            <if test="quota != null">
 | 
				
			||||||
                quota = #{quota},
 | 
					                quota = #{quota},
 | 
				
			||||||
            </if>
 | 
					            </if>
 | 
				
			||||||
            <if test="stock != null">
 | 
					            <if test="total != null">
 | 
				
			||||||
                stock = #{stock},
 | 
					                total = #{total},
 | 
				
			||||||
            </if>
 | 
					            </if>
 | 
				
			||||||
            <if test="priceAvailable != null">
 | 
					            <if test="priceAvailable != null">
 | 
				
			||||||
                price_available = #{priceAvailable},
 | 
					                price_available = #{priceAvailable},
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue