Просмотр исходного кода

fix spotify优惠券弹窗、解除限制

zoujiajian 3 лет назад
Родитель
Сommit
83f63029d8

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

@@ -27,6 +27,6 @@ public interface RegisterOrderDonMapper extends BaseMapper<RegisterOrderDon> {
 			" where created_time between #{yesZeroDate} and #{thisZeroDate} and status = 'refund' and platform = #{platform}")
 			" 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);
 	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 status not in ('close','noPayment') limit 1")
+	@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);
 	Integer isPaySpotifyYearTicket(Long userId);
 }
 }

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

@@ -1,6 +1,7 @@
 package com.cyksj.model.entity;
 package com.cyksj.model.entity;
 
 
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.ejlchina.searcher.bean.SearchBean;
 import lombok.Getter;
 import lombok.Getter;
 import lombok.Setter;
 import lombok.Setter;
 
 
@@ -15,6 +16,7 @@ import javax.validation.constraints.NotEmpty;
 @Getter
 @Getter
 @Setter
 @Setter
 @TableName("spotify_unLimit_record")
 @TableName("spotify_unLimit_record")
+@SearchBean(tables = "spotify_unLimit_record")
 public class SpotifyUnLimitRecord extends BaseEntity {
 public class SpotifyUnLimitRecord extends BaseEntity {
 	private Long userId;
 	private Long userId;
 
 

+ 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);
     void updateAppleAutoStatus(Long orderId);
 
 
     CouponUserView spotifyUnLimit(SpotifyUnLimitRecord spotifyUnLimitRecord);
     CouponUserView spotifyUnLimit(SpotifyUnLimitRecord spotifyUnLimitRecord);
+
+    CouponUserView getAvailableSpotifyCoupon(long userId);
 }
 }

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

@@ -1,6 +1,7 @@
 package com.cyksj.service.register.impl;
 package com.cyksj.service.register.impl;
 
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -183,31 +184,60 @@ 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)
+				.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())
+				.gt(SpotifyUnLimitRecord::getCreatedTime, DateUtil.offsetDay(DateTime.now(), -14))
+				.last("limit 1"));
+		if (exists != null) {
+			throw BusinessRuntimeException.getInstance("您已提交过,请勿重复提交");
+		}
+		spotifyUnLimitRecordMapper.insert(spotifyUnLimitRecord);
+		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
     @Override
-    public CouponUserView spotifyUnLimit(SpotifyUnLimitRecord spotifyUnLimitRecord) {
-        RegisterOrderDon registerOrderDon = this.getOne(Wrappers.lambdaQuery(RegisterOrderDon.class).eq(RegisterOrderDon::getUserId, spotifyUnLimitRecord.getUserId()).eq(RegisterOrderDon::getEmail, spotifyUnLimitRecord.getAccount()).select(RegisterOrderDon::getPassword, RegisterOrderDon::getUsername).last("limit 1"));
-        if (registerOrderDon == null) {
-            throw BusinessRuntimeException.getInstance("仅接受银河录像局注册成功的Spotify邮箱");
-        }
-        if (registerOrderDon.getStatus() != RegisterOrderDon.Status.complete) {
-            throw BusinessRuntimeException.getInstance("您的Spotify账号暂未注册成功");
-        }
-        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);
-            }
+    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());
         }
         }
-        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 couponUserView;
     }
     }
 
 
     @Override
     @Override

+ 12 - 29
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.date.DateUtil;
 import cn.hutool.core.util.RandomUtil;
 import cn.hutool.core.util.RandomUtil;
+import cn.hutool.core.util.StrUtil;
 import cn.hutool.http.HttpRequest;
 import cn.hutool.http.HttpRequest;
 import cn.hutool.http.HttpResponse;
 import cn.hutool.http.HttpResponse;
 import cn.hutool.http.HttpUtil;
 import cn.hutool.http.HttpUtil;
@@ -12,28 +13,23 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.cyksj.common.EnvCommonService;
 import com.cyksj.common.EnvCommonService;
 import com.cyksj.common.constant.TemplateEnum;
 import com.cyksj.common.constant.TemplateEnum;
-import com.cyksj.common.exception.BusinessRuntimeException;
 import com.cyksj.common.util.Jsons;
 import com.cyksj.common.util.Jsons;
 import com.cyksj.dto.RedisKey;
 import com.cyksj.dto.RedisKey;
 import com.cyksj.mapper.ProxysMapper;
 import com.cyksj.mapper.ProxysMapper;
 import com.cyksj.mapper.RegisterOrderDonMapper;
 import com.cyksj.mapper.RegisterOrderDonMapper;
 import com.cyksj.mapper.manage.coupon.CouponMapper;
 import com.cyksj.mapper.manage.coupon.CouponMapper;
