更新9.26

This commit is contained in:
许允枞 2024-09-26 16:47:47 +08:00
parent 89e1f60ac7
commit 513f5ab42f
7 changed files with 139 additions and 9 deletions

View File

@ -96,6 +96,16 @@ public class IntegralSettings extends BaseEntity {
*/ */
private Integer chainStoreId; private Integer chainStoreId;
/**
* 适用规则 0-无限制 1-有限制
*/
private Integer signApplicableRules;
/**
* 签到周期 0-一周 1-两周 2-一个月 只有适用规则为1时有值
*/
private Integer signCycle;
} }

View File

@ -21,5 +21,13 @@ public interface CardCouponMapper extends BaseMapper<CardCoupon> {
IPage<CardCoupon> pageVo(Page page, @Param("cardCoupon") CardCoupon cardCoupon); IPage<CardCoupon> pageVo(Page page, @Param("cardCoupon") CardCoupon cardCoupon);
IPage<CardCouponUniVo> selectAllByPageAndStoreId(Page page, @Param("cardCoupon")CardCoupon cardCoupon); IPage<CardCouponUniVo> selectAllByPageAndStoreId(Page page, @Param("cardCoupon")CardCoupon cardCoupon);
IPage<CardCouponUniVo> selectAllByPageAndIds(Page page,@Param("ids") List<Integer> ids);
/**
* 根据店铺id查询优惠券今日领取数量
* @param cardCouponUniVos
* @return
*/
List<CardCouponUniVo> selectByStoreIdCount(CardCouponUniVo cardCouponUniVos);
} }

View File

@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fuint.business.marketingActivity.cardCoupon.entity.CardCouponUser; 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.CardCouponUserVo;
import com.fuint.business.marketingActivity.cardCoupon.vo.CardCouponVO; import com.fuint.business.marketingActivity.cardCoupon.vo.CardCouponVO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
@ -11,6 +12,7 @@ import org.apache.ibatis.annotations.Param;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* 用户优惠卷表2024(CardCouponUser)表数据库访问层 * 用户优惠卷表2024(CardCouponUser)表数据库访问层
@ -38,5 +40,7 @@ public interface CardCouponUserMapper extends BaseMapper<CardCouponUser> {
* @return * @return
*/ */
IPage<CardCouponUserVo> queryPage(Page page,@Param("entity") CardCouponUserVo cardCouponUserVo); IPage<CardCouponUserVo> queryPage(Page page,@Param("entity") CardCouponUserVo cardCouponUserVo);
List<CardCouponUniVo> selectCouponCount(@Param("storeId") Integer storeId,@Param("userId") Integer userId);
} }

View File

@ -31,7 +31,7 @@
resultType="com.fuint.business.marketingActivity.cardCoupon.vo.CardCouponUniVo"> resultType="com.fuint.business.marketingActivity.cardCoupon.vo.CardCouponUniVo">
SELECT SELECT
cc.*, cc.*,
mt.NAME AS typeName, mt.NAME AS storeName,
CASE CASE
cc.type cc.type
WHEN 1 THEN WHEN 1 THEN
@ -44,7 +44,7 @@
'油品立减券' '油品立减券'
WHEN 5 THEN WHEN 5 THEN
'单品代金券' '单品代金券'
END AS statusName END AS typeName
FROM FROM
card_coupon cc card_coupon cc
LEFT JOIN mt_store mt ON mt.id = cc.store_id LEFT JOIN mt_store mt ON mt.id = cc.store_id
@ -66,5 +66,46 @@
</if> </if>
</where> </where>
</select> </select>
<select id="selectByStoreIdCount"
resultType="com.fuint.business.marketingActivity.cardCoupon.vo.CardCouponUniVo">
select cc.id id, count(cu.id) count
from card_coupon cc
left join card_coupon_user as cu on cc.id = cu.card_coupon_id
<where>
cc.store_id = #{storeId}
<if test="startTime!=null and startTime!=''">
and cu.create_time between #{startTime} and #{endTime}
</if>
</where>
group by cc.id
</select>
<select id="selectAllByPageAndIds"
resultType="com.fuint.business.marketingActivity.cardCoupon.vo.CardCouponUniVo">
SELECT
cc.*,
mt.NAME AS storeName,
CASE
cc.type
WHEN 1 THEN
'代金券'
WHEN 2 THEN
'兑换券'
WHEN 3 THEN
'折扣券'
WHEN 4 THEN
'油品立减券'
WHEN 5 THEN
'单品代金券'
END AS typeName
FROM
card_coupon cc
LEFT JOIN mt_store mt ON mt.id = cc.store_id
<where>
cc.id in
<foreach collection="ids" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</where>
</select>
</mapper> </mapper>

View File

@ -29,4 +29,12 @@
</if> </if>
</where> </where>
</select> </select>
<select id="selectCouponCount" resultType="com.fuint.business.marketingActivity.cardCoupon.vo.CardCouponUniVo">
SELECT
card_coupon_id id,
count(1) count
FROM card_coupon_user
WHERE store_id = #{storeId} AND mt_user_id = #{userId}
group by card_coupon_id
</select>
</mapper> </mapper>

View File

