123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- package com.fuint.module.schedule;
- import com.fuint.common.enums.UserCouponStatusEnum;
- import com.fuint.common.enums.WxMessageEnum;
- import com.fuint.common.service.CouponService;
- import com.fuint.common.service.MemberService;
- import com.fuint.common.service.UserCouponService;
- import com.fuint.common.service.WeixinService;
- import com.fuint.common.util.DateUtil;
- import com.fuint.framework.exception.BusinessCheckException;
- import com.fuint.repository.mapper.MtUserCouponMapper;
- import com.fuint.repository.model.MtCoupon;
- import com.fuint.repository.model.MtUser;
- import com.fuint.repository.model.MtUserCoupon;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.scheduling.annotation.EnableScheduling;
- import org.springframework.scheduling.annotation.Scheduled;
- import org.springframework.stereotype.Component;
- import org.springframework.core.env.Environment;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.transaction.annotation.Transactional;
- import java.util.*;
- /**
- * 卡券到期处理定时任务
- *
- * Created by FSQ
- * CopyRight https://www.fuint.cn
- */
- @EnableScheduling
- @Component("couponExpireJob")
- public class CouponExpireJob {
- private Logger logger = LoggerFactory.getLogger(CouponExpireJob.class);
- /**
- * 会员卡券服务接口
- */
- @Autowired(required = false)
- private UserCouponService userCouponService;
- /**
- * 微信服务接口
- * */
- @Autowired(required = false)
- private WeixinService weixinService;
- /**
- * 卡券服务接口
- * */
- @Autowired(required = false)
- private CouponService couponService;
- /**
- * 会员服务接口
- * */
- @Autowired(required = false)
- private MemberService memberService;
- @Autowired(required = false)
- private MtUserCouponMapper mtUserCouponMapper;
- @Autowired
- private Environment environment;
- /**
- * 一次最多发送消息数量
- **/
- private int MAX_SEND_NUM = 50;
- @Scheduled(cron = "${couponExpire.job.time}")
- @Transactional(rollbackFor = Exception.class)
- public void dealCoupon() throws BusinessCheckException {
- String theSwitch = environment.getProperty("couponExpire.job.switch");
- if (theSwitch != null && theSwitch.equals("1")) {
- logger.info("CouponExpireJobJobStart!!!");
- // 获取3天内到期的会员卡券
- Calendar calendar = Calendar.getInstance();
- calendar.add(Calendar.DATE, 3);
- Date dateTime = calendar.getTime();
- String endTime = DateUtil.formatDate(dateTime, "yyyy-MM-dd HH:mm:ss");
- String startTime = DateUtil.formatDate(new Date(), "yyyy-MM-dd HH:mm:ss");
- List<MtUserCoupon> dataList = userCouponService.getUserCouponListByExpireTime(0, UserCouponStatusEnum.UNUSED.getKey(), startTime, endTime);
- if (dataList.size() > 0) {
- int dealNum = 0;
- for (MtUserCoupon mtUserCoupon : dataList) {
- if (dealNum <= MAX_SEND_NUM) {
- // 发送小程序订阅消息
- MtCoupon couponInfo = couponService.queryCouponById(mtUserCoupon.getCouponId());
- MtUser userInfo = null;
- if (mtUserCoupon.getUserId() != null && mtUserCoupon.getUserId() > 0) {
- userInfo = memberService.queryMemberById(mtUserCoupon.getUserId());
- }
- if (couponInfo != null && userInfo != null) {
- Date now = new Date();
- Date sendTime = new Date(now.getTime());
- Map<String, Object> params = new HashMap<>();
- String couponExpireTime = DateUtil.formatDate(mtUserCoupon.getExpireTime(), "yyyy-MM-dd HH:mm");
- params.put("expireTime", couponExpireTime);
- params.put("name", couponInfo.getName());
- params.put("tips", "您的卡券即将到期,请留意~");
- weixinService.sendSubscribeMessage(userInfo.getMerchantId(), userInfo.getId(), userInfo.getOpenId(), WxMessageEnum.COUPON_EXPIRE.getKey(), "pages/user/index", params, sendTime);
- mtUserCoupon.setExpireTime(null);
- mtUserCoupon.setUsedTime(new Date());
- mtUserCouponMapper.updateById(mtUserCoupon);
- }
- dealNum++;
- }
- }
- }
- logger.info("CouponExpireJobJobEnd!!!");
- }
- }
- }
|