Merge branch 'sharding-分库' into test

# Conflicts:
#	src/main/java/com/sqx/modules/course/service/impl/CourseServiceImpl.java
#	src/main/java/com/sqx/modules/pay/dao/CashOutDao.java
#	src/main/java/com/sqx/modules/pay/service/impl/CashOutServiceImpl.java
#	src/main/resources/mapper/course/CourseCollectDao.xml
This commit is contained in:
GYJ
2025-01-02 21:48:53 +08:00
75 changed files with 1248 additions and 964 deletions

View File

@@ -21,9 +21,10 @@ connection-timeout: 30000
spring:
# sharding-jdbc 配置
shardingsphere:
center-tables-data-node: duanju.%s
# 显示sharding-jdbc改写的sql语句
show-sql: false
center-tables-data-node: duanju.%s
# 数据源名称
datasource:
# 数据源配置begin

View File

@@ -1,9 +1,9 @@
swagger:
enabled: true
enabled: false
pay:
h5BaseUrl: https://video-h5.hnsiyao.cn/me/detail/detail?allId=
orderNotifyUrl: https://video.hnsiyao.cn/czg/app/wuyou/notify
extractNotifyUrl: https://video.hnsiyao.cn/czg/app/wuyou/extractNotify
h5BaseUrl: https://dj-h5.hnsiyao.cn/me/detail/detail?allId=
orderNotifyUrl: https://pay.hnsiyao.cn/czg/app/wuyou/notify
extractNotifyUrl: https://pay.hnsiyao.cn/czg/app/wuyou/extractNotify
# 数据源的一些配置
driver-class-name: com.mysql.cj.jdbc.Driver
@@ -22,14 +22,24 @@ spring:
# sharding-jdbc 配置
shardingsphere:
center-tables-data-node: duanju.%s
# 区域表的数据源节点
region-tables-data-node: duanju-$->{0..4}.%s
# 区域分库策略的计算字段
region-tables-sharding-database-column: user_id
# 分库的计算方法
region-tables-sharding-database-algorithm: duanju-$->{Math.abs(user_id) % 5}
# 短剧集表 拆分
course_details-sharding-database-column: course_id
course_details-sharding-database-algorithm: duanju-$->{Math.abs(course_id) % 5}
# 显示sharding-jdbc改写的sql语句
show-sql: false
# 数据源名称
datasource:
# 数据源配置begin
master-0:
master:
driver-class-name: ${driver-class-name}
jdbc-url: jdbc:mysql://rm-gc712o11yndj78x6a6o.mysql.cn-chengdu.rds.aliyuncs.com/duanju?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT
jdbc-url: jdbc:mysql://rm-gc7xx913734hv5w5q.mysql.cn-chengdu.rds.aliyuncs.com/duanju?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT
username: video_user
password: VideoUser@1
minimum-idle: ${minimum-idle}
@@ -37,11 +47,112 @@ spring:
idle-timeout: ${idle-timeout}
max-lifetime: ${max-lifetime}
connection-timeout: ${connection-timeout}
# 数据源配置begin
master-0:
driver-class-name: ${driver-class-name}
jdbc-url:
username:
password:
minimum-idle: ${minimum-idle}
maximum-pool-size: ${maximum-pool-size}
idle-timeout: ${idle-timeout}
max-lifetime: ${max-lifetime}
connection-timeout: ${connection-timeout}
master-1:
driver-class-name: ${driver-class-name}
jdbc-url:
username:
password:
minimum-idle: ${minimum-idle}
maximum-pool-size: ${maximum-pool-size}
idle-timeout: ${idle-timeout}
max-lifetime: ${max-lifetime}
connection-timeout: ${connection-timeout}
master-2:
driver-class-name: ${driver-class-name}
jdbc-url:
username:
password:
minimum-idle: ${minimum-idle}
maximum-pool-size: ${maximum-pool-size}
idle-timeout: ${idle-timeout}
max-lifetime: ${max-lifetime}
connection-timeout: ${connection-timeout}
master-3:
driver-class-name: ${driver-class-name}
jdbc-url:
username:
password:
minimum-idle: ${minimum-idle}
maximum-pool-size: ${maximum-pool-size}
idle-timeout: ${idle-timeout}
max-lifetime: ${max-lifetime}
connection-timeout: ${connection-timeout}
master-4:
driver-class-name: ${driver-class-name}
jdbc-url:
username:
password:
minimum-idle: ${minimum-idle}
maximum-pool-size: ${maximum-pool-size}
idle-timeout: ${idle-timeout}
max-lifetime: ${max-lifetime}
connection-timeout: ${connection-timeout}
slave:
driver-class-name: ${driver-class-name}
jdbc-url:
username:
password:
minimum-idle: ${minimum-idle}
maximum-pool-size: ${maximum-pool-size}
idle-timeout: ${idle-timeout}
max-lifetime: ${max-lifetime}
connection-timeout: ${connection-timeout}
slave-0:
driver-class-name: ${driver-class-name}
jdbc-url: jdbc:mysql://47.122.26.160:3306/duanju?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT
username: root
password: 0fd6497c308ccfa8
jdbc-url:
username:
password:
minimum-idle: ${minimum-idle}
maximum-pool-size: ${maximum-pool-size}
idle-timeout: ${idle-timeout}
max-lifetime: ${max-lifetime}
connection-timeout: ${connection-timeout}
slave-1:
driver-class-name: ${driver-class-name}
jdbc-url:
username:
password:
minimum-idle: ${minimum-idle}
maximum-pool-size: ${maximum-pool-size}
idle-timeout: ${idle-timeout}
max-lifetime: ${max-lifetime}
connection-timeout: ${connection-timeout}
slave-2:
driver-class-name: ${driver-class-name}
jdbc-url:
username:
password:
minimum-idle: ${minimum-idle}
maximum-pool-size: ${maximum-pool-size}
idle-timeout: ${idle-timeout}
max-lifetime: ${max-lifetime}
connection-timeout: ${connection-timeout}
slave-3:
driver-class-name: ${driver-class-name}
jdbc-url:
username:
password:
minimum-idle: ${minimum-idle}
maximum-pool-size: ${maximum-pool-size}
idle-timeout: ${idle-timeout}
max-lifetime: ${max-lifetime}
connection-timeout: ${connection-timeout}
slave-4:
driver-class-name: ${driver-class-name}
jdbc-url:
username:
password:
minimum-idle: ${minimum-idle}
maximum-pool-size: ${maximum-pool-size}
idle-timeout: ${idle-timeout}
@@ -53,6 +164,21 @@ spring:
master-slave-rules:
#数据源
duanju:
master-data-source-name: master
slave-data-source-names: slave
duanju-0:
master-data-source-name: master-0
slave-data-source-names:
- slave-0
slave-data-source-names: slave-0
duanju-1:
master-data-source-name: master-1
slave-data-source-names: slave-1
duanju-2:
master-data-source-name: master-2
slave-data-source-names: slave-2
duanju-3:
master-data-source-name: master-3
slave-data-source-names: slave-3
duanju-4:
master-data-source-name: master-4
slave-data-source-names: slave-4

