多数据源优化,支持分布式事务,支持Service层切换数据源;支持MyBatisDao注解指定数据源名称;jquery validate

remote 中文乱码导致验证失败问题;角色管理增加状态条件;附件列表增加上传人和时间;
This commit is contained in:
thinkgem
2018-04-21 12:58:42 +08:00
parent 630a1f1d73
commit 503e14b146
18 changed files with 41 additions and 21 deletions

View File

@@ -2,6 +2,8 @@
-- 打开 my.ini 给 [mysqld] 增加如下配置: -- 打开 my.ini 给 [mysqld] 增加如下配置:
-- sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION -- sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
set global read_only=0;
create user 'jeesite'@'%' identified by 'jeesite'; create user 'jeesite'@'%' identified by 'jeesite';
create database jeesite DEFAULT CHARSET utf8 COLLATE utf8_general_ci; create database jeesite DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

View File

@@ -6,4 +6,10 @@ create user jeesite
grant connect,resource,create session,select any table, grant connect,resource,create session,select any table,
create any view,create any table,create any index, create any view,create any table,create any index,
drop any table,drop any view,drop any index drop any table,drop any view,drop any index
to jeesite; to jeesite;
-- 多数据源分布式事务下需要对目标用户进行如下授权否则会提示错误ResourceException: Error in recovery
grant select on sys.dba_pending_transactions to jeesite;
grant select on sys.pending_trans$ to jeesite;
grant select on sys.dba_2pc_pending to jeesite;
grant execute on sys.dbms_system to jeesite;

View File

@@ -4,6 +4,7 @@
package com.jeesite.modules.sys.dao; package com.jeesite.modules.sys.dao;
import com.jeesite.common.dao.TreeDao; import com.jeesite.common.dao.TreeDao;
import com.jeesite.common.datasource.DataSourceHolder;
import com.jeesite.common.mybatis.annotation.MyBatisDao; import com.jeesite.common.mybatis.annotation.MyBatisDao;
import com.jeesite.modules.sys.entity.Area; import com.jeesite.modules.sys.entity.Area;
@@ -12,7 +13,7 @@ import com.jeesite.modules.sys.entity.Area;
* @author ThinkGem * @author ThinkGem
* @version 2017-03-22 * @version 2017-03-22
*/ */
@MyBatisDao @MyBatisDao(dataSourceName=DataSourceHolder.DEFAULT)
public interface AreaDao extends TreeDao<Area> { public interface AreaDao extends TreeDao<Area> {
} }

View File

@@ -4,6 +4,7 @@
package com.jeesite.modules.sys.dao; package com.jeesite.modules.sys.dao;
import com.jeesite.common.dao.TreeDao; import com.jeesite.common.dao.TreeDao;
import com.jeesite.common.datasource.DataSourceHolder;
import com.jeesite.common.mybatis.annotation.MyBatisDao; import com.jeesite.common.mybatis.annotation.MyBatisDao;
import com.jeesite.modules.sys.entity.Company; import com.jeesite.modules.sys.entity.Company;
@@ -12,7 +13,7 @@ import com.jeesite.modules.sys.entity.Company;
* @author ThinkGem * @author ThinkGem
* @version 2017-03-12 * @version 2017-03-12
*/ */
@MyBatisDao @MyBatisDao(dataSourceName=DataSourceHolder.DEFAULT)
public interface CompanyDao extends TreeDao<Company> { public interface CompanyDao extends TreeDao<Company> {
} }

View File

@@ -4,6 +4,7 @@
package com.jeesite.modules.sys.dao; package com.jeesite.modules.sys.dao;
import com.jeesite.common.dao.CrudDao; import com.jeesite.common.dao.CrudDao;
import com.jeesite.common.datasource.DataSourceHolder;
import com.jeesite.common.mybatis.annotation.MyBatisDao; import com.jeesite.common.mybatis.annotation.MyBatisDao;
import com.jeesite.modules.sys.entity.CompanyOffice; import com.jeesite.modules.sys.entity.CompanyOffice;
@@ -12,7 +13,7 @@ import com.jeesite.modules.sys.entity.CompanyOffice;
* @author ThinkGem * @author ThinkGem
* @version 2017-03-23 * @version 2017-03-23
*/ */
@MyBatisDao @MyBatisDao(dataSourceName=DataSourceHolder.DEFAULT)
public interface CompanyOfficeDao extends CrudDao<CompanyOffice> { public interface CompanyOfficeDao extends CrudDao<CompanyOffice> {
} }

