Bladeren bron

MJ同一买家或者同一用户一个月内多次购买退款;
GPT PLUS 禁用账号列表;定时执行设置奈飞座位信息

zoujiajian 2 jaren geleden
bovenliggende
commit
9d48d8f23a

+ 39 - 0
netflix-dao/src/main/java/com/cyksj/model/views/DisableAccountView.java

@@ -0,0 +1,39 @@
+package com.cyksj.model.views;
+
+import com.ejlchina.searcher.bean.DbField;
+import com.ejlchina.searcher.bean.SearchBean;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+/**
+ * 项目名: yhlxj
+ * 文件名: DisableAccountView
+ * 创建者: JavaZou
+ * 创建时间:2024/6/28 13:42
+ */
+@Getter
+@Setter
+@SearchBean(tables = "(select goods_id,sku_id,account,any_value(created_time) as created_time from user_ticket_cleared_record where account != '' and source = 'disable' group by goods_id,sku_id,account) ur" +
+		" left join goods_don g on g.id = ur.goods_id" +
+		" left join goods_don_sku sku on sku.id = ur.sku_id")
+public class DisableAccountView {
+	@DbField("g.id")
+	private Long goodsId;
+
+	@DbField("g.title")
+	private String title;
+
+	@DbField("ur.account")
+	private String account;
+
+	@DbField("sku.id")
+	private Long skuId;
+
+	@DbField("sku.spec_val")
+	private String specVal;
+
+	@DbField("ur.created_time")
+	private Date createdTime;
+}

+ 1 - 1
netflix-service/src/main/java/com/cyksj/redis/RedisService.java

