zoujiajian пре 7 месеци
родитељ
комит
5ecc78a52d

+ 41 - 28
netflix-service/src/main/java/com/cyksj/service/goods/impl/GoodsSubscribeAlertServiceImpl.java

@@ -10,10 +10,8 @@ import com.cyksj.mapper.GoodsDonMapper;
 import com.cyksj.mapper.GoodsDonSkuMapper;
 import com.cyksj.mapper.UserMapper;
 import com.cyksj.mapper.UserSubscribeAlertGoodsRecordMapper;
-import com.cyksj.model.entity.GoodsDon;
-import com.cyksj.model.entity.GoodsDonSku;
-import com.cyksj.model.entity.User;
-import com.cyksj.model.entity.UserSubscribeAlertGoodsRecord;
+import com.cyksj.mapper.market.task.UserBindDetailMapper;
+import com.cyksj.model.entity.*;
 import com.cyksj.redis.RedisService;
 import com.cyksj.service.goods.GoodsSubscribeAlertService;
 import com.cyksj.service.mail.MailService;
@@ -51,6 +49,8 @@ public class GoodsSubscribeAlertServiceImpl implements GoodsSubscribeAlertServic
 
 	private final RedisService redisService;
 
+	private final UserBindDetailMapper userBindDetailMapper;
+
 	@Override
 	public void alertBeforeSubscribeByGoodsId(Long goodsId) {
 		DateTime now = DateTime.now();
@@ -76,22 +76,23 @@ public class GoodsSubscribeAlertServiceImpl implements GoodsSubscribeAlertServic
 				//微信用户
 				if (StrUtil.isNotBlank(user.getUnionid())) {
 					//发送微信通知模板
-					templateCommonService.sendUserSubscribeAlertMsg(user, String.format(Constant.GOODS_SUBSCRIBE_ALERT_WX_MSG, goodsDon.getTitle()));
+					Boolean success = templateCommonService.sendUserSubscribeAlertMsg(user, String.format(Constant.GOODS_SUBSCRIBE_ALERT_WX_MSG, goodsDon.getTitle()), goodsId);
+					if (!success) {
+						//失败后发送手机
+						sendPhoneNotifySubscribe(goodsDon.getTitle(), goodsId, userId);
+					}
 					continue;
 				}
-				//手机用户
-				if (StrUtil.isNotBlank(user.getLoginPhone())) {
-					String msg = String.format(Constant.GOODS_SUBSCRIBE_ALERT_MSG, goodsDon.getTitle(), goodsDon.getId());
-					try {
-						smsService.sendSmsToRelationUser(user.getId(), msg);
-					} catch (Exception e) {
-						log.error("发送商品订阅通知短信失败:{}", StringUtil.getErrorText(e));
+				//手机用户 或邮箱用户 首先用发手机号
+				Boolean success = sendPhoneNotifySubscribe(goodsDon.getTitle(), goodsId, userId);
+				if (!success) {
+					//失败 并且是邮箱用户
+					if (StrUtil.isNotBlank(user.getEmail())) {
+						//邮箱用户
+						String msg = String.format(Constant.GOODS_SUBSCRIBE_ALERT_EMAIL_MSG, goodsDon.getTitle(), goodsDon.getId());
+						mailService.sendGoodsSubscribeAlertEmail(msg, user.getEmail());
 					}
-					continue;
 				}
-				//邮箱用户
-				String msg = String.format(Constant.GOODS_SUBSCRIBE_ALERT_EMAIL_MSG, goodsDon.getTitle(), goodsDon.getId());
-				mailService.sendGoodsSubscribeAlertEmail(msg, user.getEmail());
 			}
 		} finally {
 			if (redisService.hasKey(key)) {
@@ -127,22 +128,23 @@ public class GoodsSubscribeAlertServiceImpl implements GoodsSubscribeAlertServic
 				//微信用户
 				if (StrUtil.isNotBlank(user.getUnionid())) {
 					//发送微信通知模板
-					templateCommonService.sendUserSubscribeAlertMsg(user, String.format(Constant.GOODS_SUBSCRIBE_ALERT_WX_MSG, title));
+					Boolean success = templateCommonService.sendUserSubscribeAlertMsg(user, String.format(Constant.GOODS_SUBSCRIBE_ALERT_WX_MSG, title), goodsDon.getId());
+					if (!success) {
+						//未成功 查看其他绑定信息
+						sendPhoneNotifySubscribe(title, goodsDon.getId(), userId);
+					}
 					continue;
 				}
-				//手机用户
-				if (StrUtil.isNotBlank(user.getLoginPhone())) {
-					String msg = String.format(Constant.GOODS_SUBSCRIBE_ALERT_MSG, title, goodsDon.getId());
-					try {
-						smsService.sendSmsToRelationUser(user.getId(), msg);
-					} catch (Exception e) {
-						log.error("发送商品规格订阅通知短信失败:{}", StringUtil.getErrorText(e));
+				//手机用户 或邮箱用户 首先用发手机号
+				Boolean success = sendPhoneNotifySubscribe(title, goodsDon.getId(), userId);
+				if (!success) {
+					//失败 并且是邮箱用户
+					if (StrUtil.isNotBlank(user.getEmail())) {
+						//邮箱用户
+						String msg = String.format(Constant.GOODS_SUBSCRIBE_ALERT_EMAIL_MSG, title, goodsDon.getId());
+						mailService.sendGoodsSubscribeAlertEmail(msg, user.getEmail());
 					}
-					continue;
 				}
-				//邮箱用户
-				String msg = String.format(Constant.GOODS_SUBSCRIBE_ALERT_EMAIL_MSG, title, goodsDon.getId());
-				mailService.sendGoodsSubscribeAlertEmail(msg, user.getEmail());
 			}
 		} finally {
 			if (redisService.hasKey(key)) {
@@ -150,4 +152,15 @@ public class GoodsSubscribeAlertServiceImpl implements GoodsSubscribeAlertServic
 			}
 		}
 	}
+
+	public Boolean sendPhoneNotifySubscribe(String title, Long goodsId, Long userId) {
+		String msg = String.format(Constant.GOODS_SUBSCRIBE_ALERT_MSG, title, goodsId);
+		try {
+			smsService.sendSmsToRelationUser(userId, msg);
+			return true;
+		} catch (Exception e) {
+			log.error("发送商品订阅通知短信失败:{}", StringUtil.getErrorText(e));
+		}
+		return false;
+	}
 }

+ 1 - 1
netflix-service/src/main/java/com/cyksj/service/template/TemplateCommonService.java

@@ -47,7 +47,7 @@ public interface TemplateCommonService {
 	 */
 	void sendUpdateAccountMsgNotify(GroupsRelationView relation) throws Exception;
 
-	void sendUserSubscribeAlertMsg(User user, String msg);
+	Boolean sendUserSubscribeAlertMsg(User user, String msg, Long goodsId);
 
 	/**
 	 * Spotify账号到期通知模板

+ 9 - 3
netflix-service/src/main/java/com/cyksj/service/template/impl/TemplateCommonServiceImpl.java

@@ -248,13 +248,13 @@ public class TemplateCommonServiceImpl implements TemplateCommonService {
 	}
 
 	@Override
-	public void sendUserSubscribeAlertMsg(User user, String msg) {
+	public Boolean sendUserSubscribeAlertMsg(User user, String msg, Long goodsId) {
 		if (!EnvCommonService.active.equals(envCommonService.getEnv())) {
 			String openId = user.getOpenId();
 			if (StrUtil.isNotBlank(openId)) {
 				WxAppTemplateView wxAppTemplateView = this.getWxAppByUserId(openId, TemplateEnum.GOODS_SUBSCRIBE_ALERT.getDesc());
 				if (wxAppTemplateView != null) {
-					String url = String.format("%sauth/weChat?url=%s", envCommonService.getHost(), envCommonService.getDomain());
+					String url = String.format("%sauth/weChat?url=%s", envCommonService.getHost(), envCommonService.getDomain() + "?gid=" + goodsId);
 					WxMpTemplateMessage templateMessage = new WxMpTemplateMessage()
 							.setToUser(openId)
 							.setTemplateId(wxAppTemplateView.getTemplateId())
@@ -262,10 +262,16 @@ public class TemplateCommonServiceImpl implements TemplateCommonService {
 					WxMpTemplateMessage.TemplateData data = templateMessage.getData();
 					data.setTime3(new WxMpTemplateData(DateUtil.format(DateTime.now(), "yyyy-MM-dd HH:mm:ss")));
 					data.setThing17(new WxMpTemplateData(user.getNickname()));
-					weChatService.sendTemplateMessage(weChatService.getAccessToken(wxAppTemplateView.getAppId()), Jsons.toJson(templateMessage));
+					try {
+						weChatService.sendTemplateMessage(weChatService.getAccessToken(wxAppTemplateView.getAppId()), Jsons.toJson(templateMessage));
+						return true;
+					} catch (Exception e) {
+						log.error("发送商品订阅模板失败");
+					}
 				}
 			}
 		}
+		return false;
 	}
 
 	public void sendUpdateAccountMsg(GroupsRelationView relation) throws Exception {