View File

@@ -4,6 +4,7 @@
package com.jeesite.modules.sys.dao; package com.jeesite.modules.sys.dao;
import com.jeesite.common.dao.CrudDao; import com.jeesite.common.dao.CrudDao;
import com.jeesite.common.datasource.DataSourceHolder;
import com.jeesite.common.mybatis.annotation.MyBatisDao; import com.jeesite.common.mybatis.annotation.MyBatisDao;
import com.jeesite.modules.sys.entity.EmpUser; import com.jeesite.modules.sys.entity.EmpUser;
@@ -12,7 +13,7 @@ import com.jeesite.modules.sys.entity.EmpUser;
* @author ThinkGem * @author ThinkGem
* @version 2015-4-24 * @version 2015-4-24
*/ */
@MyBatisDao @MyBatisDao(dataSourceName=DataSourceHolder.DEFAULT)
public interface EmpUserDao extends CrudDao<EmpUser> { public interface EmpUserDao extends CrudDao<EmpUser> {
} }

View File

@@ -4,6 +4,7 @@
package com.jeesite.modules.sys.dao; package com.jeesite.modules.sys.dao;
import com.jeesite.common.dao.CrudDao; import com.jeesite.common.dao.CrudDao;
import com.jeesite.common.datasource.DataSourceHolder;
import com.jeesite.common.mybatis.annotation.MyBatisDao; import com.jeesite.common.mybatis.annotation.MyBatisDao;
import com.jeesite.modules.sys.entity.Employee; import com.jeesite.modules.sys.entity.Employee;
@@ -11,8 +12,9 @@ import com.jeesite.modules.sys.entity.Employee;
* 员工管理DAO接口 * 员工管理DAO接口
* @author ThinkGem * @author ThinkGem
* @version 2017-03-25 * @version 2017-03-25
* 通过 UserUtils.loadRefObj() 加载引用类型对象时需要给MyBatisDao指定引用entity类型。
*/ */
@MyBatisDao(entity = Employee.class) @MyBatisDao(entity=Employee.class, dataSourceName=DataSourceHolder.DEFAULT)
public interface EmployeeDao extends CrudDao<Employee> { public interface EmployeeDao extends CrudDao<Employee> {
} }

View File

@@ -4,6 +4,7 @@
package com.jeesite.modules.sys.dao; package com.jeesite.modules.sys.dao;
import com.jeesite.common.dao.CrudDao; import com.jeesite.common.dao.CrudDao;
import com.jeesite.common.datasource.DataSourceHolder;
import com.jeesite.common.mybatis.annotation.MyBatisDao; import com.jeesite.common.mybatis.annotation.MyBatisDao;
import com.jeesite.modules.sys.entity.EmployeePost; import com.jeesite.modules.sys.entity.EmployeePost;
@@ -12,7 +13,7 @@ import com.jeesite.modules.sys.entity.EmployeePost;
* @author ThinkGem * @author ThinkGem
* @version 2017-03-25 * @version 2017-03-25
*/ */
@MyBatisDao @MyBatisDao(dataSourceName=DataSourceHolder.DEFAULT)
public interface EmployeePostDao extends CrudDao<EmployeePost> { public interface EmployeePostDao extends CrudDao<EmployeePost> {
} }

View File

