tuonina 5 years ago
parent
commit
9477c3d2bf
27 changed files with 792 additions and 11 deletions
  1. 1 0
      tuon-core/build.gradle
  2. 53 0
      tuon-core/src/main/java/cn/tonyandmoney/tuon/core/properties/BatisMetaProperties.java
  3. 36 0
      tuon-core/src/main/java/cn/tonyandmoney/tuon/core/properties/CustomConfigProperties.java
  4. 3 5
      tuon-core/src/main/java/cn/tonyandmoney/tuon/core/redis/RedisSentinelConfiguration.java
  5. 53 0
      tuon-core/src/main/java/cn/tonyandmoney/tuon/core/session/SessionUtils.java
  6. 14 0
      tuon-core/src/main/java/cn/tonyandmoney/tuon/core/user/IDept.java
  7. 14 0
      tuon-core/src/main/java/cn/tonyandmoney/tuon/core/user/IRole.java
  8. 28 0
      tuon-core/src/main/java/cn/tonyandmoney/tuon/core/user/IUser.java
  9. 8 0
      tuon-core/src/main/kotlin/cn/tonyandmoney/tuon/core/TuonCore.kt
  10. 63 0
      tuon-core/src/main/kotlin/cn/tonyandmoney/tuon/core/batis/MybatisPlusConfig.kt
  11. 112 0
      tuon-core/src/main/kotlin/cn/tonyandmoney/tuon/core/batis/base/IPhysicalMapper.kt
  12. 55 0
      tuon-core/src/main/kotlin/cn/tonyandmoney/tuon/core/batis/handler/CustomMetaObjectHandler.kt
  13. 51 0
      tuon-core/src/main/kotlin/cn/tonyandmoney/tuon/core/batis/injector/LogicMoreSqlInjector.kt
  14. 28 0
      tuon-core/src/main/kotlin/cn/tonyandmoney/tuon/core/batis/injector/enums/SqlMethodCopy.kt
  15. 22 0
      tuon-core/src/main/kotlin/cn/tonyandmoney/tuon/core/batis/injector/method/Delete.kt
  16. 23 0
      tuon-core/src/main/kotlin/cn/tonyandmoney/tuon/core/batis/injector/method/DeleteBatchIds.kt
  17. 21 0
      tuon-core/src/main/kotlin/cn/tonyandmoney/tuon/core/batis/injector/method/DeleteById.kt
  18. 20 0
      tuon-core/src/main/kotlin/cn/tonyandmoney/tuon/core/batis/injector/method/DeleteByMap.kt
  19. 20 0
      tuon-core/src/main/kotlin/cn/tonyandmoney/tuon/core/batis/injector/method/SelectById.kt
  20. 20 0
      tuon-core/src/main/kotlin/cn/tonyandmoney/tuon/core/batis/injector/method/SelectList.kt
  21. 20 0
      tuon-core/src/main/kotlin/cn/tonyandmoney/tuon/core/batis/injector/method/SelectPage.kt
  22. 21 0
      tuon-core/src/main/kotlin/cn/tonyandmoney/tuon/core/batis/injector/method/Update.kt
  23. 26 0
      tuon-core/src/main/kotlin/cn/tonyandmoney/tuon/core/batis/injector/method/UpdateById.kt
  24. 63 0
      tuon-core/src/main/kotlin/cn/tonyandmoney/tuon/core/config/CustomWebMvcConfiguration.kt
  25. 0 5
      tuon-core/src/main/resources/application.yml
  26. 16 0
      tuon-web/src/main/resources/application.yml
  27. 1 1
      zen-web/src/main/java/cn/gygxzc/envir/config/encrypt/WebDecodeRequestBodyAdvice.java

+ 1 - 0
tuon-core/build.gradle

@@ -12,4 +12,5 @@ dependencies {
     compile 'org.springframework.boot:spring-boot-starter-data-redis-reactive'
     compile('org.springframework.boot:spring-boot-starter-webflux')
 //    compile 'org.springframework.boot:spring-boot-starter-data-mongodb-reactive'
+    compile("com.baomidou:mybatis-plus-boot-starter:$mybatisPlusVersion")
 }

+ 53 - 0
tuon-core/src/main/java/cn/tonyandmoney/tuon/core/properties/BatisMetaProperties.java

