52 changed files with 396 additions and 326 deletions
-
16pom.xml
-
6src/main/java/com/example/demo/DemoApplication.java
-
84src/main/java/com/example/demo/config/DBSrcArticle.java
-
29src/main/java/com/example/demo/config/DataSourceConfig.java
-
1src/main/java/com/example/demo/config/WebConfig.java
-
80src/main/java/com/example/demo/config/dBSrcUser.java
-
2src/main/java/com/example/demo/controller/AuditController.java
-
2src/main/java/com/example/demo/controller/StatisticsController.java
-
12src/main/java/com/example/demo/domain/vo/RechargeVo.java
-
3src/main/java/com/example/demo/domain/vo/SumCoin.java
-
2src/main/java/com/example/demo/mapper/ActivityMapper.java
-
2src/main/java/com/example/demo/mapper/AdminMapper.java
-
2src/main/java/com/example/demo/mapper/AuditMapper.java
-
2src/main/java/com/example/demo/mapper/ConsumeMapper.java
-
2src/main/java/com/example/demo/mapper/DetailMapper.java
-
2src/main/java/com/example/demo/mapper/DetailYMapper.java
-
2src/main/java/com/example/demo/mapper/OneMapper.java
-
2src/main/java/com/example/demo/mapper/OtherMapper.java
-
2src/main/java/com/example/demo/mapper/PermissionMapper.java
-
2src/main/java/com/example/demo/mapper/ProductMapper.java
-
2src/main/java/com/example/demo/mapper/RateMapper.java
-
2src/main/java/com/example/demo/mapper/RechargeMapper.java
-
2src/main/java/com/example/demo/mapper/RefundMapper.java
-
126src/main/java/com/example/demo/mapper/StatisticsMapper.java
-
2src/main/java/com/example/demo/mapper/UserMapper.java
-
2src/main/java/com/example/demo/serviceImpl/ActivityServiceImpl.java
-
2src/main/java/com/example/demo/serviceImpl/AdminServiceImpl.java
-
8src/main/java/com/example/demo/serviceImpl/AuditServiceImpl.java
-
4src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java
-
2src/main/java/com/example/demo/serviceImpl/DetailServiceImpl.java
-
2src/main/java/com/example/demo/serviceImpl/DetailYServiceImpl.java
-
2src/main/java/com/example/demo/serviceImpl/OneServiceImpl.java
-
8src/main/java/com/example/demo/serviceImpl/OtherServiceImpl.java
-
2src/main/java/com/example/demo/serviceImpl/PermissionServiceImpl.java
-
2src/main/java/com/example/demo/serviceImpl/ProductServiceImpl.java
-
2src/main/java/com/example/demo/serviceImpl/RateServiceImpl.java
-
8src/main/java/com/example/demo/serviceImpl/RechargeServiceImpl.java
-
2src/main/java/com/example/demo/serviceImpl/RefundServiceImpl.java
-
23src/main/java/com/example/demo/serviceImpl/StatisticsServiceImpl.java
-
2src/main/java/com/example/demo/serviceImpl/UserDetailServiceImpl.java
-
2src/main/java/com/example/demo/serviceImpl/UserServiceImpl.java
-
2src/main/java/com/example/demo/sevice/DataExportService.java
-
74src/main/resources/application.yml
-
2src/main/resources/mapper/ConsumeMapper.xml
-
2src/main/resources/mapper/DetailYMapper.xml
-
2src/main/resources/mapper/OneMapper.xml
-
2src/main/resources/mapper/ProductMapper.xml
-
2src/main/resources/mapper/RechargeMapper.xml
-
2src/main/resources/mapper/RefundMapper.xml
-
127src/main/resources/mapper/StatisticsMapper.xml
-
2src/main/resources/mapper/UserMapper.xml
-
41src/main/resources/mapper/db1/StatisticsMapper.xml
@ -1,34 +1,50 @@ |
|||
package com.example.demo.config; |
|||
|
|||
import org.apache.ibatis.session.SqlSessionFactory; |
|||
import org.mybatis.spring.SqlSessionTemplate; |
|||
import org.mybatis.spring.SqlSessionFactoryBean; // 正确导入SqlSessionFactoryBean |
|||
import org.mybatis.spring.annotation.MapperScan; |
|||
import org.springframework.beans.factory.annotation.Qualifier; |
|||
import org.springframework.context.annotation.Bean; |
|||
import org.springframework.context.annotation.Configuration; |
|||
import org.springframework.core.io.support.PathMatchingResourcePatternResolver; |
|||
|
|||
import javax.sql.DataSource; |
|||
|
|||
/** |
|||
* 数据库leadnews_article配置 |
|||
*/ |
|||
@Configuration |
|||
@MapperScan(basePackages = {"com.example.demo.mapper.db1"}, sqlSessionFactoryRef = "sqlSessionFactoryArticle") |
|||
public class DBSrcArticle { |
|||
|
|||
@Bean |
|||
public SqlSessionFactory sqlSessionFactoryArticle(@Qualifier("mysql1") DataSource dataSource) throws Exception { |
|||
SqlSessionFactoryBean sqlSessionFactory = new SqlSessionFactoryBean(); // 修正类名 |
|||
sqlSessionFactory.setDataSource(dataSource); |
|||
sqlSessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver() |
|||
.getResources("classpath:mapper/db1/*.xml")); |
|||
return sqlSessionFactory.getObject(); |
|||
} |
|||
|
|||
@Bean |
|||
public SqlSessionTemplate sqlSessionTemplateArticle(@Qualifier("sqlSessionFactoryArticle") SqlSessionFactory sqlSessionFactory) throws Exception { |
|||
return new SqlSessionTemplate(sqlSessionFactory); |
|||
} |
|||
} |
|||
//package com.example.demo.config; |
|||
// |
|||
//import com.zaxxer.hikari.HikariDataSource; |
|||
//import org.apache.ibatis.session.SqlSessionFactory; |
|||
//import org.mybatis.spring.SqlSessionTemplate; |
|||
//import org.mybatis.spring.SqlSessionFactoryBean; // 正确导入SqlSessionFactoryBean |
|||
//import org.mybatis.spring.annotation.MapperScan; |
|||
//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; |
|||
// |
|||
// |
|||
// |
|||
///** |
|||
// * 数据库leadnews_article配置 |
|||
// */ |
|||
//@Configuration |
|||
//@MapperScan(basePackages = {"com.example.demo.mapper"}, sqlSessionFactoryRef = "sqlSessionFactoryArticle") |
|||
//public class DBSrcArticle { |
|||
// |
|||
// @Bean(name = "mysql1DataSource") |
|||
// @Primary // 因为这是默认数据源,因此标记为Primary |
|||
// @ConfigurationProperties(prefix = "spring.datasource.mysql1") |
|||
// public DataSource cmsDataSource() { |
|||
// HikariDataSource dataSource = DataSourceBuilder.create().type(HikariDataSource.class).build(); |
|||
//// log.info("mysql1 DataSource initialized with pool-name: {}", dataSource.getPoolName()); |
|||
// return dataSource; |
|||
// } |
|||
// |
|||
// @Bean(name = "mysql1SqlSessionFactory") |
|||
// @Primary // 默认SqlSessionFactory |
|||
// public SqlSessionFactory cmsSqlSessionFactory(@Qualifier("mysql1DataSource") DataSource dataSource) throws Exception { |
|||
// SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean(); |
|||
// sessionFactory.setDataSource(dataSource); |
|||
// sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/*.xml")); |
|||
// return sessionFactory.getObject(); |
|||
// } |
|||
// |
|||
// @Bean(name = "mysql1SqlSessionTemplate") |
|||
// @Primary // 默认SqlSessionTemplate |
|||
// public SqlSessionTemplate cmsSqlSessionTemplate(@Qualifier("mysql1SqlSessionFactory") SqlSessionFactory sqlSessionFactory) { |
|||
// return new SqlSessionTemplate(sqlSessionFactory); |
|||
// } |
|||
//} |
@ -1,29 +0,0 @@ |
|||
package com.example.demo.config; |
|||
|
|||
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 javax.sql.DataSource; |
|||
|
|||
/** |
|||
* 数据源配置 |
|||
*/ |
|||
@Configuration |
|||
public class DataSourceConfig { |
|||
@Primary |
|||
@Bean(name = "mysql1") |
|||
@ConfigurationProperties(prefix = "spring.datasource.mysql1") |
|||
public DataSource dBSrcArticle() { |
|||
return DataSourceBuilder.create().build(); |
|||
} |
|||
|
|||
@Primary |
|||
@Bean(name = "mysql2") |
|||
@ConfigurationProperties(prefix = "spring.datasource.mysql2") |
|||
public DataSource dBSrcUser() { |
|||
return DataSourceBuilder.create().build(); |
|||
} |
|||
} |
@ -1,37 +1,43 @@ |
|||
package com.example.demo.config; |
|||
|
|||
import org.apache.ibatis.session.SqlSessionFactory; |
|||
import org.mybatis.spring.SqlSessionFactoryBean; // 修复:正确导入类 |
|||
import org.mybatis.spring.SqlSessionTemplate; |
|||
import org.mybatis.spring.annotation.MapperScan; |
|||
import org.springframework.beans.factory.annotation.Qualifier; |
|||
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; |
|||
|
|||
/** |
|||
* 数据库leadnews_user配置 |
|||
*/ |
|||
@Configuration |
|||
@MapperScan(basePackages = {"com.example.demo.mapper.db2"}, sqlSessionFactoryRef = "sqlSessionFactoryUser") |
|||
public class dBSrcUser { |
|||
|
|||
@Bean |
|||
@Primary |
|||
public SqlSessionFactory sqlSessionFactoryUser(@Qualifier("mysql2") DataSource dataSource) throws Exception { |
|||
SqlSessionFactoryBean sqlSessionFactory = new SqlSessionFactoryBean(); // 修复:使用正确类名 |
|||
sqlSessionFactory.setDataSource(dataSource); |
|||
sqlSessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver() |
|||
.getResources("classpath:mapper/db2/*.xml")); // 确保路径正确 |
|||
return sqlSessionFactory.getObject(); |
|||
} |
|||
|
|||
@Bean |
|||
@Primary |
|||
public SqlSessionTemplate sqlSessionTemplateUser(@Qualifier("sqlSessionFactoryUser") SqlSessionFactory sqlSessionFactory) throws Exception { |
|||
return new SqlSessionTemplate(sqlSessionFactory); |
|||
} |
|||
} |
|||
//package com.example.demo.config; |
|||
// |
|||
//import com.zaxxer.hikari.HikariDataSource; |
|||
//import org.apache.ibatis.session.SqlSessionFactory; |
|||
//import org.mybatis.spring.SqlSessionFactoryBean; // 修复:正确导入类 |
|||
//import org.mybatis.spring.SqlSessionTemplate; |
|||
//import org.mybatis.spring.annotation.MapperScan; |
|||
//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; |
|||
// |
|||
///** |
|||
// * 数据库leadnews_user配置 |
|||
// */ |
|||
//@Configuration |
|||
//@MapperScan(basePackages = {"com.example.demo.mapperLink"}, sqlSessionFactoryRef = "sqlSessionFactoryUser") |
|||
//public class dBSrcUser { |
|||
// |
|||
// @Bean(name = "mysql2DataSource") |
|||
// @ConfigurationProperties(prefix = "spring.datasource.mysql2") |
|||
// public DataSource hljwDataSource() { |
|||
// return DataSourceBuilder.create().type(HikariDataSource.class).build(); |
|||
// } |
|||
// |
|||
// @Bean(name = "mysql2SqlSessionFactory") |
|||
// public SqlSessionFactory hljwSqlSessionFactory(@Qualifier("mysql2DataSource") DataSource dataSource) throws Exception { |
|||
// SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean(); |
|||
// sessionFactory.setDataSource(dataSource); |
|||
// sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapperlink/*.xml")); |
|||
// return sessionFactory.getObject(); |
|||
// } |
|||
// |
|||
// @Bean(name = "mysql2SqlSessionTemplate") |
|||
// public SqlSessionTemplate hljwSqlSessionTemplate(@Qualifier("mysql2SqlSessionFactory") SqlSessionFactory sqlSessionFactory) { |
|||
// return new SqlSessionTemplate(sqlSessionFactory); |
|||
// } |
|||
//} |
@ -1,4 +1,4 @@ |
|||
package com.example.demo.mapper.db1; |
|||
package com.example.demo.mapper; |
|||
|
|||
|
|||
|
@ -1,4 +1,4 @@ |
|||
package com.example.demo.mapper.db1; |
|||
package com.example.demo.mapper; |
|||
|
|||
|
|||
import com.example.demo.domain.entity.Admin; |
@ -1,4 +1,4 @@ |
|||
package com.example.demo.mapper.db1; |
|||
package com.example.demo.mapper; |
|||
|
|||
|
|||
import com.example.demo.domain.entity.Audit; |
@ -1,4 +1,4 @@ |
|||
package com.example.demo.mapper.db1; |
|||
package com.example.demo.mapper; |
|||
|
|||
|
|||
import com.example.demo.domain.entity.*; |
@ -1,4 +1,4 @@ |
|||
package com.example.demo.mapper.db1; |
|||
package com.example.demo.mapper; |
|||
|
|||
|
|||
import com.example.demo.domain.entity.Detail; |
@ -1,4 +1,4 @@ |
|||
package com.example.demo.mapper.db1; |
|||
package com.example.demo.mapper; |
|||
|
|||
import com.example.demo.domain.entity.DetailY; |
|||
import com.example.demo.domain.entity.UserDetailExport; |
@ -1,4 +1,4 @@ |
|||
package com.example.demo.mapper.db1; |
|||
package com.example.demo.mapper; |
|||
|
|||
|
|||
import com.example.demo.domain.work.One; |
@ -1,4 +1,4 @@ |
|||
package com.example.demo.mapper.db1; |
|||
package com.example.demo.mapper; |
|||
|
|||
import org.apache.ibatis.annotations.Mapper; |
|||
import org.apache.ibatis.annotations.Select; |
@ -1,4 +1,4 @@ |
|||
package com.example.demo.mapper.db1; |
|||
package com.example.demo.mapper; |
|||
|
|||
import com.example.demo.domain.entity.Permission; |
|||
import org.apache.ibatis.annotations.Mapper; |
@ -1,4 +1,4 @@ |
|||
package com.example.demo.mapper.db1; |
|||
package com.example.demo.mapper; |
|||
|
|||
|
|||
import com.example.demo.domain.entity.Index; |
@ -1,4 +1,4 @@ |
|||
package com.example.demo.mapper.db1; |
|||
package com.example.demo.mapper; |
|||
|
|||
|
|||
import com.example.demo.domain.entity.Rate; |
@ -1,4 +1,4 @@ |
|||
package com.example.demo.mapper.db1; |
|||
package com.example.demo.mapper; |
|||
|
|||
|
|||
import com.example.demo.domain.entity.Recharge; |
@ -1,4 +1,4 @@ |
|||
package com.example.demo.mapper.db1; |
|||
package com.example.demo.mapper; |
|||
|
|||
|
|||
import com.example.demo.domain.entity.Detail; |
@ -1,4 +1,4 @@ |
|||
package com.example.demo.mapper.db1; |
|||
package com.example.demo.mapper; |
|||
|
|||
|
|||
import com.example.demo.domain.entity.User; |
@ -0,0 +1,127 @@ |
|||
<?xml version="1.0" encoding="UTF-8" ?> |
|||
<!DOCTYPE mapper |
|||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" |
|||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
|||
|
|||
<mapper namespace="com.example.demo.mapper.StatisticsMapper"> |
|||
<select id="getMeium" resultType="com.example.demo.domain.vo.Meium"> |
|||
SELECT |
|||
u.area, |
|||
SUM(d.recharge_coin) / 100 AS rechargeSumCoin, |
|||
SUM(d.free_coin) / 100 AS freeSumCoin, |
|||
SUM(d.task_coin) / 100 AS taskSumCoin, |
|||
(SUM(d.recharge_coin) + SUM(d.free_coin) + SUM(d.task_coin)) / 100 AS totalRechargeSum |
|||
FROM |
|||
detail_y d |
|||
LEFT JOIN |
|||
user u |
|||
ON |
|||
u.jwcode = d.jwcode |
|||
<where> |
|||
<!-- 动态判断 update_type 是否传入 --> |
|||
<if test="updateType != null"> |
|||
AND update_type = #{updateType} |
|||
</if> |
|||
<!-- 动态判断时间范围 --> |
|||
<choose> |
|||
<when test="searchStartTime != null and searchEndTime != null"> |
|||
AND DATE(d.create_time) BETWEEN DATE(#{searchStartTime}) AND DATE(#{searchEndTime}) |
|||
</when> |
|||
</choose> |
|||
</where> |
|||
GROUP BY |
|||
u.area |
|||
<if test="sortField != null and sortField != ''"> |
|||
ORDER BY ${sortField} |
|||
<if test="sortOrder != null and sortOrder != ''"> |
|||
${sortOrder} |
|||
</if> |
|||
</if> |
|||
</select> |
|||
<select id="getMediuConsumeCoin" resultType="com.example.demo.domain.vo.SumCoin"> |
|||
SELECT DATE_FORMAT(create_time, '%Y-%m') AS month, |
|||
SUM(recharge_coin) / 100 AS rechargeSumCoin, |
|||
SUM(free_coin) / 100 AS freeSumCoin, |
|||
SUM(task_coin) / 100 AS taskSumCoin |
|||
FROM detail_y |
|||
WHERE update_type = '1' |
|||
<if test="searchStartTime != null and searchEndTime != null"> |
|||
AND create_time BETWEEN #{searchStartTime} AND #{searchEndTime} |
|||
</if> |
|||
<if test="areas != null"> |
|||
AND area IN |
|||
<foreach collection="areas" item="areas" open="(" separator="," close=")"> |
|||
#{areas} |
|||
</foreach> |
|||
</if> |
|||
GROUP BY month |
|||
ORDER BY month ASC |
|||
</select> |
|||
<select id="getMediuPayCoin" resultType="com.example.demo.domain.vo.SumCoin"> |
|||
SELECT DATE_FORMAT(create_time, '%Y-%m') AS month, |
|||
SUM(recharge_coin) / 100 AS rechargeSumCoin, |
|||
SUM(free_coin) / 100 AS freeSumCoin, |
|||
SUM(task_coin) / 100 AS taskSumCoin |
|||
FROM detail_y |
|||
WHERE update_type = '0' |
|||
<if test="searchStartTime != null and searchEndTime != null"> |
|||
AND create_time BETWEEN #{searchStartTime} AND #{searchEndTime} |
|||
</if> |
|||
<if test="areas != null"> |
|||
AND area IN |
|||
<foreach collection="areas" item="areas" open="(" separator="," close=")"> |
|||
#{areas} |
|||
</foreach> |
|||
</if> |
|||
GROUP BY month |
|||
ORDER BY month ASC |
|||
</select> |
|||
<select id="getMediuConsumeCoinday" resultType="com.example.demo.domain.vo.SumCoin"> |
|||
SELECT DATE_FORMAT(create_time, '%Y-%m-%d') AS day, |
|||
IFNULL(SUM(recharge_coin) / 100, 0) AS rechargeSumCoin, |
|||
IFNULL(SUM(free_coin) / 100, 0) AS freeSumCoin, |
|||
IFNULL(SUM(task_coin) / 100, 0) AS taskSumCoin |
|||
FROM detail_y |
|||
WHERE DATE(create_time) = #{searchEndTime} |
|||
AND update_type = #{updateType} |
|||
<if test="areas != null"> |
|||
AND area IN |
|||
<foreach collection="areas" item="areas" open="(" separator="," close=")"> |
|||
#{areas} |
|||
</foreach> |
|||
</if> |
|||
GROUP BY DATE_FORMAT(create_time, '%Y-%m-%d') |
|||
</select> |
|||
<select id="getMediuPayCoinyue" resultType="com.example.demo.domain.vo.SumCoin"> |
|||
SELECT DATE_FORMAT(create_time, '%Y-%m-%d') AS day, |
|||
IFNULL(SUM(recharge_coin) / 100, 0) AS rechargeSumCoin, |
|||
IFNULL(SUM(free_coin) / 100, 0) AS freeSumCoin, |
|||
IFNULL(SUM(task_coin) / 100, 0) AS taskSumCoin |
|||
FROM detail_y |
|||
WHERE DATE(create_time) = #{searchEndTime} |
|||
AND update_type = 0 |
|||
<if test="areas != null and areas.size > 0"> |
|||
AND area IN |
|||
<foreach collection="areas" item="areas" open="(" separator="," close=")"> |
|||
#{areas} |
|||
</foreach> |
|||
</if> |
|||
GROUP BY DATE_FORMAT(create_time, '%Y-%m-%d') |
|||
</select> |
|||
<select id="getMediuCounsumeCoinyue" resultType="com.example.demo.domain.vo.SumCoin"> |
|||
SELECT DATE_FORMAT(create_time, '%Y-%m-%d') AS day, |
|||
SUM(recharge_coin) / 100 AS rechargeSumCoin, |
|||
SUM(free_coin) / 100 AS freeSumCoin, |
|||
SUM(task_coin) / 100 AS taskSumCoin |
|||
FROM detail_y |
|||
WHERE AND create_time BETWEEN #{searchStartTime} AND #{searchEndTime} |
|||
AND update_type = 1 |
|||
<if test="areas != null and areas.size > 0"> |
|||
AND area IN |
|||
<foreach collection="areas" item="area" open="(" separator="," close=")"> |
|||
#{area} |
|||
</foreach> |
|||
</if> |
|||
GROUP BY DATE_FORMAT(create_time, '%Y-%m-%d') |
|||
</select> |
|||
</mapper> |
@ -1,41 +0,0 @@ |
|||
<?xml version="1.0" encoding="UTF-8" ?> |
|||
<!DOCTYPE mapper |
|||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" |
|||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
|||
|
|||
<mapper namespace="com.example.demo.mapper.db1.StatisticsMapper"> |
|||
<select id="getMeium" resultType="com.example.demo.domain.vo.Meium"> |
|||
SELECT |
|||
u.area, |
|||
SUM(d.recharge_coin) / 100 AS rechargeSumCoin, |
|||
SUM(d.free_coin) / 100 AS freeSumCoin, |
|||
SUM(d.task_coin) / 100 AS taskSumCoin, |
|||
(SUM(d.recharge_coin) + SUM(d.free_coin) + SUM(d.task_coin)) / 100 AS totalRechargeSum |
|||
FROM |
|||
detail_y d |
|||
LEFT JOIN |
|||
user u |
|||
ON |
|||
u.jwcode = d.jwcode |
|||
<where> |
|||
<!-- 动态判断 update_type 是否传入 --> |
|||
<if test="updateType != null"> |
|||
AND update_type = #{updateType} |
|||
</if> |
|||
<!-- 动态判断时间范围 --> |
|||
<choose> |
|||
<when test="searchStartTime != null and searchEndTime != null"> |
|||
AND DATE(d.create_time) BETWEEN DATE(#{searchStartTime}) AND DATE(#{searchEndTime}) |
|||
</when> |
|||
</choose> |
|||
</where> |
|||
GROUP BY |
|||
u.area |
|||
<if test="sortField != null and sortField != ''"> |
|||
ORDER BY ${sortField} |
|||
<if test="sortOrder != null and sortOrder != ''"> |
|||
${sortOrder} |
|||
</if> |
|||
</if> |
|||
</select> |
|||
</mapper> |
Write
Preview
Loading…
Cancel
Save
Reference in new issue