|
|
@@ -1,20 +1,26 @@
|
|
|
package com.cyksj.web.controller.group;
|
|
|
|
|
|
+import cn.hutool.core.date.DateTime;
|
|
|
+import cn.hutool.core.date.DateUtil;
|
|
|
+import cn.hutool.core.util.StrUtil;
|
|
|
import cn.hutool.extra.servlet.ServletUtil;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.cyksj.common.exception.BusinessRuntimeException;
|
|
|
+import com.cyksj.common.task.GlobalThreadPoolTaskExecutor;
|
|
|
+import com.cyksj.common.util.GoogleGenerator;
|
|
|
import com.cyksj.common.util.StringUtil;
|
|
|
import com.cyksj.dto.Result;
|
|
|
import com.cyksj.enums.GatewayResponse;
|
|
|
+import com.cyksj.mapper.AccountDoubleVerifyRecordMapper;
|
|
|
import com.cyksj.mapper.ChatGptPwdViewRecordMapper;
|
|
|
+import com.cyksj.mapper.DoubleVerifyClickRecordMapper;
|
|
|
import com.cyksj.mapper.GroupsRelationMapper;
|
|
|
-import com.cyksj.model.entity.ChatGptPwdViewRecord;
|
|
|
-import com.cyksj.model.entity.GroupsRelation;
|
|
|
-import com.cyksj.model.entity.OrderDon;
|
|
|
+import com.cyksj.model.entity.*;
|
|
|
import com.cyksj.model.manage.views.GroupsRelationView;
|
|
|
import com.cyksj.model.request.OrderPayRequest;
|
|
|
import com.cyksj.model.views.RenewalView;
|
|
|
import com.cyksj.model.views.UserTicketView;
|
|
|
+import com.cyksj.redis.RedisService;
|
|
|
import com.cyksj.service.order.OrderDonService;
|
|
|
import com.cyksj.service.relation.GroupRelationFrontService;
|
|
|
import com.cyksj.service.user.UserService;
|
|
|
@@ -53,6 +59,14 @@ public class GroupRelationController {
|
|
|
|
|
|
private final HttpServletRequest request;
|
|
|
|
|
|
+ private final AccountDoubleVerifyRecordMapper accountDoubleVerifyRecordMapper;
|
|
|
+
|
|
|
+ private final DoubleVerifyClickRecordMapper doubleVerifyRecordMapper;
|
|
|
+
|
|
|
+ private final RedisService redisService;
|
|
|
+
|
|
|
+ private final GlobalThreadPoolTaskExecutor THREAD_POOL;
|
|
|
+
|
|
|
@RequestMapping("/get/renewal")
|
|
|
public Result<List<RenewalView>> get(Boolean isLoginPopularize) {
|
|
|
long userId = StpUserUtil.getLoginIdAsLong();
|
|
|
@@ -114,6 +128,7 @@ public class GroupRelationController {
|
|
|
GroupsRelationView groupsRelationView = beanSearcher.searchFirst(GroupsRelationView.class, MapUtils.builder()
|
|
|
.field(GroupsRelationView::getUserId, userIds).op(Operator.InList)
|
|
|
.field(GroupsRelationView::getId, relationId).build());
|
|
|
+ if (groupsRelationView.getAccountId() == null) return GatewayResponse.SUCCESS.newBuilder().toResult();
|
|
|
if (groupRelationFrontService == null) throw BusinessRuntimeException.getInstance("车票已不存在");
|
|
|
ChatGptPwdViewRecord viewRecord = new ChatGptPwdViewRecord();
|
|
|
viewRecord.setUserId(userId);
|
|
|
@@ -121,6 +136,67 @@ public class GroupRelationController {
|
|
|
viewRecord.setSkuId(groupsRelationView.getSkuId());
|
|
|
viewRecord.setOperateLocation(StringUtil.getRealAddressByIP(ServletUtil.getClientIP(request)));
|
|
|
chatGptPwdViewRecordMapper.insert(viewRecord);
|
|
|
+ if (StrUtil.isEmpty(groupsRelationView.getApiSecret())) {
|
|
|
+ THREAD_POOL.execute(() -> {
|
|
|
+ //车队所有人查看密码
|
|
|
+ Integer num = groupsRelationView.getNum();
|
|
|
+ Integer viewNum = relationMapper.selectViewPwdCount(groupsRelationView.getGroupsId());
|
|
|
+ if (num <= viewNum) {
|
|
|
+ AccountDoubleVerifyRecord exist = accountDoubleVerifyRecordMapper.selectOne(Wrappers.lambdaQuery(AccountDoubleVerifyRecord.class)
|
|
|
+ .eq(AccountDoubleVerifyRecord::getAccountId, groupsRelationView.getAccountId())
|
|
|
+ .eq(AccountDoubleVerifyRecord::getDeleted, true).last("limit 1"));
|
|
|
+ if (exist == null) {
|
|
|
+ if (redisService.setNx(String.format("%s-%s"), groupsRelationView.getAccountId(), groupsRelationView.getId())) {
|
|
|
+ //记录
|
|
|
+ AccountDoubleVerifyRecord accountDoubleVerifyRecord = new AccountDoubleVerifyRecord();
|
|
|
+ accountDoubleVerifyRecord.setAccountId(groupsRelationView.getAccountId());
|
|
|
+ accountDoubleVerifyRecord.setAccount(groupsRelationView.getTripsAccount());
|
|
|
+ accountDoubleVerifyRecord.setGroupsId(groupsRelationView.getGroupsId());
|
|
|
+ accountDoubleVerifyRecord.setSkuId(groupsRelationView.getSkuId());
|
|
|
+ accountDoubleVerifyRecord.setRemark("车队所有人看过密码");
|
|
|
+ accountDoubleVerifyRecordMapper.insert(accountDoubleVerifyRecord);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
return GatewayResponse.SUCCESS.newBuilder().toResult(groupsRelationView.getTripsPassword());
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取AI类 ChatGPT产品谷歌验证码
|
|
|
+ */
|
|
|
+ @GetMapping("/get/authCode")
|
|
|
+ public Result<String> getAuthCode(Long relationId) throws InterruptedException {
|
|
|
+ long userId = StpUserUtil.getLoginIdAsLong();
|
|
|
+ //每个人 每月只能获取两次
|
|
|
+ if (relationId==null) throw BusinessRuntimeException.getInstance("车票不存在");
|
|
|
+ GroupsRelationView groupsRelationView = beanSearcher.searchFirst(GroupsRelationView.class, MapUtils.builder()
|
|
|
+ .field(GroupsRelationView::getId, relationId)
|
|
|
+ .field(GroupsRelationView::getUserId, userId).build());
|
|
|
+ if (groupsRelationView == null) throw BusinessRuntimeException.getInstance("车票不存在");
|
|
|
+ if (StrUtil.isEmpty(groupsRelationView.getApiSecret())) throw BusinessRuntimeException.getInstance("未开启验证");
|
|
|
+ DateTime now = DateTime.now();
|
|
|
+ Integer count = doubleVerifyRecordMapper.selectCount(Wrappers.lambdaQuery(DoubleVerifyClickRecord.class)
|
|
|
+ .eq(DoubleVerifyClickRecord::getUserId, userId)
|
|
|
+ .eq(DoubleVerifyClickRecord::getAccountId, groupsRelationView.getAccountId())
|
|
|
+ .between(DoubleVerifyClickRecord::getCreatedTime, DateUtil.beginOfMonth(now), DateUtil.endOfMonth(now)));
|
|
|
+ if (count >= 2) throw BusinessRuntimeException.getInstance("获取次数上限");
|
|
|
+ int second = now.second();
|
|
|
+ if (second < 30 && 30 - second <= 10) {
|
|
|
+ Thread.sleep(30 - second + 1);
|
|
|
+ } else if (second > 30 && 60 - second <= 10) {
|
|
|
+ Thread.sleep(60 - second + 1);
|
|
|
+ }
|
|
|
+ DoubleVerifyClickRecord doubleVerifyClickRecord = new DoubleVerifyClickRecord();
|
|
|
+ doubleVerifyClickRecord.setRelationId(relationId);
|
|
|
+ doubleVerifyClickRecord.setUserId(userId);
|
|
|
+
|
|
|
+ doubleVerifyClickRecord.setAccountId(groupsRelationView.getAccountId());
|
|
|
+ doubleVerifyClickRecord.setAccount(groupsRelationView.getTripsAccount());
|
|
|
+ doubleVerifyClickRecord.setSkuId(groupsRelationView.getSkuId());
|
|
|
+ doubleVerifyRecordMapper.insert(doubleVerifyClickRecord);
|
|
|
+ long code = GoogleGenerator.getCode(groupsRelationView.getApiSecret(), now.getTime());
|
|
|
+ return GatewayResponse.SUCCESS.newBuilder().toResult(Long.toString(code));
|
|
|
+ }
|
|
|
}
|