BUGFIX:循环依赖导致项目无法启动
This commit is contained in:
11
src/main/java/com/ai/da/service/APIGenerateService.java
Normal file
11
src/main/java/com/ai/da/service/APIGenerateService.java
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
package com.ai.da.service;
|
||||||
|
|
||||||
|
import com.ai.da.mapper.primary.entity.APIGenerate;
|
||||||
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
|
||||||
|
public interface APIGenerateService extends IService<APIGenerate> {
|
||||||
|
|
||||||
|
void addAPIGenerateRecordAsync(String taskId, String function, String modelName, String status);
|
||||||
|
|
||||||
|
void updateAPIGenerateStatusAsync(String taskId, String status);
|
||||||
|
}
|
||||||
23
src/main/java/com/ai/da/service/TrialOrderService.java
Normal file
23
src/main/java/com/ai/da/service/TrialOrderService.java
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
package com.ai.da.service;
|
||||||
|
|
||||||
|
import com.ai.da.mapper.primary.entity.TrialOrder;
|
||||||
|
import com.ai.da.model.dto.AccountTrialDTO;
|
||||||
|
import com.ai.da.model.dto.TrialOrderDTO;
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public interface TrialOrderService extends IService<TrialOrder> {
|
||||||
|
|
||||||
|
Boolean addTrialUser(AccountTrialDTO accountTrialDTO, HttpServletRequest request);
|
||||||
|
|
||||||
|
Boolean trialOrderApproval(List<Long> ids);
|
||||||
|
|
||||||
|
IPage<TrialOrder> trialOrderList(TrialOrderDTO trialOrderDTO);
|
||||||
|
|
||||||
|
Boolean trialOrderRefuse(List<Long> ids);
|
||||||
|
|
||||||
|
Boolean trialUserLogout();
|
||||||
|
}
|
||||||
@@ -0,0 +1,68 @@
|
|||||||
|
package com.ai.da.service.impl;
|
||||||
|
|
||||||
|
import com.ai.da.mapper.primary.APIGenerateMapper;
|
||||||
|
import com.ai.da.mapper.primary.entity.APIGenerate;
|
||||||
|
import com.ai.da.service.APIGenerateService;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import io.netty.util.internal.StringUtil;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.scheduling.annotation.Async;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
@Slf4j
|
||||||
|
@Service
|
||||||
|
public class APIGenerateServiceImpl extends ServiceImpl<APIGenerateMapper, APIGenerate> implements APIGenerateService {
|
||||||
|
|
||||||
|
@Async
|
||||||
|
public void addAPIGenerateRecordAsync(String taskId, String function, String modelName, String status){
|
||||||
|
log.info("异步执行添加");
|
||||||
|
if (!StringUtil.isNullOrEmpty(taskId) && !StringUtil.isNullOrEmpty(modelName)){
|
||||||
|
APIGenerate apiGenerate = new APIGenerate();
|
||||||
|
apiGenerate.setTaskId(taskId);
|
||||||
|
apiGenerate.setFunc(function);
|
||||||
|
apiGenerate.setModelName(modelName);
|
||||||
|
apiGenerate.setStatus(status);
|
||||||
|
apiGenerate.setRetry_count(0);
|
||||||
|
apiGenerate.setCreateTime(LocalDateTime.now());
|
||||||
|
addAPIGenerateRecord(apiGenerate); // 调用同步方法
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Transactional
|
||||||
|
public void addAPIGenerateRecord(APIGenerate apiGenerate) {
|
||||||
|
baseMapper.insert(apiGenerate);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Async
|
||||||
|
public void updateAPIGenerateStatusAsync(String taskId, String status){
|
||||||
|
try {
|
||||||
|
log.info("异步执行修改");
|
||||||
|
QueryWrapper<APIGenerate> qw = new QueryWrapper<>();
|
||||||
|
qw.lambda().eq(APIGenerate::getTaskId, taskId);
|
||||||
|
APIGenerate apiGenerate = baseMapper.selectOne(qw);
|
||||||
|
if (Objects.nonNull(apiGenerate)){
|
||||||
|
if (apiGenerate.getStatus().equals("Ready") || apiGenerate.getStatus().equals("SUCCEEDED")) {
|
||||||
|
log.warn("当前任务 {} 状态已达Success, 不做修改", taskId);
|
||||||
|
} else {
|
||||||
|
apiGenerate.setStatus(status);
|
||||||
|
apiGenerate.setUpdateTime(LocalDateTime.now());
|
||||||
|
updateAPIGenerateRecord(apiGenerate);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
log.error("任务 {} 在api_generate表中找不到", taskId);
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("更新任务状态失败, taskId: {}, status: {}", taskId, status, e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Transactional
|
||||||
|
public void updateAPIGenerateRecord(APIGenerate apiGenerate){
|
||||||
|
baseMapper.updateById(apiGenerate);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -95,10 +95,10 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
|
|||||||
private LibraryService libraryService;
|
private LibraryService libraryService;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private UserLikeGroupService userLikeGroupService;
|
private TrialOrderMapper trialOrderMapper;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private TrialOrderMapper trialOrderMapper;
|
private TrialOrderService trialOrderService;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private QuestionnaireMapper questionnaireMapper;
|
private QuestionnaireMapper questionnaireMapper;
|
||||||
@@ -646,14 +646,7 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Boolean trialUserLogout() {
|
public Boolean trialUserLogout() {
|
||||||
AuthPrincipalVo userInfo = UserContext.getUserHolder();
|
return trialOrderService.trialUserLogout();
|
||||||
Account account = accountMapper.selectById(userInfo.getId());
|
|
||||||
if (account.getIsTrial() != 1) {
|
|
||||||
throw new BusinessException("用户为正式用户");
|
|
||||||
}
|
|
||||||
libraryService.deleteTrialData(userInfo.getId());
|
|
||||||
userLikeGroupService.deleteTrialData(userInfo.getId());
|
|
||||||
return Boolean.TRUE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -667,156 +660,17 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Boolean addTrialUser(AccountTrialDTO accountTrialDTO, HttpServletRequest request) {
|
public Boolean addTrialUser(AccountTrialDTO accountTrialDTO, HttpServletRequest request) {
|
||||||
// 获取用户申请试用IP
|
return trialOrderService.addTrialUser(accountTrialDTO, request);
|
||||||
String ipAddress = RequestInfoUtil.getIpAddress(request);
|
|
||||||
boolean link = false;
|
|
||||||
if (StringUtils.isNotBlank(accountTrialDTO.getRef())) {
|
|
||||||
link = true;
|
|
||||||
}
|
|
||||||
// 先检测试用订单
|
|
||||||
QueryWrapper<TrialOrder> trialOrderQueryWrapper = new QueryWrapper<>();
|
|
||||||
trialOrderQueryWrapper.eq("BINARY email", accountTrialDTO.getEmail());
|
|
||||||
// trialOrderQueryWrapper.lambda().eq(TrialOrder::getIp, ipAddress);
|
|
||||||
// trialOrderQueryWrapper.lambda().and(wrapper ->
|
|
||||||
// wrapper.eq(TrialOrder::getEmail, accountTrialDTO.getEmail())
|
|
||||||
// .or() // OR
|
|
||||||
// .like(TrialOrder::getUserName, accountTrialDTO.getUserName()));
|
|
||||||
List<TrialOrder> trialOrders = trialOrderMapper.selectList(trialOrderQueryWrapper);
|
|
||||||
if (CollectionUtil.isNotEmpty(trialOrders)) {
|
|
||||||
TrialOrder trialOrder = trialOrders.get(0);
|
|
||||||
if (trialOrder.getStatus() == 1) {
|
|
||||||
throw new BusinessException("You have submitted a trial application, please wait for approval.");
|
|
||||||
}else {
|
|
||||||
throw new BusinessException("You have already been approved for a trial, please do not apply for the trial again");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// 先检测用户名和邮箱
|
|
||||||
QueryWrapper<Account> qw = new QueryWrapper<>();
|
|
||||||
qw.eq("BINARY user_email", accountTrialDTO.getEmail());
|
|
||||||
List<Account> accountList = accountMapper.selectList(qw);
|
|
||||||
if (CollectionUtil.isNotEmpty(accountList) && !accountList.get(0).getSystemUser().equals(0)) {
|
|
||||||
if (accountList.get(0).getIsTrial() == 1) {
|
|
||||||
throw new BusinessException("The email has already been registered", ResultEnum.PROMPT.getCode());
|
|
||||||
} else {
|
|
||||||
Account account = accountList.get(0);
|
|
||||||
if (null == account.getValidEndTime() || account.getValidEndTime() > System.currentTimeMillis()) {
|
|
||||||
throw new BusinessException("The email has already been registered", ResultEnum.PROMPT.getCode());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// 接收到数据后要形成一条使用订单信息
|
|
||||||
TrialOrder trialOrder = CopyUtil.copyObject(accountTrialDTO, TrialOrder.class);
|
|
||||||
trialOrder.setCreateTime(LocalDateTime.now());
|
|
||||||
trialOrder.setStatus(0);
|
|
||||||
trialOrder.setIp(ipAddress);
|
|
||||||
trialOrderMapper.insert(trialOrder);
|
|
||||||
// SendEmailUtil.sendCustomEmail("1023316923@qq.com", null, trialOrder,1);
|
|
||||||
// SendEmailUtil.sendCustomEmail("calvinwong@aidlab.hk", null, trialOrder,1);
|
|
||||||
// SendEmailUtil.sendCustomEmail("kaicpang.pang@connect.polyu.hk", null, trialOrder,1);
|
|
||||||
// 判断当前的试用订单是否自动批准
|
|
||||||
if (AutoApproved.getStatus()) {
|
|
||||||
// 改变试用订单状态,新增试用用户
|
|
||||||
trialOrder.setStatus(1);
|
|
||||||
trialOrder.setUpdateTime(LocalDateTime.now());
|
|
||||||
trialOrderMapper.updateById(trialOrder);
|
|
||||||
Account account = new Account();
|
|
||||||
if (CollectionUtil.isNotEmpty(accountList)) {
|
|
||||||
account = CopyUtil.copyObject(accountList.get(0), Account.class);
|
|
||||||
account.setIsTrial(1);
|
|
||||||
account.setIsBeginner(1);
|
|
||||||
account.setSystemUser(3);
|
|
||||||
account.setValidStartTime(System.currentTimeMillis());
|
|
||||||
account.setCountry(accountTrialDTO.getCountry());
|
|
||||||
if (link) {
|
|
||||||
account.setValidEndTime(toDayEnd(Instant.now().plus(5, ChronoUnit.DAYS).toEpochMilli()));
|
|
||||||
} else {
|
|
||||||
account.setValidEndTime(toDayEnd(Instant.now().plus(5, ChronoUnit.DAYS).toEpochMilli()));
|
|
||||||
}
|
|
||||||
account.setCredits(BigDecimal.valueOf(100));
|
|
||||||
accountMapper.updateById(account);
|
|
||||||
} else {
|
|
||||||
account.setUserName(trialOrder.getUserName());
|
|
||||||
account.setUserPassword("Third-000000");
|
|
||||||
account.setUserEmail(trialOrder.getEmail());
|
|
||||||
account.setLanguage(Language.ENGLISH.name());
|
|
||||||
account.setCountry(accountTrialDTO.getCountry());
|
|
||||||
account.setValidStartTime(System.currentTimeMillis());
|
|
||||||
if (link) {
|
|
||||||
account.setValidEndTime(toDayEnd(Instant.now().plus(5, ChronoUnit.DAYS).toEpochMilli()));
|
|
||||||
} else {
|
|
||||||
account.setValidEndTime(toDayEnd(Instant.now().plus(5, ChronoUnit.DAYS).toEpochMilli()));
|
|
||||||
}
|
|
||||||
account.setCreateDate(new Date());
|
|
||||||
account.setIsTrial(1);
|
|
||||||
account.setIsBeginner(1);
|
|
||||||
account.setSystemUser(3);
|
|
||||||
account.setCredits(BigDecimal.valueOf(100));
|
|
||||||
accountMapper.insert(account);
|
|
||||||
}
|
|
||||||
// 发送邮件提醒用户试用用户已创建
|
|
||||||
// SendEmailUtil.sendCustomEmail("1023316923@qq.com", null, trialOrder,2);
|
|
||||||
// SendEmailUtil.sendCustomEmail("calvinwong@aidlab.hk", null, trialOrder,2);
|
|
||||||
// SendEmailUtil.sendCustomEmail("kaicpang.pang@connect.polyu.hk", null, trialOrder,2);
|
|
||||||
if (trialOrder.getCountry().equals("China")) {
|
|
||||||
SendEmailUtil.sendCustomEmail(account.getUserEmail(), null, trialOrder, 3, trialOrder.getCountry(), link);
|
|
||||||
} else {
|
|
||||||
SendEmailUtil.sendCustomEmail(account.getUserEmail(), null, trialOrder, 3, trialOrder.getCountry(), link);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return Boolean.TRUE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IPage<TrialOrder> trialOrderList(TrialOrderDTO trialOrderDTO) {
|
public IPage<TrialOrder> trialOrderList(TrialOrderDTO trialOrderDTO) {
|
||||||
QueryWrapper<TrialOrder> qw = new QueryWrapper<>();
|
return trialOrderService.trialOrderList(trialOrderDTO);
|
||||||
qw.lambda().eq(trialOrderDTO.getStatus() != null, TrialOrder::getStatus, trialOrderDTO.getStatus());
|
|
||||||
return trialOrderMapper.selectPage(new Page<>(trialOrderDTO.getPage(), trialOrderDTO.getSize()), qw);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Boolean trialOrderApproval(List<Long> ids) {
|
public Boolean trialOrderApproval(List<Long> ids) {
|
||||||
for (Long id : ids) {
|
return trialOrderService.trialOrderApproval(ids);
|
||||||
TrialOrder trialOrder = trialOrderMapper.selectById(id);
|
|
||||||
trialOrder.setStatus(1);
|
|
||||||
trialOrder.setUpdateTime(LocalDateTime.now());
|
|
||||||
trialOrderMapper.updateById(trialOrder);
|
|
||||||
|
|
||||||
QueryWrapper<Account> qw = new QueryWrapper<>();
|
|
||||||
qw.eq("BINARY user_email", trialOrder.getEmail());
|
|
||||||
List<Account> accountList = accountMapper.selectList(qw);
|
|
||||||
|
|
||||||
Account account = new Account();
|
|
||||||
if (CollectionUtil.isNotEmpty(accountList)) {
|
|
||||||
account = CopyUtil.copyObject(accountList.get(0), Account.class);
|
|
||||||
account.setIsTrial(1);
|
|
||||||
account.setIsBeginner(1);
|
|
||||||
account.setValidStartTime(System.currentTimeMillis());
|
|
||||||
account.setValidEndTime(toDayEnd(Instant.now().plus(5, ChronoUnit.DAYS).toEpochMilli()));
|
|
||||||
accountMapper.updateById(account);
|
|
||||||
} else {
|
|
||||||
account.setUserName(trialOrder.getUserName());
|
|
||||||
account.setUserPassword("Third-000000");
|
|
||||||
account.setUserEmail(trialOrder.getEmail());
|
|
||||||
account.setLanguage(Language.ENGLISH.name());
|
|
||||||
account.setValidStartTime(System.currentTimeMillis());
|
|
||||||
account.setValidEndTime(toDayEnd(Instant.now().plus(5, ChronoUnit.DAYS).toEpochMilli()));
|
|
||||||
account.setCreateDate(new Date());
|
|
||||||
account.setIsTrial(1);
|
|
||||||
account.setIsBeginner(1);
|
|
||||||
account.setSystemUser(1);
|
|
||||||
accountMapper.insert(account);
|
|
||||||
}
|
|
||||||
// 发送邮件提醒用户试用用户已创建
|
|
||||||
// SendEmailUtil.sendCustomEmail("1023316923@qq.com", null, trialOrder,2, trialOrder.getCountry());
|
|
||||||
// SendEmailUtil.sendCustomEmail("calvinwong@aidlab.hk", null, trialOrder,2, trialOrder.getCountry());
|
|
||||||
// SendEmailUtil.sendCustomEmail("kaicpang.pang@connect.polyu.hk", null, trialOrder,2, trialOrder.getCountry());
|
|
||||||
if (trialOrder.getCountry().equals("China")) {
|
|
||||||
SendEmailUtil.sendCustomEmail(account.getUserEmail(), null, trialOrder, 3, trialOrder.getCountry(), false);
|
|
||||||
} else {
|
|
||||||
SendEmailUtil.sendCustomEmail(account.getUserEmail(), null, trialOrder, 3, trialOrder.getCountry(), false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return Boolean.TRUE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -832,13 +686,7 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Boolean trialOrderRefuse(List<Long> ids) {
|
public Boolean trialOrderRefuse(List<Long> ids) {
|
||||||
for (Long id : ids) {
|
return trialOrderService.trialOrderRefuse(ids);
|
||||||
TrialOrder trialOrder = trialOrderMapper.selectById(id);
|
|
||||||
trialOrder.setStatus(2);
|
|
||||||
trialOrder.setUpdateTime(LocalDateTime.now());
|
|
||||||
trialOrderMapper.updateById(trialOrder);
|
|
||||||
}
|
|
||||||
return Boolean.TRUE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import com.ai.da.common.response.ResultEnum;
|
|||||||
import com.ai.da.common.utils.*;
|
import com.ai.da.common.utils.*;
|
||||||
import com.ai.da.mapper.primary.CollectionElementMapper;
|
import com.ai.da.mapper.primary.CollectionElementMapper;
|
||||||
import com.ai.da.mapper.primary.GenerateDetailMapper;
|
import com.ai.da.mapper.primary.GenerateDetailMapper;
|
||||||
|
import com.ai.da.mapper.primary.GenerateMapper;
|
||||||
import com.ai.da.mapper.primary.entity.*;
|
import com.ai.da.mapper.primary.entity.*;
|
||||||
import com.ai.da.model.dto.*;
|
import com.ai.da.model.dto.*;
|
||||||
import com.ai.da.model.enums.ModelType;
|
import com.ai.da.model.enums.ModelType;
|
||||||
@@ -68,7 +69,7 @@ public class CollectionElementServiceImpl extends ServiceImpl<CollectionElementM
|
|||||||
@Resource
|
@Resource
|
||||||
private SysFileService sysFileService;
|
private SysFileService sysFileService;
|
||||||
@Resource
|
@Resource
|
||||||
private GenerateService generateService;
|
private GenerateMapper generateMapper;
|
||||||
@Resource
|
@Resource
|
||||||
private GenerateDetailMapper generateDetailMapper;
|
private GenerateDetailMapper generateDetailMapper;
|
||||||
@Resource
|
@Resource
|
||||||
@@ -268,7 +269,7 @@ public class CollectionElementServiceImpl extends ServiceImpl<CollectionElementM
|
|||||||
|
|
||||||
// 保存合成信息到generate表
|
// 保存合成信息到generate表
|
||||||
Generate generate = setGenerate(userId, generatePrintDTO.getTimeZone());
|
Generate generate = setGenerate(userId, generatePrintDTO.getTimeZone());
|
||||||
generateService.save(generate);
|
generateMapper.insert(generate);
|
||||||
|
|
||||||
// 保存合成后的信息到generateDetail
|
// 保存合成后的信息到generateDetail
|
||||||
GenerateDetail generateDetail = setGenerateDetail(generate.getId(), generateUrl, generatePrintDTO.getTimeZone());
|
GenerateDetail generateDetail = setGenerateDetail(generate.getId(), generateUrl, generatePrintDTO.getTimeZone());
|
||||||
@@ -718,7 +719,7 @@ public class CollectionElementServiceImpl extends ServiceImpl<CollectionElementM
|
|||||||
|
|
||||||
private List<CollectionElement> covertGeneratesToCollections(List<GenerateDetail> generateDetailList, Map<Long, CollectionSketchDTO> idToMap) {
|
private List<CollectionElement> covertGeneratesToCollections(List<GenerateDetail> generateDetailList, Map<Long, CollectionSketchDTO> idToMap) {
|
||||||
return CopyUtil.copyList(generateDetailList, CollectionElement.class, (o, d) -> {
|
return CopyUtil.copyList(generateDetailList, CollectionElement.class, (o, d) -> {
|
||||||
Generate byId = generateService.getById(o.getGenerateId());
|
Generate byId = generateMapper.selectById(o.getGenerateId());
|
||||||
d.setAccountId(byId.getAccountId());
|
d.setAccountId(byId.getAccountId());
|
||||||
d.setLevel1Type(byId.getLevel1Type());
|
d.setLevel1Type(byId.getLevel1Type());
|
||||||
d.setCreateDate(Date.from(o.getCreateDate().atZone(ZoneId.systemDefault()).toInstant()));
|
d.setCreateDate(Date.from(o.getCreateDate().atZone(ZoneId.systemDefault()).toInstant()));
|
||||||
@@ -741,7 +742,7 @@ public class CollectionElementServiceImpl extends ServiceImpl<CollectionElementM
|
|||||||
|
|
||||||
private List<CollectionElement> covertGeneratesToPrintCollections(List<GenerateDetail> generateDetailList, Map<Long, DesignCollectionPrintElementDTO> idToMap) {
|
private List<CollectionElement> covertGeneratesToPrintCollections(List<GenerateDetail> generateDetailList, Map<Long, DesignCollectionPrintElementDTO> idToMap) {
|
||||||
return CopyUtil.copyList(generateDetailList, CollectionElement.class, (o, d) -> {
|
return CopyUtil.copyList(generateDetailList, CollectionElement.class, (o, d) -> {
|
||||||
Generate byId = generateService.getById(o.getGenerateId());
|
Generate byId = generateMapper.selectById(o.getGenerateId());
|
||||||
d.setAccountId(byId.getAccountId());
|
d.setAccountId(byId.getAccountId());
|
||||||
d.setLevel1Type(byId.getLevel1Type());
|
d.setLevel1Type(byId.getLevel1Type());
|
||||||
if (!StringUtils.isEmpty(byId.getLevel2Type())) {
|
if (!StringUtils.isEmpty(byId.getLevel2Type())) {
|
||||||
|
|||||||
@@ -109,6 +109,22 @@ public class GenerateServiceImpl extends ServiceImpl<GenerateMapper, Generate> i
|
|||||||
private CloudTaskService cloudTaskService;
|
private CloudTaskService cloudTaskService;
|
||||||
@Resource
|
@Resource
|
||||||
private APIGenerateMapper apiGenerateMapper;
|
private APIGenerateMapper apiGenerateMapper;
|
||||||
|
@Resource
|
||||||
|
private CollectionSortMapper collectionSortMapper;
|
||||||
|
@Resource
|
||||||
|
private SysFileService sysFileService;
|
||||||
|
@Resource
|
||||||
|
private LibraryModelPointService libraryModelPointService;
|
||||||
|
@Resource
|
||||||
|
private PoseTransformationMapper poseTransformationMapper;
|
||||||
|
@Resource
|
||||||
|
private CloudTaskMapper cloudTaskMapper;
|
||||||
|
@Resource
|
||||||
|
private ToProductImageResultMapper toProductImageResultMapper;
|
||||||
|
@Resource
|
||||||
|
private AccountService accountService;
|
||||||
|
@Resource
|
||||||
|
private APIGenerateService apiGenerateService;
|
||||||
|
|
||||||
@Value("${redis.key.orderForGenerate}")
|
@Value("${redis.key.orderForGenerate}")
|
||||||
private String consumptionOrderKey;
|
private String consumptionOrderKey;
|
||||||
@@ -144,9 +160,6 @@ public class GenerateServiceImpl extends ServiceImpl<GenerateMapper, Generate> i
|
|||||||
private String FREEPIK_API_KEY;
|
private String FREEPIK_API_KEY;
|
||||||
|
|
||||||
|
|
||||||
@Resource
|
|
||||||
private AccountService accountService;
|
|
||||||
|
|
||||||
// 创建 Random 对象
|
// 创建 Random 对象
|
||||||
Random random = new Random();
|
Random random = new Random();
|
||||||
|
|
||||||
@@ -318,9 +331,6 @@ public class GenerateServiceImpl extends ServiceImpl<GenerateMapper, Generate> i
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Resource
|
|
||||||
private ToProductImageResultMapper toProductImageResultMapper;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void processToProductImageResult(String taskId, String url, String category) {
|
public void processToProductImageResult(String taskId, String url, String category) {
|
||||||
@@ -536,6 +546,7 @@ public class GenerateServiceImpl extends ServiceImpl<GenerateMapper, Generate> i
|
|||||||
generateDetailMapper.update(generateDetail, queryWrapper);
|
generateDetailMapper.update(generateDetail, queryWrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 避免循环注入,已移到libraryService中
|
||||||
public void updateLikeStatusBatch(List<Long> generateDetailIdList, Byte hasLike, Long libraryId, String timeZone) {
|
public void updateLikeStatusBatch(List<Long> generateDetailIdList, Byte hasLike, Long libraryId, String timeZone) {
|
||||||
QueryWrapper<GenerateDetail> queryWrapper = new QueryWrapper<>();
|
QueryWrapper<GenerateDetail> queryWrapper = new QueryWrapper<>();
|
||||||
queryWrapper.in("id", generateDetailIdList);
|
queryWrapper.in("id", generateDetailIdList);
|
||||||
@@ -548,6 +559,7 @@ public class GenerateServiceImpl extends ServiceImpl<GenerateMapper, Generate> i
|
|||||||
generateDetailMapper.update(generateDetail, queryWrapper);
|
generateDetailMapper.update(generateDetail, queryWrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 避免循环注入,已移到libraryService中
|
||||||
public List<GenerateDetail> selectBatchByLibraryId(List<Long> libraryId) {
|
public List<GenerateDetail> selectBatchByLibraryId(List<Long> libraryId) {
|
||||||
QueryWrapper<GenerateDetail> qw = new QueryWrapper<>();
|
QueryWrapper<GenerateDetail> qw = new QueryWrapper<>();
|
||||||
qw.in("library_id", libraryId);
|
qw.in("library_id", libraryId);
|
||||||
@@ -1112,11 +1124,8 @@ public class GenerateServiceImpl extends ServiceImpl<GenerateMapper, Generate> i
|
|||||||
return baseMapper.selectList(qw);
|
return baseMapper.selectList(qw);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Resource
|
|
||||||
private GenerateMapper generateMapper;
|
|
||||||
|
|
||||||
public List<Map<String, Object>> getCountByUserAndTime(String startTime, String endTime, List<Long> accountIdList) {
|
public List<Map<String, Object>> getCountByUserAndTime(String startTime, String endTime, List<Long> accountIdList) {
|
||||||
List<Map<String, Object>> byTypeAndTime = generateMapper.getByTypeAndTime(startTime, endTime, accountIdList);
|
List<Map<String, Object>> byTypeAndTime = baseMapper.getByTypeAndTime(startTime, endTime, accountIdList);
|
||||||
return byTypeAndTime;
|
return byTypeAndTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1470,7 +1479,7 @@ public class GenerateServiceImpl extends ServiceImpl<GenerateMapper, Generate> i
|
|||||||
taskId = animateAnyone(poseTransformDTO, accountId);
|
taskId = animateAnyone(poseTransformDTO, accountId);
|
||||||
if (!StringUtil.isNullOrEmpty(taskId)){
|
if (!StringUtil.isNullOrEmpty(taskId)){
|
||||||
isRequestSuccess = true;
|
isRequestSuccess = true;
|
||||||
addAPIGenerateRecordAsync(taskId, Module.poseTransfer.getValue(), "wx", "Pending");
|
apiGenerateService.addAPIGenerateRecordAsync(taskId, Module.poseTransfer.getValue(), "wx", "Pending");
|
||||||
}
|
}
|
||||||
poseTransformation.setModelName("wx");
|
poseTransformation.setModelName("wx");
|
||||||
} else {
|
} else {
|
||||||
@@ -1535,13 +1544,6 @@ public class GenerateServiceImpl extends ServiceImpl<GenerateMapper, Generate> i
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Resource
|
|
||||||
private PoseTransformationMapper poseTransformationMapper;
|
|
||||||
@Resource
|
|
||||||
private CloudTaskMapper cloudTaskMapper;
|
|
||||||
@Resource
|
|
||||||
private DesignService designService;
|
|
||||||
|
|
||||||
public void processPoseTransformResult(String taskId, String gifUrl, String videoUrl, String imageUrl) {
|
public void processPoseTransformResult(String taskId, String gifUrl, String videoUrl, String imageUrl) {
|
||||||
// 1、存储模型返回的数据
|
// 1、存储模型返回的数据
|
||||||
PoseTransformation poseTransformation;
|
PoseTransformation poseTransformation;
|
||||||
@@ -1816,12 +1818,6 @@ public class GenerateServiceImpl extends ServiceImpl<GenerateMapper, Generate> i
|
|||||||
return collectionSort;
|
return collectionSort;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Resource
|
|
||||||
private SysFileService sysFileService;
|
|
||||||
|
|
||||||
@Resource
|
|
||||||
private LibraryModelPointService libraryModelPointService;
|
|
||||||
|
|
||||||
public String modifyModelProportion(ModifyModelProportionDTO proportionDTO) {
|
public String modifyModelProportion(ModifyModelProportionDTO proportionDTO) {
|
||||||
log.info("modifyModelProportion params: {}", proportionDTO);
|
log.info("modifyModelProportion params: {}", proportionDTO);
|
||||||
String name;
|
String name;
|
||||||
@@ -2048,8 +2044,7 @@ public class GenerateServiceImpl extends ServiceImpl<GenerateMapper, Generate> i
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Resource
|
|
||||||
private CollectionSortMapper collectionSortMapper;
|
|
||||||
|
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void deleteGeneratedPose(Long projectId, Long id) {
|
public void deleteGeneratedPose(Long projectId, Long id) {
|
||||||
@@ -2455,7 +2450,7 @@ public class GenerateServiceImpl extends ServiceImpl<GenerateMapper, Generate> i
|
|||||||
String videoUrl = output.getStr("video_url");
|
String videoUrl = output.getStr("video_url");
|
||||||
String status = output.getStr("task_status");
|
String status = output.getStr("task_status");
|
||||||
|
|
||||||
updateTaskStatusAsync(taskId, status);
|
apiGenerateService.updateAPIGenerateStatusAsync(taskId, status);
|
||||||
|
|
||||||
PoseTransformationVO poseTransformationVO = new PoseTransformationVO();
|
PoseTransformationVO poseTransformationVO = new PoseTransformationVO();
|
||||||
switch (status) {
|
switch (status) {
|
||||||
@@ -2815,7 +2810,7 @@ public class GenerateServiceImpl extends ServiceImpl<GenerateMapper, Generate> i
|
|||||||
String key = RedisUtil.FLUX_POLLING_URL + taskId;
|
String key = RedisUtil.FLUX_POLLING_URL + taskId;
|
||||||
redisUtil.addToString(key, pollingUrl, CommonConstant.GENERATE_RESULT_EXPIRE_TIME);
|
redisUtil.addToString(key, pollingUrl, CommonConstant.GENERATE_RESULT_EXPIRE_TIME);
|
||||||
// 添加到api_generate表中,以便之后对结果查询做补偿
|
// 添加到api_generate表中,以便之后对结果查询做补偿
|
||||||
addAPIGenerateRecordAsync(taskId, func.getName(), "flux", "Pending");
|
apiGenerateService.addAPIGenerateRecordAsync(taskId, func.getName(), "flux", "Pending");
|
||||||
|
|
||||||
return taskId;
|
return taskId;
|
||||||
}
|
}
|
||||||
@@ -2843,7 +2838,7 @@ public class GenerateServiceImpl extends ServiceImpl<GenerateMapper, Generate> i
|
|||||||
String status = respObj.getStr("status");
|
String status = respObj.getStr("status");
|
||||||
|
|
||||||
// 异步更新状态
|
// 异步更新状态
|
||||||
updateTaskStatusAsync(taskId, status);
|
apiGenerateService.updateAPIGenerateStatusAsync(taskId, status);
|
||||||
|
|
||||||
// 处理不同状态
|
// 处理不同状态
|
||||||
switch (status) {
|
switch (status) {
|
||||||
@@ -2899,15 +2894,6 @@ public class GenerateServiceImpl extends ServiceImpl<GenerateMapper, Generate> i
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Async
|
|
||||||
public void updateTaskStatusAsync(String taskId, String status) {
|
|
||||||
try {
|
|
||||||
updateAPIGenerateStatusAsync(taskId, status);
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.error("更新任务状态失败, taskId: {}, status: {}", taskId, status, e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private GenerateResultVO getFluxResultAndSave(String taskId) {
|
private GenerateResultVO getFluxResultAndSave(String taskId) {
|
||||||
Generate generate = selectByUniqueId(taskId);
|
Generate generate = selectByUniqueId(taskId);
|
||||||
if (Objects.nonNull(generate)) {
|
if (Objects.nonNull(generate)) {
|
||||||
@@ -2967,43 +2953,5 @@ public class GenerateServiceImpl extends ServiceImpl<GenerateMapper, Generate> i
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Async
|
|
||||||
@Transactional
|
|
||||||
public void addAPIGenerateRecordAsync(String taskId, String function, String modelName, String status){
|
|
||||||
try {
|
|
||||||
log.info("异步执行添加");
|
|
||||||
if (!StringUtil.isNullOrEmpty(taskId) && !StringUtil.isNullOrEmpty(modelName)){
|
|
||||||
APIGenerate apiGenerate = new APIGenerate();
|
|
||||||
apiGenerate.setTaskId(taskId);
|
|
||||||
apiGenerate.setFunc(function);
|
|
||||||
apiGenerate.setModelName(modelName);
|
|
||||||
apiGenerate.setStatus(status);
|
|
||||||
apiGenerate.setRetry_count(0);
|
|
||||||
apiGenerate.setCreateTime(LocalDateTime.now());
|
|
||||||
apiGenerateMapper.insert(apiGenerate);
|
|
||||||
}
|
|
||||||
} catch (Exception e){
|
|
||||||
log.error(e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Async
|
|
||||||
@Transactional
|
|
||||||
public void updateAPIGenerateStatusAsync(String taskId, String status){
|
|
||||||
log.info("异步执行修改");
|
|
||||||
QueryWrapper<APIGenerate> qw = new QueryWrapper<>();
|
|
||||||
qw.lambda().eq(APIGenerate::getTaskId, taskId);
|
|
||||||
APIGenerate apiGenerate = apiGenerateMapper.selectOne(qw);
|
|
||||||
if (Objects.nonNull(apiGenerate)){
|
|
||||||
if (apiGenerate.getStatus().equals("Ready") || apiGenerate.getStatus().equals("SUCCEEDED")) {
|
|
||||||
log.warn("当前任务 {} 状态已达Success, 不做修改", taskId);
|
|
||||||
} else {
|
|
||||||
apiGenerate.setStatus(status);
|
|
||||||
apiGenerate.setUpdateTime(LocalDateTime.now());
|
|
||||||
apiGenerateMapper.updateById(apiGenerate);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
log.error("任务 {} 在api_generate表中找不到", taskId);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -78,8 +78,6 @@ public class LibraryServiceImpl extends ServiceImpl<LibraryMapper, Library> impl
|
|||||||
@Resource
|
@Resource
|
||||||
private ClassificationService classificationService;
|
private ClassificationService classificationService;
|
||||||
@Resource
|
@Resource
|
||||||
private GenerateService generateService;
|
|
||||||
@Resource
|
|
||||||
private MinioUtil minioUtil;
|
private MinioUtil minioUtil;
|
||||||
@Resource
|
@Resource
|
||||||
private AccountMapper accountMapper;
|
private AccountMapper accountMapper;
|
||||||
@@ -87,6 +85,16 @@ public class LibraryServiceImpl extends ServiceImpl<LibraryMapper, Library> impl
|
|||||||
private EductionLibraryMapper eductionLibraryMapper;
|
private EductionLibraryMapper eductionLibraryMapper;
|
||||||
@Resource
|
@Resource
|
||||||
private EnterpriseLibraryMapper enterpriseLibraryMapper;
|
private EnterpriseLibraryMapper enterpriseLibraryMapper;
|
||||||
|
@Resource
|
||||||
|
private LibraryCopyMapper libraryCopyMapper;
|
||||||
|
@Resource
|
||||||
|
private LibraryModelPointCopyMapper libraryModelPointCopyMapper;
|
||||||
|
@Resource
|
||||||
|
private PythonTAllInfoService pythonTAllInfoService;
|
||||||
|
@Resource
|
||||||
|
private BrandRelLibraryMapper brandRelLibraryMapper;
|
||||||
|
@Resource
|
||||||
|
private GenerateDetailMapper generateDetailMapper;
|
||||||
|
|
||||||
@Value("${minio.bucketName.users}")
|
@Value("${minio.bucketName.users}")
|
||||||
private String users;
|
private String users;
|
||||||
@@ -101,12 +109,6 @@ public class LibraryServiceImpl extends ServiceImpl<LibraryMapper, Library> impl
|
|||||||
@Value("${access.python.address}")
|
@Value("${access.python.address}")
|
||||||
private String fastApiPythonAddress;
|
private String fastApiPythonAddress;
|
||||||
|
|
||||||
@Resource
|
|
||||||
private PythonTAllInfoService pythonTAllInfoService;
|
|
||||||
|
|
||||||
@Resource
|
|
||||||
private BrandRelLibraryMapper brandRelLibraryMapper;
|
|
||||||
|
|
||||||
private static List<String> top = Arrays.asList(CollectionLevel2TypeEnum.DRESS.getRealName(),
|
private static List<String> top = Arrays.asList(CollectionLevel2TypeEnum.DRESS.getRealName(),
|
||||||
CollectionLevel2TypeEnum.OUTWEAR.getRealName(), CollectionLevel2TypeEnum.BLOUSE.getRealName());
|
CollectionLevel2TypeEnum.OUTWEAR.getRealName(), CollectionLevel2TypeEnum.BLOUSE.getRealName());
|
||||||
private static List<String> bottom = Arrays.asList(CollectionLevel2TypeEnum.SKIRT.getRealName(),
|
private static List<String> bottom = Arrays.asList(CollectionLevel2TypeEnum.SKIRT.getRealName(),
|
||||||
@@ -536,11 +538,11 @@ public class LibraryServiceImpl extends ServiceImpl<LibraryMapper, Library> impl
|
|||||||
libraryMapper.deleteBatchIds(deleteDTO.getLibraryIds());
|
libraryMapper.deleteBatchIds(deleteDTO.getLibraryIds());
|
||||||
|
|
||||||
// 1、确定该libraryId是否被generateDetail引用
|
// 1、确定该libraryId是否被generateDetail引用
|
||||||
List<GenerateDetail> generateDetails = generateService.selectBatchByLibraryId(deleteDTO.getLibraryIds());
|
List<GenerateDetail> generateDetails = selectBatchByLibraryId(deleteDTO.getLibraryIds());
|
||||||
|
|
||||||
// 2、有,则更新generateDetail表的is_like字段和library_id字段
|
// 2、有,则更新generateDetail表的is_like字段和library_id字段
|
||||||
if (!generateDetails.isEmpty()){
|
if (!generateDetails.isEmpty()){
|
||||||
generateService.updateLikeStatusBatch(
|
updateLikeStatusBatch(
|
||||||
generateDetails.stream().map(GenerateDetail::getId).collect(Collectors.toList()),
|
generateDetails.stream().map(GenerateDetail::getId).collect(Collectors.toList()),
|
||||||
(byte)0,
|
(byte)0,
|
||||||
0L,
|
0L,
|
||||||
@@ -556,6 +558,25 @@ public class LibraryServiceImpl extends ServiceImpl<LibraryMapper, Library> impl
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<GenerateDetail> selectBatchByLibraryId(List<Long> libraryId) {
|
||||||
|
QueryWrapper<GenerateDetail> qw = new QueryWrapper<>();
|
||||||
|
qw.in("library_id", libraryId);
|
||||||
|
|
||||||
|
return generateDetailMapper.selectList(qw);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void updateLikeStatusBatch(List<Long> generateDetailIdList, Byte hasLike, Long libraryId, String timeZone) {
|
||||||
|
QueryWrapper<GenerateDetail> queryWrapper = new QueryWrapper<>();
|
||||||
|
queryWrapper.in("id", generateDetailIdList);
|
||||||
|
|
||||||
|
GenerateDetail generateDetail = new GenerateDetail();
|
||||||
|
generateDetail.setIsLike(hasLike);
|
||||||
|
generateDetail.setLibraryId(libraryId);
|
||||||
|
generateDetail.setUpdateDate(DateUtil.getByTimeZone(timeZone));
|
||||||
|
|
||||||
|
generateDetailMapper.update(generateDetail, queryWrapper);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void deleteTrialData(Long userId) {
|
public void deleteTrialData(Long userId) {
|
||||||
QueryWrapper<Library> qw = new QueryWrapper<>();
|
QueryWrapper<Library> qw = new QueryWrapper<>();
|
||||||
@@ -563,10 +584,6 @@ public class LibraryServiceImpl extends ServiceImpl<LibraryMapper, Library> impl
|
|||||||
libraryMapper.delete(qw);
|
libraryMapper.delete(qw);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Resource
|
|
||||||
private LibraryCopyMapper libraryCopyMapper;
|
|
||||||
@Resource
|
|
||||||
private LibraryModelPointCopyMapper libraryModelPointCopyMapper;
|
|
||||||
@Override
|
@Override
|
||||||
public void moveLibraryDate() throws ParseException {
|
public void moveLibraryDate() throws ParseException {
|
||||||
QueryWrapper<LibraryCopy> qw = new QueryWrapper<>();
|
QueryWrapper<LibraryCopy> qw = new QueryWrapper<>();
|
||||||
|
|||||||
@@ -23,15 +23,12 @@ import java.util.stream.Collectors;
|
|||||||
@Slf4j
|
@Slf4j
|
||||||
@Service
|
@Service
|
||||||
public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> implements ProjectService {
|
public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> implements ProjectService {
|
||||||
@Resource
|
|
||||||
private ProjectMapper projectMapper;
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Set<Long> getChildProjectIdSet(Long projectId) {
|
public Set<Long> getChildProjectIdSet(Long projectId) {
|
||||||
QueryWrapper<Project> qw = new QueryWrapper<>();
|
QueryWrapper<Project> qw = new QueryWrapper<>();
|
||||||
// qw.lambda().eq(Project::getParentId, projectId);
|
// qw.lambda().eq(Project::getParentId, projectId);
|
||||||
List<Project> projectList = projectMapper.selectList(qw);
|
List<Project> projectList = baseMapper.selectList(qw);
|
||||||
if (CollectionUtil.isNotEmpty(projectList)) {
|
if (CollectionUtil.isNotEmpty(projectList)) {
|
||||||
return projectList.stream().map(Project::getId).collect(Collectors.toSet());
|
return projectList.stream().map(Project::getId).collect(Collectors.toSet());
|
||||||
}
|
}
|
||||||
@@ -42,7 +39,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|||||||
public List<Project> getByProjectNameLike(String projectName) {
|
public List<Project> getByProjectNameLike(String projectName) {
|
||||||
QueryWrapper<Project> qw = new QueryWrapper<>();
|
QueryWrapper<Project> qw = new QueryWrapper<>();
|
||||||
qw.lambda().like(Project::getName, projectName);
|
qw.lambda().like(Project::getName, projectName);
|
||||||
return projectMapper.selectList(qw);
|
return baseMapper.selectList(qw);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
|
|||||||
238
src/main/java/com/ai/da/service/impl/TrialOrderServiceImpl.java
Normal file
238
src/main/java/com/ai/da/service/impl/TrialOrderServiceImpl.java
Normal file
@@ -0,0 +1,238 @@
|
|||||||
|
package com.ai.da.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
|
import com.ai.da.common.config.exception.BusinessException;
|
||||||
|
import com.ai.da.common.context.UserContext;
|
||||||
|
import com.ai.da.common.response.ResultEnum;
|
||||||
|
import com.ai.da.common.utils.CopyUtil;
|
||||||
|
import com.ai.da.common.utils.RequestInfoUtil;
|
||||||
|
import com.ai.da.common.utils.SendEmailUtil;
|
||||||
|
import com.ai.da.mapper.primary.AccountMapper;
|
||||||
|
import com.ai.da.mapper.primary.TrialOrderMapper;
|
||||||
|
import com.ai.da.mapper.primary.entity.Account;
|
||||||
|
import com.ai.da.mapper.primary.entity.TrialOrder;
|
||||||
|
import com.ai.da.model.dto.AccountTrialDTO;
|
||||||
|
import com.ai.da.model.dto.TrialOrderDTO;
|
||||||
|
import com.ai.da.model.enums.AutoApproved;
|
||||||
|
import com.ai.da.model.enums.Language;
|
||||||
|
import com.ai.da.model.vo.AuthPrincipalVo;
|
||||||
|
import com.ai.da.service.LibraryService;
|
||||||
|
import com.ai.da.service.TrialOrderService;
|
||||||
|
import com.ai.da.service.UserLikeGroupService;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.time.*;
|
||||||
|
import java.time.temporal.ChronoUnit;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class TrialOrderServiceImpl extends ServiceImpl<TrialOrderMapper, TrialOrder> implements TrialOrderService {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private AccountMapper accountMapper;
|
||||||
|
@Resource
|
||||||
|
private LibraryService libraryService;
|
||||||
|
@Resource
|
||||||
|
private UserLikeGroupService userLikeGroupService;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Boolean addTrialUser(AccountTrialDTO accountTrialDTO, HttpServletRequest request) {
|
||||||
|
// 获取用户申请试用IP
|
||||||
|
String ipAddress = RequestInfoUtil.getIpAddress(request);
|
||||||
|
boolean link = false;
|
||||||
|
if (StringUtils.isNotBlank(accountTrialDTO.getRef())) {
|
||||||
|
link = true;
|
||||||
|
}
|
||||||
|
// 先检测试用订单
|
||||||
|
QueryWrapper<TrialOrder> trialOrderQueryWrapper = new QueryWrapper<>();
|
||||||
|
trialOrderQueryWrapper.eq("BINARY email", accountTrialDTO.getEmail());
|
||||||
|
// trialOrderQueryWrapper.lambda().eq(TrialOrder::getIp, ipAddress);
|
||||||
|
// trialOrderQueryWrapper.lambda().and(wrapper ->
|
||||||
|
// wrapper.eq(TrialOrder::getEmail, accountTrialDTO.getEmail())
|
||||||
|
// .or() // OR
|
||||||
|
// .like(TrialOrder::getUserName, accountTrialDTO.getUserName()));
|
||||||
|
List<TrialOrder> trialOrders = baseMapper.selectList(trialOrderQueryWrapper);
|
||||||
|
if (CollectionUtil.isNotEmpty(trialOrders)) {
|
||||||
|
TrialOrder trialOrder = trialOrders.get(0);
|
||||||
|
if (trialOrder.getStatus() == 1) {
|
||||||
|
throw new BusinessException("You have submitted a trial application, please wait for approval.");
|
||||||
|
}else {
|
||||||
|
throw new BusinessException("You have already been approved for a trial, please do not apply for the trial again");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 先检测用户名和邮箱
|
||||||
|
QueryWrapper<Account> qw = new QueryWrapper<>();
|
||||||
|
qw.eq("BINARY user_email", accountTrialDTO.getEmail());
|
||||||
|
List<Account> accountList = accountMapper.selectList(qw);
|
||||||
|
if (CollectionUtil.isNotEmpty(accountList) && !accountList.get(0).getSystemUser().equals(0)) {
|
||||||
|
if (accountList.get(0).getIsTrial() == 1) {
|
||||||
|
throw new BusinessException("The email has already been registered", ResultEnum.PROMPT.getCode());
|
||||||
|
} else {
|
||||||
|
Account account = accountList.get(0);
|
||||||
|
if (null == account.getValidEndTime() || account.getValidEndTime() > System.currentTimeMillis()) {
|
||||||
|
throw new BusinessException("The email has already been registered", ResultEnum.PROMPT.getCode());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 接收到数据后要形成一条使用订单信息
|
||||||
|
TrialOrder trialOrder = CopyUtil.copyObject(accountTrialDTO, TrialOrder.class);
|
||||||
|
trialOrder.setCreateTime(LocalDateTime.now());
|
||||||
|
trialOrder.setStatus(0);
|
||||||
|
trialOrder.setIp(ipAddress);
|
||||||
|
baseMapper.insert(trialOrder);
|
||||||
|
// SendEmailUtil.sendCustomEmail("1023316923@qq.com", null, trialOrder,1);
|
||||||
|
// SendEmailUtil.sendCustomEmail("calvinwong@aidlab.hk", null, trialOrder,1);
|
||||||
|
// SendEmailUtil.sendCustomEmail("kaicpang.pang@connect.polyu.hk", null, trialOrder,1);
|
||||||
|
// 判断当前的试用订单是否自动批准
|
||||||
|
if (AutoApproved.getStatus()) {
|
||||||
|
// 改变试用订单状态,新增试用用户
|
||||||
|
trialOrder.setStatus(1);
|
||||||
|
trialOrder.setUpdateTime(LocalDateTime.now());
|
||||||
|
baseMapper.updateById(trialOrder);
|
||||||
|
Account account = new Account();
|
||||||
|
if (CollectionUtil.isNotEmpty(accountList)) {
|
||||||
|
account = CopyUtil.copyObject(accountList.get(0), Account.class);
|
||||||
|
account.setIsTrial(1);
|
||||||
|
account.setIsBeginner(1);
|
||||||
|
account.setSystemUser(3);
|
||||||
|
account.setValidStartTime(System.currentTimeMillis());
|
||||||
|
account.setCountry(accountTrialDTO.getCountry());
|
||||||
|
if (link) {
|
||||||
|
account.setValidEndTime(toDayEnd(Instant.now().plus(5, ChronoUnit.DAYS).toEpochMilli()));
|
||||||
|
} else {
|
||||||
|
account.setValidEndTime(toDayEnd(Instant.now().plus(5, ChronoUnit.DAYS).toEpochMilli()));
|
||||||
|
}
|
||||||
|
account.setCredits(BigDecimal.valueOf(100));
|
||||||
|
accountMapper.updateById(account);
|
||||||
|
} else {
|
||||||
|
account.setUserName(trialOrder.getUserName());
|
||||||
|
account.setUserPassword("Third-000000");
|
||||||
|
account.setUserEmail(trialOrder.getEmail());
|
||||||
|
account.setLanguage(Language.ENGLISH.name());
|
||||||
|
account.setCountry(accountTrialDTO.getCountry());
|
||||||
|
account.setValidStartTime(System.currentTimeMillis());
|
||||||
|
if (link) {
|
||||||
|
account.setValidEndTime(toDayEnd(Instant.now().plus(5, ChronoUnit.DAYS).toEpochMilli()));
|
||||||
|
} else {
|
||||||
|
account.setValidEndTime(toDayEnd(Instant.now().plus(5, ChronoUnit.DAYS).toEpochMilli()));
|
||||||
|
}
|
||||||
|
account.setCreateDate(new Date());
|
||||||
|
account.setIsTrial(1);
|
||||||
|
account.setIsBeginner(1);
|
||||||
|
account.setSystemUser(3);
|
||||||
|
account.setCredits(BigDecimal.valueOf(100));
|
||||||
|
accountMapper.insert(account);
|
||||||
|
}
|
||||||
|
// 发送邮件提醒用户试用用户已创建
|
||||||
|
// SendEmailUtil.sendCustomEmail("1023316923@qq.com", null, trialOrder,2);
|
||||||
|
// SendEmailUtil.sendCustomEmail("calvinwong@aidlab.hk", null, trialOrder,2);
|
||||||
|
// SendEmailUtil.sendCustomEmail("kaicpang.pang@connect.polyu.hk", null, trialOrder,2);
|
||||||
|
if (trialOrder.getCountry().equals("China")) {
|
||||||
|
SendEmailUtil.sendCustomEmail(account.getUserEmail(), null, trialOrder, 3, trialOrder.getCountry(), link);
|
||||||
|
} else {
|
||||||
|
SendEmailUtil.sendCustomEmail(account.getUserEmail(), null, trialOrder, 3, trialOrder.getCountry(), link);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return Boolean.TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 将指定unix时间置为当天的23:59:59
|
||||||
|
public long toDayEnd(long unixTimestampMillis){
|
||||||
|
// 将UNIX时间戳转换为LocalDateTime对象
|
||||||
|
LocalDateTime dateTime = Instant.ofEpochMilli(unixTimestampMillis)
|
||||||
|
.atZone(ZoneId.systemDefault())
|
||||||
|
.toLocalDateTime();
|
||||||
|
|
||||||
|
// 获取日期部分并设置时间为23:59:59
|
||||||
|
LocalDate date = dateTime.toLocalDate();
|
||||||
|
LocalDateTime endOfDay = date.atTime(LocalTime.of(23, 59, 59));
|
||||||
|
|
||||||
|
// 将LocalDateTime对象转换为UNIX时间戳(以毫秒为单位) 北京时间
|
||||||
|
return endOfDay.toInstant(ZoneOffset.ofHours(8)).toEpochMilli();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IPage<TrialOrder> trialOrderList(TrialOrderDTO trialOrderDTO) {
|
||||||
|
QueryWrapper<TrialOrder> qw = new QueryWrapper<>();
|
||||||
|
qw.lambda().eq(trialOrderDTO.getStatus() != null, TrialOrder::getStatus, trialOrderDTO.getStatus());
|
||||||
|
return baseMapper.selectPage(new Page<>(trialOrderDTO.getPage(), trialOrderDTO.getSize()), qw);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Boolean trialOrderApproval(List<Long> ids) {
|
||||||
|
for (Long id : ids) {
|
||||||
|
TrialOrder trialOrder = baseMapper.selectById(id);
|
||||||
|
trialOrder.setStatus(1);
|
||||||
|
trialOrder.setUpdateTime(LocalDateTime.now());
|
||||||
|
baseMapper.updateById(trialOrder);
|
||||||
|
|
||||||
|
QueryWrapper<Account> qw = new QueryWrapper<>();
|
||||||
|
qw.eq("BINARY user_email", trialOrder.getEmail());
|
||||||
|
List<Account> accountList = accountMapper.selectList(qw);
|
||||||
|
|
||||||
|
Account account = new Account();
|
||||||
|
if (CollectionUtil.isNotEmpty(accountList)) {
|
||||||
|
account = CopyUtil.copyObject(accountList.get(0), Account.class);
|
||||||
|
account.setIsTrial(1);
|
||||||
|
account.setIsBeginner(1);
|
||||||
|
account.setValidStartTime(System.currentTimeMillis());
|
||||||
|
account.setValidEndTime(toDayEnd(Instant.now().plus(5, ChronoUnit.DAYS).toEpochMilli()));
|
||||||
|
accountMapper.updateById(account);
|
||||||
|
} else {
|
||||||
|
account.setUserName(trialOrder.getUserName());
|
||||||
|
account.setUserPassword("Third-000000");
|
||||||
|
account.setUserEmail(trialOrder.getEmail());
|
||||||
|
account.setLanguage(Language.ENGLISH.name());
|
||||||
|
account.setValidStartTime(System.currentTimeMillis());
|
||||||
|
account.setValidEndTime(toDayEnd(Instant.now().plus(5, ChronoUnit.DAYS).toEpochMilli()));
|
||||||
|
account.setCreateDate(new Date());
|
||||||
|
account.setIsTrial(1);
|
||||||
|
account.setIsBeginner(1);
|
||||||
|
account.setSystemUser(1);
|
||||||
|
accountMapper.insert(account);
|
||||||
|
}
|
||||||
|
// 发送邮件提醒用户试用用户已创建
|
||||||
|
// SendEmailUtil.sendCustomEmail("1023316923@qq.com", null, trialOrder,2, trialOrder.getCountry());
|
||||||
|
// SendEmailUtil.sendCustomEmail("calvinwong@aidlab.hk", null, trialOrder,2, trialOrder.getCountry());
|
||||||
|
// SendEmailUtil.sendCustomEmail("kaicpang.pang@connect.polyu.hk", null, trialOrder,2, trialOrder.getCountry());
|
||||||
|
if (trialOrder.getCountry().equals("China")) {
|
||||||
|
SendEmailUtil.sendCustomEmail(account.getUserEmail(), null, trialOrder, 3, trialOrder.getCountry(), false);
|
||||||
|
} else {
|
||||||
|
SendEmailUtil.sendCustomEmail(account.getUserEmail(), null, trialOrder, 3, trialOrder.getCountry(), false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return Boolean.TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Boolean trialOrderRefuse(List<Long> ids) {
|
||||||
|
for (Long id : ids) {
|
||||||
|
TrialOrder trialOrder = baseMapper.selectById(id);
|
||||||
|
trialOrder.setStatus(2);
|
||||||
|
trialOrder.setUpdateTime(LocalDateTime.now());
|
||||||
|
baseMapper.updateById(trialOrder);
|
||||||
|
}
|
||||||
|
return Boolean.TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Boolean trialUserLogout() {
|
||||||
|
AuthPrincipalVo userInfo = UserContext.getUserHolder();
|
||||||
|
Account account = accountMapper.selectById(userInfo.getId());
|
||||||
|
if (account.getIsTrial() != 1) {
|
||||||
|
throw new BusinessException("用户为正式用户");
|
||||||
|
}
|
||||||
|
libraryService.deleteTrialData(userInfo.getId());
|
||||||
|
userLikeGroupService.deleteTrialData(userInfo.getId());
|
||||||
|
return Boolean.TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -72,16 +72,12 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
|
|||||||
private CollectionService collectionService;
|
private CollectionService collectionService;
|
||||||
@Resource
|
@Resource
|
||||||
private UserLikeService userLikeService;
|
private UserLikeService userLikeService;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private WorkspaceService workspaceService;
|
private WorkspaceService workspaceService;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private UserLikeMapper userLikeMapper;
|
private UserLikeMapper userLikeMapper;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private MinioUtil minioUtil;
|
private MinioUtil minioUtil;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private TDesignPythonOutfitMapper designPythonOutfitMapper;
|
private TDesignPythonOutfitMapper designPythonOutfitMapper;
|
||||||
@Resource
|
@Resource
|
||||||
@@ -139,6 +135,24 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
|
|||||||
private CollectionElementRelModelMapper collectionElementRelModelMapper;
|
private CollectionElementRelModelMapper collectionElementRelModelMapper;
|
||||||
@Resource
|
@Resource
|
||||||
private CollectionSortService collectionSortService;
|
private CollectionSortService collectionSortService;
|
||||||
|
@Resource
|
||||||
|
private GenerateService generateService;
|
||||||
|
@Resource
|
||||||
|
private ToProductElementMapper toProductElementMapper;
|
||||||
|
@Resource
|
||||||
|
private ToProductImageRecordMapper toProductImageRecordMapper;
|
||||||
|
@Resource
|
||||||
|
private ToProductImageResultMapper toProductImageResultMapper;
|
||||||
|
@Resource
|
||||||
|
private CloudTaskMapper cloudTaskMapper;
|
||||||
|
@Resource
|
||||||
|
private PythonService pythonService;
|
||||||
|
@Resource
|
||||||
|
private CreditsService creditsService;
|
||||||
|
@Resource
|
||||||
|
private PoseTransformationMapper poseTransformationMapper;
|
||||||
|
@Resource
|
||||||
|
private ExportFileMapper exportFileMapper;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void deleteUserGroup(Long userGroupId) {
|
public void deleteUserGroup(Long userGroupId) {
|
||||||
@@ -337,9 +351,6 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
|
|||||||
baseMapper.update(null,uw);
|
baseMapper.update(null,uw);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Resource
|
|
||||||
private ExportFileMapper exportFileMapper;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Boolean exportSave(MultipartFile file, Long projectId, String module) {
|
public Boolean exportSave(MultipartFile file, Long projectId, String module) {
|
||||||
AuthPrincipalVo userHolder = UserContext.getUserHolder();
|
AuthPrincipalVo userHolder = UserContext.getUserHolder();
|
||||||
@@ -362,19 +373,6 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
|
|||||||
return Boolean.TRUE;
|
return Boolean.TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Resource
|
|
||||||
private ToProductImageRecordMapper toProductImageRecordMapper;
|
|
||||||
@Resource
|
|
||||||
private ToProductImageResultMapper toProductImageResultMapper;
|
|
||||||
@Resource
|
|
||||||
private CloudTaskMapper cloudTaskMapper;
|
|
||||||
|
|
||||||
@Resource
|
|
||||||
private PythonService pythonService;
|
|
||||||
@Resource
|
|
||||||
private CreditsService creditsService;
|
|
||||||
@Resource
|
|
||||||
private PoseTransformationMapper poseTransformationMapper;
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public List<ToProductImageResultVO> toProduct(ToProductImageDTO toProductImageDTO) {
|
public List<ToProductImageResultVO> toProduct(ToProductImageDTO toProductImageDTO) {
|
||||||
@@ -645,9 +643,6 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Resource
|
|
||||||
private ToProductElementMapper toProductElementMapper;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public ToProductElementVO toProductImageElementUpload(MultipartFile file, Long projectId) {
|
public ToProductElementVO toProductImageElementUpload(MultipartFile file, Long projectId) {
|
||||||
@@ -1779,8 +1774,7 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
|
|||||||
return convert;
|
return convert;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Resource
|
|
||||||
private GenerateService generateService;
|
|
||||||
@Override
|
@Override
|
||||||
public ModuleChooseVO getModuleContent(ProjectDTO projectDTO) {
|
public ModuleChooseVO getModuleContent(ProjectDTO projectDTO) {
|
||||||
ModuleChooseVO moduleChooseVO = new ModuleChooseVO();
|
ModuleChooseVO moduleChooseVO = new ModuleChooseVO();
|
||||||
|
|||||||
Reference in New Issue
Block a user