-import com.cyksj.mapper.manage.coupon.CouponUserMapper;
 import com.cyksj.model.dto.WxMpTemplateData;
 import com.cyksj.model.dto.WxMpTemplateData;
 import com.cyksj.model.dto.WxMpTemplateMessage;
 import com.cyksj.model.dto.WxMpTemplateMessage;
-import com.cyksj.model.entity.Coupon;
-import com.cyksj.model.entity.CouponUser;
-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.model.response.ProxyInfo;
 import com.cyksj.redis.RedisService;
 import com.cyksj.redis.RedisService;
-import com.cyksj.service.coupon.CouponFontService;
+import com.cyksj.service.mange.coupon.CouponCommonService;
 import com.cyksj.service.register.SpotifyService;
 import com.cyksj.service.register.SpotifyService;
+import com.cyksj.service.sys.SysConfigService;
 import com.cyksj.service.wechat.WeChatService;
 import com.cyksj.service.wechat.WeChatService;
 import lombok.RequiredArgsConstructor;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.StringUtils;
-import org.springframework.dao.DuplicateKeyException;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
 import java.net.InetSocketAddress;
 import java.net.InetSocketAddress;
@@ -62,9 +58,9 @@ public class SpotifyServiceImpl implements SpotifyService {
 
 
     private final CouponMapper couponMapper;
     private final CouponMapper couponMapper;
 
 
-    private final CouponUserMapper couponUserMapper;
+    private final CouponCommonService couponCommonService;
 
 
-    private final CouponFontService couponFontService;
+    private final SysConfigService sysConfigService;
 
 
     private static final List<String> User_Agent_LIST =  List.of(
     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 6.0; Windows NT 5.1; SV1; AcooBrowser; .NET CLR 1.1.4322; .NET CLR 2.0.50727)",
@@ -263,25 +259,12 @@ public class SpotifyServiceImpl implements SpotifyService {
         //已经拥有声破天年费的不用发
         //已经拥有声破天年费的不用发
         Integer exists = registerOrderDonMapper.isPaySpotifyYearTicket(registerOrderDon.getUserId());
         Integer exists = registerOrderDonMapper.isPaySpotifyYearTicket(registerOrderDon.getUserId());
         if (exists == null) {
         if (exists == null) {
-            //领取过的也不用再次发送
-            Coupon spotifyCoupon = couponMapper.getCouponById(2l);
-            if (spotifyCoupon != null) {
-                CouponUser couponUser = couponUserMapper.selectOne(Wrappers.lambdaQuery(CouponUser.class).eq(CouponUser::getUserId, registerOrderDon.getUserId()).eq(CouponUser::getCouponId, spotifyCoupon.getId()).select(CouponUser::getId).last("limit 1"));
-                if (couponUser == null) {
-                    couponUser = new CouponUser();
-                    couponUser.setUserId(registerOrderDon.getUserId());
-                    couponUser.setCouponId(spotifyCoupon.getId());
-                    //领券中心
-                    couponUser.setChannel(CouponUser.Channel.manual);
-                    couponUser.setStatus(CouponUser.Status.unused);
-                    //优惠券有效时间
-                    couponFontService.updateCouponUserValidTime(spotifyCoupon.getId(), couponUser);
-                    try {
-                        couponUserMapper.insert(couponUser);
-                    } catch (DuplicateKeyException e) {
-                        log.info("用户:{}重复领取声破天优惠券{}插入数据错误", registerOrderDon.getId(), spotifyCoupon.getId());
-                        throw BusinessRuntimeException.getInstance("已领取成功");
-                    }
+            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);
                 }
                 }
             }
             }
         }
         }

+ 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 - 35
netflix-web/src/main/java/com/cyksj/config/WebConfig.java

@@ -1,35 +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"));
-		}
-	}
-
-}

+ 25 - 0
netflix-web/src/main/java/com/cyksj/web/controller/manage/register/CmsRegisterController.java

@@ -10,8 +10,10 @@ import com.cyksj.common.util.Xmls;
 import com.cyksj.dto.Result;
 import com.cyksj.dto.Result;
 import com.cyksj.enums.GatewayResponse;
 import com.cyksj.enums.GatewayResponse;
 import com.cyksj.mapper.AppleAutoRegisterDataMapper;
 import com.cyksj.mapper.AppleAutoRegisterDataMapper;
+import com.cyksj.mapper.SpotifyUnLimitRecordMapper;
 import com.cyksj.model.entity.AppleAutoRegisterData;
 import com.cyksj.model.entity.AppleAutoRegisterData;
 import com.cyksj.model.entity.RegisterOrderDon;
 import com.cyksj.model.entity.RegisterOrderDon;
+import com.cyksj.model.entity.SpotifyUnLimitRecord;
 import com.cyksj.model.excel.ExcelAppleIdTemplateData;
 import com.cyksj.model.excel.ExcelAppleIdTemplateData;
 import com.cyksj.model.excel.listener.ExcelAppleDataListener;
 import com.cyksj.model.excel.listener.ExcelAppleDataListener;
 import com.cyksj.model.request.WxOrderRefundReq;
 import com.cyksj.model.request.WxOrderRefundReq;
