فهرست منبع

fix spotify账号解除限制成功发送模板消息

zoujiajian 3 سال پیش
والد
کامیت
ec5d22f3e1

+ 2 - 0
netflix-common/src/main/java/com/cyksj/common/constant/TemplateEnum.java

@@ -20,6 +20,8 @@ public enum TemplateEnum {
 	EMPTY_PRD_TEMPLATE("正式环境空车位通知模板", "T88yYYsfhBIKALWGmGTY2ZJGWHx91pcAtinoRGZ0krw", " "),
 	SPOTIFY_ENV_TEMPLATE("Spotify注册测试环境模板", "gsGFRefPlGKfvNoqB5Vd43ZOsmCsZNsH4UDWefWG0sg", " "),
 	SPOTIFY_PRD_TEMPLATE("Spotify注册正式环境模板", "VPQ3cYd_OMYpyHzyaa1X5oOeWh9ZcgwZlrBw_cGqEIA", " "),
+	SPOTIFY_ACCOUNT_EXPIRED_PRD_TEMPLATE("Spotify账号到期正式环境模板", "pNGASpViLNO9QsVm6nkg7P6XwwzULgdBCgytWlgsrYo", " "),
+	SPOTIFY_ACCOUNT_UN_LIMIT_SUCCESS_PRD_TEMPLATE("Spotify账号解除限制成功正式环境模板", "-K78ZoC2kBBHUVB_bWmLtkV_z98-16G7wIPqryXyTGo", " "),
 
 	;
 	private String desc;

+ 2 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/SpotifyUnLimitRecord.java

@@ -26,6 +26,8 @@ public class SpotifyUnLimitRecord extends BaseEntity {
 	@NotEmpty
 	private String password;
 
+	private Boolean isSend;
+
 	private Status status;
 
 

+ 16 - 0
netflix-service/src/main/java/com/cyksj/service/mange/SpotifySendMsgService.java

@@ -0,0 +1,16 @@
+package com.cyksj.service.mange;
+
+import com.cyksj.model.entity.SpotifyUnLimitRecord;
+
+/*
+ *项目名: netflix
+ *文件名: SpotifySchedule
+ *创建者: JavaZou
+ *创建时间:2022/12/21 12:10
+ */
+public interface SpotifySendMsgService {
+	/**
+	 * 发放Spotify账号注册成功模板消息
+	 */
+	void sendSpotifyUnLimitSuccessMsg(SpotifyUnLimitRecord record) throws Exception;
+}

+ 72 - 0
netflix-service/src/main/java/com/cyksj/service/mange/impl/SpotifySendMsgServiceImpl.java

@@ -0,0 +1,72 @@
+package com.cyksj.service.mange.impl;
+
+import cn.hutool.core.date.DateUtil;
+import com.cyksj.common.EnvCommonService;
+import com.cyksj.common.constant.TemplateEnum;
+import com.cyksj.common.util.Jsons;
+import com.cyksj.mapper.SpotifyUnLimitRecordMapper;
+import com.cyksj.mapper.UserMapper;
+import com.cyksj.model.dto.WxMpTemplateData;
+import com.cyksj.model.dto.WxMpTemplateMessage;
+import com.cyksj.model.entity.SpotifyUnLimitRecord;
+import com.cyksj.model.entity.User;
+import com.cyksj.service.mange.SpotifySendMsgService;
+import com.cyksj.service.wechat.WeChatService;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.PostConstruct;
+
+/*
+ *项目名: netflix
+ *文件名: SpotifySendMsgServiceImpl
+ *创建者: JavaZou
+ *创建时间:2022/12/21 16:01
+ */
+@Service
+@Slf4j
+@RequiredArgsConstructor
+public class SpotifySendMsgServiceImpl implements SpotifySendMsgService {
+	private final EnvCommonService envCommonService;
+
+	private final WeChatService weChatService;
+
+	private final UserMapper userMapper;
+
+	private final SpotifyUnLimitRecordMapper spotifyUnLimitRecordMapper;
+
+	private static String spotifyUnLimitSuccessUrl;
+
+	@PostConstruct
+	public void init() {
+		String host = envCommonService.getHost();
+		String domain = envCommonService.getDomain();
+		String redirectUrl = String.format("%s%s", domain, "yinhe/web/?temp=couponId?1?goodsId?4?skuId?14");
+		spotifyUnLimitSuccessUrl = String.format("%sauth/weChat?url=%s", host, redirectUrl);
+	}
+
+	@Override
+	public void sendSpotifyUnLimitSuccessMsg(SpotifyUnLimitRecord record) throws Exception {
+		if (!EnvCommonService.active.equals(envCommonService.getEnv())) {
+			SpotifyUnLimitRecord unLimitRecord = spotifyUnLimitRecordMapper.selectById(record.getId());
+			if (unLimitRecord != null && !unLimitRecord.getIsSend()) {
+				User user = userMapper.selectById(unLimitRecord.getUserId());
+				if (user != null) {
+					WxMpTemplateMessage templateMessage = new WxMpTemplateMessage()
+							.setToUser(user.getOpenId())
+							.setTemplateId(TemplateEnum.SPOTIFY_ACCOUNT_UN_LIMIT_SUCCESS_PRD_TEMPLATE.getTemplateId())
+							.setUrl(spotifyUnLimitSuccessUrl);
+					WxMpTemplateMessage.TemplateData data = templateMessage.getData();
+					data.setFirst(new WxMpTemplateData("您的Spotify账号登录限制解除成功"));
+					data.setKeyword1(new WxMpTemplateData(user.getNickname()));
+					data.setKeyword2(new WxMpTemplateData(DateUtil.format(unLimitRecord.getUpdateTime(), "yyyy-MM-dd HH:mm:ss")));
+					data.setRemark(new WxMpTemplateData("建议您购买Spotify年付会员,无需每过14天解除限制,点击了解"));
+					weChatService.sendTemplateMessage(weChatService.getAccessToken(), Jsons.toJson(templateMessage));
+					unLimitRecord.setIsSend(true);
+					spotifyUnLimitRecordMapper.updateById(unLimitRecord);
+				}
+			}
+		}
+	}
+}

+ 19 - 9
netflix-service/src/main/java/com/cyksj/service/register/impl/RegisterOrderDonServiceImpl.java

@@ -39,6 +39,7 @@ import com.ejlchina.searcher.util.MapUtils;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.dao.DuplicateKeyException;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -207,15 +208,24 @@ public class RegisterOrderDonServiceImpl extends ServiceImpl<RegisterOrderDonMap
 			}
 		}
 		//14天内是否重复提交过该账号
