优惠券同步 下架问题
This commit is contained in:
@@ -8,7 +8,9 @@ import com.czg.market.dto.MkCouponGiftDTO;
|
|||||||
import com.czg.market.dto.MkRewardCouponDTO;
|
import com.czg.market.dto.MkRewardCouponDTO;
|
||||||
import com.czg.market.dto.MkShopCouponRecordDTO;
|
import com.czg.market.dto.MkShopCouponRecordDTO;
|
||||||
import com.czg.market.dto.ShopCouponDTO;
|
import com.czg.market.dto.ShopCouponDTO;
|
||||||
|
import com.czg.market.entity.MkPointsGoods;
|
||||||
import com.czg.market.service.MkCouponGiftService;
|
import com.czg.market.service.MkCouponGiftService;
|
||||||
|
import com.czg.market.service.MkPointsGoodsService;
|
||||||
import com.czg.market.service.MkShopCouponRecordService;
|
import com.czg.market.service.MkShopCouponRecordService;
|
||||||
import com.czg.market.service.ShopCouponService;
|
import com.czg.market.service.ShopCouponService;
|
||||||
import com.czg.product.service.ShopSyncService;
|
import com.czg.product.service.ShopSyncService;
|
||||||
@@ -19,12 +21,14 @@ import com.czg.validator.group.DefaultGroup;
|
|||||||
import com.czg.validator.group.InsertGroup;
|
import com.czg.validator.group.InsertGroup;
|
||||||
import com.czg.validator.group.UpdateGroup;
|
import com.czg.validator.group.UpdateGroup;
|
||||||
import com.mybatisflex.core.paginate.Page;
|
import com.mybatisflex.core.paginate.Page;
|
||||||
|
import com.mybatisflex.core.query.QueryWrapper;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.dubbo.config.annotation.DubboReference;
|
import org.apache.dubbo.config.annotation.DubboReference;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
@@ -46,6 +50,8 @@ public class ACouponController {
|
|||||||
private MkShopCouponRecordService couponRecordService;
|
private MkShopCouponRecordService couponRecordService;
|
||||||
@DubboReference
|
@DubboReference
|
||||||
private ShopSyncService shopSyncService;
|
private ShopSyncService shopSyncService;
|
||||||
|
@Resource
|
||||||
|
private MkPointsGoodsService pointsGoodsSettingService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 分页
|
* 分页
|
||||||
@@ -53,7 +59,7 @@ public class ACouponController {
|
|||||||
@GetMapping("page")
|
@GetMapping("page")
|
||||||
// @SaAdminCheckPermission("coupon:page")
|
// @SaAdminCheckPermission("coupon:page")
|
||||||
public CzgResult<Page<ShopCouponDTO>> getCouponPage(ShopCouponDTO param) {
|
public CzgResult<Page<ShopCouponDTO>> getCouponPage(ShopCouponDTO param) {
|
||||||
Long shopId = StpKit.USER.getShopId(0L);
|
Long shopId = StpKit.USER.getShopId();
|
||||||
param.setShopId(shopId);
|
param.setShopId(shopId);
|
||||||
Page<ShopCouponDTO> data = shopCouponService.getCouponPage(param);
|
Page<ShopCouponDTO> data = shopCouponService.getCouponPage(param);
|
||||||
return CzgResult.success(data);
|
return CzgResult.success(data);
|
||||||
@@ -79,9 +85,14 @@ public class ACouponController {
|
|||||||
@OperationLog("优惠券-新增")
|
@OperationLog("优惠券-新增")
|
||||||
// @SaAdminCheckPermission("coupon:add")
|
// @SaAdminCheckPermission("coupon:add")
|
||||||
public CzgResult<Void> addCoupon(@RequestBody @Validated({InsertGroup.class, DefaultGroup.class}) ShopCouponDTO dto) {
|
public CzgResult<Void> addCoupon(@RequestBody @Validated({InsertGroup.class, DefaultGroup.class}) ShopCouponDTO dto) {
|
||||||
Long shopId = StpKit.USER.getShopId(0L);
|
Long shopId = StpKit.USER.getShopId();
|
||||||
dto.setShopId(shopId);
|
dto.setShopId(shopId);
|
||||||
dto.setLeftNum(dto.getGiveNum());
|
dto.setLeftNum(dto.getGiveNum());
|
||||||
|
if ("custom".equals(dto.getValidType())) {
|
||||||
|
if (dto.getValidEndTime().isBefore(LocalDateTime.now())) {
|
||||||
|
dto.setStatus(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
shopCouponService.addCoupon(dto);
|
shopCouponService.addCoupon(dto);
|
||||||
asyncToBranchShop(dto.getId(), 1);
|
asyncToBranchShop(dto.getId(), 1);
|
||||||
return CzgResult.success();
|
return CzgResult.success();
|
||||||
@@ -94,8 +105,17 @@ public class ACouponController {
|
|||||||
@OperationLog("优惠券-修改")
|
@OperationLog("优惠券-修改")
|
||||||
// @SaAdminCheckPermission("coupon:update")
|
// @SaAdminCheckPermission("coupon:update")
|
||||||
public CzgResult<Void> updateCoupon(@RequestBody @Validated({UpdateGroup.class, DefaultGroup.class}) ShopCouponDTO dto) {
|
public CzgResult<Void> updateCoupon(@RequestBody @Validated({UpdateGroup.class, DefaultGroup.class}) ShopCouponDTO dto) {
|
||||||
Long shopId = StpKit.USER.getShopId(0L);
|
Long shopId = StpKit.USER.getShopId();
|
||||||
dto.setShopId(shopId);
|
dto.setShopId(shopId);
|
||||||
|
if ("custom".equals(dto.getValidType())) {
|
||||||
|
if (dto.getValidEndTime().isBefore(LocalDateTime.now())) {
|
||||||
|
dto.setStatus(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (dto.getStatus().equals(0)) {
|
||||||
|
//优惠券禁用 同步下架积分优惠券商品
|
||||||
|
pointsGoodsSettingService.updateGoodsCouponStatus(dto.getId());
|
||||||
|
}
|
||||||
shopCouponService.updateCouponById(dto);
|
shopCouponService.updateCouponById(dto);
|
||||||
couponGiftService.upCouponName(dto.getId(), dto.getTitle());
|
couponGiftService.upCouponName(dto.getId(), dto.getTitle());
|
||||||
asyncToBranchShop(dto.getId(), 2);
|
asyncToBranchShop(dto.getId(), 2);
|
||||||
@@ -122,6 +142,8 @@ public class ACouponController {
|
|||||||
}
|
}
|
||||||
shopCouponService.deleteCoupon(id);
|
shopCouponService.deleteCoupon(id);
|
||||||
couponGiftService.deleteCoupon(id);
|
couponGiftService.deleteCoupon(id);
|
||||||
|
//优惠券删除 同步下架积分优惠券商品
|
||||||
|
pointsGoodsSettingService.updateGoodsCouponStatus(id);
|
||||||
asyncToBranchShop(id, 3);
|
asyncToBranchShop(id, 3);
|
||||||
return CzgResult.success();
|
return CzgResult.success();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,9 +4,12 @@ import cn.hutool.core.bean.BeanUtil;
|
|||||||
import com.czg.BaseQueryParam;
|
import com.czg.BaseQueryParam;
|
||||||
import com.czg.annotation.SaAdminCheckPermission;
|
import com.czg.annotation.SaAdminCheckPermission;
|
||||||
import com.czg.enums.DeleteEnum;
|
import com.czg.enums.DeleteEnum;
|
||||||
|
import com.czg.exception.CzgException;
|
||||||
import com.czg.market.dto.MkPointsGoodsDTO;
|
import com.czg.market.dto.MkPointsGoodsDTO;
|
||||||
import com.czg.market.entity.MkPointsGoods;
|
import com.czg.market.entity.MkPointsGoods;
|
||||||
|
import com.czg.market.entity.ShopCoupon;
|
||||||
import com.czg.market.service.MkPointsGoodsService;
|
import com.czg.market.service.MkPointsGoodsService;
|
||||||
|
import com.czg.market.service.ShopCouponService;
|
||||||
import com.czg.resp.CzgResult;
|
import com.czg.resp.CzgResult;
|
||||||
import com.czg.sa.StpKit;
|
import com.czg.sa.StpKit;
|
||||||
import com.mybatisflex.core.paginate.Page;
|
import com.mybatisflex.core.paginate.Page;
|
||||||
@@ -14,6 +17,8 @@ import jakarta.annotation.Resource;
|
|||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 积分商城
|
* 积分商城
|
||||||
@@ -26,6 +31,8 @@ public class PointsGoodsController {
|
|||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private MkPointsGoodsService pointsGoodsSettingService;
|
private MkPointsGoodsService pointsGoodsSettingService;
|
||||||
|
@Resource
|
||||||
|
private ShopCouponService shopCouponService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 积分:商品:列表
|
* 积分:商品:列表
|
||||||
@@ -53,6 +60,17 @@ public class PointsGoodsController {
|
|||||||
@SaAdminCheckPermission(parentName = "积分相关", value = "points:goods:up", name = "积分-商品-新增/修改")
|
@SaAdminCheckPermission(parentName = "积分相关", value = "points:goods:up", name = "积分-商品-新增/修改")
|
||||||
public CzgResult<Boolean> addPointsGoodsSetting(@RequestBody @Validated MkPointsGoodsDTO dto) {
|
public CzgResult<Boolean> addPointsGoodsSetting(@RequestBody @Validated MkPointsGoodsDTO dto) {
|
||||||
dto.setShopId(StpKit.USER.getShopId());
|
dto.setShopId(StpKit.USER.getShopId());
|
||||||
|
if (dto.getCouponId() != null) {
|
||||||
|
ShopCoupon coupon = shopCouponService.getById(dto.getCouponId());
|
||||||
|
if (coupon == null || coupon.getIsDel() == DeleteEnum.DELETED.value() || coupon.getStatus() != 1) {
|
||||||
|
throw new CzgException("操作失败,优惠券已删除或未启用");
|
||||||
|
}
|
||||||
|
if ("custom".equals(coupon.getValidType())) {
|
||||||
|
if (coupon.getValidEndTime().isBefore(LocalDateTime.now())) {
|
||||||
|
throw new CzgException("操作失败,对应的优惠券已过期");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
MkPointsGoods entity = BeanUtil.copyProperties(dto, MkPointsGoods.class);
|
MkPointsGoods entity = BeanUtil.copyProperties(dto, MkPointsGoods.class);
|
||||||
boolean ret;
|
boolean ret;
|
||||||
if (entity.getId() == null) {
|
if (entity.getId() == null) {
|
||||||
|
|||||||
@@ -1,8 +1,14 @@
|
|||||||
package com.czg.task;
|
package com.czg.task;
|
||||||
|
|
||||||
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import com.czg.config.RedisCst;
|
import com.czg.config.RedisCst;
|
||||||
|
import com.czg.market.dto.ShopCouponDTO;
|
||||||
|
import com.czg.market.entity.MkPointsGoods;
|
||||||
import com.czg.market.entity.MkShopCouponRecord;
|
import com.czg.market.entity.MkShopCouponRecord;
|
||||||
|
import com.czg.market.entity.ShopCoupon;
|
||||||
|
import com.czg.market.service.MkPointsGoodsService;
|
||||||
import com.czg.market.service.MkShopCouponRecordService;
|
import com.czg.market.service.MkShopCouponRecordService;
|
||||||
|
import com.czg.market.service.ShopCouponService;
|
||||||
import com.czg.service.RedisService;
|
import com.czg.service.RedisService;
|
||||||
import com.mybatisflex.core.query.QueryWrapper;
|
import com.mybatisflex.core.query.QueryWrapper;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
@@ -26,7 +32,11 @@ public class CouponTask {
|
|||||||
@Resource
|
@Resource
|
||||||
private MkShopCouponRecordService mkShopCouponRecordService;
|
private MkShopCouponRecordService mkShopCouponRecordService;
|
||||||
@Resource
|
@Resource
|
||||||
|
private ShopCouponService shopCouponService;
|
||||||
|
@Resource
|
||||||
private RedisService redisService;
|
private RedisService redisService;
|
||||||
|
@Resource
|
||||||
|
private MkPointsGoodsService pointsGoodsService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 优惠券 过期
|
* 优惠券 过期
|
||||||
@@ -34,7 +44,20 @@ public class CouponTask {
|
|||||||
// @Scheduled(cron = "0 30 * * * ? ")
|
// @Scheduled(cron = "0 30 * * * ? ")
|
||||||
public void task() {
|
public void task() {
|
||||||
try {
|
try {
|
||||||
|
//优惠券 到期 积分商品同步下架
|
||||||
LocalDateTime now = LocalDateTime.now();
|
LocalDateTime now = LocalDateTime.now();
|
||||||
|
QueryWrapper queryWrapper = QueryWrapper.create().eq(ShopCoupon::getStatus, 1)
|
||||||
|
.eq(ShopCoupon::getValidType, "custom")
|
||||||
|
.lt(ShopCoupon::getValidEndTime, now);
|
||||||
|
|
||||||
|
List<Long> ids = shopCouponService.listAs(queryWrapper, Long.class);
|
||||||
|
shopCouponService.update(new ShopCoupon().setStatus(0), queryWrapper);
|
||||||
|
if (CollUtil.isNotEmpty(ids)) {
|
||||||
|
MkPointsGoods upMkPointsGoods = new MkPointsGoods();
|
||||||
|
upMkPointsGoods.setStatus(0);
|
||||||
|
pointsGoodsService.update(upMkPointsGoods, QueryWrapper.create().in(MkPointsGoods::getCouponId, ids));
|
||||||
|
}
|
||||||
|
|
||||||
mkShopCouponRecordService.update(new MkShopCouponRecord().setStatus(2), new QueryWrapper()
|
mkShopCouponRecordService.update(new MkShopCouponRecord().setStatus(2), new QueryWrapper()
|
||||||
.eq(MkShopCouponRecord::getStatus, 0)
|
.eq(MkShopCouponRecord::getStatus, 0)
|
||||||
.le(MkShopCouponRecord::getUseEndTime, now)
|
.le(MkShopCouponRecord::getUseEndTime, now)
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import com.mybatisflex.annotation.Column;
|
|||||||
import com.mybatisflex.annotation.Id;
|
import com.mybatisflex.annotation.Id;
|
||||||
import com.mybatisflex.annotation.KeyType;
|
import com.mybatisflex.annotation.KeyType;
|
||||||
import com.mybatisflex.annotation.Table;
|
import com.mybatisflex.annotation.Table;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
@@ -14,6 +15,7 @@ import lombok.AllArgsConstructor;
|
|||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 积分商品设置 实体类。
|
* 积分商品设置 实体类。
|
||||||
@@ -26,6 +28,7 @@ import lombok.NoArgsConstructor;
|
|||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@Table("mk_points_goods")
|
@Table("mk_points_goods")
|
||||||
|
@Accessors(chain = true)
|
||||||
public class MkPointsGoods implements Serializable {
|
public class MkPointsGoods implements Serializable {
|
||||||
|
|
||||||
@Serial
|
@Serial
|
||||||
@@ -133,5 +136,4 @@ public class MkPointsGoods implements Serializable {
|
|||||||
private ShopCoupon couponInfo;
|
private ShopCoupon couponInfo;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,4 +36,7 @@ public interface MkPointsGoodsService extends IService<MkPointsGoods> {
|
|||||||
* @param totalExchangeCount 累计兑换数量 最终值
|
* @param totalExchangeCount 累计兑换数量 最终值
|
||||||
*/
|
*/
|
||||||
boolean upNumberById(Long id, Integer quantity, Integer totalExchangeCount);
|
boolean upNumberById(Long id, Integer quantity, Integer totalExchangeCount);
|
||||||
|
|
||||||
|
|
||||||
|
void updateGoodsCouponStatus(Long coupon);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -68,6 +68,10 @@ public class OrderInfoVo implements Serializable {
|
|||||||
* 台桌名称
|
* 台桌名称
|
||||||
*/
|
*/
|
||||||
private String tableName;
|
private String tableName;
|
||||||
|
/**
|
||||||
|
* 取餐码
|
||||||
|
*/
|
||||||
|
private String takeCode;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 订单类型-
|
* 订单类型-
|
||||||
|
|||||||
@@ -45,6 +45,7 @@ public class MkPointsGoodsRecordServiceImpl extends ServiceImpl<MkPointsGoodsRec
|
|||||||
.eq(MkPointsGoodsRecord::getIsDel, 0)
|
.eq(MkPointsGoodsRecord::getIsDel, 0)
|
||||||
.like(MkPointsGoodsRecord::getPointsGoodsName, param.getPointsGoodsName())
|
.like(MkPointsGoodsRecord::getPointsGoodsName, param.getPointsGoodsName())
|
||||||
.like(MkPointsGoodsRecord::getGoodsCategory, param.getGoodsCategory())
|
.like(MkPointsGoodsRecord::getGoodsCategory, param.getGoodsCategory())
|
||||||
|
.orderBy(MkPointsGoodsRecord::getCreateTime, false)
|
||||||
, MkPointsGoodsRecordDTO.class);
|
, MkPointsGoodsRecordDTO.class);
|
||||||
pages.getRecords().forEach(data -> {
|
pages.getRecords().forEach(data -> {
|
||||||
data.fillCouponInfo();
|
data.fillCouponInfo();
|
||||||
|
|||||||
@@ -100,11 +100,9 @@ public class MkPointsGoodsServiceImpl extends ServiceImpl<MkPointsGoodsMapper, M
|
|||||||
} else {
|
} else {
|
||||||
queryWrapper.eq(MkPointsGoodsRecord::getStatus, status);
|
queryWrapper.eq(MkPointsGoodsRecord::getStatus, status);
|
||||||
queryWrapper.orderBy(MkPointsGoodsRecord::getStatus, false);
|
queryWrapper.orderBy(MkPointsGoodsRecord::getStatus, false);
|
||||||
queryWrapper.orderBy(MkPointsGoodsRecord::getCreateTime, false);
|
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
queryWrapper.orderBy(MkPointsGoodsRecord::getCreateTime, false);
|
|
||||||
}
|
}
|
||||||
|
queryWrapper.orderBy(MkPointsGoodsRecord::getCreateTime, false);
|
||||||
Page<MkPointsGoodsRecord> pages = goodsRecordService.page(Page.of(page, size), queryWrapper);
|
Page<MkPointsGoodsRecord> pages = goodsRecordService.page(Page.of(page, size), queryWrapper);
|
||||||
pages.getRecords().forEach(MkPointsGoodsRecord::fillCouponInfo);
|
pages.getRecords().forEach(MkPointsGoodsRecord::fillCouponInfo);
|
||||||
return pages;
|
return pages;
|
||||||
@@ -159,4 +157,11 @@ public class MkPointsGoodsServiceImpl extends ServiceImpl<MkPointsGoodsMapper, M
|
|||||||
return updateById(goodUp);
|
return updateById(goodUp);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateGoodsCouponStatus(Long couponId) {
|
||||||
|
MkPointsGoods upMkPointsGoods = new MkPointsGoods();
|
||||||
|
upMkPointsGoods.setStatus(0);
|
||||||
|
update(upMkPointsGoods, query().eq(MkPointsGoods::getCouponId, couponId));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user