diff --git a/src/main/java/com/example/demo/DemoApplication.java b/src/main/java/com/example/demo/DemoApplication.java index c10b006..9ab3517 100644 --- a/src/main/java/com/example/demo/DemoApplication.java +++ b/src/main/java/com/example/demo/DemoApplication.java @@ -10,6 +10,8 @@ import org.springframework.scheduling.annotation.EnableScheduling; @MapperScan(basePackages = "com.example.demo.mapper.coin", sqlSessionTemplateRef = "mysql1SqlSessionTemplate") @MapperScan(basePackages = "com.example.demo.mapper.bean", sqlSessionTemplateRef = "mysql2SqlSessionTemplate") @MapperScan(basePackages = "com.example.demo.mapper.pay", sqlSessionTemplateRef = "mysql3SqlSessionTemplate") +@MapperScan(basePackages = "com.example.demo.mapper.cms", sqlSessionTemplateRef = "mysql4SqlSessionTemplate") +@MapperScan(basePackages = "com.example.demo.mapper.live", sqlSessionTemplateRef = "mysql5SqlSessionTemplate") public class DemoApplication { public static void main(String[] args) { diff --git a/src/main/java/com/example/demo/config/Mysql3DataSourceConfig.java b/src/main/java/com/example/demo/config/Mysql3DataSourceConfig.java index d04f212..9a857b7 100644 --- a/src/main/java/com/example/demo/config/Mysql3DataSourceConfig.java +++ b/src/main/java/com/example/demo/config/Mysql3DataSourceConfig.java @@ -20,7 +20,7 @@ public class Mysql3DataSourceConfig { @Bean(name = "mysql3DataSource") @ConfigurationProperties(prefix = "spring.datasource.mysql3") - public DataSource mysql2DataSource() { + public DataSource mysql3DataSource() { return DataSourceBuilder.create().type(HikariDataSource.class).build(); } @Bean(name = "mysql3SqlSessionFactory") diff --git a/src/main/java/com/example/demo/config/Mysql4DataSourceConfig.java b/src/main/java/com/example/demo/config/Mysql4DataSourceConfig.java new file mode 100644 index 0000000..9ba65a8 --- /dev/null +++ b/src/main/java/com/example/demo/config/Mysql4DataSourceConfig.java @@ -0,0 +1,54 @@ +package com.example.demo.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.core.io.support.PathMatchingResourcePatternResolver; + +import javax.sql.DataSource; + +/** + * @program: gold-java + * @ClassName Mysql4DataSourceConfig + * @description: + * @author: Ethan + * @create: 2025−08-01 17:12 + * @Version 1.0 + **/ +@Slf4j +@Configuration +public class Mysql4DataSourceConfig { + @Bean(name = "mysql4DataSource") + @ConfigurationProperties(prefix = "spring.datasource.mysql4") + public DataSource mysql4DataSource() { + return DataSourceBuilder.create().type(HikariDataSource.class).build(); + } + @Bean(name = "mysql4SqlSessionFactory") +// @Primary + public SqlSessionFactory mysql4SqlSessionFactory(@Qualifier("mysql4DataSource") DataSource dataSource, + @Qualifier("globalConfiguration4") org.apache.ibatis.session.Configuration globalConfiguration4) throws Exception { + SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean(); + sessionFactory.setDataSource(dataSource); + sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:payMapper/*.xml")); + sessionFactory.setConfiguration(globalConfiguration4); + return sessionFactory.getObject(); + } + + @Bean(name = "mysql4SqlSessionTemplate") +// @Primary + public SqlSessionTemplate mysql4SqlSessionTemplate(@Qualifier("mysql4SqlSessionFactory") SqlSessionFactory sqlSessionFactory) { + return new SqlSessionTemplate(sqlSessionFactory); + } + @Bean + @ConfigurationProperties(prefix = "mybatis.configuration.mysql4") + public org.apache.ibatis.session.Configuration globalConfiguration4() { + return new org.apache.ibatis.session.Configuration(); + } +} diff --git a/src/main/java/com/example/demo/config/Mysql5DataSourceConfig.java b/src/main/java/com/example/demo/config/Mysql5DataSourceConfig.java new file mode 100644 index 0000000..cfa9005 --- /dev/null +++ b/src/main/java/com/example/demo/config/Mysql5DataSourceConfig.java @@ -0,0 +1,54 @@ +package com.example.demo.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.core.io.support.PathMatchingResourcePatternResolver; + +import javax.sql.DataSource; + +/** + * @program: gold-java + * @ClassName Mysql5DataSourceConfig + * @description: + * @author: Ethan + * @create: 2025−08-01 17:17 + * @Version 1.0 + **/ +@Slf4j +@Configuration +public class Mysql5DataSourceConfig { + @Bean(name = "mysql5DataSource") + @ConfigurationProperties(prefix = "spring.datasource.mysql5") + public DataSource mysql5DataSource() { + return DataSourceBuilder.create().type(HikariDataSource.class).build(); + } + @Bean(name = "mysql5SqlSessionFactory") +// @Primary + public SqlSessionFactory mysql5SqlSessionFactory(@Qualifier("mysql5DataSource") DataSource dataSource, + @Qualifier("globalConfiguration5") org.apache.ibatis.session.Configuration globalConfiguration5) throws Exception { + SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean(); + sessionFactory.setDataSource(dataSource); + sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:liveMapper/*.xml")); + sessionFactory.setConfiguration(globalConfiguration5); + return sessionFactory.getObject(); + } + + @Bean(name = "mysql5SqlSessionTemplate") +// @Primary + public SqlSessionTemplate mysql5SqlSessionTemplate(@Qualifier("mysql5SqlSessionFactory") SqlSessionFactory sqlSessionFactory) { + return new SqlSessionTemplate(sqlSessionFactory); + } + @Bean + @ConfigurationProperties(prefix = "mybatis.configuration.mysql5") + public org.apache.ibatis.session.Configuration globalConfiguration5() { + return new org.apache.ibatis.session.Configuration(); + } +} diff --git a/src/main/java/com/example/demo/controller/bean/BeanRechargeController.java b/src/main/java/com/example/demo/controller/bean/BeanRechargeController.java index dc5e00a..47194af 100644 --- a/src/main/java/com/example/demo/controller/bean/BeanRechargeController.java +++ b/src/main/java/com/example/demo/controller/bean/BeanRechargeController.java @@ -12,6 +12,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.ObjectUtils; import org.springframework.web.bind.annotation.*; +import java.util.List; + /** * @program: gold-java * @ClassName BeanRechrageController diff --git a/src/main/java/com/example/demo/domain/vo/bean/BeanConsumeArticle.java b/src/main/java/com/example/demo/domain/vo/bean/BeanConsumeArticle.java index 01a33d1..44f53a6 100644 --- a/src/main/java/com/example/demo/domain/vo/bean/BeanConsumeArticle.java +++ b/src/main/java/com/example/demo/domain/vo/bean/BeanConsumeArticle.java @@ -25,7 +25,9 @@ public class BeanConsumeArticle { private String dept; //地区/分部 private String type; //类型source_type 9、10打赏,11付费 private Integer payMode; // 0 打赏 1 付费 2 其他 - private String beanNum; //金豆数量 + private Integer beanNum; //金豆数量 + private Integer buyBean; //付费金豆 + private Integer freeBean; //免费金豆 private Integer articleId; //文章/视频ID private String articleName; //文章/视频标题(source_name) private String author; //作者 diff --git a/src/main/java/com/example/demo/domain/vo/bean/BeanConsumeLive.java b/src/main/java/com/example/demo/domain/vo/bean/BeanConsumeLive.java index 9dc736f..bf24b4a 100644 --- a/src/main/java/com/example/demo/domain/vo/bean/BeanConsumeLive.java +++ b/src/main/java/com/example/demo/domain/vo/bean/BeanConsumeLive.java @@ -25,11 +25,13 @@ public class BeanConsumeLive { private Integer jwcode; //精网号 private String dept; //地区/分部 //类型 直播: 1. 发礼物2. 发红包3. 发福袋4. 付费直播5. 加入粉丝团6. 发弹幕 - //文章: 1. 打赏2. 付费 + private String type; //类型 private String gift; //礼物名称 private String beanNum; //金豆数量 - private String liveChannel; //频道名称(截取content) + private String freeBean; //免费金豆 + private String buyBean; //付费金豆 + private String liveChannel; //频道名称 private String liveName; //直播间名称 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") private Date consumeTime; // 消费时间 (时间戳转化) diff --git a/src/main/java/com/example/demo/mapper/live/LiveMapper.java b/src/main/java/com/example/demo/mapper/live/LiveMapper.java new file mode 100644 index 0000000..a86daf2 --- /dev/null +++ b/src/main/java/com/example/demo/mapper/live/LiveMapper.java @@ -0,0 +1,20 @@ +package com.example.demo.mapper.live; + +import com.example.demo.domain.vo.bean.BeanConsumeLive; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @program: gold-java + * @ClassName liveMapper + * @description: + * @author: Ethan + * @create: 2025−08-01 17:20 + * @Version 1.0 + **/ +@Mapper +public interface LiveMapper { + List selectLiveBy(@Param("beanConsumeLive") BeanConsumeLive beanConsumeLive); +} diff --git a/src/main/java/com/example/demo/serviceImpl/bean/BeanConsumeServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/bean/BeanConsumeServiceImpl.java index 8bcc656..c1ba2a1 100644 --- a/src/main/java/com/example/demo/serviceImpl/bean/BeanConsumeServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/bean/BeanConsumeServiceImpl.java @@ -6,6 +6,7 @@ import com.example.demo.domain.vo.coin.Page; import com.example.demo.domain.vo.coin.RechargeAudit; import com.example.demo.domain.vo.coin.RechargeUser; import com.example.demo.mapper.bean.BeanConsumeMapper; +import com.example.demo.mapper.live.LiveMapper; import com.example.demo.service.bean.BeanConsumeService; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; @@ -25,33 +26,35 @@ import java.util.List; @Service public class BeanConsumeServiceImpl implements BeanConsumeService { @Autowired - private BeanConsumeMapper BeanConsumeMapper; + private BeanConsumeMapper beanConsumeMapper; + @Autowired + private LiveMapper liveMapper; //获取消费用户分部 @Override public List getDept() { - List deptList = BeanConsumeMapper.getDept(); + List deptList = beanConsumeMapper.getDept(); return deptList; } //筛选查询直播消费 @Override public Object selectLiveBy(Integer pageNum, Integer pageSize, BeanConsumeLive beanConsumeLive) { PageHelper.startPage(pageNum, pageSize); - List beanConsumeLives = BeanConsumeMapper.selectLiveBy(beanConsumeLive); + List beanConsumeLives = liveMapper.selectLiveBy(beanConsumeLive); return new PageInfo<>(beanConsumeLives); } //筛选查询铁粉消费 @Override public Object selectFanBy(Integer pageNum, Integer pageSize, BeanConsumeFan beanConsumeFan) { PageHelper.startPage(pageNum, pageSize); - List beanConsumeFans = BeanConsumeMapper.selectFanBy(beanConsumeFan); + List beanConsumeFans = beanConsumeMapper.selectFanBy(beanConsumeFan); return new PageInfo<>(beanConsumeFans); } //筛选查询文章消费 @Override public Object selectArticleBy(Integer pageNum, Integer pageSize, BeanConsumeArticle beanConsumeArticle) { PageHelper.startPage(pageNum, pageSize); - List beanConsumeArticles = BeanConsumeMapper.selectArticleBy(beanConsumeArticle); + List beanConsumeArticles = beanConsumeMapper.selectArticleBy(beanConsumeArticle); return new PageInfo<>(beanConsumeArticles); } @@ -61,13 +64,13 @@ public class BeanConsumeServiceImpl implements BeanConsumeService { Integer payType = page.getPayType(); if (payType==1) { //直播消费合计 - gold = BeanConsumeMapper.selectSumLiveBy(page.getBeanConsumeLive()); + gold = beanConsumeMapper.selectSumLiveBy(page.getBeanConsumeLive()); }else if (payType==7) { //充值消费合计 - gold = BeanConsumeMapper.selectSumFansBy(page.getBeanConsumeFan()); + gold = beanConsumeMapper.selectSumFansBy(page.getBeanConsumeFan()); }else if (payType==8) { //文章消费合计 - gold = BeanConsumeMapper.selectSumArticleBy(page.getBeanConsumeArticle()); + gold = beanConsumeMapper.selectSumArticleBy(page.getBeanConsumeArticle()); } return gold; @@ -76,11 +79,11 @@ public class BeanConsumeServiceImpl implements BeanConsumeService { @Override public List getLiveGift() { - return BeanConsumeMapper.getLiveGift(); + return beanConsumeMapper.getLiveGift(); } //查询直播全部频道 @Override public List getLiveChannel() { - return BeanConsumeMapper.getLiveChannel(); + return beanConsumeMapper.getLiveChannel(); } } diff --git a/src/main/java/com/example/demo/serviceImpl/coin/ExportExcelServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/coin/ExportExcelServiceImpl.java index 06233fe..80a1a81 100644 --- a/src/main/java/com/example/demo/serviceImpl/coin/ExportExcelServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/coin/ExportExcelServiceImpl.java @@ -16,7 +16,7 @@ import com.example.demo.domain.entity.Export; import com.example.demo.domain.entity.User; import com.example.demo.domain.export.Goldmingxi; import com.example.demo.domain.vo.bean.BeanConsumeLive; -import com.example.demo.domain.vo.bean.BeanPage; + import com.example.demo.domain.vo.coin.*; import com.example.demo.mapper.coin.ExportMapper; diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 041d0b5..9e0b8a1 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -53,7 +53,7 @@ feishu: url: https://open.feishu.cn/open-apis/bot/v2/hook/384c78aa-8df1-498b-9c47-04e890ed9877 server: - port: 10704 + port: 8081 logging: level: diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml index f1d908d..89301eb 100644 --- a/src/main/resources/application-prod.yml +++ b/src/main/resources/application-prod.yml @@ -56,7 +56,7 @@ feishu: server: - port: 8081 + port: 10704 logging: level: diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index e7061c3..e514e53 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -1,6 +1,6 @@ spring: profiles: - active: test + active: dev jackson: deserialization: fail-on-unknown-properties: false @@ -30,6 +30,22 @@ spring: hikari: pool-name: mysql3HikariCP maximum-pool-size: 10 + mysql4: + jdbc-url: jdbc:mysql://39.101.133.168:3306/cms?serverTimezone=Asia/Shanghai&useSSL=false&useUnicode=true&allowMultiQueries=true&rewriteBatchedStatements=true + username: cms + password: AF42R3ib6YkFaemm + driver-class-name: com.mysql.cj.jdbc.Driver + hikari: + pool-name: mysql3HikariCP + maximum-pool-size: 10 + mysql5: + jdbc-url: jdbc:mysql://39.101.133.168:3306/live?serverTimezone=Asia/Shanghai&useSSL=false&useUnicode=true&allowMultiQueries=true&rewriteBatchedStatements=true + username: live + password: p4jMAMShNM8HTrbX + driver-class-name: com.mysql.cj.jdbc.Driver + hikari: + pool-name: mysql5HikariCP + maximum-pool-size: 10 sqlserver1: jdbc-url: jdbc:sqlserver://52.76.43.43:1433;databaseName=hwhcGold;encrypt=true;sslProtocol=TLSv1;trustServerCertificate=true; username: hwhc_gold_query diff --git a/src/main/resources/jindouMapper/BeanConsumeMapper.xml b/src/main/resources/jindouMapper/BeanConsumeMapper.xml index ce304e5..7e359ec 100644 --- a/src/main/resources/jindouMapper/BeanConsumeMapper.xml +++ b/src/main/resources/jindouMapper/BeanConsumeMapper.xml @@ -201,6 +201,8 @@ fm.dept, fyr.source_type AS type, fyr.money AS beanNum, + fyr.money_free AS freeBean, + fyr.money_buy AS buyBean, fyr.source_id AS articleId, fyr.source_name AS articleName, (SELECT fm2.nickname diff --git a/src/main/resources/liveMapper/LiveMapper.xml b/src/main/resources/liveMapper/LiveMapper.xml new file mode 100644 index 0000000..0bd835a --- /dev/null +++ b/src/main/resources/liveMapper/LiveMapper.xml @@ -0,0 +1,24 @@ + + + + + + + \ No newline at end of file