@ -1,6 +1,9 @@
package com.fuint.business.marketingActivity.cardCoupon.service.impl; package com.fuint.business.marketingActivity.cardCoupon.service.impl;
import cn.hutool.core.bean.BeanUtil; 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 cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; 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.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fuint.business.marketingActivity.cardCoupon.entity.CardCoupon; import com.fuint.business.marketingActivity.cardCoupon.entity.CardCoupon;
import com.fuint.business.marketingActivity.cardCoupon.mapper.CardCouponMapper; 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.service.CardCouponService;
import com.fuint.business.marketingActivity.cardCoupon.vo.CardCouponUniVo; import com.fuint.business.marketingActivity.cardCoupon.vo.CardCouponUniVo;
import com.fuint.business.marketingActivity.cardCoupon.vo.CardCouponVO; import com.fuint.business.marketingActivity.cardCoupon.vo.CardCouponVO;
@ -20,6 +24,8 @@ import org.springframework.stereotype.Service;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/** /**
* 油站优惠卷表2024(CardCoupon)表服务实现类 * 油站优惠卷表2024(CardCoupon)表服务实现类
@ -32,6 +38,9 @@ public class CardCouponServiceImpl extends ServiceImpl<CardCouponMapper, CardCou
@Autowired @Autowired
private MtStoreMapper mtStoreMapper; private MtStoreMapper mtStoreMapper;
@Autowired
private CardCouponUserMapper cardCouponUserMapper;
@Override @Override
public IPage<CardCoupon> pageVo(Page page, CardCoupon cardCoupon) { public IPage<CardCoupon> pageVo(Page page, CardCoupon cardCoupon) {
return baseMapper.pageVo( page, cardCoupon); return baseMapper.pageVo( page, cardCoupon);
@ -49,24 +58,64 @@ public class CardCouponServiceImpl extends ServiceImpl<CardCouponMapper, CardCou
@Override @Override
public IPage selectAllByPageAndStoreId(Page page, CardCoupon cardCoupon) { public IPage selectAllByPageAndStoreId(Page page, CardCoupon cardCoupon) {
//获取今天开始与结束时间
DateTime now = DateUtil.date();
DateTime startTime = DateUtil.beginOfDay(now);
DateTime endTime = DateUtil.endOfDay(now);
AccountInfo nowAccountInfo = TokenUtil.getNowAccountInfo(); AccountInfo nowAccountInfo = TokenUtil.getNowAccountInfo();
//首先查询该店铺所有的优惠券 //首先查询该店铺所有的优惠券
cardCoupon.setPutType("2"); cardCoupon.setPutType("2");
cardCoupon.setStatus("1"); cardCoupon.setStatus("1");
IPage<CardCouponUniVo> cardCouponUniVos = baseMapper.selectAllByPageAndStoreId(page, cardCoupon); IPage<CardCouponUniVo> cardCouponUniVos = baseMapper.selectAllByPageAndStoreId(page, cardCoupon);
List<CardCouponUniVo> cardCouponVos = new ArrayList<>(); //用户拥有的优惠券以及数量
List<CardCouponUniVo> list= cardCouponUserMapper.selectCouponCount(cardCoupon.getStoreId(), nowAccountInfo.getId());
Map<Integer, Integer> 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<CardCouponUniVo> cardCouponUniVos1 = baseMapper.selectByStoreIdCount(cardCouponUniVo1);
Map<Integer, Integer> cardCouponMap = cardCouponUniVos1.stream().collect(Collectors.toMap(CardCouponUniVo::getId, CardCouponUniVo::getCount));
//存放最终可领取的优惠券id集合
List<Integer> ids = new ArrayList<>();
//循环店铺优惠券 //循环店铺优惠券
for (CardCouponUniVo coupon : cardCouponUniVos.getRecords()) { for (CardCouponUniVo coupon : cardCouponUniVos.getRecords()) {
//查询该优惠券是否已到达限制数量 //查询该优惠券是否已到达限制数量
if (coupon.getTfGetNum() < coupon.getTfTotal()){ if ((coupon.getTfGetNum() < coupon.getTfTotal())) {
CardCouponUniVo cardCouponUniVo = BeanUtil.copyProperties(coupon, CardCouponUniVo.class); Integer count = 0;
//计算领取的比例 if (ObjectUtil.isNotEmpty(cardCouponMap.get(coupon.getId()))){
double scale = (coupon.getTfGetNum() * 1.0 / coupon.getTfTotal()) * 100; count = cardCouponMap.get(coupon.getId());
cardCouponUniVo.setScale(scale + "%"); }
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<CardCouponUniVo> 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 + "%");
} }
} }

View File

@ -1,5 +1,7 @@
package com.fuint.business.marketingActivity.cardCoupon.vo; 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 com.fuint.business.marketingActivity.cardCoupon.entity.CardCoupon;
import lombok.Data; import lombok.Data;
@ -11,4 +13,12 @@ public class CardCouponUniVo extends CardCoupon {
private String scale; private String scale;
//兑换券类型 //兑换券类型
private String typeName; private String typeName;
private Integer count;
@JsonIgnore
private String startTime;
@JsonIgnore
private String endTime;
} }