From bee78cc9a2ac3b71197a7b5709b57b93f2eeb756 Mon Sep 17 00:00:00 2001 From: xupei Date: Tue, 30 Jan 2024 13:34:30 +0800 Subject: [PATCH 01/18] =?UTF-8?q?generate=20=E6=B7=BB=E5=8A=A0=E8=AF=95?= =?UTF-8?q?=E7=94=A8=E7=94=A8=E6=88=B7=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker-compose.yml | 4 ++-- src/main/java/com/ai/da/common/RabbitMQ/MQConfig.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 8325f62d..5b64e5f0 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,10 +1,10 @@ version: "3" services: aida_back: - container_name: stable-version-aida-back + container_name: prod-version-aida-back build: . volumes: # 日志目录映射 - ./log:/log ports: - - "10086:5567" + - "10010:5567" diff --git a/src/main/java/com/ai/da/common/RabbitMQ/MQConfig.java b/src/main/java/com/ai/da/common/RabbitMQ/MQConfig.java index 208075fd..7f7428ad 100644 --- a/src/main/java/com/ai/da/common/RabbitMQ/MQConfig.java +++ b/src/main/java/com/ai/da/common/RabbitMQ/MQConfig.java @@ -16,8 +16,8 @@ import org.springframework.beans.factory.annotation.Value; public class MQConfig { public static final String GENERATE_EXCHANGE_FANOUT = "generate-exchange"; -// public static final String GENERATE_QUEUE = "generate-queue-prod"; - public static final String GENERATE_QUEUE = "generate-queue-test"; + public static final String GENERATE_QUEUE = "generate-queue-prod"; +// public static final String GENERATE_QUEUE = "generate-queue-test"; public MQConfig() { } From 821a3420ae57724822b6db0808575386431ba7b7 Mon Sep 17 00:00:00 2001 From: xupei Date: Tue, 30 Jan 2024 13:39:59 +0800 Subject: [PATCH 02/18] =?UTF-8?q?=E9=85=8D=E7=BD=AE=E7=8E=AF=E5=A2=83?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/application.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 47a99eb3..8550475d 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=test +spring.profiles.active=prod #����application-dev�ļ�(��������) #spring.profiles.active=dev From 81c5d7ee65108a850b5b5f80d5ae2bd296a7199b Mon Sep 17 00:00:00 2001 From: shahaibo <1023316923@qq.com> Date: Tue, 30 Jan 2024 14:20:57 +0800 Subject: [PATCH 03/18] =?UTF-8?q?TASK:=E8=AF=95=E7=94=A8=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E6=9C=BA=E5=99=A8=E4=BA=BA=E4=BD=99=E9=A2=9D;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../da/service/impl/ChatRobotServiceImpl.java | 23 +++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/ai/da/service/impl/ChatRobotServiceImpl.java b/src/main/java/com/ai/da/service/impl/ChatRobotServiceImpl.java index 5f06a194..1300292f 100644 --- a/src/main/java/com/ai/da/service/impl/ChatRobotServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/ChatRobotServiceImpl.java @@ -9,7 +9,9 @@ import com.ai.da.common.enums.LibraryLevel1TypeEnum; import com.ai.da.common.utils.CopyUtil; import com.ai.da.common.utils.MD5Utils; import com.ai.da.common.utils.MinioUtil; +import com.ai.da.mapper.AccountMapper; import com.ai.da.mapper.LibraryMapper; +import com.ai.da.mapper.entity.Account; import com.ai.da.mapper.entity.ChatRobot; import com.ai.da.mapper.ChatRobotMapper; import com.ai.da.mapper.entity.Library; @@ -74,6 +76,8 @@ public class ChatRobotServiceImpl implements ChatRobotService { @Value("${minio.bucketName.sysImage}") private String sysImage; + @Resource + private AccountMapper accountMapper; Gson gson = new GsonBuilder().create(); private final ExecutorService executorService = Executors.newSingleThreadExecutor(); @@ -257,8 +261,15 @@ public class ChatRobotServiceImpl implements ChatRobotService { List chatRobots = chatRobotMapper.selectList(queryWrapper); if (!CollectionUtils.isEmpty(chatRobots)) { BigDecimal totalCostUsed = chatRobots.get(0).getTotalCost(); - if (totalCostUsed.add(totalCost).compareTo(BigDecimal.valueOf(5)) > 0) { - throw new BusinessException("Your balance is insufficient"); + Account account = accountMapper.selectById(userId); + if (account.getIsTrial() == 1) { + if (totalCostUsed.add(totalCost).compareTo(BigDecimal.valueOf(0.1)) > 0) { + throw new BusinessException("Your balance is insufficient"); + } + }else { + if (totalCostUsed.add(totalCost).compareTo(BigDecimal.valueOf(5)) > 0) { + throw new BusinessException("Your balance is insufficient"); + } } } } @@ -323,9 +334,13 @@ public class ChatRobotServiceImpl implements ChatRobotService { if (CollectionUtils.isEmpty(chatRobots)) { return BigDecimal.ONE; } else { + Account account = accountMapper.selectById(userId); BigDecimal totalCost = BigDecimal.valueOf(5).subtract(chatRobots.get(0).getTotalCost()); - BigDecimal result = totalCost.divide(BigDecimal.valueOf(5), 4, RoundingMode.HALF_UP); - return result; + if (account.getIsTrial() == 1) { + return totalCost.divide(BigDecimal.valueOf(0.1), 4, RoundingMode.HALF_UP); + }else { + return totalCost.divide(BigDecimal.valueOf(5), 4, RoundingMode.HALF_UP); + } } } From f1176dfefb0d99476fcbeb8be7494b76a517e669 Mon Sep 17 00:00:00 2001 From: shahaibo <1023316923@qq.com> Date: Tue, 30 Jan 2024 15:03:38 +0800 Subject: [PATCH 04/18] =?UTF-8?q?TASK:=E8=AF=95=E7=94=A8=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E6=9C=BA=E5=99=A8=E4=BA=BA=E4=BD=99=E9=A2=9D;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/ai/da/service/impl/ChatRobotServiceImpl.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/ai/da/service/impl/ChatRobotServiceImpl.java b/src/main/java/com/ai/da/service/impl/ChatRobotServiceImpl.java index 1300292f..650deb4c 100644 --- a/src/main/java/com/ai/da/service/impl/ChatRobotServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/ChatRobotServiceImpl.java @@ -337,6 +337,7 @@ public class ChatRobotServiceImpl implements ChatRobotService { Account account = accountMapper.selectById(userId); BigDecimal totalCost = BigDecimal.valueOf(5).subtract(chatRobots.get(0).getTotalCost()); if (account.getIsTrial() == 1) { + totalCost = BigDecimal.valueOf(0.1).subtract(chatRobots.get(0).getTotalCost()); return totalCost.divide(BigDecimal.valueOf(0.1), 4, RoundingMode.HALF_UP); }else { return totalCost.divide(BigDecimal.valueOf(5), 4, RoundingMode.HALF_UP); From 9b55083768c0b0171674bc9a8a2bae375b68b030 Mon Sep 17 00:00:00 2001 From: xupei Date: Wed, 31 Jan 2024 19:35:17 +0800 Subject: [PATCH 05/18] =?UTF-8?q?generate=20=E6=97=A5=E5=BF=97=E6=89=93?= =?UTF-8?q?=E5=8D=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/ai/da/common/utils/AsyncCallerUtil.java | 2 +- src/main/java/com/ai/da/python/PythonService.java | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/ai/da/common/utils/AsyncCallerUtil.java b/src/main/java/com/ai/da/common/utils/AsyncCallerUtil.java index 35039431..c864960c 100644 --- a/src/main/java/com/ai/da/common/utils/AsyncCallerUtil.java +++ b/src/main/java/com/ai/da/common/utils/AsyncCallerUtil.java @@ -58,7 +58,7 @@ public class AsyncCallerUtil { return null; } catch (InterruptedException | ExecutionException | BusinessException e) { // 处理异常 - log.error("发生错误 : " + e); + log.error("发生错误 : " + e, e); // 取消定时任务 assert timeoutTask != null; timeoutTask.cancel(true); diff --git a/src/main/java/com/ai/da/python/PythonService.java b/src/main/java/com/ai/da/python/PythonService.java index 5a37b3b7..b4f8e847 100644 --- a/src/main/java/com/ai/da/python/PythonService.java +++ b/src/main/java/com/ai/da/python/PythonService.java @@ -2295,6 +2295,7 @@ public class PythonService { Boolean result = JSON.parseObject(JSON.toJSONString(response)).getBoolean("successful"); if (result && jsonObject.get("code").equals(200)) { + log.info("Generate##responseObject###{}", jsonObject); return setGenerateImageList(jsonObject.getJSONObject("data")); } log.info("generateSketchOrPrintPrint失败###{}", jsonObject); From a4f36a2fd5a629f072cc58943a2b77537249878c Mon Sep 17 00:00:00 2001 From: shahaibo <1023316923@qq.com> Date: Thu, 15 Feb 2024 15:23:32 +0800 Subject: [PATCH 06/18] =?UTF-8?q?TASK:=E8=AF=95=E7=94=A8=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ai/da/service/impl/AccountServiceImpl.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java b/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java index a386cdc3..4c7507f5 100644 --- a/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java @@ -503,7 +503,7 @@ public class AccountServiceImpl extends ServiceImpl impl account.setIsTrial(1); account.setIsBeginner(1); account.setValidStartTime(System.currentTimeMillis()); - account.setValidEndTime(Instant.now().plus(3, ChronoUnit.DAYS).toEpochMilli()); + account.setValidEndTime(Instant.now().plus(5, ChronoUnit.DAYS).toEpochMilli()); accountMapper.updateById(account); }else { account.setUserName(trialOrder.getUserName()); @@ -511,7 +511,7 @@ public class AccountServiceImpl extends ServiceImpl impl account.setUserEmail(trialOrder.getEmail()); account.setLanguage(Language.ENGLISH.name()); account.setValidStartTime(System.currentTimeMillis()); - account.setValidEndTime(Instant.now().plus(3, ChronoUnit.DAYS).toEpochMilli()); + account.setValidEndTime(Instant.now().plus(5, ChronoUnit.DAYS).toEpochMilli()); account.setCreateDate(new Date()); account.setIsTrial(1); account.setIsBeginner(1); @@ -551,7 +551,7 @@ public class AccountServiceImpl extends ServiceImpl impl account.setIsTrial(1); account.setIsBeginner(1); account.setValidStartTime(System.currentTimeMillis()); - account.setValidEndTime(Instant.now().plus(3, ChronoUnit.DAYS).toEpochMilli()); + account.setValidEndTime(Instant.now().plus(5, ChronoUnit.DAYS).toEpochMilli()); accountMapper.updateById(account); }else { account.setUserName(trialOrder.getUserName()); @@ -559,7 +559,7 @@ public class AccountServiceImpl extends ServiceImpl impl account.setUserEmail(trialOrder.getEmail()); account.setLanguage(Language.ENGLISH.name()); account.setValidStartTime(System.currentTimeMillis()); - account.setValidEndTime(Instant.now().plus(3, ChronoUnit.DAYS).toEpochMilli()); + account.setValidEndTime(Instant.now().plus(5, ChronoUnit.DAYS).toEpochMilli()); account.setCreateDate(new Date()); account.setIsTrial(1); account.setIsBeginner(1); From 7803decb29047314bc7f3f69ea8f4fe69abf778e Mon Sep 17 00:00:00 2001 From: shahaibo <1023316923@qq.com> Date: Tue, 20 Feb 2024 09:31:31 +0800 Subject: [PATCH 07/18] =?UTF-8?q?TASK:=E5=A2=9E=E5=8A=A0=E9=82=AE=E4=BB=B6?= =?UTF-8?q?=E9=80=9A=E7=9F=A5=E4=BA=BA;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ai/da/service/impl/AccountServiceImpl.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java b/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java index 4c7507f5..680a1047 100644 --- a/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java @@ -491,6 +491,8 @@ public class AccountServiceImpl extends ServiceImpl impl trialOrder.setStatus(0); 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()) { // 改变试用订单状态,新增试用用户 @@ -519,6 +521,8 @@ public class AccountServiceImpl extends ServiceImpl impl } // 发送邮件提醒用户试用用户已创建 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); SendEmailUtil.sendCustomEmail(account.getUserEmail(), null, trialOrder, 3); } return Boolean.TRUE; @@ -567,6 +571,8 @@ public class AccountServiceImpl extends ServiceImpl impl } // 发送邮件提醒用户试用用户已创建 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); SendEmailUtil.sendCustomEmail(account.getUserEmail(), null, trialOrder, 3); } return Boolean.TRUE; From a016f160520cd1daefffb50a8506e40ef6d9f1e3 Mon Sep 17 00:00:00 2001 From: xupei Date: Mon, 4 Mar 2024 16:33:23 +0800 Subject: [PATCH 08/18] =?UTF-8?q?=E4=BE=BF=E5=88=A9=E6=9F=A5=E8=AF=A2--?= =?UTF-8?q?=E6=8C=87=E5=AE=9A=E7=94=A8=E6=88=B7=E6=9C=89=E6=9D=83=E9=99=90?= =?UTF-8?q?=E7=9B=B4=E6=8E=A5=E8=8E=B7=E5=8F=96=E5=BD=93=E5=89=8D=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=BA=93=E9=83=A8=E5=88=86=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ConvenientInquiryController.java | 54 +++++++++++++++++++ .../java/com/ai/da/mapper/DesignMapper.java | 6 ++- .../da/model/dto/UserDesignStatisticDTO.java | 17 ++++++ .../resources/application-prod.properties | 2 +- src/main/resources/mapper/DesignMapper.xml | 14 +++++ 5 files changed, 91 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/ai/da/controller/ConvenientInquiryController.java create mode 100644 src/main/java/com/ai/da/model/dto/UserDesignStatisticDTO.java diff --git a/src/main/java/com/ai/da/controller/ConvenientInquiryController.java b/src/main/java/com/ai/da/controller/ConvenientInquiryController.java new file mode 100644 index 00000000..bca619ce --- /dev/null +++ b/src/main/java/com/ai/da/controller/ConvenientInquiryController.java @@ -0,0 +1,54 @@ +package com.ai.da.controller; + + +import com.ai.da.common.context.UserContext; +import com.ai.da.common.response.Response; +import com.ai.da.mapper.DesignMapper; +import com.ai.da.mapper.TrialOrderMapper; +import com.ai.da.mapper.entity.TrialOrder; +import com.ai.da.model.dto.UserDesignStatisticDTO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +@Api(tags = "便利查询") +@Slf4j +@RestController +@RequestMapping("/api/inquiry") +public class ConvenientInquiryController { + + @Resource + private TrialOrderMapper trialOrderMapper; + + @Resource + private DesignMapper designMapper; + + @ApiOperation("获取当前所有试用用户") + @GetMapping("/getTrial") + public Response> getTrial(){ + Long accountId = UserContext.getUserHolder().getId(); + if (accountId.equals(31L) || accountId.equals(87L) || accountId.equals(83L)){ + List trialOrders = trialOrderMapper.selectList(null); + return Response.success(trialOrders); + }else { + return Response.fail("Sorry, you don't have permission"); + } + } + + @ApiOperation("获取指定时间区间内所有用户design的使用情况") + @GetMapping("/getDesignStatistic") + public Response> getDesignStatistic(@RequestParam String startTime,@RequestParam String endTime){ + Long accountId = UserContext.getUserHolder().getId(); + if (accountId.equals(31L) || accountId.equals(87L) || accountId.equals(83L)){ + List designStatistic = designMapper.getDesignStatistic(startTime, endTime); + return Response.success(designStatistic); + }else { + return Response.fail("Sorry, you don't have permission"); + } + } + +} diff --git a/src/main/java/com/ai/da/mapper/DesignMapper.java b/src/main/java/com/ai/da/mapper/DesignMapper.java index 31fc4a18..3c7c3de9 100644 --- a/src/main/java/com/ai/da/mapper/DesignMapper.java +++ b/src/main/java/com/ai/da/mapper/DesignMapper.java @@ -1,8 +1,10 @@ package com.ai.da.mapper; import com.ai.da.common.config.mybatis.plus.CommonMapper; -import com.ai.da.mapper.entity.Collection; import com.ai.da.mapper.entity.Design; +import com.ai.da.model.dto.UserDesignStatisticDTO; + +import java.util.List; /** * Mapper 接口 @@ -14,4 +16,6 @@ public interface DesignMapper extends CommonMapper { //返回插入数据后生成的主键 Long insertDesign(Design design); + + List getDesignStatistic(String startTime, String endTime); } diff --git a/src/main/java/com/ai/da/model/dto/UserDesignStatisticDTO.java b/src/main/java/com/ai/da/model/dto/UserDesignStatisticDTO.java new file mode 100644 index 00000000..25bd7038 --- /dev/null +++ b/src/main/java/com/ai/da/model/dto/UserDesignStatisticDTO.java @@ -0,0 +1,17 @@ +package com.ai.da.model.dto; + +import lombok.Data; + +@Data +public class UserDesignStatisticDTO { + + private Long accountId; + + private Long useDesignTimes; + + private String userEmail; + + private String userName; + + private String isTrial; +} diff --git a/src/main/resources/application-prod.properties b/src/main/resources/application-prod.properties index 6a2b9d4d..af7d6688 100644 --- a/src/main/resources/application-prod.properties +++ b/src/main/resources/application-prod.properties @@ -15,7 +15,7 @@ spring.security.jwtTokenPrefix=Bearer- spring.security.jwtExpiration=8640000000 #spring security权限设置 认证了token还要认证权限 不然报错Full authentication is required to access this resource spring.security.ignorePaths=/,/favicon.ico,/doc.html,/webjars/**,/swagger-resources,/v2/api-docs,\ - /api/account/**,/api/element/**,/api/python/**,/api/design/**,/api/history/**,/api/library/**,/api/third/party/**,/api/generate/**,/api/workspace/**,/api/classification/** + /api/account/**,/api/element/**,/api/python/**,/api/design/**,/api/history/**,/api/library/**,/api/third/party/**,/api/generate/**,/api/workspace/**,/api/classification/**,/api/inquiry/** spring.security.authApi=/auth/login diff --git a/src/main/resources/mapper/DesignMapper.xml b/src/main/resources/mapper/DesignMapper.xml index 4c4e029c..d5f589cd 100644 --- a/src/main/resources/mapper/DesignMapper.xml +++ b/src/main/resources/mapper/DesignMapper.xml @@ -25,5 +25,19 @@ #{switchCategory}, #{createDate}); + + From 95aee1daaef0fbfe7d3dbb5c62524e26ebb222d2 Mon Sep 17 00:00:00 2001 From: shahaibo <1023316923@qq.com> Date: Tue, 9 Apr 2024 11:55:15 +0800 Subject: [PATCH 09/18] =?UTF-8?q?BUGFIX:=E8=AF=95=E7=94=A8=E8=AE=A2?= =?UTF-8?q?=E5=8D=95;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ai/da/controller/ThirdPartyController.java | 4 ++-- .../java/com/ai/da/mapper/entity/TrialOrder.java | 1 + .../java/com/ai/da/service/AccountService.java | 2 +- .../ai/da/service/impl/AccountServiceImpl.java | 16 +++++++++++++++- 4 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/ai/da/controller/ThirdPartyController.java b/src/main/java/com/ai/da/controller/ThirdPartyController.java index 2572ed5b..7132d9b2 100644 --- a/src/main/java/com/ai/da/controller/ThirdPartyController.java +++ b/src/main/java/com/ai/da/controller/ThirdPartyController.java @@ -42,8 +42,8 @@ public class ThirdPartyController { @CrossOrigin @ApiOperation(value = "Add user information") @PostMapping("/addTrialUser") - public Response addTrialUser(@RequestBody AccountTrialDTO accountTrialDTO) { - return Response.success(accountService.addTrialUser(accountTrialDTO)); + public Response addTrialUser(@RequestBody AccountTrialDTO accountTrialDTO, HttpServletRequest request) { + return Response.success(accountService.addTrialUser(accountTrialDTO, request)); } @CrossOrigin diff --git a/src/main/java/com/ai/da/mapper/entity/TrialOrder.java b/src/main/java/com/ai/da/mapper/entity/TrialOrder.java index 904d1a75..72183c97 100644 --- a/src/main/java/com/ai/da/mapper/entity/TrialOrder.java +++ b/src/main/java/com/ai/da/mapper/entity/TrialOrder.java @@ -64,4 +64,5 @@ public class TrialOrder implements Serializable { */ private Integer status; private Integer isDeleted; + private String ip; } diff --git a/src/main/java/com/ai/da/service/AccountService.java b/src/main/java/com/ai/da/service/AccountService.java index 2b1f20f1..aa646554 100644 --- a/src/main/java/com/ai/da/service/AccountService.java +++ b/src/main/java/com/ai/da/service/AccountService.java @@ -102,7 +102,7 @@ public interface AccountService extends IService { Boolean completeGuidance(); - Boolean addTrialUser(AccountTrialDTO accountTrialDTO); + Boolean addTrialUser(AccountTrialDTO accountTrialDTO, HttpServletRequest request); IPage trialOrderList(TrialOrderDTO trialOrderDTO); diff --git a/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java b/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java index 680a1047..af3247ab 100644 --- a/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java @@ -468,7 +468,20 @@ public class AccountServiceImpl extends ServiceImpl impl } @Override - public Boolean addTrialUser(AccountTrialDTO accountTrialDTO) { + public Boolean addTrialUser(AccountTrialDTO accountTrialDTO, HttpServletRequest request) { + // 获取用户申请试用IP + String ipAddress = RequestInfoUtil.getIpAddress(request); + // 先检测试用订单 + QueryWrapper trialOrderQueryWrapper = new QueryWrapper<>(); + trialOrderQueryWrapper.lambda().eq(TrialOrder::getIp, ipAddress); + trialOrderQueryWrapper.lambda().and(wrapper -> + wrapper.eq(TrialOrder::getEmail, accountTrialDTO.getEmail()) + .or() // OR + .like(TrialOrder::getUserName, accountTrialDTO.getUserName())); + List trialOrders = trialOrderMapper.selectList(trialOrderQueryWrapper); + if (CollectionUtil.isNotEmpty(trialOrders)) { + throw new BusinessException("You have submitted a trial application, please wait for approval."); + } // 先检测用户名和邮箱 QueryWrapper qw = new QueryWrapper<>(); qw.lambda().eq(Account::getUserEmail, accountTrialDTO.getEmail()) @@ -489,6 +502,7 @@ public class AccountServiceImpl extends ServiceImpl impl 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); From d1772be7379a5940a7fc456d0b9723d7cb42c630 Mon Sep 17 00:00:00 2001 From: shahaibo <1023316923@qq.com> Date: Tue, 23 Apr 2024 10:10:51 +0800 Subject: [PATCH 10/18] =?UTF-8?q?BUGFIX:=E7=99=BB=E5=BD=95=E9=82=AE?= =?UTF-8?q?=E7=AE=B1=E7=B2=BE=E7=A1=AE=E5=8C=B9=E9=85=8D;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/ai/da/service/impl/AccountServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java b/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java index af3247ab..0797b276 100644 --- a/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java @@ -289,7 +289,7 @@ public class AccountServiceImpl extends ServiceImpl impl private Account getOneByEmail(String email) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.lambda().eq(Account::getUserEmail, email); + queryWrapper.lambda().like(Account::getUserEmail, email).eq(Account::getUserEmail, email); queryWrapper.lambda().last("limit 1"); List accountList = accountMapper.selectList(queryWrapper); if (CollectionUtil.isEmpty(accountList)) { From 5a69a770acf7f9ac96f6ea74bcd46c5e583757d5 Mon Sep 17 00:00:00 2001 From: shahaibo <1023316923@qq.com> Date: Tue, 23 Apr 2024 10:22:26 +0800 Subject: [PATCH 11/18] =?UTF-8?q?BUGFIX:=E7=99=BB=E5=BD=95=E9=82=AE?= =?UTF-8?q?=E7=AE=B1=E7=B2=BE=E7=A1=AE=E5=8C=B9=E9=85=8D;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/ai/da/service/impl/AccountServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java b/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java index 0797b276..a129d357 100644 --- a/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java @@ -289,7 +289,7 @@ public class AccountServiceImpl extends ServiceImpl impl private Account getOneByEmail(String email) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.lambda().like(Account::getUserEmail, email).eq(Account::getUserEmail, email); + queryWrapper.lambda().last("BINARY user_email = '" + email + "'"); queryWrapper.lambda().last("limit 1"); List accountList = accountMapper.selectList(queryWrapper); if (CollectionUtil.isEmpty(accountList)) { From faeb59bae5059e38522967b16d9af926a8f90b8d Mon Sep 17 00:00:00 2001 From: shahaibo <1023316923@qq.com> Date: Tue, 23 Apr 2024 10:32:24 +0800 Subject: [PATCH 12/18] =?UTF-8?q?BUGFIX:=E7=99=BB=E5=BD=95=E9=82=AE?= =?UTF-8?q?=E7=AE=B1=E7=B2=BE=E7=A1=AE=E5=8C=B9=E9=85=8D=E5=9B=9E=E9=80=80?= =?UTF-8?q?;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/ai/da/service/impl/AccountServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java b/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java index a129d357..af3247ab 100644 --- a/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java @@ -289,7 +289,7 @@ public class AccountServiceImpl extends ServiceImpl impl private Account getOneByEmail(String email) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.lambda().last("BINARY user_email = '" + email + "'"); + queryWrapper.lambda().eq(Account::getUserEmail, email); queryWrapper.lambda().last("limit 1"); List accountList = accountMapper.selectList(queryWrapper); if (CollectionUtil.isEmpty(accountList)) { From c3ae729466f09fdba8063edc590ae5485d15aedd Mon Sep 17 00:00:00 2001 From: shahaibo <1023316923@qq.com> Date: Tue, 23 Apr 2024 10:50:45 +0800 Subject: [PATCH 13/18] =?UTF-8?q?BUGFIX:=E7=99=BB=E5=BD=95=E9=82=AE?= =?UTF-8?q?=E7=AE=B1=E7=B2=BE=E7=A1=AE=E5=8C=B9=E9=85=8D;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ai/da/common/RabbitMQ/MQConsumer.java | 106 +++++++++--------- .../ai/da/common/config/MyTaskScheduler.java | 2 +- .../da/service/impl/AccountServiceImpl.java | 4 +- 3 files changed, 56 insertions(+), 56 deletions(-) diff --git a/src/main/java/com/ai/da/common/RabbitMQ/MQConsumer.java b/src/main/java/com/ai/da/common/RabbitMQ/MQConsumer.java index 77f46dbd..c04093dd 100644 --- a/src/main/java/com/ai/da/common/RabbitMQ/MQConsumer.java +++ b/src/main/java/com/ai/da/common/RabbitMQ/MQConsumer.java @@ -104,58 +104,58 @@ public class MQConsumer { log.info("=============end listening==========="); } - @RabbitListener(queues = MQConfig.GENERATE_QUEUE) - @RabbitHandler - public void generateConsumer1(Message msg, Channel channel) { - generate(msg, channel, "consumer 1"); - } - - @RabbitListener(queues = MQConfig.GENERATE_QUEUE) - @RabbitHandler - public void generateConsumer2(Message msg, Channel channel) { - generate(msg, channel, "consumer 2"); - } - - @RabbitListener(queues = MQConfig.GENERATE_QUEUE) - @RabbitHandler - public void generateConsumer3(Message msg, Channel channel) { - generate(msg, channel, "consumer 3"); - } - - @RabbitListener(queues = MQConfig.GENERATE_QUEUE) - @RabbitHandler - public void generateConsumer4(Message msg, Channel channel) { - generate(msg, channel, "consumer 4"); - } - - @RabbitListener(queues = MQConfig.GENERATE_QUEUE) - @RabbitHandler - public void generateConsumer5(Message msg, Channel channel) { - generate(msg, channel, "consumer 5"); - } - - @RabbitListener(queues = MQConfig.GENERATE_QUEUE) - @RabbitHandler - public void generateConsumer6(Message msg, Channel channel) { - generate(msg, channel, "consumer 6"); - } - - @RabbitListener(queues = MQConfig.GENERATE_QUEUE) - @RabbitHandler - public void generateConsumer7(Message msg, Channel channel) { - generate(msg, channel, "consumer 7"); - } - - @RabbitListener(queues = MQConfig.GENERATE_QUEUE) - @RabbitHandler - public void generateConsumer8(Message msg, Channel channel) { - generate(msg, channel, "consumer 8"); - } - - @RabbitListener(queues = MQConfig.GENERATE_QUEUE) - @RabbitHandler - public void generateConsumer9(Message msg, Channel channel) { - generate(msg, channel, "consumer 9"); - } +// @RabbitListener(queues = MQConfig.GENERATE_QUEUE) +// @RabbitHandler +// public void generateConsumer1(Message msg, Channel channel) { +// generate(msg, channel, "consumer 1"); +// } +// +// @RabbitListener(queues = MQConfig.GENERATE_QUEUE) +// @RabbitHandler +// public void generateConsumer2(Message msg, Channel channel) { +// generate(msg, channel, "consumer 2"); +// } +// +// @RabbitListener(queues = MQConfig.GENERATE_QUEUE) +// @RabbitHandler +// public void generateConsumer3(Message msg, Channel channel) { +// generate(msg, channel, "consumer 3"); +// } +// +// @RabbitListener(queues = MQConfig.GENERATE_QUEUE) +// @RabbitHandler +// public void generateConsumer4(Message msg, Channel channel) { +// generate(msg, channel, "consumer 4"); +// } +// +// @RabbitListener(queues = MQConfig.GENERATE_QUEUE) +// @RabbitHandler +// public void generateConsumer5(Message msg, Channel channel) { +// generate(msg, channel, "consumer 5"); +// } +// +// @RabbitListener(queues = MQConfig.GENERATE_QUEUE) +// @RabbitHandler +// public void generateConsumer6(Message msg, Channel channel) { +// generate(msg, channel, "consumer 6"); +// } +// +// @RabbitListener(queues = MQConfig.GENERATE_QUEUE) +// @RabbitHandler +// public void generateConsumer7(Message msg, Channel channel) { +// generate(msg, channel, "consumer 7"); +// } +// +// @RabbitListener(queues = MQConfig.GENERATE_QUEUE) +// @RabbitHandler +// public void generateConsumer8(Message msg, Channel channel) { +// generate(msg, channel, "consumer 8"); +// } +// +// @RabbitListener(queues = MQConfig.GENERATE_QUEUE) +// @RabbitHandler +// public void generateConsumer9(Message msg, Channel channel) { +// generate(msg, channel, "consumer 9"); +// } } 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 93ff24f6..ee5b4d28 100644 --- a/src/main/java/com/ai/da/common/config/MyTaskScheduler.java +++ b/src/main/java/com/ai/da/common/config/MyTaskScheduler.java @@ -19,7 +19,7 @@ public class MyTaskScheduler { // 定时任务,每十五天执行一次 // @Scheduled(cron = "0 0 0 ? * MON") - @Scheduled(cron = "0 0 0 */15 * ?") +// @Scheduled(cron = "0 0 0 */15 * ?") public void checkExpiry() { // 检测正式用户是否快要过期 QueryWrapper qw = new QueryWrapper<>(); diff --git a/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java b/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java index af3247ab..198db146 100644 --- a/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java @@ -289,8 +289,7 @@ public class AccountServiceImpl extends ServiceImpl impl private Account getOneByEmail(String email) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.lambda().eq(Account::getUserEmail, email); - queryWrapper.lambda().last("limit 1"); + queryWrapper.eq("BINARY user_email", email); List accountList = accountMapper.selectList(queryWrapper); if (CollectionUtil.isEmpty(accountList)) { throw new BusinessException("email.does.not.exist", ResultEnum.PROMPT.getCode()); @@ -298,6 +297,7 @@ public class AccountServiceImpl extends ServiceImpl impl return accountList.get(0); } + private Account getOneByUserName(String userName) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().eq(Account::getUserName, userName); From 7454e160765c204fcfa6984b35e583993ab9234d Mon Sep 17 00:00:00 2001 From: shahaibo <1023316923@qq.com> Date: Tue, 23 Apr 2024 10:52:10 +0800 Subject: [PATCH 14/18] =?UTF-8?q?BUGFIX:=E7=99=BB=E5=BD=95=E9=82=AE?= =?UTF-8?q?=E7=AE=B1=E7=B2=BE=E7=A1=AE=E5=8C=B9=E9=85=8D;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ai/da/common/RabbitMQ/MQConsumer.java | 106 +++++++++--------- .../ai/da/common/config/MyTaskScheduler.java | 2 +- 2 files changed, 54 insertions(+), 54 deletions(-) diff --git a/src/main/java/com/ai/da/common/RabbitMQ/MQConsumer.java b/src/main/java/com/ai/da/common/RabbitMQ/MQConsumer.java index c04093dd..77f46dbd 100644 --- a/src/main/java/com/ai/da/common/RabbitMQ/MQConsumer.java +++ b/src/main/java/com/ai/da/common/RabbitMQ/MQConsumer.java @@ -104,58 +104,58 @@ public class MQConsumer { log.info("=============end listening==========="); } -// @RabbitListener(queues = MQConfig.GENERATE_QUEUE) -// @RabbitHandler -// public void generateConsumer1(Message msg, Channel channel) { -// generate(msg, channel, "consumer 1"); -// } -// -// @RabbitListener(queues = MQConfig.GENERATE_QUEUE) -// @RabbitHandler -// public void generateConsumer2(Message msg, Channel channel) { -// generate(msg, channel, "consumer 2"); -// } -// -// @RabbitListener(queues = MQConfig.GENERATE_QUEUE) -// @RabbitHandler -// public void generateConsumer3(Message msg, Channel channel) { -// generate(msg, channel, "consumer 3"); -// } -// -// @RabbitListener(queues = MQConfig.GENERATE_QUEUE) -// @RabbitHandler -// public void generateConsumer4(Message msg, Channel channel) { -// generate(msg, channel, "consumer 4"); -// } -// -// @RabbitListener(queues = MQConfig.GENERATE_QUEUE) -// @RabbitHandler -// public void generateConsumer5(Message msg, Channel channel) { -// generate(msg, channel, "consumer 5"); -// } -// -// @RabbitListener(queues = MQConfig.GENERATE_QUEUE) -// @RabbitHandler -// public void generateConsumer6(Message msg, Channel channel) { -// generate(msg, channel, "consumer 6"); -// } -// -// @RabbitListener(queues = MQConfig.GENERATE_QUEUE) -// @RabbitHandler -// public void generateConsumer7(Message msg, Channel channel) { -// generate(msg, channel, "consumer 7"); -// } -// -// @RabbitListener(queues = MQConfig.GENERATE_QUEUE) -// @RabbitHandler -// public void generateConsumer8(Message msg, Channel channel) { -// generate(msg, channel, "consumer 8"); -// } -// -// @RabbitListener(queues = MQConfig.GENERATE_QUEUE) -// @RabbitHandler -// public void generateConsumer9(Message msg, Channel channel) { -// generate(msg, channel, "consumer 9"); -// } + @RabbitListener(queues = MQConfig.GENERATE_QUEUE) + @RabbitHandler + public void generateConsumer1(Message msg, Channel channel) { + generate(msg, channel, "consumer 1"); + } + + @RabbitListener(queues = MQConfig.GENERATE_QUEUE) + @RabbitHandler + public void generateConsumer2(Message msg, Channel channel) { + generate(msg, channel, "consumer 2"); + } + + @RabbitListener(queues = MQConfig.GENERATE_QUEUE) + @RabbitHandler + public void generateConsumer3(Message msg, Channel channel) { + generate(msg, channel, "consumer 3"); + } + + @RabbitListener(queues = MQConfig.GENERATE_QUEUE) + @RabbitHandler + public void generateConsumer4(Message msg, Channel channel) { + generate(msg, channel, "consumer 4"); + } + + @RabbitListener(queues = MQConfig.GENERATE_QUEUE) + @RabbitHandler + public void generateConsumer5(Message msg, Channel channel) { + generate(msg, channel, "consumer 5"); + } + + @RabbitListener(queues = MQConfig.GENERATE_QUEUE) + @RabbitHandler + public void generateConsumer6(Message msg, Channel channel) { + generate(msg, channel, "consumer 6"); + } + + @RabbitListener(queues = MQConfig.GENERATE_QUEUE) + @RabbitHandler + public void generateConsumer7(Message msg, Channel channel) { + generate(msg, channel, "consumer 7"); + } + + @RabbitListener(queues = MQConfig.GENERATE_QUEUE) + @RabbitHandler + public void generateConsumer8(Message msg, Channel channel) { + generate(msg, channel, "consumer 8"); + } + + @RabbitListener(queues = MQConfig.GENERATE_QUEUE) + @RabbitHandler + public void generateConsumer9(Message msg, Channel channel) { + generate(msg, channel, "consumer 9"); + } } 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 ee5b4d28..93ff24f6 100644 --- a/src/main/java/com/ai/da/common/config/MyTaskScheduler.java +++ b/src/main/java/com/ai/da/common/config/MyTaskScheduler.java @@ -19,7 +19,7 @@ public class MyTaskScheduler { // 定时任务,每十五天执行一次 // @Scheduled(cron = "0 0 0 ? * MON") -// @Scheduled(cron = "0 0 0 */15 * ?") + @Scheduled(cron = "0 0 0 */15 * ?") public void checkExpiry() { // 检测正式用户是否快要过期 QueryWrapper qw = new QueryWrapper<>(); From e70580c3889ddd85a94a95dcaea3f97773fdeb84 Mon Sep 17 00:00:00 2001 From: shahaibo <1023316923@qq.com> Date: Tue, 30 Apr 2024 10:19:40 +0800 Subject: [PATCH 15/18] =?UTF-8?q?BUGFIX:=E9=82=AE=E4=BB=B6;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 24 ++++++ .../ai/da/common/config/MyTaskScheduler.java | 81 ++++++++++++++++++- .../com/ai/da/common/utils/SendEmailUtil.java | 50 +++++++++++- .../da/service/impl/AccountServiceImpl.java | 33 ++++---- 4 files changed, 171 insertions(+), 17 deletions(-) diff --git a/pom.xml b/pom.xml index 14913240..4186fc61 100644 --- a/pom.xml +++ b/pom.xml @@ -170,6 +170,30 @@ commons-pool2 + + org.apache.poi + poi + 5.2.1 + + + + org.apache.poi + poi-ooxml + 5.2.1 + + + + commons-io + commons-io + 2.11.0 + + + + org.apache.logging.log4j + log4j-api + 2.17.1 + + 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 93ff24f6..d012ec10 100644 --- a/src/main/java/com/ai/da/common/config/MyTaskScheduler.java +++ b/src/main/java/com/ai/da/common/config/MyTaskScheduler.java @@ -2,13 +2,25 @@ package com.ai.da.common.config; import com.ai.da.common.utils.SendEmailUtil; import com.ai.da.mapper.AccountMapper; +import com.ai.da.mapper.TrialOrderMapper; import com.ai.da.mapper.entity.Account; +import com.ai.da.mapper.entity.TrialOrder; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import org.springframework.scheduling.annotation.EnableScheduling; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; +import javax.annotation.PostConstruct; import javax.annotation.Resource; +import java.io.FileOutputStream; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; import java.util.List; @Component @@ -17,6 +29,14 @@ public class MyTaskScheduler { @Resource private AccountMapper accountMapper; + @Resource + private TrialOrderMapper trialOrderMapper; + + @PostConstruct + public void executeWeeklyHeavyStockReport() { + sendTrialOrderExcelToManagements(); + } + // 定时任务,每十五天执行一次 // @Scheduled(cron = "0 0 0 ? * MON") @Scheduled(cron = "0 0 0 */15 * ?") @@ -53,4 +73,63 @@ public class MyTaskScheduler { } } } + @Scheduled(cron = "0 0 8 * * ?") + public void sendTrialOrderExcelToManagements() { + // 获取前一天日期 + LocalDate yesterday = LocalDate.now().minusDays(1); + + // 查询前一天的试用订单 + QueryWrapper qw = new QueryWrapper<>(); + qw.lambda().between(TrialOrder::getCreateTime, yesterday.atStartOfDay(), yesterday.atTime(23, 59, 59)); + List trialOrders = trialOrderMapper.selectList(qw); + + if (!trialOrders.isEmpty()) { + // 创建Excel工作簿 + try (Workbook workbook = new XSSFWorkbook()) { + // 创建工作表 + Sheet sheet = workbook.createSheet("Trial Orders"); + // 创建标题行 + Row headerRow = sheet.createRow(0); + headerRow.createCell(0).setCellValue("ID"); + headerRow.createCell(1).setCellValue("Title"); + headerRow.createCell(2).setCellValue("Surname"); + headerRow.createCell(3).setCellValue("Given Name"); + headerRow.createCell(4).setCellValue("Username"); + headerRow.createCell(5).setCellValue("Email"); + headerRow.createCell(6).setCellValue("Country"); + headerRow.createCell(7).setCellValue("Occupation"); + headerRow.createCell(8).setCellValue("Create Time"); + headerRow.createCell(9).setCellValue("Update Time"); + headerRow.createCell(10).setCellValue("Status"); + + // 填充数据 + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + int rowNum = 1; + for (TrialOrder trialOrder : trialOrders) { + Row row = sheet.createRow(rowNum++); + row.createCell(0).setCellValue(trialOrder.getId()); + row.createCell(1).setCellValue(trialOrder.getTitle()); + row.createCell(2).setCellValue(trialOrder.getSurname()); + row.createCell(3).setCellValue(trialOrder.getGivenName()); + row.createCell(4).setCellValue(trialOrder.getUserName()); + row.createCell(5).setCellValue(trialOrder.getEmail()); + row.createCell(6).setCellValue(trialOrder.getCountry()); + row.createCell(7).setCellValue(trialOrder.getOccupation()); + row.createCell(8).setCellValue(trialOrder.getCreateTime().format(formatter)); + row.createCell(9).setCellValue(trialOrder.getUpdateTime().format(formatter)); + row.createCell(10).setCellValue(trialOrder.getStatus()); + } + + // 保存Excel文件 + String fileName = "trialOrder-" + yesterday.format(DateTimeFormatter.ofPattern("yyyyMMdd")) + ".xlsx"; + try (FileOutputStream fileOut = new FileOutputStream(fileName)) { + workbook.write(fileOut); + SendEmailUtil.sendExcelEmail("1023316923@qq.com", null, Files.readAllBytes(Paths.get(fileName)), fileName); + + } + } catch (IOException e) { + e.printStackTrace(); + } + } + } } 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 1fcba907..943d12ab 100644 --- a/src/main/java/com/ai/da/common/utils/SendEmailUtil.java +++ b/src/main/java/com/ai/da/common/utils/SendEmailUtil.java @@ -9,12 +9,14 @@ import com.tencentcloudapi.common.exception.TencentCloudSDKException; import com.tencentcloudapi.common.profile.ClientProfile; import com.tencentcloudapi.common.profile.HttpProfile; import com.tencentcloudapi.ses.v20201002.SesClient; +import com.tencentcloudapi.ses.v20201002.models.Attachment; import com.tencentcloudapi.ses.v20201002.models.SendEmailRequest; import com.tencentcloudapi.ses.v20201002.models.SendEmailResponse; import com.tencentcloudapi.ses.v20201002.models.Template; import lombok.extern.slf4j.Slf4j; import org.springframework.util.StringUtils; +import java.util.Base64; import java.util.Date; /** @@ -130,7 +132,8 @@ public class SendEmailUtil { private final static Long YOUR_TRIAL_TEMPLATE_ID = 117214L; private final static Long APPROVAL_TEMPLATE_ID = 117215L; private final static Long NOTIFICATION_TEMPLATE_ID = 117216L; - public static void sendCustomEmail(String receiverAddress, String senderAddress, TrialOrder trialOrder, int emailType) { + private final static Long NOTIFICATION_CHINESE_TEMPLATE_ID = 122229L; + public static void sendCustomEmail(String receiverAddress, String senderAddress, TrialOrder trialOrder, int emailType, String country) { try { // 实例化一个认证对象 Credential cred = new Credential(SECRET_ID, SECRET_KEy); @@ -162,7 +165,11 @@ public class SendEmailUtil { break; case 3: subject = "Approval Confirmation for AiDA System Trial Access"; - template.setTemplateID(NOTIFICATION_TEMPLATE_ID); + if (country.equals("China")) { + template.setTemplateID(NOTIFICATION_CHINESE_TEMPLATE_ID); + }else { + template.setTemplateID(NOTIFICATION_TEMPLATE_ID); + } template.setTemplateData(buildNotificationData(trialOrder)); break; default: @@ -180,6 +187,45 @@ public class SendEmailUtil { throw new BusinessException("failed.to.send.mail"); } } + + public static void sendExcelEmail(String receiverAddress, String senderAddress, byte[] fileContent, String fileName) { + try { + // 实例化一个认证对象 + Credential cred = new Credential(SECRET_ID, SECRET_KEy); + HttpProfile httpProfile = new HttpProfile(); + httpProfile.setEndpoint("ses.tencentcloudapi.com"); + ClientProfile clientProfile = new ClientProfile(); + clientProfile.setHttpProfile(httpProfile); + SesClient client = new SesClient(cred, "ap-hongkong", clientProfile); + SendEmailRequest req = new SendEmailRequest(); + if (StringUtils.isEmpty(senderAddress)) { + senderAddress = SEND_ADDRESS; + } + req.setFromEmailAddress(senderAddress); + req.setDestination(new String[]{receiverAddress}); + + // 根据邮件类型设置不同的主题和模板 + String subject = ""; + Template template = new Template(); + subject = "昨日试用订单数据"; + template.setTemplateID(YOUR_TRIAL_TEMPLATE_ID); + + req.setSubject(subject); + req.setTemplate(template); + + Attachment attachment = new Attachment(); + attachment.setFileName(fileName); // 设置附件文件名 + // 设置附件内容 + attachment.setContent(Base64.getEncoder().encodeToString(fileContent)); + req.setAttachments(new Attachment[] {attachment}); + // 发送邮件 + SendEmailResponse resp = client.SendEmail(req); + log.info("短信发送结果res###{}", SendEmailResponse.toJsonString(resp)); + } catch (TencentCloudSDKException e) { + log.info("邮件发送失败###{}", e.toString()); + throw new BusinessException("failed.to.send.mail"); + } + } private final static Long WILLBEEXPIRED_TEMPLATE_ID = 118178L; public static void sendWillBeExpiredEmail(Account account, String senderAddress) { try { diff --git a/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java b/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java index 198db146..592459d9 100644 --- a/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java @@ -9,9 +9,7 @@ import com.ai.da.common.response.ResultEnum; import com.ai.da.common.security.jwt.JWTTokenHelper; import com.ai.da.common.utils.*; import com.ai.da.mapper.AccountMapper; -import com.ai.da.mapper.LibraryMapper; import com.ai.da.mapper.TrialOrderMapper; -import com.ai.da.mapper.UserLikeGroupMapper; import com.ai.da.mapper.entity.Account; import com.ai.da.mapper.entity.AccountLoginLog; import com.ai.da.mapper.entity.TrialOrder; @@ -32,7 +30,6 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; -import org.checkerframework.checker.units.qual.A; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.Assert; @@ -504,9 +501,9 @@ public class AccountServiceImpl extends ServiceImpl impl 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); +// SendEmailUtil.sendCustomEmail("1023316923@qq.com", null, trialOrder,1, trialOrder.getCountry()); +// SendEmailUtil.sendCustomEmail("calvinwong@aidlab.hk", null, trialOrder,1, trialOrder.getCountry()); +// SendEmailUtil.sendCustomEmail("kaicpang.pang@connect.polyu.hk", null, trialOrder,1, trialOrder.getCountry()); // 判断当前的试用订单是否自动批准 if (AutoApproved.getStatus()) { // 改变试用订单状态,新增试用用户 @@ -534,10 +531,14 @@ public class AccountServiceImpl extends ServiceImpl impl 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); - SendEmailUtil.sendCustomEmail(account.getUserEmail(), null, trialOrder, 3); +// 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()); + }else { + SendEmailUtil.sendCustomEmail(account.getUserEmail(), null, trialOrder, 3, trialOrder.getCountry()); + } } return Boolean.TRUE; } @@ -584,10 +585,14 @@ public class AccountServiceImpl extends ServiceImpl impl 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); - SendEmailUtil.sendCustomEmail(account.getUserEmail(), null, trialOrder, 3); +// 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()); + }else { + SendEmailUtil.sendCustomEmail(account.getUserEmail(), null, trialOrder, 3, trialOrder.getCountry()); + } } return Boolean.TRUE; } From d2e917e3cea917e7f9f8d3d93a6f33d0af23e462 Mon Sep 17 00:00:00 2001 From: shahaibo <1023316923@qq.com> Date: Tue, 30 Apr 2024 10:27:39 +0800 Subject: [PATCH 16/18] =?UTF-8?q?BUGFIX:=E9=82=AE=E4=BB=B6;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/ai/da/common/config/MyTaskScheduler.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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 d012ec10..14e679ab 100644 --- a/src/main/java/com/ai/da/common/config/MyTaskScheduler.java +++ b/src/main/java/com/ai/da/common/config/MyTaskScheduler.java @@ -125,7 +125,8 @@ public class MyTaskScheduler { try (FileOutputStream fileOut = new FileOutputStream(fileName)) { workbook.write(fileOut); SendEmailUtil.sendExcelEmail("1023316923@qq.com", null, Files.readAllBytes(Paths.get(fileName)), fileName); - + SendEmailUtil.sendExcelEmail("calvinwong@aidlab.hk", null, Files.readAllBytes(Paths.get(fileName)), fileName); + SendEmailUtil.sendExcelEmail("kaicpang.pang@connect.polyu.hk", null, Files.readAllBytes(Paths.get(fileName)), fileName); } } catch (IOException e) { e.printStackTrace(); From de865b918f6c6ccf8eecf400148451311ef478f4 Mon Sep 17 00:00:00 2001 From: shahaibo <1023316923@qq.com> Date: Tue, 30 Apr 2024 10:32:55 +0800 Subject: [PATCH 17/18] =?UTF-8?q?BUGFIX:=E9=82=AE=E4=BB=B6;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ai/da/common/config/MyTaskScheduler.java | 8 ++++---- src/main/java/com/ai/da/common/utils/SendEmailUtil.java | 3 ++- 2 files changed, 6 insertions(+), 5 deletions(-) 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 14e679ab..919f7944 100644 --- a/src/main/java/com/ai/da/common/config/MyTaskScheduler.java +++ b/src/main/java/com/ai/da/common/config/MyTaskScheduler.java @@ -32,10 +32,10 @@ public class MyTaskScheduler { @Resource private TrialOrderMapper trialOrderMapper; - @PostConstruct - public void executeWeeklyHeavyStockReport() { - sendTrialOrderExcelToManagements(); - } +// @PostConstruct +// public void executeWeeklyHeavyStockReport() { +// sendTrialOrderExcelToManagements(); +// } // 定时任务,每十五天执行一次 // @Scheduled(cron = "0 0 0 ? * MON") 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 943d12ab..e9389317 100644 --- a/src/main/java/com/ai/da/common/utils/SendEmailUtil.java +++ b/src/main/java/com/ai/da/common/utils/SendEmailUtil.java @@ -133,6 +133,7 @@ public class SendEmailUtil { private final static Long APPROVAL_TEMPLATE_ID = 117215L; private final static Long NOTIFICATION_TEMPLATE_ID = 117216L; private final static Long NOTIFICATION_CHINESE_TEMPLATE_ID = 122229L; + private final static Long TRIAL_ORDER_LIST_ID = 122273L; public static void sendCustomEmail(String receiverAddress, String senderAddress, TrialOrder trialOrder, int emailType, String country) { try { // 实例化一个认证对象 @@ -208,7 +209,7 @@ public class SendEmailUtil { String subject = ""; Template template = new Template(); subject = "昨日试用订单数据"; - template.setTemplateID(YOUR_TRIAL_TEMPLATE_ID); + template.setTemplateID(TRIAL_ORDER_LIST_ID); req.setSubject(subject); req.setTemplate(template); From a54f7e7c306f89f1deb7fd0a086803777eac6ecd Mon Sep 17 00:00:00 2001 From: shahaibo <1023316923@qq.com> Date: Wed, 1 May 2024 11:54:19 +0800 Subject: [PATCH 18/18] =?UTF-8?q?BUGFIX:=E9=82=AE=E4=BB=B6;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/ai/da/common/config/MyTaskScheduler.java | 1 + 1 file changed, 1 insertion(+) 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 919f7944..79889833 100644 --- a/src/main/java/com/ai/da/common/config/MyTaskScheduler.java +++ b/src/main/java/com/ai/da/common/config/MyTaskScheduler.java @@ -127,6 +127,7 @@ public class MyTaskScheduler { SendEmailUtil.sendExcelEmail("1023316923@qq.com", null, Files.readAllBytes(Paths.get(fileName)), fileName); SendEmailUtil.sendExcelEmail("calvinwong@aidlab.hk", null, Files.readAllBytes(Paths.get(fileName)), fileName); SendEmailUtil.sendExcelEmail("kaicpang.pang@connect.polyu.hk", null, Files.readAllBytes(Paths.get(fileName)), fileName); + SendEmailUtil.sendExcelEmail("kimwong@code-create.com.hk", null, Files.readAllBytes(Paths.get(fileName)), fileName); } } catch (IOException e) { e.printStackTrace();