From cbc760ebaf272e1db22a8c100bbdb845c03f1533 Mon Sep 17 00:00:00 2001 From: xupei Date: Sun, 13 Apr 2025 17:20:14 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BE=BF=E5=88=A9=E6=9F=A5=E8=AF=A2--=E5=90=84?= =?UTF-8?q?=E7=89=88=E6=9C=AC=E7=AE=A1=E7=90=86=E5=91=98=E6=9F=A5=E7=9C=8B?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E7=9A=84design=E9=A2=91=E6=AC=A1=E5=92=8C?= =?UTF-8?q?=E5=90=84=E7=94=9F=E6=88=90=E5=8A=9F=E8=83=BD=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=E9=A2=91=E6=AC=A1=E4=BB=A5=E5=8F=8A=E7=A7=AF=E5=88=86=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=E6=83=85=E5=86=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ConvenientInquiryController.java | 32 ++---- .../ai/da/mapper/primary/AccountMapper.java | 6 +- .../ai/da/mapper/primary/DesignMapper.java | 2 +- .../da/service/ConvenientInquiryService.java | 7 +- .../impl/ConvenientInquiryServiceImpl.java | 107 +++++++++++++++++- .../mapper/primary/AccountMapper.xml | 101 +++++++++++++++++ .../resources/mapper/primary/DesignMapper.xml | 24 ++-- 7 files changed, 237 insertions(+), 42 deletions(-) diff --git a/src/main/java/com/ai/da/controller/ConvenientInquiryController.java b/src/main/java/com/ai/da/controller/ConvenientInquiryController.java index 95014eec..9925474f 100644 --- a/src/main/java/com/ai/da/controller/ConvenientInquiryController.java +++ b/src/main/java/com/ai/da/controller/ConvenientInquiryController.java @@ -7,9 +7,7 @@ import com.ai.da.common.response.Response; import com.ai.da.mapper.primary.DesignMapper; import com.ai.da.mapper.primary.entity.Account; import com.ai.da.mapper.primary.entity.TrialOrder; -import com.ai.da.model.dto.AccountAddDTO; -import com.ai.da.model.dto.QueryPaymentInfoDTO; -import com.ai.da.model.dto.UserDesignStatisticDTO; +import com.ai.da.model.dto.*; import com.ai.da.model.vo.PaymentInfoVO; import com.ai.da.model.vo.QuestionnaireFeedbackVO; import com.ai.da.model.vo.QuestionnaireVO; @@ -17,7 +15,6 @@ import com.ai.da.model.vo.QueryUserConditionsVO; import com.ai.da.service.AccountService; import com.ai.da.service.ConvenientInquiryService; import com.baomidou.mybatisplus.core.metadata.IPage; -import io.netty.util.internal.StringUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; @@ -63,26 +60,7 @@ public class ConvenientInquiryController { @GetMapping("/getDesignStatistic") public Response> getDesignStatistic(@RequestParam(required = false) String startTime, @RequestParam(required = false) String endTime, @RequestParam(required = false) List ids, @RequestParam(required = false) String email) { - Long accountId = UserContext.getUserHolder().getId(); - String userEmail = accountService.getById(accountId).getUserEmail(); - if (accountId.equals(31L) || accountId.equals(87L) || accountId.equals(83L) - || accountId.equals(6L) || accountId.equals(4L) || accountId.equals(73L) - || userEmail.equals("joho8228@hotmail.com") || userEmail.equals("wanninghua160@gmail.com") - ) { - if (StringUtil.isNullOrEmpty(startTime)) startTime = "2024-02-01 00:00:00"; - if (StringUtil.isNullOrEmpty(endTime)) { - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); - Date date = new Date(); - endTime = simpleDateFormat.format(date); - } - if (!StringUtil.isNullOrEmpty(email)){ - email = email.trim(); - } - List designStatistic = designMapper.getDesignStatistic(startTime, endTime, ids, email); - return Response.success(designStatistic); - } else { - return Response.fail("Sorry, you don't have permission"); - } + return Response.success(convenientInquiryService.getDesignStatistic(startTime, endTime, ids, email)); } @@ -215,4 +193,10 @@ public class ConvenientInquiryController { public Response exportTransactionRecords(@Valid @RequestBody QueryPaymentInfoDTO queryPaymentInfoDTO, HttpServletResponse response){ return Response.success(convenientInquiryService.exportTransactionRecords(queryPaymentInfoDTO, response)); } + + @ApiOperation("获取生成功能使用频次") + @PostMapping("/getGenerateFrequency") + public Response> getGenerateFrequency(@Valid @RequestBody AccountCreditsUsageQueryDTO queryDTO){ + return Response.success(convenientInquiryService.getGenerateFrequency(queryDTO)); + } } diff --git a/src/main/java/com/ai/da/mapper/primary/AccountMapper.java b/src/main/java/com/ai/da/mapper/primary/AccountMapper.java index 8826eb71..65d6e8fe 100644 --- a/src/main/java/com/ai/da/mapper/primary/AccountMapper.java +++ b/src/main/java/com/ai/da/mapper/primary/AccountMapper.java @@ -2,8 +2,8 @@ package com.ai.da.mapper.primary; import com.ai.da.common.config.mybatis.plus.CommonMapper; import com.ai.da.mapper.primary.entity.Account; +import com.ai.da.model.dto.AccountCreditsUsageDTO; -import java.util.Date; import java.util.List; /** @@ -32,4 +32,8 @@ public interface AccountMapper extends CommonMapper { void toVisitor(Long id); + List selectCreditUsage(boolean groupByEvent, String changeEvent, String role, String userEmail, Long id, String startTime, String endTime, Integer size, Integer offset); + + int countCreditUsage(boolean groupByEvent, String changeEvent, String role, String userEmail, Long id, String startTime, String endTime); + } 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 425b5a2c..85c69f70 100644 --- a/src/main/java/com/ai/da/mapper/primary/DesignMapper.java +++ b/src/main/java/com/ai/da/mapper/primary/DesignMapper.java @@ -18,7 +18,7 @@ public interface DesignMapper extends CommonMapper { //返回插入数据后生成的主键 Long insertDesign(Design design); - List getDesignStatistic(String startTime, String endTime, List ids, String email); + List getDesignStatistic(String startTime, String endTime, List ids, String email, String role); List selectDeleteList(); } diff --git a/src/main/java/com/ai/da/service/ConvenientInquiryService.java b/src/main/java/com/ai/da/service/ConvenientInquiryService.java index fa279d0d..8cd4eb6b 100644 --- a/src/main/java/com/ai/da/service/ConvenientInquiryService.java +++ b/src/main/java/com/ai/da/service/ConvenientInquiryService.java @@ -4,8 +4,7 @@ import com.ai.da.common.response.PageBaseResponse; import com.ai.da.mapper.primary.entity.Account; import com.ai.da.mapper.primary.entity.Questionnaire; import com.ai.da.mapper.primary.entity.TrialOrder; -import com.ai.da.model.dto.AccountAddDTO; -import com.ai.da.model.dto.QueryPaymentInfoDTO; +import com.ai.da.model.dto.*; import com.ai.da.model.vo.PaymentInfoVO; import com.ai.da.model.vo.QuestionnaireFeedbackVO; import com.ai.da.model.vo.QuestionnaireVO; @@ -21,6 +20,8 @@ public interface ConvenientInquiryService extends IService { IPage getTrial(QueryUserConditionsVO queryUserConditionsVO); + List getDesignStatistic(String startTime, String endTime, List ids, String email); + QuestionnaireFeedbackVO getQuestionnaireInfo(); List getAllQuestionnaire(); @@ -53,4 +54,6 @@ public interface ConvenientInquiryService extends IService { Map> getCities(); String exportTransactionRecords(QueryPaymentInfoDTO queryPaymentInfoDTO, HttpServletResponse response); + + PageBaseResponse getGenerateFrequency(AccountCreditsUsageQueryDTO queryDTO); } diff --git a/src/main/java/com/ai/da/service/impl/ConvenientInquiryServiceImpl.java b/src/main/java/com/ai/da/service/impl/ConvenientInquiryServiceImpl.java index 8e92d0a8..00192bc7 100644 --- a/src/main/java/com/ai/da/service/impl/ConvenientInquiryServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/ConvenientInquiryServiceImpl.java @@ -5,14 +5,14 @@ import com.ai.da.common.constant.CommonConstant; import com.ai.da.common.context.UserContext; import com.ai.da.common.enums.CreditsEventsEnum; import com.ai.da.common.response.PageBaseResponse; +import com.ai.da.common.response.ResultEnum; import com.ai.da.common.utils.CopyUtil; import com.ai.da.common.utils.DateUtil; import com.ai.da.mapper.primary.*; import com.ai.da.mapper.primary.entity.Account; import com.ai.da.mapper.primary.entity.Questionnaire; import com.ai.da.mapper.primary.entity.TrialOrder; -import com.ai.da.model.dto.AccountAddDTO; -import com.ai.da.model.dto.QueryPaymentInfoDTO; +import com.ai.da.model.dto.*; import com.ai.da.model.enums.Language; import com.ai.da.model.vo.*; import com.ai.da.service.*; @@ -41,6 +41,7 @@ import java.math.BigDecimal; import java.math.RoundingMode; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; +import java.text.SimpleDateFormat; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.*; @@ -68,10 +69,15 @@ public class ConvenientInquiryServiceImpl extends ServiceImpl ADMIN_IDS = Arrays.asList(4L, 6L, 31L, 73L, 83L, 87L); + private static final List ADMIN_IDS_READ_ONLY = Arrays.asList(12592L, 12201L); + public IPage getTrial(QueryUserConditionsVO queryUserConditionsVO) { log.info("getTrial parameter : {},page:{}, size:{}", queryUserConditionsVO, queryUserConditionsVO.getPage(), queryUserConditionsVO.getSize()); /* 添加按条件查询试用用户 */ @@ -122,6 +128,46 @@ public class ConvenientInquiryServiceImpl extends ServiceImpl trialOrders = trialOrderMapper.selectList(null); } + public List getDesignStatistic(String startTime, String endTime, List ids, + String email) { + Long accountId = UserContext.getUserHolder().getId(); + Account account = accountService.getById(accountId); + // 允许查看数据的用户id + if (Objects.nonNull(account.getSystemUser()) + && (account.getSystemUser().equals(5) + || account.getSystemUser().equals(7) + || ADMIN_IDS.contains(account.getId()) + || ADMIN_IDS_READ_ONLY.contains(account.getId()) + )) { + if (StringUtil.isNullOrEmpty(startTime)) startTime = "2024-02-01 00:00:00"; + if (StringUtil.isNullOrEmpty(endTime)) { + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); + Date date = new Date(); + endTime = simpleDateFormat.format(date); + } + if (!StringUtil.isNullOrEmpty(email)){ + email = email.trim(); + } + String role; + switch (account.getSystemUser()){ + case 5: + role = "corp"; + break; + case 7: + role = "edu"; + break; + case 1: + role = "prsn"; + break; + default: + throw new BusinessException("Sorry, you don't have permission", ResultEnum.PROMPT.getCode()); + } + return designMapper.getDesignStatistic(startTime, endTime, ids, email, role); + } else { + throw new BusinessException("Sorry, you don't have permission", ResultEnum.PROMPT.getCode()); + } + } + public QuestionnaireFeedbackVO getQuestionnaireInfo() { String title = "AiDA_3.0 Feedback Survey--06/2024"; @@ -802,4 +848,61 @@ public class ConvenientInquiryServiceImpl extends ServiceImpl getGenerateFrequency(AccountCreditsUsageQueryDTO queryDTO){ + Long accountId = UserContext.getUserHolder().getId(); + Account account = accountService.getById(accountId); + // 允许查看数据的用户id + if (Objects.nonNull(account.getSystemUser()) + && (account.getSystemUser().equals(5) + || account.getSystemUser().equals(7) + || ADMIN_IDS.contains(account.getId()) + || ADMIN_IDS_READ_ONLY.contains(account.getId()) + )) { + boolean groupByEvent = !StringUtil.isNullOrEmpty(queryDTO.getChangeEvent()); + String role; + switch (account.getSystemUser()){ + case 5: + role = "corp"; + break; + case 7: + role = "edu"; + break; + case 1: + role = "prsn"; + break; + default: + throw new BusinessException("Sorry, you don't have permission"); + } + Integer size = queryDTO.getSize(); + int offset = (queryDTO.getPage() - 1) * size; + List creditsUsageDTOS = accountMapper.selectCreditUsage( + groupByEvent, queryDTO.getChangeEvent(), role, queryDTO.getUserEmail(), queryDTO.getId(), + queryDTO.getStartTime(), queryDTO.getEndTime(), size, offset); + if (!creditsUsageDTOS.isEmpty()){ + int total = accountMapper.countCreditUsage( + groupByEvent, queryDTO.getChangeEvent(), role, queryDTO.getUserEmail(), queryDTO.getId(), + queryDTO.getStartTime(), queryDTO.getEndTime()); + // 总页数 + double totalPage = Math.ceil((double) total / size); + // 组装返回参数 + PageBaseResponse response = new PageBaseResponse<>(); + response.setContent(creditsUsageDTOS); + response.setPage(queryDTO.getPage()); + response.setSize(size); + response.setTotal(total); + response.setPages((long) totalPage); + return response; + }else { + return new PageBaseResponse<>(); + } + }else { + throw new BusinessException("Sorry, you don't have permission"); + } + } + } diff --git a/src/main/resources/mapper/primary/AccountMapper.xml b/src/main/resources/mapper/primary/AccountMapper.xml index c1155b88..c41ba29d 100644 --- a/src/main/resources/mapper/primary/AccountMapper.xml +++ b/src/main/resources/mapper/primary/AccountMapper.xml @@ -29,5 +29,106 @@ where id = #{id} + + + + + diff --git a/src/main/resources/mapper/primary/DesignMapper.xml b/src/main/resources/mapper/primary/DesignMapper.xml index 50cd460c..34c86c92 100644 --- a/src/main/resources/mapper/primary/DesignMapper.xml +++ b/src/main/resources/mapper/primary/DesignMapper.xml @@ -34,8 +34,19 @@ from t_account a left join t_design b on a.id = b.account_id + + + a.system_user IN (5, 6) + + + a.system_user IN (7, 8) + + + a.system_user IN (0, 1, 2, 3, 4) + + - b.create_date between #{startTime} and #{endTime} + AND b.create_date between #{startTime} and #{endTime} and b.create_date not like '%:01' @@ -52,17 +63,6 @@ GROUP BY b.account_id ORDER BY b.account_id asc) d left join trial_order c on d.user_email = c.email -