This commit is contained in:
2025-09-02 20:09:37 +08:00
parent feca192f53
commit a59acb0903
21 changed files with 140 additions and 50 deletions

View File

@@ -31,6 +31,8 @@ public interface CreditsService extends IService<CreditsDetail> {
void addRecordToCreditsDeduction(Long accountId, String taskId, CreditsEventsEnum creditsEventsEnum, Integer num);
void deleteCreditsDeduction(Long accountId, String taskId);
Boolean taskCreditsDeduction(Long accountId, String taskId);
CreditsDetail getByAccountIdAndChangeEvent(Long accountId, String changeEvent, String changedCredits);

View File

@@ -1266,12 +1266,12 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
static {
HikariConfig config = new HikariConfig();
// config.setJdbcUrl("jdbc:mysql://code-create.com.hk:3306/db1nfvsgmjp3b8");
// config.setUsername("uafqtz4gsvfrw");
// config.setPassword("aida123456.");
config.setJdbcUrl("jdbc:mysql://localhost:3306/code-create-local?serverTimezone=UTC");
config.setUsername("root");
config.setPassword("root");
config.setJdbcUrl("jdbc:mysql://code-create.com.hk:3306/db1nfvsgmjp3b8");
config.setUsername("uafqtz4gsvfrw");
config.setPassword("aida123456.");
// config.setJdbcUrl("jdbc:mysql://localhost:3306/code-create-local?serverTimezone=UTC");
// config.setUsername("root");
// config.setPassword("root");
config.addDataSourceProperty("cachePrepStmts", "true");
config.addDataSourceProperty("prepStmtCacheSize", "250");
config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048");

View File

@@ -82,7 +82,7 @@ public class AffiliateServiceImpl extends ServiceImpl<AffiliateMapper, Affiliate
// 邮件通知审批者
String merchantEmail = "kimwong@code-create.com.hk";
String developer = "xupei3360@163.com";
String[] receiverEmail = {/*merchantEmail, */developer};
String[] receiverEmail = {merchantEmail, developer};
SendEmailUtil.affiliateEmailReminder(receiverEmail, new AffiliateEmailParamsDTO(userHolder.getUsername(), promotionMethod), "new");
// emailService.affiliateEmailReminder(Arrays.asList(/*merchantEmail,*/ developer), new AffiliateEmailParamsDTO(userHolder.getUsername(), promotionMethod), "new");
}else {
@@ -387,7 +387,7 @@ public class AffiliateServiceImpl extends ServiceImpl<AffiliateMapper, Affiliate
String merchantEmail = "kimwong@code-create.com.hk";
String developer = "xupei3360@163.com";
String[] receiverEmail = {/*merchantEmail,*/ developer};
String[] receiverEmail = {merchantEmail, developer};
// 邮件通知
SendEmailUtil.affiliateEmailReminder(receiverEmail, affiliateEmailParamsDTO, "summary");
// emailService.affiliateEmailReminder(Arrays.asList(/*merchantEmail,*/ developer), affiliateEmailParamsDTO, "summary");

View File

@@ -235,6 +235,12 @@ public class CreditsServiceImpl extends ServiceImpl<CreditsDetailMapper, Credits
redisUtil.addToString(creditsDeduction + ":" + accountId + ":" + taskId, String.valueOf(Long.parseLong(creditsEventsEnum.getValue()) * num), CommonConstant.CREDITS_EXPIRE_TIME);
}
@Override
public void deleteCreditsDeduction(Long accountId, String taskId) {
// 5、添加当前任务的预扣积分到redis 任务有效期一天,若待扣积分两天还没被移除,说明任务已经失败,待扣积分自动失效
redisUtil.removeFromString(creditsDeduction + ":" + accountId + ":" + taskId);
}
/**
* 执行扣除积分,更新数据库
*/

View File

@@ -958,7 +958,7 @@ public class DesignItemServiceImpl extends ServiceImpl<DesignItemMapper, DesignI
// 对印花类型为Generate的图片路径进行特殊处理
private void setUriToMinioPath(DesignSinglePrint print){
if (print.getDesignType().equals("Generate")){
if (!StringUtil.isNullOrEmpty(print.getDesignType()) && print.getDesignType().equals("Generate")){
if (!StringUtil.isNullOrEmpty(print.getPath())){
try {
URI uri = new URI(print.getPath());

View File

@@ -2,6 +2,7 @@ package com.ai.da.service.impl;
import com.ai.da.common.RabbitMQ.MQPublisher;
import com.ai.da.common.config.exception.BusinessException;
import com.ai.da.common.constant.CommonConstant;
import com.ai.da.common.response.ResultEnum;
import com.ai.da.common.utils.DateUtil;
import com.ai.da.common.utils.MailUtil;
@@ -178,7 +179,8 @@ public class EmailServiceImpl implements EmailService {
EmailLog emailLog = new EmailLog();
emailLog.setTemplateId(emailTemplate.getId());
if (Objects.nonNull(jsonObject)) emailLog.setParameter(jsonObject.toString());
emailLog.setSender("info@aida.com.hk");
// emailLog.setSender("info@aida.com.hk");
emailLog.setSender(CommonConstant.senderEmail);
emailLog.setRecipients(mailTo.toString());
emailLog.setSubject(title);
emailLog.setCreateTime(LocalDateTime.now());
@@ -584,7 +586,7 @@ public class EmailServiceImpl implements EmailService {
try {
String merchantEmail = "kimwong@code-create.com.hk";
String developer = "xupei3360@163.com";
List<String> merchantReceiver = Arrays.asList(/*merchantEmail, */developer);
List<String> merchantReceiver = Arrays.asList(merchantEmail, developer);
String merchantSubject = null;
String merchantTemplate = null;
@@ -704,7 +706,7 @@ public class EmailServiceImpl implements EmailService {
jsonObject.put("quantity", quantity);
jsonObject.put("totalFee", amount);
sendEmail(Arrays.asList(/*merchantEmail,*/developerEmail), jsonObject, CREDITS_PURCHASE_MERCHANT, "New Credit Purchase Order", null, null);
sendEmail(Arrays.asList(merchantEmail,developerEmail), jsonObject, CREDITS_PURCHASE_MERCHANT, "New Credit Purchase Order", null, null);
}
private final static String COMMON_EXCEPTION_REMINDER = "135279_common-exception-reminder.html";

View File

@@ -635,6 +635,9 @@ public class GenerateServiceImpl extends ServiceImpl<GenerateMapper, Generate> i
* 处理wx模型生成
*/
private PrepareForGenerateVO handleWxModelGeneration(GenerateThroughImageTextDTO generateDTO) {
// 校验积分是否足够
validateCredits(CreditsEventsEnum.WX_TEXT2IMG);
// 创建生成任务
String taskId = createAsyncTask(generateDTO);
processCreditDeduction(generateDTO.getUserId(), taskId, CreditsEventsEnum.WX_TEXT2IMG);
return new PrepareForGenerateVO(Collections.singletonList(taskId), 200);
@@ -653,6 +656,9 @@ public class GenerateServiceImpl extends ServiceImpl<GenerateMapper, Generate> i
* 处理flux pattern生成
*/
private PrepareForGenerateVO handleFluxPatternGeneration(GenerateThroughImageTextDTO generateDTO) {
// 校验积分是否足够
validateCredits(CreditsEventsEnum.FLUX_IMG2IMG);
// 获取图片路径
String imagePath = getImagePathForFlux(generateDTO);
@@ -2507,6 +2513,7 @@ public class GenerateServiceImpl extends ServiceImpl<GenerateMapper, Generate> i
} else {
throw new BusinessException("unknown motion task");
}
Long accountId = poseTransformation.getAccountId();
PoseTransformationVO poseTransformationVO = new PoseTransformationVO();
WangXiangTaskStatusEnum statusEnum = WangXiangTaskStatusEnum.fromName(status);
switch (statusEnum) {
@@ -2528,7 +2535,6 @@ public class GenerateServiceImpl extends ServiceImpl<GenerateMapper, Generate> i
poseTransformationVO.setFirstFrameUrl(minioUtil.getPreSignedUrl(poseTransformation.getFirstFrameUrl(), CommonConstant.MINIO_IMAGE_EXPIRE_TIME));
}
// 执行积分扣除
Long accountId = poseTransformation.getAccountId();
Boolean flag = creditsService.taskCreditsDeduction(accountId, taskId);
if (flag) creditsService.updateChangedCredits(String.valueOf(accountId), taskId);
@@ -2539,11 +2545,15 @@ public class GenerateServiceImpl extends ServiceImpl<GenerateMapper, Generate> i
case FAILED:
AccessLimitUtils.validateOut("animation");
updatePoseTransferStatus(taskId, "Fail", poseTransformation);
// 将积分暂扣区的积分移除
creditsService.deleteCreditsDeduction(accountId, taskId);
throw new BusinessException(output.getStr("message"), ResultEnum.PROMPT.getCode());
case UNKNOWN_W:
AccessLimitUtils.validateOut("animation");
poseTransformationVO.setStatus("Fail");
updatePoseTransferStatus(taskId, "Fail", poseTransformation);
// 将积分暂扣区的积分移除
creditsService.deleteCreditsDeduction(accountId, taskId);
break;
case RUNNING:
case PENDING_W:
@@ -2555,6 +2565,8 @@ public class GenerateServiceImpl extends ServiceImpl<GenerateMapper, Generate> i
log.info("未知状态: {}", status);
poseTransformationVO.setStatus("Fail");
updatePoseTransferStatus(taskId, "Fail", poseTransformation);
// 将积分暂扣区的积分移除
creditsService.deleteCreditsDeduction(accountId, taskId);
}
poseTransformationVO.setTaskId(taskId);
@@ -2968,9 +2980,14 @@ public class GenerateServiceImpl extends ServiceImpl<GenerateMapper, Generate> i
String fluxResult = getFluxResult(taskId, objectName);
if (Objects.isNull(generateDetail)) {
if (StringUtil.isNullOrEmpty(fluxResult)) {
// 将积分暂扣区的积分移除
creditsService.deleteCreditsDeduction(accountId, taskId);
return new GenerateResultVO(taskId, "Fail");
} else if (fluxResult.equals("Fail") || fluxResult.equals("Pending")) {
String status = fluxResult.equals("Fail") ? "Fail" : "Executing";
if (status.equals("Fail")){
creditsService.deleteCreditsDeduction(accountId, taskId);
}
return new GenerateResultVO(taskId, status);
}
generateDetail = new GenerateDetail(generate.getId(), fluxResult,

View File

@@ -13,6 +13,7 @@ import com.ai.da.mapper.primary.*;
import com.ai.da.mapper.primary.entity.*;
import com.ai.da.mapper.primary.entity.Collection;
import com.ai.da.model.dto.*;
import com.ai.da.model.enums.DesignProcess;
import com.ai.da.model.enums.Position;
import com.ai.da.model.enums.Sex;
import com.ai.da.model.vo.*;
@@ -699,12 +700,15 @@ public class PortfolioServiceImpl extends ServiceImpl<PortfolioMapper, Portfolio
if (workspace.getPosition().equals(Position.OVERALL.getValue())) {
design.setSingleOverall("overall");
design.setSwitchCategory("");
project.setProcess(DesignProcess.SERIES_DESIGN.name());
} else {
design.setSingleOverall("single");
design.setSwitchCategory(workspace.getPosition());
project.setProcess(DesignProcess.SINGLE_DESIGN.name());
}
design.setCreateDate(new Date());
designMapper.insert(design);
projectMapper.updateById(project);
for (CollectionElement element : collectionElementListOld) {
element.setCollectionId(collectionIdNew);

View File

@@ -771,6 +771,10 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
Boolean flag = creditsService.taskCreditsDeduction(project.getAccountId(), taskId);
if (flag) creditsService.updateChangedCredits(String.valueOf(project.getAccountId()), taskId);
}
// 将积分暂扣区的积分移除
if (toProductImageResult.getStatus().equals("Fail")){
creditsService.deleteCreditsDeduction(project.getAccountId(), taskId);
}
// 在这个stream中不再继续往后执行
return;
}
@@ -1287,6 +1291,11 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
Boolean flag = creditsService.taskCreditsDeduction(project.getAccountId(), taskId);
if (flag) creditsService.updateChangedCredits(String.valueOf(project.getAccountId()), taskId);
}
// 将积分暂扣区的积分移除
if (toProductImageResult.getStatus().equals("Fail")){
creditsService.deleteCreditsDeduction(project.getAccountId(), taskId);
}
return;
}