@@ -4,6 +4,7 @@
package com.jeesite.modules.sys.dao; package com.jeesite.modules.sys.dao;
import com.jeesite.common.dao.CrudDao; import com.jeesite.common.dao.CrudDao;
import com.jeesite.common.datasource.DataSourceHolder;
import com.jeesite.common.mybatis.annotation.MyBatisDao; import com.jeesite.common.mybatis.annotation.MyBatisDao;
import com.jeesite.modules.sys.entity.Log; import com.jeesite.modules.sys.entity.Log;
@@ -12,7 +13,7 @@ import com.jeesite.modules.sys.entity.Log;
* @author ThinkGem * @author ThinkGem
* @version 2017-03-19 * @version 2017-03-19
*/ */
@MyBatisDao @MyBatisDao(dataSourceName=DataSourceHolder.DEFAULT)
public interface LogDao extends CrudDao<Log> { public interface LogDao extends CrudDao<Log> {
} }

View File

@@ -4,6 +4,7 @@
package com.jeesite.modules.sys.dao; package com.jeesite.modules.sys.dao;
import com.jeesite.common.dao.TreeDao; import com.jeesite.common.dao.TreeDao;
import com.jeesite.common.datasource.DataSourceHolder;
import com.jeesite.common.mybatis.annotation.MyBatisDao; import com.jeesite.common.mybatis.annotation.MyBatisDao;
import com.jeesite.modules.sys.entity.Office; import com.jeesite.modules.sys.entity.Office;
@@ -12,7 +13,7 @@ import com.jeesite.modules.sys.entity.Office;
* @author ThinkGem * @author ThinkGem
* @version 2017-03-23 * @version 2017-03-23
*/ */
@MyBatisDao @MyBatisDao(dataSourceName=DataSourceHolder.DEFAULT)
public interface OfficeDao extends TreeDao<Office> { public interface OfficeDao extends TreeDao<Office> {
} }

View File

@@ -4,6 +4,7 @@
package com.jeesite.modules.sys.dao; package com.jeesite.modules.sys.dao;
import com.jeesite.common.dao.CrudDao; import com.jeesite.common.dao.CrudDao;
import com.jeesite.common.datasource.DataSourceHolder;
import com.jeesite.common.mybatis.annotation.MyBatisDao; import com.jeesite.common.mybatis.annotation.MyBatisDao;
import com.jeesite.modules.sys.entity.Post; import com.jeesite.modules.sys.entity.Post;
@@ -12,7 +13,7 @@ import com.jeesite.modules.sys.entity.Post;
* @author ThinkGem * @author ThinkGem
* @version 2017-03-25 * @version 2017-03-25
*/ */
@MyBatisDao @MyBatisDao(dataSourceName=DataSourceHolder.DEFAULT)
public interface PostDao extends CrudDao<Post> { public interface PostDao extends CrudDao<Post> {
} }

View File

