AsyncService.java 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. package com.caimei.modules.coupon.service;
  2. import com.caimei.modules.coupon.entity.CmCoupon;
  3. import com.caimei.modules.sys.utils.SMSUtils;
  4. import com.caimei.modules.user.dao.MessageCenterDao;
  5. import com.caimei.modules.user.entity.CmUser;
  6. import com.caimei.modules.user.entity.MessageCenter;
  7. import com.caimei.po.User;
  8. import lombok.extern.slf4j.Slf4j;
  9. import org.springframework.scheduling.annotation.Async;
  10. import org.springframework.scheduling.annotation.EnableAsync;
  11. import org.springframework.stereotype.Service;
  12. import org.springframework.transaction.annotation.Transactional;
  13. import javax.annotation.Resource;
  14. import java.text.SimpleDateFormat;
  15. import java.util.ArrayList;
  16. import java.util.Date;
  17. import java.util.List;
  18. @Service
  19. @EnableAsync
  20. @Transactional(readOnly = false)
  21. @Slf4j
  22. public class AsyncService {
  23. @Resource
  24. private MessageCenterDao messageCenterDao;
  25. //优惠券站内消息推送
  26. @Async("mytask")
  27. public void consumer(CmCoupon cmCoupon) {
  28. log.info("优惠券异步信推送开始--------------------》");
  29. String smsContent = "采美平台送您" + cmCoupon.getCouponAmount() + "元优惠券,众多大牌正品等着您,快戳采美网站链接www.caimei365.com" +
  30. "或微信搜索“采美采购商城”小程序登录采美平台领取下单吧。关注公众号“采美网”获取更多优惠和精彩资讯。退订回T";
  31. MessageCenter messageCenter = new MessageCenter();
  32. Date date = new Date();
  33. String now = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")).format(date);
  34. messageCenter.userType(1).couponType(cmCoupon.getCouponType()).messageType(4).time(now).couponMessageType(1).
  35. couponFee(cmCoupon.getCouponAmount().doubleValue());
  36. List<Integer> clubIds = messageCenterDao.ClubIds();
  37. List<User> users = new ArrayList<>();
  38. switch (cmCoupon.getCouponType()) {
  39. // 劵类型 0活动券 1品类券 2用户专享券 3店铺券 4新用户券
  40. case 0:
  41. setCouponMessage(messageCenter, clubIds, smsContent, null);
  42. break;
  43. case 1:
  44. String type = "1".equals(cmCoupon.getCategoryType()) ? "产品" : "仪器";
  45. smsContent = "采美平台" + type + "类商品大优惠,采美平台送您" + cmCoupon.getCouponAmount() + "元优惠券,快戳采美网站链接www.caimei365.com" +
  46. "或微信搜索“采美采购商城”小程序登录采美平台领取吧。关注公众号“采美网”获取更多优惠和精彩资讯。退订回T";
  47. setCouponMessage(messageCenter, clubIds, smsContent, null);
  48. break;
  49. case 2:
  50. users = messageCenterDao.getUserInfo(cmCoupon.getUserId());
  51. setCouponMessage(messageCenter, null, smsContent, users);
  52. break;
  53. case 3:
  54. String shopName = messageCenterDao.shopName(cmCoupon.getShopId());
  55. smsContent = "采美平台为了回馈客户,赠送您" + cmCoupon.getCouponAmount() + "元的店铺专属优惠券,快戳采美网站链接www.caimei365.com" +
  56. "或微信搜索“采美采购商城”小程序登录采美平台领取吧。关注公众号“采美网”获取更多优惠和精彩资讯。退订回T";
  57. messageCenter.content(shopName);
  58. setCouponMessage(messageCenter, clubIds, smsContent, null);
  59. break;
  60. case 4:
  61. smsContent = "恭喜成功注册采美平台。采美平台赠送您" + cmCoupon.getCouponAmount() + "元新用户优惠券,快戳采美网站链接www.caimei365.com" +
  62. "或微信搜索“采美采购商城”小程序登录采美平台领取吧。关注公众号“采美网”获取更多优惠和精彩资讯。退订回T";
  63. users = messageCenterDao.getNewUsers();
  64. setCouponMessage(messageCenter, null, smsContent, users);
  65. break;
  66. default:
  67. throw new IllegalStateException("Unexpected value: " + cmCoupon.getCouponType());
  68. }
  69. }
  70. public void setCouponMessage(MessageCenter messageCenter, List<Integer> clubIds, String sms, List<User> users) {
  71. if (null != clubIds && clubIds.size() > 0) {
  72. clubIds.forEach(c -> {
  73. CmUser user = messageCenterDao.clubList(c);
  74. messageCenter.clubId(c);
  75. messageCenterDao.addMessageCenter(messageCenter);
  76. SMSUtils.sendSms(3, user.getBindMobile(), sms);
  77. });
  78. } else if (null != users && users.size() > 0) {
  79. messageCenterDao.addMessageCenter(messageCenter);
  80. users.forEach(u -> {
  81. messageCenter.clubId(u.getClubID());
  82. messageCenterDao.addMessageCenter(messageCenter);
  83. SMSUtils.sendSms(3, u.getBindMobile(), sms);
  84. });
  85. }
  86. }
  87. }