生日有礼定时奖励
This commit is contained in:
@@ -1,28 +1,42 @@
|
||||
package com.czg.service.market.service.impl;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.date.DateTime;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson2.JSONArray;
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import com.czg.account.entity.ShopInfo;
|
||||
import com.czg.account.entity.ShopUser;
|
||||
import com.czg.account.service.ShopInfoService;
|
||||
import com.czg.account.service.ShopUserService;
|
||||
import com.czg.config.RabbitPublisher;
|
||||
import com.czg.constant.TableValueConstant;
|
||||
import com.czg.market.dto.CouponInfoDTO;
|
||||
import com.czg.market.dto.MkBirthdayGiftDTO;
|
||||
import com.czg.market.dto.MkRewardCouponDTO;
|
||||
import com.czg.market.entity.*;
|
||||
import com.czg.market.service.MkBirthdayGiftRecordCouponService;
|
||||
import com.czg.market.service.MkBirthdayGiftRecordService;
|
||||
import com.czg.market.service.*;
|
||||
import com.czg.market.vo.MkBirthdayGiftRecordSummaryVO;
|
||||
import com.czg.market.vo.MkBirthdayGiftRecordVO;
|
||||
import com.czg.market.vo.MkBirthdayGiftVO;
|
||||
import com.czg.utils.FunUtils;
|
||||
import com.czg.utils.MyQueryWrapper;
|
||||
import com.czg.utils.PageUtil;
|
||||
import com.mybatisflex.core.paginate.Page;
|
||||
import com.mybatisflex.core.query.QueryWrapper;
|
||||
import com.mybatisflex.spring.service.impl.ServiceImpl;
|
||||
import com.czg.market.service.MkBirthdayGiftService;
|
||||
import com.czg.service.market.mapper.MkBirthdayGiftMapper;
|
||||
import jakarta.annotation.Resource;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.dubbo.config.annotation.DubboReference;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 生日有礼 服务层实现。
|
||||
@@ -30,12 +44,26 @@ import java.util.ArrayList;
|
||||
* @author zs
|
||||
* @since 2025-10-14
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class MkBirthdayGiftServiceImpl extends ServiceImpl<MkBirthdayGiftMapper, MkBirthdayGift> implements MkBirthdayGiftService{
|
||||
@Resource
|
||||
private MkBirthdayGiftRecordService birthdayGiftRecordService;
|
||||
@Resource
|
||||
private MkBirthdayGiftRecordCouponService birthdayGiftRecordCouponService;
|
||||
@Resource
|
||||
private ShopCouponService shopCouponService;
|
||||
@Resource
|
||||
private MkShopCouponRecordService shopCouponRecordService;
|
||||
@Resource
|
||||
private SmsShopTemplateService smsShopTemplateService;
|
||||
@Resource
|
||||
private ShopInfoService shopInfoService;
|
||||
@Resource
|
||||
private RabbitPublisher rabbitPublisher;
|
||||
|
||||
@DubboReference
|
||||
private ShopUserService shopUserService;
|
||||
@Override
|
||||
public MkBirthdayGiftVO detail(Long shopId) {
|
||||
MkBirthdayGift gift = getOne(new QueryWrapper().eq(MkBirthdayGift::getMainShopId, shopId));
|
||||
@@ -113,4 +141,72 @@ public class MkBirthdayGiftServiceImpl extends ServiceImpl<MkBirthdayGiftMapper,
|
||||
|
||||
return birthdayGiftRecordCouponService.getOneAsOpt(queryWrapper, MkBirthdayGiftRecordSummaryVO.class).orElseGet(MkBirthdayGiftRecordSummaryVO::new);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deliver() {
|
||||
list(new QueryWrapper().eq(MkBirthdayGift::getIsEnable, 1)).forEach(birthdayGift -> {
|
||||
if (StrUtil.isNotBlank(birthdayGift.getConfigList())) {
|
||||
SmsShopTemplate shopTemplate = smsShopTemplateService.getById(birthdayGift.getTemplateId());
|
||||
ShopInfo shopInfo = shopInfoService.getById(birthdayGift.getMainShopId());
|
||||
FunUtils.safeRunVoid(() -> {
|
||||
JSONArray.parseArray(birthdayGift.getConfigList()).toJavaList(MkBirthdayGiftConfig.class).forEach(config -> {
|
||||
LocalDate current = DateUtil.date().toLocalDateTime().toLocalDate();
|
||||
if ("day".equals(config.getDeliverDate())) {
|
||||
current = current.plusDays(config.getDeliverTime());
|
||||
}else {
|
||||
current = current.plusDays(config.getDeliverTime() * 30);
|
||||
}
|
||||
|
||||
QueryWrapper queryWrapper = new QueryWrapper().isNotNull(ShopUser::getBirthDay)
|
||||
.eq(ShopUser::getMainShopId, birthdayGift.getMainShopId()).eq(ShopUser::getBirthDay, current);
|
||||
if ("vip".equals(config.getUserType())) {
|
||||
queryWrapper.eq(ShopUser::getIsVip, 1);
|
||||
}
|
||||
|
||||
shopUserService.list(queryWrapper).forEach(shopUser -> {
|
||||
// 发放记录
|
||||
MkBirthdayGiftRecord giftRecord = new MkBirthdayGiftRecord().setUserId(shopUser.getUserId()).setShopUserId(shopUser.getId())
|
||||
.setPushStatus(birthdayGift.getSendSms() == 1 ?
|
||||
TableValueConstant.BirthdayGiftRecord.PushStatus.WAIT_PUSH.getCode() : TableValueConstant.BirthdayGiftRecord.PushStatus.NO_PUSH.getCode())
|
||||
.setMainShopId(birthdayGift.getMainShopId()).setBirthday(shopUser.getBirthDay())
|
||||
.setSourceId(birthdayGift.getId()).setTemplateCode(shopTemplate.getTemplateCode()).setTemplateContent(JSONObject.toJSONString(Map.of(
|
||||
"nickName", shopUser.getNickName(),
|
||||
"shopName", shopInfo.getShopName(),
|
||||
"num", config.getCouponInfoList() != null ? config.getCouponInfoList().stream().map(CouponInfoDTO::getNum).reduce(0, Integer::sum) : 0
|
||||
)));
|
||||
birthdayGiftRecordService.save(giftRecord);
|
||||
rabbitPublisher.sendMarketSmsMsg(giftRecord.getId().toString());
|
||||
|
||||
// 优惠券信息
|
||||
if (config.getCouponInfoList() != null && !config.getCouponInfoList().isEmpty()) {
|
||||
Map<Long, ShopCoupon> couponMap = shopCouponService.list(new QueryWrapper().eq(ShopCoupon::getId, config.getCouponInfoList()
|
||||
.stream().map(CouponInfoDTO::getId).toList())).stream().collect(Collectors.toMap(ShopCoupon::getId, item -> item));
|
||||
config.getCouponInfoList().forEach(couponInfo -> {
|
||||
ShopCoupon shopCoupon = couponMap.get(couponInfo.getId());
|
||||
if (shopCoupon == null) {
|
||||
log.warn("优惠券不存在, id: {}", couponInfo.getId());
|
||||
return;
|
||||
}
|
||||
FunUtils.safeRunVoid(() -> {
|
||||
shopCouponRecordService.grant(birthdayGift.getMainShopId(), new MkRewardCouponDTO().setCouponId(couponInfo.getId())
|
||||
.setNum(couponInfo.getNum())
|
||||
.setUserId(shopUser.getUserId())
|
||||
.setShopId(birthdayGift.getMainShopId()));
|
||||
MkBirthdayGiftRecordCoupon recordCoupon = new MkBirthdayGiftRecordCoupon().setCouponName(shopCoupon.getTitle()).setNum(couponInfo.getNum())
|
||||
.setType(TableValueConstant.BirthdayGiftRecordCoupon.Type.GIVE.getCode())
|
||||
.setRecordId(giftRecord.getId()).setUserId(shopUser.getUserId()).setShopUserId(shopUser.getId());
|
||||
birthdayGiftRecordCouponService.save(recordCoupon);
|
||||
}, "优惠券发放失败");
|
||||
});
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -330,18 +330,13 @@ public class TbMemberConfigServiceImpl extends ServiceImpl<TbMemberConfigMapper,
|
||||
}
|
||||
|
||||
if (levelVO.getCycleRewardCouponList() != null && !levelVO.getCycleRewardCouponList().isEmpty()) {
|
||||
levelVO.getCycleRewardCouponList().forEach(item -> {
|
||||
shopCouponRecordService.grant(shopId, new MkRewardCouponDTO().setCouponId(item.getCoupon().getId())
|
||||
.setNum(item.getNum())
|
||||
.setUserId(shopUser.getUserId())
|
||||
.setShopId(shopId));
|
||||
|
||||
// TODO 待办
|
||||
ArrayList<MkCouponGiftDTO> giftDTOS = new ArrayList<>();
|
||||
// levelVO.getCycleRewardCouponList().forEach(item -> {
|
||||
// giftDTOS.add(new MkCouponGiftDTO().setCouponId(item.getCoupon().getId())
|
||||
// .setCouponId(item.getCoupon().getId())
|
||||
// .setCouponName(item.getCoupon().getTitle())
|
||||
// .setSourceName("会员开通赠券")
|
||||
// .setSourceId(shopUser)
|
||||
// .setType(1)
|
||||
// .setNum(item.getNum()));
|
||||
// });
|
||||
});
|
||||
// couponGiftService.addCouponGift(memberOrderId, "会员开通赠券", 1, giftDTOS);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.czg.service.order.utils;
|
||||
|
||||
import cn.hutool.core.lang.func.Func0;
|
||||
import jakarta.annotation.Resource;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.data.redis.core.RedisTemplate;
|
||||
@@ -97,4 +98,6 @@ public class FunUtil {
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user