@@ -12,7 +12,6 @@ import org.springframework.core.NamedThreadLocal;
import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.ModelAndView;
import com.jeesite.common.datasource.DataSourceHolder;
import com.jeesite.common.lang.DateUtils; import com.jeesite.common.lang.DateUtils;
import com.jeesite.common.lang.TimeUtils; import com.jeesite.common.lang.TimeUtils;
import com.jeesite.common.service.BaseService; import com.jeesite.common.service.BaseService;
@@ -56,10 +55,7 @@ public class LogInterceptor extends BaseService implements HandlerInterceptor {
long endTime = System.currentTimeMillis(); // 2、结束时间 long endTime = System.currentTimeMillis(); // 2、结束时间
long executeTime = endTime - beginTime; // 3、获取执行时间 long executeTime = endTime - beginTime; // 3、获取执行时间
startTimeThreadLocal.remove(); // 用完之后销毁线程变量数据 startTimeThreadLocal.remove(); // 用完之后销毁线程变量数据
// 恢复多数据源参数,使用默认数据源
DataSourceHolder.clearDataSourceName();
// 保存日志 // 保存日志
LogUtils.saveLog(UserUtils.getUser(), request, handler, ex, null, null, executeTime); LogUtils.saveLog(UserUtils.getUser(), request, handler, ex, null, null, executeTime);

View File

@@ -72,7 +72,7 @@ jdbc:
# 最大连接数 # 最大连接数
maxActive: 20 maxActive: 20
# # 多数据源名称列表,用方式:DataSourceHolder.setDataSourceName("ds2") # # 多数据源名称列表,用方式:@MyBatisDao(dataSourceName="ds2")
# dataSourceNames: ds2 # dataSourceNames: ds2
# #
# # 多数据源配置ds2 # # 多数据源配置ds2

View File

@@ -6,6 +6,8 @@
<logger name="org.mybatis.spring.transaction" level="DEBUG" /> <logger name="org.mybatis.spring.transaction" level="DEBUG" />
<logger name="org.apache.catalina.webresources.Cache" level="ERROR" /> <logger name="org.apache.catalina.webresources.Cache" level="ERROR" />
<logger name="org.springframework.boot.context.embedded" level="INFO" /> <logger name="org.springframework.boot.context.embedded" level="INFO" />
<logger name="com.atomikos.icatch.config.UserTransactionServiceImp" level="ERROR" />
<logger name="com.atomikos.jdbc.AbstractDataSourceBean" level="ERROR" />
<logger name="com.jeesite" level="DEBUG" /> <logger name="com.jeesite" level="DEBUG" />
<logger name="com.jeesite.common.i18n" level="INFO" /> <logger name="com.jeesite.common.i18n" level="INFO" />

View File

@@ -0,0 +1,4 @@
# transactions.properties not found - looking for jta.properties in classpath...
com.atomikos.icatch.service=com.atomikos.icatch.standalone.UserTransactionServiceFactory
com.atomikos.icatch.max_actives=-1
com.atomikos.icatch.enable_logging=false

View File

@@ -46,8 +46,8 @@
<!-- 插件配置 --> <!-- 插件配置 -->
<plugins> <plugins>
<plugin interceptor="com.jeesite.common.mybatis.interceptor.DataSourceInterceptor" />
<plugin interceptor="com.jeesite.common.mybatis.interceptor.PaginationInterceptor" /> <plugin interceptor="com.jeesite.common.mybatis.interceptor.PaginationInterceptor" />
<!-- <plugin interceptor="com.jeesite.common.mybatis.interceptor.TimerInterceptor" /> -->
</plugins> </plugins>
</configuration> </configuration>

View File

@@ -17,9 +17,9 @@
<li><a href="javascript:" id="switchSkin" title="${text('切换主题')}" style="margin-top:-1px;"><i class="fa fa-dashboard"></i></a></li> <li><a href="javascript:" id="switchSkin" title="${text('切换主题')}" style="margin-top:-1px;"><i class="fa fa-dashboard"></i></a></li>
<% include('/modules/sys/sysIndex/topMenuLang.html'){} %> <% include('/modules/sys/sysIndex/topMenuLang.html'){} %>
<% include('/modules/sys/sysIndex/topMenuOnline.html'){} %> <% include('/modules/sys/sysIndex/topMenuOnline.html'){} %>
<% include('/modules/sys/sysIndex/topMenuMsg.html'){} %> <% //include('/modules/sys/sysIndex/topMenuMsg.html'){} %>
<% include('/modules/sys/sysIndex/topMenuNotify.html'){} %> <% //include('/modules/sys/sysIndex/topMenuNotify.html'){} %>
<% include('/modules/sys/sysIndex/topMenuTask.html'){} %> <% //include('/modules/sys/sysIndex/topMenuTask.html'){} %>
<% include('/modules/sys/sysIndex/topMenuUser.html'){} %> <% include('/modules/sys/sysIndex/topMenuUser.html'){} %>
</ul> </ul>
</div> </div>

View File

@@ -71,7 +71,7 @@ jdbc:
# # 最大连接数 # # 最大连接数
# maxActive: 20 # maxActive: 20
# #
# # 多数据源名称列表,用方式:DataSourceHolder.setDataSourceName("ds2") # # 多数据源名称列表,用方式:@MyBatisDao(dataSourceName="ds2")
# dataSourceNames: ds2 # dataSourceNames: ds2
# #
# # 多数据源配置ds2 # # 多数据源配置ds2