package com.caimei.modules.coupon.service; import com.caimei.modules.coupon.entity.CmCoupon; import com.caimei.modules.sys.utils.SMSUtils; import com.caimei.modules.user.dao.MessageCenterDao; import com.caimei.modules.user.entity.CmUser; import com.caimei.modules.user.entity.MessageCenter; import com.caimei.po.User; import lombok.extern.slf4j.Slf4j; import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; @Service @EnableAsync @Transactional(readOnly = false) @Slf4j public class AsyncService { @Resource private MessageCenterDao messageCenterDao; //优惠券站内消息推送 @Async("mytask") public void consumer(CmCoupon cmCoupon) { log.info("优惠券异步信推送开始--------------------》"); String smsContent = "采美平台送您" + cmCoupon.getCouponAmount() + "元优惠券,众多大牌正品等着您,快戳采美网站链接www.caimei365.com" + "或微信搜索“采美采购商城”小程序登录采美平台领取下单吧。关注公众号“采美网”获取更多优惠和精彩资讯。退订回T"; MessageCenter messageCenter = new MessageCenter(); Date date = new Date(); String now = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")).format(date); messageCenter.userType(1).couponType(cmCoupon.getCouponType()).messageType(4).time(now).couponMessageType(1). couponFee(cmCoupon.getCouponAmount().doubleValue()); List clubIds = messageCenterDao.ClubIds(); List users = new ArrayList<>(); switch (cmCoupon.getCouponType()) { // 劵类型 0活动券 1品类券 2用户专享券 3店铺券 4新用户券 case 0: setCouponMessage(messageCenter, clubIds, smsContent, null); break; case 1: String type = "1".equals(cmCoupon.getCategoryType()) ? "产品" : "仪器"; smsContent = "采美平台" + type + "类商品大优惠,采美平台送您" + cmCoupon.getCouponAmount() + "元优惠券,快戳采美网站链接www.caimei365.com" + "或微信搜索“采美采购商城”小程序登录采美平台领取吧。关注公众号“采美网”获取更多优惠和精彩资讯。退订回T"; setCouponMessage(messageCenter, clubIds, smsContent, null); break; case 2: users = messageCenterDao.getUserInfo(cmCoupon.getUserId()); setCouponMessage(messageCenter, null, smsContent, users); break; case 3: String shopName = messageCenterDao.shopName(cmCoupon.getShopId()); smsContent = "采美平台为了回馈客户,赠送您" + cmCoupon.getCouponAmount() + "元的店铺专属优惠券,快戳采美网站链接www.caimei365.com" + "或微信搜索“采美采购商城”小程序登录采美平台领取吧。关注公众号“采美网”获取更多优惠和精彩资讯。退订回T"; messageCenter.content(shopName); setCouponMessage(messageCenter, clubIds, smsContent, null); break; case 4: smsContent = "恭喜成功注册采美平台。采美平台赠送您" + cmCoupon.getCouponAmount() + "元新用户优惠券,快戳采美网站链接www.caimei365.com" + "或微信搜索“采美采购商城”小程序登录采美平台领取吧。关注公众号“采美网”获取更多优惠和精彩资讯。退订回T"; users = messageCenterDao.getNewUsers(); setCouponMessage(messageCenter, null, smsContent, users); break; default: throw new IllegalStateException("Unexpected value: " + cmCoupon.getCouponType()); } } public void setCouponMessage(MessageCenter messageCenter, List clubIds, String sms, List users) { if (null != clubIds && clubIds.size() > 0) { clubIds.forEach(c -> { CmUser user = messageCenterDao.clubList(c); messageCenter.clubId(c); messageCenterDao.addMessageCenter(messageCenter); SMSUtils.sendSms(3, user.getBindMobile(), sms); }); } else if (null != users && users.size() > 0) { messageCenterDao.addMessageCenter(messageCenter); users.forEach(u -> { messageCenter.clubId(u.getClubID()); messageCenterDao.addMessageCenter(messageCenter); SMSUtils.sendSms(3, u.getBindMobile(), sms); }); } } }