@@ -0,0 +1,53 @@
+package cn.tonyandmoney.tuon.core.properties;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+
+/**
+ * @Classname BatisMetaProperties
+ * @Description TODO
+ * @Date 2019/8/25 19:37
+ * @Created by Administrator
+ * 一些自定义信息
+ */
+@ConfigurationProperties(prefix = "spring.batis.meta")
+public class BatisMetaProperties {
+
+
+    private String createBy = "createBy";
+    private String createTime = "createTime";
+    private String updateBy = "updateBy";
+    private String updateTime = "updateTime";
+
+
+    public String getUpdateBy() {
+        return updateBy;
+    }
+
+    public void setUpdateBy(String updateBy) {
+        this.updateBy = updateBy;
+    }
+
+    public String getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(String updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public String getCreateBy() {
+        return createBy;
+    }
+
+    public void setCreateBy(String createBy) {
+        this.createBy = createBy;
+    }
+
+    public String getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(String createTime) {
+        this.createTime = createTime;
+    }
+}

+ 36 - 0
tuon-core/src/main/java/cn/tonyandmoney/tuon/core/properties/CustomConfigProperties.java

@@ -0,0 +1,36 @@
+package cn.tonyandmoney.tuon.core.properties;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+
+/**
+ * @Classname CustomConfigProperties
+ * @Description TODO
+ * @Date 2019/8/25 20:34
+ * @Created by Administrator
+ */
+@ConfigurationProperties(prefix = "tuon.config")
+public class CustomConfigProperties {
+
+    private EnableConfig enable;
+
+    public void setEnable(EnableConfig enable) {
+        this.enable = enable;
+    }
+
+    public EnableConfig getEnable() {
+        return enable;
+    }
+
+    public static class EnableConfig{
+        private boolean web;
+
+        public void setWeb(boolean web) {
+            this.web = web;
+        }
+
+        public boolean isWeb() {
+            return web;
+        }
+
+    }
+}

+ 3 - 5
tuon-core/src/main/java/cn/tonyandmoney/tuon/core/redis/RedisSentinelConfiguration.java

@@ -1,14 +1,12 @@
 package cn.tonyandmoney.tuon.core.redis;
 
-import io.lettuce.core.RedisClient;
-import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration;
 import org.springframework.context.annotation.Configuration;
 
+/**
+ * redis配置,默认即可
+ */
 @Configuration
 public class RedisSentinelConfiguration {
 
 
-    public RedisSentinelConfiguration(){
-        RedisClient redisClient =null;
-    }
 }

+ 53 - 0
tuon-core/src/main/java/cn/tonyandmoney/tuon/core/session/SessionUtils.java

@@ -0,0 +1,53 @@
+package cn.tonyandmoney.tuon.core.session;
+
+import cn.tonyandmoney.tuon.core.user.IUser;
+
+/**
+ * 将身份信息注入的线程的本地数据中
+ *
+ * @Classname SessionUtils
+ * @Description TODO
+ * @Date 2019/8/25 19:51
+ * @Created by Administrator
+ */
+public class SessionUtils {
+
+    private static ThreadLocal<IUser> mUserData = new ThreadLocal<>();
+
+
+    /**
+     * 设置用户信息
+     *
+     * @param user 用户信息
+     */
+    public static void setUser(IUser user) {
+        mUserData.set(user);
+    }
+
+    /**
+     * 清楚信息
+     */
+    public static void remove() {
+        mUserData.remove();
+    }
+
+    /**
+     * 获取用户信息
+     *
+     * @return 用户信息
+     */
+    public static IUser getUser() {
+        return mUserData.get();
+    }
+
+    /**
+     * 是否登录
+     *
+     * @return 由用户信息,则表示一登录
+     */
+    public static boolean isLogin() {
+        return mUserData.get() != null;
+    }
+
+
+}

+ 14 - 0
tuon-core/src/main/java/cn/tonyandmoney/tuon/core/user/IDept.java

@@ -0,0 +1,14 @@
+package cn.tonyandmoney.tuon.core.user;
+
+/**
+ * @Classname IDept
+ * @Description TODO
+ * @Date 2019/8/25 20:07
+ * @Created by Administrator
+ */
+public interface IDept {
+
+    Long getId();
+    String getPath();
+    String getName();
+}

+ 14 - 0
tuon-core/src/main/java/cn/tonyandmoney/tuon/core/user/IRole.java

@@ -0,0 +1,14 @@
+package cn.tonyandmoney.tuon.core.user;
+
+/**
+ * @Classname IRole
+ * @Description TODO
+ * @Date 2019/8/25 20:07
+ * @Created by Administrator
+ */
+public interface IRole {
+
+    Long getId();
+    String getName();
+    String getPath();
+}

+ 28 - 0
tuon-core/src/main/java/cn/tonyandmoney/tuon/core/user/IUser.java

@@ -0,0 +1,28 @@
+package cn.tonyandmoney.tuon.core.user;
+
+import java.util.List;
+
+/**
+ * @Classname IUser
+ * @Description TODO
+ * @Date 2019/8/25 19:55
+ * @Created by Administrator
+ */
+public interface IUser {
+
+    /**
+     * 获取用户的ID
+     *
+     * @return
+     */
+    Long getId();
+
+    String getUsername();
+
+    String getAccount();
+
+    List<IDept> getDepts();
+
+    List<IRole> getRoles();
+
+}

+ 8 - 0
tuon-core/src/main/kotlin/cn/tonyandmoney/tuon/core/TuonCore.kt

@@ -0,0 +1,8 @@
+package cn.tonyandmoney.tuon.core
+
+/**
+ * @Classname TuonCore
+ * @Description TODO
+ * @Date 2019/8/25 19:33
+ * @Created by Administrator
+ */

+ 63 - 0
tuon-core/src/main/kotlin/cn/tonyandmoney/tuon/core/batis/MybatisPlusConfig.kt

@@ -0,0 +1,63 @@
+package cn.tonyandmoney.tuon.core.batis
+
+import cn.gygxzc.envir.core.orm.injector.LogicMoreSqlInjector
+import cn.tonyandmoney.tuon.core.batis.handler.CustomMetaObjectHandler
+import cn.tonyandmoney.tuon.core.properties.BatisMetaProperties
+import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler
+import com.baomidou.mybatisplus.core.injector.ISqlInjector
+import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor
+import com.baomidou.mybatisplus.extension.plugins.PerformanceInterceptor
+import org.springframework.beans.factory.annotation.Autowired
+import org.springframework.boot.context.properties.EnableConfigurationProperties
+import org.springframework.context.annotation.Bean
+import org.springframework.context.annotation.Configuration
+import org.springframework.context.annotation.Profile
+import org.springframework.transaction.annotation.EnableTransactionManagement
+
+/**
+ *
+ * @author NorthLan at 2018/1/30
+ * mybatis plus 配置
+ */
+@Configuration
+@EnableTransactionManagement
+@EnableConfigurationProperties(value = [BatisMetaProperties::class])
+class MybatisPlusConfig {
+
+
+    @Autowired
+    private lateinit var mProperties: BatisMetaProperties
+
+    /**
+     * 并不会自动注入
+     */
+    @Bean
+    fun physicalSqlInjector(): ISqlInjector {
+        return LogicMoreSqlInjector()
+    }
+
+
+    /**
+     * 性能分析插件
+     * // 开发环境开启
+     */
+    @Bean
+    @Profile("dev")
+    fun performanceInterceptor(): PerformanceInterceptor {
+        return PerformanceInterceptor().also { it.isFormat = true }
+    }
+
+    /**
+     * 分页插件
+     */
+    @Bean
+    fun paginationInterceptor(): PaginationInterceptor {
+        return PaginationInterceptor()
+    }
+
+    @Bean
+    fun metaObjectHandler(): MetaObjectHandler {
+        return CustomMetaObjectHandler(mProperties)
+    }
+
+}

+ 112 - 0
tuon-core/src/main/kotlin/cn/tonyandmoney/tuon/core/batis/base/IPhysicalMapper.kt

@@ -0,0 +1,112 @@
+package cn.tonyandmoney.tuon.core.batis.base
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper
+import com.baomidou.mybatisplus.core.metadata.IPage
+import com.baomidou.mybatisplus.core.toolkit.Constants
+import org.apache.ibatis.annotations.Param
+import java.io.Serializable
+
+/**
+ * Created by niantuo on 2018/9/29.
+ * 实现物理操作的mapper基类
+ */
+
+interface IPhysicalMapper<T> {
+
+
+    /**
+     *
+     *
+     * 根据 entity 条件,删除记录
+     *
+     *
+     * @param queryWrapper 实体对象封装操作类(可以为 null)
+     */
+    fun physicalDelete(@Param(Constants.WRAPPER) queryWrapper: Wrapper<T>): Int
+
+    /**
+     *
+     *
+     * 根据 ID 删除
+     *
+     *
+     * @param id 主键ID
+     */
+    fun physicalDeleteById(id: Serializable): Int
+
+    /**
+     *
+     *
+     * 根据 columnMap 条件,删除记录
+     *
+     *
+     * @param columnMap 表字段 map 对象
+     */
+    fun physicalDeleteByMap(@Param(Constants.COLUMN_MAP) columnMap: Map<String, Any>): Int
+
+
+
+    /**
+     *
+     *
+     * 删除(根据ID 批量删除)
+     *
+     *
+     * @param idList 主键ID列表(不能为 null 以及 empty)
+     */
+    fun physicalDeleteBatchIds(@Param(Constants.COLLECTION) idList: Collection<Serializable>): Int
+
+    /**
+     *
+     *
+     * 根据 ID 修改
+     *
+     *
+     * @param entity 实体对象
+     */
+    fun physicalUpdateById(@Param(Constants.ENTITY) entity: T): Int
+
+    /**
+     *
+     *
+     * 根据 whereEntity 条件,更新记录
+     *
+     *
+     * @param entity        实体对象 (set 条件值,不能为 null)
+     * @param updateWrapper 实体对象封装操作类(可以为 null,里面的 entity 用于生成 where 语句)
+     */
+    fun physicalUpdate(@Param(Constants.ENTITY) entity: T, @Param(Constants.WRAPPER) updateWrapper: Wrapper<T>): Int
+
+    /**
+     *
+     *
+     * 根据 ID 查询
+     * 物理查询,忽略逻辑删除配置
+     *
+     * @param id 主键ID
+     */
+    fun physicalSelectById(id: Serializable): T
+
+
+    /**
+     *
+     *
+     * 根据 entity 条件,查询全部记录
+     *
+     *
+     * @param queryWrapper 实体对象封装操作类(可以为 null)
+     */
+    fun physicalsSelectList(@Param(Constants.WRAPPER) queryWrapper: Wrapper<T>): List<T>
+
+
+    /**
+     *
+     *
+     * 根据 entity 条件,查询全部记录(并翻页)
+     *
+     *
+     * @param page         分页查询条件(可以为 RowBounds.DEFAULT)
+     * @param queryWrapper 实体对象封装操作类(可以为 null)
+     */
+    fun physicalSelectPage(page: IPage<T>, @Param(Constants.WRAPPER) queryWrapper: Wrapper<T>): IPage<T>
+}

+ 55 - 0
tuon-core/src/main/kotlin/cn/tonyandmoney/tuon/core/batis/handler/CustomMetaObjectHandler.kt

@@ -0,0 +1,55 @@
+package cn.tonyandmoney.tuon.core.batis.handler
+
+import cn.tonyandmoney.tuon.core.properties.BatisMetaProperties
+import cn.tonyandmoney.tuon.core.session.SessionUtils
+import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler
+import org.apache.ibatis.reflection.MetaObject
+import org.slf4j.LoggerFactory
+import java.util.*
+
+/**
+ * 公共字段自动填充
+ * 多线程 + WebSocket 下不适用
+ * @author NorthLan
+ * @date 2018/1/31
+ * @url https://noahlan.com
+ */
+class CustomMetaObjectHandler(private val properties: BatisMetaProperties) : MetaObjectHandler {
+    companion object {
+        val logger = LoggerFactory.getLogger(CustomMetaObjectHandler::class.java)!!
+    }
+
+    /**
+     * 公告字段插入的时候填充数据
+     */
+    override fun insertFill(metaObject: MetaObject?) {
+        try {
+            if (getFieldValByName(properties.createBy, metaObject) == null) {
+                val curUser = SessionUtils.getUser()?.account
+                setFieldValByName(properties.createBy, curUser, metaObject)
+            }
+            if (getFieldValByName(properties.updateBy, metaObject) == null) {
+                setFieldValByName(properties.updateBy, Date(), metaObject)
+            }
+        } catch (e: Throwable) {
+            logger.warn("insertFill error, cause: ", e)
+        }
+    }
+
+    /**
+     * 更新时间注入信息
+     */
+    override fun updateFill(metaObject: MetaObject?) {
+        try {
+            if (getFieldValByName(properties.updateBy, metaObject) == null) {
+                val curUser = SessionUtils.getUser()?.account
+                setFieldValByName(properties.updateBy, curUser, metaObject)
+            }
+            if (getFieldValByName(properties.updateTime, metaObject) == null) {
+                setFieldValByName(properties.updateTime, Date(), metaObject)
+            }
+        } catch (e: Throwable) {
+            logger.warn("updateFill error, cause: ", e)
+        }
+    }
+}

+ 51 - 0
tuon-core/src/main/kotlin/cn/tonyandmoney/tuon/core/batis/injector/LogicMoreSqlInjector.kt

@@ -0,0 +1,51 @@
+package cn.gygxzc.envir.core.orm.injector
+
+import cn.gygxzc.envir.core.orm.injector.method.*
+import com.baomidou.mybatisplus.core.injector.AbstractMethod
+import com.baomidou.mybatisplus.core.injector.AbstractSqlInjector
+import com.baomidou.mybatisplus.core.injector.SqlRunnerInjector
+import com.baomidou.mybatisplus.core.injector.methods.Insert
+import com.baomidou.mybatisplus.extension.injector.methods.*
+import org.apache.ibatis.session.Configuration
+
+/**
+ * Created by niantuo on 2018/9/29.
+ * 注入器
+ */
+
+class LogicMoreSqlInjector : AbstractSqlInjector() {
+
+    override fun getMethodList(): MutableList<AbstractMethod> {
+        return mutableListOf(
+                Insert(),
+                LogicDelete(),
+                LogicDeleteByMap(),
+                LogicDeleteById(),
+                LogicDeleteBatchByIds(),
+                LogicUpdate(),
+                LogicUpdateById(),
+                LogicSelectById(),
+                LogicSelectBatchByIds(),
+                LogicSelectByMap(),
+                LogicSelectOne(),
+                LogicSelectCount(),
+                LogicSelectMaps(),
+                LogicSelectMapsPage(),
+                LogicSelectObjs(),
+                LogicSelectList(),
+                LogicSelectPage(),
+                Delete(),
+                DeleteBatchIds(),
+                DeleteById(),
+                DeleteByMap(),
+                SelectById(),
+                SelectList(),
+                SelectPage(),
+                Update(),
+                UpdateById())
+    }
+
+    override fun injectSqlRunner(configuration: Configuration?) {
+        SqlRunnerInjector().inject(configuration)
+    }
+}

+ 28 - 0
tuon-core/src/main/kotlin/cn/tonyandmoney/tuon/core/batis/injector/enums/SqlMethodCopy.kt

@@ -0,0 +1,28 @@
+package cn.gygxzc.envir.core.orm.injector.enums
+
+/**
+ * Created by niantuo on 2018/9/29.
+ * 所以实际上这个是从mybatis-plus复制过来的,好尴尬呀
+ * @see com.baomidou.mybatisplus.core.enums.SqlMethod
+ */
+
+enum class SqlMethodCopy(val method:String,val desc:String,val sql:String) {
+
+    /**
+     * 删除
+     */
+    DELETE_BY_ID("physicalDeleteById", "根据ID 删除一条数据", "<script>\nDELETE FROM %s WHERE %s=#{%s}\n</script>"),
+    DELETE_BY_MAP("physicalDeleteByMap", "根据columnMap 条件删除记录", "<script>\nDELETE FROM %s %s\n</script>"),
+    DELETE("physicalDelete", "根据 entity 条件删除记录", "<script>\nDELETE FROM %s %s\n</script>"),
+    DELETE_BATCH_BY_IDS("physicalDeleteBatchIds", "根据ID集合,批量删除数据", "<script>\nDELETE FROM %s WHERE %s IN (%s)\n</script>"),
+
+    SELECT_BY_ID("physicalSelectById", "根据ID 查询一条数据", "SELECT %s FROM %s WHERE %s=#{%s}"),
+    SELECT_PAGE("physicalSelectPage", "查询满足条件所有数据(并翻页)", "<script>\nSELECT %s FROM %s %s\n</script>"),
+    SELECT_LIST("physicalsSelectList", "查询满足条件所有数据", "<script>\nSELECT %s FROM %s %s\n</script>"),
+
+    /**
+     * 修改
+     */
+    UPDATE_BY_ID("physicalUpdateById", "根据ID 选择修改数据", "<script>\nUPDATE %s %s WHERE %s=#{%s} %s\n</script>"),
+    UPDATE("physicalUpdate", "根据 whereEntity 条件,更新记录", "<script>\nUPDATE %s %s %s\n</script>"),
+}

+ 22 - 0
tuon-core/src/main/kotlin/cn/tonyandmoney/tuon/core/batis/injector/method/Delete.kt

@@ -0,0 +1,22 @@
+package cn.gygxzc.envir.core.orm.injector.method
+
+import cn.gygxzc.envir.core.orm.injector.enums.SqlMethodCopy
+import com.baomidou.mybatisplus.core.injector.AbstractMethod
+import com.baomidou.mybatisplus.core.metadata.TableInfo
+import org.apache.ibatis.mapping.MappedStatement
+
+/**
+ * Created by niantuo on 2018/9/29.
+ * 在逻辑删除的大环境下实现物理删除
+ */
+
+class Delete : AbstractMethod() {
+    override fun injectMappedStatement(mapperClass: Class<*>, modelClass: Class<*>, tableInfo: TableInfo): MappedStatement {
+        val sqlMethod = SqlMethodCopy.DELETE
+        val sql = String.format(sqlMethod.sql, tableInfo.tableName,
+                sqlWhereEntityWrapper(tableInfo))
+        val sqlSource = languageDriver.createSqlSource(configuration, sql, modelClass)
+        return addUpdateMappedStatement(mapperClass, modelClass, sqlMethod.method, sqlSource)
+    }
+
+}

+ 23 - 0
tuon-core/src/main/kotlin/cn/tonyandmoney/tuon/core/batis/injector/method/DeleteBatchIds.kt

@@ -0,0 +1,23 @@
+package cn.gygxzc.envir.core.orm.injector.method
+
+import cn.gygxzc.envir.core.orm.injector.enums.SqlMethodCopy
+import com.baomidou.mybatisplus.core.injector.AbstractMethod
+import com.baomidou.mybatisplus.core.metadata.TableInfo
+import com.baomidou.mybatisplus.core.toolkit.Constants
+import com.baomidou.mybatisplus.core.toolkit.StringPool
+import com.baomidou.mybatisplus.core.toolkit.sql.SqlScriptUtils
+import org.apache.ibatis.mapping.MappedStatement
+
+/**
+ * Created by niantuo on 2018/9/29.
+ */
+
+class DeleteBatchIds : AbstractMethod() {
+    override fun injectMappedStatement(mapperClass: Class<*>, modelClass: Class<*>, tableInfo: TableInfo): MappedStatement {
+        val sqlMethod = SqlMethodCopy.DELETE_BATCH_BY_IDS
+        val sql = String.format(sqlMethod.sql, tableInfo.tableName, tableInfo.keyColumn,
+                SqlScriptUtils.convertForeach("#{item}", Constants.COLLECTION, null, "item", StringPool.COMMA))
+        val sqlSource = languageDriver.createSqlSource(configuration, sql, modelClass)
+        return this.addDeleteMappedStatement(mapperClass, sqlMethod.method, sqlSource)
+    }
+}

+ 21 - 0
tuon-core/src/main/kotlin/cn/tonyandmoney/tuon/core/batis/injector/method/DeleteById.kt

@@ -0,0 +1,21 @@
+package cn.gygxzc.envir.core.orm.injector.method
+
+import cn.gygxzc.envir.core.orm.injector.enums.SqlMethodCopy
+import com.baomidou.mybatisplus.core.injector.AbstractMethod
+import com.baomidou.mybatisplus.core.metadata.TableInfo
+import org.apache.ibatis.mapping.MappedStatement
+
+/**
+ * Created by niantuo on 2018/9/29.
+ */
+
+class DeleteById : AbstractMethod() {
+    override fun injectMappedStatement(mapperClass: Class<*>, modelClass: Class<*>, tableInfo: TableInfo): MappedStatement {
+        val sqlMethod = SqlMethodCopy.DELETE_BY_ID
+        val sqlSource = languageDriver.createSqlSource(configuration, String.format(sqlMethod.sql,
+                tableInfo.tableName, tableInfo.keyColumn, tableInfo.keyProperty), modelClass)
+        return this.addDeleteMappedStatement(mapperClass, sqlMethod.method, sqlSource)
+    }
+
+
+}

+ 20 - 0
tuon-core/src/main/kotlin/cn/tonyandmoney/tuon/core/batis/injector/method/DeleteByMap.kt

@@ -0,0 +1,20 @@
+package cn.gygxzc.envir.core.orm.injector.method
+
+import cn.gygxzc.envir.core.orm.injector.enums.SqlMethodCopy
+import com.baomidou.mybatisplus.core.injector.AbstractMethod
+import com.baomidou.mybatisplus.core.metadata.TableInfo
+import org.apache.ibatis.mapping.MappedStatement
+
+/**
+ * Created by niantuo on 2018/9/29.
+ */
+
+class DeleteByMap : AbstractMethod() {
+    override fun injectMappedStatement(mapperClass: Class<*>, modelClass: Class<*>, tableInfo: TableInfo): MappedStatement {
+        val sqlMethod = SqlMethodCopy.DELETE_BY_MAP
+        val sqlSource = languageDriver.createSqlSource(configuration, String.format(sqlMethod.sql,
+                tableInfo.tableName, this.sqlWhereByMap(tableInfo)), modelClass)
+        return this.addDeleteMappedStatement(mapperClass, sqlMethod.method, sqlSource)
+    }
+
+}

+ 20 - 0
tuon-core/src/main/kotlin/cn/tonyandmoney/tuon/core/batis/injector/method/SelectById.kt

@@ -0,0 +1,20 @@
+package cn.gygxzc.envir.core.orm.injector.method
+
+import cn.gygxzc.envir.core.orm.injector.enums.SqlMethodCopy
+import com.baomidou.mybatisplus.core.injector.AbstractMethod
+import com.baomidou.mybatisplus.core.metadata.TableInfo
+import org.apache.ibatis.mapping.MappedStatement
+import org.apache.ibatis.scripting.defaults.RawSqlSource
+
+/**
+ * Created by niantuo on 2018/9/29.
+ */
+
+class SelectById : AbstractMethod() {
+    override fun injectMappedStatement(mapperClass: Class<*>, modelClass: Class<*>, tableInfo: TableInfo): MappedStatement {
+        val sqlMethod = SqlMethodCopy.SELECT_BY_ID
+        val sqlSource = RawSqlSource(configuration, String.format(sqlMethod.sql, this.sqlSelectColumns(tableInfo, false),
+                tableInfo.tableName, tableInfo.keyColumn, tableInfo.keyProperty), Any::class.java)
+        return this.addSelectMappedStatement(mapperClass, sqlMethod.method, sqlSource, modelClass, tableInfo)
+    }
+}

+ 20 - 0
tuon-core/src/main/kotlin/cn/tonyandmoney/tuon/core/batis/injector/method/SelectList.kt

@@ -0,0 +1,20 @@
+package cn.gygxzc.envir.core.orm.injector.method
+
+import cn.gygxzc.envir.core.orm.injector.enums.SqlMethodCopy
+import com.baomidou.mybatisplus.core.injector.AbstractMethod
+import com.baomidou.mybatisplus.core.metadata.TableInfo
+import org.apache.ibatis.mapping.MappedStatement
+
+/**
+ * Created by niantuo on 2018/9/29.
+ */
+
+class SelectList : AbstractMethod() {
+    override fun injectMappedStatement(mapperClass: Class<*>, modelClass: Class<*>, tableInfo: TableInfo): MappedStatement {
+        val sqlMethod = SqlMethodCopy.SELECT_LIST
+        val sql = String.format(sqlMethod.sql, sqlSelectColumns(tableInfo, true),
+                tableInfo.tableName, this.sqlWhereEntityWrapper(tableInfo))
+        val sqlSource = languageDriver.createSqlSource(configuration, sql, modelClass)
+        return this.addSelectMappedStatement(mapperClass, sqlMethod.method, sqlSource, modelClass, tableInfo)
+    }
+}

+ 20 - 0
tuon-core/src/main/kotlin/cn/tonyandmoney/tuon/core/batis/injector/method/SelectPage.kt

@@ -0,0 +1,20 @@
+package cn.gygxzc.envir.core.orm.injector.method
+
+import cn.gygxzc.envir.core.orm.injector.enums.SqlMethodCopy
+import com.baomidou.mybatisplus.core.injector.AbstractMethod
+import com.baomidou.mybatisplus.core.metadata.TableInfo
+import org.apache.ibatis.mapping.MappedStatement
+
+/**
+ * Created by niantuo on 2018/9/29.
+ */
+
+class SelectPage : AbstractMethod() {
+    override fun injectMappedStatement(mapperClass: Class<*>, modelClass: Class<*>, tableInfo: TableInfo): MappedStatement {
+        val sqlMethod = SqlMethodCopy.SELECT_PAGE
+        val sql = String.format(sqlMethod.sql, sqlSelectColumns(tableInfo, true),
+                tableInfo.tableName, this.sqlWhereEntityWrapper(tableInfo))
+        val sqlSource = languageDriver.createSqlSource(configuration, sql, modelClass)
+        return this.addSelectMappedStatement(mapperClass, sqlMethod.method, sqlSource, modelClass, tableInfo)
+    }
+}

+ 21 - 0
tuon-core/src/main/kotlin/cn/tonyandmoney/tuon/core/batis/injector/method/Update.kt

@@ -0,0 +1,21 @@
+package cn.gygxzc.envir.core.orm.injector.method
+
+import cn.gygxzc.envir.core.orm.injector.enums.SqlMethodCopy
+import com.baomidou.mybatisplus.core.injector.AbstractMethod
+import com.baomidou.mybatisplus.core.metadata.TableInfo
+import com.baomidou.mybatisplus.core.toolkit.Constants
+import org.apache.ibatis.mapping.MappedStatement
+
+/**
+ * Created by niantuo on 2018/9/29.
+ */
+
+class Update : AbstractMethod() {
+    override fun injectMappedStatement(mapperClass: Class<*>, modelClass: Class<*>, tableInfo: TableInfo): MappedStatement {
+        val sqlMethod = SqlMethodCopy.UPDATE
+        val sql = String.format(sqlMethod.sql, tableInfo.tableName,
+                sqlSet(false, true, tableInfo, Constants.ENTITY_SPOT), sqlWhereEntityWrapper(tableInfo))
+        val sqlSource = languageDriver.createSqlSource(configuration, sql, modelClass)
+        return this.addUpdateMappedStatement(mapperClass, modelClass, sqlMethod.method, sqlSource)
+    }
+}

+ 26 - 0
tuon-core/src/main/kotlin/cn/tonyandmoney/tuon/core/batis/injector/method/UpdateById.kt

@@ -0,0 +1,26 @@
+package cn.gygxzc.envir.core.orm.injector.method
+
+import cn.gygxzc.envir.core.orm.injector.enums.SqlMethodCopy
+import com.baomidou.mybatisplus.core.injector.AbstractMethod
+import com.baomidou.mybatisplus.core.metadata.TableInfo
+import com.baomidou.mybatisplus.core.toolkit.Constants
+import org.apache.ibatis.mapping.MappedStatement
+
+/**
+ * Created by niantuo on 2018/9/29.
+ */
+
+class UpdateById : AbstractMethod() {
+    override fun injectMappedStatement(mapperClass: Class<*>, modelClass: Class<*>, tableInfo: TableInfo): MappedStatement {
+        val sqlMethod = SqlMethodCopy.UPDATE_BY_ID
+        val sql = String.format(sqlMethod.sql, tableInfo.tableName,
+                sqlSet(false, false, tableInfo, Constants.ENTITY_SPOT),
+                tableInfo.keyColumn, Constants.ENTITY_SPOT + tableInfo.keyProperty,
+                StringBuilder("<if test=\"et instanceof java.util.Map\">")
+                        .append("<if test=\"et.MP_OPTLOCK_VERSION_ORIGINAL!=null\">")
+                        .append(" AND \${et.MP_OPTLOCK_VERSION_COLUMN}=#{et.MP_OPTLOCK_VERSION_ORIGINAL}")
+                        .append("</if></if>"))
+        val sqlSource = languageDriver.createSqlSource(configuration, sql, modelClass)
+        return addUpdateMappedStatement(mapperClass, modelClass, sqlMethod.method, sqlSource)
+    }
+}

+ 63 - 0
tuon-core/src/main/kotlin/cn/tonyandmoney/tuon/core/config/CustomWebMvcConfiguration.kt

@@ -0,0 +1,63 @@
+package cn.tonyandmoney.tuon.core.config
+
+import cn.tonyandmoney.tuon.core.properties.CustomConfigProperties
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty
+import org.springframework.boot.context.properties.EnableConfigurationProperties
+import org.springframework.context.annotation.Bean
+import org.springframework.context.annotation.Configuration
+import org.springframework.context.annotation.Primary
+import org.springframework.http.converter.HttpMessageConverter
+import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder
+import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter
+import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer
+import java.text.SimpleDateFormat
+
+/**
+ * Created by niantuo on 2018/9/20.
+ * mvc 配置
+ *
+ */
+@Configuration
+@EnableConfigurationProperties(CustomConfigProperties::class)
+@ConditionalOnProperty(prefix = "custom.config.enable.web", havingValue = "true", matchIfMissing = true)
+class CustomWebMvcConfiguration : WebMvcConfigurer {
+
+    companion object {
+        const val CONVERTER_NAME = "hookMappingJackson2HttpMessageConverter"
+    }
+
+    override fun addResourceHandlers(registry: ResourceHandlerRegistry) {
+        registry.addResourceHandler("swagger-ui.html")
+                .addResourceLocations("classpath:/META-INF/resources/")
+
+
+        registry.addResourceHandler("/webjars*")
+                .addResourceLocations("classpath:/META-INF/resources/webjars/")
+    }
+
+
+    override fun configureMessageConverters(converters: MutableList<HttpMessageConverter<*>>) {
+        converters.add(getConverter())
+    }
+
+    @Bean(CONVERTER_NAME)
+    fun getConverter(): MappingJackson2HttpMessageConverter {
+        return MappingJackson2HttpMessageConverter().apply {
+            this.objectMapper = builder().build()
+        }
+    }
+
+    @Bean
+    @Primary
+    fun builder(): Jackson2ObjectMapperBuilder {
+        return Jackson2ObjectMapperBuilder().apply {
+            serializerByType(java.lang.Long::class.java, ToStringSerializer.instance)
+            serializerByType(java.lang.Long.TYPE, ToStringSerializer.instance)
+            // date
+            dateFormat(SimpleDateFormat("yyyy-MM-dd HH:mm:ss"))
+            timeZone("GMT+8")
+        }
+    }
+}

+ 0 - 5
tuon-core/src/main/resources/application.yml

@@ -1,5 +0,0 @@
-spring:
-  redis:
-    sentinel:
-      master: tuonq
-      nodes: 192.168.42.1:26379

+ 16 - 0
tuon-web/src/main/resources/application.yml

@@ -5,3 +5,19 @@ spring:
     type: com.zaxxer.hikari.HikariDataSource
     driver-class-name: com.mysql.jdbc.Driver
     url: jdbc:mysql://192.168.42.1:5201/tuonq_fw?useUnicode=true&characterEncoding=utf-8&useSSL=false&zeroDateTimeBehavior=convertToNull
+
+
+---
+spring:
+  profiles: dev
+
+
+
+
+---
+spring:
+  profiles: sit
+  redis:
+    sentinel:
+      master: tuonq
+      nodes: tuonq_sentinel:26379

+ 1 - 1
zen-web/src/main/java/cn/gygxzc/envir/config/encrypt/WebDecodeRequestBodyAdvice.java

@@ -1,6 +1,6 @@
 package cn.gygxzc.envir.config.encrypt;
 
-import cn.gygxzc.cloud.tina.auth.cache.ClientRedisTemplate;
+import  cn.gygxzc.cloud.tina.auth.cache.ClientRedisTemplate;
 import cn.gygxzc.cloud.tina.auth.encrypt.DecryptRequestBodyAdvice;
 import org.springframework.web.bind.annotation.ControllerAdvice;