Merge remote-tracking branch 'origin/test' into test
This commit is contained in:
commit
5b6c1a24cd
|
|
@ -0,0 +1,34 @@
|
||||||
|
package com.czg.controller.user;
|
||||||
|
|
||||||
|
import com.czg.market.entity.MkLimitTimeDiscount;
|
||||||
|
import com.czg.market.service.MkLimitTimeDiscountService;
|
||||||
|
import com.czg.resp.CzgResult;
|
||||||
|
import jakarta.annotation.Resource;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 限时折扣
|
||||||
|
*
|
||||||
|
* @author ww
|
||||||
|
*/
|
||||||
|
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/user/limitTimeDiscount")
|
||||||
|
public class ULimitTimeDiscountController {
|
||||||
|
@Resource
|
||||||
|
private MkLimitTimeDiscountService limitTimeDiscountService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取限时折扣
|
||||||
|
*/
|
||||||
|
@GetMapping
|
||||||
|
public CzgResult<MkLimitTimeDiscount> getActivity(@RequestParam Long shopId) {
|
||||||
|
MkLimitTimeDiscount data = limitTimeDiscountService.getLimitTimeDiscountByShopId(shopId);
|
||||||
|
return CzgResult.success(data);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,133 @@
|
||||||
|
|
||||||
|
package com.czg.market.dto;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson2.annotation.JSONField;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.sql.Time;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 限时折扣 实体类。
|
||||||
|
*
|
||||||
|
* @author ww
|
||||||
|
* @since 2025-10-21
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
@Accessors(chain = true)
|
||||||
|
public class MkLimitTimeDiscountDTO implements Serializable {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 自增主键
|
||||||
|
*/
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 店铺ID
|
||||||
|
*/
|
||||||
|
private Long shopId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* only-仅本店 all全部 /custom 指定
|
||||||
|
*/
|
||||||
|
private String useShopType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 可用门店
|
||||||
|
*/
|
||||||
|
private String useShops;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 有效期开始时间
|
||||||
|
*/
|
||||||
|
private String validStartTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 有效期结束时间
|
||||||
|
*/
|
||||||
|
private String validEndTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 可用周期,示例:周一,周二,周三,周四,周五,周六,周日
|
||||||
|
*/
|
||||||
|
private String useDays;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 可用时间段类型:all-全时段,custom-指定时段
|
||||||
|
*/
|
||||||
|
private String useTimeType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 可用开始时间
|
||||||
|
*/
|
||||||
|
private Time useStartTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 可用结束时间
|
||||||
|
*/
|
||||||
|
private Time useEndTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 可使用类型:堂食 dine-in 外带 take-out 外卖 take-away 配送 post
|
||||||
|
* 示例 dine-in,take-out,take-away,post
|
||||||
|
*/
|
||||||
|
private String useType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 折扣% 范围1-99
|
||||||
|
*/
|
||||||
|
private Integer discountRate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 数字越小级别越高
|
||||||
|
*/
|
||||||
|
private Integer sort;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 折扣优先级 limit-time/vip-price
|
||||||
|
*/
|
||||||
|
private String discountPriority;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 参与商品 1全部 2部分
|
||||||
|
*/
|
||||||
|
private Integer foodType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 参与商品
|
||||||
|
*/
|
||||||
|
private String foods;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 状态:1未开始,2进行中,3已结束 -1当前时间不可用
|
||||||
|
*/
|
||||||
|
private Integer status;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建时间
|
||||||
|
*/
|
||||||
|
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
private LocalDateTime createTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新时间
|
||||||
|
*/
|
||||||
|
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
private LocalDateTime updateTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 0否1是
|
||||||
|
*/
|
||||||
|
private Boolean isDel;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,142 @@
|
||||||
|
package com.czg.market.entity;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson2.annotation.JSONField;
|
||||||
|
import com.mybatisflex.annotation.Column;
|
||||||
|
import com.mybatisflex.annotation.Id;
|
||||||
|
import com.mybatisflex.annotation.KeyType;
|
||||||
|
import com.mybatisflex.annotation.Table;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.time.LocalTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 限时折扣 实体类。
|
||||||
|
*
|
||||||
|
* @author ww
|
||||||
|
* @since 2025-10-21
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@Builder
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
@Table("mk_limit_time_discount")
|
||||||
|
public class MkLimitTimeDiscount implements Serializable {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 自增主键
|
||||||
|
*/
|
||||||
|
@Id(keyType = KeyType.Auto)
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 店铺ID
|
||||||
|
*/
|
||||||
|
private Long shopId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* only-仅本店 all全部 /custom 指定
|
||||||
|
*/
|
||||||
|
private String useShopType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 可用门店
|
||||||
|
*/
|
||||||
|
private String useShops;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 有效期开始时间
|
||||||
|
*/
|
||||||
|
@JSONField(format = "yyyy-MM-dd")
|
||||||
|
private LocalDate validStartTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 有效期结束时间
|
||||||
|
*/
|
||||||
|
@JSONField(format = "yyyy-MM-dd")
|
||||||
|
private LocalDate validEndTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 可用周期,如:周一,周二,周三,周四,周五,周六,周日
|
||||||
|
*/
|
||||||
|
private String useDays;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 可用时间段类型:all-全时段,custom-指定时段
|
||||||
|
*/
|
||||||
|
private String useTimeType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 可用开始时间
|
||||||
|
*/
|
||||||
|
@JSONField(format = "HH:mm")
|
||||||
|
private LocalTime useStartTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 可用结束时间
|
||||||
|
*/
|
||||||
|
@JSONField(format = "HH:mm")
|
||||||
|
private LocalTime useEndTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 可使用类型:堂食 dine-in 外带 take-out 外卖 take-away 配送 post
|
||||||
|
*/
|
||||||
|
private String useType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 折扣% 范围1-99
|
||||||
|
*/
|
||||||
|
private Integer discountRate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 数字越小级别越高
|
||||||
|
*/
|
||||||
|
private Integer sort;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 折扣优先级 limit-time/vip-price
|
||||||
|
*/
|
||||||
|
private String discountPriority;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 参与商品 1全部 2部分
|
||||||
|
*/
|
||||||
|
private Integer foodType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 参与商品
|
||||||
|
*/
|
||||||
|
private String foods;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 状态:1未开始,2进行中,3已结束 -1当前时间不可用
|
||||||
|
*/
|
||||||
|
private Integer status;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建时间
|
||||||
|
*/
|
||||||
|
@Column(onInsertValue = "now()")
|
||||||
|
private LocalDateTime createTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新时间
|
||||||
|
*/
|
||||||
|
@Column(onInsertValue = "now()", onUpdateValue = "now()")
|
||||||
|
private LocalDateTime updateTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 0否1是
|
||||||
|
*/
|
||||||
|
private Boolean isDel;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,25 @@
|
||||||
|
package com.czg.market.service;
|
||||||
|
|
||||||
|
import com.czg.TimeQueryParam;
|
||||||
|
import com.czg.market.dto.MkLimitTimeDiscountDTO;
|
||||||
|
import com.mybatisflex.core.paginate.Page;
|
||||||
|
import com.mybatisflex.core.service.IService;
|
||||||
|
import com.czg.market.entity.MkLimitTimeDiscount;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 限时折扣 服务层。
|
||||||
|
*
|
||||||
|
* @author ww
|
||||||
|
* @since 2025-10-21
|
||||||
|
*/
|
||||||
|
public interface MkLimitTimeDiscountService extends IService<MkLimitTimeDiscount> {
|
||||||
|
Page<MkLimitTimeDiscountDTO> getLimitTimeDiscountPage(TimeQueryParam param, Long shopId);
|
||||||
|
|
||||||
|
MkLimitTimeDiscount getLimitTimeDiscountByShopId(Long shopId);
|
||||||
|
|
||||||
|
void addLimitTimeDiscount(MkLimitTimeDiscountDTO param);
|
||||||
|
|
||||||
|
void updateLimitTimeDiscountById(MkLimitTimeDiscountDTO param);
|
||||||
|
|
||||||
|
void deleteLimitTimeDiscount(Long id);
|
||||||
|
}
|
||||||
|
|
@ -11,5 +11,12 @@ import com.czg.market.entity.MkDiscountActivity;
|
||||||
*/
|
*/
|
||||||
public interface MkDiscountActivityMapper extends BaseMapper<MkDiscountActivity> {
|
public interface MkDiscountActivityMapper extends BaseMapper<MkDiscountActivity> {
|
||||||
|
|
||||||
MkDiscountActivity selectOneByShopId(Long shopId);
|
/**
|
||||||
|
* 根据店铺ID查询限时折扣
|
||||||
|
*
|
||||||
|
* @param shopId 店铺ID
|
||||||
|
* @param useDay 使用日期 周几
|
||||||
|
* @return 限时折扣
|
||||||
|
*/
|
||||||
|
MkDiscountActivity selectOneByShopId(Long shopId, String useDay);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,21 @@
|
||||||
|
package com.czg.service.market.mapper;
|
||||||
|
|
||||||
|
import com.mybatisflex.core.BaseMapper;
|
||||||
|
import com.czg.market.entity.MkLimitTimeDiscount;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 限时折扣 映射层。
|
||||||
|
*
|
||||||
|
* @author ww
|
||||||
|
* @since 2025-10-21
|
||||||
|
*/
|
||||||
|
public interface MkLimitTimeDiscountMapper extends BaseMapper<MkLimitTimeDiscount> {
|
||||||
|
/**
|
||||||
|
* 根据店铺ID查询限时折扣
|
||||||
|
*
|
||||||
|
* @param shopId 店铺ID
|
||||||
|
* @param useDay 使用日期 周几
|
||||||
|
* @return 限时折扣
|
||||||
|
*/
|
||||||
|
MkLimitTimeDiscount selectOneByShopId(Long mainShopId, Long shopId, String useDay);
|
||||||
|
}
|
||||||
|
|
@ -2,7 +2,6 @@ package com.czg.service.market.service.impl;
|
||||||
|
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import cn.hutool.core.date.DateUtil;
|
|
||||||
import com.czg.TimeQueryParam;
|
import com.czg.TimeQueryParam;
|
||||||
import com.czg.account.entity.ShopInfo;
|
import com.czg.account.entity.ShopInfo;
|
||||||
import com.czg.account.service.ShopInfoService;
|
import com.czg.account.service.ShopInfoService;
|
||||||
|
|
@ -23,15 +22,10 @@ import jakarta.annotation.Resource;
|
||||||
import org.apache.dubbo.config.annotation.DubboReference;
|
import org.apache.dubbo.config.annotation.DubboReference;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.time.DayOfWeek;
|
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.time.format.DateTimeParseException;
|
import java.time.format.DateTimeParseException;
|
||||||
import java.time.format.TextStyle;
|
|
||||||
import java.util.Date;
|
|
||||||
import java.util.Locale;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 商家满减活动表 服务层实现。
|
* 商家满减活动表 服务层实现。
|
||||||
|
|
@ -93,13 +87,10 @@ public class MkDiscountActivityServiceImpl extends ServiceImpl<MkDiscountActivit
|
||||||
if (shopInfo.getIsEnableDiscount() == null || shopInfo.getIsEnableDiscount() == 0) {
|
if (shopInfo.getIsEnableDiscount() == null || shopInfo.getIsEnableDiscount() == 0) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
MkDiscountActivity activity = mapper.selectOneByShopId(shopId);
|
MkDiscountActivity activity = mapper.selectOneByShopId(shopId,CzgStrUtils.getStrWeek());
|
||||||
if (activity == null) {
|
if (activity == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
if (!activity.getUseDays().contains(CzgStrUtils.getStrWeek())) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
MkDiscountActivityDTO activityDTO = BeanUtil.toBean(activity, MkDiscountActivityDTO.class);
|
MkDiscountActivityDTO activityDTO = BeanUtil.toBean(activity, MkDiscountActivityDTO.class);
|
||||||
activityDTO.setThresholds(thresholdMapper.selectListByQuery(
|
activityDTO.setThresholds(thresholdMapper.selectListByQuery(
|
||||||
new QueryWrapper()
|
new QueryWrapper()
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,136 @@
|
||||||
|
package com.czg.service.market.service.impl;
|
||||||
|
|
||||||
|
import com.czg.TimeQueryParam;
|
||||||
|
import com.czg.account.entity.ShopInfo;
|
||||||
|
import com.czg.account.service.ShopInfoService;
|
||||||
|
import com.czg.exception.CzgException;
|
||||||
|
import com.czg.market.dto.MkLimitTimeDiscountDTO;
|
||||||
|
import com.czg.market.entity.MkLimitTimeDiscount;
|
||||||
|
import com.czg.market.service.MkLimitTimeDiscountService;
|
||||||
|
import com.czg.service.market.mapper.MkLimitTimeDiscountMapper;
|
||||||
|
import com.czg.utils.AssertUtil;
|
||||||
|
import com.czg.utils.CzgStrUtils;
|
||||||
|
import com.czg.utils.PageUtil;
|
||||||
|
import com.mybatisflex.core.paginate.Page;
|
||||||
|
import com.mybatisflex.core.query.QueryWrapper;
|
||||||
|
import com.mybatisflex.spring.service.impl.ServiceImpl;
|
||||||
|
import org.apache.dubbo.config.annotation.DubboReference;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.time.format.DateTimeFormatter;
|
||||||
|
import java.time.format.DateTimeParseException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 限时折扣 服务层实现。
|
||||||
|
*
|
||||||
|
* @author ww
|
||||||
|
* @since 2025-10-21
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class MkLimitTimeDiscountServiceImpl extends ServiceImpl<MkLimitTimeDiscountMapper, MkLimitTimeDiscount> implements MkLimitTimeDiscountService {
|
||||||
|
|
||||||
|
@DubboReference
|
||||||
|
private ShopInfoService shopInfoService;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Page<MkLimitTimeDiscountDTO> getLimitTimeDiscountPage(TimeQueryParam param, Long shopId) {
|
||||||
|
Long mainShopId = shopInfoService.getMainIdByShopId(shopId);
|
||||||
|
QueryWrapper queryWrapper = new QueryWrapper();
|
||||||
|
queryWrapper.eq(MkLimitTimeDiscount::getShopId, mainShopId)
|
||||||
|
.eq(MkLimitTimeDiscount::getIsDel, 0)
|
||||||
|
.lt(MkLimitTimeDiscount::getValidStartTime, CzgStrUtils.getStrOrNull(param.getStartTime()))
|
||||||
|
.le(MkLimitTimeDiscount::getValidEndTime, CzgStrUtils.getStrOrNull(param.getEndTime()))
|
||||||
|
.orderBy(MkLimitTimeDiscount::getSort).desc()
|
||||||
|
.orderBy(MkLimitTimeDiscount::getUpdateTime).desc();
|
||||||
|
return pageAs(PageUtil.buildPage(), queryWrapper, MkLimitTimeDiscountDTO.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MkLimitTimeDiscount getLimitTimeDiscountByShopId(Long shopId) {
|
||||||
|
ShopInfo shopInfo = shopInfoService.getById(shopId);
|
||||||
|
AssertUtil.isNull(shopInfo, "店铺不存在");
|
||||||
|
if (shopInfo.getIsEnableDiscount() == null || shopInfo.getIsEnableDiscount() == 0) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
Long mainShopId = shopInfoService.getMainIdByShopId(shopId);
|
||||||
|
return mapper.selectOneByShopId(mainShopId, shopId, CzgStrUtils.getStrWeek());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addLimitTimeDiscount(MkLimitTimeDiscountDTO param) {
|
||||||
|
// validateAndInitStatus(param);
|
||||||
|
// if ("only".equals(param.getUseShopType())) {
|
||||||
|
// param.setUseShops(param.getShopId().toString());
|
||||||
|
// } else if ("custom".equals(param.getUseShopType())) {
|
||||||
|
// AssertUtil.isBlank(param.getUseShops(), "请配置可用门店");
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// if(param.getFoodType() == 2){
|
||||||
|
// AssertUtil.isBlank(param.getFoods(), "请配置参与商品");
|
||||||
|
// }
|
||||||
|
// if(param.getFoodType() == 2){
|
||||||
|
// AssertUtil.isBlank(param.getFoods(), "请配置参与商品");
|
||||||
|
// }
|
||||||
|
// MkLimitTimeDiscount activity = BeanUtil.toBean(param, MkLimitTimeDiscount.class);
|
||||||
|
// save(activity);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateLimitTimeDiscountById(MkLimitTimeDiscountDTO param) {
|
||||||
|
// if (CollUtil.isEmpty(param.getThresholds())) {
|
||||||
|
// throw new IllegalArgumentException("活动必须配置满减阈值");
|
||||||
|
// }
|
||||||
|
// validateAndInitStatus(param);
|
||||||
|
// MkDiscountActivity activity = BeanUtil.toBean(param, MkDiscountActivity.class);
|
||||||
|
// updateById(activity, true);
|
||||||
|
// thresholdMapper.deleteByQuery(
|
||||||
|
// new QueryWrapper().eq(MkDiscountThreshold::getActivityId, activity.getId())
|
||||||
|
// );
|
||||||
|
// for (MkDiscountThreshold threshold : param.getThresholds()) {
|
||||||
|
// threshold.setActivityId(activity.getId());
|
||||||
|
// thresholdMapper.insert(threshold);
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deleteLimitTimeDiscount(Long id) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 校验时间有效性并初始化状态
|
||||||
|
*/
|
||||||
|
private void validateAndInitStatus(MkLimitTimeDiscountDTO param) {
|
||||||
|
LocalDate startDate;
|
||||||
|
LocalDate endDate;
|
||||||
|
LocalDate currentDate = LocalDate.now();
|
||||||
|
|
||||||
|
try {
|
||||||
|
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
||||||
|
startDate = LocalDate.parse(param.getValidStartTime(), formatter);
|
||||||
|
endDate = LocalDate.parse(param.getValidEndTime(), formatter);
|
||||||
|
} catch (DateTimeParseException e) {
|
||||||
|
throw new IllegalArgumentException("时间格式不正确,请使用yyyy-MM-dd格式");
|
||||||
|
}
|
||||||
|
// 校验开始时间不能晚于结束时间
|
||||||
|
if (currentDate.isAfter(endDate)) {
|
||||||
|
throw new CzgException("有效期结束时间不能早于当前时间");
|
||||||
|
}
|
||||||
|
// 校验开始时间不能晚于结束时间
|
||||||
|
if (startDate.isAfter(endDate)) {
|
||||||
|
throw new CzgException("有效期开始时间不能晚于结束时间");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 根据时间初始化状态
|
||||||
|
if (currentDate.isBefore(startDate)) {
|
||||||
|
// 当前日期在开始日期之前-未开始
|
||||||
|
param.setStatus(1);
|
||||||
|
} else {
|
||||||
|
// 这里先默认设置为进行中,具体由定时任务根据时段更新
|
||||||
|
param.setStatus(2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -9,8 +9,11 @@
|
||||||
FROM mk_discount_activity
|
FROM mk_discount_activity
|
||||||
WHERE shop_id = #{shopId}
|
WHERE shop_id = #{shopId}
|
||||||
AND is_del = 0
|
AND is_del = 0
|
||||||
|
AND status = 2
|
||||||
AND NOW() BETWEEN valid_start_time AND valid_end_time
|
AND NOW() BETWEEN valid_start_time AND valid_end_time
|
||||||
AND (use_time_type = 'all' OR (use_time_type = 'custom' AND TIME(NOW()) BETWEEN use_start_time AND use_end_time))
|
AND (use_time_type = 'all' OR
|
||||||
|
(use_time_type = 'custom' AND TIME(NOW()) BETWEEN use_start_time AND use_end_time))
|
||||||
|
AND use_days LIKE CONCAT('%', #{useDay}, '%')
|
||||||
ORDER BY sort DESC,
|
ORDER BY sort DESC,
|
||||||
update_time DESC,
|
update_time DESC,
|
||||||
create_time DESC
|
create_time DESC
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
<?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.czg.service.market.mapper.MkLimitTimeDiscountMapper">
|
||||||
|
|
||||||
|
<select id="selectOneByShopId" resultType="com.czg.market.entity.MkLimitTimeDiscount">
|
||||||
|
SELECT *
|
||||||
|
FROM mk_limit_time_discount
|
||||||
|
WHERE shop_id = #{mainShopId}
|
||||||
|
AND (
|
||||||
|
(use_shop_type = 'all')
|
||||||
|
OR (use_shop_type = 'only' AND #{shopId} = shop_id)
|
||||||
|
OR (use_shop_type = 'custom' AND FIND_IN_SET(#{shopId}, use_shops) > 0)
|
||||||
|
)
|
||||||
|
AND is_del = 0
|
||||||
|
AND status = 2
|
||||||
|
AND NOW() BETWEEN valid_start_time AND valid_end_time
|
||||||
|
AND (use_time_type = 'all' OR
|
||||||
|
(use_time_type = 'custom' AND TIME(NOW()) BETWEEN use_start_time AND use_end_time))
|
||||||
|
AND use_days LIKE CONCAT('%', #{useDay}, '%')
|
||||||
|
ORDER BY sort,
|
||||||
|
update_time DESC,
|
||||||
|
create_time DESC
|
||||||
|
LIMIT 1;
|
||||||
|
</select>
|
||||||
|
</mapper>
|
||||||
Loading…
Reference in New Issue