View File

@@ -1,9 +1,9 @@
swagger:
enabled: false
enabled: false
pay:
h5BaseUrl: https://dj-h5.hnsiyao.cn/me/detail/detail?allId=
orderNotifyUrl: https://pay.hnsiyao.cn/czg/app/wuyou/notify
extractNotifyUrl: https://pay.hnsiyao.cn/czg/app/wuyou/extractNotify
h5BaseUrl: https://dj-h5.hnsiyao.cn/me/detail/detail?allId=
orderNotifyUrl: https://pay.hnsiyao.cn/czg/app/wuyou/notify
extractNotifyUrl: https://pay.hnsiyao.cn/czg/app/wuyou/extractNotify
# 数据源的一些配置
driver-class-name: com.mysql.cj.jdbc.Driver
@@ -19,63 +19,173 @@ max-lifetime: 30000
connection-timeout: 30000
spring:
# sharding-jdbc 配置
shardingsphere:
center-tables-data-node: duanju.%s
# 显示sharding-jdbc改写的sql语句
show-sql: false
# 数据源名称
datasource:
# 数据源配置begin
master-0:
driver-class-name: ${driver-class-name}
jdbc-url: jdbc:mysql://rm-gc7xx913734hv5w5q.mysql.cn-chengdu.rds.aliyuncs.com/duanju?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT
username: video_user
password: VideoUser@1
minimum-idle: ${minimum-idle}
maximum-pool-size: ${maximum-pool-size}
idle-timeout: ${idle-timeout}
max-lifetime: ${max-lifetime}
connection-timeout: ${connection-timeout}
# slave-0:
# driver-class-name: ${driver-class-name}
# jdbc-url: jdbc:mysql://localhost:3306/duanju?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT
# username: root
# password: acddb0c84a192ada
# minimum-idle: ${minimum-idle}
# maximum-pool-size: ${maximum-pool-size}
# idle-timeout: ${idle-timeout}
# max-lifetime: ${max-lifetime}
# connection-timeout: ${connection-timeout}
# slave-1:
# driver-class-name: ${driver-class-name}
# jdbc-url: jdbc:mysql://172.18.96.9:3306/duanju?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT
# username: root
# password: VideoUser1@
# minimum-idle: ${minimum-idle}
# maximum-pool-size: ${maximum-pool-size}
# idle-timeout: ${idle-timeout}
# max-lifetime: ${max-lifetime}
# connection-timeout: ${connection-timeout}
slave-2:
driver-class-name: ${driver-class-name}
jdbc-url: jdbc:mysql://172.18.96.8:3306/duanju?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT
username: root
password: VideoUser1@
minimum-idle: ${minimum-idle}
maximum-pool-size: ${maximum-pool-size}
idle-timeout: ${idle-timeout}
max-lifetime: ${max-lifetime}
connection-timeout: ${connection-timeout}
# 数据源配置end
# sharding-jdbc 配置
shardingsphere:
# 显示sharding-jdbc改写的sql语句
show-sql: true
center-tables-data-node: duanju.%s
# 区域表的数据源节点
region-tables-data-node: duanju-$->{0..4}.%s
# 区域分库策略的计算字段
region-tables-sharding-database-column: user_id
# 分库的计算方法
region-tables-sharding-database-algorithm: duanju-$->{user_id % 5}
# 短剧集表 拆分
course_details-sharding-database-column: course_id
course_details-sharding-database-algorithm: duanju-$->{course_id % 5}
# 数据源名称
datasource:
duanju:
driver-class-name: ${driver-class-name}
jdbc-url: jdbc:mysql://192.168.1.41:3306/duanju?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT
username: root
password: gongyijieqp002
minimum-idle: ${minimum-idle}
maximum-pool-size: ${maximum-pool-size}
idle-timeout: ${idle-timeout}
max-lifetime: ${max-lifetime}
connection-timeout: ${connection-timeout}
# 数据源配置begin
duanju-0:
driver-class-name: ${driver-class-name}
jdbc-url: jdbc:mysql://192.168.1.41:3306/duanju-0?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT
username: root
password: gongyijieqp002
minimum-idle: ${minimum-idle}
maximum-pool-size: ${maximum-pool-size}
idle-timeout: ${idle-timeout}
max-lifetime: ${max-lifetime}
connection-timeout: ${connection-timeout}
duanju-1:
driver-class-name: ${driver-class-name}
jdbc-url: jdbc:mysql://192.168.1.41:3306/duanju-1?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT
username: root
password: gongyijieqp002
minimum-idle: ${minimum-idle}
maximum-pool-size: ${maximum-pool-size}
idle-timeout: ${idle-timeout}
max-lifetime: ${max-lifetime}
connection-timeout: ${connection-timeout}
duanju-2:
driver-class-name: ${driver-class-name}
jdbc-url: jdbc:mysql://192.168.1.41:3306/duanju-2?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT
username: root
password: gongyijieqp002
minimum-idle: ${minimum-idle}
maximum-pool-size: ${maximum-pool-size}
idle-timeout: ${idle-timeout}
max-lifetime: ${max-lifetime}
connection-timeout: ${connection-timeout}
duanju-3:
driver-class-name: ${driver-class-name}
jdbc-url: jdbc:mysql://192.168.1.41:3306/duanju-3?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT
username: root
password: gongyijieqp002
minimum-idle: ${minimum-idle}
maximum-pool-size: ${maximum-pool-size}
idle-timeout: ${idle-timeout}
max-lifetime: ${max-lifetime}
connection-timeout: ${connection-timeout}
duanju-4:
driver-class-name: ${driver-class-name}
jdbc-url: jdbc:mysql://192.168.1.41:3306/duanju-4?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT
username: root
password: gongyijieqp002
minimum-idle: ${minimum-idle}
maximum-pool-size: ${maximum-pool-size}
idle-timeout: ${idle-timeout}
max-lifetime: ${max-lifetime}
connection-timeout: ${connection-timeout}
duanju-slave:
driver-class-name: ${driver-class-name}
jdbc-url: jdbc:mysql://192.168.1.41:3306/duanju?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT
username: root
password: gongyijieqp002
minimum-idle: ${minimum-idle}
maximum-pool-size: ${maximum-pool-size}
idle-timeout: ${idle-timeout}
max-lifetime: ${max-lifetime}
connection-timeout: ${connection-timeout}
duanju-slave-0:
driver-class-name: ${driver-class-name}
jdbc-url: jdbc:mysql://192.168.1.41:3306/duanju-0?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT
username: root
password: gongyijieqp002
minimum-idle: ${minimum-idle}
maximum-pool-size: ${maximum-pool-size}
idle-timeout: ${idle-timeout}
max-lifetime: ${max-lifetime}
connection-timeout: ${connection-timeout}
duanju-slave-1:
driver-class-name: ${driver-class-name}
jdbc-url: jdbc:mysql://192.168.1.41:3306/duanju-1?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT
username: root
password: gongyijieqp002
minimum-idle: ${minimum-idle}
maximum-pool-size: ${maximum-pool-size}
idle-timeout: ${idle-timeout}
max-lifetime: ${max-lifetime}
connection-timeout: ${connection-timeout}
duanju-slave-2:
driver-class-name: ${driver-class-name}
jdbc-url: jdbc:mysql://192.168.1.41:3306/duanju-2?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT
username: root
password: gongyijieqp002
minimum-idle: ${minimum-idle}
maximum-pool-size: ${maximum-pool-size}
idle-timeout: ${idle-timeout}
max-lifetime: ${max-lifetime}
connection-timeout: ${connection-timeout}
duanju-slave-3:
driver-class-name: ${driver-class-name}
jdbc-url: jdbc:mysql://192.168.1.41:3306/duanju-3?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT
username: root
password: gongyijieqp002
minimum-idle: ${minimum-idle}
maximum-pool-size: ${maximum-pool-size}
idle-timeout: ${idle-timeout}
max-lifetime: ${max-lifetime}
connection-timeout: ${connection-timeout}
duanju-slave-4:
driver-class-name: ${driver-class-name}
jdbc-url: jdbc:mysql://192.168.1.41:3306/duanju-4?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT
username: root
password: gongyijieqp002
minimum-idle: ${minimum-idle}
maximum-pool-size: ${maximum-pool-size}
idle-timeout: ${idle-timeout}
max-lifetime: ${max-lifetime}
connection-timeout: ${connection-timeout}
# 数据源配置end
# 读写分离配置begin
master-slave-rules:
#数据源
duanju:
masterDataSourceName: duanju
slaveDataSourceNames:
- duanju-slave
duanju-0:
masterDataSourceName: duanju-0
slaveDataSourceNames:
- duanju-slave-0
duanju-1:
masterDataSourceName: duanju-1
slaveDataSourceNames:
- duanju-slave-1
duanju-2:
masterDataSourceName: duanju-2
slaveDataSourceNames:
- duanju-slave-2
duanju-3:
masterDataSourceName: duanju-3
slaveDataSourceNames:
- duanju-slave-3
duanju-4:
masterDataSourceName: duanju-4
slaveDataSourceNames:
- duanju-slave-4
# 读写分离配置begin
master-slave-rules:
#数据源
duanju:
master-data-source-name: master-0
# slave-data-source-names: slave-0,slave-1,slave-2
slave-data-source-names: slave-2
# - slave-0
# - slave-1
# - slave-2

