!74 重构优化促销模块。移除促销相关的mongo
Merge pull request !74 from OceansDeep/feature/pg
This commit is contained in:
commit
b55f5ab6ae
38
DB/li_promotions.sql
Normal file
38
DB/li_promotions.sql
Normal file
@ -0,0 +1,38 @@
|
||||
|
||||
ALTER TABLE li_coupon DROP COLUMN promotion_status;
|
||||
|
||||
ALTER TABLE li_coupon_activity DROP COLUMN promotion_status;
|
||||
ALTER TABLE li_coupon_activity ADD `scope_id` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT '范围关联的ID';
|
||||
ALTER TABLE li_coupon_activity ADD `scope_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '关联范围类型';
|
||||
|
||||
ALTER TABLE li_full_discount DROP COLUMN promotion_status;
|
||||
ALTER TABLE li_full_discount ADD `scope_id` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT '范围关联的ID';
|
||||
ALTER TABLE li_full_discount ADD `scope_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '关联范围类型';
|
||||
|
||||
ALTER TABLE li_kanjia_activity_goods DROP COLUMN promotion_status;
|
||||
ALTER TABLE li_kanjia_activity_goods ADD `scope_id` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT '范围关联的ID';
|
||||
ALTER TABLE li_kanjia_activity_goods ADD `scope_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '关联范围类型';
|
||||
ALTER TABLE li_kanjia_activity_goods ADD `goods_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL;
|
||||
|
||||
ALTER TABLE li_pintuan DROP COLUMN promotion_status;
|
||||
ALTER TABLE li_pintuan ADD `scope_id` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT '范围关联的ID';
|
||||
ALTER TABLE li_pintuan ADD `scope_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '关联范围类型';
|
||||
|
||||
ALTER TABLE li_points_goods DROP COLUMN promotion_status;
|
||||
ALTER TABLE li_points_goods ADD `scope_id` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT '范围关联的ID';
|
||||
ALTER TABLE li_points_goods ADD `scope_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '关联范围类型';
|
||||
ALTER TABLE li_points_goods ADD `original_price` double(10,2) DEFAULT NULL COMMENT '原价';
|
||||
ALTER TABLE li_points_goods ADD `thumbnail` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '缩略图';
|
||||
ALTER TABLE li_points_goods ADD `goods_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '商品编号';
|
||||
ALTER TABLE li_points_goods ADD `goods_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '货品名称';
|
||||
|
||||
ALTER TABLE li_promotion_goods DROP COLUMN promotion_status;
|
||||
ALTER TABLE li_promotion_goods ADD `scope_id` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT '范围关联的ID';
|
||||
ALTER TABLE li_promotion_goods ADD `scope_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '关联范围类型';
|
||||
ALTER TABLE li_promotion_goods ADD `original_price` double(10,2) DEFAULT NULL COMMENT '原价';
|
||||
ALTER TABLE li_promotion_goods ADD `points` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '兑换积分';
|
||||
ALTER TABLE li_promotion_goods ADD `goods_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '商品编号';
|
||||
|
||||
ALTER TABLE li_seckill DROP COLUMN promotion_status;
|
||||
ALTER TABLE li_seckill ADD `scope_id` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT '范围关联的ID';
|
||||
ALTER TABLE li_seckill ADD `scope_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '关联范围类型';
|
@ -1,12 +1,12 @@
|
||||
package cn.lili.controller.member;
|
||||
|
||||
import cn.lili.common.enums.ResultUtil;
|
||||
import cn.lili.common.security.OperationalJudgment;
|
||||
import cn.lili.common.security.context.UserContext;
|
||||
import cn.lili.common.vo.PageVO;
|
||||
import cn.lili.common.vo.ResultMessage;
|
||||
import cn.lili.modules.member.entity.dos.MemberAddress;
|
||||
import cn.lili.modules.member.service.MemberAddressService;
|
||||
import cn.lili.common.security.OperationalJudgment;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
|
@ -1,8 +1,10 @@
|
||||
package cn.lili.controller.order;
|
||||
|
||||
import cn.lili.common.enums.ResultUtil;
|
||||
import cn.lili.common.security.OperationalJudgment;
|
||||
import cn.lili.common.vo.ResultMessage;
|
||||
import cn.lili.modules.order.aftersale.entity.dos.AfterSale;
|
||||
import cn.lili.modules.order.aftersale.entity.dos.AfterSaleLog;
|
||||
import cn.lili.modules.order.aftersale.entity.dos.AfterSaleReason;
|
||||
import cn.lili.modules.order.aftersale.entity.dto.AfterSaleDTO;
|
||||
import cn.lili.modules.order.aftersale.entity.vo.AfterSaleApplyVO;
|
||||
@ -11,9 +13,7 @@ import cn.lili.modules.order.aftersale.entity.vo.AfterSaleVO;
|
||||
import cn.lili.modules.order.aftersale.service.AfterSaleLogService;
|
||||
import cn.lili.modules.order.aftersale.service.AfterSaleReasonService;
|
||||
import cn.lili.modules.order.aftersale.service.AfterSaleService;
|
||||
import cn.lili.modules.order.aftersale.entity.dos.AfterSaleLog;
|
||||
import cn.lili.modules.store.entity.dto.StoreAfterSaleAddressDTO;
|
||||
import cn.lili.common.security.OperationalJudgment;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
|
@ -1,8 +1,8 @@
|
||||
package cn.lili.controller.order;
|
||||
|
||||
import cn.lili.common.enums.ResultCode;
|
||||
import cn.lili.common.exception.ServiceException;
|
||||
import cn.lili.common.enums.ResultUtil;
|
||||
import cn.lili.common.exception.ServiceException;
|
||||
import cn.lili.common.vo.ResultMessage;
|
||||
import cn.lili.modules.order.cart.entity.dto.TradeDTO;
|
||||
import cn.lili.modules.order.cart.entity.enums.CartTypeEnum;
|
||||
|
@ -4,6 +4,7 @@ import cn.lili.common.enums.ResultCode;
|
||||
import cn.lili.common.enums.ResultUtil;
|
||||
import cn.lili.common.exception.ServiceException;
|
||||
import cn.lili.common.security.AuthUser;
|
||||
import cn.lili.common.security.OperationalJudgment;
|
||||
import cn.lili.common.security.context.UserContext;
|
||||
import cn.lili.common.vo.ResultMessage;
|
||||
import cn.lili.modules.order.order.entity.dos.Order;
|
||||
@ -12,7 +13,6 @@ import cn.lili.modules.order.order.entity.enums.OrderStatusEnum;
|
||||
import cn.lili.modules.order.order.entity.vo.OrderDetailVO;
|
||||
import cn.lili.modules.order.order.entity.vo.OrderSimpleVO;
|
||||
import cn.lili.modules.order.order.service.OrderService;
|
||||
import cn.lili.common.security.OperationalJudgment;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
|
@ -2,6 +2,7 @@ package cn.lili.controller.order;
|
||||
|
||||
import cn.lili.common.enums.ResultUtil;
|
||||
import cn.lili.common.security.AuthUser;
|
||||
import cn.lili.common.security.OperationalJudgment;
|
||||
import cn.lili.common.security.context.UserContext;
|
||||
import cn.lili.common.vo.PageVO;
|
||||
import cn.lili.common.vo.ResultMessage;
|
||||
@ -13,7 +14,6 @@ import cn.lili.modules.order.order.entity.vo.OrderComplaintSearchParams;
|
||||
import cn.lili.modules.order.order.entity.vo.OrderComplaintVO;
|
||||
import cn.lili.modules.order.order.service.OrderComplaintCommunicationService;
|
||||
import cn.lili.modules.order.order.service.OrderComplaintService;
|
||||
import cn.lili.common.security.OperationalJudgment;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
|
@ -2,16 +2,16 @@ package cn.lili.controller.passport.connect;
|
||||
|
||||
|
||||
import cn.lili.common.enums.ResultCode;
|
||||
import cn.lili.common.enums.ResultUtil;
|
||||
import cn.lili.common.exception.ServiceException;
|
||||
import cn.lili.common.security.token.Token;
|
||||
import cn.lili.common.enums.ResultUtil;
|
||||
import cn.lili.common.utils.UuidUtils;
|
||||
import cn.lili.common.vo.ResultMessage;
|
||||
import cn.lili.modules.connect.entity.dto.AuthCallback;
|
||||
import cn.lili.modules.connect.entity.dto.ConnectAuthUser;
|
||||
import cn.lili.modules.connect.request.AuthRequest;
|
||||
import cn.lili.modules.connect.service.ConnectService;
|
||||
import cn.lili.modules.connect.util.ConnectUtil;
|
||||
import cn.lili.common.utils.UuidUtils;
|
||||
import cn.lili.modules.member.service.MemberService;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
|
@ -1,12 +1,12 @@
|
||||
package cn.lili.controller.passport.connect;
|
||||
|
||||
import cn.lili.common.security.token.Token;
|
||||
import cn.lili.common.enums.ResultUtil;
|
||||
import cn.lili.common.security.token.Token;
|
||||
import cn.lili.common.vo.ResultMessage;
|
||||
import cn.lili.modules.connect.entity.dto.WechatMPLoginParams;
|
||||
import cn.lili.modules.connect.service.ConnectService;
|
||||
import cn.lili.modules.wechat.entity.dos.WechatMPMessage;
|
||||
import cn.lili.modules.message.service.ShortLinkService;
|
||||
import cn.lili.modules.wechat.entity.dos.WechatMPMessage;
|
||||
import cn.lili.modules.wechat.service.WechatMPMessageService;
|
||||
import cn.lili.modules.wechat.util.WechatMpCodeUtil;
|
||||
import io.swagger.annotations.Api;
|
||||
|
@ -1,16 +1,18 @@
|
||||
package cn.lili.controller.member;
|
||||
package cn.lili.controller.promotion;
|
||||
|
||||
import cn.lili.common.enums.ResultUtil;
|
||||
import cn.lili.common.security.AuthUser;
|
||||
import cn.lili.common.security.OperationalJudgment;
|
||||
import cn.lili.common.security.context.UserContext;
|
||||
import cn.lili.common.vo.PageVO;
|
||||
import cn.lili.common.vo.ResultMessage;
|
||||
import cn.lili.modules.promotion.entity.dos.MemberCoupon;
|
||||
import cn.lili.modules.promotion.entity.enums.CouponGetEnum;
|
||||
import cn.lili.modules.promotion.entity.enums.PromotionsStatusEnum;
|
||||
import cn.lili.modules.promotion.entity.vos.CouponSearchParams;
|
||||
import cn.lili.modules.promotion.entity.vos.CouponVO;
|
||||
import cn.lili.modules.promotion.service.CouponService;
|
||||
import cn.lili.modules.promotion.service.MemberCouponService;
|
||||
import cn.lili.common.security.OperationalJudgment;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
@ -51,7 +53,9 @@ public class CouponBuyerController {
|
||||
@GetMapping
|
||||
@ApiOperation(value = "获取可领取优惠券列表")
|
||||
public ResultMessage<IPage<CouponVO>> getCouponList(CouponSearchParams queryParam, PageVO page) {
|
||||
IPage<CouponVO> canUseCoupons = couponService.getCanReceiveCoupons(queryParam, page);
|
||||
queryParam.setPromotionStatus(PromotionsStatusEnum.START.name());
|
||||
queryParam.setGetType(CouponGetEnum.FREE.name());
|
||||
IPage<CouponVO> canUseCoupons = couponService.pageVOFindAll(queryParam, page);
|
||||
return ResultUtil.data(canUseCoupons);
|
||||
}
|
||||
|
||||
@ -84,8 +88,7 @@ public class CouponBuyerController {
|
||||
@GetMapping("/receive/{couponId}")
|
||||
public ResultMessage<Object> receiveCoupon(@NotNull(message = "优惠券ID不能为空") @PathVariable("couponId") String couponId) {
|
||||
AuthUser currentUser = Objects.requireNonNull(UserContext.getCurrentUser());
|
||||
memberCouponService.checkCouponLimit(couponId, currentUser.getId());
|
||||
memberCouponService.receiveCoupon(couponId, currentUser.getId(), currentUser.getNickName());
|
||||
memberCouponService.receiveBuyerCoupon(couponId, currentUser.getId(), currentUser.getNickName());
|
||||
return ResultUtil.success();
|
||||
}
|
||||
|
@ -9,7 +9,7 @@ import cn.lili.modules.promotion.entity.dos.KanjiaActivity;
|
||||
import cn.lili.modules.promotion.entity.dos.KanjiaActivityLog;
|
||||
import cn.lili.modules.promotion.entity.dto.KanJiaActivityLogQuery;
|
||||
import cn.lili.modules.promotion.entity.dto.KanjiaActivityQuery;
|
||||
import cn.lili.modules.promotion.entity.enums.PromotionStatusEnum;
|
||||
import cn.lili.modules.promotion.entity.enums.PromotionsStatusEnum;
|
||||
import cn.lili.modules.promotion.entity.vos.kanjia.*;
|
||||
import cn.lili.modules.promotion.service.KanjiaActivityGoodsService;
|
||||
import cn.lili.modules.promotion.service.KanjiaActivityLogService;
|
||||
@ -52,7 +52,7 @@ public class KanjiaGoodsActivityBuyerController {
|
||||
@ApiOperation(value = "分页获取砍价商品")
|
||||
public ResultMessage<IPage<KanjiaActivityGoodsListVO>> kanjiaActivityGoodsPage(KanjiaActivityGoodsParams kanjiaActivityGoodsParams, PageVO page) {
|
||||
// 会员端查询到的肯定是已经开始的活动商品
|
||||
kanjiaActivityGoodsParams.setPromotionStatus(PromotionStatusEnum.START.name());
|
||||
kanjiaActivityGoodsParams.setPromotionStatus(PromotionsStatusEnum.START.name());
|
||||
kanjiaActivityGoodsParams.setStartTime(System.currentTimeMillis());
|
||||
kanjiaActivityGoodsParams.setEndTime(System.currentTimeMillis());
|
||||
return ResultUtil.data(kanJiaActivityGoodsService.kanjiaGoodsVOPage(kanjiaActivityGoodsParams, page));
|
||||
|
@ -1,12 +1,11 @@
|
||||
package cn.lili.controller.promotion;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.lili.common.enums.PromotionTypeEnum;
|
||||
import cn.lili.common.enums.ResultUtil;
|
||||
import cn.lili.common.vo.PageVO;
|
||||
import cn.lili.common.vo.ResultMessage;
|
||||
import cn.lili.modules.promotion.entity.dto.PromotionGoodsDTO;
|
||||
import cn.lili.modules.promotion.entity.enums.PromotionStatusEnum;
|
||||
import cn.lili.common.enums.PromotionTypeEnum;
|
||||
import cn.lili.modules.promotion.entity.dos.PromotionGoods;
|
||||
import cn.lili.modules.promotion.entity.enums.PromotionsStatusEnum;
|
||||
import cn.lili.modules.promotion.entity.vos.PintuanMemberVO;
|
||||
import cn.lili.modules.promotion.entity.vos.PintuanShareVO;
|
||||
import cn.lili.modules.promotion.entity.vos.PromotionGoodsSearchParams;
|
||||
@ -40,14 +39,13 @@ public class PintuanBuyerController {
|
||||
|
||||
@ApiOperation(value = "获取拼团商品")
|
||||
@GetMapping
|
||||
public ResultMessage<IPage<PromotionGoodsDTO>> getPintuanCategory(String goodsName, String categoryPath, PageVO pageVo) {
|
||||
public ResultMessage<IPage<PromotionGoods>> getPintuanCategory(String goodsName, String categoryPath, PageVO pageVo) {
|
||||
PromotionGoodsSearchParams searchParams = new PromotionGoodsSearchParams();
|
||||
searchParams.setGoodsName(goodsName);
|
||||
searchParams.setPromotionType(PromotionTypeEnum.PINTUAN.name());
|
||||
searchParams.setPromotionStatus(PromotionStatusEnum.START.name());
|
||||
searchParams.setPromotionStatus(PromotionsStatusEnum.START.name());
|
||||
searchParams.setCategoryPath(categoryPath);
|
||||
searchParams.setEndTime(DateUtil.date().getTime());
|
||||
return ResultUtil.data(promotionGoodsService.getPromotionGoods(searchParams, pageVo));
|
||||
return ResultUtil.data(promotionGoodsService.pageFindAll(searchParams, pageVo));
|
||||
}
|
||||
|
||||
|
||||
|
@ -3,6 +3,7 @@ package cn.lili.controller.promotion;
|
||||
import cn.lili.common.enums.ResultUtil;
|
||||
import cn.lili.common.vo.PageVO;
|
||||
import cn.lili.common.vo.ResultMessage;
|
||||
import cn.lili.modules.promotion.entity.dos.PointsGoods;
|
||||
import cn.lili.modules.promotion.entity.dos.PointsGoodsCategory;
|
||||
import cn.lili.modules.promotion.entity.vos.PointsGoodsSearchParams;
|
||||
import cn.lili.modules.promotion.entity.vos.PointsGoodsVO;
|
||||
@ -35,8 +36,8 @@ public class PointsGoodsBuyerController {
|
||||
|
||||
@GetMapping
|
||||
@ApiOperation(value = "分页获取积分商品")
|
||||
public ResultMessage<IPage<PointsGoodsVO>> getPointsGoodsPage(PointsGoodsSearchParams searchParams, PageVO page) {
|
||||
IPage<PointsGoodsVO> pointsGoodsByPage = pointsGoodsService.getPointsGoodsByPage(searchParams, page);
|
||||
public ResultMessage<IPage<PointsGoods>> getPointsGoodsPage(PointsGoodsSearchParams searchParams, PageVO page) {
|
||||
IPage<PointsGoods> pointsGoodsByPage = pointsGoodsService.pageFindAll(searchParams, page);
|
||||
return ResultUtil.data(pointsGoodsByPage);
|
||||
}
|
||||
|
||||
|
@ -5,12 +5,12 @@ import cn.lili.common.security.context.UserContext;
|
||||
import cn.lili.common.vo.PageVO;
|
||||
import cn.lili.common.vo.ResultMessage;
|
||||
import cn.lili.modules.goods.entity.vos.StoreGoodsLabelVO;
|
||||
import cn.lili.modules.goods.service.StoreGoodsLabelService;
|
||||
import cn.lili.modules.store.entity.dto.StoreBankDTO;
|
||||
import cn.lili.modules.store.entity.dto.StoreCompanyDTO;
|
||||
import cn.lili.modules.store.entity.dto.StoreOtherInfoDTO;
|
||||
import cn.lili.modules.store.entity.vos.*;
|
||||
import cn.lili.modules.store.service.StoreDetailService;
|
||||
import cn.lili.modules.goods.service.StoreGoodsLabelService;
|
||||
import cn.lili.modules.store.service.StoreService;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import io.swagger.annotations.Api;
|
||||
|
@ -7,12 +7,12 @@ import cn.lili.common.security.AuthUser;
|
||||
import cn.lili.common.security.context.UserContext;
|
||||
import cn.lili.common.vo.ResultMessage;
|
||||
import cn.lili.modules.member.entity.dos.Member;
|
||||
import cn.lili.modules.wallet.entity.dos.MemberWallet;
|
||||
import cn.lili.modules.wallet.entity.vo.MemberWalletVO;
|
||||
import cn.lili.modules.member.service.MemberService;
|
||||
import cn.lili.modules.wallet.service.MemberWalletService;
|
||||
import cn.lili.modules.verification.entity.enums.VerificationEnums;
|
||||
import cn.lili.modules.verification.service.VerificationService;
|
||||
import cn.lili.modules.wallet.entity.dos.MemberWallet;
|
||||
import cn.lili.modules.wallet.entity.vo.MemberWalletVO;
|
||||
import cn.lili.modules.wallet.service.MemberWalletService;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
|
@ -4,8 +4,8 @@ import cn.lili.common.enums.ResultUtil;
|
||||
import cn.lili.common.security.context.UserContext;
|
||||
import cn.lili.common.vo.PageVO;
|
||||
import cn.lili.common.vo.ResultMessage;
|
||||
import cn.lili.modules.wallet.entity.dos.Recharge;
|
||||
import cn.lili.modules.order.trade.entity.vo.RechargeQueryVO;
|
||||
import cn.lili.modules.wallet.entity.dos.Recharge;
|
||||
import cn.lili.modules.wallet.service.RechargeService;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import io.swagger.annotations.Api;
|
||||
|
@ -2,11 +2,11 @@ package cn.lili.controller.common;
|
||||
|
||||
import cn.lili.cache.Cache;
|
||||
import cn.lili.common.enums.ResultCode;
|
||||
import cn.lili.common.enums.ResultUtil;
|
||||
import cn.lili.common.exception.ServiceException;
|
||||
import cn.lili.common.security.AuthUser;
|
||||
import cn.lili.common.security.context.UserContext;
|
||||
import cn.lili.common.security.enums.UserEnums;
|
||||
import cn.lili.common.enums.ResultUtil;
|
||||
import cn.lili.common.vo.PageVO;
|
||||
import cn.lili.common.vo.ResultMessage;
|
||||
import cn.lili.common.vo.SearchVO;
|
||||
|
@ -1,7 +1,7 @@
|
||||
package cn.lili.controller.common;
|
||||
|
||||
import cn.lili.common.utils.IpHelper;
|
||||
import cn.lili.common.enums.ResultUtil;
|
||||
import cn.lili.common.utils.IpHelper;
|
||||
import cn.lili.common.vo.ResultMessage;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
|
@ -2,22 +2,22 @@ package cn.lili.event.impl;
|
||||
|
||||
import cn.lili.event.*;
|
||||
import cn.lili.modules.member.entity.dto.MemberPointMessage;
|
||||
import cn.lili.modules.wallet.entity.dto.MemberWithdrawalMessage;
|
||||
import cn.lili.modules.wallet.entity.enums.MemberWithdrawalDestinationEnum;
|
||||
import cn.lili.modules.member.entity.enums.PointTypeEnum;
|
||||
import cn.lili.modules.wallet.entity.enums.WithdrawStatusEnum;
|
||||
import cn.lili.modules.message.entity.dto.NoticeMessageDTO;
|
||||
import cn.lili.modules.message.entity.enums.NoticeMessageNodeEnum;
|
||||
import cn.lili.modules.message.entity.enums.NoticeMessageParameterEnum;
|
||||
import cn.lili.modules.message.service.NoticeMessageService;
|
||||
import cn.lili.modules.order.cart.entity.dto.TradeDTO;
|
||||
import cn.lili.modules.order.aftersale.entity.dos.AfterSale;
|
||||
import cn.lili.modules.order.cart.entity.dto.TradeDTO;
|
||||
import cn.lili.modules.order.order.entity.dto.OrderMessage;
|
||||
import cn.lili.modules.order.order.entity.enums.OrderPromotionTypeEnum;
|
||||
import cn.lili.modules.order.order.entity.vo.OrderDetailVO;
|
||||
import cn.lili.modules.order.order.service.OrderService;
|
||||
import cn.lili.modules.order.trade.entity.enums.AfterSaleStatusEnum;
|
||||
import cn.lili.modules.order.trade.entity.enums.AfterSaleTypeEnum;
|
||||
import cn.lili.modules.wallet.entity.dto.MemberWithdrawalMessage;
|
||||
import cn.lili.modules.wallet.entity.enums.MemberWithdrawalDestinationEnum;
|
||||
import cn.lili.modules.wallet.entity.enums.WithdrawStatusEnum;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
|
@ -4,7 +4,7 @@ import cn.lili.event.MemberRegisterEvent;
|
||||
import cn.lili.modules.member.entity.dos.Member;
|
||||
import cn.lili.modules.promotion.entity.dos.CouponActivity;
|
||||
import cn.lili.modules.promotion.entity.enums.CouponActivityTypeEnum;
|
||||
import cn.lili.modules.promotion.entity.enums.PromotionStatusEnum;
|
||||
import cn.lili.modules.promotion.entity.enums.PromotionsStatusEnum;
|
||||
import cn.lili.modules.promotion.service.CouponActivityService;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@ -34,7 +34,7 @@ public class RegisteredCouponActivityExecute implements MemberRegisterEvent {
|
||||
public void memberRegister(Member member) {
|
||||
List<CouponActivity> couponActivities = couponActivityService.list(new LambdaQueryWrapper<CouponActivity>()
|
||||
.eq(CouponActivity::getCouponActivityType, CouponActivityTypeEnum.REGISTERED.name())
|
||||
.eq(CouponActivity::getPromotionStatus, PromotionStatusEnum.START.name()));
|
||||
.eq(CouponActivity::getPromotionStatus, PromotionsStatusEnum.START.name()));
|
||||
couponActivityService.registered(couponActivities, member);
|
||||
|
||||
}
|
||||
|
@ -15,6 +15,7 @@ import cn.lili.modules.promotion.entity.dos.KanjiaActivity;
|
||||
import cn.lili.modules.promotion.entity.dos.PromotionGoods;
|
||||
import cn.lili.modules.promotion.entity.dto.KanjiaActivityGoodsDTO;
|
||||
import cn.lili.modules.promotion.entity.vos.PointsGoodsVO;
|
||||
import cn.lili.modules.promotion.entity.vos.PromotionGoodsSearchParams;
|
||||
import cn.lili.modules.promotion.service.*;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@ -202,10 +203,10 @@ public class StockUpdateExecute implements OrderStatusChangeEvent {
|
||||
|
||||
switch (promotionTypeEnum) {
|
||||
case KANJIA:
|
||||
cache.put(cacheKey, kanjiaActivityGoodsService.getKanJiaGoodsBySku(orderItem.getSkuId()).getStock().intValue());
|
||||
cache.put(cacheKey, kanjiaActivityGoodsService.getKanjiaGoodsBySkuId(orderItem.getSkuId()).getStock());
|
||||
return;
|
||||
case POINTS_GOODS:
|
||||
cache.put(cacheKey, pointsGoodsService.getPointsGoodsVOByMongo(orderItem.getSkuId()).getActiveStock().intValue());
|
||||
cache.put(cacheKey, pointsGoodsService.getPointsGoodsDetailBySkuId(orderItem.getSkuId()).getActiveStock());
|
||||
return;
|
||||
case SECKILL:
|
||||
case PINTUAN:
|
||||
@ -303,14 +304,20 @@ public class StockUpdateExecute implements OrderStatusChangeEvent {
|
||||
pointsGoodsService.updateById(pointsGoodsVO);
|
||||
this.mongoTemplate.save(pointsGoodsVO);
|
||||
} else {
|
||||
PromotionGoods pGoods = promotionGoodsService.getPromotionGoods(promotionTypeEnum, orderItem.getPromotionId(), orderItem.getSkuId());
|
||||
PromotionGoodsSearchParams searchParams = new PromotionGoodsSearchParams();
|
||||
searchParams.setPromotionStatus(promotionTypeEnum.name());
|
||||
searchParams.setPromotionId(orderItem.getPromotionId());
|
||||
searchParams.setSkuId(orderItem.getSkuId());
|
||||
PromotionGoods pGoods = promotionGoodsService.getPromotionsGoods(searchParams);
|
||||
//记录需要更新的促销库存信息
|
||||
promotionKey.add(
|
||||
PromotionGoodsService.getPromotionGoodsStockCacheKey(
|
||||
promotionTypeEnum,
|
||||
orderItem.getPromotionId(), orderItem.getSkuId())
|
||||
);
|
||||
promotionGoods.add(pGoods);
|
||||
if (pGoods != null) {
|
||||
promotionGoods.add(pGoods);
|
||||
}
|
||||
}
|
||||
}
|
||||
goodsSkus.add(goodsSku);
|
||||
|
@ -2,10 +2,10 @@ package cn.lili.event.impl;
|
||||
|
||||
import cn.lili.event.OrderStatusChangeEvent;
|
||||
import cn.lili.event.TradeEvent;
|
||||
import cn.lili.modules.wechat.util.WechatMessageUtil;
|
||||
import cn.lili.modules.order.cart.entity.dto.TradeDTO;
|
||||
import cn.lili.modules.order.order.entity.dto.OrderMessage;
|
||||
import cn.lili.modules.order.order.entity.vo.OrderVO;
|
||||
import cn.lili.modules.wechat.util.WechatMessageUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
@ -1,8 +1,5 @@
|
||||
package cn.lili.init;
|
||||
|
||||
import cn.lili.cache.Cache;
|
||||
import cn.lili.cache.CachePrefix;
|
||||
import cn.lili.common.sensitive.SensitiveWordsFilter;
|
||||
import cn.lili.modules.system.service.SensitiveWordsService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@ -10,8 +7,6 @@ import org.springframework.boot.ApplicationArguments;
|
||||
import org.springframework.boot.ApplicationRunner;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* SensitiveWordsInit
|
||||
*
|
||||
|
@ -1,9 +1,9 @@
|
||||
package cn.lili.listener;
|
||||
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import cn.lili.rocketmq.tags.AfterSaleTagsEnum;
|
||||
import cn.lili.event.AfterSaleStatusChangeEvent;
|
||||
import cn.lili.modules.order.aftersale.entity.dos.AfterSale;
|
||||
import cn.lili.rocketmq.tags.AfterSaleTagsEnum;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.rocketmq.common.message.MessageExt;
|
||||
import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
|
||||
|
@ -3,38 +3,33 @@ package cn.lili.listener;
|
||||
import cn.hutool.core.map.MapUtil;
|
||||
import cn.hutool.core.text.CharSequenceUtil;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.util.ClassLoaderUtil;
|
||||
import cn.hutool.json.JSONObject;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import cn.lili.common.properties.RocketmqCustomProperties;
|
||||
import cn.lili.event.GoodsCommentCompleteEvent;
|
||||
import cn.lili.modules.distribution.entity.dos.DistributionGoods;
|
||||
import cn.lili.modules.distribution.entity.dos.DistributionSelectedGoods;
|
||||
import cn.lili.modules.distribution.service.DistributionGoodsService;
|
||||
import cn.lili.modules.distribution.service.DistributionSelectedGoodsService;
|
||||
import cn.lili.modules.goods.entity.dos.Brand;
|
||||
import cn.lili.modules.goods.entity.dos.Category;
|
||||
import cn.lili.modules.goods.entity.dos.Goods;
|
||||
import cn.lili.modules.goods.entity.dos.GoodsSku;
|
||||
import cn.lili.modules.goods.entity.dos.*;
|
||||
import cn.lili.modules.goods.entity.dto.GoodsCompleteMessage;
|
||||
import cn.lili.modules.goods.entity.dto.GoodsParamsDTO;
|
||||
import cn.lili.modules.goods.entity.dto.GoodsSearchParams;
|
||||
import cn.lili.modules.goods.entity.enums.GoodsAuthEnum;
|
||||
import cn.lili.modules.goods.entity.enums.GoodsStatusEnum;
|
||||
import cn.lili.modules.goods.service.BrandService;
|
||||
import cn.lili.modules.goods.service.CategoryService;
|
||||
import cn.lili.modules.goods.service.GoodsService;
|
||||
import cn.lili.modules.goods.service.GoodsSkuService;
|
||||
import cn.lili.modules.goods.service.*;
|
||||
import cn.lili.modules.member.entity.dos.FootPrint;
|
||||
import cn.lili.modules.member.entity.dos.MemberEvaluation;
|
||||
import cn.lili.modules.member.entity.dto.CollectionDTO;
|
||||
import cn.lili.modules.member.service.FootprintService;
|
||||
import cn.lili.modules.member.service.GoodsCollectionService;
|
||||
import cn.lili.modules.promotion.entity.dos.PromotionGoods;
|
||||
import cn.lili.modules.promotion.entity.dto.BasePromotions;
|
||||
import cn.lili.modules.promotion.entity.enums.PromotionsScopeTypeEnum;
|
||||
import cn.lili.modules.promotion.entity.vos.PromotionGoodsSearchParams;
|
||||
import cn.lili.modules.promotion.service.PromotionGoodsService;
|
||||
import cn.lili.modules.search.entity.dos.EsGoodsIndex;
|
||||
import cn.lili.modules.search.service.EsGoodsIndexService;
|
||||
import cn.lili.modules.search.utils.EsIndexUtil;
|
||||
import cn.lili.modules.goods.entity.dos.StoreGoodsLabel;
|
||||
import cn.lili.modules.goods.service.StoreGoodsLabelService;
|
||||
import cn.lili.modules.store.service.StoreService;
|
||||
import cn.lili.rocketmq.RocketmqSendCallbackBuilder;
|
||||
import cn.lili.rocketmq.tags.GoodsTagsEnum;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
@ -42,14 +37,11 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.rocketmq.common.message.MessageExt;
|
||||
import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
|
||||
import org.apache.rocketmq.spring.core.RocketMQListener;
|
||||
import org.apache.rocketmq.spring.core.RocketMQTemplate;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 商品消息
|
||||
@ -123,16 +115,8 @@ public class GoodsMessageListener implements RocketMQListener<MessageExt> {
|
||||
@Autowired
|
||||
private StoreGoodsLabelService storeGoodsLabelService;
|
||||
|
||||
/**
|
||||
* rocketMq
|
||||
*/
|
||||
@Autowired
|
||||
private RocketMQTemplate rocketMQTemplate;
|
||||
/**
|
||||
* rocketMq配置
|
||||
*/
|
||||
@Autowired
|
||||
private RocketmqCustomProperties rocketmqCustomProperties;
|
||||
private PromotionGoodsService promotionGoodsService;
|
||||
|
||||
@Override
|
||||
public void onMessage(MessageExt messageExt) {
|
||||
@ -153,6 +137,12 @@ public class GoodsMessageListener implements RocketMQListener<MessageExt> {
|
||||
log.error("生成商品索引事件执行异常,商品信息 {}", new String(messageExt.getBody()));
|
||||
}
|
||||
break;
|
||||
case UPDATE_GOODS_INDEX_PROMOTIONS:
|
||||
this.updateGoodsIndexPromotions(new String(messageExt.getBody()));
|
||||
break;
|
||||
case DELETE_GOODS_INDEX_PROMOTIONS:
|
||||
this.goodsIndexService.deleteEsGoodsPromotionByPromotionId(null, new String(messageExt.getBody()));
|
||||
break;
|
||||
case UPDATE_GOODS_INDEX:
|
||||
try {
|
||||
String goodsIdsJsonStr = new String(messageExt.getBody());
|
||||
@ -223,6 +213,32 @@ public class GoodsMessageListener implements RocketMQListener<MessageExt> {
|
||||
}
|
||||
}
|
||||
|
||||
private void updateGoodsIndexPromotions(String promotionsJsonStr) {
|
||||
try {
|
||||
log.info("更新商品索引促销信息: {}", promotionsJsonStr);
|
||||
JSONObject jsonObject = JSONUtil.parseObj(promotionsJsonStr);
|
||||
BasePromotions promotions = (BasePromotions) jsonObject.get("promotions",
|
||||
ClassLoaderUtil.loadClass(jsonObject.get("promotionsType").toString()));
|
||||
String esPromotionKey = jsonObject.get("esPromotionKey").toString();
|
||||
if (PromotionsScopeTypeEnum.PORTION_GOODS.name().equals(promotions.getScopeType())) {
|
||||
PromotionGoodsSearchParams searchParams = new PromotionGoodsSearchParams();
|
||||
searchParams.setPromotionId(promotions.getId());
|
||||
List<PromotionGoods> promotionGoodsList = this.promotionGoodsService.listFindAll(searchParams);
|
||||
this.goodsIndexService.updateEsGoodsIndexByList(promotionGoodsList, promotions, esPromotionKey);
|
||||
} else if (PromotionsScopeTypeEnum.PORTION_GOODS_CATEGORY.name().equals(promotions.getScopeType())) {
|
||||
GoodsSearchParams searchParams = new GoodsSearchParams();
|
||||
searchParams.setCategoryPath(promotions.getScopeId());
|
||||
List<GoodsSku> goodsSkuByList = this.goodsSkuService.getGoodsSkuByList(searchParams);
|
||||
List<String> skuIds = goodsSkuByList.stream().map(GoodsSku::getId).collect(Collectors.toList());
|
||||
this.goodsIndexService.updateEsGoodsIndexPromotions(skuIds, promotions, esPromotionKey);
|
||||
} else if (PromotionsScopeTypeEnum.ALL.name().equals(promotions.getScopeType())) {
|
||||
this.goodsIndexService.updateEsGoodsIndexAllByList(promotions, esPromotionKey);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("生成商品索引促销信息执行异常,参数信息 {}", promotionsJsonStr);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新商品索引
|
||||
*
|
||||
@ -411,13 +427,10 @@ public class GoodsMessageListener implements RocketMQListener<MessageExt> {
|
||||
goodsSku.setBuyCount(buyCount);
|
||||
goodsSkuService.update(goodsSku);
|
||||
|
||||
//修改规格索引,发送mq消息
|
||||
Map<String, Object> updateIndexFieldsMap = EsIndexUtil.getUpdateIndexFieldsMap(
|
||||
MapUtil.builder().put("id", goodsCompleteMessage.getSkuId()).build(),
|
||||
MapUtil.builder().put("buyCount", buyCount).build());
|
||||
String destination = rocketmqCustomProperties.getGoodsTopic() + ":" + GoodsTagsEnum.UPDATE_GOODS_INDEX_FIELD.name();
|
||||
rocketMQTemplate.asyncSend(destination, JSONUtil.toJsonStr(updateIndexFieldsMap), RocketmqSendCallbackBuilder.commonCallback());
|
||||
goodsIndexService.updateIndex(goodsCompleteMessage.getSkuId(), new EsGoodsIndex().setBuyCount(buyCount));
|
||||
this.goodsIndexService.updateIndex(
|
||||
MapUtil.builder(new HashMap<String, Object>()).put("id", goodsCompleteMessage.getSkuId()).build(),
|
||||
MapUtil.builder(new HashMap<String, Object>()).put("buyCount", buyCount).build());
|
||||
|
||||
} else {
|
||||
log.error("商品SkuId为[" + goodsCompleteMessage.getGoodsId() + "的商品不存在,更新商品失败!");
|
||||
}
|
||||
|
@ -1,15 +1,15 @@
|
||||
package cn.lili.listener;
|
||||
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import cn.lili.rocketmq.tags.MemberTagsEnum;
|
||||
import cn.lili.event.MemberPointChangeEvent;
|
||||
import cn.lili.event.MemberRegisterEvent;
|
||||
import cn.lili.event.MemberWithdrawalEvent;
|
||||
import cn.lili.modules.member.entity.dos.Member;
|
||||
import cn.lili.modules.member.entity.dos.MemberSign;
|
||||
import cn.lili.modules.member.entity.dto.MemberPointMessage;
|
||||
import cn.lili.modules.wallet.entity.dto.MemberWithdrawalMessage;
|
||||
import cn.lili.modules.member.service.MemberSignService;
|
||||
import cn.lili.modules.wallet.entity.dto.MemberWithdrawalMessage;
|
||||
import cn.lili.rocketmq.tags.MemberTagsEnum;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.rocketmq.common.message.MessageExt;
|
||||
import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
|
||||
|
@ -10,15 +10,15 @@ import cn.lili.modules.member.service.MemberService;
|
||||
import cn.lili.modules.message.entity.dos.MemberMessage;
|
||||
import cn.lili.modules.message.entity.dos.Message;
|
||||
import cn.lili.modules.message.entity.dos.StoreMessage;
|
||||
import cn.lili.modules.sms.entity.dto.SmsReachDTO;
|
||||
import cn.lili.modules.message.entity.enums.MessageSendClient;
|
||||
import cn.lili.modules.message.entity.enums.MessageStatusEnum;
|
||||
import cn.lili.modules.message.entity.enums.RangeEnum;
|
||||
import cn.lili.modules.message.service.MemberMessageService;
|
||||
import cn.lili.modules.message.service.StoreMessageService;
|
||||
import cn.lili.modules.sms.SmsUtil;
|
||||
import cn.lili.modules.sms.entity.dto.SmsReachDTO;
|
||||
import cn.lili.modules.store.entity.dos.Store;
|
||||
import cn.lili.modules.store.service.StoreService;
|
||||
import cn.lili.modules.sms.SmsUtil;
|
||||
import cn.lili.rocketmq.tags.OtherTagsEnum;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
|
@ -2,11 +2,11 @@ package cn.lili.listener;
|
||||
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import cn.lili.cache.Cache;
|
||||
import cn.lili.rocketmq.tags.OrderTagsEnum;
|
||||
import cn.lili.event.OrderStatusChangeEvent;
|
||||
import cn.lili.event.TradeEvent;
|
||||
import cn.lili.modules.order.cart.entity.dto.TradeDTO;
|
||||
import cn.lili.modules.order.order.entity.dto.OrderMessage;
|
||||
import cn.lili.rocketmq.tags.OrderTagsEnum;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.rocketmq.common.message.MessageExt;
|
||||
import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
|
||||
|
@ -8,6 +8,7 @@ import cn.lili.common.exception.ServiceException;
|
||||
import cn.lili.modules.member.entity.dto.MemberEvaluationDTO;
|
||||
import cn.lili.modules.member.entity.enums.EvaluationGradeEnum;
|
||||
import cn.lili.modules.member.service.MemberEvaluationService;
|
||||
import cn.lili.modules.order.aftersale.service.AfterSaleService;
|
||||
import cn.lili.modules.order.order.entity.dos.Order;
|
||||
import cn.lili.modules.order.order.entity.dos.OrderItem;
|
||||
import cn.lili.modules.order.order.entity.enums.CommentStatusEnum;
|
||||
@ -15,7 +16,6 @@ import cn.lili.modules.order.order.entity.enums.OrderComplaintStatusEnum;
|
||||
import cn.lili.modules.order.order.entity.enums.OrderItemAfterSaleStatusEnum;
|
||||
import cn.lili.modules.order.order.entity.enums.OrderStatusEnum;
|
||||
import cn.lili.modules.order.order.mapper.OrderItemMapper;
|
||||
import cn.lili.modules.order.aftersale.service.AfterSaleService;
|
||||
import cn.lili.modules.order.order.service.OrderItemService;
|
||||
import cn.lili.modules.order.order.service.OrderService;
|
||||
import cn.lili.modules.system.entity.dos.Setting;
|
||||
|
@ -4,12 +4,12 @@ import cn.hutool.core.date.DateTime;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import cn.lili.modules.order.order.entity.enums.PayStatusEnum;
|
||||
import cn.lili.modules.wallet.entity.dos.Recharge;
|
||||
import cn.lili.modules.wallet.service.RechargeService;
|
||||
import cn.lili.modules.system.entity.dos.Setting;
|
||||
import cn.lili.modules.system.entity.dto.OrderSetting;
|
||||
import cn.lili.modules.system.entity.enums.SettingEnum;
|
||||
import cn.lili.modules.system.service.SettingService;
|
||||
import cn.lili.modules.wallet.entity.dos.Recharge;
|
||||
import cn.lili.modules.wallet.service.RechargeService;
|
||||
import cn.lili.timetask.handler.EveryMinuteExecute;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
@ -1,34 +1,18 @@
|
||||
package cn.lili.timetask.handler.impl.promotion;
|
||||
|
||||
import cn.lili.modules.order.cart.entity.vo.FullDiscountVO;
|
||||
import cn.lili.modules.promotion.entity.dos.MemberCoupon;
|
||||
import cn.lili.modules.promotion.entity.dos.PromotionGoods;
|
||||
import cn.lili.modules.promotion.entity.dos.Seckill;
|
||||
import cn.lili.modules.promotion.entity.enums.MemberCouponStatusEnum;
|
||||
import cn.lili.modules.promotion.entity.enums.PromotionStatusEnum;
|
||||
import cn.lili.modules.promotion.entity.vos.CouponVO;
|
||||
import cn.lili.modules.promotion.entity.vos.PintuanVO;
|
||||
import cn.lili.modules.promotion.service.*;
|
||||
import cn.lili.modules.promotion.service.SeckillService;
|
||||
import cn.lili.modules.search.service.EsGoodsIndexService;
|
||||
import cn.lili.modules.system.entity.dos.Setting;
|
||||
import cn.lili.modules.system.entity.dto.SeckillSetting;
|
||||
import cn.lili.modules.system.entity.enums.SettingEnum;
|
||||
import cn.lili.modules.system.service.SettingService;
|
||||
import cn.lili.timetask.handler.EveryDayExecute;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import com.google.gson.Gson;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.mongodb.core.MongoTemplate;
|
||||
import org.springframework.data.mongodb.core.query.Criteria;
|
||||
import org.springframework.data.mongodb.core.query.Query;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 促销活动每日定时器
|
||||
*
|
||||
@ -39,41 +23,11 @@ import java.util.List;
|
||||
@Component
|
||||
public class PromotionEverydayExecute implements EveryDayExecute {
|
||||
|
||||
/**
|
||||
* Mongo
|
||||
*/
|
||||
@Autowired
|
||||
private MongoTemplate mongoTemplate;
|
||||
/**
|
||||
* ES商品索引
|
||||
*/
|
||||
@Autowired
|
||||
private EsGoodsIndexService esGoodsIndexService;
|
||||
/**
|
||||
* 满额活动
|
||||
*/
|
||||
@Autowired
|
||||
private FullDiscountService fullDiscountService;
|
||||
/**
|
||||
* 拼团
|
||||
*/
|
||||
@Autowired
|
||||
private PintuanService pintuanService;
|
||||
/**
|
||||
* 优惠券
|
||||
*/
|
||||
@Autowired
|
||||
private CouponService couponService;
|
||||
/**
|
||||
* 会员优惠券
|
||||
*/
|
||||
@Autowired
|
||||
private MemberCouponService memberCouponService;
|
||||
/**
|
||||
* 促销商品
|
||||
*/
|
||||
@Autowired
|
||||
private PromotionGoodsService promotionGoodsService;
|
||||
/**
|
||||
* 系统设置
|
||||
*/
|
||||
@ -90,125 +44,13 @@ public class PromotionEverydayExecute implements EveryDayExecute {
|
||||
*/
|
||||
@Override
|
||||
public void execute() {
|
||||
//mongo查询条件
|
||||
Query query = new Query();
|
||||
//结束条件 活动未关闭/活动未结束
|
||||
query.addCriteria(Criteria.where("promotionStatus").ne(PromotionStatusEnum.END.name())
|
||||
.orOperator(Criteria.where("promotionStatus").ne(PromotionStatusEnum.CLOSE.name())));
|
||||
//结束条件 活动结束时间大于当前时间
|
||||
query.addCriteria(Criteria.where("endTime").lte(new Date()));
|
||||
|
||||
//结束满减活动
|
||||
endFullDiscount(query);
|
||||
|
||||
//关闭拼团活动
|
||||
endPintuan(query);
|
||||
|
||||
//结束优惠券
|
||||
endCoupon(query);
|
||||
|
||||
//查询条件
|
||||
this.esGoodsIndexService.cleanInvalidPromotion();
|
||||
//定时创建活动
|
||||
addSeckill();
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 结束优惠券活动
|
||||
*
|
||||
* @param query
|
||||
*/
|
||||
private void endCoupon(Query query) {
|
||||
|
||||
try {
|
||||
//关闭优惠券活动
|
||||
List<CouponVO> couponVOS = mongoTemplate.find(query, CouponVO.class);
|
||||
if (!couponVOS.isEmpty()) {
|
||||
List<String> ids = new ArrayList<>();
|
||||
// //关闭的优惠券活动
|
||||
for (CouponVO vo : couponVOS) {
|
||||
vo.setPromotionStatus(PromotionStatusEnum.END.name());
|
||||
if (vo.getPromotionGoodsList() != null && !vo.getPromotionGoodsList().isEmpty()) {
|
||||
for (PromotionGoods promotionGoods : vo.getPromotionGoodsList()) {
|
||||
promotionGoods.setPromotionStatus(PromotionStatusEnum.END.name());
|
||||
esGoodsIndexService.deleteEsGoodsPromotionByPromotionId(promotionGoods.getSkuId(), vo.getId());
|
||||
}
|
||||
}
|
||||
mongoTemplate.save(vo);
|
||||
ids.add(vo.getId());
|
||||
}
|
||||
couponService.update(this.getUpdatePromotionWrapper(ids));
|
||||
LambdaUpdateWrapper<MemberCoupon> memberCouponLambdaUpdateWrapper = new LambdaUpdateWrapper<MemberCoupon>().in(MemberCoupon::getCouponId, ids).set(MemberCoupon::getMemberCouponStatus, MemberCouponStatusEnum.EXPIRE.name());
|
||||
memberCouponService.update(memberCouponLambdaUpdateWrapper);
|
||||
//将活动商品对照表进行结束处理
|
||||
promotionGoodsService.update(this.getUpdatePromotionGoodsWrapper(ids));
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("优惠券活动关闭错误", e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 结束拼团活动
|
||||
*
|
||||
* @param query
|
||||
*/
|
||||
private void endPintuan(Query query) {
|
||||
try {
|
||||
//关闭拼团活动
|
||||
List<PintuanVO> pintuanVOS = mongoTemplate.find(query, PintuanVO.class);
|
||||
if (!pintuanVOS.isEmpty()) {
|
||||
//准备修改活动的id
|
||||
List<String> ids = new ArrayList<>();
|
||||
for (PintuanVO vo : pintuanVOS) {
|
||||
vo.setPromotionStatus(PromotionStatusEnum.END.name());
|
||||
if (vo.getPromotionGoodsList() != null && !vo.getPromotionGoodsList().isEmpty()) {
|
||||
for (PromotionGoods promotionGoods : vo.getPromotionGoodsList()) {
|
||||
promotionGoods.setPromotionStatus(PromotionStatusEnum.END.name());
|
||||
esGoodsIndexService.deleteEsGoodsPromotionByPromotionId(promotionGoods.getSkuId(), vo.getId());
|
||||
}
|
||||
}
|
||||
mongoTemplate.save(vo);
|
||||
ids.add(vo.getId());
|
||||
}
|
||||
pintuanService.update(this.getUpdatePromotionWrapper(ids));
|
||||
//将活动商品对照表进行结束处理
|
||||
promotionGoodsService.update(this.getUpdatePromotionGoodsWrapper(ids));
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("拼团活动关闭错误", e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 结束满减活动
|
||||
*
|
||||
* @param query
|
||||
*/
|
||||
private void endFullDiscount(Query query) {
|
||||
try {
|
||||
//关闭满减活动
|
||||
List<FullDiscountVO> fullDiscountVOS = mongoTemplate.find(query, FullDiscountVO.class);
|
||||
if (!fullDiscountVOS.isEmpty()) {
|
||||
List<String> ids = new ArrayList<>();
|
||||
//循环活动 关闭活动
|
||||
for (FullDiscountVO vo : fullDiscountVOS) {
|
||||
vo.setPromotionStatus(PromotionStatusEnum.END.name());
|
||||
if (vo.getPromotionGoodsList() != null && !vo.getPromotionGoodsList().isEmpty()) {
|
||||
for (PromotionGoods promotionGoods : vo.getPromotionGoodsList()) {
|
||||
promotionGoods.setPromotionStatus(PromotionStatusEnum.END.name());
|
||||
esGoodsIndexService.deleteEsGoodsPromotionByPromotionId(promotionGoods.getSkuId(), vo.getId());
|
||||
}
|
||||
}
|
||||
mongoTemplate.save(vo);
|
||||
ids.add(vo.getId());
|
||||
}
|
||||
fullDiscountService.update(this.getUpdatePromotionWrapper(ids));
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("满减活动关闭错误", e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加秒杀活动
|
||||
* 从系统设置中获取秒杀活动的配置
|
||||
@ -218,32 +60,6 @@ public class PromotionEverydayExecute implements EveryDayExecute {
|
||||
Setting setting = settingService.get(SettingEnum.SECKILL_SETTING.name());
|
||||
SeckillSetting seckillSetting = new Gson().fromJson(setting.getSettingValue(), SeckillSetting.class);
|
||||
Seckill seckill = new Seckill(SeckillService.PRE_CREATION, seckillSetting.getHours(), seckillSetting.getSeckillRule());
|
||||
seckillService.saveSeckill(seckill);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取促销修改查询条件 修改活动状态
|
||||
*
|
||||
* @param ids 促销活动ID
|
||||
* @return 促销活动商品查询Wrapper
|
||||
*/
|
||||
private UpdateWrapper getUpdatePromotionWrapper(List<String> ids) {
|
||||
UpdateWrapper updateWrapper = new UpdateWrapper<>();
|
||||
updateWrapper.in("id", ids);
|
||||
updateWrapper.set("promotion_status", PromotionStatusEnum.END.name());
|
||||
return updateWrapper;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取商品的促销修改查询条件 修改商品状态
|
||||
*
|
||||
* @param ids 促销活动ID
|
||||
* @return 促销活动商品修改Wrapper
|
||||
*/
|
||||
private UpdateWrapper getUpdatePromotionGoodsWrapper(List<String> ids) {
|
||||
UpdateWrapper updateWrapper = new UpdateWrapper<>();
|
||||
updateWrapper.in("promotion_id", ids);
|
||||
updateWrapper.set("promotion_status", PromotionStatusEnum.END.name());
|
||||
return updateWrapper;
|
||||
seckillService.savePromotions(seckill);
|
||||
}
|
||||
}
|
||||
|
@ -1,16 +1,10 @@
|
||||
package cn.lili.trigger.executor;
|
||||
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import cn.lili.common.properties.RocketmqCustomProperties;
|
||||
import cn.lili.modules.order.order.service.OrderService;
|
||||
import cn.lili.modules.promotion.entity.enums.PromotionStatusEnum;
|
||||
import cn.lili.modules.promotion.service.PromotionService;
|
||||
import cn.lili.trigger.TimeTriggerExecutor;
|
||||
import cn.lili.trigger.interfaces.TimeTrigger;
|
||||
import cn.lili.trigger.message.PintuanOrderMessage;
|
||||
import cn.lili.trigger.message.PromotionMessage;
|
||||
import cn.lili.trigger.model.TimeExecuteConstant;
|
||||
import cn.lili.trigger.model.TimeTriggerMsg;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
@ -25,21 +19,6 @@ import org.springframework.stereotype.Component;
|
||||
@Slf4j
|
||||
@Component(TimeExecuteConstant.PROMOTION_EXECUTOR)
|
||||
public class PromotionTimeTriggerExecutor implements TimeTriggerExecutor {
|
||||
/**
|
||||
* 促销
|
||||
*/
|
||||
@Autowired
|
||||
private PromotionService promotionService;
|
||||
/**
|
||||
* RocketMQ
|
||||
*/
|
||||
@Autowired
|
||||
private RocketmqCustomProperties rocketmqCustomProperties;
|
||||
/**
|
||||
* 延时任务
|
||||
*/
|
||||
@Autowired
|
||||
private TimeTrigger timeTrigger;
|
||||
/**
|
||||
* 订单
|
||||
*/
|
||||
@ -49,32 +28,6 @@ public class PromotionTimeTriggerExecutor implements TimeTriggerExecutor {
|
||||
|
||||
@Override
|
||||
public void execute(Object object) {
|
||||
PromotionMessage promotionMessage = JSONUtil.toBean(JSONUtil.parseObj(object), PromotionMessage.class);
|
||||
//促销延时信息
|
||||
if (promotionMessage != null && promotionMessage.getPromotionId() != null) {
|
||||
log.info("促销活动信息消费:{}", promotionMessage);
|
||||
//如果为促销活动开始,则需要发布促销活动结束的定时任务
|
||||
if (PromotionStatusEnum.START.name().equals(promotionMessage.getPromotionStatus())) {
|
||||
if (!promotionService.updatePromotionStatus(promotionMessage)) {
|
||||
log.error("开始促销活动失败: {}", promotionMessage);
|
||||
return;
|
||||
}
|
||||
//促销活动开始后,设置促销活动结束的定时任务
|
||||
promotionMessage.setPromotionStatus(PromotionStatusEnum.END.name());
|
||||
String uniqueKey = "{TIME_TRIGGER_" + promotionMessage.getPromotionType() + "}_" + promotionMessage.getPromotionId();
|
||||
if (promotionMessage.getEndTime() != null) {
|
||||
//结束时间(延时一分钟)
|
||||
long closeTime = promotionMessage.getEndTime().getTime() + 60000;
|
||||
TimeTriggerMsg timeTriggerMsg = new TimeTriggerMsg(TimeExecuteConstant.PROMOTION_EXECUTOR, closeTime, promotionMessage, uniqueKey, rocketmqCustomProperties.getPromotionTopic());
|
||||
//添加延时任务
|
||||
timeTrigger.addDelay(timeTriggerMsg);
|
||||
}
|
||||
} else {
|
||||
//不是开始,则修改活动状态
|
||||
promotionService.updatePromotionStatus(promotionMessage);
|
||||
}
|
||||
return;
|
||||
}
|
||||
//拼团订单消息
|
||||
PintuanOrderMessage pintuanOrderMessage = JSONUtil.toBean(JSONUtil.parseObj(object), PintuanOrderMessage.class);
|
||||
if (pintuanOrderMessage != null && pintuanOrderMessage.getPintuanId() != null) {
|
||||
|
@ -35,6 +35,12 @@
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-web</artifactId>
|
||||
<exclusions>
|
||||
<exclusion>
|
||||
<artifactId>log4j-to-slf4j</artifactId>
|
||||
<groupId>org.apache.logging.log4j</groupId>
|
||||
</exclusion>
|
||||
</exclusions>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
|
@ -1,9 +1,9 @@
|
||||
package cn.lili.common.aop.interceptor;
|
||||
|
||||
import cn.lili.common.aop.annotation.DemoSite;
|
||||
import cn.lili.common.enums.ResultCode;
|
||||
import cn.lili.common.exception.ServiceException;
|
||||
import cn.lili.common.properties.SystemSettingProperties;
|
||||
import cn.lili.common.aop.annotation.DemoSite;
|
||||
import org.aspectj.lang.annotation.Aspect;
|
||||
import org.aspectj.lang.annotation.Before;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
@ -66,6 +66,7 @@ public enum ResultCode {
|
||||
GOODS_UPPER_ERROR(11004, "商品上架失败"),
|
||||
GOODS_AUTH_ERROR(11005, "商品审核失败"),
|
||||
POINT_GOODS_ERROR(11006, "积分商品业务异常,请稍后重试"),
|
||||
POINT_GOODS_NOT_EXIST(11020, "积分商品不存在"),
|
||||
GOODS_SKU_SN_ERROR(11007, "商品SKU货号不能为空"),
|
||||
GOODS_SKU_PRICE_ERROR(11008, "商品SKU价格不能小于等于0"),
|
||||
GOODS_SKU_COST_ERROR(11009, "商品SKU成本价不能小于等于0"),
|
||||
@ -248,6 +249,7 @@ public enum ResultCode {
|
||||
PROMOTION_START_TIME_ERROR(40002, "活动起始时间不能小于当前时间"),
|
||||
PROMOTION_END_TIME_ERROR(40003, "活动结束时间不能小于当前时间"),
|
||||
PROMOTION_TIME_ERROR(40004, "活动起始时间必须大于结束时间"),
|
||||
PROMOTION_TIME_NOT_EXIST(40011, "活动起始时间和活动结束时间不能为空"),
|
||||
PROMOTION_SAME_ERROR(40005, "当前时间段已存在相同活动!"),
|
||||
PROMOTION_GOODS_ERROR(40006, "请选择要参与活动的商品"),
|
||||
PROMOTION_STATUS_END(40007, "当前活动已停止"),
|
||||
@ -267,6 +269,11 @@ public enum ResultCode {
|
||||
COUPON_RECEIVE_ERROR(41005, "当前优惠券已经被领取完了,下次要早点来哦"),
|
||||
COUPON_NUM_INSUFFICIENT_ERROR(41006, "优惠券剩余领取数量不足"),
|
||||
COUPON_NOT_EXIST(41007, "当前优惠券不存在"),
|
||||
COUPON_DO_NOT_RECEIVER(41030, "当前优惠券不允许主动领取"),
|
||||
COUPON_ACTIVITY_NOT_EXIST(410022, "当前优惠券活动不存在"),
|
||||
COUPON_SAVE_ERROR(41020, "保存优惠券失败"),
|
||||
COUPON_ACTIVITY_SAVE_ERROR(41023, "保存优惠券活动失败"),
|
||||
COUPON_DELETE_ERROR(41021, "删除优惠券失败"),
|
||||
COUPON_LIMIT_NUM_LESS_THAN_0(41008, "领取限制数量不能为负数"),
|
||||
COUPON_LIMIT_GREATER_THAN_PUBLISH(41009, "领取限制数量超出发行数量"),
|
||||
COUPON_DISCOUNT_ERROR(41010, "优惠券折扣必须小于10且大于0"),
|
||||
@ -294,7 +301,8 @@ public enum ResultCode {
|
||||
PINTUAN_DELETE_ERROR(42010, "删除拼团活动失败"),
|
||||
PINTUAN_JOIN_ERROR(42011, "不能参与自己发起的拼团活动!"),
|
||||
PINTUAN_LIMIT_NUM_ERROR(42012, "购买数量超过拼团活动限制数量!"),
|
||||
PINTUAN_NOT_EXIST_ERROR(42013, "当前拼团商品不存在!"),
|
||||
PINTUAN_NOT_EXIST_ERROR(42013, "当前拼团活动不存在!"),
|
||||
PINTUAN_GOODS_NOT_EXIST_ERROR(42014, "当前拼团商品不存在!"),
|
||||
|
||||
/**
|
||||
* 满额活动
|
||||
@ -321,10 +329,12 @@ public enum ResultCode {
|
||||
*/
|
||||
SECKILL_NOT_START_ERROR(45000, "今日没有限时抢购活动,请明天再来看看吧。"),
|
||||
SECKILL_NOT_EXIST_ERROR(45001, "当前参与的秒杀活动不存在!"),
|
||||
SECKILL_APPLY_NOT_EXIST_ERROR(45010, "当前参与的秒杀活动不存在!"),
|
||||
SECKILL_UPDATE_ERROR(45002, "当前秒杀活动活动已经开始,无法修改!"),
|
||||
SECKILL_PRICE_ERROR(45003, "活动价格不能大于商品原价"),
|
||||
SECKILL_TIME_ERROR(45004, "时刻参数异常"),
|
||||
SECKILL_DELETE_ERROR(45005, "该秒杀活动活动的状态不能删除"),
|
||||
SECKILL_OPEN_ERROR(45010, "该秒杀活动活动的状态不能删除"),
|
||||
SECKILL_CLOSE_ERROR(45006, "该秒杀活动活动的状态不能关闭"),
|
||||
|
||||
|
||||
|
@ -2,7 +2,6 @@ package cn.lili.common.security;
|
||||
|
||||
import cn.lili.common.enums.ResultCode;
|
||||
import cn.lili.common.exception.ServiceException;
|
||||
import cn.lili.common.security.AuthUser;
|
||||
import cn.lili.common.security.context.UserContext;
|
||||
import cn.lili.common.utils.BeanUtil;
|
||||
|
||||
|
@ -13,6 +13,7 @@ import org.springframework.context.annotation.Configuration;
|
||||
*/
|
||||
@Configuration
|
||||
public class QuartzConfig {
|
||||
|
||||
@Bean
|
||||
public JobDetail sensitiveQuartzDetail() {
|
||||
return JobBuilder.newJob(SensitiveQuartz.class).withIdentity("sensitiveQuartz").storeDurably().build();
|
||||
|
@ -5,7 +5,6 @@ import cn.lili.cache.CachePrefix;
|
||||
import cn.lili.common.sensitive.SensitiveWordsFilter;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.quartz.JobExecutionContext;
|
||||
import org.quartz.JobExecutionException;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.scheduling.quartz.QuartzJobBean;
|
||||
|
||||
|
@ -3,11 +3,10 @@ package cn.lili.common.utils;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.io.*;
|
||||
import java.util.Base64;
|
||||
import java.util.Base64.Decoder;
|
||||
|
||||
import java.io.*;
|
||||
|
||||
/**
|
||||
* base64转为multipartFile工具类
|
||||
*
|
||||
|
@ -16,6 +16,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.data.elasticsearch.config.AbstractElasticsearchConfiguration;
|
||||
import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
|
||||
|
||||
import javax.annotation.PreDestroy;
|
||||
import java.io.IOException;
|
||||
@ -68,6 +69,11 @@ public class ElasticsearchConfig extends AbstractElasticsearchConfiguration {
|
||||
return client;
|
||||
}
|
||||
|
||||
@Bean("elasticsearchRestTemplate")
|
||||
public ElasticsearchRestTemplate elasticsearchRestTemplate() {
|
||||
return new ElasticsearchRestTemplate(elasticsearchClient());
|
||||
}
|
||||
|
||||
private HttpHost[] getHttpHosts() {
|
||||
List<String> clusterNodes = elasticsearchProperties.getClusterNodes();
|
||||
HttpHost[] httpHosts = new HttpHost[clusterNodes.size()];
|
||||
|
@ -1,8 +1,10 @@
|
||||
package cn.lili.modules.connect.request;
|
||||
|
||||
import cn.lili.cache.Cache;
|
||||
import cn.lili.common.utils.HttpUtils;
|
||||
import cn.lili.common.utils.StringUtils;
|
||||
import cn.lili.common.utils.UrlBuilder;
|
||||
import cn.lili.common.utils.UuidUtils;
|
||||
import cn.lili.modules.connect.config.AuthConfig;
|
||||
import cn.lili.modules.connect.config.ConnectAuth;
|
||||
import cn.lili.modules.connect.entity.dto.AuthCallback;
|
||||
@ -12,8 +14,6 @@ import cn.lili.modules.connect.entity.dto.ConnectAuthUser;
|
||||
import cn.lili.modules.connect.entity.enums.AuthResponseStatus;
|
||||
import cn.lili.modules.connect.exception.AuthException;
|
||||
import cn.lili.modules.connect.util.AuthChecker;
|
||||
import cn.lili.common.utils.HttpUtils;
|
||||
import cn.lili.common.utils.UuidUtils;
|
||||
import com.xkcoding.http.util.UrlUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
|
@ -2,15 +2,10 @@ package cn.lili.modules.distribution.serviceimpl;
|
||||
|
||||
import cn.lili.common.enums.ResultCode;
|
||||
import cn.lili.common.exception.ServiceException;
|
||||
import cn.lili.modules.wallet.entity.dto.MemberWalletUpdateDTO;
|
||||
import cn.lili.modules.wallet.entity.enums.WithdrawStatusEnum;
|
||||
import cn.lili.rocketmq.RocketmqSendCallbackBuilder;
|
||||
import cn.lili.rocketmq.tags.MemberTagsEnum;
|
||||
import cn.lili.common.properties.RocketmqCustomProperties;
|
||||
import cn.lili.common.utils.CurrencyUtil;
|
||||
import cn.lili.mybatis.util.PageUtil;
|
||||
import cn.lili.common.utils.SnowFlake;
|
||||
import cn.lili.common.vo.PageVO;
|
||||
import cn.lili.common.properties.RocketmqCustomProperties;
|
||||
import cn.lili.modules.distribution.entity.dos.Distribution;
|
||||
import cn.lili.modules.distribution.entity.dos.DistributionCash;
|
||||
import cn.lili.modules.distribution.entity.enums.DistributionStatusEnum;
|
||||
@ -18,13 +13,17 @@ import cn.lili.modules.distribution.entity.vos.DistributionCashSearchParams;
|
||||
import cn.lili.modules.distribution.mapper.DistributionCashMapper;
|
||||
import cn.lili.modules.distribution.service.DistributionCashService;
|
||||
import cn.lili.modules.distribution.service.DistributionService;
|
||||
import cn.lili.modules.wallet.entity.dto.MemberWalletUpdateDTO;
|
||||
import cn.lili.modules.wallet.entity.dto.MemberWithdrawalMessage;
|
||||
import cn.lili.modules.wallet.entity.enums.MemberWithdrawalDestinationEnum;
|
||||
import cn.lili.modules.wallet.service.MemberWalletService;
|
||||
import cn.lili.modules.wallet.entity.enums.DepositServiceTypeEnum;
|
||||
import cn.lili.modules.wallet.entity.enums.MemberWithdrawalDestinationEnum;
|
||||
import cn.lili.modules.wallet.entity.enums.WithdrawStatusEnum;
|
||||
import cn.lili.modules.wallet.service.MemberWalletService;
|
||||
import cn.lili.mybatis.util.PageUtil;
|
||||
import cn.lili.rocketmq.RocketmqSendCallbackBuilder;
|
||||
import cn.lili.rocketmq.tags.MemberTagsEnum;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.apache.rocketmq.spring.core.RocketMQTemplate;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
@ -136,6 +136,14 @@ public interface GoodsSkuService extends IService<GoodsSku> {
|
||||
*/
|
||||
IPage<GoodsSku> getGoodsSkuByPage(GoodsSearchParams searchParams);
|
||||
|
||||
/**
|
||||
* 列表查询商品sku信息
|
||||
*
|
||||
* @param searchParams 查询参数
|
||||
* @return 商品sku信息
|
||||
*/
|
||||
List<GoodsSku> getGoodsSkuByList(GoodsSearchParams searchParams);
|
||||
|
||||
/**
|
||||
* 更新商品sku状态
|
||||
*
|
||||
@ -186,4 +194,12 @@ public interface GoodsSkuService extends IService<GoodsSku> {
|
||||
* @param skuId SKUId
|
||||
*/
|
||||
void updateGoodsSkuCommentNum(String skuId);
|
||||
|
||||
/**
|
||||
* 更新商品sku促销价格
|
||||
*
|
||||
* @param skuId skuId
|
||||
* @param promotionPrice 促销价格
|
||||
*/
|
||||
void updateGoodsSkuPromotion(String skuId, Double promotionPrice);
|
||||
}
|
@ -246,7 +246,7 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
|
||||
if (CharSequenceUtil.isNotEmpty(goods.getParams())) {
|
||||
goodsVO.setGoodsParamsDTOList(JSONUtil.toList(goods.getParams(), GoodsParamsDTO.class));
|
||||
}
|
||||
|
||||
cache.put(CachePrefix.GOODS.getPrefix() + goodsId, goodsVO);
|
||||
return goodsVO;
|
||||
}
|
||||
|
||||
|
@ -7,6 +7,7 @@ import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.json.JSONObject;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import cn.lili.cache.Cache;
|
||||
import cn.lili.common.enums.PromotionTypeEnum;
|
||||
import cn.lili.common.enums.ResultCode;
|
||||
import cn.lili.common.exception.ServiceException;
|
||||
import cn.lili.common.properties.RocketmqCustomProperties;
|
||||
@ -30,6 +31,7 @@ import cn.lili.modules.member.entity.dos.FootPrint;
|
||||
import cn.lili.modules.member.entity.dos.MemberEvaluation;
|
||||
import cn.lili.modules.member.entity.enums.EvaluationGradeEnum;
|
||||
import cn.lili.modules.member.service.MemberEvaluationService;
|
||||
import cn.lili.modules.promotion.entity.enums.CouponGetEnum;
|
||||
import cn.lili.modules.search.entity.dos.EsGoodsAttribute;
|
||||
import cn.lili.modules.search.entity.dos.EsGoodsIndex;
|
||||
import cn.lili.modules.search.service.EsGoodsIndexService;
|
||||
@ -253,10 +255,25 @@ public class GoodsSkuServiceImpl extends ServiceImpl<GoodsSkuMapper, GoodsSku> i
|
||||
//商品规格
|
||||
GoodsSkuVO goodsSkuDetail = this.getGoodsSkuVO(goodsSku);
|
||||
|
||||
Map<String, Object> promotionMap = goodsIndex.getPromotionMap();
|
||||
//设置当前商品的促销价格
|
||||
if (goodsIndex.getPromotionMap() != null && !goodsIndex.getPromotionMap().isEmpty() && goodsIndex.getPromotionPrice() != null) {
|
||||
if (promotionMap != null && !promotionMap.isEmpty() && goodsIndex.getPromotionPrice() != null) {
|
||||
goodsSkuDetail.setPromotionPrice(goodsIndex.getPromotionPrice());
|
||||
}
|
||||
if (promotionMap != null && !promotionMap.isEmpty()) {
|
||||
promotionMap = promotionMap.entrySet().stream().parallel().filter(i -> {
|
||||
JSONObject jsonObject = JSONUtil.parseObj(i.getValue());
|
||||
return (jsonObject.get("getType") == null || jsonObject.get("getType").toString().equals(CouponGetEnum.FREE.name())) &&
|
||||
(jsonObject.get("startTime") != null && jsonObject.get("startTime", Date.class).before(new Date()));
|
||||
}).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
|
||||
for (String s : promotionMap.keySet()) {
|
||||
if (!s.contains(PromotionTypeEnum.SECKILL.name()) || !s.contains(PromotionTypeEnum.PINTUAN.name())) {
|
||||
goodsSkuDetail.setPromotionPrice(null);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
map.put("data", goodsSkuDetail);
|
||||
|
||||
//获取分类
|
||||
@ -265,10 +282,10 @@ public class GoodsSkuServiceImpl extends ServiceImpl<GoodsSkuMapper, GoodsSku> i
|
||||
|
||||
//获取规格信息
|
||||
map.put("specs", this.groupBySkuAndSpec(goodsVO.getSkuList()));
|
||||
map.put("promotionMap", goodsIndex.getPromotionMap());
|
||||
map.put("promotionMap", promotionMap);
|
||||
|
||||
//获取参数信息
|
||||
if (goodsVO.getGoodsParamsDTOList() != null && goodsVO.getGoodsParamsDTOList().size() > 0) {
|
||||
if (goodsVO.getGoodsParamsDTOList() != null && !goodsVO.getGoodsParamsDTOList().isEmpty()) {
|
||||
map.put("goodsParamsDTOList", goodsVO.getGoodsParamsDTOList());
|
||||
}
|
||||
|
||||
@ -385,6 +402,17 @@ public class GoodsSkuServiceImpl extends ServiceImpl<GoodsSkuMapper, GoodsSku> i
|
||||
return this.page(PageUtil.initPage(searchParams), searchParams.queryWrapper());
|
||||
}
|
||||
|
||||
/**
|
||||
* 列表查询商品sku信息
|
||||
*
|
||||
* @param searchParams 查询参数
|
||||
* @return 商品sku信息
|
||||
*/
|
||||
@Override
|
||||
public List<GoodsSku> getGoodsSkuByList(GoodsSearchParams searchParams) {
|
||||
return this.list(searchParams.queryWrapper());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateStocks(List<GoodsSkuStockDTO> goodsSkuStockDTOS) {
|
||||
for (GoodsSkuStockDTO goodsSkuStockDTO : goodsSkuStockDTOS) {
|
||||
@ -486,6 +514,22 @@ public class GoodsSkuServiceImpl extends ServiceImpl<GoodsSkuMapper, GoodsSku> i
|
||||
goodsService.updateGoodsCommentNum(goodsSku.getGoodsId());
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新商品sku促销价格
|
||||
*
|
||||
* @param skuId skuId
|
||||
* @param promotionPrice 促销价格
|
||||
*/
|
||||
@Override
|
||||
public void updateGoodsSkuPromotion(String skuId, Double promotionPrice) {
|
||||
LambdaUpdateWrapper<GoodsSku> updateWrapper = new LambdaUpdateWrapper<>();
|
||||
updateWrapper.eq(GoodsSku::getId, skuId);
|
||||
updateWrapper.set(GoodsSku::getPromotionPrice, promotionPrice);
|
||||
updateWrapper.set(GoodsSku::getIsPromotion, true);
|
||||
this.update(updateWrapper);
|
||||
cache.remove(GoodsSkuService.getCacheKeys(skuId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送生成ES商品索引
|
||||
*
|
||||
|
@ -1,6 +1,5 @@
|
||||
package cn.lili.modules.member.entity.dto;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
|
||||
|
@ -2,7 +2,6 @@ package cn.lili.modules.member.mapper;
|
||||
|
||||
|
||||
import cn.lili.modules.member.entity.dos.Member;
|
||||
import cn.lili.modules.member.entity.vo.MemberDistributionVO;
|
||||
import cn.lili.modules.member.entity.vo.MemberVO;
|
||||
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
|
@ -9,13 +9,13 @@ import cn.lili.modules.member.entity.dos.Member;
|
||||
import cn.lili.modules.member.entity.dto.ManagerMemberEditDTO;
|
||||
import cn.lili.modules.member.entity.dto.MemberAddDTO;
|
||||
import cn.lili.modules.member.entity.dto.MemberEditDTO;
|
||||
import cn.lili.modules.member.entity.vo.MemberDistributionVO;
|
||||
import cn.lili.modules.member.entity.vo.MemberSearchVO;
|
||||
import cn.lili.modules.member.entity.vo.MemberVO;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 会员业务层
|
||||
@ -205,6 +205,15 @@ public interface MemberService extends IService<Member> {
|
||||
*/
|
||||
Integer getMemberNum(MemberSearchVO memberSearchVO);
|
||||
|
||||
/**
|
||||
* 获取指定会员数据
|
||||
*
|
||||
* @param columns 指定获取的列
|
||||
* @param memberIds 会员ids
|
||||
* @return 指定会员数据
|
||||
*/
|
||||
List<Map<String, Object>> listFieldsByMemberIds(String columns, List<String> memberIds);
|
||||
|
||||
/**
|
||||
* 登出
|
||||
*
|
||||
|
@ -1,25 +1,18 @@
|
||||
package cn.lili.modules.member.serviceimpl;
|
||||
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import cn.lili.common.enums.ResultCode;
|
||||
import cn.lili.common.exception.ServiceException;
|
||||
import cn.lili.modules.member.entity.dto.CollectionDTO;
|
||||
import cn.lili.rocketmq.RocketmqSendCallbackBuilder;
|
||||
import cn.lili.rocketmq.tags.GoodsTagsEnum;
|
||||
import cn.lili.common.security.context.UserContext;
|
||||
import cn.lili.mybatis.util.PageUtil;
|
||||
import cn.lili.common.vo.PageVO;
|
||||
import cn.lili.common.properties.RocketmqCustomProperties;
|
||||
import cn.lili.modules.member.entity.dos.GoodsCollection;
|
||||
import cn.lili.modules.member.entity.vo.GoodsCollectionVO;
|
||||
import cn.lili.modules.member.mapper.GoodsCollectionMapper;
|
||||
import cn.lili.modules.member.service.GoodsCollectionService;
|
||||
import cn.lili.mybatis.util.PageUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.apache.rocketmq.spring.core.RocketMQTemplate;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
|
@ -1,18 +1,13 @@
|
||||
package cn.lili.modules.member.serviceimpl;
|
||||
|
||||
import cn.hutool.core.date.DateTime;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import cn.lili.common.enums.ResultCode;
|
||||
import cn.lili.common.enums.SwitchEnum;
|
||||
import cn.lili.common.exception.ServiceException;
|
||||
import cn.lili.rocketmq.RocketmqSendCallbackBuilder;
|
||||
import cn.lili.rocketmq.tags.GoodsTagsEnum;
|
||||
import cn.lili.common.security.context.UserContext;
|
||||
import cn.lili.common.security.enums.UserEnums;
|
||||
import cn.lili.mybatis.util.PageUtil;
|
||||
import cn.lili.common.utils.StringUtils;
|
||||
import cn.lili.common.properties.RocketmqCustomProperties;
|
||||
import cn.lili.common.security.context.UserContext;
|
||||
import cn.lili.common.sensitive.SensitiveWordsFilter;
|
||||
import cn.lili.common.utils.StringUtils;
|
||||
import cn.lili.modules.goods.entity.dos.GoodsSku;
|
||||
import cn.lili.modules.goods.service.GoodsSkuService;
|
||||
import cn.lili.modules.member.entity.dos.Member;
|
||||
@ -31,8 +26,9 @@ import cn.lili.modules.order.order.entity.dos.OrderItem;
|
||||
import cn.lili.modules.order.order.entity.enums.CommentStatusEnum;
|
||||
import cn.lili.modules.order.order.service.OrderItemService;
|
||||
import cn.lili.modules.order.order.service.OrderService;
|
||||
import cn.lili.common.sensitive.SensitiveWordsFilter;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import cn.lili.mybatis.util.PageUtil;
|
||||
import cn.lili.rocketmq.RocketmqSendCallbackBuilder;
|
||||
import cn.lili.rocketmq.tags.GoodsTagsEnum;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
|
@ -14,20 +14,20 @@ import cn.lili.common.security.AuthUser;
|
||||
import cn.lili.common.security.context.UserContext;
|
||||
import cn.lili.common.security.enums.UserEnums;
|
||||
import cn.lili.common.security.token.Token;
|
||||
import cn.lili.common.sensitive.SensitiveWordsFilter;
|
||||
import cn.lili.common.utils.BeanUtil;
|
||||
import cn.lili.common.utils.CookieUtil;
|
||||
import cn.lili.common.utils.StringUtils;
|
||||
import cn.lili.common.utils.UuidUtils;
|
||||
import cn.lili.common.vo.PageVO;
|
||||
import cn.lili.modules.connect.config.ConnectAuthEnum;
|
||||
import cn.lili.modules.connect.entity.Connect;
|
||||
import cn.lili.modules.connect.entity.dto.ConnectAuthUser;
|
||||
import cn.lili.modules.connect.service.ConnectService;
|
||||
import cn.lili.common.utils.UuidUtils;
|
||||
import cn.lili.modules.member.aop.annotation.PointLogPoint;
|
||||
import cn.lili.modules.member.entity.dos.Member;
|
||||
import cn.lili.modules.member.entity.dto.*;
|
||||
import cn.lili.modules.member.entity.enums.PointTypeEnum;
|
||||
import cn.lili.modules.member.entity.vo.MemberDistributionVO;
|
||||
import cn.lili.modules.member.entity.vo.MemberSearchVO;
|
||||
import cn.lili.modules.member.entity.vo.MemberVO;
|
||||
import cn.lili.modules.member.mapper.MemberMapper;
|
||||
@ -37,7 +37,6 @@ import cn.lili.modules.member.token.StoreTokenGenerate;
|
||||
import cn.lili.modules.store.entity.dos.Store;
|
||||
import cn.lili.modules.store.entity.enums.StoreStatusEnum;
|
||||
import cn.lili.modules.store.service.StoreService;
|
||||
import cn.lili.common.sensitive.SensitiveWordsFilter;
|
||||
import cn.lili.mybatis.util.PageUtil;
|
||||
import cn.lili.rocketmq.RocketmqSendCallbackBuilder;
|
||||
import cn.lili.rocketmq.tags.MemberTagsEnum;
|
||||
@ -54,6 +53,7 @@ import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
@ -560,6 +560,20 @@ public class MemberServiceImpl extends ServiceImpl<MemberMapper, Member> impleme
|
||||
return this.count(queryWrapper);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取指定会员数据
|
||||
*
|
||||
* @param columns 指定获取的列
|
||||
* @param memberIds 会员ids
|
||||
* @return 指定会员数据
|
||||
*/
|
||||
@Override
|
||||
public List<Map<String, Object>> listFieldsByMemberIds(String columns, List<String> memberIds) {
|
||||
return this.listMaps(new QueryWrapper<Member>()
|
||||
.select(columns)
|
||||
.in(memberIds != null && !memberIds.isEmpty(), "id", memberIds));
|
||||
}
|
||||
|
||||
/**
|
||||
* 登出
|
||||
*/
|
||||
|
@ -3,14 +3,14 @@ package cn.lili.modules.member.serviceimpl;
|
||||
import cn.lili.common.enums.ResultCode;
|
||||
import cn.lili.common.exception.ServiceException;
|
||||
import cn.lili.common.security.context.UserContext;
|
||||
import cn.lili.modules.member.entity.dto.CollectionDTO;
|
||||
import cn.lili.modules.store.service.StoreService;
|
||||
import cn.lili.mybatis.util.PageUtil;
|
||||
import cn.lili.common.vo.PageVO;
|
||||
import cn.lili.modules.member.entity.dos.StoreCollection;
|
||||
import cn.lili.modules.member.entity.dto.CollectionDTO;
|
||||
import cn.lili.modules.member.entity.vo.StoreCollectionVO;
|
||||
import cn.lili.modules.member.mapper.StoreCollectionMapper;
|
||||
import cn.lili.modules.member.service.StoreCollectionService;
|
||||
import cn.lili.modules.store.service.StoreService;
|
||||
import cn.lili.mybatis.util.PageUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
|
@ -1,9 +1,9 @@
|
||||
package cn.lili.modules.member.serviceimpl;
|
||||
|
||||
import cn.lili.modules.store.entity.dos.StoreLogistics;
|
||||
import cn.lili.modules.system.entity.vo.StoreLogisticsVO;
|
||||
import cn.lili.modules.member.mapper.StoreLogisticsMapper;
|
||||
import cn.lili.modules.member.service.StoreLogisticsService;
|
||||
import cn.lili.modules.store.entity.dos.StoreLogistics;
|
||||
import cn.lili.modules.system.entity.vo.StoreLogisticsVO;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
|
@ -1,7 +1,7 @@
|
||||
package cn.lili.modules.message.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import cn.lili.modules.message.entity.dos.ShortLink;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
@ -5,8 +5,8 @@ import cn.lili.common.security.context.UserContext;
|
||||
import cn.lili.common.security.enums.UserEnums;
|
||||
import cn.lili.common.utils.SpelUtil;
|
||||
import cn.lili.common.utils.ThreadPoolUtil;
|
||||
import cn.lili.modules.order.aftersale.service.AfterSaleLogService;
|
||||
import cn.lili.modules.order.aftersale.entity.dos.AfterSaleLog;
|
||||
import cn.lili.modules.order.aftersale.service.AfterSaleLogService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.aspectj.lang.JoinPoint;
|
||||
import org.aspectj.lang.annotation.AfterReturning;
|
||||
|
@ -1,7 +1,7 @@
|
||||
package cn.lili.modules.order.aftersale.entity.dto;
|
||||
|
||||
|
||||
import cn.lili.modules.promotion.entity.dto.BasePromotion;
|
||||
import cn.lili.modules.promotion.entity.dto.BasePromotions;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
@ -74,7 +74,7 @@ public class AfterSalePriceDetailDTO implements Serializable {
|
||||
* 参与的促销活动
|
||||
*/
|
||||
@ApiModelProperty(value = "参与的促销活动")
|
||||
private List<BasePromotion> joinPromotion;
|
||||
private List<BasePromotions> joinPromotion;
|
||||
|
||||
|
||||
public AfterSalePriceDetailDTO() {
|
||||
|
@ -1,13 +1,11 @@
|
||||
package cn.lili.modules.order.aftersale.service;
|
||||
|
||||
|
||||
import cn.lili.common.vo.PageVO;
|
||||
import cn.lili.modules.order.aftersale.entity.dos.AfterSale;
|
||||
import cn.lili.modules.order.aftersale.entity.dto.AfterSaleDTO;
|
||||
import cn.lili.modules.order.aftersale.entity.vo.AfterSaleApplyVO;
|
||||
import cn.lili.modules.order.aftersale.entity.vo.AfterSaleSearchParams;
|
||||
import cn.lili.modules.order.aftersale.entity.vo.AfterSaleVO;
|
||||
import cn.lili.modules.statistics.entity.dto.StatisticsQueryParam;
|
||||
import cn.lili.modules.store.entity.dto.StoreAfterSaleAddressDTO;
|
||||
import cn.lili.modules.system.entity.vo.Traces;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
|
@ -1,8 +1,8 @@
|
||||
package cn.lili.modules.order.aftersale.serviceimpl;
|
||||
|
||||
import cn.lili.modules.order.aftersale.service.AfterSaleLogService;
|
||||
import cn.lili.modules.order.aftersale.entity.dos.AfterSaleLog;
|
||||
import cn.lili.modules.order.aftersale.mapper.AfterSaleLogMapper;
|
||||
import cn.lili.modules.order.aftersale.service.AfterSaleLogService;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
|
@ -5,6 +5,8 @@ import cn.lili.modules.promotion.entity.dos.FullDiscount;
|
||||
import cn.lili.modules.promotion.entity.dos.PromotionGoods;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@ -16,13 +18,16 @@ import java.util.List;
|
||||
*/
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
public class FullDiscountVO extends FullDiscount {
|
||||
|
||||
private static final long serialVersionUID = -2330552735874105354L;
|
||||
|
||||
/**
|
||||
* 促销关联的商品
|
||||
*/
|
||||
private List<PromotionGoods> promotionGoodsList;
|
||||
|
||||
/**
|
||||
* 赠品信息
|
||||
*/
|
||||
@ -33,6 +38,10 @@ public class FullDiscountVO extends FullDiscount {
|
||||
*/
|
||||
private Integer number;
|
||||
|
||||
public FullDiscountVO(FullDiscount fullDiscount) {
|
||||
BeanUtils.copyProperties(fullDiscount, this);
|
||||
}
|
||||
|
||||
public String notice() {
|
||||
StringBuilder stringBuffer = new StringBuilder();
|
||||
if (Boolean.TRUE.equals(this.getIsFullMinus())) {
|
||||
|
@ -80,14 +80,14 @@ public class CheckDataRender implements CartRenderStep {
|
||||
/**
|
||||
* 校验商品属性
|
||||
*
|
||||
* @param tradeDTO
|
||||
* @param tradeDTO 购物车视图
|
||||
*/
|
||||
private void checkData(TradeDTO tradeDTO) {
|
||||
//循环购物车中的商品
|
||||
for (CartSkuVO cartSkuVO : tradeDTO.getSkuList()) {
|
||||
|
||||
//如果失效,确认sku为未选中状态
|
||||
if (cartSkuVO.getInvalid()) {
|
||||
if (Boolean.TRUE.equals(cartSkuVO.getInvalid())) {
|
||||
//设置购物车未选中
|
||||
cartSkuVO.setChecked(false);
|
||||
}
|
||||
@ -172,7 +172,7 @@ public class CheckDataRender implements CartRenderStep {
|
||||
//判断拼团商品的限购数量
|
||||
Optional<String> pintuanId = tradeDTO.getSkuList().get(0).getPromotions().stream().filter(i -> i.getPromotionType().equals(PromotionTypeEnum.PINTUAN.name())).map(PromotionGoods::getPromotionId).findFirst();
|
||||
if (pintuanId.isPresent()) {
|
||||
Pintuan pintuan = pintuanService.getPintuanById(pintuanId.get());
|
||||
Pintuan pintuan = pintuanService.getById(pintuanId.get());
|
||||
Integer limitNum = pintuan.getLimitNum();
|
||||
for (CartSkuVO cartSkuVO : tradeDTO.getSkuList()) {
|
||||
if (limitNum != 0 && cartSkuVO.getNum() > limitNum) {
|
||||
@ -184,7 +184,7 @@ public class CheckDataRender implements CartRenderStep {
|
||||
} else if (tradeDTO.getCartTypeEnum().equals(CartTypeEnum.POINTS)) {
|
||||
String skuId = tradeDTO.getSkuList().get(0).getGoodsSku().getId();
|
||||
//获取积分商品VO
|
||||
PointsGoodsVO pointsGoodsVO = pointsGoodsService.getPointsGoodsVOByMongo(skuId);
|
||||
PointsGoodsVO pointsGoodsVO = pointsGoodsService.getPointsGoodsDetailBySkuId(skuId);
|
||||
if (pointsGoodsVO == null) {
|
||||
throw new ServiceException(ResultCode.POINT_GOODS_ERROR);
|
||||
}
|
||||
|
@ -9,7 +9,7 @@ import cn.lili.modules.order.cart.entity.vo.CartSkuVO;
|
||||
import cn.lili.modules.order.cart.entity.vo.CartVO;
|
||||
import cn.lili.modules.order.cart.render.CartRenderStep;
|
||||
import cn.lili.modules.order.order.entity.dto.PriceDetailDTO;
|
||||
import cn.lili.modules.promotion.entity.dto.KanjiaActivityGoodsDTO;
|
||||
import cn.lili.modules.promotion.entity.dos.KanjiaActivityGoods;
|
||||
import cn.lili.modules.promotion.entity.vos.PointsGoodsVO;
|
||||
import cn.lili.modules.promotion.service.KanjiaActivityGoodsService;
|
||||
import cn.lili.modules.promotion.service.PointsGoodsService;
|
||||
@ -79,13 +79,13 @@ public class CommissionRender implements CartRenderStep {
|
||||
|
||||
//如果积分订单 积分订单,单独操作订单结算金额和商家结算字段
|
||||
if (tradeDTO.getCartTypeEnum().equals(CartTypeEnum.POINTS)) {
|
||||
PointsGoodsVO pointsGoodsVO = pointsGoodsService.getPointsGoodsVOByMongo(cartSkuVO.getGoodsSku().getId());
|
||||
PointsGoodsVO pointsGoodsVO = pointsGoodsService.getPointsGoodsDetailBySkuId(cartSkuVO.getGoodsSku().getId());
|
||||
priceDetailDTO.setSettlementPrice(pointsGoodsVO.getSettlementPrice());
|
||||
}
|
||||
//如果砍价订单 计算金额,单独操作订单结算金额和商家结算字段
|
||||
else if (tradeDTO.getCartTypeEnum().equals(CartTypeEnum.KANJIA)) {
|
||||
KanjiaActivityGoodsDTO kanjiaActivityGoodsDTO = kanjiaActivityGoodsService.getKanJiaGoodsBySku(cartSkuVO.getGoodsSku().getId());
|
||||
priceDetailDTO.setSettlementPrice(kanjiaActivityGoodsDTO.getSettlementPrice());
|
||||
KanjiaActivityGoods kanjiaActivityGoods = kanjiaActivityGoodsService.getKanjiaGoodsBySkuId(cartSkuVO.getGoodsSku().getId());
|
||||
priceDetailDTO.setSettlementPrice(kanjiaActivityGoods.getSettlementPrice());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -12,8 +12,8 @@ import cn.lili.modules.order.cart.render.CartRenderStep;
|
||||
import cn.lili.modules.order.cart.render.util.PromotionPriceUtil;
|
||||
import cn.lili.modules.order.order.entity.dto.PriceDetailDTO;
|
||||
import cn.lili.modules.promotion.entity.dos.MemberCoupon;
|
||||
import cn.lili.modules.promotion.entity.enums.CouponScopeTypeEnum;
|
||||
import cn.lili.modules.promotion.entity.enums.CouponTypeEnum;
|
||||
import cn.lili.modules.promotion.entity.enums.PromotionsScopeTypeEnum;
|
||||
import cn.lili.modules.promotion.entity.vos.MemberCouponVO;
|
||||
import cn.lili.modules.promotion.service.MemberCouponService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@ -147,7 +147,7 @@ public class CouponRender implements CartRenderStep {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
//优惠券类型判定
|
||||
switch (CouponScopeTypeEnum.valueOf(memberCoupon.getScopeType())) {
|
||||
switch (PromotionsScopeTypeEnum.valueOf(memberCoupon.getScopeType())) {
|
||||
case ALL:
|
||||
return filterSku;
|
||||
case PORTION_GOODS:
|
||||
|
@ -13,6 +13,7 @@ import cn.lili.modules.order.cart.render.CartRenderStep;
|
||||
import cn.lili.modules.order.cart.render.util.PromotionPriceUtil;
|
||||
import cn.lili.modules.order.order.entity.dto.PriceDetailDTO;
|
||||
import cn.lili.modules.promotion.entity.dos.PromotionGoods;
|
||||
import cn.lili.modules.promotion.entity.enums.PromotionsScopeTypeEnum;
|
||||
import cn.lili.modules.promotion.service.FullDiscountService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
@ -55,30 +56,30 @@ public class FullDiscountRender implements CartRenderStep {
|
||||
List<String> storeIds = tradeDTO.getCartList().stream().map(CartVO::getStoreId).collect(Collectors.toList());
|
||||
//获取当前店铺进行到满减活动
|
||||
List<FullDiscountVO> fullDiscounts = fullDiscountService.currentPromotion(storeIds);
|
||||
if (fullDiscounts == null || fullDiscounts.size() == 0) {
|
||||
if (fullDiscounts == null || fullDiscounts.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
//循环满减信息
|
||||
for (FullDiscountVO fullDiscount : fullDiscounts) {
|
||||
//判定参与活动的商品 全品类参与或者部分商品参与,则进行云散
|
||||
if (fullDiscount.getNumber() == -1 || fullDiscount.getPromotionGoodsList() != null) {
|
||||
//循环店铺购物车
|
||||
for (CartVO cart : cartList) {
|
||||
//如果购物车中的店铺id与活动店铺id相等,则进行促销计算
|
||||
if (fullDiscount.getStoreId().equals(cart.getStoreId())) {
|
||||
//循环店铺购物车
|
||||
for (CartVO cart : cartList) {
|
||||
//如果购物车中的店铺id与活动店铺id相等,则进行促销计算
|
||||
if (fullDiscount.getStoreId().equals(cart.getStoreId())) {
|
||||
|
||||
//如果有赠品,则将赠品信息写入
|
||||
if (fullDiscount.getIsGift()) {
|
||||
GoodsSku goodsSku = goodsSkuService.getGoodsSkuByIdFromCache(fullDiscount.getGiftId());
|
||||
fullDiscount.setGiftSku(goodsSku);
|
||||
}
|
||||
//如果有赠品,则将赠品信息写入
|
||||
if (Boolean.TRUE.equals(fullDiscount.getIsGift())) {
|
||||
GoodsSku goodsSku = goodsSkuService.getGoodsSkuByIdFromCache(fullDiscount.getGiftId());
|
||||
fullDiscount.setGiftSku(goodsSku);
|
||||
}
|
||||
|
||||
//写入满减活动
|
||||
cart.setFullDiscount(fullDiscount);
|
||||
Map<String, Double> skuPriceDetail;
|
||||
//参与活动的sku判定
|
||||
skuPriceDetail = initFullDiscountGoods(fullDiscount, cart.getCheckedSkuList());
|
||||
//写入满减活动
|
||||
cart.setFullDiscount(fullDiscount);
|
||||
Map<String, Double> skuPriceDetail;
|
||||
//参与活动的sku判定
|
||||
skuPriceDetail = initFullDiscountGoods(fullDiscount, cart.getCheckedSkuList());
|
||||
if (!skuPriceDetail.isEmpty()) {
|
||||
//记录参与满减活动的sku
|
||||
cart.setFullDiscountSkuIds(new ArrayList<>(skuPriceDetail.keySet()));
|
||||
|
||||
@ -87,11 +88,11 @@ public class FullDiscountRender implements CartRenderStep {
|
||||
|
||||
if (isFull(countPrice, cart)) {
|
||||
//如果减现金
|
||||
if (fullDiscount.getIsFullMinus()) {
|
||||
if (Boolean.TRUE.equals(fullDiscount.getIsFullMinus())) {
|
||||
promotionPriceUtil.recountPrice(tradeDTO, skuPriceDetail, fullDiscount.getFullMinus(), PromotionTypeEnum.FULL_DISCOUNT);
|
||||
}
|
||||
//打折
|
||||
else if (fullDiscount.getIsFullRate()) {
|
||||
else if (Boolean.TRUE.equals(fullDiscount.getIsFullRate())) {
|
||||
this.renderFullRate(cart, skuPriceDetail, CurrencyUtil.div(fullDiscount.getFullRate(), 10));
|
||||
}
|
||||
//渲染满优惠
|
||||
@ -100,6 +101,7 @@ public class FullDiscountRender implements CartRenderStep {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -145,19 +147,17 @@ public class FullDiscountRender implements CartRenderStep {
|
||||
Map<String, Double> skuPriceDetail = new HashMap<>(16);
|
||||
|
||||
//全品类参与
|
||||
if (fullDiscount.getNumber() == -1) {
|
||||
if (PromotionsScopeTypeEnum.ALL.name().equals(fullDiscount.getScopeType())) {
|
||||
for (CartSkuVO cartSkuVO : cartSkuVOS) {
|
||||
skuPriceDetail.put(cartSkuVO.getGoodsSku().getId(), cartSkuVO.getPriceDetailDTO().getGoodsPrice());
|
||||
}
|
||||
} else {
|
||||
//判定参与活动的商品
|
||||
for (PromotionGoods promotionGoods : fullDiscount.getPromotionGoodsList()) {
|
||||
//sku 集合判定
|
||||
for (CartSkuVO cartSkuVO : cartSkuVOS) {
|
||||
// 如果参加满减,并且购物车选中状态 ,则记录商品sku
|
||||
if (cartSkuVO.getChecked() && cartSkuVO.getGoodsSku().getId().equals(promotionGoods.getSkuId())) {
|
||||
skuPriceDetail.put(cartSkuVO.getGoodsSku().getId(), cartSkuVO.getPriceDetailDTO().getGoodsPrice());
|
||||
}
|
||||
List<String> collect = fullDiscount.getPromotionGoodsList().stream().map(PromotionGoods::getSkuId).collect(Collectors.toList());
|
||||
//sku 集合判定
|
||||
for (CartSkuVO cartSkuVO : cartSkuVOS) {
|
||||
// 如果参加满减,并且购物车选中状态 ,则记录商品sku
|
||||
if (Boolean.TRUE.equals(cartSkuVO.getChecked()) && collect.contains(cartSkuVO.getGoodsSku().getId())) {
|
||||
skuPriceDetail.put(cartSkuVO.getGoodsSku().getId(), cartSkuVO.getPriceDetailDTO().getGoodsPrice());
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -173,17 +173,17 @@ public class FullDiscountRender implements CartRenderStep {
|
||||
//获取参与活动的商品总价
|
||||
FullDiscountVO fullDiscount = cartVO.getFullDiscount();
|
||||
|
||||
if (fullDiscount.getIsCoupon()) {
|
||||
if (Boolean.TRUE.equals(fullDiscount.getIsCoupon())) {
|
||||
cartVO.getGiftCouponList().add(fullDiscount.getCouponId());
|
||||
}
|
||||
if (fullDiscount.getIsGift()) {
|
||||
if (Boolean.TRUE.equals(fullDiscount.getIsGift())) {
|
||||
cartVO.setGiftList(Arrays.asList(fullDiscount.getGiftId().split(",")));
|
||||
}
|
||||
if (fullDiscount.getIsPoint()) {
|
||||
if (Boolean.TRUE.equals(fullDiscount.getIsPoint())) {
|
||||
cartVO.setGiftPoint(fullDiscount.getPoint());
|
||||
}
|
||||
//如果满足,判定是否免邮,免邮的话需要渲染一边sku
|
||||
if (fullDiscount.getIsFreeFreight()) {
|
||||
if (Boolean.TRUE.equals(fullDiscount.getIsFreeFreight())) {
|
||||
for (CartSkuVO skuVO : cartVO.getCheckedSkuList()) {
|
||||
skuVO.setIsFreeFreight(true);
|
||||
}
|
||||
@ -214,7 +214,7 @@ public class FullDiscountRender implements CartRenderStep {
|
||||
* @return 总价
|
||||
*/
|
||||
private Double countPrice(Map<String, Double> skuPriceMap) {
|
||||
Double count = 0d;
|
||||
double count = 0d;
|
||||
|
||||
for (Double price : skuPriceMap.values()) {
|
||||
count = CurrencyUtil.add(count, price);
|
||||
|
@ -25,14 +25,10 @@ import cn.lili.modules.order.cart.entity.vo.TradeParams;
|
||||
import cn.lili.modules.order.cart.render.TradeBuilder;
|
||||
import cn.lili.modules.order.order.entity.dos.Trade;
|
||||
import cn.lili.modules.order.order.entity.vo.ReceiptVO;
|
||||
import cn.lili.modules.promotion.entity.dos.KanjiaActivity;
|
||||
import cn.lili.modules.promotion.entity.dos.MemberCoupon;
|
||||
import cn.lili.modules.promotion.entity.dos.Pintuan;
|
||||
import cn.lili.modules.promotion.entity.dos.PromotionGoods;
|
||||
import cn.lili.modules.promotion.entity.dto.KanjiaActivityGoodsDTO;
|
||||
import cn.lili.modules.promotion.entity.enums.CouponScopeTypeEnum;
|
||||
import cn.lili.modules.promotion.entity.dos.*;
|
||||
import cn.lili.modules.promotion.entity.enums.KanJiaStatusEnum;
|
||||
import cn.lili.modules.promotion.entity.enums.MemberCouponStatusEnum;
|
||||
import cn.lili.modules.promotion.entity.enums.PromotionsScopeTypeEnum;
|
||||
import cn.lili.modules.promotion.entity.vos.PointsGoodsVO;
|
||||
import cn.lili.modules.promotion.entity.vos.kanjia.KanjiaActivitySearchParams;
|
||||
import cn.lili.modules.promotion.service.*;
|
||||
@ -123,6 +119,11 @@ public class CartServiceImpl implements CartService {
|
||||
}
|
||||
CartTypeEnum cartTypeEnum = getCartType(cartType);
|
||||
GoodsSku dataSku = checkGoods(skuId);
|
||||
Double validPromotionsGoodsPrice = promotionGoodsService.getValidPromotionsGoodsPrice(skuId, Arrays.asList(PromotionTypeEnum.SECKILL.name(), PromotionTypeEnum.PINTUAN.name()));
|
||||
if (validPromotionsGoodsPrice != null) {
|
||||
dataSku.setIsPromotion(true);
|
||||
dataSku.setPromotionPrice(validPromotionsGoodsPrice);
|
||||
}
|
||||
try {
|
||||
//购物车方式购买需要保存之前的选择,其他方式购买,则直接抹除掉之前的记录
|
||||
TradeDTO tradeDTO;
|
||||
@ -633,15 +634,15 @@ public class CartServiceImpl implements CartService {
|
||||
}
|
||||
|
||||
//当初购物车商品中是否存在符合优惠券条件的商品sku
|
||||
if (memberCoupon.getScopeType().equals(CouponScopeTypeEnum.ALL.name())) {
|
||||
if (memberCoupon.getScopeType().equals(PromotionsScopeTypeEnum.ALL.name())) {
|
||||
return cartSkuVOS;
|
||||
} else if (memberCoupon.getScopeType().equals(CouponScopeTypeEnum.PORTION_GOODS_CATEGORY.name())) {
|
||||
} else if (memberCoupon.getScopeType().equals(PromotionsScopeTypeEnum.PORTION_GOODS_CATEGORY.name())) {
|
||||
//分类路径是否包含
|
||||
return cartSkuVOS.stream().filter(i -> i.getGoodsSku().getCategoryPath().indexOf("," + memberCoupon.getScopeId() + ",") <= 0).collect(Collectors.toList());
|
||||
} else if (memberCoupon.getScopeType().equals(CouponScopeTypeEnum.PORTION_GOODS.name())) {
|
||||
} else if (memberCoupon.getScopeType().equals(PromotionsScopeTypeEnum.PORTION_GOODS.name())) {
|
||||
//范围关联ID是否包含
|
||||
return cartSkuVOS.stream().filter(i -> memberCoupon.getScopeId().indexOf("," + i.getGoodsSku().getId() + ",") <= 0).collect(Collectors.toList());
|
||||
} else if (memberCoupon.getScopeType().equals(CouponScopeTypeEnum.PORTION_SHOP_CATEGORY.name())) {
|
||||
} else if (memberCoupon.getScopeType().equals(PromotionsScopeTypeEnum.PORTION_SHOP_CATEGORY.name())) {
|
||||
//店铺分类路径是否包含
|
||||
return cartSkuVOS.stream().filter(i -> i.getGoodsSku().getStoreCategoryPath().indexOf("," + memberCoupon.getScopeId() + ",") <= 0).collect(Collectors.toList());
|
||||
}
|
||||
@ -697,7 +698,7 @@ public class CartServiceImpl implements CartService {
|
||||
throw new ServiceException(ResultCode.CART_PINTUAN_NOT_EXIST_ERROR);
|
||||
}
|
||||
//检测拼团限购数量
|
||||
Pintuan pintuan = pintuanService.getPintuanById(cartSkuVO.getPintuanId());
|
||||
Pintuan pintuan = pintuanService.getById(cartSkuVO.getPintuanId());
|
||||
Integer limitNum = pintuan.getLimitNum();
|
||||
if (limitNum != 0 && cartSkuVO.getNum() > limitNum) {
|
||||
throw new ServiceException(ResultCode.CART_PINTUAN_LIMIT_ERROR);
|
||||
@ -712,7 +713,7 @@ public class CartServiceImpl implements CartService {
|
||||
private void checkKanjia(CartSkuVO cartSkuVO) {
|
||||
|
||||
//根据skuId获取砍价商品
|
||||
KanjiaActivityGoodsDTO kanjiaActivityGoodsDTO = kanjiaActivityGoodsService.getKanjiaGoodsBySkuId(cartSkuVO.getGoodsSku().getId());
|
||||
KanjiaActivityGoods kanjiaActivityGoodsDTO = kanjiaActivityGoodsService.getKanjiaGoodsBySkuId(cartSkuVO.getGoodsSku().getId());
|
||||
|
||||
//查找当前会员的砍价商品活动
|
||||
KanjiaActivitySearchParams kanjiaActivitySearchParams = new KanjiaActivitySearchParams();
|
||||
@ -743,7 +744,7 @@ public class CartServiceImpl implements CartService {
|
||||
*/
|
||||
private void checkPoint(CartSkuVO cartSkuVO) {
|
||||
|
||||
PointsGoodsVO pointsGoodsVO = pointsGoodsService.getPointsGoodsVOByMongo(cartSkuVO.getGoodsSku().getId());
|
||||
PointsGoodsVO pointsGoodsVO = pointsGoodsService.getPointsGoodsDetailBySkuId(cartSkuVO.getGoodsSku().getId());
|
||||
|
||||
if (pointsGoodsVO != null) {
|
||||
|
||||
|
@ -6,10 +6,7 @@ import cn.lili.common.security.context.UserContext;
|
||||
import cn.lili.common.security.enums.UserEnums;
|
||||
import cn.lili.common.utils.DateUtil;
|
||||
import cn.lili.common.vo.PageVO;
|
||||
import cn.lili.modules.order.order.entity.enums.CommentStatusEnum;
|
||||
import cn.lili.modules.order.order.entity.enums.OrderStatusEnum;
|
||||
import cn.lili.modules.order.order.entity.enums.OrderTagEnum;
|
||||
import cn.lili.modules.order.order.entity.enums.OrderTypeEnum;
|
||||
import cn.lili.modules.order.order.entity.enums.*;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
@ -104,6 +101,18 @@ public class OrderSearchParams extends PageVO {
|
||||
@ApiModelProperty(value = "评论状态:未评论(UNFINISHED),待追评(WAIT_CHASE),评论完成(FINISHED),")
|
||||
private String commentStatus;
|
||||
|
||||
@ApiModelProperty(value = "是否为其他订单下的订单,如果是则为依赖订单的sn,否则为空")
|
||||
private String parentOrderSn;
|
||||
|
||||
@ApiModelProperty(value = "是否为某订单类型的订单,如果是则为订单类型的id,否则为空")
|
||||
private String promotionId;
|
||||
|
||||
/**
|
||||
* @see OrderPromotionTypeEnum
|
||||
*/
|
||||
@ApiModelProperty(value = "订单促销类型")
|
||||
private String orderPromotionType;
|
||||
|
||||
public <T> QueryWrapper<T> queryWrapper() {
|
||||
AuthUser currentUser = Objects.requireNonNull(UserContext.getCurrentUser());
|
||||
QueryWrapper<T> wrapper = new QueryWrapper<>();
|
||||
@ -192,6 +201,12 @@ public class OrderSearchParams extends PageVO {
|
||||
}
|
||||
}
|
||||
|
||||
// 依赖订单
|
||||
wrapper.eq(CharSequenceUtil.isNotEmpty(parentOrderSn), "o.parent_order_sn", parentOrderSn);
|
||||
// 促销活动id
|
||||
wrapper.eq(CharSequenceUtil.isNotEmpty(promotionId), "o.promotion_id", promotionId);
|
||||
|
||||
wrapper.eq(CharSequenceUtil.isNotEmpty(orderPromotionType), "o.order_promotion_type", orderPromotionType);
|
||||
|
||||
wrapper.eq("o.delete_flag", false);
|
||||
return wrapper;
|
||||
|
@ -1,8 +1,8 @@
|
||||
package cn.lili.modules.order.order.entity.vo;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.lili.modules.order.order.entity.dos.OrderComplaint;
|
||||
import cn.lili.modules.order.aftersale.entity.enums.ComplaintStatusEnum;
|
||||
import cn.lili.modules.order.order.entity.dos.OrderComplaint;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
@ -74,4 +74,15 @@ public interface OrderMapper extends BaseMapper<Order> {
|
||||
" FROM li_order o INNER JOIN li_order_item AS oi on o.sn = oi.order_sn ${ew.customSqlSegment} ")
|
||||
IPage<OrderSimpleVO> queryByParams(IPage<OrderSimpleVO> page, @Param(Constants.WRAPPER) Wrapper<OrderSimpleVO> queryWrapper);
|
||||
|
||||
/**
|
||||
* 查询订单信息
|
||||
*
|
||||
* @param queryWrapper 查询条件
|
||||
* @return 简短订单分页
|
||||
*/
|
||||
@Select("select o.* " +
|
||||
" FROM li_order o INNER JOIN li_order_item AS oi on o.sn = oi.order_sn ${ew.customSqlSegment} ")
|
||||
List<Order> queryListByParams(@Param(Constants.WRAPPER) Wrapper<Order> queryWrapper);
|
||||
|
||||
|
||||
}
|
@ -51,6 +51,46 @@ public interface OrderService extends IService<Order> {
|
||||
*/
|
||||
IPage<OrderSimpleVO> queryByParams(OrderSearchParams orderSearchParams);
|
||||
|
||||
/**
|
||||
* 订单信息
|
||||
*
|
||||
* @param orderSearchParams 查询参数
|
||||
* @return 订单信息
|
||||
*/
|
||||
List<Order> queryListByParams(OrderSearchParams orderSearchParams);
|
||||
|
||||
/**
|
||||
* 根据促销查询订单
|
||||
*
|
||||
* @param orderPromotionType 订单类型
|
||||
* @param payStatus 支付状态
|
||||
* @param parentOrderSn 依赖订单编号
|
||||
* @param orderSn 订单编号
|
||||
* @return 订单信息
|
||||
*/
|
||||
List<Order> queryListByPromotion(String orderPromotionType, String payStatus, String parentOrderSn, String orderSn);
|
||||
|
||||
/**
|
||||
* 根据促销查询订单
|
||||
*
|
||||
* @param orderPromotionType 订单类型
|
||||
* @param payStatus 支付状态
|
||||
* @param parentOrderSn 依赖订单编号
|
||||
* @param orderSn 订单编号
|
||||
* @return 订单信息
|
||||
*/
|
||||
Integer queryCountByPromotion(String orderPromotionType, String payStatus, String parentOrderSn, String orderSn);
|
||||
|
||||
/**
|
||||
* 父级拼团订单分组
|
||||
*
|
||||
* @param pintuanId 拼团id
|
||||
* @return 拼团订单信息
|
||||
*/
|
||||
List<Order> queryListByPromotion(String pintuanId);
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 查询导出订单列表
|
||||
*
|
||||
|
@ -4,6 +4,7 @@ import cn.hutool.core.util.StrUtil;
|
||||
import cn.lili.common.enums.ResultCode;
|
||||
import cn.lili.common.exception.ServiceException;
|
||||
import cn.lili.common.security.AuthUser;
|
||||
import cn.lili.common.security.OperationalJudgment;
|
||||
import cn.lili.common.security.context.UserContext;
|
||||
import cn.lili.common.security.enums.UserEnums;
|
||||
import cn.lili.common.utils.BeanUtil;
|
||||
@ -11,11 +12,11 @@ import cn.lili.common.utils.StringUtils;
|
||||
import cn.lili.common.vo.PageVO;
|
||||
import cn.lili.modules.goods.entity.dos.GoodsSku;
|
||||
import cn.lili.modules.goods.service.GoodsSkuService;
|
||||
import cn.lili.modules.order.aftersale.entity.enums.ComplaintStatusEnum;
|
||||
import cn.lili.modules.order.order.entity.dos.OrderComplaint;
|
||||
import cn.lili.modules.order.order.entity.dos.OrderComplaintCommunication;
|
||||
import cn.lili.modules.order.order.entity.dos.OrderItem;
|
||||
import cn.lili.modules.order.order.entity.dto.OrderComplaintDTO;
|
||||
import cn.lili.modules.order.aftersale.entity.enums.ComplaintStatusEnum;
|
||||
import cn.lili.modules.order.order.entity.enums.OrderComplaintStatusEnum;
|
||||
import cn.lili.modules.order.order.entity.vo.*;
|
||||
import cn.lili.modules.order.order.mapper.OrderComplaintMapper;
|
||||
@ -23,7 +24,6 @@ import cn.lili.modules.order.order.service.OrderComplaintCommunicationService;
|
||||
import cn.lili.modules.order.order.service.OrderComplaintService;
|
||||
import cn.lili.modules.order.order.service.OrderItemService;
|
||||
import cn.lili.modules.order.order.service.OrderService;
|
||||
import cn.lili.common.security.OperationalJudgment;
|
||||
import cn.lili.mybatis.util.PageUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
|
@ -3,6 +3,7 @@ package cn.lili.modules.order.order.serviceimpl;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import cn.lili.common.enums.ResultCode;
|
||||
import cn.lili.common.exception.ServiceException;
|
||||
import cn.lili.common.security.OperationalJudgment;
|
||||
import cn.lili.common.utils.CurrencyUtil;
|
||||
import cn.lili.modules.order.order.aop.OrderLogPoint;
|
||||
import cn.lili.modules.order.order.entity.dos.Order;
|
||||
@ -15,7 +16,6 @@ import cn.lili.modules.order.order.service.OrderPriceService;
|
||||
import cn.lili.modules.order.order.service.OrderService;
|
||||
import cn.lili.modules.payment.kit.plugin.bank.BankTransferPlugin;
|
||||
import cn.lili.modules.system.aspect.annotation.SystemLogPoint;
|
||||
import cn.lili.common.security.OperationalJudgment;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
@ -8,13 +8,14 @@ import cn.hutool.json.JSONUtil;
|
||||
import cn.hutool.poi.excel.ExcelReader;
|
||||
import cn.hutool.poi.excel.ExcelUtil;
|
||||
import cn.hutool.poi.excel.ExcelWriter;
|
||||
import cn.lili.common.enums.PromotionTypeEnum;
|
||||
import cn.lili.common.enums.ResultCode;
|
||||
import cn.lili.common.exception.ServiceException;
|
||||
import cn.lili.common.properties.RocketmqCustomProperties;
|
||||
import cn.lili.common.security.OperationalJudgment;
|
||||
import cn.lili.common.security.context.UserContext;
|
||||
import cn.lili.common.security.enums.UserEnums;
|
||||
import cn.lili.common.utils.StringUtils;
|
||||
import cn.lili.common.vo.PageVO;
|
||||
import cn.lili.modules.goods.entity.dto.GoodsCompleteMessage;
|
||||
import cn.lili.modules.member.entity.dto.MemberAddressDTO;
|
||||
import cn.lili.modules.order.cart.entity.dto.TradeDTO;
|
||||
@ -40,13 +41,10 @@ import cn.lili.modules.order.trade.service.OrderLogService;
|
||||
import cn.lili.modules.payment.entity.enums.PaymentMethodEnum;
|
||||
import cn.lili.modules.promotion.entity.dos.Pintuan;
|
||||
import cn.lili.modules.promotion.service.PintuanService;
|
||||
import cn.lili.modules.statistics.entity.dto.StatisticsQueryParam;
|
||||
import cn.lili.modules.statistics.util.StatisticsDateUtil;
|
||||
import cn.lili.modules.system.aspect.annotation.SystemLogPoint;
|
||||
import cn.lili.modules.system.entity.dos.Logistics;
|
||||
import cn.lili.modules.system.entity.vo.Traces;
|
||||
import cn.lili.modules.system.service.LogisticsService;
|
||||
import cn.lili.common.security.OperationalJudgment;
|
||||
import cn.lili.mybatis.util.PageUtil;
|
||||
import cn.lili.rocketmq.RocketmqSendCallbackBuilder;
|
||||
import cn.lili.rocketmq.tags.GoodsTagsEnum;
|
||||
@ -195,6 +193,70 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
||||
return this.baseMapper.queryByParams(PageUtil.initPage(orderSearchParams), queryWrapper);
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单信息
|
||||
*
|
||||
* @param orderSearchParams 查询参数
|
||||
* @return 订单信息
|
||||
*/
|
||||
@Override
|
||||
public List<Order> queryListByParams(OrderSearchParams orderSearchParams) {
|
||||
return this.baseMapper.queryListByParams(orderSearchParams.queryWrapper());
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据促销查询订单
|
||||
*
|
||||
* @param orderPromotionType 订单类型
|
||||
* @param payStatus 支付状态
|
||||
* @param parentOrderSn 依赖订单编号
|
||||
* @param orderSn 订单编号
|
||||
* @return 订单信息
|
||||
*/
|
||||
@Override
|
||||
public List<Order> queryListByPromotion(String orderPromotionType, String payStatus, String parentOrderSn, String orderSn) {
|
||||
LambdaQueryWrapper<Order> queryWrapper = new LambdaQueryWrapper<>();
|
||||
//查找团长订单和已和当前拼团订单拼团的订单
|
||||
queryWrapper.eq(Order::getOrderPromotionType, orderPromotionType)
|
||||
.eq(Order::getPayStatus, payStatus)
|
||||
.and(i -> i.eq(Order::getParentOrderSn, parentOrderSn).or(j -> j.eq(Order::getSn, orderSn)));
|
||||
return this.list(queryWrapper);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据促销查询订单
|
||||
*
|
||||
* @param orderPromotionType 订单类型
|
||||
* @param payStatus 支付状态
|
||||
* @param parentOrderSn 依赖订单编号
|
||||
* @param orderSn 订单编号
|
||||
* @return 订单信息
|
||||
*/
|
||||
@Override
|
||||
public Integer queryCountByPromotion(String orderPromotionType, String payStatus, String parentOrderSn, String orderSn) {
|
||||
LambdaQueryWrapper<Order> queryWrapper = new LambdaQueryWrapper<>();
|
||||
//查找团长订单和已和当前拼团订单拼团的订单
|
||||
queryWrapper.eq(Order::getOrderPromotionType, orderPromotionType)
|
||||
.eq(Order::getPayStatus, payStatus)
|
||||
.and(i -> i.eq(Order::getParentOrderSn, parentOrderSn).or(j -> j.eq(Order::getSn, orderSn)));
|
||||
return this.count(queryWrapper);
|
||||
}
|
||||
|
||||
/**
|
||||
* 父级拼团订单
|
||||
*
|
||||
* @param pintuanId 拼团id
|
||||
* @return 拼团订单信息
|
||||
*/
|
||||
@Override
|
||||
public List<Order> queryListByPromotion(String pintuanId) {
|
||||
LambdaQueryWrapper<Order> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(Order::getOrderPromotionType, PromotionTypeEnum.PINTUAN.name());
|
||||
queryWrapper.eq(Order::getPromotionId, pintuanId);
|
||||
queryWrapper.nested(i -> i.eq(Order::getPayStatus, PayStatusEnum.PAID.name()).or().eq(Order::getOrderStatus, OrderStatusEnum.PAID.name()));
|
||||
return this.list(queryWrapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<OrderExportDTO> queryExportOrder(OrderSearchParams orderSearchParams) {
|
||||
return this.baseMapper.queryExportOrder(orderSearchParams.queryWrapper());
|
||||
@ -502,7 +564,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
||||
@Override
|
||||
public void agglomeratePintuanOrder(String pintuanId, String parentOrderSn) {
|
||||
//获取拼团配置
|
||||
Pintuan pintuan = pintuanService.getPintuanById(pintuanId);
|
||||
Pintuan pintuan = pintuanService.getById(pintuanId);
|
||||
List<Order> list = this.getPintuanOrder(pintuanId, parentOrderSn);
|
||||
if (Boolean.TRUE.equals(pintuan.getFictitious()) && pintuan.getRequiredNum() > list.size()) {
|
||||
//如果开启虚拟成团且当前订单数量不足成团数量,则认为拼团成功
|
||||
@ -659,7 +721,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
||||
return;
|
||||
}
|
||||
//获取拼团配置
|
||||
Pintuan pintuan = pintuanService.getPintuanById(pintuanId);
|
||||
Pintuan pintuan = pintuanService.getById(pintuanId);
|
||||
List<Order> list = this.getPintuanOrder(pintuanId, parentOrderSn);
|
||||
int count = list.size();
|
||||
if (count == 1) {
|
||||
@ -726,7 +788,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
||||
private void pintuanOrderFailed(List<Order> list) {
|
||||
for (Order order : list) {
|
||||
try {
|
||||
this.cancel(order.getSn(), "拼团人数不足,拼团失败!");
|
||||
this.systemCancel(order.getSn(), "拼团人数不足,拼团失败!");
|
||||
} catch (Exception e) {
|
||||
log.error("拼团订单取消失败", e);
|
||||
}
|
||||
@ -758,7 +820,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
||||
private void checkOrder(Order order) {
|
||||
//订单类型为拼团订单,检测购买数量是否超过了限购数量
|
||||
if (OrderPromotionTypeEnum.PINTUAN.name().equals(order.getOrderType())) {
|
||||
Pintuan pintuan = pintuanService.getPintuanById(order.getPromotionId());
|
||||
Pintuan pintuan = pintuanService.getById(order.getPromotionId());
|
||||
Integer limitNum = pintuan.getLimitNum();
|
||||
if (limitNum != 0 && order.getGoodsNum() > limitNum) {
|
||||
throw new ServiceException(ResultCode.PINTUAN_LIMIT_NUM_ERROR);
|
||||
|
@ -1,16 +1,15 @@
|
||||
package cn.lili.modules.payment.kit;
|
||||
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import cn.lili.common.enums.ClientTypeEnum;
|
||||
import cn.lili.common.enums.ResultCode;
|
||||
import cn.lili.common.exception.ServiceException;
|
||||
import cn.lili.common.security.context.UserContext;
|
||||
import cn.lili.common.utils.SpringContextUtil;
|
||||
import cn.lili.common.vo.ResultMessage;
|
||||
import cn.lili.common.enums.ClientTypeEnum;
|
||||
import cn.lili.modules.wallet.service.MemberWalletService;
|
||||
import cn.lili.modules.payment.kit.dto.PayParam;
|
||||
import cn.lili.modules.payment.entity.enums.PaymentClientEnum;
|
||||
import cn.lili.modules.payment.entity.enums.PaymentMethodEnum;
|
||||
import cn.lili.modules.payment.kit.dto.PayParam;
|
||||
import cn.lili.modules.payment.kit.params.CashierExecute;
|
||||
import cn.lili.modules.payment.kit.params.dto.CashierParam;
|
||||
import cn.lili.modules.system.entity.dos.Setting;
|
||||
@ -19,6 +18,7 @@ import cn.lili.modules.system.entity.dto.payment.PaymentSupportSetting;
|
||||
import cn.lili.modules.system.entity.dto.payment.dto.PaymentSupportItem;
|
||||
import cn.lili.modules.system.entity.enums.SettingEnum;
|
||||
import cn.lili.modules.system.service.SettingService;
|
||||
import cn.lili.modules.wallet.service.MemberWalletService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
@ -4,16 +4,16 @@ import cn.hutool.json.JSONUtil;
|
||||
import cn.lili.common.enums.ResultCode;
|
||||
import cn.lili.common.exception.ServiceException;
|
||||
import cn.lili.modules.order.order.entity.enums.PayStatusEnum;
|
||||
import cn.lili.modules.wallet.entity.dos.Recharge;
|
||||
import cn.lili.modules.wallet.service.RechargeService;
|
||||
import cn.lili.modules.payment.entity.enums.CashierEnum;
|
||||
import cn.lili.modules.payment.kit.dto.PayParam;
|
||||
import cn.lili.modules.payment.kit.dto.PaymentSuccessParams;
|
||||
import cn.lili.modules.payment.entity.enums.CashierEnum;
|
||||
import cn.lili.modules.payment.kit.params.CashierExecute;
|
||||
import cn.lili.modules.payment.kit.params.dto.CashierParam;
|
||||
import cn.lili.modules.system.entity.dto.BaseSetting;
|
||||
import cn.lili.modules.system.entity.enums.SettingEnum;
|
||||
import cn.lili.modules.system.service.SettingService;
|
||||
import cn.lili.modules.wallet.entity.dos.Recharge;
|
||||
import cn.lili.modules.wallet.service.RechargeService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
@ -5,19 +5,19 @@ import cn.lili.common.enums.ResultUtil;
|
||||
import cn.lili.common.exception.ServiceException;
|
||||
import cn.lili.common.security.context.UserContext;
|
||||
import cn.lili.common.vo.ResultMessage;
|
||||
import cn.lili.modules.wallet.entity.dto.MemberWalletUpdateDTO;
|
||||
import cn.lili.modules.wallet.service.MemberWalletService;
|
||||
import cn.lili.modules.wallet.entity.enums.DepositServiceTypeEnum;
|
||||
import cn.lili.modules.payment.entity.RefundLog;
|
||||
import cn.lili.modules.payment.entity.enums.CashierEnum;
|
||||
import cn.lili.modules.payment.entity.enums.PaymentMethodEnum;
|
||||
import cn.lili.modules.payment.kit.CashierSupport;
|
||||
import cn.lili.modules.payment.kit.Payment;
|
||||
import cn.lili.modules.payment.kit.dto.PayParam;
|
||||
import cn.lili.modules.payment.kit.dto.PaymentSuccessParams;
|
||||
import cn.lili.modules.payment.entity.enums.CashierEnum;
|
||||
import cn.lili.modules.payment.entity.enums.PaymentMethodEnum;
|
||||
import cn.lili.modules.payment.kit.params.dto.CashierParam;
|
||||
import cn.lili.modules.payment.service.PaymentService;
|
||||
import cn.lili.modules.payment.service.RefundLogService;
|
||||
import cn.lili.modules.wallet.entity.dto.MemberWalletUpdateDTO;
|
||||
import cn.lili.modules.wallet.entity.enums.DepositServiceTypeEnum;
|
||||
import cn.lili.modules.wallet.service.MemberWalletService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
@ -7,22 +7,23 @@ import cn.hutool.json.JSONObject;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import cn.lili.cache.Cache;
|
||||
import cn.lili.cache.CachePrefix;
|
||||
import cn.lili.common.enums.ClientTypeEnum;
|
||||
import cn.lili.common.enums.ResultCode;
|
||||
import cn.lili.common.enums.ResultUtil;
|
||||
import cn.lili.common.exception.ServiceException;
|
||||
import cn.lili.common.properties.ApiProperties;
|
||||
import cn.lili.common.security.context.UserContext;
|
||||
import cn.lili.common.utils.CurrencyUtil;
|
||||
import cn.lili.common.utils.SnowFlake;
|
||||
import cn.lili.common.utils.StringUtils;
|
||||
import cn.lili.common.vo.ResultMessage;
|
||||
import cn.lili.common.properties.ApiProperties;
|
||||
import cn.lili.common.enums.ClientTypeEnum;
|
||||
import cn.lili.modules.connect.entity.Connect;
|
||||
import cn.lili.modules.connect.entity.enums.ConnectEnum;
|
||||
import cn.lili.modules.connect.service.ConnectService;
|
||||
import cn.lili.modules.member.entity.dto.ConnectQueryDTO;
|
||||
import cn.lili.modules.order.order.service.OrderService;
|
||||
import cn.lili.modules.payment.entity.RefundLog;
|
||||
import cn.lili.modules.payment.entity.enums.PaymentMethodEnum;
|
||||
import cn.lili.modules.payment.kit.CashierSupport;
|
||||
import cn.lili.modules.payment.kit.Payment;
|
||||
import cn.lili.modules.payment.kit.core.PaymentHttpResponse;
|
||||
@ -32,7 +33,6 @@ import cn.lili.modules.payment.kit.core.kit.*;
|
||||
import cn.lili.modules.payment.kit.core.utils.DateTimeZoneUtil;
|
||||
import cn.lili.modules.payment.kit.dto.PayParam;
|
||||
import cn.lili.modules.payment.kit.dto.PaymentSuccessParams;
|
||||
import cn.lili.modules.payment.entity.enums.PaymentMethodEnum;
|
||||
import cn.lili.modules.payment.kit.params.dto.CashierParam;
|
||||
import cn.lili.modules.payment.kit.plugin.wechat.enums.WechatApiEnum;
|
||||
import cn.lili.modules.payment.kit.plugin.wechat.enums.WechatDomain;
|
||||
|
@ -1,10 +1,17 @@
|
||||
package cn.lili.modules.promotion.entity.dos;
|
||||
|
||||
import cn.lili.modules.promotion.entity.dto.BasePromotion;
|
||||
import cn.lili.modules.promotion.entity.dto.BasePromotions;
|
||||
import cn.lili.modules.promotion.entity.enums.CouponRangeDayEnum;
|
||||
import cn.lili.modules.promotion.entity.enums.PromotionsStatusEnum;
|
||||
import cn.lili.modules.promotion.entity.vos.CouponVO;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.ToString;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
|
||||
|
||||
/**
|
||||
@ -13,15 +20,16 @@ import lombok.Data;
|
||||
* @author Chopper
|
||||
* @since 2020-03-19 10:44 上午
|
||||
*/
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
@TableName("li_coupon")
|
||||
@ApiModel(value = "优惠券实体类")
|
||||
public class Coupon extends BasePromotion {
|
||||
|
||||
@ToString(callSuper = true)
|
||||
@NoArgsConstructor
|
||||
public class Coupon extends BasePromotions {
|
||||
|
||||
private static final long serialVersionUID = 8372820376262437018L;
|
||||
|
||||
|
||||
@ApiModelProperty(value = "优惠券名称")
|
||||
private String couponName;
|
||||
|
||||
@ -33,21 +41,12 @@ public class Coupon extends BasePromotion {
|
||||
@ApiModelProperty(value = "优惠券类型")
|
||||
private String couponType;
|
||||
|
||||
/**
|
||||
* @see cn.lili.modules.promotion.entity.enums.CouponScopeTypeEnum
|
||||
*/
|
||||
@ApiModelProperty(value = "关联范围类型")
|
||||
private String scopeType;
|
||||
|
||||
@ApiModelProperty(value = "面额")
|
||||
private Double price;
|
||||
|
||||
@ApiModelProperty(value = "折扣")
|
||||
private Double couponDiscount;
|
||||
|
||||
@ApiModelProperty(value = "范围关联的id")
|
||||
private String scopeId;
|
||||
|
||||
/**
|
||||
* @see cn.lili.modules.promotion.entity.enums.CouponGetEnum
|
||||
*/
|
||||
@ -77,7 +76,6 @@ public class Coupon extends BasePromotion {
|
||||
|
||||
/**
|
||||
* @see cn.lili.modules.promotion.entity.enums.CouponRangeDayEnum
|
||||
*
|
||||
*/
|
||||
@ApiModelProperty(value = "时间范围类型")
|
||||
private String rangeDayType;
|
||||
@ -85,4 +83,21 @@ public class Coupon extends BasePromotion {
|
||||
@ApiModelProperty(value = "有效期")
|
||||
private Integer effectiveDays;
|
||||
|
||||
public Coupon(CouponVO couponVO) {
|
||||
BeanUtils.copyProperties(couponVO, this);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return 促销状态
|
||||
* @see cn.lili.modules.promotion.entity.enums.PromotionsStatusEnum
|
||||
*/
|
||||
@Override
|
||||
public String getPromotionStatus() {
|
||||
if (this.rangeDayType != null && this.rangeDayType.equals(CouponRangeDayEnum.DYNAMICTIME.name())
|
||||
&& (this.effectiveDays != null && this.effectiveDays > 0 && this.effectiveDays <= 365)) {
|
||||
return PromotionsStatusEnum.START.name();
|
||||
}
|
||||
return super.getPromotionStatus();
|
||||
}
|
||||
}
|
@ -1,12 +1,13 @@
|
||||
package cn.lili.modules.promotion.entity.dos;
|
||||
|
||||
import cn.lili.modules.promotion.entity.dto.BasePromotion;
|
||||
import cn.lili.modules.promotion.entity.dto.BasePromotions;
|
||||
import cn.lili.modules.promotion.entity.enums.CouponActivitySendTypeEnum;
|
||||
import cn.lili.modules.promotion.entity.enums.CouponActivityTypeEnum;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
@ -16,10 +17,11 @@ import javax.validation.constraints.NotNull;
|
||||
* @author Bulbasaur
|
||||
* @since 2020-03-19 10:44 上午
|
||||
*/
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
@TableName("li_coupon_activity")
|
||||
@ApiModel(value = "优惠券活动实体类")
|
||||
public class CouponActivity extends BasePromotion {
|
||||
public class CouponActivity extends BasePromotions {
|
||||
|
||||
/**
|
||||
* @see CouponActivityTypeEnum
|
||||
|
@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
/**
|
||||
* 优惠券活动实体类
|
||||
@ -12,6 +13,7 @@ import lombok.Data;
|
||||
* @author Bulbasaur
|
||||
* @since 2020-03-19 10:44 上午
|
||||
*/
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
@TableName("li_coupon_activity_item")
|
||||
@ApiModel(value = "优惠券活动-优惠券关联实体类")
|
||||
|
@ -1,6 +1,6 @@
|
||||
package cn.lili.modules.promotion.entity.dos;
|
||||
|
||||
import cn.lili.modules.promotion.entity.dto.BasePromotion;
|
||||
import cn.lili.modules.promotion.entity.dto.BasePromotions;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
@ -21,7 +21,7 @@ import javax.validation.constraints.NotNull;
|
||||
@Data
|
||||
@TableName("li_full_discount")
|
||||
@ApiModel(value = "满优惠活动")
|
||||
public class FullDiscount extends BasePromotion {
|
||||
public class FullDiscount extends BasePromotions {
|
||||
|
||||
private static final long serialVersionUID = 430433787214894166L;
|
||||
|
||||
|
@ -6,14 +6,16 @@ import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
|
||||
/**
|
||||
* 砍价活动参与实体类
|
||||
*
|
||||
* @author qiuqiu
|
||||
* @date 2020-7-1 10:44 上午
|
||||
* @since 2020-7-1 10:44 上午
|
||||
*/
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
@TableName("li_kanjia_activity")
|
||||
@ApiModel(value = "砍价活动参与对象")
|
||||
|
@ -1,10 +1,11 @@
|
||||
package cn.lili.modules.promotion.entity.dos;
|
||||
|
||||
import cn.lili.modules.promotion.entity.dto.BasePromotion;
|
||||
import cn.lili.modules.promotion.entity.dto.BasePromotions;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
|
||||
@ -14,10 +15,11 @@ import javax.validation.constraints.NotEmpty;
|
||||
* @author qiuqiu
|
||||
* @date 2020-7-1 10:44 上午
|
||||
*/
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
@TableName("li_kanjia_activity_goods")
|
||||
@ApiModel(value = "砍价活动商品对象")
|
||||
public class KanjiaActivityGoods extends BasePromotion {
|
||||
public class KanjiaActivityGoods extends BasePromotions {
|
||||
|
||||
private static final long serialVersionUID = 6694714877345423488L;
|
||||
|
||||
@ -34,6 +36,10 @@ public class KanjiaActivityGoods extends BasePromotion {
|
||||
|
||||
@ApiModelProperty(value = "货品id")
|
||||
@NotEmpty(message = "货品id不能为空")
|
||||
private String goodsId;
|
||||
|
||||
@ApiModelProperty(value = "货品SkuId")
|
||||
@NotEmpty(message = "货品SkuId不能为空")
|
||||
private String skuId;
|
||||
|
||||
@ApiModelProperty(value = "货品名称")
|
||||
|
@ -3,14 +3,16 @@ package cn.lili.modules.promotion.entity.dos;
|
||||
import cn.hutool.core.date.DateField;
|
||||
import cn.hutool.core.date.DateTime;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.lili.mybatis.BaseEntity;
|
||||
import cn.lili.modules.promotion.entity.enums.CouponRangeDayEnum;
|
||||
import cn.lili.modules.promotion.entity.enums.MemberCouponStatusEnum;
|
||||
import cn.lili.modules.promotion.entity.enums.PromotionsScopeTypeEnum;
|
||||
import cn.lili.mybatis.BaseEntity;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@ -20,6 +22,7 @@ import java.util.Date;
|
||||
* @author Chopper
|
||||
* @since 2020-03-19 10:44 上午
|
||||
*/
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
@TableName("li_member_coupon")
|
||||
@ApiModel(value = "会员优惠券")
|
||||
@ -52,7 +55,7 @@ public class MemberCoupon extends BaseEntity {
|
||||
private String memberId;
|
||||
|
||||
/**
|
||||
* @see cn.lili.modules.promotion.entity.enums.CouponScopeTypeEnum
|
||||
* @see PromotionsScopeTypeEnum
|
||||
*/
|
||||
@ApiModelProperty(value = "关联范围类型")
|
||||
private String scopeType;
|
||||
|
@ -1,6 +1,6 @@
|
||||
package cn.lili.modules.promotion.entity.dos;
|
||||
|
||||
import cn.lili.modules.promotion.entity.dto.BasePromotion;
|
||||
import cn.lili.modules.promotion.entity.dto.BasePromotions;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
@ -19,7 +19,7 @@ import javax.validation.constraints.NotNull;
|
||||
@Data
|
||||
@TableName("li_pintuan")
|
||||
@ApiModel(value = "拼团")
|
||||
public class Pintuan extends BasePromotion {
|
||||
public class Pintuan extends BasePromotions {
|
||||
|
||||
|
||||
private static final long serialVersionUID = -8465716592648602604L;
|
||||
|
@ -1,11 +1,12 @@
|
||||
package cn.lili.modules.promotion.entity.dos;
|
||||
|
||||
import cn.lili.modules.promotion.entity.dto.BasePromotion;
|
||||
import cn.lili.modules.promotion.entity.dto.BasePromotions;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
|
||||
@ -15,18 +16,28 @@ import lombok.NoArgsConstructor;
|
||||
* @author paulG
|
||||
* @since 2020-03-19 10:44 上午
|
||||
**/
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
@TableName("li_points_goods")
|
||||
@ApiModel(value = "积分商品")
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class PointsGoods extends BasePromotion {
|
||||
public class PointsGoods extends BasePromotions {
|
||||
|
||||
private static final long serialVersionUID = 1313207311581661571L;
|
||||
|
||||
@ApiModelProperty(value = "商品编号")
|
||||
private String goodsId;
|
||||
|
||||
@ApiModelProperty(value = "商品sku编号")
|
||||
private String skuId;
|
||||
|
||||
@ApiModelProperty(value = "商品名称")
|
||||
private String goodsName;
|
||||
|
||||
@ApiModelProperty(value = "商品原价")
|
||||
private Double originalPrice;
|
||||
|
||||
@ApiModelProperty(value = "结算价格")
|
||||
private Double settlementPrice;
|
||||
|
||||
@ -36,6 +47,9 @@ public class PointsGoods extends BasePromotion {
|
||||
@ApiModelProperty(value = "分类名称")
|
||||
private String pointsGoodsCategoryName;
|
||||
|
||||
@ApiModelProperty(value = "缩略图")
|
||||
private String thumbnail;
|
||||
|
||||
@ApiModelProperty(value = "活动库存数量")
|
||||
private Integer activeStock;
|
||||
|
||||
|
@ -2,14 +2,16 @@ package cn.lili.modules.promotion.entity.dos;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.lili.common.enums.PromotionTypeEnum;
|
||||
import cn.lili.mybatis.BaseEntity;
|
||||
import cn.lili.modules.goods.entity.dos.GoodsSku;
|
||||
import cn.lili.modules.promotion.entity.enums.PromotionStatusEnum;
|
||||
import cn.lili.modules.promotion.entity.dto.KanjiaActivityGoodsDTO;
|
||||
import cn.lili.modules.promotion.entity.enums.PromotionsScopeTypeEnum;
|
||||
import cn.lili.mybatis.BaseEntity;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.Date;
|
||||
@ -20,6 +22,7 @@ import java.util.Date;
|
||||
* @author Chopper
|
||||
* @since 2020-03-19 10:44 上午
|
||||
*/
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
@TableName("li_promotion_goods")
|
||||
@ApiModel(value = "促销商品")
|
||||
@ -34,10 +37,13 @@ public class PromotionGoods extends BaseEntity {
|
||||
@ApiModelProperty(value = "商家名称")
|
||||
private String storeName;
|
||||
|
||||
@ApiModelProperty(value = "货品id")
|
||||
@ApiModelProperty(value = "商品id")
|
||||
private String goodsId;
|
||||
|
||||
@ApiModelProperty(value = "商品SkuId")
|
||||
private String skuId;
|
||||
|
||||
@ApiModelProperty(value = "货品名称")
|
||||
@ApiModelProperty(value = "商品名称")
|
||||
private String goodsName;
|
||||
|
||||
@ApiModelProperty(value = "缩略图")
|
||||
@ -72,31 +78,56 @@ public class PromotionGoods extends BaseEntity {
|
||||
@ApiModelProperty(value = "卖出的商品数量")
|
||||
private Integer num;
|
||||
|
||||
@ApiModelProperty(value = "原价")
|
||||
private Double originalPrice;
|
||||
|
||||
@ApiModelProperty(value = "促销价格")
|
||||
private Double price;
|
||||
|
||||
@ApiModelProperty(value = "兑换积分")
|
||||
private Long points;
|
||||
|
||||
@ApiModelProperty(value = "限购数量")
|
||||
private Integer limitNum;
|
||||
|
||||
@ApiModelProperty(value = "促销库存")
|
||||
private Integer quantity;
|
||||
|
||||
/**
|
||||
* @see PromotionStatusEnum
|
||||
*/
|
||||
@ApiModelProperty(value = "状态")
|
||||
private String promotionStatus;
|
||||
|
||||
@ApiModelProperty(value = "分类path")
|
||||
private String categoryPath;
|
||||
|
||||
/**
|
||||
* @see PromotionsScopeTypeEnum
|
||||
*/
|
||||
@ApiModelProperty(value = "关联范围类型")
|
||||
private String scopeType = PromotionsScopeTypeEnum.PORTION_GOODS.name();
|
||||
|
||||
|
||||
@ApiModelProperty(value = "范围关联的id")
|
||||
private String scopeId;
|
||||
|
||||
public PromotionGoods(GoodsSku sku) {
|
||||
if (sku != null) {
|
||||
String oldId = this.getId();
|
||||
BeanUtil.copyProperties(sku, this);
|
||||
this.setSkuId(sku.getId());
|
||||
this.setId(oldId);
|
||||
BeanUtil.copyProperties(sku, this, "id", "price");
|
||||
this.skuId = sku.getId();
|
||||
this.originalPrice = sku.getPrice();
|
||||
}
|
||||
}
|
||||
|
||||
public PromotionGoods(PointsGoods pointsGoods, GoodsSku sku) {
|
||||
if (pointsGoods != null) {
|
||||
BeanUtil.copyProperties(sku, this, "id");
|
||||
BeanUtil.copyProperties(pointsGoods, this, "id");
|
||||
this.promotionId = pointsGoods.getId();
|
||||
this.quantity = pointsGoods.getActiveStock();
|
||||
this.originalPrice = sku.getPrice();
|
||||
}
|
||||
}
|
||||
|
||||
public PromotionGoods(KanjiaActivityGoodsDTO kanjiaActivityGoodsDTO) {
|
||||
if (kanjiaActivityGoodsDTO != null) {
|
||||
BeanUtil.copyProperties(kanjiaActivityGoodsDTO, this, "id");
|
||||
BeanUtil.copyProperties(kanjiaActivityGoodsDTO.getGoodsSku(), this, "id");
|
||||
}
|
||||
}
|
||||
}
|
@ -3,8 +3,8 @@ package cn.lili.modules.promotion.entity.dos;
|
||||
import cn.hutool.core.date.DateField;
|
||||
import cn.hutool.core.date.DateTime;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.lili.modules.promotion.entity.dto.BasePromotion;
|
||||
import cn.lili.modules.promotion.entity.enums.PromotionStatusEnum;
|
||||
import cn.lili.modules.promotion.entity.dto.BasePromotions;
|
||||
import cn.lili.modules.promotion.entity.vos.SeckillVO;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
@ -12,6 +12,7 @@ import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.util.Date;
|
||||
@ -27,7 +28,7 @@ import java.util.Date;
|
||||
@TableName("li_seckill")
|
||||
@ApiModel(value = "秒杀活动活动")
|
||||
@NoArgsConstructor
|
||||
public class Seckill extends BasePromotion {
|
||||
public class Seckill extends BasePromotions {
|
||||
|
||||
private static final long serialVersionUID = -9116425737163730836L;
|
||||
|
||||
@ -52,21 +53,22 @@ public class Seckill extends BasePromotion {
|
||||
@ApiModelProperty(value = "商品数量")
|
||||
private Integer goodsNum;
|
||||
|
||||
public Seckill(int day,String hours,String seckillRule){
|
||||
public Seckill(int day, String hours, String seckillRule) {
|
||||
//默认创建*天后的秒杀活动
|
||||
DateTime dateTime= DateUtil.beginOfDay(DateUtil.offset(new DateTime(), DateField.DAY_OF_YEAR, day));
|
||||
this.applyEndTime=dateTime;
|
||||
this.hours=hours;
|
||||
this.seckillRule=seckillRule;
|
||||
this.goodsNum=0;
|
||||
|
||||
DateTime dateTime = DateUtil.beginOfDay(DateUtil.offset(new DateTime(), DateField.DAY_OF_YEAR, day));
|
||||
this.applyEndTime = dateTime;
|
||||
this.hours = hours;
|
||||
this.seckillRule = seckillRule;
|
||||
this.goodsNum = 0;
|
||||
//BasePromotion
|
||||
setStoreName("platform");
|
||||
setStoreId("platform");
|
||||
setPromotionName(DateUtil.formatDate(dateTime)+" 秒杀活动");
|
||||
setStartTime(dateTime);
|
||||
setEndTime(DateUtil.endOfDay(dateTime));
|
||||
setPromotionStatus(PromotionStatusEnum.NEW.name());
|
||||
this.setStoreName("platform");
|
||||
this.setStoreId("platform");
|
||||
this.setPromotionName(DateUtil.formatDate(dateTime) + " 秒杀活动");
|
||||
this.setStartTime(dateTime);
|
||||
this.setEndTime(DateUtil.endOfDay(dateTime));
|
||||
}
|
||||
|
||||
public Seckill(SeckillVO seckillVO) {
|
||||
BeanUtils.copyProperties(seckillVO, this);
|
||||
}
|
||||
}
|
@ -1,5 +1,6 @@
|
||||
package cn.lili.modules.promotion.entity.dos;
|
||||
|
||||
import cn.lili.modules.promotion.entity.enums.PromotionsApplyStatusEnum;
|
||||
import cn.lili.mybatis.BaseEntity;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
@ -58,7 +59,7 @@ public class SeckillApply extends BaseEntity {
|
||||
private Integer quantity;
|
||||
|
||||
/**
|
||||
* @see cn.lili.modules.promotion.entity.enums.PromotionApplyStatusEnum
|
||||
* @see PromotionsApplyStatusEnum
|
||||
*/
|
||||
@ApiModelProperty(value = "APPLY(\"申请\"), PASS(\"通过\"), REFUSE(\"拒绝\")")
|
||||
private String promotionApplyStatus;
|
||||
|
@ -1,6 +1,7 @@
|
||||
package cn.lili.modules.promotion.entity.dto;
|
||||
|
||||
import cn.lili.modules.promotion.entity.enums.PromotionStatusEnum;
|
||||
import cn.lili.modules.promotion.entity.enums.PromotionsScopeTypeEnum;
|
||||
import cn.lili.modules.promotion.entity.enums.PromotionsStatusEnum;
|
||||
import cn.lili.mybatis.BaseEntity;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
@ -18,7 +19,7 @@ import java.util.Date;
|
||||
*/
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
public class BasePromotion extends BaseEntity {
|
||||
public class BasePromotions extends BaseEntity {
|
||||
|
||||
private static final long serialVersionUID = 7814832369110695758L;
|
||||
|
||||
@ -41,8 +42,32 @@ public class BasePromotion extends BaseEntity {
|
||||
private Date endTime;
|
||||
|
||||
/**
|
||||
* @see PromotionStatusEnum
|
||||
* @see PromotionsScopeTypeEnum
|
||||
*/
|
||||
@ApiModelProperty(value = "活动状态")
|
||||
private String promotionStatus;
|
||||
@ApiModelProperty(value = "关联范围类型")
|
||||
private String scopeType = PromotionsScopeTypeEnum.PORTION_GOODS.name();
|
||||
|
||||
|
||||
@ApiModelProperty(value = "范围关联的id")
|
||||
private String scopeId;
|
||||
|
||||
|
||||
/**
|
||||
* @return 促销状态
|
||||
* @see PromotionsStatusEnum
|
||||
*/
|
||||
public String getPromotionStatus() {
|
||||
if (endTime == null) {
|
||||
return startTime != null ? PromotionsStatusEnum.START.name() : PromotionsStatusEnum.CLOSE.name();
|
||||
}
|
||||
Date now = new Date();
|
||||
if (now.before(startTime)) {
|
||||
return PromotionsStatusEnum.NEW.name();
|
||||
} else if (endTime.before(now)) {
|
||||
return PromotionsStatusEnum.END.name();
|
||||
} else if (now.before(endTime)) {
|
||||
return PromotionsStatusEnum.START.name();
|
||||
}
|
||||
return PromotionsStatusEnum.CLOSE.name();
|
||||
}
|
||||
}
|
@ -4,6 +4,7 @@ import cn.lili.modules.promotion.entity.dos.CouponActivity;
|
||||
import cn.lili.modules.promotion.entity.dos.CouponActivityItem;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@ -13,6 +14,7 @@ import java.util.List;
|
||||
* @author Bulbasaur
|
||||
* @since 2021/5/21 7:16 下午
|
||||
*/
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
public class CouponActivityDTO extends CouponActivity {
|
||||
|
||||
|
@ -5,6 +5,7 @@ import cn.lili.modules.goods.entity.dos.GoodsSku;
|
||||
import cn.lili.modules.promotion.entity.dos.KanjiaActivityGoods;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
@ -12,8 +13,9 @@ import java.io.Serializable;
|
||||
* 砍价活动商品DTO
|
||||
*
|
||||
* @author qiuqiu
|
||||
* @date 2020/8/21
|
||||
* @since 2020/8/21
|
||||
**/
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
public class KanjiaActivityGoodsDTO extends KanjiaActivityGoods implements Serializable {
|
||||
|
||||
|
@ -4,6 +4,7 @@ import cn.lili.modules.goods.entity.dos.GoodsSku;
|
||||
import cn.lili.modules.promotion.entity.dos.PromotionGoods;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
|
||||
@ -13,15 +14,13 @@ import lombok.NoArgsConstructor;
|
||||
* @author paulG
|
||||
* @since 2020/10/9
|
||||
**/
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
public class PromotionGoodsDTO extends PromotionGoods {
|
||||
|
||||
private static final long serialVersionUID = 9206970681612883421L;
|
||||
|
||||
@ApiModelProperty(value = "原价")
|
||||
private Double originPrice;
|
||||
|
||||
@ApiModelProperty(value = "商品id")
|
||||
private String goodsId;
|
||||
|
||||
|
@ -6,7 +6,7 @@ package cn.lili.modules.promotion.entity.enums;
|
||||
* @author Chopper
|
||||
* @since 2020-03-19 9:36 上午
|
||||
*/
|
||||
public enum PromotionApplyStatusEnum {
|
||||
public enum PromotionsApplyStatusEnum {
|
||||
|
||||
/**
|
||||
* 枚举
|
||||
@ -15,7 +15,7 @@ public enum PromotionApplyStatusEnum {
|
||||
|
||||
private final String description;
|
||||
|
||||
PromotionApplyStatusEnum(String str) {
|
||||
PromotionsApplyStatusEnum(String str) {
|
||||
this.description = str;
|
||||
}
|
||||
|
@ -1,12 +1,12 @@
|
||||
package cn.lili.modules.promotion.entity.enums;
|
||||
|
||||
/**
|
||||
* 优惠券适用范围类型枚举
|
||||
* 促销适用范围类型枚举
|
||||
*
|
||||
* @author Chopper
|
||||
* @since 2020-03-19 9:36 上午
|
||||
*/
|
||||
public enum CouponScopeTypeEnum {
|
||||
public enum PromotionsScopeTypeEnum {
|
||||
|
||||
/**
|
||||
* 枚举
|
||||
@ -18,7 +18,7 @@ public enum CouponScopeTypeEnum {
|
||||
|
||||
private final String description;
|
||||
|
||||
CouponScopeTypeEnum(String str) {
|
||||
PromotionsScopeTypeEnum(String str) {
|
||||
this.description = str;
|
||||
}
|
||||
|
@ -6,7 +6,7 @@ package cn.lili.modules.promotion.entity.enums;
|
||||
* @author Chopper
|
||||
* @since 2020-03-19 3:53 下午
|
||||
*/
|
||||
public enum PromotionStatusEnum {
|
||||
public enum PromotionsStatusEnum {
|
||||
|
||||
/**
|
||||
* 新建
|
||||
@ -27,7 +27,7 @@ public enum PromotionStatusEnum {
|
||||
|
||||
private final String description;
|
||||
|
||||
PromotionStatusEnum(String str) {
|
||||
PromotionsStatusEnum(String str) {
|
||||
this.description = str;
|
||||
}
|
||||
|
@ -0,0 +1,64 @@
|
||||
package cn.lili.modules.promotion.entity.vos;
|
||||
|
||||
import cn.hutool.core.text.CharSequenceUtil;
|
||||
import cn.lili.modules.promotion.entity.enums.PromotionsScopeTypeEnum;
|
||||
import cn.lili.modules.promotion.entity.enums.PromotionsStatusEnum;
|
||||
import cn.lili.modules.promotion.tools.PromotionTools;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* @author paulG
|
||||
* @since 2021/11/18
|
||||
**/
|
||||
@Data
|
||||
public class BasePromotionsSearchParams {
|
||||
|
||||
@ApiModelProperty(value = "活动id")
|
||||
private String id;
|
||||
|
||||
@ApiModelProperty(value = "活动开始时间")
|
||||
private Long startTime;
|
||||
|
||||
@ApiModelProperty(value = "活动结束时间")
|
||||
private Long endTime;
|
||||
|
||||
/**
|
||||
* @see PromotionsStatusEnum
|
||||
*/
|
||||
@ApiModelProperty(value = "活动状态")
|
||||
private String promotionStatus;
|
||||
|
||||
/**
|
||||
* @see PromotionsScopeTypeEnum
|
||||
*/
|
||||
@ApiModelProperty(value = "关联范围类型")
|
||||
private String scopeType;
|
||||
|
||||
public <T> QueryWrapper<T> queryWrapper() {
|
||||
QueryWrapper<T> queryWrapper = new QueryWrapper<>();
|
||||
|
||||
if (CharSequenceUtil.isNotEmpty(id)) {
|
||||
queryWrapper.eq("id", id);
|
||||
}
|
||||
if (startTime != null) {
|
||||
queryWrapper.ge("start_time", new Date(startTime));
|
||||
}
|
||||
if (endTime != null) {
|
||||
queryWrapper.le("end_time", new Date(endTime));
|
||||
}
|
||||
if (CharSequenceUtil.isNotEmpty(promotionStatus)) {
|
||||
queryWrapper.and(PromotionTools.queryPromotionStatus(PromotionsStatusEnum.valueOf(promotionStatus)));
|
||||
}
|
||||
if (CharSequenceUtil.isNotEmpty(scopeType)) {
|
||||
queryWrapper.eq("scope_type", scopeType);
|
||||
}
|
||||
queryWrapper.eq("delete_flag", false);
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -3,6 +3,7 @@ package cn.lili.modules.promotion.entity.vos;
|
||||
import cn.lili.modules.promotion.entity.dos.CouponActivityItem;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
/**
|
||||
* 优惠券活动的优惠券VO
|
||||
@ -10,6 +11,7 @@ import lombok.Data;
|
||||
* @author Bulbasaur
|
||||
* @since 2021/6/18 11:00 上午
|
||||
*/
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
public class CouponActivityItemVO extends CouponActivityItem {
|
||||
|
||||
|
@ -4,6 +4,7 @@ import cn.lili.common.utils.BeanUtil;
|
||||
import cn.lili.modules.promotion.entity.dos.CouponActivity;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
@ -14,6 +15,7 @@ import java.util.List;
|
||||
* @author Bulbasaur
|
||||
* @since 2021/5/21 7:01 下午
|
||||
*/
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
public class CouponActivityVO extends CouponActivity {
|
||||
|
@ -2,16 +2,15 @@ package cn.lili.modules.promotion.entity.vos;
|
||||
|
||||
import cn.hutool.core.text.CharSequenceUtil;
|
||||
import cn.lili.modules.promotion.entity.enums.*;
|
||||
import cn.lili.modules.promotion.tools.PromotionTools;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import org.springframework.data.mongodb.core.query.Criteria;
|
||||
import org.springframework.data.mongodb.core.query.Query;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
/**
|
||||
* 优惠券查询通用类
|
||||
@ -19,11 +18,14 @@ import java.util.regex.Pattern;
|
||||
* @author paulG
|
||||
* @since 2020/8/14
|
||||
**/
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
public class CouponSearchParams implements Serializable {
|
||||
public class CouponSearchParams extends BasePromotionsSearchParams implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 4566880169478260409L;
|
||||
|
||||
private static final String PRICE_COLUMN = "price";
|
||||
private static final String RANGE_DAY_TYPE_COLUMN = "range_day_type";
|
||||
|
||||
@ApiModelProperty(value = "店铺编号")
|
||||
private String storeId;
|
||||
@ -41,7 +43,7 @@ public class CouponSearchParams implements Serializable {
|
||||
@ApiModelProperty(value = "活动类型")
|
||||
private String couponType;
|
||||
/**
|
||||
* @see cn.lili.modules.promotion.entity.enums.CouponScopeTypeEnum
|
||||
* @see PromotionsScopeTypeEnum
|
||||
*/
|
||||
@ApiModelProperty(value = "关联范围类型")
|
||||
private String scopeType;
|
||||
@ -58,27 +60,17 @@ public class CouponSearchParams implements Serializable {
|
||||
*/
|
||||
@ApiModelProperty(value = "优惠券类型,分为免费领取和活动赠送")
|
||||
private String getType;
|
||||
|
||||
@ApiModelProperty(value = "活动开始时间")
|
||||
private Long startTime;
|
||||
|
||||
@ApiModelProperty(value = "活动结束时间")
|
||||
private Long endTime;
|
||||
/**
|
||||
* @see MemberCouponStatusEnum
|
||||
*/
|
||||
@ApiModelProperty(value = "会员优惠券状态")
|
||||
private String memberCouponStatus;
|
||||
/**
|
||||
* @see PromotionStatusEnum
|
||||
*/
|
||||
@ApiModelProperty(value = "活动状态")
|
||||
private String promotionStatus;
|
||||
|
||||
public <T> QueryWrapper<T> wrapper() {
|
||||
@Override
|
||||
public <T> QueryWrapper<T> queryWrapper() {
|
||||
QueryWrapper<T> queryWrapper = new QueryWrapper<>();
|
||||
if (storeId != null) {
|
||||
queryWrapper.in("store_id", Arrays.asList(storeId));
|
||||
queryWrapper.in("store_id", Collections.singletonList(storeId));
|
||||
}
|
||||
if (CharSequenceUtil.isNotEmpty(couponName)) {
|
||||
queryWrapper.like("coupon_name", couponName);
|
||||
@ -90,7 +82,7 @@ public class CouponSearchParams implements Serializable {
|
||||
queryWrapper.eq("coupon_type", CouponTypeEnum.valueOf(couponType).name());
|
||||
}
|
||||
if (CharSequenceUtil.isNotEmpty(scopeType)) {
|
||||
queryWrapper.eq("scope_type", CouponScopeTypeEnum.valueOf(scopeType).name());
|
||||
queryWrapper.eq("scope_type", PromotionsScopeTypeEnum.valueOf(scopeType).name());
|
||||
}
|
||||
if (CharSequenceUtil.isNotEmpty(scopeId)) {
|
||||
queryWrapper.eq("scope_id", scopeId);
|
||||
@ -98,20 +90,38 @@ public class CouponSearchParams implements Serializable {
|
||||
if (CharSequenceUtil.isNotEmpty(getType)) {
|
||||
queryWrapper.eq("get_type", CouponGetEnum.valueOf(getType).name());
|
||||
}
|
||||
if (startTime != null) {
|
||||
queryWrapper.ge("start_time", new Date(startTime));
|
||||
}
|
||||
if (endTime != null) {
|
||||
queryWrapper.le("end_time", new Date(endTime));
|
||||
}
|
||||
if (CharSequenceUtil.isNotEmpty(memberCouponStatus)) {
|
||||
queryWrapper.eq("member_coupon_status", MemberCouponStatusEnum.valueOf(memberCouponStatus).name());
|
||||
}
|
||||
if (CharSequenceUtil.isNotEmpty(promotionStatus)) {
|
||||
queryWrapper.eq("promotion_status", PromotionStatusEnum.valueOf(promotionStatus).name());
|
||||
if (CharSequenceUtil.isNotEmpty(this.getPromotionStatus())) {
|
||||
switch (PromotionsStatusEnum.valueOf(this.getPromotionStatus())) {
|
||||
case NEW:
|
||||
queryWrapper.nested(i -> i.gt(PromotionTools.START_TIME_COLUMN, new Date()).gt(PromotionTools.END_TIME_COLUMN, new Date()))
|
||||
;
|
||||
break;
|
||||
case START:
|
||||
queryWrapper.nested(i -> i.le(PromotionTools.START_TIME_COLUMN, new Date()).ge(PromotionTools.END_TIME_COLUMN, new Date()))
|
||||
.or(i -> i.gt("effective_days", 0).eq(RANGE_DAY_TYPE_COLUMN, CouponRangeDayEnum.DYNAMICTIME.name()));
|
||||
break;
|
||||
case END:
|
||||
queryWrapper.nested(i -> i.lt(PromotionTools.START_TIME_COLUMN, new Date()).lt(PromotionTools.END_TIME_COLUMN, new Date()));
|
||||
break;
|
||||
case CLOSE:
|
||||
queryWrapper.nested(n -> n.nested(i -> i.isNull(PromotionTools.START_TIME_COLUMN).isNull(PromotionTools.END_TIME_COLUMN)
|
||||
.eq(RANGE_DAY_TYPE_COLUMN, CouponRangeDayEnum.FIXEDTIME.name())).
|
||||
or(i -> i.le("effective_days", 0).eq(RANGE_DAY_TYPE_COLUMN, CouponRangeDayEnum.DYNAMICTIME.name())));
|
||||
break;
|
||||
default:
|
||||
}
|
||||
}
|
||||
if (this.getStartTime() != null) {
|
||||
queryWrapper.ge("start_time", new Date(this.getEndTime()));
|
||||
}
|
||||
if (this.getEndTime() != null) {
|
||||
queryWrapper.le("end_time", new Date(this.getEndTime()));
|
||||
}
|
||||
this.betweenWrapper(queryWrapper);
|
||||
queryWrapper.eq("delete_flag", false);
|
||||
this.betweenWrapper(queryWrapper);
|
||||
queryWrapper.orderByDesc("create_time");
|
||||
return queryWrapper;
|
||||
}
|
||||
@ -143,72 +153,4 @@ public class CouponSearchParams implements Serializable {
|
||||
}
|
||||
}
|
||||
|
||||
public Query mongoQuery() {
|
||||
Query query = new Query();
|
||||
if (storeId != null) {
|
||||
query.addCriteria(Criteria.where("storeId").in(Arrays.asList(storeId)));
|
||||
}
|
||||
if (CharSequenceUtil.isNotEmpty(couponName)) {
|
||||
Pattern pattern = Pattern.compile("^.*" + couponName + ".*$", Pattern.CASE_INSENSITIVE);
|
||||
query.addCriteria(Criteria.where("couponName").regex(pattern));
|
||||
}
|
||||
if (memberId != null) {
|
||||
query.addCriteria(Criteria.where("memberId").is(memberId));
|
||||
}
|
||||
if (CharSequenceUtil.isNotEmpty(couponType)) {
|
||||
query.addCriteria(Criteria.where("couponType").is(CouponTypeEnum.valueOf(couponType).name()));
|
||||
}
|
||||
if (CharSequenceUtil.isNotEmpty(scopeType)) {
|
||||
query.addCriteria(Criteria.where("scopeType").is(CouponScopeTypeEnum.valueOf(scopeType).name()));
|
||||
}
|
||||
if (CharSequenceUtil.isNotEmpty(scopeId)) {
|
||||
query.addCriteria(Criteria.where("scopeId").is(scopeId));
|
||||
}
|
||||
if (CharSequenceUtil.isNotEmpty(getType)) {
|
||||
query.addCriteria(Criteria.where("getType").is(CouponGetEnum.valueOf(getType).name()));
|
||||
}
|
||||
if (startTime != null) {
|
||||
query.addCriteria(Criteria.where("startTime").gte(new Date(startTime)));
|
||||
}
|
||||
if (endTime != null) {
|
||||
query.addCriteria(Criteria.where("endTime").lte(new Date(endTime)));
|
||||
}
|
||||
if (CharSequenceUtil.isNotEmpty(memberCouponStatus)) {
|
||||
query.addCriteria(Criteria.where("memberCouponStatus").is(MemberCouponStatusEnum.valueOf(memberCouponStatus).name()));
|
||||
}
|
||||
if (CharSequenceUtil.isNotEmpty(promotionStatus)) {
|
||||
query.addCriteria(Criteria.where("promotionStatus").is(PromotionStatusEnum.valueOf(promotionStatus).name()));
|
||||
}
|
||||
query.addCriteria(Criteria.where("deleteFlag").is(false));
|
||||
betweenQuery(query);
|
||||
return query;
|
||||
}
|
||||
|
||||
private void betweenQuery(Query query) {
|
||||
if (CharSequenceUtil.isNotEmpty(price)) {
|
||||
String[] s = price.split("_");
|
||||
if (s.length > 1) {
|
||||
query.addCriteria(Criteria.where(PRICE_COLUMN).gte(s[1]));
|
||||
} else {
|
||||
query.addCriteria(Criteria.where(PRICE_COLUMN).lte(s[0]));
|
||||
}
|
||||
}
|
||||
if (CharSequenceUtil.isNotEmpty(publishNum)) {
|
||||
String[] s = publishNum.split("_");
|
||||
if (s.length > 1) {
|
||||
query.addCriteria(Criteria.where("publishNum").gte(s[1]));
|
||||
} else {
|
||||
query.addCriteria(Criteria.where("publishNum").lte(s[0]));
|
||||
}
|
||||
}
|
||||
if (CharSequenceUtil.isNotEmpty(receivedNum)) {
|
||||
String[] s = receivedNum.split("_");
|
||||
if (s.length > 1) {
|
||||
query.addCriteria(Criteria.where("receivedNum").gte(s[1]));
|
||||
} else {
|
||||
query.addCriteria(Criteria.where("receivedNum").lte(s[0]));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -5,6 +5,10 @@ import cn.lili.modules.promotion.entity.dos.PromotionGoods;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.ToString;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@ -14,8 +18,11 @@ import java.util.List;
|
||||
* @author Chopper
|
||||
* @since 2020/8/14
|
||||
*/
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
@ApiModel(value = "优惠券")
|
||||
@ToString(callSuper = true)
|
||||
@NoArgsConstructor
|
||||
public class CouponVO extends Coupon {
|
||||
|
||||
private static final long serialVersionUID = 8372420376262437018L;
|
||||
@ -26,5 +33,10 @@ public class CouponVO extends Coupon {
|
||||
@ApiModelProperty(value = "优惠券关联商品集合")
|
||||
private List<PromotionGoods> promotionGoodsList;
|
||||
|
||||
|
||||
public CouponVO(Coupon coupon) {
|
||||
if (coupon == null) {
|
||||
return;
|
||||
}
|
||||
BeanUtils.copyProperties(coupon, this);
|
||||
}
|
||||
}
|
@ -1,18 +1,13 @@
|
||||
package cn.lili.modules.promotion.entity.vos;
|
||||
|
||||
import cn.hutool.core.text.CharSequenceUtil;
|
||||
import cn.lili.modules.promotion.entity.enums.PromotionStatusEnum;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.springframework.data.mongodb.core.query.Criteria;
|
||||
import org.springframework.data.mongodb.core.query.Query;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Arrays;
|
||||
import java.util.Date;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
/**
|
||||
* 满优惠查询通用类
|
||||
@ -20,8 +15,9 @@ import java.util.regex.Pattern;
|
||||
* @author paulG
|
||||
* @since 2020/8/21
|
||||
**/
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
public class FullDiscountSearchParams implements Serializable {
|
||||
public class FullDiscountSearchParams extends BasePromotionsSearchParams implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = -4052716630253333681L;
|
||||
|
||||
@ -32,59 +28,28 @@ public class FullDiscountSearchParams implements Serializable {
|
||||
@ApiModelProperty(value = "店铺编号 如有多个','分割")
|
||||
private String storeId;
|
||||
|
||||
@ApiModelProperty(value = "活动开始时间", required = true)
|
||||
private Long startTime;
|
||||
@ApiModelProperty(value = "是否赠优惠券")
|
||||
private Boolean isCoupon;
|
||||
|
||||
@ApiModelProperty(value = "活动结束时间", required = true)
|
||||
private Long endTime;
|
||||
@ApiModelProperty(value = "优惠券id")
|
||||
private String couponId;
|
||||
|
||||
/**
|
||||
* @see PromotionStatusEnum
|
||||
*/
|
||||
@ApiModelProperty(value = "活动状态")
|
||||
private String promotionStatus;
|
||||
|
||||
|
||||
public <T> QueryWrapper<T> wrapper() {
|
||||
QueryWrapper<T> queryWrapper = new QueryWrapper<>();
|
||||
@Override
|
||||
public <T> QueryWrapper<T> queryWrapper() {
|
||||
QueryWrapper<T> queryWrapper = super.queryWrapper();
|
||||
if (CharSequenceUtil.isNotEmpty(promotionName)) {
|
||||
queryWrapper.like("title", promotionName);
|
||||
}
|
||||
if (storeId != null) {
|
||||
queryWrapper.in("store_id", Arrays.asList(storeId.split(",")));
|
||||
}
|
||||
if (startTime != null) {
|
||||
queryWrapper.ge("start_time", new Date(startTime));
|
||||
if (isCoupon != null) {
|
||||
queryWrapper.eq("is_coupon", isCoupon);
|
||||
}
|
||||
if (endTime != null) {
|
||||
queryWrapper.le("end_time", new Date(endTime));
|
||||
}
|
||||
if (CharSequenceUtil.isNotEmpty(promotionStatus)) {
|
||||
queryWrapper.eq("promotion_status", PromotionStatusEnum.valueOf(promotionStatus).name());
|
||||
if (CharSequenceUtil.isNotEmpty(couponId)) {
|
||||
queryWrapper.eq("coupon_id", couponId);
|
||||
}
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
public Query mongoQuery() {
|
||||
Query query = new Query();
|
||||
if (CharSequenceUtil.isNotEmpty(promotionName)) {
|
||||
Pattern pattern = Pattern.compile("^.*" + promotionName + ".*$", Pattern.CASE_INSENSITIVE);
|
||||
query.addCriteria(Criteria.where("promotionName").regex(pattern));
|
||||
}
|
||||
if (storeId != null) {
|
||||
query.addCriteria(Criteria.where("storeId").in(Arrays.asList(storeId.split(","))));
|
||||
}
|
||||
if (startTime != null) {
|
||||
query.addCriteria(Criteria.where("startTime").gte(new Date(startTime)));
|
||||
}
|
||||
if (endTime != null) {
|
||||
query.addCriteria(Criteria.where("endTime").lte(new Date(endTime)));
|
||||
}
|
||||
if (CharSequenceUtil.isNotEmpty(promotionStatus)) {
|
||||
query.addCriteria(Criteria.where("promotionStatus").is(PromotionStatusEnum.valueOf(promotionStatus).name()));
|
||||
}
|
||||
query.addCriteria(Criteria.where("deleteFlag").is(false));
|
||||
return query;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,18 +1,12 @@
|
||||
package cn.lili.modules.promotion.entity.vos;
|
||||
|
||||
import cn.hutool.core.text.CharSequenceUtil;
|
||||
import cn.lili.common.utils.StringUtils;
|
||||
import cn.lili.modules.promotion.entity.enums.PromotionStatusEnum;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import org.springframework.data.mongodb.core.query.Criteria;
|
||||
import org.springframework.data.mongodb.core.query.Query;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.util.Date;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
/**
|
||||
* 拼团查询通用类
|
||||
@ -20,8 +14,9 @@ import java.util.regex.Pattern;
|
||||
* @author paulG
|
||||
* @since 2020/10/9
|
||||
**/
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
public class PintuanSearchParams {
|
||||
public class PintuanSearchParams extends BasePromotionsSearchParams {
|
||||
|
||||
@ApiModelProperty(value = "商家id")
|
||||
private String storeId;
|
||||
@ -33,67 +28,20 @@ public class PintuanSearchParams {
|
||||
@ApiModelProperty(value = "活动名称", required = true)
|
||||
private String promotionName;
|
||||
|
||||
/**
|
||||
* @see PromotionStatusEnum
|
||||
*/
|
||||
@ApiModelProperty(value = "活动状态")
|
||||
@NotNull(message = "活动状态不能为空")
|
||||
private String promotionStatus;
|
||||
|
||||
@ApiModelProperty(value = "活动开始时间")
|
||||
private Long startTime;
|
||||
|
||||
@ApiModelProperty(value = "活动结束时间")
|
||||
private Long endTime;
|
||||
|
||||
public <T> QueryWrapper<T> wrapper() {
|
||||
QueryWrapper<T> queryWrapper = new QueryWrapper<>();
|
||||
@Override
|
||||
public <T> QueryWrapper<T> queryWrapper() {
|
||||
QueryWrapper<T> queryWrapper = super.queryWrapper();
|
||||
if (CharSequenceUtil.isNotEmpty(promotionName)) {
|
||||
queryWrapper.like("promotion_name", promotionName);
|
||||
}
|
||||
if (!StringUtils.isEmpty(storeName)) {
|
||||
if (CharSequenceUtil.isNotEmpty(storeName)) {
|
||||
queryWrapper.like("store_name", storeName);
|
||||
}
|
||||
if (!StringUtils.isEmpty(storeId)) {
|
||||
if (CharSequenceUtil.isNotEmpty(storeId)) {
|
||||
queryWrapper.eq("store_id", storeId);
|
||||
}
|
||||
if (startTime != null) {
|
||||
queryWrapper.ge("start_time", new Date(startTime));
|
||||
}
|
||||
if (endTime != null) {
|
||||
queryWrapper.le("end_time", new Date(endTime));
|
||||
}
|
||||
if (CharSequenceUtil.isNotEmpty(promotionStatus)) {
|
||||
queryWrapper.eq("promotion_status", PromotionStatusEnum.valueOf(promotionStatus).name());
|
||||
}
|
||||
queryWrapper.eq("delete_flag", false);
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
public Query mongoQuery() {
|
||||
Query query = new Query();
|
||||
if (CharSequenceUtil.isNotEmpty(promotionName)) {
|
||||
Pattern pattern = Pattern.compile("^.*" + promotionName + ".*$", Pattern.CASE_INSENSITIVE);
|
||||
query.addCriteria(Criteria.where("promotionName").regex(pattern));
|
||||
}
|
||||
if (!StringUtils.isEmpty(storeName)) {
|
||||
Pattern pattern = Pattern.compile("^.*" + storeName + ".*$", Pattern.CASE_INSENSITIVE);
|
||||
query.addCriteria(Criteria.where("storeName").regex(pattern));
|
||||
}
|
||||
if (!StringUtils.isEmpty(storeId)) {
|
||||
query.addCriteria(Criteria.where("storeId").is(storeId));
|
||||
}
|
||||
if (startTime != null) {
|
||||
query.addCriteria(Criteria.where("startTime").gte(new Date(startTime)));
|
||||
}
|
||||
if (endTime != null) {
|
||||
query.addCriteria(Criteria.where("endTime").lte(new Date(endTime)));
|
||||
}
|
||||
if (CharSequenceUtil.isNotEmpty(promotionStatus)) {
|
||||
query.addCriteria(Criteria.where("promotionStatus").is(PromotionStatusEnum.valueOf(promotionStatus).name()));
|
||||
}
|
||||
query.addCriteria(Criteria.where("deleteFlag").is(false));
|
||||
return query;
|
||||
}
|
||||
|
||||
}
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user