后台服务
Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.

225 wiersze
11 KiB

  1. package com.iformall.mq;
  2. import com.iformall.domain.po.msg.*;
  3. import com.iformall.enums.*;
  4. import com.iformall.mapper.WxMsgRecordMapper;
  5. import com.iformall.service.msg.impl.*;
  6. import com.iformall.utils.JsonUtil;
  7. import org.slf4j.Logger;
  8. import org.slf4j.LoggerFactory;
  9. import org.springframework.beans.factory.annotation.Autowired;
  10. import org.springframework.stereotype.Service;
  11. /**
  12. * 消息消费入口
  13. */
  14. @Service
  15. public class MqBaseConsumer {
  16. private final Logger log = LoggerFactory.getLogger(this.getClass());
  17. @Autowired
  18. private WxMsgRecordMapper wxMsgRecordMapper;
  19. @Autowired
  20. private SendSmsServiceImpl sendSmsService;
  21. @Autowired
  22. private SendCallBackSmsServiceImpl sendCallBackSmsService;
  23. @Autowired
  24. private SendEmailServiceImpl sendEmailService;
  25. @Autowired
  26. private SendSmartAppMsgServiceImpl sendSmartAppMsgService;
  27. @Autowired
  28. private SendMpMsgServiceImpl sendMpMsgService;
  29. @Autowired
  30. private SendWeappUniformMsgServiceImpl sendWeappUniformMsgService;
  31. @Autowired
  32. private AfterAddScoreMsgServiceImpl afterAddScoreMsgService;
  33. @Autowired
  34. private AfterCarInOutMsgServiceImpl afterCarInOutMsgService;
  35. @Autowired
  36. private FmInsideOrderSuccessMsgServiceImpl fmInsideOrderSuccessMsgService;
  37. @Autowired
  38. private FmInsideCouponVerifyMsgServiceImpl fmInsideCouponVerifyMsgService;
  39. @Autowired
  40. private FmInsideOrderRefundMsgServiceImpl fmInsideOrderRefundMsgService;
  41. // @Autowired
  42. // private FmInsideOrderPushMsgServiceImpl fmInsideOrderPushMsgService;
  43. @Autowired
  44. private FmInsideOrderPushDeliveryMsgServiceImpl fmInsideOrderPushDeliveryMsgServiceImpl;
  45. @Autowired
  46. private FmInsideCLoginMsgServiceImpl fmInsideCLoginMsgService;
  47. @Autowired
  48. private MqBaseProducer mqBaseProducer;
  49. //@Autowired
  50. //private FmInsideNotifyPaySuccessMsgServiceImpl fmInsideNotifyPaySuccessMsgService;
  51. //@Autowired
  52. //UpdateCouponStockMsgServiceImpl updateCouponStockMsgService;
  53. @Autowired
  54. private FmInsideCashOutMsgServiceImpl fmInsideCashOutMsgService;
  55. @Autowired
  56. private FmInsideProductPushMsgServiceImpl fmInsideProductPushMsgServiceImpl;
  57. @Autowired
  58. private FmInsideBasicUserPushMsgServiceImpl fmInsideBasicUserPushMsgServiceImpl;
  59. @Autowired
  60. private FmInsideBasicUserTenantMsgServiceImpl FmInsideBasicUserTenantMsgService;
  61. public void doMessage(String message) {
  62. log.info("received message: {}", message);
  63. //因为数据库读写同步时间可能在毫秒,此处暂停1秒后再开始处理
  64. try {
  65. Thread.sleep(1000);
  66. } catch (InterruptedException e) {
  67. }
  68. BaseMsg baseMsg = null;
  69. try {
  70. baseMsg = (BaseMsg)JsonUtil.readValue(message,BaseMsg.class);
  71. if(EnumMsgRecordType.SMS.getCode().equals(baseMsg.getMsgType())){
  72. //短信
  73. WxMsgRecord msg = (WxMsgRecord)JsonUtil.readValue(message,WxMsgRecord.class);
  74. sendSmsService.send(msg);
  75. }
  76. else if(EnumMsgRecordType.SMS_CALLBACK.getCode().equals(baseMsg.getMsgType())){
  77. //业务短信
  78. WxMsg msg = (WxMsg)JsonUtil.readValue(message,WxMsg.class);
  79. sendCallBackSmsService.send(msg);
  80. }
  81. else if(EnumMsgRecordType.EMAIL.getCode().equals(baseMsg.getMsgType())){
  82. //邮件
  83. MailMsg msg = (MailMsg)JsonUtil.readValue(message,MailMsg.class);
  84. sendEmailService.send(msg);
  85. // } else if(EnumMsgRecordType.SMART_APP.getCode().equals(baseMsg.getMsgType())){
  86. }
  87. else if(EnumMsgRecordType.SMART_APP_TO.getCode().equals(baseMsg.getMsgType())){
  88. //微信小程序-订阅消息
  89. SmartAppMsg msg = (SmartAppMsg)JsonUtil.readValue(message,SmartAppMsg.class);
  90. sendSmartAppMsgService.send(msg);
  91. }
  92. else if(EnumMsgRecordType.PUBLIC.getCode().equals(baseMsg.getMsgType())) {
  93. //公众号-模板消息
  94. MpAppMsg msg = (MpAppMsg)JsonUtil.readValue(message,MpAppMsg.class);
  95. sendMpMsgService.send(msg);
  96. }
  97. else if(EnumMsgRecordType.SMART_APP_UNIFORM.getCode().equals(baseMsg.getMsgType())) {
  98. //微信小程序-统一消息
  99. AppUniformMsg msg = (AppUniformMsg)JsonUtil.readValue(message,AppUniformMsg.class);
  100. sendWeappUniformMsgService.send(msg);
  101. }
  102. else if(EnumMsgRecordType.AFTER_ADD_SCORE.getCode().equals(baseMsg.getMsgType())) {
  103. //成长值变更后
  104. AfterAddScoreMsg msg = (AfterAddScoreMsg)JsonUtil.readValue(message,AfterAddScoreMsg.class);
  105. afterAddScoreMsgService.send(msg);
  106. }
  107. else if(EnumMsgRecordType.AFTER_CAR_IN_OR_OUT.getCode().equals(baseMsg.getMsgType())) {
  108. //车辆入场,出场后
  109. AfterCarInOutMsg msg = (AfterCarInOutMsg)JsonUtil.readValue(message,AfterCarInOutMsg.class);
  110. afterCarInOutMsgService.send(msg);
  111. }
  112. else if(EnumMsgRecordType.INSIDE_ORDER_SUCCESS.getCode().equals(baseMsg.getMsgType())) {
  113. // 内部消息 - 下订单成功
  114. FmInsideOrderSuccessMsg msg = (FmInsideOrderSuccessMsg)JsonUtil.readValue(message,FmInsideOrderSuccessMsg.class);
  115. fmInsideOrderSuccessMsgService.send(msg);
  116. }
  117. else if(EnumMsgRecordType.INSIDE_COUPON_VERIFY.getCode().equals(baseMsg.getMsgType())) {
  118. // 内部消息 - 券核销
  119. FmInsideCouponVerifyMsg msg = (FmInsideCouponVerifyMsg)JsonUtil.readValue(message,FmInsideCouponVerifyMsg.class);
  120. fmInsideCouponVerifyMsgService.send(msg);
  121. }
  122. else if(EnumMsgRecordType.INSIDE_ORDER_REFUND.getCode().equals(baseMsg.getMsgType())){
  123. //内部消息 - 退款申请成功
  124. FmInsideOrderRefundMsg msg = (FmInsideOrderRefundMsg) JsonUtil.readValue(message,FmInsideOrderRefundMsg.class);
  125. fmInsideOrderRefundMsgService.send(msg);
  126. }
  127. else if(EnumMsgRecordType.INSIDE_C_LOGIN.getCode().equals(baseMsg.getMsgType())) {
  128. // 内部消息 - c端登录
  129. FmInsideCLoginMsg msg = (FmInsideCLoginMsg)JsonUtil.readValue(message,FmInsideCLoginMsg.class);
  130. fmInsideCLoginMsgService.send(msg);
  131. }
  132. else if(EnumMsgRecordType.INSIDE_ORDER_PUSH.getCode().equals(baseMsg.getMsgType())) {
  133. // 内部消息 - 订单同步
  134. // FmInsideOrderPushMsg msg = (FmInsideOrderPushMsg)JsonUtil.readValue(message,FmInsideOrderPushMsg.class);
  135. // fmInsideOrderPushMsgService.send(msg);
  136. }
  137. else if(EnumMsgRecordType.INSIDE_ORDER_PUSH_DELIVERY.getCode().equals(baseMsg.getMsgType())) {
  138. // 内部消息 - 2.0核销同步
  139. FmInsideOrderPushMsg msg = (FmInsideOrderPushMsg)JsonUtil.readValue(message,FmInsideOrderPushMsg.class);
  140. fmInsideOrderPushDeliveryMsgServiceImpl.send(msg);
  141. }
  142. //else if(EnumMsgRecordType.INSIDE_NOTIFY_PAY_SUCCESS.getCode().equals(baseMsg.getMsgType())) {
  143. // 内部消息 - 微信支付通知
  144. //FmInsideNotifyPaySuccessMsg msg = (FmInsideNotifyPaySuccessMsg)JsonUtil.readValue(message,FmInsideNotifyPaySuccessMsg.class);
  145. //fmInsideNotifyPaySuccessMsgService.send(msg);
  146. //}
  147. else if(EnumMsgRecordType.INSIDE_NOTIFY_REFUND_SUCCESS.getCode().equals(baseMsg.getMsgType())) {
  148. // 内部消息 - 微信退款通知
  149. }
  150. else if(EnumMsgRecordType.CASH_OUT.getCode().equals(baseMsg.getMsgType())) {
  151. // 内部消息 - 商户提现通知
  152. FmInsideCashOutMsg msg = (FmInsideCashOutMsg)JsonUtil.readValue(message,FmInsideCashOutMsg.class);
  153. fmInsideCashOutMsgService.send(msg);
  154. }
  155. //else if (EnumMsgRecordType.COUPON_STOCK.getCode().equals(baseMsg.getMsgType())) {
  156. // UpdateCouponStockMsg msg = (UpdateCouponStockMsg)JsonUtil.readValue(message,UpdateCouponStockMsg.class);
  157. // updateCouponStockMsgService.send(msg);
  158. //}
  159. //baseMsg.setMsgStatus(EnumMsgRecordStatus.CONSUME_SUCC.getCode());
  160. //wxMsgRecordMapper.updateByBaseMsg(baseMsg);
  161. else if(EnumMsgRecordType.INSIDE_PRODUCT_PUSH.getCode().equals(baseMsg.getMsgType())) {
  162. // 内部消息 - 同步POI
  163. FmInsideProductPushMsg msg = (FmInsideProductPushMsg)JsonUtil.readValue(message,FmInsideProductPushMsg.class);
  164. fmInsideProductPushMsgServiceImpl.send(msg);
  165. }
  166. else if(EnumMsgRecordType.MALL_COO_USER_PUSH.getCode().equals(baseMsg.getMsgType())) {
  167. // 内部消息 - 同步会员
  168. FmInsideBasicUserPushMsg msg = (FmInsideBasicUserPushMsg)JsonUtil.readValue(message,FmInsideBasicUserPushMsg.class);
  169. fmInsideBasicUserPushMsgServiceImpl.send(msg);
  170. }
  171. else if(EnumMsgRecordType.MEMBER_UPDATE_TENANT.getCode().equals(baseMsg.getMsgType())) {
  172. // 内部消息 - 集团会员广场标签
  173. FmInsideBasicUserPushMsg msg = (FmInsideBasicUserPushMsg)JsonUtil.readValue(message,FmInsideBasicUserPushMsg.class);
  174. FmInsideBasicUserTenantMsgService.send(msg);
  175. }
  176. }catch (Throwable e){
  177. log.error("consum received error: ", e);
  178. /**
  179. try {
  180. log.error("consum received error: ", e);
  181. baseMsg.setStatusMessage(e.getMessage());
  182. baseMsg.setMsgStatus(EnumMsgRecordStatus.CONSUME_FAIL.getCode());
  183. wxMsgRecordMapper.updateByBaseMsg(baseMsg);
  184. if(null != baseMsg){
  185. if(baseMsg.getDelayTimeLevel() > 0){
  186. log.info("消息重试,DelayTimeLevel: "+baseMsg.getDelayTimeLevel());
  187. Thread.sleep(5000);
  188. baseMsg.setDelayTimeLevel(baseMsg.getDelayTimeLevel()-1);
  189. if(EnumMsgRecordType.INSIDE_NOTIFY_REFUND_SUCCESS.getCode().equals(baseMsg.getMsgType())) {
  190. // 内部消息 - 微信退款通知
  191. FmInsideNotifyRefundSuccessMsg msg = (FmInsideNotifyRefundSuccessMsg)JsonUtil.readValue(message,FmInsideNotifyRefundSuccessMsg.class);
  192. mqBaseProducer.sendMessage(msg, EnumMsgMqTopic.DEFAULT.getCode(), EnumMsgMqTag.DEFAULT.getCode(), EnumMsgMqKey.DEFAULT.getCode());
  193. }
  194. }else{
  195. baseMsg.setStatusMessage("重试次数超过3次");
  196. baseMsg.setMsgStatus(EnumMsgRecordStatus.CONSUME_FAIL.getCode());
  197. wxMsgRecordMapper.updateByBaseMsg(baseMsg);
  198. }
  199. }
  200. }catch (Throwable e1){
  201. log.error("更新db状态error: ", e1);
  202. }*/
  203. }
  204. }
  205. }