View File

@@ -65,7 +65,7 @@ spring:
allow-bean-definition-overriding: true
# 环境 dev|test|prod
profiles:
active: local
active: prod
# jackson时间格式化
jackson:
time-zone: GMT+8
@@ -93,74 +93,79 @@ spring:
# pathmatch:
# matching-strategy: ant_path_matcher
shardingsphere:
center-tables:
- activity
- app
- banner
- cash_out
- comment_good
- common_info
- complet_award
- coupon
- coupon_user
- course
- course_classification
- course_collect
- course_comment
# 短剧集表 通过course_id 分
course-details:
- course_details
- course_user
- disc_spinning
- disc_spinning_amount
- disc_spinning_record
- help_classify
- help_word
- invite
- invite_award
- invite_money
- message_info
- msg
#分库表 通过user_Id分
region-tables:
- user_money_details
- orders
- pay_classify
- course_collect
- pay_details
- qrtz_blob_triggers
- qrtz_calendars
- qrtz_cron_triggers
- qrtz_fired_triggers
- qrtz_job_details
- qrtz_locks
- qrtz_paused_trigger_grps
- qrtz_scheduler_state
- qrtz_simple_triggers
- qrtz_simprop_triggers
- qrtz_triggers
- schedule_job
- disc_spinning_record
- cash_out
- course_user
- tb_user
- task_center_record
- user_money
- user_sign_record
- invite_achievement
- invite_money
#中心表
center-tables:
- message_info
- schedule_job_log
- invite
- msg
- sys_role_menu
- sdk_info
- course
- user_integral_details
- common_info
- sys_log
- user_vip
- uni_ad_callback_record
- sys_user_role
- sys_menu
- comment_good
- sys_user
- course_comment
- banner
- disc_spinning
- course_classification
- task_center
- sdk_type
- search
- sys_captcha
- task_center_reward
- schedule_job
- help_word
- help_classify
- disc_spinning_amount
- activity
- vip_details
- sys_role
- pay_classify
- app
- invite_award
- complet_award
- url_address
- sys_config
- sys_dict
- sys_log
- sys_menu
- sys_oss
- sys_role
- sys_role_menu
- sys_user
- sys_user_role
- sys_user_token
- task_center
- task_center_record
- task_center_reward
- tb_user
- uni_ad_callback_record
- url_address
- user_integral
- user_integral_details
- user_money
- user_money_details
- search
- coupon_user
- coupon
- user_prize_exchange
- user_sign_record
- user_vip
- vip_details
- invite_achievement
- user_integral
- sys_user_token
- sys_captcha
- qrtz_triggers
- qrtz_simprop_triggers
- qrtz_simple_triggers
- qrtz_scheduler_state
- qrtz_paused_trigger_grps
- qrtz_locks
- qrtz_job_details
- qrtz_fired_triggers
- qrtz_cron_triggers
- qrtz_calendars
- qrtz_blob_triggers

