|
|
@@ -5,6 +5,7 @@ import cn.hutool.core.lang.Validator;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.cyksj.common.constant.Constant;
|
|
|
import com.cyksj.common.exception.BusinessRuntimeException;
|
|
|
+import com.cyksj.common.task.GlobalThreadPoolTaskExecutor;
|
|
|
import com.cyksj.mapper.GoodsDonSkuMapper;
|
|
|
import com.cyksj.mapper.GptTeamAccountMapper;
|
|
|
import com.cyksj.mapper.GptTeamUserBindRecordMapper;
|
|
|
@@ -21,6 +22,7 @@ import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.util.List;
|
|
|
+import java.util.Optional;
|
|
|
|
|
|
/**
|
|
|
* GPT Team用户绑定记录服务实现
|
|
|
@@ -42,6 +44,8 @@ public class GptTeamUserBindRecordServiceImpl implements GptTeamUserBindRecordSe
|
|
|
|
|
|
private final SysConfigMapper sysConfigMapper;
|
|
|
|
|
|
+ private static final GlobalThreadPoolTaskExecutor TASK_POOL = GlobalThreadPoolTaskExecutor.getInstance();
|
|
|
+
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Throwable.class)
|
|
|
public void bindByOrderId(GptTeamBindRequest request) {
|
|
|
@@ -63,18 +67,19 @@ public class GptTeamUserBindRecordServiceImpl implements GptTeamUserBindRecordSe
|
|
|
}
|
|
|
|
|
|
// 2. 检查是否已经绑定
|
|
|
- Integer selectCount = bindRecordMapper.selectCount(Wrappers.lambdaQuery(GptTeamUserBindRecord.class).eq(GptTeamUserBindRecord::getOrderId, orderId));
|
|
|
- if (selectCount > 0) {
|
|
|
+ GptTeamUserBindRecord bindRecord = Optional.ofNullable(bindRecordMapper.selectOne(Wrappers.lambdaQuery(GptTeamUserBindRecord.class).eq(GptTeamUserBindRecord::getOrderId, orderId).last("limit 1"))).orElse(new GptTeamUserBindRecord());
|
|
|
+ if (bindRecord.getId() != null && bindRecord.getStatus()) {
|
|
|
throw BusinessRuntimeException.getInstance("已有绑定的Team");
|
|
|
}
|
|
|
- // 4. 创建绑定记录
|
|
|
- GptTeamUserBindRecord bindRecord = new GptTeamUserBindRecord();
|
|
|
+ // 创建绑定记录
|
|
|
//订单用户id
|
|
|
bindRecord.setUserId(order.getUserId());
|
|
|
bindRecord.setBindTime(DateTime.now());
|
|
|
bindRecord.setBindEmail(email);
|
|
|
try {
|
|
|
- bindRecordMapper.insert(bindRecord);
|
|
|
+ if (bindRecord.getId() == null) {
|
|
|
+ TASK_POOL.execute(() -> bindRecordMapper.insert(bindRecord));
|
|
|
+ }
|
|
|
} catch (DuplicateKeyException e) {
|
|
|
throw BusinessRuntimeException.getInstance("已有绑定的Team");
|
|
|
}
|
|
|
@@ -92,9 +97,9 @@ public class GptTeamUserBindRecordServiceImpl implements GptTeamUserBindRecordSe
|
|
|
throw BusinessRuntimeException.getInstance("系统繁忙,请重试!");
|
|
|
}
|
|
|
bindRecord.setToken(teamAccount.getToken());
|
|
|
+ bindRecord.setStatus(Boolean.TRUE);
|
|
|
bindRecordMapper.updateById(bindRecord);
|
|
|
//绑定 Team API TODO
|
|
|
-
|
|
|
}
|
|
|
|
|
|
@Override
|