feat: 增加根据促销活动搜索商品索引。增加获取优惠券领取记录。增加优惠券关闭后同时作废所有会员领取的优惠券。
This commit is contained in:
parent
0eec40673f
commit
8ddba831f0
@ -325,7 +325,7 @@ public abstract class BaseElasticsearchService {
|
||||
" }\n" +
|
||||
" },\n" +
|
||||
" \"promotionMapJson\": {\n" +
|
||||
" \"type\": \"text\"\n" +
|
||||
" \"type\": \"keyword\"\n" +
|
||||
" },\n" +
|
||||
" \"thumbnail\": {\n" +
|
||||
" \"type\": \"text\",\n" +
|
||||
|
@ -27,8 +27,18 @@ public class MemberCouponSearchParams extends BasePromotionsSearchParams impleme
|
||||
|
||||
private static final String PRICE_COLUMN = "price";
|
||||
|
||||
@ApiModelProperty(value = "优惠券id")
|
||||
private String couponId;
|
||||
|
||||
@ApiModelProperty(value = "优惠券名称")
|
||||
private String couponName;
|
||||
|
||||
@ApiModelProperty(value = "会员id")
|
||||
private String memberId;
|
||||
|
||||
@ApiModelProperty(value = "会员名称")
|
||||
private String memberName;
|
||||
|
||||
/**
|
||||
* POINT("打折"), PRICE("减免现金");
|
||||
*
|
||||
@ -62,6 +72,9 @@ public class MemberCouponSearchParams extends BasePromotionsSearchParams impleme
|
||||
@Override
|
||||
public <T> QueryWrapper<T> queryWrapper() {
|
||||
QueryWrapper<T> queryWrapper = super.queryWrapper();
|
||||
queryWrapper.eq(CharSequenceUtil.isNotEmpty(couponId), "coupon_id", couponId);
|
||||
queryWrapper.like(CharSequenceUtil.isNotEmpty(couponName), "coupon_name", couponName);
|
||||
queryWrapper.like(CharSequenceUtil.isNotEmpty(memberName), "member_name", memberName);
|
||||
if (CharSequenceUtil.isNotEmpty(couponType)) {
|
||||
queryWrapper.eq("coupon_type", CouponTypeEnum.valueOf(couponType).name());
|
||||
}
|
||||
|
@ -1,7 +1,13 @@
|
||||
package cn.lili.modules.promotion.mapper;
|
||||
|
||||
import cn.lili.modules.promotion.entity.dos.MemberCoupon;
|
||||
import cn.lili.modules.promotion.entity.vos.MemberCouponVO;
|
||||
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Constants;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.apache.ibatis.annotations.Select;
|
||||
|
||||
/**
|
||||
* 会员优惠券数据处理层
|
||||
@ -11,4 +17,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
*/
|
||||
public interface MemberCouponMapper extends BaseMapper<MemberCoupon> {
|
||||
|
||||
@Select("SELECT mc.*,c.coupon_name FROM li_member_coupon mc LEFT JOIN li_coupon c ON mc.coupon_id = c.id ${ew.customSqlSegment}")
|
||||
Page<MemberCouponVO> getMemberCoupons(Page<MemberCoupon> page, @Param(Constants.WRAPPER) Wrapper<MemberCouponVO> queryWrapper);
|
||||
|
||||
}
|
@ -3,7 +3,9 @@ package cn.lili.modules.promotion.service;
|
||||
import cn.lili.common.vo.PageVO;
|
||||
import cn.lili.modules.promotion.entity.dos.MemberCoupon;
|
||||
import cn.lili.modules.promotion.entity.dto.search.MemberCouponSearchParams;
|
||||
import cn.lili.modules.promotion.entity.vos.MemberCouponVO;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
import java.util.List;
|
||||
@ -154,4 +156,13 @@ public interface MemberCouponService extends IService<MemberCoupon> {
|
||||
*/
|
||||
void voidCoupon(String couponId);
|
||||
|
||||
/**
|
||||
* 获取会员优惠券列表
|
||||
*
|
||||
* @param page 分页参数
|
||||
* @param param 查询参数
|
||||
* @return 会员优惠券列表
|
||||
*/
|
||||
Page<MemberCouponVO> getMemberCouponsPage(Page<MemberCoupon> page, MemberCouponSearchParams param);
|
||||
|
||||
}
|
@ -166,6 +166,13 @@ public class CouponServiceImpl extends AbstractPromotionsServiceImpl<CouponMappe
|
||||
this.update(updateWrapper);
|
||||
}
|
||||
|
||||
// 关闭优惠券,删除相关会员优惠券和券活动
|
||||
if (startTime == null && endTime == null) {
|
||||
//删除优惠券信息
|
||||
this.memberCouponService.closeMemberCoupon(ids);
|
||||
//删除优惠券活动关联优惠券
|
||||
this.couponActivityItemService.removeByCouponId(ids);
|
||||
}
|
||||
return super.updateStatus(ids, startTime, endTime);
|
||||
}
|
||||
|
||||
|
@ -14,6 +14,7 @@ import cn.lili.modules.promotion.entity.enums.CouponGetEnum;
|
||||
import cn.lili.modules.promotion.entity.enums.MemberCouponStatusEnum;
|
||||
import cn.lili.modules.promotion.entity.enums.PromotionsScopeTypeEnum;
|
||||
import cn.lili.modules.promotion.entity.enums.PromotionsStatusEnum;
|
||||
import cn.lili.modules.promotion.entity.vos.MemberCouponVO;
|
||||
import cn.lili.modules.promotion.mapper.MemberCouponMapper;
|
||||
import cn.lili.modules.promotion.service.CouponService;
|
||||
import cn.lili.modules.promotion.service.MemberCouponService;
|
||||
@ -302,6 +303,27 @@ public class MemberCouponServiceImpl extends ServiceImpl<MemberCouponMapper, Mem
|
||||
this.update(updateWrapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<MemberCouponVO> getMemberCouponsPage(Page<MemberCoupon> page, MemberCouponSearchParams param) {
|
||||
QueryWrapper<MemberCouponVO> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq(CharSequenceUtil.isNotEmpty(param.getMemberId()), "mc.member_id", param.getMemberId());
|
||||
queryWrapper.eq(CharSequenceUtil.isNotEmpty(param.getStoreId()), "c.store_id", param.getStoreId());
|
||||
queryWrapper.like(CharSequenceUtil.isNotEmpty(param.getMemberName()), "mc.member_name", param.getMemberName());
|
||||
queryWrapper.eq(CharSequenceUtil.isNotEmpty(param.getCouponId()), "mc.coupon_id", param.getCouponId());
|
||||
queryWrapper.like(CharSequenceUtil.isNotEmpty(param.getCouponName()), "c.coupon_name", param.getCouponName());
|
||||
queryWrapper.eq(CharSequenceUtil.isNotEmpty(param.getGetType()), "mc.get_type", param.getGetType());
|
||||
queryWrapper.eq(CharSequenceUtil.isNotEmpty(param.getScopeType()), "mc.scope_type", param.getPromotionStatus());
|
||||
queryWrapper.eq(CharSequenceUtil.isNotEmpty(param.getCouponType()), "mc.coupon_type", param.getCouponType());
|
||||
queryWrapper.eq(CharSequenceUtil.isNotEmpty(param.getMemberCouponStatus()), "mc.member_coupon_status", param.getMemberCouponStatus());
|
||||
if (param.getStartTime() != null) {
|
||||
queryWrapper.ge("start_time", new Date(param.getStartTime()));
|
||||
}
|
||||
if (param.getEndTime() != null) {
|
||||
queryWrapper.le("end_time", new Date(param.getEndTime()));
|
||||
}
|
||||
return this.baseMapper.getMemberCoupons(page, queryWrapper);
|
||||
}
|
||||
|
||||
/**
|
||||
* 清除无效的会员优惠券
|
||||
*
|
||||
|
@ -1,7 +1,7 @@
|
||||
package cn.lili.modules.search.entity.dto;
|
||||
|
||||
import cn.hutool.core.text.CharSequenceUtil;
|
||||
import cn.lili.common.utils.RegularUtil;
|
||||
import cn.lili.common.utils.StringUtils;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
@ -49,9 +49,18 @@ public class EsGoodsSearchDTO {
|
||||
@ApiModelProperty("当前商品skuId,根据当前浏览的商品信息来给用户推荐可能喜欢的商品")
|
||||
private String currentGoodsId;
|
||||
|
||||
/**
|
||||
* @see cn.lili.common.enums.PromotionTypeEnum
|
||||
*/
|
||||
@ApiModelProperty("促销活动类型")
|
||||
private String promotionType;
|
||||
|
||||
@ApiModelProperty(value = "促销活动id")
|
||||
private String promotionsId;
|
||||
|
||||
//过滤搜索关键字
|
||||
public String getKeyword() {
|
||||
if (StringUtils.isNotEmpty(keyword)) {
|
||||
if (CharSequenceUtil.isNotEmpty(keyword)) {
|
||||
RegularUtil.replace(this.keyword);
|
||||
}
|
||||
return keyword;
|
||||
|
@ -469,6 +469,10 @@ public class EsGoodsSearchServiceImpl implements EsGoodsSearchService {
|
||||
if (CharSequenceUtil.isNotEmpty(searchDTO.getProp())) {
|
||||
this.propSearch(filterBuilder, searchDTO);
|
||||
}
|
||||
// 促销活动判定
|
||||
if (CharSequenceUtil.isNotEmpty(searchDTO.getPromotionsId()) && CharSequenceUtil.isNotEmpty(searchDTO.getPromotionType())) {
|
||||
filterBuilder.must(QueryBuilders.wildcardQuery("promotionMapJson", "*" + searchDTO.getPromotionType() + "-" + searchDTO.getPromotionsId() + "*"));
|
||||
}
|
||||
//价格区间判定
|
||||
if (CharSequenceUtil.isNotEmpty(searchDTO.getPrice())) {
|
||||
String[] prices = searchDTO.getPrice().split("_");
|
||||
|
@ -10,7 +10,9 @@ import cn.lili.common.vo.ResultMessage;
|
||||
import cn.lili.modules.promotion.entity.dos.Coupon;
|
||||
import cn.lili.modules.promotion.entity.dos.MemberCoupon;
|
||||
import cn.lili.modules.promotion.entity.dto.search.CouponSearchParams;
|
||||
import cn.lili.modules.promotion.entity.dto.search.MemberCouponSearchParams;
|
||||
import cn.lili.modules.promotion.entity.vos.CouponVO;
|
||||
import cn.lili.modules.promotion.entity.vos.MemberCouponVO;
|
||||
import cn.lili.modules.promotion.service.CouponService;
|
||||
import cn.lili.modules.promotion.service.MemberCouponService;
|
||||
import cn.lili.modules.promotion.tools.PromotionTools;
|
||||
@ -111,6 +113,14 @@ public class CouponManagerController {
|
||||
|
||||
}
|
||||
|
||||
@ApiOperation(value = "获取优惠券领取详情")
|
||||
@GetMapping(value = "/received")
|
||||
public ResultMessage<IPage<MemberCouponVO>> getReceiveByPage(MemberCouponSearchParams searchParams,
|
||||
PageVO page) {
|
||||
IPage<MemberCouponVO> result = memberCouponService.getMemberCouponsPage(PageUtil.initPage(page), searchParams);
|
||||
return ResultUtil.data(result);
|
||||
}
|
||||
|
||||
private void setStoreInfo(CouponVO couponVO) {
|
||||
AuthUser currentUser = UserContext.getCurrentUser();
|
||||
if (currentUser == null) {
|
||||
|
@ -10,8 +10,12 @@ import cn.lili.common.vo.PageVO;
|
||||
import cn.lili.common.vo.ResultMessage;
|
||||
import cn.lili.modules.promotion.entity.dos.Coupon;
|
||||
import cn.lili.modules.promotion.entity.dto.search.CouponSearchParams;
|
||||
import cn.lili.modules.promotion.entity.dto.search.MemberCouponSearchParams;
|
||||
import cn.lili.modules.promotion.entity.vos.CouponVO;
|
||||
import cn.lili.modules.promotion.entity.vos.MemberCouponVO;
|
||||
import cn.lili.modules.promotion.service.CouponService;
|
||||
import cn.lili.modules.promotion.service.MemberCouponService;
|
||||
import cn.lili.mybatis.util.PageUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import io.swagger.annotations.Api;
|
||||
@ -38,6 +42,10 @@ public class CouponStoreController {
|
||||
@Autowired
|
||||
private CouponService couponService;
|
||||
|
||||
|
||||
@Autowired
|
||||
private MemberCouponService memberCouponService;
|
||||
|
||||
@GetMapping
|
||||
@ApiOperation(value = "获取优惠券列表")
|
||||
public ResultMessage<IPage<CouponVO>> getCouponList(CouponSearchParams queryParam, PageVO page) {
|
||||
@ -91,6 +99,15 @@ public class CouponStoreController {
|
||||
return couponService.removePromotions(filterIds) ? ResultUtil.success() : ResultUtil.error(ResultCode.COUPON_DELETE_ERROR);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "获取优惠券领取详情")
|
||||
@GetMapping(value = "/received")
|
||||
public ResultMessage<IPage<MemberCouponVO>> getReceiveByPage(MemberCouponSearchParams searchParams,
|
||||
PageVO page) {
|
||||
searchParams.setStoreId(Objects.requireNonNull(UserContext.getCurrentUser()).getStoreId());
|
||||
IPage<MemberCouponVO> result = memberCouponService.getMemberCouponsPage(PageUtil.initPage(page), searchParams);
|
||||
return ResultUtil.data(result);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "修改优惠券状态")
|
||||
@PutMapping("/status")
|
||||
public ResultMessage<Object> updateCouponStatus(String couponIds, Long startTime, Long endTime) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user