@@ -841,7 +841,7 @@ public class RedisService {
         MIDJOURNEY_USER("midjourney:user:", "midjourney user", 60 * 60 * 2L),
         MIDJOURNEY_ACCOUNT("midjourney:account:", "midjourney account", 60 * 60 * 48L),
         APPLY_MONEY_DAY_LIMIT_KEY("apply_money_day_limit_key:%s:%s:%s", "每日提现次数限制", 60 * 60 * 24L),
-
+        NETFLIX_SET_LIMIT_TIME("netflix_set_limit_time", "奈飞设置限制", 30l),
         ;
 
         private String name;

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

@@ -264,7 +264,7 @@ public class CmsGroupServiceImpl extends ServiceImpl<GroupsMapper,GroupsTrips> i
             //设置奈飞用户座位
             if (account.getGoodsId() == 1) {
                 User user = userMapper.selectById(relation.getUserId());
-                groupsRelationNetflixService.setNetflixSeatNum(relation.getNum(), user.getNickname(), account.getAccount(), account.getPassword(), relation.getExpiryTime());
+                groupsRelationNetflixService.timingSetNetflix(relation.getNum(), user.getNickname(), account.getAccount(), account.getPassword(), relation.getExpiryTime());
             }
         }
         if (groupsRelations.isEmpty() && verifyCodeList != null && verifyCodeList.size() > 0) {

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

@@ -700,7 +700,7 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
             User user = userMapper.selectById(newRelation.getUserId());
             GroupsTrips groupsTrips = groupsMapper.selectById(newRelation.getGroupsId());
             Account account = accountMapper.selectById(groupsTrips.getAccountId());
-            groupsRelationNetflixService.setNetflixSeatNum(newRelation.getNum(), user.getNickname(), account.getAccount(), account.getPassword(), newRelation.getExpiryTime());
+            groupsRelationNetflixService.timingSetNetflix(newRelation.getNum(), user.getNickname(), account.getAccount(), account.getPassword(), newRelation.getExpiryTime());
         }
 
         if (plusPurchaseSkuRelation != null && plus_relationList != null) {

+ 7 - 5
netflix-service/src/main/java/com/cyksj/service/order/impl/OrderDonServiceImpl.java

@@ -1152,14 +1152,16 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 
 
 		if (orderDon.getOrderType() == 1 && StrUtil.isNotEmpty(buyerId)) {
-			//近一个月同一买家id 只能购买一次 多人
-			if (orderDon.getGoodsId() == 26l && sku.getNum() != 1) {
+			//近一个月同一买家id 只能购买一次 多人 非镜像
+			if (orderDon.getGoodsId() == 26l && sku.getNum() != 1 && !sku.getIsMirror()) {
+				List<Long> userIdList = userBindRelationService.getRelationUserIdList(orderDon.getUserId(), null);
 				Integer count = orderDonMapper.selectCount(Wrappers.lambdaQuery(OrderDon.class)
 						.ne(OrderDon::getId, orderDon.getId())
 						.eq(OrderDon::getGoodsId, orderDon.getGoodsId())
-						.eq(OrderDon::getBuyerId, buyerId)
 						.notIn(OrderDon::getStatus, Constant.noOrderAllStatus)
-						.ge(OrderDon::getCreatedTime, DateUtil.offsetMonth(DateTime.now(), -1)));
+						.ge(OrderDon::getCreatedTime, DateUtil.offsetMonth(DateTime.now(), -1))
+						//同一买家或者同一用户
+						.and(o -> o.eq(OrderDon::getBuyerId, buyerId).or().in(OrderDon::getUserId, userIdList)));
 				if (count > 1) {
 					//退款
 					log.info("一个月内同一买家id购买过Midjourney账号,对订单号:{}进行退款", orderDon.getOrderNo());
@@ -2335,7 +2337,7 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 				if (groupsTrips.getStatus() != GroupsTrips.Status.waiting) {
 					Account account = accountMapper.selectById(groupsTrips.getAccountId());
 					User user = userMapper.selectById(relation.getUserId());
-					groupsRelationNetflixService.setNetflixSeatNum(relation.getNum(), user.getNickname(), account.getAccount(), account.getPassword(), relation.getExpiryTime());
+					groupsRelationNetflixService.timingSetNetflix(relation.getNum(), user.getNickname(), account.getAccount(), account.getPassword(), relation.getExpiryTime());
 				}
 			}
 		}

+ 5 - 0
netflix-service/src/main/java/com/cyksj/service/relation/GroupsRelationNetflixService.java

@@ -19,4 +19,9 @@ public interface GroupsRelationNetflixService {
 	Integer getPinStatus(String taskId) throws Exception;
 
 	Boolean confirmUpdate(String nfUrl);
+
+	/**
+	 * 定时设置奈飞座位号
+	 */
+	void timingSetNetflix(Integer num, String nickname, String account, String password, Date expiryTime);
 }

+ 24 - 0
netflix-service/src/main/java/com/cyksj/service/relation/impl/GroupsRelationNetflixServiceImpl.java

@@ -1,5 +1,6 @@
 package com.cyksj.service.relation.impl;
 
+import cn.hutool.core.date.DateTime;
 import cn.hutool.http.HttpUtil;
 import cn.hutool.json.JSONObject;
 import com.cyksj.common.constant.Constant;
@@ -16,8 +17,10 @@ import com.cyksj.model.entity.Account;
 import com.cyksj.model.entity.GroupsRelation;
 import com.cyksj.model.entity.GroupsTrips;
 import com.cyksj.model.entity.User;
+import com.cyksj.redis.RedisService;
 import com.cyksj.service.relation.GroupsRelationNetflixService;
 import com.cyksj.service.user.UserBindRelationService;
+import com.cyksj.task.JobManager;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
@@ -47,6 +50,10 @@ public class GroupsRelationNetflixServiceImpl implements GroupsRelationNetflixSe
 
 	private final UserBindRelationService userBindRelationService;
 
+	private final RedisService redisService;
+
+	private final JobManager jobManager;
+
 	@Override
 	public JSONObject setNetflixSeatNum(Integer seatNum, String seatName, String account, String password, Date expiryTime) {
 		JSONObject params = new JSONObject();
@@ -137,4 +144,21 @@ public class GroupsRelationNetflixServiceImpl implements GroupsRelationNetflixSe
 		}
 		return false;
 	}
+
+	/**
+	 * 定时设置座位号
+	 * 30s执行一次
+	 */
+	@Override
+	public void timingSetNetflix(Integer num, String nickname, String account, String password, Date expiryTime) {
+		String key = RedisService.key.NETFLIX_SET_LIMIT_TIME.getName();
+		if (!redisService.setNx(key, 1L, 30L)) {
+			jobManager.addJob(30001, () -> {
+				timingSetNetflix(num, nickname, account, password, expiryTime);
+			});
+		} else {
+			setNetflixSeatNum(num, nickname, account, password, expiryTime);
+			log.info("当前时间:{}开始调用设置奈飞座位信息接口", DateTime.now());
+		}
+	}
 }

+ 12 - 0
netflix-web/src/main/java/com/cyksj/web/controller/manage/group/CmsGroupRelationController.java

@@ -23,6 +23,7 @@ import com.cyksj.mapper.manage.cms.CmsUserMapper;
 import com.cyksj.model.entity.*;
 import com.cyksj.model.manage.views.AccountView;
 import com.cyksj.model.manage.views.GroupsRelationBackView;
+import com.cyksj.model.views.DisableAccountView;
 import com.cyksj.model.views.GroupsRelationIndependentView;
 import com.cyksj.model.views.GroupsRelationRechargeView;
 import com.cyksj.model.views.OrderDonRenewView;
@@ -251,4 +252,15 @@ public class CmsGroupRelationController {
         groupRelationClearService.clearTicket(relation, UserTicketClearedRecord.Source.manual);
         return GatewayResponse.SUCCESS.newBuilder().toResult();
     }
+
+    /**
+     * GPT PLUS 禁用账号列表
+     */
+    @GetMapping("/get/disable/account")
+    public Result<SearchResult<DisableAccountView>> getDisableAccount() {
+        SearchResult<DisableAccountView> search = beanSearcher.search(DisableAccountView.class, MapUtils.flatBuilder(request.getParameterMap())
+                .field(DisableAccountView::getGoodsId, 18)
+                .build());
+        return GatewayResponse.SUCCESS.newBuilder().toResult(search);
+    }
 }