@@ -54,6 +56,8 @@ public class CmsRegisterController {
 
 
     private final AppleAutoRegisterDataMapper appleAutoRegisterDataMapper;
     private final AppleAutoRegisterDataMapper appleAutoRegisterDataMapper;
 
 
+    private final SpotifyUnLimitRecordMapper spotifyUnLimitRecordMapper;
+
     @GetMapping("/get")
     @GetMapping("/get")
     public Result<SearchResult<RegisterOrderDon>> get(Boolean appleIsAutoType) {
     public Result<SearchResult<RegisterOrderDon>> get(Boolean appleIsAutoType) {
         MapBuilder builder = MapUtils.flatBuilder(request.getParameterMap());
         MapBuilder builder = MapUtils.flatBuilder(request.getParameterMap());
@@ -162,4 +166,25 @@ public class CmsRegisterController {
         }
         }
     }
     }
 
 
+    /**
+     * 获取需要解除限制的账号列表
+     */
+    @GetMapping("/unLimit")
+    public Result<SearchResult<SpotifyUnLimitRecord>> getUnLimit(){
+        SearchResult<SpotifyUnLimitRecord> search = beanSearcher.search(SpotifyUnLimitRecord.class, MapUtils.flatBuilder(request.getParameterMap())
+                .field(SpotifyUnLimitRecord::getStatus,"Processing").build());
+        return GatewayResponse.SUCCESS.newBuilder().toResult(search);
+    }
+
+    /**
+     * 修改解除限制状态
+     */
+    @PutMapping("/unLimit")
+    public Result<String> upUnLimit(@RequestBody SpotifyUnLimitRecord spotifyUnLimitRecord){
+        spotifyUnLimitRecordMapper.update(null, Wrappers.lambdaUpdate(SpotifyUnLimitRecord.class)
+                .eq(SpotifyUnLimitRecord::getId,spotifyUnLimitRecord.getId())
+                .set(SpotifyUnLimitRecord::getStatus,spotifyUnLimitRecord.getStatus())
+        );
+        return GatewayResponse.SUCCESS.newBuilder().toResult();
+    }
 }
 }

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

@@ -7,6 +7,7 @@ import com.cyksj.common.util.Xmls;
 import com.cyksj.dto.Result;
 import com.cyksj.dto.Result;
 import com.cyksj.enums.GatewayResponse;
 import com.cyksj.enums.GatewayResponse;
 import com.cyksj.mapper.AppleAutoRegisterDataMapper;
 import com.cyksj.mapper.AppleAutoRegisterDataMapper;
+import com.cyksj.mapper.manage.coupon.CouponSkuMapper;
 import com.cyksj.model.dto.H5JsPayParams;
 import com.cyksj.model.dto.H5JsPayParams;
 import com.cyksj.model.entity.AppleAutoRegisterData;
 import com.cyksj.model.entity.AppleAutoRegisterData;
 import com.cyksj.model.entity.RegisterOrderDon;
 import com.cyksj.model.entity.RegisterOrderDon;
@@ -49,6 +50,8 @@ public class RegisterController {
 
 
     private final AppleAutoRegisterDataMapper appleAutoRegisterDataMapper;
     private final AppleAutoRegisterDataMapper appleAutoRegisterDataMapper;
 
 
+    private final CouponSkuMapper couponSkuMapper;
+
     @PostMapping
     @PostMapping
     public Result<RegisterOrderDon> register(@RequestBody RegisterReq req) throws Exception {
     public Result<RegisterOrderDon> register(@RequestBody RegisterReq req) throws Exception {
         long userId = StpUserUtil.getLoginIdAsLong();
         long userId = StpUserUtil.getLoginIdAsLong();
@@ -172,6 +175,23 @@ public class RegisterController {
         long userId = StpUserUtil.getLoginIdAsLong();
         long userId = StpUserUtil.getLoginIdAsLong();
         spotifyUnLimitRecord.setUserId(userId);
         spotifyUnLimitRecord.setUserId(userId);
         CouponUserView couponUserView = registerOrderDonService.spotifyUnLimit(spotifyUnLimitRecord);
         CouponUserView couponUserView = registerOrderDonService.spotifyUnLimit(spotifyUnLimitRecord);
+        if (couponUserView != null) {
+            String str = couponSkuMapper.selectGoodsSkuStr(couponUserView.getCouponId());
+            couponUserView.setGoodsSkuStr(str.replaceAll(",", "/").replaceAll(";", ""));
+        }
+        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);
         return GatewayResponse.SUCCESS.newBuilder().toResult(couponUserView);
     }
     }
 }
 }