diff --git a/src/main/java/com/ai/da/common/config/MyTaskScheduler.java b/src/main/java/com/ai/da/common/config/MyTaskScheduler.java index 84f7d1ee..be6bd63b 100644 --- a/src/main/java/com/ai/da/common/config/MyTaskScheduler.java +++ b/src/main/java/com/ai/da/common/config/MyTaskScheduler.java @@ -202,7 +202,7 @@ public class MyTaskScheduler { } } - @Scheduled(cron = "0 0 9 * * ?") +// @Scheduled(cron = "0 0 9 * * ?") public void sendTrialOrderExcelToManagements() { // 获取前一天日期 LocalDate yesterday = LocalDate.now().minusDays(1); diff --git a/src/main/java/com/ai/da/common/task/AccountTask.java b/src/main/java/com/ai/da/common/task/AccountTask.java index ab01dada..ee573eaa 100644 --- a/src/main/java/com/ai/da/common/task/AccountTask.java +++ b/src/main/java/com/ai/da/common/task/AccountTask.java @@ -34,14 +34,14 @@ public class AccountTask { accountService.refreshCreditsMonthly(); } - @Scheduled(cron = "0 */5 * * * *") // Run every 5 minutes +// @Scheduled(cron = "0 */5 * * * *") // Run every 5 minutes public void getPaidUser() { // 获取code-create 表中 指定日期之后 订单状态为wc-processing的订单 accountService.extendValidityForCC(); } - // 每天凌晨0点执行一次 - @Scheduled(cron = "0 0 0 * * ?") + // 每天凌晨0点执行一次 目前已没有角色类型为4的用户 + /*@Scheduled(cron = "0 0 0 * * ?") public void cancelActivityBenefits() { // 1、查询当前所有参与了活动且过期的用户 List accountList = accountService.getExpiredUserBySystemUser(4); @@ -51,7 +51,7 @@ public class AccountTask { log.info("参与活动的用户{} : {} 于 {} 账号有效期到期,置为游客", account.getId(), account.getUserEmail(), account.getValidEndTime()); accountService.toVisitor(account); } - } + }*/ // 每天检测正式用户到期情况,每天凌晨0点执行 @Scheduled(cron = "0 0 0 * * ?") diff --git a/src/main/java/com/ai/da/common/task/PaymentTask.java b/src/main/java/com/ai/da/common/task/PaymentTask.java index 4c4d3828..0e5efb03 100644 --- a/src/main/java/com/ai/da/common/task/PaymentTask.java +++ b/src/main/java/com/ai/da/common/task/PaymentTask.java @@ -45,7 +45,7 @@ public class PaymentTask { @Resource private PayPalCheckoutService payPalCheckoutService; - @Scheduled(cron = "0/30 * * * * ?") +// @Scheduled(cron = "0/30 * * * * ?") public void orderConfirmForPaypal() throws SerializeException { // log.info("PayPal orderConfirm 被执行......"); @@ -109,7 +109,7 @@ public class PaymentTask { affiliateService.syncLinkViewCountToDB(); } - @Scheduled(cron = "0 0 8 28-31 * ?") +// @Scheduled(cron = "0 0 8 28-31 * ?") public void commissionSummaryReminder(){ // 每个月末的最后一天的早上八点执行 LocalDate today = LocalDate.now(); diff --git a/src/main/java/com/ai/da/common/task/SubscriptionReminderTask.java b/src/main/java/com/ai/da/common/task/SubscriptionReminderTask.java index 07af58db..0c6ada03 100644 --- a/src/main/java/com/ai/da/common/task/SubscriptionReminderTask.java +++ b/src/main/java/com/ai/da/common/task/SubscriptionReminderTask.java @@ -40,7 +40,7 @@ public class SubscriptionReminderTask { REMINDER_DAYS_CONFIG.put("year", 14); } - @Scheduled(cron = "0 0 9 * * ?") +// @Scheduled(cron = "0 0 9 * * ?") public void subscriptionReminder() { // 获取所有需要通知的订阅 List subscriptionInfos = getDueSubscriptions(); @@ -97,7 +97,7 @@ public class SubscriptionReminderTask { return subscriptionInfoMapper.selectList(qw); } - @Scheduled(cron = "0 0 9 * * ?") +// @Scheduled(cron = "0 0 9 * * ?") public void trialReminder() { // 今天的 00:00:00 和 23:59:59 LocalDateTime startOfDay = LocalDateTime.now().toLocalDate().atStartOfDay(); diff --git a/src/main/java/com/ai/da/common/utils/SendEmailUtil.java b/src/main/java/com/ai/da/common/utils/SendEmailUtil.java index dcdeb4bd..2d7a9e74 100644 --- a/src/main/java/com/ai/da/common/utils/SendEmailUtil.java +++ b/src/main/java/com/ai/da/common/utils/SendEmailUtil.java @@ -767,7 +767,7 @@ public class SendEmailUtil { try { String merchantEmail = "kimwong@code-create.com.hk"; String developer = "xupei3360@163.com"; - String[] receiverEmail = {merchantEmail, developer}; + String[] receiverEmail = {/*merchantEmail,*/ developer}; Credential cred = new Credential(SECRET_ID, SECRET_KEy); // 实例化一个http选项,可选的,没有特殊需求可以跳过 HttpProfile httpProfile = new HttpProfile(); @@ -968,7 +968,7 @@ public class SendEmailUtil { req.setFromEmailAddress(SEND_ADDRESS); String merchantEmail = "kimwong@code-create.com.hk"; String developerEmail = "xupei@code-create.com.hk"; - req.setDestination(new String[]{merchantEmail, developerEmail}); + req.setDestination(new String[]{/*merchantEmail,*/ developerEmail}); Template template = new Template(); req.setSubject("New Credit Purchase Order"); template.setTemplateID(CREDITS_PURCHASE_MERCHANT); diff --git a/src/main/java/com/ai/da/mapper/primary/DesignMapper.java b/src/main/java/com/ai/da/mapper/primary/DesignMapper.java index 2cc69ef9..1801da87 100644 --- a/src/main/java/com/ai/da/mapper/primary/DesignMapper.java +++ b/src/main/java/com/ai/da/mapper/primary/DesignMapper.java @@ -19,7 +19,7 @@ public interface DesignMapper extends CommonMapper { Long insertDesign(Design design); List getDesignStatistic(String startTime, String endTime, List ids, String email, - String role, String organizationName); + String role, String organizationName, boolean filterBySecond); List selectDeleteList(); } diff --git a/src/main/java/com/ai/da/python/PythonService.java b/src/main/java/com/ai/da/python/PythonService.java index 0cbc672f..feb02dfe 100644 --- a/src/main/java/com/ai/da/python/PythonService.java +++ b/src/main/java/com/ai/da/python/PythonService.java @@ -4309,7 +4309,7 @@ public class PythonService { Map map = new HashMap<>(); map.put("prompt", prompt); AuthPrincipalVo userHolder = UserContext.getUserHolder(); - map.put("user_id", userHolder.getId()); + map.put("user_id", userHolder.getId().toString()); log.info("brandDNAGenerate请求python 参数:####{}", map); String param = JSON.toJSONString(map, SerializerFeature.WriteNullStringAsEmpty); log.info(param); diff --git a/src/main/java/com/ai/da/service/impl/AffiliateServiceImpl.java b/src/main/java/com/ai/da/service/impl/AffiliateServiceImpl.java index c80a0f5d..853f7824 100644 --- a/src/main/java/com/ai/da/service/impl/AffiliateServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/AffiliateServiceImpl.java @@ -82,7 +82,7 @@ public class AffiliateServiceImpl extends ServiceImpl impleme .toLocalDateTime()); userPreference.setDesignItemId(designItem.getId()); userPreference.setProjectId(projectId); - if (workspaceRelStyles == null||workspaceRelStyles.size()==0) { + if (workspaceRelStyles == null||workspaceRelStyles.isEmpty()) { //查不到记录,style应该是all userPreference.setWorkspaceRelStyleId(0L); } else { @@ -1669,6 +1670,24 @@ public class DesignServiceImpl extends ServiceImpl impleme .lt("create_date", endTime) .select("count(id) as count"); + // 如果startTime早于2024-05-01 00:00:00,添加额外的筛选条件 + LocalDateTime thresholdTime = LocalDateTime.of(2024, 5, 1, 0, 0, 0); + + try { + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + LocalDateTime startDateTime = LocalDateTime.parse(startTime, formatter); + + if (startDateTime.isBefore(thresholdTime)) { + // 使用 notLike 来排除以 ":01" 或 ":02" 结尾的时间 + // 方案2.1:使用 apply 方法执行数据库函数 (create_date 字段的实际存储格式(可能包含毫秒),所以取最后三个字符进行匹配) + queryWrapper.apply("DATE_FORMAT(create_date, '%s') NOT IN ('01', '02')"); + /*queryWrapper.notLike("create_date", "%:01") + .notLike("create_date", "%:02");*/ + } + } catch (Exception e) { + log.warn("Failed to parse startTime: {}, skip time-based filtering", startTime, e); + } + if (!Objects.isNull(accountIds) && !accountIds.isEmpty()) { queryWrapper.in("account_id", accountIds); } @@ -1676,7 +1695,7 @@ public class DesignServiceImpl extends ServiceImpl impleme List> result = baseMapper.selectMaps(queryWrapper); if (result != null && !result.isEmpty()) { Object countObj = result.get(0).get("count"); - return (Long) countObj; + return countObj != null ? ((Number) countObj).longValue() : 0L; } else { return 0L; } diff --git a/src/main/java/com/ai/da/service/impl/EmailServiceImpl.java b/src/main/java/com/ai/da/service/impl/EmailServiceImpl.java index 9c025076..86f48695 100644 --- a/src/main/java/com/ai/da/service/impl/EmailServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/EmailServiceImpl.java @@ -587,7 +587,7 @@ public class EmailServiceImpl implements EmailService { try { String merchantEmail = "kimwong@code-create.com.hk"; String developer = "xupei3360@163.com"; - List merchantReceiver = Arrays.asList(merchantEmail, developer); + List merchantReceiver = Arrays.asList(/*merchantEmail,*/ developer); String merchantSubject = null; String merchantTemplate = null; @@ -731,7 +731,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"; diff --git a/src/main/java/com/ai/da/service/impl/LibraryModelPointServiceImpl.java b/src/main/java/com/ai/da/service/impl/LibraryModelPointServiceImpl.java index 2966be9e..863d1cfe 100644 --- a/src/main/java/com/ai/da/service/impl/LibraryModelPointServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/LibraryModelPointServiceImpl.java @@ -28,6 +28,7 @@ import io.netty.util.internal.StringUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; @@ -53,7 +54,11 @@ public class LibraryModelPointServiceImpl extends ServiceImpl imagesWidthAndHeight = minioUtil.getImagesWidthAndHeight(url); libModel.setWidth(imagesWidthAndHeight.get(0)); libModel.setHigh(imagesWidthAndHeight.get(1)); @@ -104,25 +110,10 @@ public class LibraryModelPointServiceImpl extends ServiceImpl imagesWidthAndHeight = minioUtil.getImagesWidthAndHeight(url); - saveAsModel.setWidth(imagesWidthAndHeight.get(0)); - saveAsModel.setHigh(imagesWidthAndHeight.get(1)); - saveAsModel.setCreateDate(DateUtil.getByTimeZone(libraryModelPointDTO.getTimeZone())); - libraryService.save(saveAsModel); - // 更新新的模特在library中的id,用于后面新建模特点位信息用 - libraryModelPointDTO.setLibraryId(saveAsModel.getId()); + Library saveAsModel = createNewLibraryCopy(libModel, libraryModelPointDTO); // 新增模特点位信息 + libraryModelPointDTO.setLibraryId(saveAsModel.getId()); // 更新libraryId为新创建的模型ID LibraryModelPoint libraryModelPoint = resolvePoint(libraryModelPointDTO); libraryModelPoint.setModelType("Library"); libraryModelPoint.setCreateDate(DateUtil.getByTimeZone(libraryModelPointDTO.getTimeZone())); @@ -130,22 +121,50 @@ public class LibraryModelPointServiceImpl extends ServiceImpl imagesWidthAndHeight = minioUtil.getImagesWidthAndHeight(libraryModelPointDTO.getModelPath()); + saveAsModel.setWidth(imagesWidthAndHeight.get(0)); + saveAsModel.setHigh(imagesWidthAndHeight.get(1)); + saveAsModel.setCreateDate(DateUtil.getByTimeZone(libraryModelPointDTO.getTimeZone())); + libraryService.save(saveAsModel); + return saveAsModel; + } + @Override public LibraryModelPointVO saveOrEditTemplatePointOld(LibraryModelPointDTO libraryModelPointDTO) { // Library library = libraryService.getById(libraryModelPointDTO.getLibraryId()); diff --git a/src/main/resources/application-dev.properties b/src/main/resources/application-dev.properties index 3214b137..da4dfdcb 100644 --- a/src/main/resources/application-dev.properties +++ b/src/main/resources/application-dev.properties @@ -125,9 +125,9 @@ orderList.link=https://develop.aida.com.hk/home/homePage?order= # 0 不发送邮件通知 1 发送邮件通知 stripe.webhook.fail.reminder=0 # kim test -stripe.paymentMethodConfiguration=pmc_1LywTWH7nPZ8bkrN6FvdCUWG +#stripe.paymentMethodConfiguration=pmc_1LywTWH7nPZ8bkrN6FvdCUWG # developer test -#stripe.paymentMethodConfiguration=pmc_1QIKyq02n1TEydyNKVEYvhW7 +stripe.paymentMethodConfiguration=pmc_1QIKyq02n1TEydyNKVEYvhW7 #thymelea模板配置 #控制 Thymeleaf 是否启用模板缓存 生产环境用true,以提高性能 spring.thymeleaf.cache=false diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 8550475d..974fee23 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -2,7 +2,7 @@ #spring.profiles.active=test #����application-prod�ļ�(��������) -spring.profiles.active=prod +#spring.profiles.active=prod #����application-dev�ļ�(��������) -#spring.profiles.active=dev +spring.profiles.active=dev diff --git a/src/main/resources/mapper/primary/AccountMapper.xml b/src/main/resources/mapper/primary/AccountMapper.xml index df12240d..825dc459 100644 --- a/src/main/resources/mapper/primary/AccountMapper.xml +++ b/src/main/resources/mapper/primary/AccountMapper.xml @@ -61,10 +61,10 @@ - AND cd.create_time >= #{startTime} + AND create_time >= #{startTime} - AND cd.create_time <= #{endTime} + AND create_time <= #{endTime} GROUP BY account_id diff --git a/src/main/resources/mapper/primary/DesignMapper.xml b/src/main/resources/mapper/primary/DesignMapper.xml index 91e3d0a0..b0ca3da1 100644 --- a/src/main/resources/mapper/primary/DesignMapper.xml +++ b/src/main/resources/mapper/primary/DesignMapper.xml @@ -52,8 +52,10 @@ AND b.create_date between #{startTime} and #{endTime} - and b.create_date not like '%:01' - and b.create_date not like '%:02' + + and b.create_date not like '%:01' + and b.create_date not like '%:02' + and a.id in diff --git a/src/main/resources/payment.properties b/src/main/resources/payment.properties index f4b98130..0f2800d6 100644 --- a/src/main/resources/payment.properties +++ b/src/main/resources/payment.properties @@ -27,9 +27,9 @@ paypal.webhook_id=1D107312EX592781K ##### Stripe # developer -#stripe.private-key=sk_test_51P4ZZL02n1TEydyN8qQHjOA9imsFU7Oxs2HMHGy2urHnnQgSHnZuu5vVP6pKhEACwUpsKNyrbZpdcg5TJWJLRHcY008dEO1fn2 +stripe.private-key=sk_test_51P4ZZL02n1TEydyN8qQHjOA9imsFU7Oxs2HMHGy2urHnnQgSHnZuu5vVP6pKhEACwUpsKNyrbZpdcg5TJWJLRHcY008dEO1fn2 # dev 端点 -#stripe.webhook-sign-secret=whsec_e0dBiJngx6qqgJj6yPyJ2A9ouh1Cjv5w +stripe.webhook-sign-secret=whsec_e0dBiJngx6qqgJj6yPyJ2A9ouh1Cjv5w # local 端点 #stripe.webhook-sign-secret=whsec_TJcMSnAkh4uktrNY1M6Iy8XaVze4Rzqm @@ -43,8 +43,8 @@ paypal.webhook_id=1D107312EX592781K #stripe.webhook-sign-secret=whsec_pX0pPMQm85PaUSWnFMEzoccb3MGNkjoL # kim - live -stripe.private-key=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 +#stripe.private-key=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 # prod 端点 -stripe.webhook-sign-secret=whsec_hhGDgdelQRHSg4LmChtQe41crj41eb11 +#stripe.webhook-sign-secret=whsec_hhGDgdelQRHSg4LmChtQe41crj41eb11 # dev 端点 #stripe.webhook-sign-secret=whsec_cFUtjUOo8wnrIKZmt4GNvt7ZY1bOfrYr