diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/business/integral/entity/IntegralSettings.java b/fuintBackend/fuint-application/src/main/java/com/fuint/business/integral/entity/IntegralSettings.java index d0e6bdba3..a2f07c8f8 100644 --- a/fuintBackend/fuint-application/src/main/java/com/fuint/business/integral/entity/IntegralSettings.java +++ b/fuintBackend/fuint-application/src/main/java/com/fuint/business/integral/entity/IntegralSettings.java @@ -96,6 +96,16 @@ public class IntegralSettings extends BaseEntity { */ private Integer chainStoreId; + /** + * 适用规则 0-无限制 1-有限制 + */ + private Integer signApplicableRules; + + /** + * 签到周期 0-一周 1-两周 2-一个月 只有适用规则为1时有值 + */ + private Integer signCycle; + } diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/business/marketingActivity/cardCoupon/mapper/CardCouponMapper.java b/fuintBackend/fuint-application/src/main/java/com/fuint/business/marketingActivity/cardCoupon/mapper/CardCouponMapper.java index ea5f2d758..ccd848be7 100644 --- a/fuintBackend/fuint-application/src/main/java/com/fuint/business/marketingActivity/cardCoupon/mapper/CardCouponMapper.java +++ b/fuintBackend/fuint-application/src/main/java/com/fuint/business/marketingActivity/cardCoupon/mapper/CardCouponMapper.java @@ -21,5 +21,13 @@ public interface CardCouponMapper extends BaseMapper { IPage pageVo(Page page, @Param("cardCoupon") CardCoupon cardCoupon); IPage selectAllByPageAndStoreId(Page page, @Param("cardCoupon")CardCoupon cardCoupon); + IPage selectAllByPageAndIds(Page page,@Param("ids") List ids); + + /** + * 根据店铺id查询优惠券今日领取数量 + * @param cardCouponUniVos + * @return + */ + List selectByStoreIdCount(CardCouponUniVo cardCouponUniVos); } diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/business/marketingActivity/cardCoupon/mapper/CardCouponUserMapper.java b/fuintBackend/fuint-application/src/main/java/com/fuint/business/marketingActivity/cardCoupon/mapper/CardCouponUserMapper.java index d2a92c445..7b6657980 100644 --- a/fuintBackend/fuint-application/src/main/java/com/fuint/business/marketingActivity/cardCoupon/mapper/CardCouponUserMapper.java +++ b/fuintBackend/fuint-application/src/main/java/com/fuint/business/marketingActivity/cardCoupon/mapper/CardCouponUserMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.fuint.business.marketingActivity.cardCoupon.entity.CardCouponUser; +import com.fuint.business.marketingActivity.cardCoupon.vo.CardCouponUniVo; import com.fuint.business.marketingActivity.cardCoupon.vo.CardCouponUserVo; import com.fuint.business.marketingActivity.cardCoupon.vo.CardCouponVO; import org.apache.ibatis.annotations.Mapper; @@ -11,6 +12,7 @@ import org.apache.ibatis.annotations.Param; import java.util.Date; import java.util.List; +import java.util.Map; /** * 用户优惠卷表2024(CardCouponUser)表数据库访问层 @@ -38,5 +40,7 @@ public interface CardCouponUserMapper extends BaseMapper { * @return */ IPage queryPage(Page page,@Param("entity") CardCouponUserVo cardCouponUserVo); + + List selectCouponCount(@Param("storeId") Integer storeId,@Param("userId") Integer userId); } diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/business/marketingActivity/cardCoupon/mapper/xml/CardCouponMapper.xml b/fuintBackend/fuint-application/src/main/java/com/fuint/business/marketingActivity/cardCoupon/mapper/xml/CardCouponMapper.xml index d1e0241ef..7455a26a1 100644 --- a/fuintBackend/fuint-application/src/main/java/com/fuint/business/marketingActivity/cardCoupon/mapper/xml/CardCouponMapper.xml +++ b/fuintBackend/fuint-application/src/main/java/com/fuint/business/marketingActivity/cardCoupon/mapper/xml/CardCouponMapper.xml @@ -31,7 +31,7 @@ resultType="com.fuint.business.marketingActivity.cardCoupon.vo.CardCouponUniVo"> SELECT cc.*, - mt.NAME AS typeName, + mt.NAME AS storeName, CASE cc.type WHEN 1 THEN @@ -44,7 +44,7 @@ '油品立减券' WHEN 5 THEN '单品代金券' - END AS statusName + END AS typeName FROM card_coupon cc LEFT JOIN mt_store mt ON mt.id = cc.store_id @@ -66,5 +66,46 @@ + + diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/business/marketingActivity/cardCoupon/mapper/xml/CardCouponUserMapper.xml b/fuintBackend/fuint-application/src/main/java/com/fuint/business/marketingActivity/cardCoupon/mapper/xml/CardCouponUserMapper.xml index d3ee783ef..c0d6a60b9 100644 --- a/fuintBackend/fuint-application/src/main/java/com/fuint/business/marketingActivity/cardCoupon/mapper/xml/CardCouponUserMapper.xml +++ b/fuintBackend/fuint-application/src/main/java/com/fuint/business/marketingActivity/cardCoupon/mapper/xml/CardCouponUserMapper.xml @@ -29,4 +29,12 @@ + diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/business/marketingActivity/cardCoupon/service/impl/CardCouponServiceImpl.java b/fuintBackend/fuint-application/src/main/java/com/fuint/business/marketingActivity/cardCoupon/service/impl/CardCouponServiceImpl.java index 6dd229a56..52e081aef 100644 --- a/fuintBackend/fuint-application/src/main/java/com/fuint/business/marketingActivity/cardCoupon/service/impl/CardCouponServiceImpl.java +++ b/fuintBackend/fuint-application/src/main/java/com/fuint/business/marketingActivity/cardCoupon/service/impl/CardCouponServiceImpl.java @@ -1,6 +1,9 @@ package com.fuint.business.marketingActivity.cardCoupon.service.impl; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -8,6 +11,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.fuint.business.marketingActivity.cardCoupon.entity.CardCoupon; import com.fuint.business.marketingActivity.cardCoupon.mapper.CardCouponMapper; +import com.fuint.business.marketingActivity.cardCoupon.mapper.CardCouponUserMapper; import com.fuint.business.marketingActivity.cardCoupon.service.CardCouponService; import com.fuint.business.marketingActivity.cardCoupon.vo.CardCouponUniVo; import com.fuint.business.marketingActivity.cardCoupon.vo.CardCouponVO; @@ -20,6 +24,8 @@ import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** * 油站优惠卷表2024(CardCoupon)表服务实现类 @@ -32,6 +38,9 @@ public class CardCouponServiceImpl extends ServiceImpl pageVo(Page page, CardCoupon cardCoupon) { return baseMapper.pageVo( page, cardCoupon); @@ -49,24 +58,64 @@ public class CardCouponServiceImpl extends ServiceImpl cardCouponUniVos = baseMapper.selectAllByPageAndStoreId(page, cardCoupon); - List cardCouponVos = new ArrayList<>(); + //用户拥有的优惠券以及数量 + List list= cardCouponUserMapper.selectCouponCount(cardCoupon.getStoreId(), nowAccountInfo.getId()); + Map map = list.stream().collect(Collectors.toMap(CardCouponUniVo::getId, CardCouponUniVo::getCount)); + + CardCouponUniVo cardCouponUniVo1 = new CardCouponUniVo(); + cardCouponUniVo1.setStoreId(cardCoupon.getStoreId()); + cardCouponUniVo1.setStartTime(startTime.toString()); + cardCouponUniVo1.setEndTime(endTime.toString()); + //根据店铺id查询优惠券今日领取数量 + List cardCouponUniVos1 = baseMapper.selectByStoreIdCount(cardCouponUniVo1); + Map cardCouponMap = cardCouponUniVos1.stream().collect(Collectors.toMap(CardCouponUniVo::getId, CardCouponUniVo::getCount)); + + + //存放最终可领取的优惠券id集合 + List ids = new ArrayList<>(); //循环店铺优惠券 for (CardCouponUniVo coupon : cardCouponUniVos.getRecords()) { //查询该优惠券是否已到达限制数量 - if (coupon.getTfGetNum() < coupon.getTfTotal()){ - CardCouponUniVo cardCouponUniVo = BeanUtil.copyProperties(coupon, CardCouponUniVo.class); - //计算领取的比例 - double scale = (coupon.getTfGetNum() * 1.0 / coupon.getTfTotal()) * 100; - cardCouponUniVo.setScale(scale + "%"); + if ((coupon.getTfGetNum() < coupon.getTfTotal())) { + Integer count = 0; + if (ObjectUtil.isNotEmpty(cardCouponMap.get(coupon.getId()))){ + count = cardCouponMap.get(coupon.getId()); + } + if (count < coupon.getDayGetLimit()) { + Integer getNumLimit = coupon.getGetNumLimit(); + Integer userCount = 0; + if (ObjectUtil.isNotEmpty(map.get(coupon.getId()))){ + userCount = map.get(coupon.getId()); + } + if (userCount < getNumLimit) { + //查询当前用户所拥有的优惠券数量 + ids.add(coupon.getId()); + } + } } } - return cardCouponUniVos; + IPage cardCouponUniVoIPage = new Page<>(page.getCurrent(), page.getSize()); + if (CollUtil.isNotEmpty(ids)) { + cardCouponUniVoIPage = baseMapper.selectAllByPageAndIds(page, ids); + cardCouponUniVoIPage.getRecords().stream().forEach(coupon -> extracted(coupon)); + } + return cardCouponUniVoIPage; + } + + private static void extracted(CardCouponUniVo coupon) { + //计算领取的比例 + double scale = (coupon.getTfGetNum() * 1.0 / coupon.getTfTotal()) * 100; + coupon.setScale(scale + "%"); } } diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/business/marketingActivity/cardCoupon/vo/CardCouponUniVo.java b/fuintBackend/fuint-application/src/main/java/com/fuint/business/marketingActivity/cardCoupon/vo/CardCouponUniVo.java index c4a75b6ed..26c0fa75a 100644 --- a/fuintBackend/fuint-application/src/main/java/com/fuint/business/marketingActivity/cardCoupon/vo/CardCouponUniVo.java +++ b/fuintBackend/fuint-application/src/main/java/com/fuint/business/marketingActivity/cardCoupon/vo/CardCouponUniVo.java @@ -1,5 +1,7 @@ package com.fuint.business.marketingActivity.cardCoupon.vo; +import cn.hutool.core.date.DateTime; +import com.fasterxml.jackson.annotation.JsonIgnore; import com.fuint.business.marketingActivity.cardCoupon.entity.CardCoupon; import lombok.Data; @@ -11,4 +13,12 @@ public class CardCouponUniVo extends CardCoupon { private String scale; //兑换券类型 private String typeName; + + private Integer count; + + @JsonIgnore + private String startTime; + + @JsonIgnore + private String endTime; }