View File

@@ -16,7 +16,7 @@
</select>
<select id="selectBannerPage" resultType="com.sqx.modules.banner.entity.Banner">
<select id="selectBanner" resultType="com.sqx.modules.banner.entity.Banner">
select * from banner
where classify=#{classify}
order by `sort` desc

View File

@@ -1,14 +1,6 @@
<?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.sqx.modules.course.dao.CourseClassificationDao">
<select id="selectCourseClassificationPage" resultType="com.sqx.modules.course.entity.CourseClassification">
select * from course_classification where 1=1 and is_delete=0
<if test ='null != classificationName'>
and classification_name LIKE CONCAT('%', #{classificationName}, '%')
</if>
order by sort
</select>
<select id="selectCourseClassificationList" resultType="com.sqx.modules.course.entity.CourseClassification">
select * from course_classification where 1=1 and is_delete=0
<if test ='null != classificationName'>
@@ -23,4 +15,4 @@
<select id="queryClassification" resultType="com.sqx.modules.course.response.ClassificationResponse">
select classification_id ,classification_name from course_classification where is_delete=0;
</select>
</mapper>
</mapper>

View File

@@ -26,50 +26,7 @@
GROUP BY
u.course_id, c.course_id, d.course_details_name, d.course_details_id
ORDER BY
produceEndTime DESC
<!-- SELECT
MAX( u.update_time ) AS produceEndTime,
c.*,
(
SELECT
d.course_details_name
FROM
course_collect cc
LEFT JOIN course_details d ON cc.course_details_id = d.course_details_id
WHERE
d.course_id = u.course_id
AND cc.classify = 3 and cc.user_id=#{userId}
ORDER BY
cc.update_time DESC
LIMIT 1
) AS courseDetailsName,
(
SELECT
d.course_details_id
FROM
course_collect cc
LEFT JOIN course_details d ON cc.course_details_id = d.course_details_id
WHERE
d.course_id = u.course_id
AND cc.classify = 3 and cc.user_id=#{userId}
ORDER BY
cc.update_time DESC
LIMIT 1
) AS courseDetailsId,
( SELECT count(*) FROM course_details d WHERE d.course_id = c.course_id ) AS courseDetailsCount
FROM
course_collect u
LEFT JOIN course c ON u.course_id = c.course_id
WHERE
u.user_id = #{userId}
AND c.course_id IS NOT NULL
AND u.classify = #{classify}
GROUP BY
u.course_id
ORDER BY
produceEndTime DESC
-->
produceEndTime DESC;
</select>
</mapper>

View File

@@ -249,7 +249,7 @@
WHERE
c.is_delete = 0 and c.status=1
<if test='null != title'>
and c.title LIKE #{title}
and c.title LIKE concat("%",#{title},"%")
</if>
order by create_time desc
</select>