diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..480bdf5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,39 @@ +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ +.kotlin + +### IntelliJ IDEA ### +.idea/modules.xml +.idea/jarRepositories.xml +.idea/compiler.xml +.idea/libraries/ +*.iws +*.iml +*.ipr + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/.idea/.gitignore b/.idea/.gitignore index 35410ca..13566b8 100644 --- a/.idea/.gitignore +++ b/.idea/.gitignore @@ -1,7 +1,7 @@ -# 默认忽略的文件 +# Default ignored files /shelf/ /workspace.xml -# 基于编辑器的 HTTP 客户端请求 +# Editor-based HTTP Client requests /httpRequests/ # Datasource local storage ignored files /dataSources/ diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000..aa00ffa --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 639900d..82dbec8 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,6 +1,14 @@ - + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml index 35eb1dd..288b36b 100644 --- a/.idea/vcs.xml +++ b/.idea/vcs.xml @@ -1,6 +1,7 @@ - + + \ No newline at end of file diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..e005c94 --- /dev/null +++ b/pom.xml @@ -0,0 +1,135 @@ + + + 4.0.0 + + com.system + test + 1.0-SNAPSHOT + + + 17 + 17 + UTF-8 + 1.1.1 + 3.4.4 + 3.0.5 + 8.3.0 + 1.18.38 + 2.0.17 + + + + org.springframework.boot + spring-boot-starter-web + ${spring.boot.version} + + + + + org.springframework.boot + spring-boot-starter-aop + ${spring.boot.version} + + + + + cglib + cglib + 3.3.0 + + + + org.springframework + spring-aspects + 6.2.5 + + + + + org.mybatis.spring.boot + mybatis-spring-boot-starter + ${mybatis.starter.version} + + + + + com.mysql + mysql-connector-j + ${mysql.version} + + + + org.slf4j + slf4j-api + ${slf4j.version} + + + + org.projectlombok + lombok + ${lombok.version} + provided + + + + cn.hutool + hutool-all + 5.8.39 + + + + com.alibaba + fastjson + 2.0.53 + + + + + com.aliyun.oss + aliyun-sdk-oss + 3.17.4 + + + + org.springframework.boot + spring-boot-starter-mail + 3.4.4 + + + + + + + + + + + org.springframework.boot + spring-boot-starter-cache + 3.4.4 + + + + + org.springframework.boot + spring-boot-starter-data-redis + 3.4.4 + + + + org.springframework.boot + spring-boot-starter-jdbc + ${spring.boot.version} + + + + com.microsoft.sqlserver + mssql-jdbc + 11.2.1.jre8 + + + + + \ No newline at end of file diff --git a/src/main/java/com/link/TestApplication.java b/src/main/java/com/link/TestApplication.java new file mode 100644 index 0000000..10212e7 --- /dev/null +++ b/src/main/java/com/link/TestApplication.java @@ -0,0 +1,18 @@ +package com.link; + +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +@MapperScan(basePackages = "com.link.mapper", sqlSessionTemplateRef = "hljwSqlSessionTemplate") +@MapperScan(basePackages = "com.link.mapperwechart", sqlSessionTemplateRef = "wechartSqlSessionTemplate") +public class TestApplication { + + + public static void main(String[] args) { + + System.setProperty("https.protocols", "TLSv1,TLSv1.2,TLSv1.3"); + SpringApplication.run(TestApplication.class, args); + } +} diff --git a/src/main/java/com/link/config/HljwDataSourceConfig.java b/src/main/java/com/link/config/HljwDataSourceConfig.java new file mode 100644 index 0000000..75eeca6 --- /dev/null +++ b/src/main/java/com/link/config/HljwDataSourceConfig.java @@ -0,0 +1,46 @@ +package com.link.config; + + +import com.zaxxer.hikari.HikariDataSource; +import lombok.extern.slf4j.Slf4j; +import org.apache.ibatis.session.SqlSessionFactory; +import org.mybatis.spring.SqlSessionFactoryBean; +import org.mybatis.spring.SqlSessionTemplate; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.boot.jdbc.DataSourceBuilder; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; +import org.springframework.core.io.support.PathMatchingResourcePatternResolver; + +import javax.sql.DataSource; + +@Slf4j +@Configuration +public class HljwDataSourceConfig { + + @Bean(name = "hljwDataSource") + @Primary + @ConfigurationProperties(prefix = "spring.datasource.hljw") + public DataSource hljwDataSource(){ + HikariDataSource dataSource = DataSourceBuilder.create().type(HikariDataSource.class).build(); + log.info("hljw DataSource initialized with pool-name: {}", dataSource.getPoolName()); + return dataSource; + } + + @Bean(name = "hljwSqlSessionFactory") + @Primary + public SqlSessionFactory hljwSqlSessionFactory(@Qualifier("hljwDataSource") DataSource dataSource) throws Exception { + SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean(); + sessionFactory.setDataSource(dataSource); + sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:com/link/mapper/*.xml")); + return sessionFactory.getObject(); + } + + @Bean(name = "hljwSqlSessionTemplate") + @Primary + public SqlSessionTemplate hljwSqlSessionTemplate(@Qualifier("hljwSqlSessionFactory") SqlSessionFactory sqlSessionFactory) { + return new SqlSessionTemplate(sqlSessionFactory); + } +} diff --git a/src/main/java/com/link/config/WechartDataSourceConfig.java b/src/main/java/com/link/config/WechartDataSourceConfig.java new file mode 100644 index 0000000..5d9b463 --- /dev/null +++ b/src/main/java/com/link/config/WechartDataSourceConfig.java @@ -0,0 +1,43 @@ +package com.link.config; + + +import com.zaxxer.hikari.HikariDataSource; +import lombok.extern.slf4j.Slf4j; +import org.apache.ibatis.session.SqlSessionFactory; +import org.mybatis.spring.SqlSessionFactoryBean; +import org.mybatis.spring.SqlSessionTemplate; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.boot.jdbc.DataSourceBuilder; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; +import org.springframework.core.io.support.PathMatchingResourcePatternResolver; + +import javax.sql.DataSource; + +@Slf4j +@Configuration +public class WechartDataSourceConfig { + + @Bean(name = "wechartDataSource") + @ConfigurationProperties(prefix = "spring.datasource.wechart") + public DataSource wechartDataSource(){ + HikariDataSource dataSource = DataSourceBuilder.create().type(HikariDataSource.class).build(); + log.info("wechart DataSource initialized with pool-name: {}", dataSource.getPoolName()); + return dataSource; + } + + @Bean(name = "wechartSqlSessionFactory") + public SqlSessionFactory wechartSqlSessionFactory(@Qualifier("wechartDataSource") DataSource dataSource) throws Exception { + SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean(); + sessionFactory.setDataSource(dataSource); + sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:com/link/mapperwechart/*.xml")); + return sessionFactory.getObject(); + } + + @Bean(name = "wechartSqlSessionTemplate") + public SqlSessionTemplate wechartSqlSessionTemplate(@Qualifier("wechartSqlSessionFactory") SqlSessionFactory sqlSessionFactory) { + return new SqlSessionTemplate(sqlSessionFactory); + } +} diff --git a/src/main/java/com/link/controller/AnchorUserTypeStatController.java b/src/main/java/com/link/controller/AnchorUserTypeStatController.java new file mode 100644 index 0000000..8796b8a --- /dev/null +++ b/src/main/java/com/link/controller/AnchorUserTypeStatController.java @@ -0,0 +1,25 @@ +package com.link.controller; + + +import com.link.domain.Result; +import com.link.domain.dto.AnchorUserTypeStatDTO; +import com.link.service.AnchorUserTypeStatService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/toAnchorUserTypeStat") +public class AnchorUserTypeStatController { + + @Autowired + private AnchorUserTypeStatService anchorUserTypeStatService; + + @PostMapping("/getDetails") + public Result getDetails(@RequestBody AnchorUserTypeStatDTO dto) { + Object result = anchorUserTypeStatService.getAnchorUserTypeStat(dto.getJwCodes(),dto.getStartTime()); + return Result.ok("success",result); + } +} diff --git a/src/main/java/com/link/controller/CRMCountController.java b/src/main/java/com/link/controller/CRMCountController.java new file mode 100644 index 0000000..abd8881 --- /dev/null +++ b/src/main/java/com/link/controller/CRMCountController.java @@ -0,0 +1,21 @@ +package com.link.controller; + +import com.link.domain.Result; +import com.link.domain.dto.CRMCountDTO; +import com.link.service.CRMCountService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +@RestController +@RequestMapping("/toCRM") +public class CRMCountController { + + @Autowired + private CRMCountService crmCountService; + + @PostMapping("/getCount") + public Result getCount(@RequestBody CRMCountDTO dto) { + Object result = crmCountService.getCRMCount(dto.getStartTime()); + return Result.ok("success",result); + } +} diff --git a/src/main/java/com/link/controller/NotRegisteredController.java b/src/main/java/com/link/controller/NotRegisteredController.java new file mode 100644 index 0000000..d65165f --- /dev/null +++ b/src/main/java/com/link/controller/NotRegisteredController.java @@ -0,0 +1,25 @@ +package com.link.controller; + + +import com.link.domain.Result; +import com.link.domain.dto.NotRegisteredDTO; +import com.link.service.NotRegisteredService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/toNotRegistered") +public class NotRegisteredController { + @Autowired + private NotRegisteredService notRegisteredService; + + @PostMapping("/getjwCodes") + public Result getjwCodes(@RequestBody NotRegisteredDTO dto) { + Object result = notRegisteredService.getNotRegistered(dto.getJwCodes()); + System.out.println(result); + return Result.ok("success",result); + } +} diff --git a/src/main/java/com/link/controller/UserCountController.java b/src/main/java/com/link/controller/UserCountController.java new file mode 100644 index 0000000..e33b960 --- /dev/null +++ b/src/main/java/com/link/controller/UserCountController.java @@ -0,0 +1,35 @@ +package com.link.controller; + +import com.link.domain.Result; +import com.link.domain.dto.UserCountDTO; +import com.link.service.UserCountService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/toUserCount") +public class UserCountController { + @Autowired + private UserCountService userCountService; + + @PostMapping("/toEmail") + public Result getEmailUserCount(@RequestBody UserCountDTO dto) { + Object result = userCountService.getEmailUserCount(dto.getStartTime()); + return Result.ok("success",result); + } + + @PostMapping("/toGoogle") + public Result getGoogleUserCount(@RequestBody UserCountDTO dto) { + Object result = userCountService.getGoogleUserCount(dto.getStartTime()); + return Result.ok("success",result); + } + + @PostMapping("/toMessage") + public Result getMessageUserCount(@RequestBody UserCountDTO dto) { + Object result = userCountService.getMessageUserCount(dto.getStartTime()); + return Result.ok("success",result); + } +} diff --git a/src/main/java/com/link/domain/Result.java b/src/main/java/com/link/domain/Result.java new file mode 100644 index 0000000..2b00826 --- /dev/null +++ b/src/main/java/com/link/domain/Result.java @@ -0,0 +1,108 @@ +package com.link.domain; + +// 请求是成功还是失败:ok error +// 后台希望前台弹出消息:msg +// 后台返回前台数据:Data +// JSON格式的通用响应对象,封装的就是后台返回给前台的所有信息 +public class Result { + public static final int ERROR = 1; + public static final int OK = 200; + + // 当前状态(程序员判断状态):成功、失败、未登录、没有权限 + private Integer code; + // 描述信息(主要是给用户看的提示信息) + private String msg; + // 后台返回给前端的数据 Object, User、List、Map + private Object data; + // 新增:前端用于直接判断成功/失败的字段 + private boolean success; + + public Result() { + } + + public Result(Integer code) { + this.code = code; + this.success = code == OK; // 根据状态码自动设置success + } + + public Result(Integer code, String msg) { + this.code = code; + this.msg = msg; + this.success = code == OK; + } + + public Result(Integer code, Object data) { + this.code = code; + this.data = data; + this.success = code == OK; + } + + public Result(Integer code, String msg, Object data) { + this.code = code; + this.msg = msg; + this.data = data; + this.success = code == OK; + } + + // 告诉前台成功:code + public static Result ok() { + return new Result(OK); + } + + // 告诉前台成功:code、msg + public static Result ok(String msg) { + return new Result(OK, msg); + } + + // 告诉前台成功:code、data + public static Result ok(Object data) { + return new Result(OK, data); + } + + // 告诉前台成功:code、msg、data + public static Result ok(String msg, Object data) { + return new Result(OK, msg, data); + } + + + // 告诉前台失败:code + public static Result error() { + return new Result(ERROR); + } + + // 告诉前台失败:code、msg + public static Result error(String msg) { + return new Result(ERROR, msg); + } + + // Getter和Setter方法 + public Integer getCode() { + return code; + } + + public void setCode(Integer code) { + this.code = code; + this.success = code == OK; // 同步更新success状态 + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public Object getData() { + return data; + } + + public void setData(Object data) { + this.data = data; + } + + // 添加success字段的Getter(不需要Setter,通过code自动维护) + public boolean isSuccess() { + return success; + } +} diff --git a/src/main/java/com/link/domain/dto/AnchorUserTypeStatDTO.java b/src/main/java/com/link/domain/dto/AnchorUserTypeStatDTO.java new file mode 100644 index 0000000..43ca0ec --- /dev/null +++ b/src/main/java/com/link/domain/dto/AnchorUserTypeStatDTO.java @@ -0,0 +1,19 @@ +package com.link.domain.dto; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.time.LocalDateTime; +import java.util.List; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class AnchorUserTypeStatDTO { + + private List jwCodes; + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime startTime; +} diff --git a/src/main/java/com/link/domain/dto/CRMCountDTO.java b/src/main/java/com/link/domain/dto/CRMCountDTO.java new file mode 100644 index 0000000..fc9db70 --- /dev/null +++ b/src/main/java/com/link/domain/dto/CRMCountDTO.java @@ -0,0 +1,16 @@ +package com.link.domain.dto; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.time.LocalDateTime; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class CRMCountDTO { + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime startTime; +} diff --git a/src/main/java/com/link/domain/dto/NotRegisteredDTO.java b/src/main/java/com/link/domain/dto/NotRegisteredDTO.java new file mode 100644 index 0000000..760577e --- /dev/null +++ b/src/main/java/com/link/domain/dto/NotRegisteredDTO.java @@ -0,0 +1,15 @@ +package com.link.domain.dto; + + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class NotRegisteredDTO { + private List jwCodes; +} diff --git a/src/main/java/com/link/domain/dto/UserCountDTO.java b/src/main/java/com/link/domain/dto/UserCountDTO.java new file mode 100644 index 0000000..92678da --- /dev/null +++ b/src/main/java/com/link/domain/dto/UserCountDTO.java @@ -0,0 +1,16 @@ +package com.link.domain.dto; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.time.LocalDateTime; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class UserCountDTO { + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime startTime; +} diff --git a/src/main/java/com/link/domain/vo/AnchorUserTypeStatVO.java b/src/main/java/com/link/domain/vo/AnchorUserTypeStatVO.java new file mode 100644 index 0000000..466e389 --- /dev/null +++ b/src/main/java/com/link/domain/vo/AnchorUserTypeStatVO.java @@ -0,0 +1,16 @@ +package com.link.domain.vo; + + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class AnchorUserTypeStatVO { + + private String name; + private String userType; + private Integer userCount; +} diff --git a/src/main/java/com/link/domain/vo/CRMCountVO.java b/src/main/java/com/link/domain/vo/CRMCountVO.java new file mode 100644 index 0000000..5b3d4cd --- /dev/null +++ b/src/main/java/com/link/domain/vo/CRMCountVO.java @@ -0,0 +1,14 @@ +package com.link.domain.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class CRMCountVO { + + private Integer userCount; +} diff --git a/src/main/java/com/link/domain/vo/NotRegisteredVO.java b/src/main/java/com/link/domain/vo/NotRegisteredVO.java new file mode 100644 index 0000000..d1a479e --- /dev/null +++ b/src/main/java/com/link/domain/vo/NotRegisteredVO.java @@ -0,0 +1,15 @@ +package com.link.domain.vo; + + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class NotRegisteredVO { + private String jwcode; +} diff --git a/src/main/java/com/link/domain/vo/UserCountVO.java b/src/main/java/com/link/domain/vo/UserCountVO.java new file mode 100644 index 0000000..9c207e5 --- /dev/null +++ b/src/main/java/com/link/domain/vo/UserCountVO.java @@ -0,0 +1,18 @@ +package com.link.domain.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class UserCountVO { + + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + private String businessDate; +// private LocalDateTime t1; + + private Integer userCount; +} diff --git a/src/main/java/com/link/mapper/UserCountMapper.java b/src/main/java/com/link/mapper/UserCountMapper.java new file mode 100644 index 0000000..4a3f0b1 --- /dev/null +++ b/src/main/java/com/link/mapper/UserCountMapper.java @@ -0,0 +1,19 @@ +package com.link.mapper; + +import com.link.domain.vo.UserCountVO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.springframework.beans.factory.annotation.Qualifier; + +import java.time.LocalDateTime; +import java.util.List; + +@Mapper +@Qualifier("hljwSqlSessionTemplate") +public interface UserCountMapper { + List getEmailUserCount(@Param("startTime") LocalDateTime startTime); + + List getGoogleUserCount(@Param("startTime") LocalDateTime startTime); + + List getMessageUserCount(@Param("startTime") LocalDateTime startTime); +} diff --git a/src/main/java/com/link/mapperwechart/AnchorUserTypeStatMapper.java b/src/main/java/com/link/mapperwechart/AnchorUserTypeStatMapper.java new file mode 100644 index 0000000..b299257 --- /dev/null +++ b/src/main/java/com/link/mapperwechart/AnchorUserTypeStatMapper.java @@ -0,0 +1,15 @@ +package com.link.mapperwechart; + +import com.link.domain.vo.AnchorUserTypeStatVO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.springframework.beans.factory.annotation.Qualifier; + +import java.time.LocalDateTime; +import java.util.List; + +@Mapper +@Qualifier("wechartSqlSessionTemplate") +public interface AnchorUserTypeStatMapper { + List getAnchorUserTypeStat(@Param("jwCodes") List jwCodes, @Param("startTime") LocalDateTime startTime); +} diff --git a/src/main/java/com/link/mapperwechart/CRMCountMapper.java b/src/main/java/com/link/mapperwechart/CRMCountMapper.java new file mode 100644 index 0000000..66d8cd5 --- /dev/null +++ b/src/main/java/com/link/mapperwechart/CRMCountMapper.java @@ -0,0 +1,14 @@ +package com.link.mapperwechart; + +import com.link.domain.vo.CRMCountVO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.springframework.beans.factory.annotation.Qualifier; + +import java.time.LocalDateTime; + +@Mapper +@Qualifier("wechartSqlSessionTemplate") +public interface CRMCountMapper { + CRMCountVO getCRMCount(@Param("startTime") LocalDateTime startTime); +} diff --git a/src/main/java/com/link/mapperwechart/NotRegisteredMapper.java b/src/main/java/com/link/mapperwechart/NotRegisteredMapper.java new file mode 100644 index 0000000..b1fd75a --- /dev/null +++ b/src/main/java/com/link/mapperwechart/NotRegisteredMapper.java @@ -0,0 +1,15 @@ +package com.link.mapperwechart; + + +import com.link.domain.vo.NotRegisteredVO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.springframework.beans.factory.annotation.Qualifier; + +import java.util.List; + +@Mapper +@Qualifier("wechartSqlSessionTemplate") +public interface NotRegisteredMapper { + List getNotRegistered(@Param("jwCodes") List jwCodes); +} diff --git a/src/main/java/com/link/service/AnchorUserTypeStatService.java b/src/main/java/com/link/service/AnchorUserTypeStatService.java new file mode 100644 index 0000000..f57821e --- /dev/null +++ b/src/main/java/com/link/service/AnchorUserTypeStatService.java @@ -0,0 +1,11 @@ +package com.link.service; + +import com.link.domain.vo.AnchorUserTypeStatVO; + +import java.time.LocalDateTime; +import java.util.List; + +public interface AnchorUserTypeStatService { + + List getAnchorUserTypeStat(List jwCodes, LocalDateTime startTime); +} diff --git a/src/main/java/com/link/service/CRMCountService.java b/src/main/java/com/link/service/CRMCountService.java new file mode 100644 index 0000000..8224acf --- /dev/null +++ b/src/main/java/com/link/service/CRMCountService.java @@ -0,0 +1,12 @@ +package com.link.service; + +import com.link.domain.vo.CRMCountVO; + +import java.time.LocalDateTime; + + +public interface CRMCountService { + + CRMCountVO getCRMCount(LocalDateTime startTime); + +} diff --git a/src/main/java/com/link/service/NotRegisteredService.java b/src/main/java/com/link/service/NotRegisteredService.java new file mode 100644 index 0000000..d272806 --- /dev/null +++ b/src/main/java/com/link/service/NotRegisteredService.java @@ -0,0 +1,10 @@ +package com.link.service; + +import com.link.domain.vo.NotRegisteredVO; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface NotRegisteredService { + List getNotRegistered(List jwCodes); +} diff --git a/src/main/java/com/link/service/UserCountService.java b/src/main/java/com/link/service/UserCountService.java new file mode 100644 index 0000000..f3288c3 --- /dev/null +++ b/src/main/java/com/link/service/UserCountService.java @@ -0,0 +1,16 @@ +package com.link.service; + +import com.link.domain.vo.UserCountVO; + +import java.time.LocalDateTime; +import java.util.List; + +public interface UserCountService { + + List getEmailUserCount(LocalDateTime startTime); + + List getGoogleUserCount(LocalDateTime startTime); + + List getMessageUserCount(LocalDateTime startTime); + +} diff --git a/src/main/java/com/link/serviceImpl/AnchorUserTypeStatServiceImpl.java b/src/main/java/com/link/serviceImpl/AnchorUserTypeStatServiceImpl.java new file mode 100644 index 0000000..17f8a5d --- /dev/null +++ b/src/main/java/com/link/serviceImpl/AnchorUserTypeStatServiceImpl.java @@ -0,0 +1,22 @@ +package com.link.serviceImpl; + +import com.link.domain.vo.AnchorUserTypeStatVO; +import com.link.mapperwechart.AnchorUserTypeStatMapper; +import com.link.service.AnchorUserTypeStatService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.time.LocalDateTime; +import java.util.List; + +@Service +public class AnchorUserTypeStatServiceImpl implements AnchorUserTypeStatService { + + @Autowired + private AnchorUserTypeStatMapper anchorUserTypeStatMapper; + + @Override + public List getAnchorUserTypeStat(List jwCodes, LocalDateTime startTime) { + return anchorUserTypeStatMapper.getAnchorUserTypeStat(jwCodes, startTime); + } +} diff --git a/src/main/java/com/link/serviceImpl/CRMCountServiceImpl.java b/src/main/java/com/link/serviceImpl/CRMCountServiceImpl.java new file mode 100644 index 0000000..7abaf9c --- /dev/null +++ b/src/main/java/com/link/serviceImpl/CRMCountServiceImpl.java @@ -0,0 +1,23 @@ +package com.link.serviceImpl; + +import com.link.domain.vo.CRMCountVO; + +import com.link.mapperwechart.CRMCountMapper; +import com.link.service.CRMCountService; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.time.LocalDateTime; + +@Service +public class CRMCountServiceImpl implements CRMCountService { + + @Autowired + private CRMCountMapper crmCountMapper; + + @Override + public CRMCountVO getCRMCount(LocalDateTime startTime) { + return crmCountMapper.getCRMCount(startTime); + } +} diff --git a/src/main/java/com/link/serviceImpl/NotRegisteredServiceImpl.java b/src/main/java/com/link/serviceImpl/NotRegisteredServiceImpl.java new file mode 100644 index 0000000..dfe5452 --- /dev/null +++ b/src/main/java/com/link/serviceImpl/NotRegisteredServiceImpl.java @@ -0,0 +1,22 @@ +package com.link.serviceImpl; + +import com.link.domain.vo.NotRegisteredVO; +import com.link.mapperwechart.NotRegisteredMapper; +import com.link.service.NotRegisteredService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class NotRegisteredServiceImpl implements NotRegisteredService { + + @Autowired + private NotRegisteredMapper notRegisteredMapper; + @Override + public List getNotRegistered(List jwCodes) { + List list = notRegisteredMapper.getNotRegistered(jwCodes); + List jwcode = list.stream().map(NotRegisteredVO::getJwcode).toList(); + return jwcode; + } +} diff --git a/src/main/java/com/link/serviceImpl/UserCountServiceImpl.java b/src/main/java/com/link/serviceImpl/UserCountServiceImpl.java new file mode 100644 index 0000000..eb4c4bc --- /dev/null +++ b/src/main/java/com/link/serviceImpl/UserCountServiceImpl.java @@ -0,0 +1,31 @@ +package com.link.serviceImpl; + +import com.link.domain.vo.UserCountVO; +import com.link.mapper.UserCountMapper; +import com.link.service.UserCountService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.time.LocalDateTime; +import java.util.List; + +@Service +public class UserCountServiceImpl implements UserCountService { + + @Autowired + private UserCountMapper userCountMapper; + @Override + public List getEmailUserCount(LocalDateTime startTime) { + return userCountMapper.getEmailUserCount(startTime); + } + + @Override + public List getGoogleUserCount(LocalDateTime startTime) { + return userCountMapper.getGoogleUserCount(startTime); + } + + @Override + public List getMessageUserCount(LocalDateTime startTime) { + return userCountMapper.getMessageUserCount(startTime); + } +} diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml new file mode 100644 index 0000000..5e8a86a --- /dev/null +++ b/src/main/resources/application.yml @@ -0,0 +1,32 @@ +spring: + datasource: + hljw: + jdbc-url: jdbc:mysql://39.99.234.212:33061/hljw?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&connectTimeout=3000&socketTimeout=60000&autoReconnect=true&failOverReadOnly=false + username: 9008c85e-cb05-4eca-8321-c0443c1dc333 + password: m0tLJcB9f8rLquPr + driver-class-name: com.mysql.cj.jdbc.Driver + hikari: + pool-name: hljwHikariCP + maximum-pool-size: 50 + + wechart: + jdbc-url: jdbc:sqlserver://18.142.225.183:1455;databaseName=wechart;loginTimeout=30;connectTimeout=30000;encrypt=true;enabledTLSProtocols=TLSv1.2;trustServerCertificate=true + username: query_hz + password: 8HxsYzefFBsLc8kksxa + driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver + hikari: + pool-name: wechartHikariCP + maximum-pool-size: 50 + + + +mybatis: + mapper-locations: classpath:mappers/*xml + type-aliases-package: com.link.domain + +logging: + level: + com.system.mapper: debug + +server: + port: 8080 \ No newline at end of file diff --git a/src/main/resources/com/link/mapper/UserCountMapper.xml b/src/main/resources/com/link/mapper/UserCountMapper.xml new file mode 100644 index 0000000..74df9b5 --- /dev/null +++ b/src/main/resources/com/link/mapper/UserCountMapper.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/com/link/mapperwechart/AnchorUserTypeStatMapper.xml b/src/main/resources/com/link/mapperwechart/AnchorUserTypeStatMapper.xml new file mode 100644 index 0000000..c2c51cc --- /dev/null +++ b/src/main/resources/com/link/mapperwechart/AnchorUserTypeStatMapper.xml @@ -0,0 +1,51 @@ + + + + + + \ No newline at end of file diff --git a/src/main/resources/com/link/mapperwechart/CRMCountMapper.xml b/src/main/resources/com/link/mapperwechart/CRMCountMapper.xml new file mode 100644 index 0000000..7bb2552 --- /dev/null +++ b/src/main/resources/com/link/mapperwechart/CRMCountMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/src/main/resources/com/link/mapperwechart/NotRegisteredMapper.xml b/src/main/resources/com/link/mapperwechart/NotRegisteredMapper.xml new file mode 100644 index 0000000..071368c --- /dev/null +++ b/src/main/resources/com/link/mapperwechart/NotRegisteredMapper.xml @@ -0,0 +1,27 @@ + + + + + + + + \ No newline at end of file