Преглед на файлове

Merge branch 'fix_spotify'

# Conflicts:
#	netflix-common/src/main/java/com/cyksj/common/constant/TemplateEnum.java
#	netflix-service/src/main/java/com/cyksj/service/register/impl/RegisterOrderDonServiceImpl.java
#	netflix-web/src/main/java/com/cyksj/config/WebConfig.java
#	netflix-web/src/main/java/com/cyksj/web/controller/manage/register/CmsRegisterController.java
#	netflix-web/src/main/java/com/cyksj/web/controller/register/RegisterController.java
zoujiajian преди 3 години
родител
ревизия
33b7c255e1

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

@@ -21,6 +21,8 @@ public enum TemplateEnum {
 	SPOTIFY_ENV_TEMPLATE("Spotify注册测试环境模板", "gsGFRefPlGKfvNoqB5Vd43ZOsmCsZNsH4UDWefWG0sg", " "),
 	SPOTIFY_PRD_TEMPLATE("Spotify注册正式环境模板", "VPQ3cYd_OMYpyHzyaa1X5oOeWh9ZcgwZlrBw_cGqEIA", " "),
 	PLAT_ACCOUNT_UPDATE_PRD_TEMPLATE("账号修改密码正式环境通知模板", "imXjz3p0fb08Xq_hrVg0puxTKWaNdTmAYl7T1chQ8S0", " "),
+	SPOTIFY_ACCOUNT_EXPIRED_PRD_TEMPLATE("Spotify账号到期正式环境模板", "pNGASpViLNO9QsVm6nkg7P6XwwzULgdBCgytWlgsrYo", " "),
+	SPOTIFY_ACCOUNT_UN_LIMIT_SUCCESS_PRD_TEMPLATE("Spotify账号解除限制成功正式环境模板", "-K78ZoC2kBBHUVB_bWmLtkV_z98-16G7wIPqryXyTGo", " "),
 
 	;
 	private String desc;

+ 3 - 0
netflix-dao/src/main/java/com/cyksj/mapper/RegisterOrderDonMapper.java

@@ -25,4 +25,7 @@ public interface RegisterOrderDonMapper extends BaseMapper<RegisterOrderDon> {
 			" from register_order_don" +
 			" where created_time between #{yesZeroDate} and #{thisZeroDate} and status = 'refund' and platform = #{platform}")
 	RegisterAccountData selectRefundOrderDetail(@Param("yesZeroDate") Date yesZeroDate, @Param("thisZeroDate") Date thisZeroDate, @Param("platform") String platform);
+
+	@Select("select id from `order_don` where sku_id = 14 and user_id = #{userId} and status not in ('close','noPayment') limit 1")
+	Integer isPaySpotifyYearTicket(Long userId);
 }

+ 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);
+				}
+			}
+		}
+	}
+}

+ 2 - 0
netflix-service/src/main/java/com/cyksj/service/register/RegisterOrderDonService.java

@@ -32,4 +32,6 @@ public interface RegisterOrderDonService extends IService<RegisterOrderDon> {
     void updateAppleAutoStatus(Long orderId);
 
     CouponUserView spotifyUnLimit(SpotifyUnLimitRecord spotifyUnLimitRecord);
+
+    CouponUserView getAvailableSpotifyCoupon(long userId);
 }

+ 61 - 23
netflix-service/src/main/java/com/cyksj/service/register/impl/RegisterOrderDonServiceImpl.java

@@ -1,6 +1,7 @@
 package com.cyksj.service.register.impl;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -38,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;
 
@@ -183,33 +185,69 @@ public class RegisterOrderDonServiceImpl extends ServiceImpl<RegisterOrderDonMap
         }
     }
 
