Explorar el Código

预备账号 预备账号计算可用车位数

zoujiajian hace 2 años
padre
commit
157bf909ca

+ 10 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/Account.java

@@ -85,4 +85,14 @@ public class Account extends BaseEntity {
      * gpt accesToken
      */
     private String gptRefreshToken;
+
+    /**
+     * 备用账号类型sku_id
+     */
+    private Integer preSkuId;
+
+    /**
+     * 类型 1通用 2备用
+     */
+    private Integer type;
 }

+ 7 - 0
netflix-dao/src/main/java/com/cyksj/model/excel/ExcelManageAccountData.java

@@ -89,4 +89,11 @@ public class ExcelManageAccountData {
 	@DbIgnore
 	@ExcelIgnore
 	private Boolean expiredAll;
+
+	/**
+	 * 账号类型 2 备用
+	 */
+	@DbField("a.type")
+	@ExcelIgnore
+	private Integer accountType;
 }

+ 7 - 1
netflix-dao/src/main/java/com/cyksj/model/manage/views/AccountView.java

@@ -106,7 +106,7 @@ public class AccountView {
     @DbField("a.email")
     private String email;
 
-    @DbField("gdk.id")
+    @DbField("ifnull(gdk.id,a.pre_sku_id)")
     private Long skuId;
 
     @DbField("a.gpt_refresh_token")
@@ -137,4 +137,10 @@ public class AccountView {
 
     @DbIgnore
     private Date lastUpdatePwdDate;
+
+    @DbField("a.pre_sku_id")
+    private Long preSkuId;
+
+    @DbField("a.type")
+    private Integer accountType;
 }

+ 36 - 3
netflix-service/src/main/java/com/cyksj/service/mange/group/CmsGroupServiceImpl.java

@@ -15,6 +15,7 @@ import com.cyksj.mapper.*;
 import com.cyksj.mapper.manage.GroupsTripsAccountReplaceRecordMapper;
 import com.cyksj.mapper.manage.cms.CmsUserMapper;
 import com.cyksj.model.entity.*;
+import com.cyksj.model.manage.views.AccountView;
 import com.cyksj.model.request.ReplaceTripsAccountReq;
 import com.cyksj.model.views.GroupsAccountView;
 import com.cyksj.redis.RedisService;
@@ -23,6 +24,7 @@ import com.cyksj.service.mange.CmsGroupService;
 import com.cyksj.service.sms.SmsService;
 import com.ejlchina.searcher.BeanSearcher;
 import com.ejlchina.searcher.param.Operator;
+import com.ejlchina.searcher.util.MapBuilder;
 import com.ejlchina.searcher.util.MapUtils;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -172,6 +174,17 @@ public class CmsGroupServiceImpl extends ServiceImpl<GroupsMapper,GroupsTrips> i
         if (count > 0) {
             throw new BusinessRuntimeException("该账号已发车.请选择未发车账户");
         }
+        Account account = accountMapper.selectById(groupsTrips.getAccountId());
+        //将预备账号 类型替换掉
+        if (account.getType() == 2) {
+            int update = accountMapper.update(null, Wrappers.lambdaUpdate(Account.class)
+                    .set(Account::getType, 1)
+                    .eq(Account::getId, account.getId())
+                    .eq(Account::getType, 2));
+            if (update == 0) {
+                throw BusinessRuntimeException.getInstance("该账号已配置车队");
+            }
+        }
         List<GroupsRelation> groupsRelations = relationMapper.selectList(Wrappers.lambdaQuery(GroupsRelation.class).eq(GroupsRelation::getGroupsId, groupsTrips.getId()).eq(GroupsRelation::getStatus, GroupsRelation.Status.validity));
         GroupsTrips trips = beanSearcher.searchFirst(GroupsTrips.class, MapUtils.builder().field(GroupsTrips::getId, groupsTrips.getId()).onlySelect(GroupsTrips::getTitle).build());
         String title = "车票";
@@ -358,18 +371,21 @@ public class CmsGroupServiceImpl extends ServiceImpl<GroupsMapper,GroupsTrips> i
     public Integer getAvailableRelation(Long goodsId, Long skuId) {
         //chatGPT
         GoodsDonSku sku = skuMapper.selectById(skuId);
-        Integer num = sku.getNum();
+        Integer skuNum = sku.getNum();
         if (Constant.AI_goodsIds.contains(sku.getGoodsId()) && sku.getNum() > 1) {
             Integer extraNum = Constant.AI_EXTRACT_NUM;
-            Integer maxNum = num + extraNum;
+            Integer maxNum = skuNum + extraNum;
             DateTime tenExpiry = DateUtil.offsetDay(DateTime.now(), 10);
             Integer available = relationMapper.selectAvailableRelation(skuId);
             //额外硬塞
             Integer special_available = relationMapper.selectSpecialGroupsRelationAvailable(skuId, maxNum, extraNum, tenExpiry);
-            return special_available + available;
+            available += special_available;
+            available = getAvailableAfterPreAccount(available, skuId, maxNum, goodsId);
+            return available;
         }
 
         Integer available = relationMapper.selectAvailableRelation(skuId);
+        available = getAvailableAfterPreAccount(available, skuId, skuNum, goodsId);
         return available;
     }
 
@@ -399,4 +415,21 @@ public class CmsGroupServiceImpl extends ServiceImpl<GroupsMapper,GroupsTrips> i
             }
         });
     }
+
+    public Integer getAvailableAfterPreAccount(Integer available, Long skuId, Integer maxNum, Long goodsId) {
+        MapBuilder builder = MapUtils.builder();
+        if (goodsId == 26) {
+            builder.field(AccountView::getPreSkuId, skuId);
+        }
+        Number preAccount = beanSearcher.searchCount(AccountView.class, builder
+                .field(AccountView::getGoodsId, goodsId)
+                .field(AccountView::getAccountType, 2)
+                .field(AccountView::getGroupsId).op(Operator.IsNull)
+                .build());
+        //计算上预发布账号车位数
+        if (preAccount.intValue() > 0) {
+            available += preAccount.intValue() * maxNum;
+        }
+        return available;
+    }
 }

+ 18 - 0
netflix-web/src/main/java/com/cyksj/web/controller/manage/account/CmsAccountController.java

@@ -950,4 +950,22 @@ public class CmsAccountController {
 		}).sheet().doRead();
 		return GatewayResponse.SUCCESS.newBuilder().toResult(repeat);
 	}
+
+	/**
+	 * 新增预备账号
+	 */
+	@PostMapping("/post/prepare")
+	public Result<String> postPrepare(@RequestBody Account account) {
+		account.setAccount(account.getAccount().trim());
+		account.setPassword(account.getPassword().trim());
+		//账号是否已经添加过
+		if (!account.getAccount().contains("客服")) {
+			if (accountCommonService.checkIsDupAccount(account.getGoodsId(), account.getAccount())) {
+				throw BusinessRuntimeException.getInstance("该平台下已生成该账号");
+			}
+		}
+		account.setType(2);
+		accountService.save(account);
+		return GatewayResponse.SUCCESS.newBuilder().toResult();
+	}
 }