-		SpotifyUnLimitRecord exists = spotifyUnLimitRecordMapper.selectOne(Wrappers.lambdaQuery(SpotifyUnLimitRecord.class)
-				.eq(SpotifyUnLimitRecord::getUserId, spotifyUnLimitRecord.getUserId())
-				.eq(SpotifyUnLimitRecord::getAccount, spotifyUnLimitRecord.getAccount())
-				.gt(SpotifyUnLimitRecord::getCreatedTime, DateUtil.offsetDay(DateTime.now(), -14))
-				.last("limit 1"));
-		if (exists != null) {
-			throw BusinessRuntimeException.getInstance("您已提交过,请勿重复提交");
-		}
-		spotifyUnLimitRecordMapper.insert(spotifyUnLimitRecord);
+        SpotifyUnLimitRecord exists = spotifyUnLimitRecordMapper.selectOne(Wrappers.lambdaQuery(SpotifyUnLimitRecord.class)
+                .eq(SpotifyUnLimitRecord::getUserId, spotifyUnLimitRecord.getUserId())
+                .eq(SpotifyUnLimitRecord::getAccount, spotifyUnLimitRecord.getAccount())
+                .last("limit 1"));
+        if (exists != null && exists.getUpdateTime().after(DateUtil.offsetDay(DateTime.now(), -14))) {
+            throw BusinessRuntimeException.getInstance("您已提交过,请勿重复提交");
+        }
+        if (exists != null) {
+            spotifyUnLimitRecord.setId(exists.getId());
+            spotifyUnLimitRecord.setIsSend(false);
+            spotifyUnLimitRecordMapper.updateById(spotifyUnLimitRecord);
+        } else {
+            try {
+                spotifyUnLimitRecordMapper.insert(spotifyUnLimitRecord);
+            } catch (DuplicateKeyException e) {
+                log.info("用户:{}重复提交解除限制spotify账号:{}", spotifyUnLimitRecord.getUserId(), spotifyUnLimitRecord.getAccount());
+            }
+        }
 		return isFlag ? beanSearcher.searchFirst(CouponUserView.class, MapUtils.builder()
 				.field(CouponUserView::getUserId, spotifyUnLimitRecord.getUserId()).op(Operator.Equal)
 				.field(CouponUserView::getCouponId, spotifyUnLimitCouponId).op(Operator.Equal)

+ 11 - 3
netflix-web/src/main/java/com/cyksj/web/controller/manage/register/CmsRegisterController.java

@@ -1,5 +1,6 @@
 package com.cyksj.web.controller.manage.register;
 
+import cn.hutool.core.date.DateTime;
 import cn.hutool.core.util.StrUtil;
 import com.alibaba.excel.EasyExcel;
 import com.alibaba.excel.support.ExcelTypeEnum;
@@ -20,6 +21,7 @@ import com.cyksj.model.request.WxOrderRefundReq;
 import com.cyksj.model.views.AppleIdCountryOrAreaDataView;
 import com.cyksj.model.views.AppleIdHeadDataView;
 import com.cyksj.model.views.AppleIdRegisterView;
+import com.cyksj.service.mange.SpotifySendMsgService;
 import com.cyksj.service.register.RegisterOrderDonService;
 import com.cyksj.web.util.EasyExcelUtils;
 import com.ejlchina.searcher.BeanSearcher;
@@ -58,6 +60,8 @@ public class CmsRegisterController {
 
     private final SpotifyUnLimitRecordMapper spotifyUnLimitRecordMapper;
 
+    private final SpotifySendMsgService spotifySendMsgService;
+
     @GetMapping("/get")
     public Result<SearchResult<RegisterOrderDon>> get(Boolean appleIsAutoType) {
         MapBuilder builder = MapUtils.flatBuilder(request.getParameterMap());
@@ -180,11 +184,15 @@ public class CmsRegisterController {
      * 修改解除限制状态
      */
     @PutMapping("/unLimit")
-    public Result<String> upUnLimit(@RequestBody SpotifyUnLimitRecord spotifyUnLimitRecord){
+    public Result<String> upUnLimit(@RequestBody SpotifyUnLimitRecord spotifyUnLimitRecord) throws Exception {
         spotifyUnLimitRecordMapper.update(null, Wrappers.lambdaUpdate(SpotifyUnLimitRecord.class)
-                .eq(SpotifyUnLimitRecord::getId,spotifyUnLimitRecord.getId())
-                .set(SpotifyUnLimitRecord::getStatus,spotifyUnLimitRecord.getStatus())
+                .eq(SpotifyUnLimitRecord::getId, spotifyUnLimitRecord.getId())
+                .set(SpotifyUnLimitRecord::getStatus, spotifyUnLimitRecord.getStatus())
+                .set(SpotifyUnLimitRecord::getUpdateTime, DateTime.now())
         );
+        if (spotifyUnLimitRecord.getStatus() == SpotifyUnLimitRecord.Status.Success) {
+            spotifySendMsgService.sendSpotifyUnLimitSuccessMsg(spotifyUnLimitRecord);
+        }
         return GatewayResponse.SUCCESS.newBuilder().toResult();
     }
 }