From 903bafb24567738bf5cabdcac6aec43cce5192c8 Mon Sep 17 00:00:00 2001 From: xupei Date: Wed, 6 Nov 2024 17:27:16 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AE=A1=E7=90=86=E5=91=98=E7=B3=BB=E7=BB=9F?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ConvenientInquiryController.java | 7 ++--- .../da/mapper/primary/TrialOrderMapper.java | 2 ++ .../com/ai/da/service/AccountService.java | 2 ++ .../da/service/ConvenientInquiryService.java | 4 +-- .../da/service/impl/AccountServiceImpl.java | 27 +++++++++++++++++++ .../impl/ConvenientInquiryServiceImpl.java | 26 ++++++++++++------ .../resources/mapper/primary/DesignMapper.xml | 2 +- .../mapper/primary/TrialOrderMapper.xml | 9 +++++++ 8 files changed, 65 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/ai/da/controller/ConvenientInquiryController.java b/src/main/java/com/ai/da/controller/ConvenientInquiryController.java index 7953b74a..25010c6d 100644 --- a/src/main/java/com/ai/da/controller/ConvenientInquiryController.java +++ b/src/main/java/com/ai/da/controller/ConvenientInquiryController.java @@ -122,14 +122,15 @@ public class ConvenientInquiryController { @ApiOperation("试用用户到正式用户的转化率") @GetMapping("/conversionRate") - public Response> conversionRate() { + public Response> conversionRate() { return Response.success(convenientInquiryService.conversionRate()); } @ApiOperation("试用用户国家/城市分布") @GetMapping("/trialUserCountry") - public Response>> trialUserCountry() { - return Response.success(convenientInquiryService.trialUserCountry()); + public Response>> trialUserCountry(@ApiParam(value = "startTime") @RequestParam(required = false) @Nullable String startTime, + @ApiParam(value = "endTime") @RequestParam(required = false) @Nullable String endTime) { + return Response.success(convenientInquiryService.trialUserCountry(startTime, endTime)); } @ApiOperation("添加用户") diff --git a/src/main/java/com/ai/da/mapper/primary/TrialOrderMapper.java b/src/main/java/com/ai/da/mapper/primary/TrialOrderMapper.java index 65709299..f39f8dee 100644 --- a/src/main/java/com/ai/da/mapper/primary/TrialOrderMapper.java +++ b/src/main/java/com/ai/da/mapper/primary/TrialOrderMapper.java @@ -3,6 +3,7 @@ package com.ai.da.mapper.primary; import com.ai.da.common.config.mybatis.plus.CommonMapper; import com.ai.da.mapper.primary.entity.TrialOrder; +import java.util.List; import java.util.Map; /** @@ -15,6 +16,7 @@ public interface TrialOrderMapper extends CommonMapper { Map countOfficialUser(); + List selectIdsByEmails(List emails); } diff --git a/src/main/java/com/ai/da/service/AccountService.java b/src/main/java/com/ai/da/service/AccountService.java index 5db57bc8..89610d8e 100644 --- a/src/main/java/com/ai/da/service/AccountService.java +++ b/src/main/java/com/ai/da/service/AccountService.java @@ -181,4 +181,6 @@ public interface AccountService extends IService { String updateNoLoginRequiredNew(NoLoginRequiredDTO noLoginRequiredDTO, HttpServletRequest request); void halfPricePromotion(); + + List getPaidCustomerEmail(); } diff --git a/src/main/java/com/ai/da/service/ConvenientInquiryService.java b/src/main/java/com/ai/da/service/ConvenientInquiryService.java index 49424df6..29b4a551 100644 --- a/src/main/java/com/ai/da/service/ConvenientInquiryService.java +++ b/src/main/java/com/ai/da/service/ConvenientInquiryService.java @@ -32,9 +32,9 @@ public interface ConvenientInquiryService extends IService { Map> getActiveUserFunc(String startTime, String endTime, List ids); - Map conversionRate(); + Map conversionRate(); - Map> trialUserCountry(); + Map> trialUserCountry(String startTime, String endTime); Boolean addUser(AccountAddDTO accountAddDTO); 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 0cf6e66e..1fc39366 100644 --- a/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java @@ -571,6 +571,7 @@ public class AccountServiceImpl extends ServiceImpl impl account.setIsBeginner(1); account.setSystemUser(3); account.setValidStartTime(System.currentTimeMillis()); + account.setCountry(accountTrialDTO.getCountry()); if (link) { account.setValidEndTime(toDayEnd(Instant.now().plus(5, ChronoUnit.DAYS).toEpochMilli())); } else { @@ -583,6 +584,7 @@ public class AccountServiceImpl extends ServiceImpl impl account.setUserPassword("Third-000000"); account.setUserEmail(trialOrder.getEmail()); account.setLanguage(Language.ENGLISH.name()); + account.setCountry(accountTrialDTO.getCountry()); account.setValidStartTime(System.currentTimeMillis()); if (link) { account.setValidEndTime(toDayEnd(Instant.now().plus(5, ChronoUnit.DAYS).toEpochMilli())); @@ -1464,6 +1466,31 @@ public class AccountServiceImpl extends ServiceImpl impl } } + private static final String QUERY_PAID_CUSTOMER_EMAIL = "SELECT distinct c.email " + + "FROM `pmr_wc_order_stats` o " + + "inner join `pmr_wc_customer_lookup` c " + + "on o.customer_id = c.customer_id " + + "and o.net_total in (5000, 500, 250) " + + "and o.`status` != 'wc-failed' " + + "and c.email not in ('1779019091@qq.com', 'xupei3360@163.com', '1627315083@qq.com', 'gigiwu33@hotmail.com')"; + + public List getPaidCustomerEmail(){ + List paidCustomerEmail = new ArrayList<>(); + try (Connection connection = dataSource.getConnection(); + PreparedStatement preparedStatement = connection.prepareStatement(QUERY_PAID_CUSTOMER_EMAIL)) { + try (ResultSet queryOrderResultSet = preparedStatement.executeQuery()) { + while (queryOrderResultSet.next()) { + paidCustomerEmail.add(queryOrderResultSet.getString("email")); + } + } + } catch (Exception e) { + // 记录异常并处理 + e.printStackTrace(); +// return null; + } + return paidCustomerEmail; + } + // 收集调查问卷的信息 @Override @Transactional(rollbackFor = Exception.class) 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 2bad5969..1ce25b35 100644 --- a/src/main/java/com/ai/da/service/impl/ConvenientInquiryServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/ConvenientInquiryServiceImpl.java @@ -392,7 +392,7 @@ public class ConvenientInquiryServiceImpl extends ServiceImpl conversionRate() { + public Map conversionRate() { QueryWrapper queryWrapper = new QueryWrapper<>(); // 获取试用用户总数 @@ -402,22 +402,32 @@ public class ConvenientInquiryServiceImpl extends ServiceImpl officialMaps = trialOrderMapper.countOfficialUser(); - Long trialToOfficial = officialMaps.get("count"); + List paidCustomerEmail = accountService.getPaidCustomerEmail(); + List paidTrialUsers = trialOrderMapper.selectIdsByEmails(paidCustomerEmail); + +// Map officialMaps = trialOrderMapper.countOfficialUser(); +// Long trialToOfficial = officialMaps.get("count"); // 计算转化率 - HashMap resp = new HashMap<>(); + HashMap resp = new HashMap<>(); resp.put("trialUserCount", totalTrials.floatValue()); - resp.put("trialToOfficialCount", trialToOfficial.floatValue()); - resp.put("conversionRate", new BigDecimal(trialToOfficial).divide(new BigDecimal(totalTrials), 2, RoundingMode.HALF_UP).floatValue()); - + resp.put("trialToOfficialCount", (float) paidTrialUsers.size()); + resp.put("conversionRate", new BigDecimal(paidTrialUsers.size()).divide(new BigDecimal(totalTrials), 6, RoundingMode.HALF_UP).floatValue()); + resp.put("paidTrialUser", paidTrialUsers); return resp; } // 试用用户地区统计 - public Map> trialUserCountry() { + public Map> trialUserCountry(String startTime, String endTime) { QueryWrapper queryWrapper = new QueryWrapper<>(); + if (!StringUtils.isNullOrEmpty(startTime)){ + queryWrapper.gt("create_time", startTime); + } + if (!StringUtils.isNullOrEmpty(endTime)){ + queryWrapper.lt("create_time", endTime); + } + queryWrapper.select("country, count(id) as count") .groupBy("country"); List> countryCount = trialOrderMapper.selectMaps(queryWrapper); diff --git a/src/main/resources/mapper/primary/DesignMapper.xml b/src/main/resources/mapper/primary/DesignMapper.xml index 5d970145..8a056a59 100644 --- a/src/main/resources/mapper/primary/DesignMapper.xml +++ b/src/main/resources/mapper/primary/DesignMapper.xml @@ -29,7 +29,7 @@ + +