-    @Override
-    public CouponUserView spotifyUnLimit(SpotifyUnLimitRecord spotifyUnLimitRecord) {
-        RegisterOrderDon registerOrderDon = this.getOne(Wrappers.lambdaQuery(RegisterOrderDon.class)
-                .eq(RegisterOrderDon::getUserId, spotifyUnLimitRecord.getUserId())
-                .eq(RegisterOrderDon::getEmail, spotifyUnLimitRecord.getAccount())
-                .eq(RegisterOrderDon::getPlatform, "spotify")
-                .eq(RegisterOrderDon::getStatus, RegisterOrderDon.Status.complete)
+	@Override
+	public CouponUserView spotifyUnLimit(SpotifyUnLimitRecord spotifyUnLimitRecord) {
+		RegisterOrderDon registerOrderDon = this.getOne(Wrappers.lambdaQuery(RegisterOrderDon.class)
+				.eq(RegisterOrderDon::getUserId, spotifyUnLimitRecord.getUserId())
+				.eq(RegisterOrderDon::getEmail, spotifyUnLimitRecord.getAccount())
+				.eq(RegisterOrderDon::getPlatform, "spotify")
+				.eq(RegisterOrderDon::getStatus, RegisterOrderDon.Status.complete)
+				.last("limit 1"));
+		if (registerOrderDon == null) {
+			throw BusinessRuntimeException.getInstance("仅接受银河录像局注册成功的Spotify邮箱");
+		}
+		Boolean isFlag = false;
+		Long spotifyUnLimitCouponId = null;
+		//是否配置了优惠券
+		SysConfig spotify_unLimit_cid = sysConfigService.getOne(Wrappers.lambdaQuery(SysConfig.class).eq(SysConfig::getSysKey, "spotify_unLimit_cid").last("limit 1"));
+		if (spotify_unLimit_cid != null && StrUtil.isNotBlank(spotify_unLimit_cid.getSysValue())) {
+			spotifyUnLimitCouponId = Long.parseLong(spotify_unLimit_cid.getSysValue());
+			Coupon coupon = couponMapper.selectById(spotifyUnLimitCouponId);
+			if (coupon != null) {
+				isFlag = couponCommonService.sendCouponToUser(spotifyUnLimitRecord.getUserId(), spotifyUnLimitCouponId, null, null, null, CouponUser.Channel.manual);
+			}
+		}
+		//14天内是否重复提交过该账号
+        SpotifyUnLimitRecord exists = spotifyUnLimitRecordMapper.selectOne(Wrappers.lambdaQuery(SpotifyUnLimitRecord.class)
+                .eq(SpotifyUnLimitRecord::getUserId, spotifyUnLimitRecord.getUserId())
+                .eq(SpotifyUnLimitRecord::getAccount, spotifyUnLimitRecord.getAccount())
                 .last("limit 1"));
-        if (registerOrderDon == null) {
-            throw BusinessRuntimeException.getInstance("仅接受银河录像局注册成功的Spotify邮箱");
+        if (exists != null && exists.getUpdateTime().after(DateUtil.offsetDay(DateTime.now(), -14))) {
+            throw BusinessRuntimeException.getInstance("您已提交过,请勿重复提交");
         }
-        Boolean isFlag = false;
-        Long spotifyCouponId = null;
-        //是否配置了优惠券
-        SysConfig spotify_coupon_id = sysConfigService.getOne(Wrappers.lambdaQuery(SysConfig.class).eq(SysConfig::getSysKey, "spotify_coupon_id").last("limit 1"));
-        if (spotify_coupon_id != null) {
-            spotifyCouponId = Long.parseLong(spotify_coupon_id.getSysValue());
-            Coupon coupon = couponMapper.selectById(spotifyCouponId);
-            if (coupon != null) {
-                isFlag = couponCommonService.sendCouponToUser(spotifyUnLimitRecord.getUserId(), spotifyCouponId, null, null, null, CouponUser.Channel.manual);
+        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());
             }
         }
-        spotifyUnLimitRecordMapper.insert(spotifyUnLimitRecord);
-        return isFlag ? beanSearcher.searchFirst(CouponUserView.class, MapUtils.builder()
-                .field(CouponUserView::getUserId, spotifyUnLimitRecord.getUserId()).op(Operator.Equal)
-                .field(CouponUserView::getCouponId, spotifyCouponId).op(Operator.Equal)
-                .build()) : null;
+		return isFlag ? beanSearcher.searchFirst(CouponUserView.class, MapUtils.builder()
+				.field(CouponUserView::getUserId, spotifyUnLimitRecord.getUserId()).op(Operator.Equal)
+				.field(CouponUserView::getCouponId, spotifyUnLimitCouponId).op(Operator.Equal)
+				.build()) : null;
+	}
+
+    @Override
+    public CouponUserView getAvailableSpotifyCoupon(long userId) {
+        SysConfig spotify_register_success_cid = sysConfigService.getOne(Wrappers.lambdaQuery(SysConfig.class).eq(SysConfig::getSysKey, "spotify_register_success_cid").last("limit 1"));
+        CouponUserView couponUserView = null;
+        if (spotify_register_success_cid != null && StrUtil.isNotBlank(spotify_register_success_cid.getSysValue())) {
+            DateTime now = DateTime.now();
+            Long spotifyRegisterSucCid = Long.parseLong(spotify_register_success_cid.getSysValue());
+            couponUserView = beanSearcher.searchFirst(CouponUserView.class, MapUtils.builder()
+                    .field(CouponUserView::getUserId, userId).op(Operator.Equal)
+                    .field(CouponUserView::getCouponId, spotifyRegisterSucCid).op(Operator.Equal)
+                    .field(CouponUserView::getCouponUserStatus, CouponUser.Status.unused.name()).op(Operator.Equal)
+                    .field(CouponUserView::getValidStartTime, now).op(Operator.LessThan)
+                    .field(Coupon::getValidEndTime, now).op(Operator.GreaterThan)
+                    .build());
+        }
+        return couponUserView;
     }
 
     @Override

+ 28 - 2
netflix-service/src/main/java/com/cyksj/service/register/impl/SpotifyServiceImpl.java

@@ -2,6 +2,7 @@ package com.cyksj.service.register.impl;
 
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.RandomUtil;
+import cn.hutool.core.util.StrUtil;
 import cn.hutool.http.HttpRequest;
 import cn.hutool.http.HttpResponse;
 import cn.hutool.http.HttpUtil;
@@ -16,13 +17,15 @@ import com.cyksj.common.util.Jsons;
 import com.cyksj.dto.RedisKey;
 import com.cyksj.mapper.ProxysMapper;
 import com.cyksj.mapper.RegisterOrderDonMapper;
+import com.cyksj.mapper.manage.coupon.CouponMapper;
 import com.cyksj.model.dto.WxMpTemplateData;
 import com.cyksj.model.dto.WxMpTemplateMessage;
-import com.cyksj.model.entity.Proxys;
-import com.cyksj.model.entity.RegisterOrderDon;
+import com.cyksj.model.entity.*;
 import com.cyksj.model.response.ProxyInfo;
 import com.cyksj.redis.RedisService;
+import com.cyksj.service.mange.coupon.CouponCommonService;
 import com.cyksj.service.register.SpotifyService;
+import com.cyksj.service.sys.SysConfigService;
 import com.cyksj.service.wechat.WeChatService;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -53,6 +56,12 @@ public class SpotifyServiceImpl implements SpotifyService {
 
     private final WeChatService weChatService;
 
+    private final CouponMapper couponMapper;
+
+    private final CouponCommonService couponCommonService;
+
+    private final SysConfigService sysConfigService;
+
     private static final List<String> User_Agent_LIST =  List.of(
             "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; AcooBrowser; .NET CLR 1.1.4322; .NET CLR 2.0.50727)",
             "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Acoo Browser; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506)",
@@ -209,6 +218,8 @@ public class SpotifyServiceImpl implements SpotifyService {
                         regFlag = true;
                         //注册成功发放模板消息
                         spotifyTemplateMsg(registerOrderDon, String.format("%s%s", envCommonService.getDomain(), "yinhe/web/sign/list"), true);
+                        //注册成功发放声破天优惠券
+                        sendSpotifyCoupon(registerOrderDon);
                         break;
                     } else {
                         if (errors != null && !errors.isEmpty()) {
@@ -244,6 +255,21 @@ public class SpotifyServiceImpl implements SpotifyService {
         }
     }
 
+    private void sendSpotifyCoupon(RegisterOrderDon registerOrderDon) {
+        //已经拥有声破天年费的不用发
+        Integer exists = registerOrderDonMapper.isPaySpotifyYearTicket(registerOrderDon.getUserId());
+        if (exists == null) {
+            SysConfig spotify_register_success_cid = sysConfigService.getOne(Wrappers.lambdaQuery(SysConfig.class).eq(SysConfig::getSysKey, "spotify_register_success_cid").last("limit 1"));
+            if (spotify_register_success_cid != null && StrUtil.isNotBlank(spotify_register_success_cid.getSysValue())) {
+                Long spotifyRegisterSucCid = Long.parseLong(spotify_register_success_cid.getSysValue());
+                Coupon coupon = couponMapper.selectById(spotifyRegisterSucCid);
+                if (coupon != null) {
+                    couponCommonService.sendCouponToUser(registerOrderDon.getUserId(), spotifyRegisterSucCid, null, null, null, CouponUser.Channel.manual);
+                }
+            }
+        }
+    }
+
     private void spotifyTemplateMsg(RegisterOrderDon registerOrderDon, String url, Boolean isSuccess) throws Exception {
         TemplateEnum templateEnum = null;
         if (EnvCommonService.active.equals(envCommonService.getEnv())) {

+ 33 - 0
netflix-web/src/main/java/com/cyksj/config/SaTokenConfigure.java

@@ -0,0 +1,33 @@
+package com.cyksj.config;
+
+import cn.dev33.satoken.interceptor.SaRouteInterceptor;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+import java.util.List;
+
+/*
+ *项目名: yicang-admin
+ *文件名: WebConfig
+ *创建者: JavaZou
+ *创建时间:2022/12/19 10:01
+ */
+
+@Configuration
+public class SaTokenConfigure implements WebMvcConfigurer {
+	// 注册拦截器
+	@Override
+	public void addInterceptors(InterceptorRegistry registry) {
+		registry.addInterceptor(new SaRouteInterceptor())
+				.addPathPatterns(List.of("/manage/**", "/manager/**", "/sys/update", "/sys/delete/**"))
+				.excludePathPatterns(List.of("/manage/admin/login",
+						"/manage/admin/get/loginInfo",
+						"/manage/corp/**",
+						"/manage/coupon/corp/send",
+						"/manage/coupon",
+						"/manage/register/wx/refund/notify",
+						"/manage/register/unLimit"));
+	}
+}
+

+ 0 - 36
netflix-web/src/main/java/com/cyksj/config/WebConfig.java

@@ -1,36 +0,0 @@
-package com.cyksj.config;
-
-import cn.dev33.satoken.interceptor.SaRouteInterceptor;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
-
-import java.util.List;
-
-/*
- *项目名: yicang-admin
- *文件名: WebConfig
- *创建者: JavaZou
- *创建时间:2022/12/19 10:01
- */
-@Configuration
-public class WebConfig implements WebMvcConfigurer {
-
-	@Configuration
-	public class SaTokenConfigure implements WebMvcConfigurer {
-		// 注册拦截器
-		@Override
-		public void addInterceptors(InterceptorRegistry registry) {
-			registry.addInterceptor(new SaRouteInterceptor())
-					.addPathPatterns(List.of("/manage/**","/manager/**","/sys/update","/sys/delete/**"))
-					.excludePathPatterns(List.of("/manage/admin/login",
-							"/manage/admin/get/loginInfo",
-							"/manage/corp/**",
-							"/manage/coupon/corp/send",
-							"/manage/coupon",
-							"/manage/register/wx/refund/notify",
-							"/manage/register/unLimit"));
-		}
-	}
-
-}

+ 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();
     }
 }

+ 13 - 0
netflix-web/src/main/java/com/cyksj/web/controller/register/RegisterController.java

@@ -188,6 +188,19 @@ public class RegisterController {
         return GatewayResponse.SUCCESS.newBuilder().toResult(couponUserView);
     }
 
+    /**
+     * 查询是否有可用的spotify年付优惠券
+     */
+    @GetMapping("/get/available/spotifyCoupon")
+    public Result<CouponUserView> getAvailableSpotifyCoupon() {
+        CouponUserView couponUserView = registerOrderDonService.getAvailableSpotifyCoupon(StpUserUtil.getLoginIdAsLong());
+        if (couponUserView != null) {
+            String str = couponSkuMapper.selectGoodsSkuStr(couponUserView.getCouponId());
+            couponUserView.setGoodsSkuStr(str.replaceAll(",", "/").replaceAll(";", ""));
+        }
+        return GatewayResponse.SUCCESS.newBuilder().toResult(couponUserView);
+    }
+
     /**
      * 获取代理ip
      */