Parcourir la source

Merge branch 'master' into pre

zoujiajian il y a 11 heures
Parent
commit
8ad8411bf0

+ 5 - 0
netflix-common/src/main/java/com/cyksj/common/constant/Constant.java

@@ -599,6 +599,11 @@ public interface Constant {
 	 */
 	Long YOUTUBE_GOODS_ID = 5L;
 
+	/**
+	 * Youtube Premium平台ID
+	 */
+	Long YOUTUBE_PREMIUM_GOODS_ID = 107L;
+
 	/**
 	 * 第三方分类id
 	 */

+ 3 - 2
netflix-service/src/main/java/com/cyksj/service/mange/impl/CmsOrderDonServiceImpl.java

@@ -2029,8 +2029,9 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
             }
         }
 
-        //GPT独立会员
-        if (Objects.equals(orderDon.getGoodsId(), Constant.GPT_PLUS_GID)
+        //GPT独立会员和YouTube个人会员退款时扣除代充次数,家庭组不扣除
+        if ((Objects.equals(orderDon.getGoodsId(), Constant.GPT_PLUS_GID)
+                || Objects.equals(orderDon.getGoodsId(), Constant.YOUTUBE_PREMIUM_GOODS_ID))
                 && sku != null && Objects.equals(sku.getNum(), 1)) {
             subRechargeNumOrder(orderDon.getUserId(), orderDon.getRelationId(), sku.getMonths(), operator);
         }

+ 24 - 6
netflix-service/src/main/java/com/cyksj/service/order/impl/OrderDonServiceImpl.java

@@ -3804,11 +3804,16 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 			returnGalaxyCoin(orderDon);
 		}
 
-        //GPT独立会员续费,名称包含pro的规格不进入代充
-        if (orderDon.getGoodsId() == Constant.GPT_PLUS_GID && sku.getNum() == 1
-                && !StrUtil.containsIgnoreCase(sku.getSpecVal(), "pro")) {
-			incrGroupsRelationRechargeRemainIfRecharge(orderDon.getRelationId(), sku.getMonths(), orderDon.getOrderType());
-			
+		//GPT独立会员续费,名称包含pro的规格不进入代充
+		boolean isGptIndividualMember = orderDon.getGoodsId() == Constant.GPT_PLUS_GID && sku.getNum() == 1
+				&& !StrUtil.containsIgnoreCase(sku.getSpecVal(), "pro");
+		//YouTube个人会员与GPT Plus独立会员使用相同的代充次数,家庭组不增加
+		boolean isYoutubeIndividualMember = orderDon.getGoodsId() == Constant.YOUTUBE_PREMIUM_GOODS_ID && sku.getNum() == 1;
+		if (isGptIndividualMember || isYoutubeIndividualMember) {
+			incrGroupsRelationRechargeRemainIfRecharge(orderDon.getRelationId(), sku.getMonths(), orderDon.getOrderType(), isGptIndividualMember);
+		}
+
+		if (isGptIndividualMember) {
 			// GPT独立会员购买,赠送sora邀请码
 			try {
 				soraCodeFrontService.grantSoraCodeForGptMember(orderDon.getUserId(), orderDon.getId());
@@ -6226,9 +6231,22 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 		}
 	}
 
-	private void incrGroupsRelationRechargeRemainIfRecharge(Long relationId, Integer addNum, Integer orderType) {
+	private void incrGroupsRelationRechargeRemainIfRecharge(Long relationId, Integer addNum, Integer orderType, boolean deductFirstRecharge) {
 		GroupsRelation relation = groupsRelationMapper.selectById(relationId);
 		if (orderType == 1) {
+			//YouTube个人会员下单时只初始化次数,客服在代充列表点击发货后才扣除一次
+			if (!deductFirstRecharge) {
+				if (relation.getRechargeNum() == null) {
+					relation.setRechargeNum(addNum);
+					relation.setRechargeRemainNum(addNum);
+					if (relation.getRechargeStatus() == null) {
+						relation.setRechargeStatus(GroupsRelation.RechargeStatus.waiting);
+					}
+					groupsRelationMapper.updateById(relation);
+					gptUserRechargeRecordService.recordGptUserRechargeNum(null, relation.getUserId(), relation.getId(), relation.getAccount(), addNum, null, "下单");
+				}
+				return;
+			}
 			//已发车
 			GroupsTrips groupsTrips = groupsMapper.selectById(relation.getGroupsId());
 			if (groupsTrips.getAccountId() != null) {

+ 7 - 1
netflix-web/src/main/java/com/cyksj/web/controller/manage/group/CmsGroupRelationController.java

@@ -55,6 +55,7 @@ import javax.servlet.http.HttpServletResponse;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.Objects;
 import java.util.Optional;
 import java.util.stream.Collectors;
 
@@ -352,11 +353,16 @@ public class CmsGroupRelationController {
             //GPT代充
             Integer subRechargeNum = 1;
             GoodsDonSku goodsDonSku = goodsDonSkuMapper.selectById(orderDon.getSkuId());
-            if (goodsDonSku.getRechargeType() == 2) {
+            boolean isYoutubeIndividualMember = Objects.equals(goodsDonSku.getGoodsId(), Constant.YOUTUBE_PREMIUM_GOODS_ID)
+                    && Objects.equals(goodsDonSku.getNum(), 1);
+            if (!isYoutubeIndividualMember && Objects.equals(goodsDonSku.getRechargeType(), 2)) {
                 subRechargeNum = 12;
             }
             //扣除次数
             Integer rechargeRemainNum = relation.getRechargeRemainNum();
+            if (isYoutubeIndividualMember && (rechargeRemainNum == null || rechargeRemainNum < subRechargeNum)) {
+                throw BusinessRuntimeException.getInstance("YouTube个人会员剩余代充次数不足");
+            }
             if (rechargeRemainNum != null && rechargeRemainNum > 0) {
                 int update = groupsRelationMapper.update(null, Wrappers.lambdaUpdate(GroupsRelation.class)
                         .set(GroupsRelation::getRechargeRemainNum, rechargeRemainNum - subRechargeNum)