소스 검색

Merge branch 'master-system'

songyh 3 년 전
부모
커밋
c261bcba4c
100개의 변경된 파일4093개의 추가작업 그리고 4059개의 파일을 삭제
  1. 0 427
      jeecg-boot-base/jeecg-boot-base-api/jeecg-system-cloud-api/src/main/java/org/jeecg/common/system/api/ISysBaseAPI.java
  2. 0 17
      jeecg-boot-base/jeecg-boot-base-api/jeecg-system-cloud-api/src/main/java/org/jeecg/common/system/api/factory/SysBaseAPIFallbackFactory.java
  3. 0 272
      jeecg-boot-base/jeecg-boot-base-api/jeecg-system-cloud-api/src/main/java/org/jeecg/common/system/api/fallback/SysBaseAPIFallback.java
  4. 0 292
      jeecg-boot-base/jeecg-boot-base-api/jeecg-system-local-api/src/main/java/org/jeecg/common/system/api/ISysBaseAPI.java
  5. 466 0
      jeecg-boot-base/jeecg-boot-base-api/jeecg-system-local-api/src/main/java/org/jeecg/common/system/api/ISysBaseApi.java
  6. 13 37
      jeecg-boot-base/jeecg-boot-base-core/pom.xml
  7. 3 3
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/vo/Result.java
  8. 0 51
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/aspect/AutoLogAspect.java
  9. 0 9
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/aspect/UrlMatchEnum.java
  10. 27 0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/aspect/annotation/Document.java
  11. 16 0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/aspect/annotation/EsId.java
  12. 26 0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/aspect/annotation/FieId.java
  13. 29 0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/AnalyzerType.java
  14. 4 0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/CommonConstant.java
  15. 40 0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/FieldType.java
  16. 15 28
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/ProvinceCityArea.java
  17. 13 0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/SystemDateConstant.java
  18. 0 1
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/WebsocketConst.java
  19. 165 167
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/es/JeecgElasticsearchTemplate.java
  20. 1 0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/exception/JeecgBootException.java
  21. 118 0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/entity/SysDataSource.java
  22. 14 13
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/entity/SysUser.java
  23. 1 2
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/query/QueryGenerator.java
  24. 0 1
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/util/JeecgDataAutorUtils.java
  25. 1 0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/vo/DictModel.java
  26. 0 1
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/vo/SysUserCacheInfo.java
  27. 1 0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/CommonUtils.java
  28. 1143 93
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/DateUtils.java
  29. 0 70
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/DySmsEnum.java
  30. 16 0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/MD5Util.java
  31. 1 0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/PasswordUtil.java
  32. 0 5
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/YouBianCodeUtil.java
  33. 92 0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/db/DataSourceCachePool.java
  34. 31 0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/db/DbValidationQueryEnum.java
  35. 299 0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/db/DynamicDBUtil.java
  36. 167 0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/db/FreemarkerParseFactory.java
  37. 5 5
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/dynamic/db/DataSourceCachePool.java
  38. 31 0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/dynamic/db/DbValidationQueryEnum.java
  39. 1 3
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/dynamic/db/DynamicDBUtil.java
  40. 14 0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/dynamic/db/FreemarkerParseFactory.java
  41. 2 3
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/dynamic/db/SqlUtils.java
  42. 23 24
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/encryption/AesEncryptUtil.java
  43. 28 0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/jsonschema/BaseColumn.java
  44. 170 0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/jsonschema/CommonProperty.java
  45. 87 0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/jsonschema/JsonSchemaDescrip.java
  46. 68 0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/jsonschema/JsonschemaUtil.java
  47. 61 0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/jsonschema/validate/DictProperty.java
  48. 37 0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/jsonschema/validate/HiddenProperty.java
  49. 66 0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/jsonschema/validate/LinkDownProperty.java
  50. 152 0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/jsonschema/validate/NumberProperty.java
  51. 74 0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/jsonschema/validate/PopupProperty.java
  52. 118 0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/jsonschema/validate/StringProperty.java
  53. 46 0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/jsonschema/validate/SwitchProperty.java
  54. 145 0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/jsonschema/validate/TreeSelectProperty.java
  55. 13 15
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/oss/OssBootUtil.java
  56. 0 2
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/mybatis/MybatisPlusConfig.java
  57. 152 99
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java
  58. 2 0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/mapper/BaseCommonMapper.java
  59. 3 0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/mapper/xml/BaseCommonMapper.xml
  60. 2 0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/service/BaseCommonService.java
  61. 8 0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/service/impl/BaseCommonServiceImpl.java
  62. 0 1
      jeecg-boot-base/jeecg-boot-base-tools/pom.xml
  63. 2 0
      jeecg-boot-base/jeecg-boot-base-tools/src/main/java/org/jeecg/common/constant/CacheConstant.java
  64. 22 0
      jeecg-boot-base/jeecg-boot-base-tools/src/main/java/org/jeecg/common/modules/redis/config/RedisConfig.java
  65. 0 1
      jeecg-boot-base/jeecg-boot-base-tools/src/main/java/org/jeecg/common/util/RedisUtil.java
  66. 59 0
      jeecg-boot-bytedance-ad/src/main/java/ctop/bytedance/ad/advertise/controller/AdvertiserMaterialInfoController.java
  67. 0 59
      jeecg-boot-bytedance-ad/src/main/java/ctop/bytedance/ad/advertise/controller/MaterialInfoController.java
  68. 0 86
      jeecg-boot-common/pom.xml
  69. 0 24
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/JeecgBootCommonApplication.java
  70. 0 106
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/BindAccountLogin.java
  71. 0 41
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/MaterialImageVideoInfo.java
  72. 0 78
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/Product.java
  73. 0 146
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/SysAnnouncement.java
  74. 0 48
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/SysAnnouncementSend.java
  75. 0 58
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/SysCategory.java
  76. 0 120
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/SysDataSource.java
  77. 0 186
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/SysDepart.java
  78. 0 50
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/SysDepartPermission.java
  79. 0 70
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/SysDepartRole.java
  80. 0 54
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/SysDepartRolePermission.java
  81. 0 82
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/SysDict.java
  82. 0 80
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/SysDictItem.java
  83. 0 112
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/SysLog.java
  84. 0 183
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/SysPermission.java
  85. 0 223
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/SysUser.java
  86. 0 49
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/SysUserRole.java
  87. 0 57
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/TagInfo.java
  88. 0 174
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/UserAllocation.java
  89. 0 18
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/mapper/CtopCorpWexinUserMapper.java
  90. 0 26
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/mapper/MaterialCutFrameMapper.java
  91. 0 8
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/mapper/MusicTypeMapper.java
  92. 0 12
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/mapper/RuleDateUnitKuaishouMapper.java
  93. 0 31
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/mapper/SysCategoryMapper.java
  94. 0 14
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/mapper/SysDataSourceMapper.java
  95. 0 62
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/mapper/SysDepartMapper.java
  96. 0 14
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/mapper/SysDepartPermissionMapper.java
  97. 0 14
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/mapper/SysDepartRolePermissionMapper.java
  98. 0 20
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/mapper/SysDictItemMapper.java
  99. 0 112
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/mapper/SysDictMapper.java
  100. 0 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/mapper/SysPermissionMapper.java

+ 0 - 427
jeecg-boot-base/jeecg-boot-base-api/jeecg-system-cloud-api/src/main/java/org/jeecg/common/system/api/ISysBaseAPI.java

@@ -1,427 +0,0 @@
-package org.jeecg.common.system.api;
-
-import com.alibaba.fastjson.JSONObject;
-import org.jeecg.common.api.CommonAPI;
-import org.jeecg.common.api.dto.OnlineAuthDTO;
-import org.jeecg.common.api.dto.message.*;
-import org.jeecg.common.constant.ServiceNameConstants;
-import org.jeecg.common.system.api.factory.SysBaseAPIFallbackFactory;
-import org.jeecg.common.system.vo.*;
-import org.springframework.cloud.openfeign.FeignClient;
-import org.springframework.stereotype.Component;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestParam;
-
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * 相比较local版
- * 去掉了一些方法:
- * addLog getDatabaseType queryAllDepart
- * queryAllUser(Wrapper wrapper) queryAllUser(String[] userIds, int pageNo, int pageSize)
- * 修改了一些方法:
- * createLog
- * sendSysAnnouncement 只保留了一个,其余全部干掉
- *
- * cloud接口数量43  local:35 common:9  额外一个特殊queryAllRole一个当两个用
- */
-@Component
-@FeignClient(contextId = "sysBaseRemoteApi", value = ServiceNameConstants.SYSTEM_SERVICE, fallbackFactory = SysBaseAPIFallbackFactory.class)
-public interface ISysBaseAPI extends CommonAPI {
-
-    /**
-     * 1发送系统消息
-     * @param message 使用构造器赋值参数 如果不设置category(消息类型)则默认为2 发送系统消息
-     */
-    @PostMapping("/sys/api/sendSysAnnouncement")
-    void sendSysAnnouncement(@RequestBody MessageDTO message);
-
-    /**
-     * 2发送消息 附带业务参数
-     * @param message 使用构造器赋值参数
-     */
-    @PostMapping("/sys/api/sendBusAnnouncement")
-    void sendBusAnnouncement(@RequestBody BusMessageDTO message);
-
-    /**
-     * 3通过模板发送消息
-     * @param message 使用构造器赋值参数
-     */
-    @PostMapping("/sys/api/sendTemplateAnnouncement")
-    void sendTemplateAnnouncement(@RequestBody TemplateMessageDTO message);
-
-    /**
-     * 4通过模板发送消息 附带业务参数
-     * @param message 使用构造器赋值参数
-     */
-    @PostMapping("/sys/api/sendBusTemplateAnnouncement")
-    void sendBusTemplateAnnouncement(@RequestBody BusTemplateMessageDTO message);
-
-    /**
-     * 5通过消息中心模板,生成推送内容
-     * @param templateDTO 使用构造器赋值参数
-     * @return
-     */
-    @PostMapping("/sys/api/parseTemplateByCode")
-    String parseTemplateByCode(@RequestBody TemplateDTO templateDTO);
-
-    /**
-     * 6根据用户id查询用户信息
-     * @param id
-     * @return
-     */
-    @GetMapping("/sys/api/getUserById")
-    LoginUser getUserById(@RequestParam("id") String id);
-
-    /**
-     * 7通过用户账号查询角色集合
-     * @param username
-     * @return
-     */
-    @GetMapping("/sys/api/getRolesByUsername")
-    List<String> getRolesByUsername(@RequestParam("username") String username);
-
-    /**
-     * 8通过用户账号查询部门集合
-     * @param username
-     * @return 部门 id
-     */
-    @GetMapping("/sys/api/getDepartIdsByUsername")
-    List<String> getDepartIdsByUsername(@RequestParam("username") String username);
-
-    /**
-     * 9通过用户账号查询部门 name
-     * @param username
-     * @return 部门 name
-     */
-    @GetMapping("/sys/api/getDepartNamesByUsername")
-    List<String> getDepartNamesByUsername(@RequestParam("username") String username);
-
-    /**
-     * 10获取数据字典
-     * @param code
-     * @return
-     */
-    @GetMapping("/sys/api/queryDictItemsByCode")
-    List<DictModel> queryDictItemsByCode(@RequestParam("code") String code);
-
-    /** 11查询所有的父级字典,按照create_time排序 */
-    @GetMapping("/sys/api/queryAllDict")
-    List<DictModel> queryAllDict();
-
-    /**
-     * 12查询所有分类字典
-     * @return
-     */
-    @GetMapping("/sys/api/queryAllDSysCategory")
-    List<SysCategoryModel> queryAllDSysCategory();
-
-    /**
-     * 13获取表数据字典
-     * @param table
-     * @param text
-     * @param code
-     * @return
-     */
-    @GetMapping("/sys/api/queryTableDictItemsByCode")
-    List<DictModel> queryTableDictItemsByCode(@RequestParam("table") String table, @RequestParam("text") String text, @RequestParam("code") String code);
-
-    /**
-     * 14查询所有部门 作为字典信息 id -->value,departName -->text
-     * @return
-     */
-    @GetMapping("/sys/api/queryAllDepartBackDictModel")
-    List<DictModel> queryAllDepartBackDictModel();
-
-    /**
-     * 15根据业务类型 busType 及业务 busId 修改消息已读
-     */
-    @GetMapping("/sys/api/updateSysAnnounReadFlag")
-    public void updateSysAnnounReadFlag(@RequestParam("busType") String busType, @RequestParam("busId")String busId);
-
-    /**
-     * 16查询表字典 支持过滤数据
-     * @param table
-     * @param text
-     * @param code
-     * @param filterSql
-     * @return
-     */
-    @GetMapping("/sys/api/queryFilterTableDictInfo")
-    List<DictModel> queryFilterTableDictInfo(@RequestParam("table") String table, @RequestParam("text") String text, @RequestParam("code") String code, @RequestParam("filterSql") String filterSql);
-
-    /**
-     * 17查询指定table的 text code 获取字典,包含text和value
-     * @param table
-     * @param text
-     * @param code
-     * @param keyArray
-     * @return
-     */
-    @Deprecated
-    @GetMapping("/sys/api/queryTableDictByKeys")
-    public List<String> queryTableDictByKeys(@RequestParam("table") String table, @RequestParam("text") String text, @RequestParam("code") String code, @RequestParam("keyArray") String[] keyArray);
-
-    /**
-     * 18查询所有用户 返回ComboModel
-     * @return
-     */
-    @GetMapping("/sys/api/queryAllUserBackCombo")
-    public List<ComboModel> queryAllUserBackCombo();
-
-    /**
-     * 19分页查询用户 返回JSONObject
-     * @return
-     */
-    @GetMapping("/sys/api/queryAllUser")
-    public JSONObject queryAllUser(@RequestParam(name="userIds",required=false)String userIds, @RequestParam(name="pageNo",required=false) Integer pageNo,@RequestParam(name="pageSize",required=false) int pageSize);
-
-
-    /**
-     * 20获取所有角色 带参
-     * roleIds 默认选中角色
-     * @return
-     */
-    @GetMapping("/sys/api/queryAllRole")
-    public List<ComboModel> queryAllRole(@RequestParam(name = "roleIds",required = false)String[] roleIds);
-
-    /**
-     * 21通过用户账号查询角色Id集合
-     * @param username
-     * @return
-     */
-    @GetMapping("/sys/api/getRoleIdsByUsername")
-    public List<String> getRoleIdsByUsername(@RequestParam("username")String username);
-
-    /**
-     * 22通过部门编号查询部门id
-     * @param orgCode
-     * @return
-     */
-    @GetMapping("/sys/api/getDepartIdsByOrgCode")
-    public String getDepartIdsByOrgCode(@RequestParam("orgCode")String orgCode);
-
-    /**
-     * 23查询所有部门
-     * @return
-     */
-    @GetMapping("/sys/api/getAllSysDepart")
-    public List<SysDepartModel> getAllSysDepart();
-
-    /**
-     * 24查找父级部门
-     * @param departId
-     * @return
-     */
-    @GetMapping("/sys/api/getParentDepartId")
-    DictModel getParentDepartId(@RequestParam("departId")String departId);
-
-    /**
-     * 25根据部门Id获取部门负责人
-     * @param deptId
-     * @return
-     */
-    @GetMapping("/sys/api/getDeptHeadByDepId")
-    public List<String> getDeptHeadByDepId(@RequestParam("deptId") String deptId);
-
-    /**
-     * 26给指定用户发消息
-     * @param userIds
-     * @param cmd
-     */
-    @GetMapping("/sys/api/sendWebSocketMsg")
-    public void sendWebSocketMsg(@RequestParam("userIds")String[] userIds, @RequestParam("cmd") String cmd);
-
-    /**
-     * 27根据id获取所有参与用户
-     * userIds
-     * @return
-     */
-    @GetMapping("/sys/api/queryAllUserByIds")
-    public List<LoginUser> queryAllUserByIds(@RequestParam("userIds") String[] userIds);
-
-    /**
-     * 28将会议签到信息推动到预览
-     * userIds
-     * @return
-     * @param userId
-     */
-    @GetMapping("/sys/api/meetingSignWebsocket")
-    void meetingSignWebsocket(@RequestParam("userId")String userId);
-
-    /**
-     * 29根据name获取所有参与用户
-     * userNames
-     * @return
-     */
-    @GetMapping("/sys/api/queryUserByNames")
-    List<LoginUser> queryUserByNames(@RequestParam("userNames")String[] userNames);
-
-
-    /**
-     * 30获取用户的角色集合
-     * @param username
-     * @return
-     */
-    @GetMapping("/sys/api/getUserRoleSet")
-    Set<String> getUserRoleSet(@RequestParam("username")String username);
-
-    /**
-     * 31获取用户的权限集合
-     * @param username
-     * @return
-     */
-    @GetMapping("/sys/api/getUserPermissionSet")
-    Set<String> getUserPermissionSet(@RequestParam("username") String username);
-
-    /**
-     * 32判断是否有online访问的权限
-     * @param onlineAuthDTO
-     * @return
-     */
-    @PostMapping("/sys/api/hasOnlineAuth")
-    boolean hasOnlineAuth(@RequestBody OnlineAuthDTO onlineAuthDTO);
-
-    /**
-     * 33通过部门id获取部门全部信息
-     */
-    @GetMapping("/sys/api/selectAllById")
-    SysDepartModel selectAllById(@RequestParam("id") String id);
-
-    /**
-     * 34根据用户id查询用户所属公司下所有用户ids
-     * @param userId
-     * @return
-     */
-    @GetMapping("/sys/api/queryDeptUsersByUserId")
-    List<String> queryDeptUsersByUserId(@RequestParam("userId") String userId);
-
-
-    //---
-
-    /**
-     * 35查询用户角色信息
-     * @param username
-     * @return
-     */
-    @GetMapping("/sys/api/queryUserRoles")
-    Set<String> queryUserRoles(@RequestParam("username")String username);
-
-    /**
-     * 36查询用户权限信息
-     * @param username
-     * @return
-     */
-    @GetMapping("/sys/api/queryUserAuths")
-    Set<String> queryUserAuths(@RequestParam("username")String username);
-
-    /**
-     * 37根据 id 查询数据库中存储的 DynamicDataSourceModel
-     *
-     * @param dbSourceId
-     * @return
-     */
-    @GetMapping("/sys/api/getDynamicDbSourceById")
-    DynamicDataSourceModel getDynamicDbSourceById(@RequestParam("dbSourceId") String dbSourceId);
-
-    /**
-     * 38根据 code 查询数据库中存储的 DynamicDataSourceModel
-     *
-     * @param dbSourceCode
-     * @return
-     */
-    @GetMapping("/sys/api/getDynamicDbSourceByCode")
-    DynamicDataSourceModel getDynamicDbSourceByCode(@RequestParam("dbSourceCode") String dbSourceCode);
-
-    /**
-     * 39根据用户账号查询用户信息 CommonAPI中定义
-     * @param username
-     */
-    @GetMapping("/sys/api/getUserByName")
-    LoginUser getUserByName(@RequestParam("username") String username);
-
-    /**
-     * 40字典表的 翻译
-     * @param table
-     * @param text
-     * @param code
-     * @param key
-     * @return
-     */
-    @GetMapping("/sys/api/translateDictFromTable")
-    String translateDictFromTable(@RequestParam("table") String table, @RequestParam("text") String text, @RequestParam("code") String code, @RequestParam("key") String key,@RequestParam("extendsKey") String extendsKey, @RequestParam("extendsValue") String extendsValue);
-
-    /**
-     * 41普通字典的翻译
-     * @param code
-     * @param key
-     * @return
-     */
-    @GetMapping("/sys/api/translateDict")
-    String translateDict(@RequestParam("code") String code, @RequestParam("key") String key,@RequestParam("extendsKey") String extendsKey, @RequestParam("extendsValue") String extendsValue);
-
-    /**
-     * 42查询数据权限
-     * @return
-     */
-    @GetMapping("/sys/api/queryPermissionDataRule")
-    List<SysPermissionDataRuleModel> queryPermissionDataRule(@RequestParam("component") String component, @RequestParam("requestPath")String requestPath, @RequestParam("username") String username);
-
-    /**
-     * 43查询用户信息
-     * @param username
-     * @return
-     */
-    @GetMapping("/sys/api/getCacheUser")
-    SysUserCacheInfo getCacheUser(@RequestParam("username") String username);
-
-    /**
-     * 36根据多个用户账号(逗号分隔),查询返回多个用户信息
-     * @param usernames
-     * @return
-     */
-    @GetMapping("/sys/api/queryUsersByUsernames")
-    List<JSONObject> queryUsersByUsernames(String usernames);
-
-    /**
-     * 37根据多个用户ID(逗号分隔),查询返回多个用户信息
-     * @param ids
-     * @return
-     */
-    @GetMapping("/sys/api/queryUsersByIds")
-    List<JSONObject> queryUsersByIds(String ids);
-
-    /**
-     * 38根据多个部门编码(逗号分隔),查询返回多个部门信息
-     * @param orgCodes
-     * @return
-     */
-    @GetMapping("/sys/api/queryDepartsByOrgcodes")
-    List<JSONObject> queryDepartsByOrgcodes(String orgCodes);
-    /**
-     * 39根据多个部门编码(逗号分隔),查询返回多个部门信息
-     * @param ids
-     * @return
-     */
-    @GetMapping("/sys/api/queryDepartsByOrgIds")
-    List<JSONObject> queryDepartsByOrgIds(String ids);
-    
-    /**
-     * 40发送邮件消息
-     * @param email
-     * @param title
-     * @param content
-     */
-    @GetMapping("/sys/api/sendEmailMsg")
-    void sendEmailMsg(@RequestParam("email")String email,@RequestParam("title")String title,@RequestParam("content")String content);
-    /**
-     * 41 获取公司下级部门和公司下所有用户id
-     * @param orgCode
-     */
-    @GetMapping("/sys/api/getDeptUserByOrgCode")
-    List<Map> getDeptUserByOrgCode(@RequestParam("orgCode")String orgCode);
-}

+ 0 - 17
jeecg-boot-base/jeecg-boot-base-api/jeecg-system-cloud-api/src/main/java/org/jeecg/common/system/api/factory/SysBaseAPIFallbackFactory.java

@@ -1,17 +0,0 @@
-package org.jeecg.common.system.api.factory;
-
-import feign.hystrix.FallbackFactory;
-import org.jeecg.common.system.api.ISysBaseAPI;
-import org.jeecg.common.system.api.fallback.SysBaseAPIFallback;
-import org.springframework.stereotype.Component;
-
-@Component
-public class SysBaseAPIFallbackFactory implements FallbackFactory<ISysBaseAPI> {
-
-    @Override
-    public ISysBaseAPI create(Throwable throwable) {
-        SysBaseAPIFallback fallback = new SysBaseAPIFallback();
-        fallback.setCause(throwable);
-        return fallback;
-    }
-}

+ 0 - 272
jeecg-boot-base/jeecg-boot-base-api/jeecg-system-cloud-api/src/main/java/org/jeecg/common/system/api/fallback/SysBaseAPIFallback.java

@@ -1,272 +0,0 @@
-package org.jeecg.common.system.api.fallback;
-
-import com.alibaba.fastjson.JSONObject;
-import lombok.Setter;
-import lombok.extern.slf4j.Slf4j;
-import org.jeecg.common.api.dto.OnlineAuthDTO;
-import org.jeecg.common.api.dto.message.*;
-import org.jeecg.common.system.api.ISysBaseAPI;
-import org.jeecg.common.system.vo.*;
-
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * 进入fallback的方法 检查是否token未设置
- */
-@Slf4j
-public class SysBaseAPIFallback implements ISysBaseAPI {
-
-    @Setter
-    private Throwable cause;
-
-    @Override
-    public void sendSysAnnouncement(MessageDTO message) {
-        log.error("发送消息失败 {}", cause);
-    }
-
-    @Override
-    public void sendBusAnnouncement(BusMessageDTO message) {
-        log.error("发送消息失败 {}", cause);
-    }
-
-    @Override
-    public void sendTemplateAnnouncement(TemplateMessageDTO message) {
-        log.error("发送消息失败 {}", cause);
-    }
-
-    @Override
-    public void sendBusTemplateAnnouncement(BusTemplateMessageDTO message) {
-        log.error("发送消息失败 {}", cause);
-    }
-
-    @Override
-    public String parseTemplateByCode(TemplateDTO templateDTO) {
-        log.error("通过模板获取消息内容失败 {}", cause);
-        return null;
-    }
-
-    @Override
-    public LoginUser getUserById(String id) {
-        return null;
-    }
-
-    @Override
-    public List<String> getRolesByUsername(String username) {
-        return null;
-    }
-
-    @Override
-    public List<String> getDepartIdsByUsername(String username) {
-        return null;
-    }
-
-    @Override
-    public List<String> getDepartNamesByUsername(String username) {
-        return null;
-    }
-
-    @Override
-    public List<DictModel> queryDictItemsByCode(String code) {
-        return null;
-    }
-
-    @Override
-    public List<DictModel> queryAllDict() {
-        return null;
-    }
-
-    @Override
-    public List<SysCategoryModel> queryAllDSysCategory() {
-        return null;
-    }
-
-    @Override
-    public List<DictModel> queryTableDictItemsByCode(String table, String text, String code) {
-        return null;
-    }
-
-    @Override
-    public List<DictModel> queryAllDepartBackDictModel() {
-        return null;
-    }
-
-    @Override
-    public void updateSysAnnounReadFlag(String busType, String busId) {
-
-    }
-
-    @Override
-    public List<DictModel> queryFilterTableDictInfo(String table, String text, String code, String filterSql) {
-        return null;
-    }
-
-    @Override
-    public List<String> queryTableDictByKeys(String table, String text, String code, String[] keyArray) {
-        log.error("queryTableDictByKeys查询失败 {}", cause);
-        return null;
-    }
-
-    @Override
-    public List<ComboModel> queryAllUserBackCombo() {
-        return null;
-    }
-
-    @Override
-    public JSONObject queryAllUser(String userIds, Integer pageNo, int pageSize) {
-        return null;
-    }
-
-    @Override
-    public List<ComboModel> queryAllRole(String[] roleIds) {
-        log.error("获取角色信息失败 {}", cause);
-        return null;
-    }
-
-    @Override
-    public List<String> getRoleIdsByUsername(String username) {
-        return null;
-    }
-
-    @Override
-    public String getDepartIdsByOrgCode(String orgCode) {
-        return null;
-    }
-
-    @Override
-    public List<SysDepartModel> getAllSysDepart() {
-        return null;
-    }
-
-    @Override
-    public DictModel getParentDepartId(String departId) {
-        return null;
-    }
-
-    @Override
-    public List<String> getDeptHeadByDepId(String deptId) {
-        return null;
-    }
-
-    @Override
-    public void sendWebSocketMsg(String[] userIds, String cmd) {
-
-    }
-
-    @Override
-    public List<LoginUser> queryAllUserByIds(String[] userIds) {
-        return null;
-    }
-
-    @Override
-    public void meetingSignWebsocket(String userId) {
-
-    }
-
-    @Override
-    public List<LoginUser> queryUserByNames(String[] userNames) {
-        return null;
-    }
-
-    @Override
-    public Set<String> getUserRoleSet(String username) {
-        return null;
-    }
-
-    @Override
-    public Set<String> getUserPermissionSet(String username) {
-        return null;
-    }
-
-    @Override
-    public boolean hasOnlineAuth(OnlineAuthDTO onlineAuthDTO) {
-        return false;
-    }
-
-    @Override
-    public SysDepartModel selectAllById(String id) {
-        return null;
-    }
-
-    @Override
-    public List<String> queryDeptUsersByUserId(String userId) {
-        return null;
-    }
-
-    @Override
-    public Set<String> queryUserRoles(String username) {
-        return null;
-    }
-
-    @Override
-    public Set<String> queryUserAuths(String username) {
-        return null;
-    }
-
-    @Override
-    public DynamicDataSourceModel getDynamicDbSourceById(String dbSourceId) {
-        return null;
-    }
-
-    @Override
-    public DynamicDataSourceModel getDynamicDbSourceByCode(String dbSourceCode) {
-        return null;
-    }
-
-    @Override
-    public LoginUser getUserByName(String username) {
-        log.error("通过用户名获取当前登录用户信息 {}", cause);
-        return null;
-    }
-
-    @Override
-    public String translateDictFromTable(String table, String text, String code, String key,String ekey,String evalue) {
-        return null;
-    }
-
-    @Override
-    public String translateDict(String code, String key,String ekey,String evalue) {
-        return null;
-    }
-
-    @Override
-    public List<SysPermissionDataRuleModel> queryPermissionDataRule(String component, String requestPath, String username) {
-        return null;
-    }
-
-    @Override
-    public SysUserCacheInfo getCacheUser(String username) {
-        log.error("获取用户信息失败 {}", cause);
-        return null;
-    }
-
-    @Override
-    public List<JSONObject> queryUsersByUsernames(String usernames) {
-        return null;
-    }
-
-    @Override
-    public List<JSONObject> queryUsersByIds(String ids) {
-        return null;
-    }
-
-    @Override
-    public List<JSONObject> queryDepartsByOrgcodes(String orgCodes) {
-        return null;
-    }
-    @Override
-    public void sendEmailMsg(String email,String title,String content) {
-
-    }
-
-    @Override
-    public List<Map> getDeptUserByOrgCode(String orgCode) {
-        return null;
-    }
-
-    @Override
-    public List<JSONObject> queryDepartsByOrgIds(String ids) {
-        return null;
-    }
-}

+ 0 - 292
jeecg-boot-base/jeecg-boot-base-api/jeecg-system-local-api/src/main/java/org/jeecg/common/system/api/ISysBaseAPI.java

@@ -1,292 +0,0 @@
-package org.jeecg.common.system.api;
-
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import org.jeecg.common.api.CommonAPI;
-import org.jeecg.common.api.dto.OnlineAuthDTO;
-import org.jeecg.common.api.dto.message.*;
-import org.jeecg.common.system.vo.*;
-
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * @Description  底层共通业务API,提供其他独立模块调用
- * @Author  scott
- * @Date 2019-4-20
- * @Version V1.0
- */
-public interface ISysBaseAPI extends CommonAPI {
-
-
-    /**
-     * 1发送系统消息
-     * @param message 使用构造器赋值参数 如果不设置category(消息类型)则默认为2 发送系统消息
-     */
-    void sendSysAnnouncement(MessageDTO message);
-
-    /**
-     * 2发送消息 附带业务参数
-     * @param message 使用构造器赋值参数
-     */
-    void sendBusAnnouncement(BusMessageDTO message);
-
-    /**
-     * 3通过模板发送消息
-     * @param message 使用构造器赋值参数
-     */
-    void sendTemplateAnnouncement(TemplateMessageDTO message);
-
-    /**
-     * 4通过模板发送消息 附带业务参数
-     * @param message 使用构造器赋值参数
-     */
-    void sendBusTemplateAnnouncement(BusTemplateMessageDTO message);
-
-    /**
-     * 5通过消息中心模板,生成推送内容
-     * @param templateDTO 使用构造器赋值参数
-     * @return
-     */
-    String parseTemplateByCode(TemplateDTO templateDTO);
-
-    /**
-     * 6根据用户id查询用户信息
-     * @param id
-     * @return
-     */
-    LoginUser getUserById(String id);
-
-    /**
-     * 7通过用户账号查询角色集合
-     * @param username
-     * @return
-     */
-    List<String> getRolesByUsername(String username);
-
-    /**
-     * 8通过用户账号查询部门集合
-     * @param username
-     * @return 部门 id
-     */
-    List<String> getDepartIdsByUsername(String username);
-
-    /**
-     * 9通过用户账号查询部门 name
-     * @param username
-     * @return 部门 name
-     */
-    List<String> getDepartNamesByUsername(String username);
-
-
-
-    /** 11查询所有的父级字典,按照create_time排序 */
-    public List<DictModel> queryAllDict();
-
-    /**
-     * 12查询所有分类字典
-     * @return
-     */
-    public List<SysCategoryModel> queryAllDSysCategory();
-
-
-    /**
-     * 14查询所有部门 作为字典信息 id -->value,departName -->text
-     * @return
-     */
-    public List<DictModel> queryAllDepartBackDictModel();
-
-    /**
-     * 15根据业务类型及业务id修改消息已读
-     * @param busType
-     * @param busId
-     */
-    public void updateSysAnnounReadFlag(String busType, String busId);
-
-    /**
-     * 16查询表字典 支持过滤数据
-     * @param table
-     * @param text
-     * @param code
-     * @param filterSql
-     * @return
-     */
-    public List<DictModel> queryFilterTableDictInfo(String table, String text, String code, String filterSql);
-
-    /**
-     * 17查询指定table的 text code 获取字典,包含text和value
-     * @param table
-     * @param text
-     * @param code
-     * @param keyArray
-     * @return
-     */
-    @Deprecated
-    public List<String> queryTableDictByKeys(String table, String text, String code, String[] keyArray);
-
-    /**
-     * 18查询所有用户 返回ComboModel
-     * @return
-     */
-    public List<ComboModel> queryAllUserBackCombo();
-
-    /**
-     * 19分页查询用户 返回JSONObject
-     * @return
-     */
-    public JSONObject queryAllUser(String userIds, Integer pageNo, Integer pageSize);
-
-    /**
-     * 20获取所有角色
-     * @return
-     */
-    public List<ComboModel> queryAllRole();
-
-    /**
-     * 21获取所有角色 带参
-     * roleIds 默认选中角色
-     * @return
-     */
-    public List<ComboModel> queryAllRole(String[] roleIds );
-
-    /**
-     * 22通过用户账号查询角色Id集合
-     * @param username
-     * @return
-     */
-    public List<String> getRoleIdsByUsername(String username);
-
-    /**
-     * 23通过部门编号查询部门id
-     * @param orgCode
-     * @return
-     */
-    public String getDepartIdsByOrgCode(String orgCode);
-
-    /**
-     * 24查询所有部门
-     * @return
-     */
-    public List<SysDepartModel> getAllSysDepart();
-
-    /**
-     * 25查找父级部门
-     * @param departId
-     * @return
-     */
-    DictModel getParentDepartId(String departId);
-
-    /**
-     * 26根据部门Id获取部门负责人
-     * @param deptId
-     * @return
-     */
-    public List<String> getDeptHeadByDepId(String deptId);
-
-    /**
-     * 27给指定用户发消息
-     * @param userIds
-     * @param cmd
-     */
-    public void sendWebSocketMsg(String[] userIds, String cmd);
-
-    /**
-     * 28根据id获取所有参与用户
-     * userIds
-     * @return
-     */
-    public List<LoginUser> queryAllUserByIds(String[] userIds);
-
-    /**
-     * 29将会议签到信息推动到预览
-     * userIds
-     * @return
-     * @param userId
-     */
-    void meetingSignWebsocket(String userId);
-
-    /**
-     * 30根据name获取所有参与用户
-     * userNames
-     * @return
-     */
-    List<LoginUser> queryUserByNames(String[] userNames);
-
-
-    /**
-     * 31获取用户的角色集合
-     * @param username
-     * @return
-     */
-    Set<String> getUserRoleSet(String username);
-
-    /**
-     * 32获取用户的权限集合
-     * @param username
-     * @return
-     */
-    Set<String> getUserPermissionSet(String username);
-
-    /**
-     * 33判断是否有online访问的权限
-     * @param onlineAuthDTO
-     * @return
-     */
-    boolean hasOnlineAuth(OnlineAuthDTO onlineAuthDTO);
-
-    /**
-     * 34通过部门id获取部门全部信息
-     */
-    SysDepartModel selectAllById(String id);
-
-    /**
-     * 35根据用户id查询用户所属公司下所有用户ids
-     * @param userId
-     * @return
-     */
-    List<String> queryDeptUsersByUserId(String userId);
-
-    /**
-     * 36根据多个用户账号(逗号分隔),查询返回多个用户信息
-     * @param usernames
-     * @return
-     */
-    List<JSONObject> queryUsersByUsernames(String usernames);
-
-    /**
-     * 37根据多个用户ID(逗号分隔),查询返回多个用户信息
-     * @param ids
-     * @return
-     */
-    List<JSONObject> queryUsersByIds(String ids);
-
-    /**
-     * 38根据多个部门编码(逗号分隔),查询返回多个部门信息
-     * @param orgCodes
-     * @return
-     */
-    List<JSONObject> queryDepartsByOrgcodes(String orgCodes);
-
-    /**
-     * 39根据多个部门id(逗号分隔),查询返回多个部门信息
-     * @param ids
-     * @return
-     */
-    List<JSONObject> queryDepartsByIds(String ids);
-
-    /**
-     * 40发送邮件消息
-     * @param email
-     * @param title
-     * @param content
-     */
-    void sendEmailMsg(String email,String title,String content);
-    /**
-     * 41 获取公司下级部门和公司下所有用户信息
-     * @param orgCode
-     */
-    List<Map> getDeptUserByOrgCode(String orgCode);
-}

+ 466 - 0
jeecg-boot-base/jeecg-boot-base-api/jeecg-system-local-api/src/main/java/org/jeecg/common/system/api/ISysBaseApi.java

@@ -0,0 +1,466 @@
+package org.jeecg.common.system.api;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import org.jeecg.common.api.CommonAPI;
+import org.jeecg.common.api.dto.OnlineAuthDTO;
+import org.jeecg.common.api.dto.message.*;
+import org.jeecg.common.system.vo.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.sql.SQLException;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * @Description  底层共通业务API,提供其他独立模块调用
+ * @Author  scott
+ * @Date 2019-4-20
+ * @Version V1.0
+ */
+public interface ISysBaseApi extends CommonAPI {
+    /**
+     * 1发送系统消息
+     * @param message 使用构造器赋值参数 如果不设置category(消息类型)则默认为2 发送系统消息
+     */
+    void sendSysAnnouncement(MessageDTO message);
+
+    /**
+     * 2发送消息 附带业务参数
+     * @param message 使用构造器赋值参数
+     */
+    void sendBusAnnouncement(BusMessageDTO message);
+
+    /**
+     * 3通过模板发送消息
+     * @param message 使用构造器赋值参数
+     */
+    void sendTemplateAnnouncement(TemplateMessageDTO message);
+
+    /**
+     * 4通过模板发送消息 附带业务参数
+     * @param message 使用构造器赋值参数
+     */
+    void sendBusTemplateAnnouncement(BusTemplateMessageDTO message);
+
+    /**
+     * 5通过消息中心模板,生成推送内容
+     * @param templateDTO 使用构造器赋值参数
+     * @return
+     */
+    String parseTemplateByCode(TemplateDTO templateDTO);
+
+    /**
+     * 6根据用户id查询用户信息
+     * @param id
+     * @return
+     */
+    LoginUser getUserById(String id);
+
+    /**
+     * 7通过用户账号查询角色集合
+     * @param username
+     * @return
+     */
+    List<String> getRolesByUsername(String username);
+
+    /**
+     * 8通过用户账号查询部门集合
+     * @param username
+     * @return 部门 id
+     */
+    List<String> getDepartIdsByUsername(String username);
+
+    /**
+     * 9通过用户账号查询部门 name
+     * @param username
+     * @return 部门 name
+     */
+    List<String> getDepartNamesByUsername(String username);
+
+
+
+    /** 11查询所有的父级字典,按照create_time排序 */
+    public List<DictModel> queryAllDict();
+
+    /**
+     * 12查询所有分类字典
+     * @return
+     */
+    public List<SysCategoryModel> queryAllDSysCategory();
+
+    /**
+     * 15根据业务类型及业务id修改消息已读
+     * @param busType
+     * @param busId
+     */
+    public void updateSysAnnounReadFlag(String busType, String busId);
+
+    /**
+     * 16查询表字典 支持过滤数据
+     * @param table
+     * @param text
+     * @param code
+     * @param filterSql
+     * @return
+     */
+    public List<DictModel> queryFilterTableDictInfo(String table, String text, String code, String filterSql);
+
+    /**
+     * 17查询指定table的 text code 获取字典,包含text和value
+     * @param table
+     * @param text
+     * @param code
+     * @param keyArray
+     * @return
+     */
+    @Deprecated
+    public List<String> queryTableDictByKeys(String table, String text, String code, String[] keyArray);
+
+    /**
+     * 18查询所有用户 返回ComboModel
+     * @return
+     */
+    public List<ComboModel> queryAllUserBackCombo();
+
+    /**
+     * 19分页查询用户 返回JSONObject
+     * @return
+     */
+    public JSONObject queryAllUser(String userIds, Integer pageNo, Integer pageSize);
+
+    /**
+     * 20获取所有角色
+     * @return
+     */
+    public List<ComboModel> queryAllRole();
+
+    /**
+     * 21获取所有角色 带参
+     * roleIds 默认选中角色
+     * @return
+     */
+    public List<ComboModel> queryAllRole(String[] roleIds );
+
+    /**
+     * 22通过用户账号查询角色Id集合
+     * @param username
+     * @return
+     */
+    public List<String> getRoleIdsByUsername(String username);
+
+    /**
+     * 23通过部门编号查询部门id
+     * @param orgCode
+     * @return
+     */
+    public String getDepartIdsByOrgCode(String orgCode);
+
+    /**
+     * 24查询所有部门
+     * @return
+     */
+    public List<SysDepartModel> getAllSysDepart();
+
+    /**
+     * 25查找父级部门
+     * @param departId
+     * @return
+     */
+    DictModel getParentDepartId(String departId);
+
+    /**
+     * 26根据部门Id获取部门负责人
+     * @param deptId
+     * @return
+     */
+    public List<String> getDeptHeadByDepId(String deptId);
+
+    /**
+     * 27给指定用户发消息
+     * @param userIds
+     * @param cmd
+     */
+    public void sendWebSocketMsg(String[] userIds, String cmd);
+
+    /**
+     * 28根据id获取所有参与用户
+     * userIds
+     * @return
+     */
+    public List<LoginUser> queryAllUserByIds(String[] userIds);
+
+    /**
+     * 29将会议签到信息推动到预览
+     * userIds
+     * @return
+     * @param userId
+     */
+    void meetingSignWebsocket(String userId);
+
+    /**
+     * 30根据name获取所有参与用户
+     * userNames
+     * @return
+     */
+    List<LoginUser> queryUserByNames(String[] userNames);
+
+
+    /**
+     * 31获取用户的角色集合
+     * @param username
+     * @return
+     */
+    Set<String> getUserRoleSet(String username);
+
+    /**
+     * 32获取用户的权限集合
+     * @param username
+     * @return
+     */
+    Set<String> getUserPermissionSet(String username);
+
+    /**
+     * 33判断是否有online访问的权限
+     * @param onlineAuthDTO
+     * @return
+     */
+    boolean hasOnlineAuth(OnlineAuthDTO onlineAuthDTO);
+
+    /**
+     * 34通过部门id获取部门全部信息
+     */
+    SysDepartModel selectAllById(String id);
+
+    /**
+     * 35根据用户id查询用户所属公司下所有用户ids
+     * @param userId
+     * @return
+     */
+    List<String> queryDeptUsersByUserId(String userId);
+
+    /**
+     * 36根据多个用户账号(逗号分隔),查询返回多个用户信息
+     * @param usernames
+     * @return
+     */
+    List<JSONObject> queryUsersByUsernames(String usernames);
+
+    /**
+     * 37根据多个用户ID(逗号分隔),查询返回多个用户信息
+     * @param ids
+     * @return
+     */
+    List<JSONObject> queryUsersByIds(String ids);
+
+    /**
+     * 38根据多个部门编码(逗号分隔),查询返回多个部门信息
+     * @param orgCodes
+     * @return
+     */
+    List<JSONObject> queryDepartsByOrgcodes(String orgCodes);
+
+    /**
+     * 39根据多个部门id(逗号分隔),查询返回多个部门信息
+     * @param ids
+     * @return
+     */
+    List<JSONObject> queryDepartsByIds(String ids);
+
+    /**
+     * 40发送邮件消息
+     * @param email
+     * @param title
+     * @param content
+     */
+    void sendEmailMsg(String email,String title,String content);
+    /**
+     * 41 获取公司下级部门和公司下所有用户信息
+     * @param orgCode
+     */
+    List<Map> getDeptUserByOrgCode(String orgCode);
+
+    /**
+     * 日志添加
+     * @param LogContent 内容
+     * @param logType 日志类型(0:定时任务;1:登录日志;2:操作日志)
+     * @param operatetype 操作类型(1:添加;2:修改;3:删除;)
+     */
+    void addLog(String LogContent, Integer logType, Integer operatetype);
+
+    /**
+     * 根据用户账号查询用户信息
+     * @param username
+     * @return
+     */
+    LoginUser getUserByName(String username);
+
+    List<SysPermissionDataRuleModel> queryPermissionDataRule(String component, String requestPath, String username);
+
+    SysUserCacheInfo getCacheUser(String username);
+
+    /**
+     * 获取当前数据库类型
+     * @return
+     * @throws Exception
+     */
+    public String getDatabaseType() throws SQLException;
+
+    /**
+     * 获取数据字典
+     * @param code
+     * @return
+     */
+    public List<DictModel> queryDictItemsByCode(String code);
+
+
+    /**
+     * 获取表数据字典
+     * @param table
+     * @param text
+     * @param code
+     * @return
+     */
+    List<DictModel> queryTableDictItemsByCode(String table, String text, String code);
+
+    /**
+     * 查询所有部门 作为字典信息 id -->value,departName -->text
+     * @return
+     */
+    public List<DictModel> queryAllDepartBackDictModel();
+
+    /**
+     * 查询所有部门,拼接查询条件
+     * @return
+     */
+    List<JSONObject> queryAllDepart(Wrapper wrapper);
+
+    /**
+     * 发送系统消息
+     * @param fromUser 发送人(用户登录账户)
+     * @param toUser  发送给(用户登录账户)
+     * @param title  消息主题
+     * @param msgContent  消息内容
+     */
+    public void sendSysAnnouncement(String fromUser,String toUser,String title, String msgContent);
+
+    /**
+     * 发送系统消息
+     * @param fromUser 发送人(用户登录账户)
+     * @param toUser   发送给(用户登录账户)
+     * @param title    通知标题
+     * @param map  	   模板参数
+     * @param templateCode  模板编码
+     */
+    public void sendSysAnnouncement(String fromUser, String toUser,String title, Map<String, String> map, String templateCode);
+
+    /**
+     *
+     * @param fromUser 发送人(用户登录账户)
+     * @param toUser 发送给(用户登录账户)
+     * @param title 通知标题
+     * @param map 模板参数
+     * @param templateCode 模板编码
+     * @param busType 业务类型
+     * @param busId 业务id
+     */
+    public void sendSysAnnouncement(String fromUser, String toUser,String title, Map<String, String> map, String templateCode,String busType,String busId);
+
+    /**
+     * 通过消息中心模板,生成推送内容
+     *
+     * @param templateCode 模板编码
+     * @param map          模板参数
+     * @return
+     */
+    public String parseTemplateByCode(String templateCode, Map<String, String> map);
+
+
+    /**
+     * 发送系统消息
+     * @param fromUser 发送人(用户登录账户)
+     * @param toUser  发送给(用户登录账户)
+     * @param title  消息主题
+     * @param msgContent  消息内容
+     * @param setMsgCategory  消息类型 1:消息2:系统消息
+     */
+    public void sendSysAnnouncement(String fromUser, String toUser, String title, String msgContent, String setMsgCategory);
+
+    /**queryTableDictByKeys
+     * 发送系统消息
+     * @param fromUser 发送人(用户登录账户)
+     * @param toUser  发送给(用户登录账户)
+     * @param title  消息主题
+     * @param msgContent  消息内容
+     * @param setMsgCategory  消息类型 1:消息2:系统消息
+     * @param busType  业务类型
+     * @param busId  业务id
+     */
+    public void sendSysAnnouncement(String fromUser, String toUser, String title, String msgContent, String setMsgCategory,String busType,String busId);
+
+    /**
+     * 获取所有有效用户
+     * @return
+     */
+    public List<ComboModel> queryAllUser();
+
+    /**
+     * 获取所有有效用户 带参
+     * userIds 默认选中用户
+     * @return
+     */
+    public JSONObject queryAllUser(String[] userIds, int pageNo, int pageSize);
+
+    /**
+     * 获取所有有效用户 拼接查询条件
+     *
+     * @return
+     */
+    List<JSONObject> queryAllUser(Wrapper wrapper);
+
+    /**
+     * 根据 id 查询数据库中存储的 DynamicDataSourceModel
+     *
+     * @param dbSourceId
+     * @return
+     */
+    DynamicDataSourceModel getDynamicDbSourceById(String dbSourceId);
+
+    /**
+     * 根据 code 查询数据库中存储的 DynamicDataSourceModel
+     *
+     * @param dbSourceCode
+     * @return
+     */
+    @Override
+    DynamicDataSourceModel getDynamicDbSourceByCode(String dbSourceCode);
+
+    /**
+     * 文件上传
+     * @param file 文件
+     * @param bizPath 自定义路径
+     * @param uploadType 上传方式
+     * @return
+     */
+    public String upload(MultipartFile file, String bizPath, String uploadType);
+
+    /**
+     * 文件上传 自定义桶
+     * @param file
+     * @param bizPath
+     * @param uploadType
+     * @param customBucket
+     * @return
+     */
+    public String upload(MultipartFile file,String bizPath,String uploadType,String customBucket);
+
+    /**
+     * 文档管理文件下载预览
+     * @param filePath
+     * @param uploadpath
+     * @param response
+     */
+    public void viewAndDownload(String filePath, String uploadpath, String uploadType, HttpServletResponse response);
+}

+ 13 - 37
jeecg-boot-base/jeecg-boot-base-core/pom.xml

@@ -75,6 +75,19 @@
 			<artifactId>commons-lang</artifactId>
 			<version>${commons.version}</version>
 		</dependency>
+
+		<!-- ureport -->
+		<dependency>
+			<groupId>com.bstek.ureport</groupId>
+			<artifactId>ureport2-core</artifactId>
+			<version>2.2.9</version>
+		</dependency>
+		<dependency>
+			<groupId>com.bstek.ureport</groupId>
+			<artifactId>ureport2-console</artifactId>
+			<version>2.2.9</version>
+		</dependency>
+
 		<!-- freemarker -->
 		<dependency>
 			<groupId>org.springframework.boot</groupId>
@@ -111,11 +124,6 @@
 				</exclusion>
 			</exclusions>
 		</dependency>
-		<dependency>
-			<groupId>org.jeecgframework.boot</groupId>
-			<artifactId>hibernate-re</artifactId>
-			<version>2.4.5-RC</version>
-		</dependency>
 
 		<!--mysql-->
 		<dependency>
@@ -124,33 +132,6 @@
 			<version>${mysql-connector-java.version}</version>
 			<scope>runtime</scope>
 		</dependency>
-		<!--  sqlserver-->
-		<dependency>
-			<groupId>com.microsoft.sqlserver</groupId>
-			<artifactId>sqljdbc4</artifactId>
-			<version>${sqljdbc4.version}</version>
-			<scope>runtime</scope>
-		</dependency>
-		<!-- oracle驱动 -->
-		<dependency>
-			<groupId>com.oracle</groupId>
-			<artifactId>ojdbc6</artifactId>
-			<version>${ojdbc6.version}</version>
-			<scope>runtime</scope>
-		</dependency>
-		<!-- postgresql驱动 -->
-		<dependency>
-			<groupId>org.postgresql</groupId>
-			<artifactId>postgresql</artifactId>
-			<version>${postgresql.version}</version>
-			<scope>runtime</scope>
-		</dependency>
-
-		<!-- Quartz定时任务 -->
-		<dependency>
-			<groupId>org.springframework.boot</groupId>
-			<artifactId>spring-boot-starter-quartz</artifactId>
-		</dependency>
 
 		<!--JWT-->
 		<dependency>
@@ -221,11 +202,6 @@
 			<groupId>com.xkcoding.justauth</groupId>
 			<artifactId>justauth-spring-boot-starter</artifactId>
 		</dependency>
-		<!--<dependency>
-			<groupId>com.squareup.okhttp3</groupId>
-			<artifactId>okhttp</artifactId>
-		</dependency>
--->
 
 		<!-- pagehelper-->
 		<dependency>

+ 3 - 3
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/vo/Result.java

@@ -50,6 +50,9 @@ public class Result<T> implements Serializable {
 	@ApiModelProperty(value = "时间戳")
 	private long timestamp = System.currentTimeMillis();
 
+	@JsonIgnore
+	private String onlTable;
+
 	public Result() {
 		
 	}
@@ -167,7 +170,4 @@ public class Result<T> implements Serializable {
 		return error(CommonConstant.SC_JEECG_NO_AUTHZ, msg);
 	}
 
-	@JsonIgnore
-	private String onlTable;
-
 }

+ 0 - 51
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/aspect/AutoLogAspect.java

@@ -216,55 +216,4 @@ public class AutoLogAspect {
         }
         return content;
     }
-
-
-    /*    private void saveSysLog(ProceedingJoinPoint joinPoint, long time, Object obj) {
-        MethodSignature signature = (MethodSignature) joinPoint.getSignature();
-        Method method = signature.getMethod();
-
-        SysLog sysLog = new SysLog();
-        AutoLog syslog = method.getAnnotation(AutoLog.class);
-        if(syslog != null){
-            //update-begin-author:taoyan date:
-            String content = syslog.value();
-            if(syslog.module()== ModuleType.ONLINE){
-                content = getOnlineLogContent(obj, content);
-            }
-            //注解上的描述,操作日志内容
-            sysLog.setLogContent(content);
-            sysLog.setLogType(syslog.logType());
-        }
-
-        //请求的方法名
-        String className = joinPoint.getTarget().getClass().getName();
-        String methodName = signature.getName();
-        sysLog.setMethod(className + "." + methodName + "()");
-
-
-        //设置操作类型
-        if (sysLog.getLogType() == CommonConstant.LOG_TYPE_2) {
-            sysLog.setOperateType(getOperateType(methodName, syslog.operateType()));
-        }
-
-        //获取request
-        HttpServletRequest request = SpringContextUtils.getHttpServletRequest();
-        //请求的参数
-        sysLog.setRequestParam(getReqestParams(request,joinPoint));
-
-        //设置IP地址
-        sysLog.setIp(IPUtils.getIpAddr(request));
-
-        //获取登录用户信息
-        LoginUser sysUser = (LoginUser)SecurityUtils.getSubject().getPrincipal();
-        if(sysUser!=null){
-            sysLog.setUserid(sysUser.getUsername());
-            sysLog.setUsername(sysUser.getRealname());
-
-        }
-        //耗时
-        sysLog.setCostTime(time);
-        sysLog.setCreateTime(new Date());
-        //保存系统日志
-        sysLogService.save(sysLog);
-    }*/
 }

+ 0 - 9
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/aspect/UrlMatchEnum.java

@@ -46,13 +46,4 @@ public enum UrlMatchEnum {
         }
         return null;
     }
-
-
-//    public static void main(String[] args) {
-//        /**
-//         * 比如request真实请求URL: /online/cgform/api/getData/81fcf7d8922d45069b0d5ba983612d3a
-//         * 转换匹配路由URL后(对应配置的菜单路径):/online/cgformList/81fcf7d8922d45069b0d5ba983612d3a
-//         */
-//        System.out.println(UrlMatchEnum.getMatchResultByUrl("/online/cgform/api/getData/81fcf7d8922d45069b0d5ba983612d3a"));
-//    }
 }

+ 27 - 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/aspect/annotation/Document.java

@@ -0,0 +1,27 @@
+package org.jeecg.common.aspect.annotation;
+
+import java.lang.annotation.*;
+
+/**
+ * Es 文档注解,用于做索引实体映射
+ * 作用在类上
+ * @author zzy
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.TYPE)
+@Documented
+@Inherited
+public @interface  Document {
+
+    /**
+     * index : 索引名称
+     * @return
+     */
+    String index();
+
+    /**
+     * 类型名称
+     * @return
+     */
+    String type();
+}

+ 16 - 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/aspect/annotation/EsId.java

@@ -0,0 +1,16 @@
+package org.jeecg.common.aspect.annotation;
+
+import java.lang.annotation.*;
+
+/**
+ * 用于标识使用 该字段作为ES数据中的id
+ * @author zzy
+ * @create: 2021-07-12
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.FIELD)
+@Documented
+@Inherited
+public @interface EsId {
+
+}

+ 26 - 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/aspect/annotation/FieId.java

@@ -0,0 +1,26 @@
+package org.jeecg.common.aspect.annotation;
+
+import org.jeecg.common.constant.AnalyzerType;
+import org.jeecg.common.constant.FieldType;
+
+import java.lang.annotation.*;
+
+/**
+ * 作用在字段上,用于定义类型,映射关系
+ * @author zzy
+ * @create: 2021-07-12
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.FIELD)
+@Documented
+@Inherited
+public @interface FieId {
+    FieldType type() default FieldType.TEXT;
+
+    /**
+     * 指定分词器
+     * @return
+     */
+    AnalyzerType analyzer() default AnalyzerType.STANDARD;
+
+}

+ 29 - 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/AnalyzerType.java

@@ -0,0 +1,29 @@
+package org.jeecg.common.constant;
+
+import lombok.Getter;
+
+@Getter
+public enum AnalyzerType {
+    NO("不使用分词"),
+    /**
+     * 标准分词,默认分词器
+     */
+    STANDARD("standard"),
+
+    /**
+     * ik_smart:会做最粗粒度的拆分;已被分出的词语将不会再次被其它词语占有
+     */
+    IK_SMART("ik_smart"),
+
+    /**
+     * ik_max_word :会将文本做最细粒度的拆分;尽可能多的拆分出词语
+     */
+    IK_MAX_WORD("ik_max_word");
+
+    private String type;
+
+    AnalyzerType(String type) {
+        this.type = type;
+    }
+
+}

+ 4 - 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/CommonConstant.java

@@ -321,5 +321,9 @@ public interface CommonConstant {
     String ANNOUNCEMENT_SEND_STATUS_1 = "1";
     /** 系统通告消息状态:2=已撤销 */
     String ANNOUNCEMENT_SEND_STATUS_2 = "2";
+    /** 登录用户拥有角色缓存KEY前缀 */
+    public static String LOGIN_USER_CACHERULES_ROLE = "loginUser_cacheRules::Roles_";
+    /** 登录用户拥有权限缓存KEY前缀 */
+    public static String LOGIN_USER_CACHERULES_PERMISSION  = "loginUser_cacheRules::Permissions_";
 
 }

+ 40 - 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/FieldType.java

@@ -0,0 +1,40 @@
+package org.jeecg.common.constant;
+
+import lombok.Getter;
+
+@Getter
+public enum FieldType {
+    /**
+     * text
+     */
+    TEXT("text"),
+
+    KEYWORD("keyword"),
+
+    INTEGER("integer"),
+
+    DOUBLE("double"),
+
+    DATE("date"),
+
+    /**
+     * 单条数据
+     */
+    OBJECT("object"),
+
+    /**
+     * 嵌套数组
+     */
+    NESTED("nested"),
+
+
+    ;
+
+
+    FieldType(String type) {
+        this.type = type;
+    }
+
+    private String type;
+
+}

+ 15 - 28
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/ProvinceCityArea.java

@@ -39,16 +39,6 @@ public class ProvinceCityArea {
         return null;
     }
 
-    public void getAreaByCode(String code,List<String> ls){
-        for(Area area: areaList){
-            if(area.getId().equals(code)){
-                String pid = area.getPid();
-                ls.add(0,area.getText());
-                getAreaByCode(pid,ls);
-            }
-        }
-    }
-
     private void initAreaList(){
         //System.out.println("=====================");
         if(this.areaList==null || this.areaList.size()==0){
@@ -87,24 +77,6 @@ public class ProvinceCityArea {
     }
 
 
-    private String jsonRead(File file){
-        Scanner scanner = null;
-        StringBuilder buffer = new StringBuilder();
-        try {
-            scanner = new Scanner(file, "utf-8");
-            while (scanner.hasNextLine()) {
-                buffer.append(scanner.nextLine());
-            }
-        } catch (Exception e) {
-
-        } finally {
-            if (scanner != null) {
-                scanner.close();
-            }
-        }
-        return buffer.toString();
-    }
-
     class Area{
         String id;
         String text;
@@ -128,4 +100,19 @@ public class ProvinceCityArea {
             return pid;
         }
     }
+
+
+    @Value("classpath:static/pca.json")
+    private Resource jsonData;
+
+    public void getAreaByCode(String code,List<String> ls){
+        for(Area area: areaList){
+            if(area.getId().equals(code)){
+                String pid = area.getPid();
+                ls.add(0,area.getText());
+                getAreaByCode(pid,ls);
+            }
+        }
+    }
+
 }

+ 13 - 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/SystemDateConstant.java

@@ -0,0 +1,13 @@
+package org.jeecg.common.constant;
+
+public class SystemDateConstant {
+
+    //系統年月日时间格式
+    public static String yyyy_MM_dd="yyyy-MM-dd";
+
+    public static String yyyy_MM="yyyy-MM";
+
+    //系统数据起始时间
+    public static String BEGIN_TIME="2019-09-01";
+
+}

+ 0 - 1
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/WebsocketConst.java

@@ -57,5 +57,4 @@ public class WebsocketConst {
      * 消息类型 新闻发布/取消
      */
     public static final String NEWS_PUBLISH = "publish";
-
 }

+ 165 - 167
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/es/JeecgElasticsearchTemplate.java

@@ -46,28 +46,6 @@ public class JeecgElasticsearchTemplate {
         }
     }
 
-    public StringBuilder getBaseUrl(String indexName, String typeName) {
-        typeName = typeName.trim().toLowerCase();
-        return this.getBaseUrl(indexName).append("/").append(typeName);
-    }
-
-    public StringBuilder getBaseUrl(String indexName) {
-        indexName = indexName.trim().toLowerCase();
-        return this.getBaseUrl().append("/").append(indexName);
-    }
-
-    public StringBuilder getBaseUrl() {
-        return new StringBuilder("http://").append(this.baseUrl);
-    }
-
-    /**
-     * cat 查询ElasticSearch系统数据,返回json
-     */
-    public <T> ResponseEntity<T> _cat(String urlAfter, Class<T> responseType) {
-        String url = this.getBaseUrl().append("/_cat").append(urlAfter).append("?").append(FORMAT_JSON).toString();
-        return RestUtil.request(url, HttpMethod.GET, null, null, null, responseType);
-    }
-
     /**
      * 查询所有索引
      * <p>
@@ -108,6 +86,171 @@ public class JeecgElasticsearchTemplate {
     }
 
     /**
+     * 保存数据,详见:saveOrUpdate
+     */
+    public boolean save(String indexName, String typeName, String dataId, JSONObject data) {
+        return this.saveOrUpdate(indexName, typeName, dataId, data);
+    }
+
+    /**
+     * 更新数据,详见:saveOrUpdate
+     */
+    public boolean update(String indexName, String typeName, String dataId, JSONObject data) {
+        return this.saveOrUpdate(indexName, typeName, dataId, data);
+    }
+    /**
+     * 批量保存数据
+     *
+     * @param indexName 索引名称
+     * @param typeName  type,一个任意字符串,用于分类
+     * @param dataList  要存储的数据数组,每行数据必须包含id
+     * @return
+     */
+    public boolean saveBatch(String indexName, String typeName, JSONArray dataList) {
+        String url = this.getBaseUrl().append("/_bulk").append("?refresh=wait_for").toString();
+        StringBuilder bodySB = new StringBuilder();
+        for (int i = 0; i < dataList.size(); i++) {
+            JSONObject data = dataList.getJSONObject(i);
+            String id = data.getString("id");
+            // 该行的操作
+            // {"create": {"_id":"${id}", "_index": "${indexName}", "_type": "${typeName}"}}
+            JSONObject action = new JSONObject();
+            JSONObject actionInfo = new JSONObject();
+            actionInfo.put("_id", id);
+            actionInfo.put("_index", indexName);
+            actionInfo.put("_type", typeName);
+            action.put("create", actionInfo);
+            bodySB.append(action.toJSONString()).append("\n");
+            // 该行的数据
+            data.remove("id");
+            bodySB.append(data.toJSONString()).append("\n");
+        }
+        System.out.println("+-+-+-: bodySB.toString(): " + bodySB.toString());
+        HttpHeaders headers = RestUtil.getHeaderApplicationJson();
+        RestUtil.request(url, HttpMethod.PUT, headers, null, bodySB, JSONObject.class);
+        return true;
+    }
+
+    /**
+     * @param _source (源滤波器)指定返回的字段,传null返回所有字段
+     * @param query
+     * @param from    从第几条数据开始
+     * @param size    返回条目数
+     * @return { "query": query }
+     */
+    public JSONObject buildQuery(List<String> _source, JSONObject query, int from, int size) {
+        JSONObject json = new JSONObject();
+        if (_source != null) {
+            json.put("_source", _source);
+        }
+        json.put("query", query);
+        json.put("from", from);
+        json.put("size", size);
+        return json;
+    }
+
+    /**
+     * @return { "bool" : { "must": must, "must_not": mustNot, "should": should } }
+     */
+    public JSONObject buildBoolQuery(JSONArray must, JSONArray mustNot, JSONArray should) {
+        JSONObject bool = new JSONObject();
+        if (must != null) {
+            bool.put("must", must);
+        }
+        if (mustNot != null) {
+            bool.put("must_not", mustNot);
+        }
+        if (should != null) {
+            bool.put("should", should);
+        }
+        JSONObject json = new JSONObject();
+        json.put("bool", bool);
+        return json;
+    }
+
+    /**
+     * @param field 要查询的字段
+     * @param args  查询参数,参考: *哈哈* OR *哒* NOT *呵* OR *啊*
+     * @return
+     */
+    public JSONObject buildQueryString(String field, String... args) {
+        if (field == null) {
+            return null;
+        }
+        StringBuilder sb = new StringBuilder(field).append(":(");
+        if (args != null) {
+            for (String arg : args) {
+                sb.append(arg).append(" ");
+            }
+        }
+        sb.append(")");
+        return this.buildQueryString(sb.toString());
+    }
+
+    /**
+     * @return { "query_string": { "query": query }  }
+     */
+    public JSONObject buildQueryString(String query) {
+        JSONObject queryString = new JSONObject();
+        queryString.put("query", query);
+        JSONObject json = new JSONObject();
+        json.put("query_string", queryString);
+        return json;
+    }
+
+    /**
+     * @param field      查询字段
+     * @param min        最小值
+     * @param max        最大值
+     * @param containMin 范围内是否包含最小值
+     * @param containMax 范围内是否包含最大值
+     * @return { "range" : { field : { 『 "gt『e』?containMin" : min 』?min!=null , 『 "lt『e』?containMax" : max 』}} }
+     */
+    public JSONObject buildRangeQuery(String field, Object min, Object max, boolean containMin, boolean containMax) {
+        JSONObject inner = new JSONObject();
+        if (min != null) {
+            if (containMin) {
+                inner.put("gte", min);
+            } else {
+                inner.put("gt", min);
+            }
+        }
+        if (max != null) {
+            if (containMax) {
+                inner.put("lte", max);
+            } else {
+                inner.put("lt", max);
+            }
+        }
+        JSONObject range = new JSONObject();
+        range.put(field, inner);
+        JSONObject json = new JSONObject();
+        json.put("range", range);
+        return json;
+    }
+
+    public StringBuilder getBaseUrl(String indexName, String typeName) {
+        typeName = typeName.trim().toLowerCase();
+        return this.getBaseUrl(indexName).append("/").append(typeName);
+    }
+
+    public StringBuilder getBaseUrl(String indexName) {
+        indexName = indexName.trim().toLowerCase();
+        return this.getBaseUrl().append("/").append(indexName);
+    }
+
+    public StringBuilder getBaseUrl() {
+        return new StringBuilder("http://").append(this.baseUrl);
+    }
+
+    /**
+     * cat 查询ElasticSearch系统数据,返回json
+     */
+    public <T> ResponseEntity<T> _cat(String urlAfter, Class<T> responseType) {
+        String url = this.getBaseUrl().append("/_cat").append(urlAfter).append("?").append(FORMAT_JSON).toString();
+        return RestUtil.request(url, HttpMethod.GET, null, null, null, responseType);
+    }
+    /**
      * 根据ID获取索引数据,未查询到返回null
      * <p>
      * 查询地址:GET http://{baseUrl}/{indexName}/{typeName}/{dataId}
@@ -254,20 +397,6 @@ public class JeecgElasticsearchTemplate {
     }
 
     /**
-     * 保存数据,详见:saveOrUpdate
-     */
-    public boolean save(String indexName, String typeName, String dataId, JSONObject data) {
-        return this.saveOrUpdate(indexName, typeName, dataId, data);
-    }
-
-    /**
-     * 更新数据,详见:saveOrUpdate
-     */
-    public boolean update(String indexName, String typeName, String dataId, JSONObject data) {
-        return this.saveOrUpdate(indexName, typeName, dataId, data);
-    }
-
-    /**
      * 保存或修改索引数据
      * <p>
      * 查询地址:PUT http://{baseUrl}/{indexName}/{typeName}/{dataId}
@@ -330,39 +459,6 @@ public class JeecgElasticsearchTemplate {
     }
 
     /**
-     * 批量保存数据
-     *
-     * @param indexName 索引名称
-     * @param typeName  type,一个任意字符串,用于分类
-     * @param dataList  要存储的数据数组,每行数据必须包含id
-     * @return
-     */
-    public boolean saveBatch(String indexName, String typeName, JSONArray dataList) {
-        String url = this.getBaseUrl().append("/_bulk").append("?refresh=wait_for").toString();
-        StringBuilder bodySB = new StringBuilder();
-        for (int i = 0; i < dataList.size(); i++) {
-            JSONObject data = dataList.getJSONObject(i);
-            String id = data.getString("id");
-            // 该行的操作
-            // {"create": {"_id":"${id}", "_index": "${indexName}", "_type": "${typeName}"}}
-            JSONObject action = new JSONObject();
-            JSONObject actionInfo = new JSONObject();
-            actionInfo.put("_id", id);
-            actionInfo.put("_index", indexName);
-            actionInfo.put("_type", typeName);
-            action.put("create", actionInfo);
-            bodySB.append(action.toJSONString()).append("\n");
-            // 该行的数据
-            data.remove("id");
-            bodySB.append(data.toJSONString()).append("\n");
-        }
-        System.out.println("+-+-+-: bodySB.toString(): " + bodySB.toString());
-        HttpHeaders headers = RestUtil.getHeaderApplicationJson();
-        RestUtil.request(url, HttpMethod.PUT, headers, null, bodySB, JSONObject.class);
-        return true;
-    }
-
-    /**
      * 删除索引数据
      * <p>
      * 请求地址:DELETE http://{baseUrl}/{indexName}/{typeName}/{dataId}
@@ -413,103 +509,5 @@ public class JeecgElasticsearchTemplate {
         return res;
     }
 
-    /**
-     * @param _source (源滤波器)指定返回的字段,传null返回所有字段
-     * @param query
-     * @param from    从第几条数据开始
-     * @param size    返回条目数
-     * @return { "query": query }
-     */
-    public JSONObject buildQuery(List<String> _source, JSONObject query, int from, int size) {
-        JSONObject json = new JSONObject();
-        if (_source != null) {
-            json.put("_source", _source);
-        }
-        json.put("query", query);
-        json.put("from", from);
-        json.put("size", size);
-        return json;
-    }
-
-    /**
-     * @return { "bool" : { "must": must, "must_not": mustNot, "should": should } }
-     */
-    public JSONObject buildBoolQuery(JSONArray must, JSONArray mustNot, JSONArray should) {
-        JSONObject bool = new JSONObject();
-        if (must != null) {
-            bool.put("must", must);
-        }
-        if (mustNot != null) {
-            bool.put("must_not", mustNot);
-        }
-        if (should != null) {
-            bool.put("should", should);
-        }
-        JSONObject json = new JSONObject();
-        json.put("bool", bool);
-        return json;
-    }
-
-    /**
-     * @param field 要查询的字段
-     * @param args  查询参数,参考: *哈哈* OR *哒* NOT *呵* OR *啊*
-     * @return
-     */
-    public JSONObject buildQueryString(String field, String... args) {
-        if (field == null) {
-            return null;
-        }
-        StringBuilder sb = new StringBuilder(field).append(":(");
-        if (args != null) {
-            for (String arg : args) {
-                sb.append(arg).append(" ");
-            }
-        }
-        sb.append(")");
-        return this.buildQueryString(sb.toString());
-    }
-
-    /**
-     * @return { "query_string": { "query": query }  }
-     */
-    public JSONObject buildQueryString(String query) {
-        JSONObject queryString = new JSONObject();
-        queryString.put("query", query);
-        JSONObject json = new JSONObject();
-        json.put("query_string", queryString);
-        return json;
-    }
-
-    /**
-     * @param field      查询字段
-     * @param min        最小值
-     * @param max        最大值
-     * @param containMin 范围内是否包含最小值
-     * @param containMax 范围内是否包含最大值
-     * @return { "range" : { field : { 『 "gt『e』?containMin" : min 』?min!=null , 『 "lt『e』?containMax" : max 』}} }
-     */
-    public JSONObject buildRangeQuery(String field, Object min, Object max, boolean containMin, boolean containMax) {
-        JSONObject inner = new JSONObject();
-        if (min != null) {
-            if (containMin) {
-                inner.put("gte", min);
-            } else {
-                inner.put("gt", min);
-            }
-        }
-        if (max != null) {
-            if (containMax) {
-                inner.put("lte", max);
-            } else {
-                inner.put("lt", max);
-            }
-        }
-        JSONObject range = new JSONObject();
-        range.put(field, inner);
-        JSONObject json = new JSONObject();
-        json.put("range", range);
-        return json;
-    }
-
 }
 

+ 1 - 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/exception/JeecgBootException.java

@@ -16,4 +16,5 @@ public class JeecgBootException extends RuntimeException {
 	{
 		super(message,cause);
 	}
+
 }

+ 118 - 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/entity/SysDataSource.java

@@ -0,0 +1,118 @@
+package org.jeecg.common.system.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.springframework.format.annotation.DateTimeFormat;
+
+/**
+ * @Description: 多数据源管理
+ * @Author: jeecg-boot
+ * @Date: 2019-12-25
+ * @Version: V1.0
+ */
+@Data
+@TableName("sys_data_source")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "sys_data_source对象", description = "多数据源管理")
+public class SysDataSource {
+
+    /**
+     * id
+     */
+    @TableId(type = IdType.ID_WORKER_STR)
+    @ApiModelProperty(value = "id")
+    private String id;
+    /**
+     * 数据源编码
+     */
+    @Excel(name = "数据源编码", width = 15)
+    @ApiModelProperty(value = "数据源编码")
+    private String code;
+    /**
+     * 数据源名称
+     */
+    @Excel(name = "数据源名称", width = 15)
+    @ApiModelProperty(value = "数据源名称")
+    private String name;
+    /**
+     * 描述
+     */
+    @Excel(name = "备注", width = 15)
+    @ApiModelProperty(value = "备注")
+    private String remark;
+    /**
+     * 数据库类型
+     */
+    @Excel(name = "数据库类型", width = 15, dicCode = "database_type")
+    @ApiModelProperty(value = "数据库类型")
+    private String dbType;
+    /**
+     * 驱动类
+     */
+    @Excel(name = "驱动类", width = 15)
+    @ApiModelProperty(value = "驱动类")
+    private String dbDriver;
+    /**
+     * 数据源地址
+     */
+    @Excel(name = "数据源地址", width = 15)
+    @ApiModelProperty(value = "数据源地址")
+    private String dbUrl;
+    /**
+     * 数据库名称
+     */
+    @Excel(name = "数据库名称", width = 15)
+    @ApiModelProperty(value = "数据库名称")
+    private String dbName;
+    /**
+     * 用户名
+     */
+    @Excel(name = "用户名", width = 15)
+    @ApiModelProperty(value = "用户名")
+    private String dbUsername;
+    /**
+     * 密码
+     */
+    @Excel(name = "密码", width = 15)
+    @ApiModelProperty(value = "密码")
+    private String dbPassword;
+    /**
+     * 创建人
+     */
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+    /**
+     * 创建日期
+     */
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建日期")
+    private java.util.Date createTime;
+    /**
+     * 更新人
+     */
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+    /**
+     * 更新日期
+     */
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新日期")
+    private java.util.Date updateTime;
+    /**
+     * 所属部门
+     */
+    @Excel(name = "所属部门", width = 15)
+    @ApiModelProperty(value = "所属部门")
+    private String sysOrgCode;
+}

+ 14 - 13
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/entity/SysUser.java

@@ -28,17 +28,14 @@ import java.util.Date;
 @EqualsAndHashCode(callSuper = false)
 @Accessors(chain = true)
 public class SysUser implements Serializable {
-
     private static final long serialVersionUID = 1L;
 
     /**
      * id
      */
-    @TableId(type = IdType.UUID)
+    @TableId(type = IdType.ASSIGN_ID)
     private String id;
 
-    private String departId;
-
     /**
      * 登录账号
      */
@@ -70,17 +67,9 @@ public class SysUser implements Serializable {
     private String avatar;
 
     /**
-     * 生日
-     */
-    @Excel(name = "生日", width = 15, format = "yyyy-MM-dd")
-    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
-    @DateTimeFormat(pattern = "yyyy-MM-dd")
-    private Date birthday;
-
-    /**
      * 性别(1:男 2:女)
      */
-    @Excel(name = "性别", width = 15, dicCode = "sex")
+    @Excel(name = "性别", width = 15,dicCode="sex")
     @Dict(dicCode = "sex")
     private Integer sex;
 
@@ -101,6 +90,9 @@ public class SysUser implements Serializable {
      */
     private String orgCode;
 
+    /**部门名称*/
+    private transient String orgCodeTxt;
+
     /**
      * 状态(1:正常  2:冻结 )
      */
@@ -125,6 +117,7 @@ public class SysUser implements Serializable {
      * 职务,关联职务表
      */
     @Excel(name = "职务", width = 15)
+    @Dict(dictTable ="sys_position",dicText = "name",dicCode = "code")
     private String post;
 
     /**
@@ -170,6 +163,13 @@ public class SysUser implements Serializable {
     @Dict(dictTable ="sys_depart",dicText = "depart_name",dicCode = "id")
     private String departIds;
 
+    /**
+     * 多租户id配置,编辑用户的时候设置
+     */
+    private String relTenantIds;
+
+    /**设备id uniapp推送用*/
+    private String clientId;
 
     /**
      * 第三方登录的唯一标识
@@ -220,4 +220,5 @@ public class SysUser implements Serializable {
      */
     private String leaderName;
 
+    private String departId;
 }

+ 1 - 2
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/query/QueryGenerator.java

@@ -221,7 +221,6 @@ public class QueryGenerator {
 		if(parameterMap!=null&& parameterMap.containsKey(ORDER_TYPE)) {
 			order = parameterMap.get(ORDER_TYPE)[0];
 		}
-        log.info("排序规则>>列:" + column + ",排序方式:" + order);
 		if (oConvertUtils.isNotEmpty(column) && oConvertUtils.isNotEmpty(order)) {
 			//字典字段,去掉字典翻译文本后缀
 			if(column.endsWith(CommonConstant.DICT_TEXT_SUFFIX)) {
@@ -234,7 +233,7 @@ public class QueryGenerator {
 			// 排序规则修改
 			// 将现有排序 _ 前端传递排序条件{....,column: 'column1,column2',order: 'desc'} 翻译成sql "column1,column2 desc"
 			// 修改为 _ 前端传递排序条件{....,column: 'column1,column2',order: 'desc'} 翻译成sql "column1 desc,column2 desc"
-			if (order.toUpperCase().indexOf(ORDER_TYPE_ASC)>=0) {
+			if (order.toUpperCase().contains(ORDER_TYPE_ASC)) {
 				//queryWrapper.orderByAsc(oConvertUtils.camelToUnderline(column));
 				String columnStr = oConvertUtils.camelToUnderline(column);
 				String[] columnArray = columnStr.split(",");

+ 0 - 1
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/util/JeecgDataAutorUtils.java

@@ -99,6 +99,5 @@ public class JeecgDataAutorUtils {
 	 */
 	public static synchronized SysUserCacheInfo loadUserInfo() {
 		return (SysUserCacheInfo) SpringContextUtils.getHttpServletRequest().getAttribute(SYS_USER_INFO);
-				
 	}
 }

+ 1 - 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/vo/DictModel.java

@@ -40,4 +40,5 @@ public class DictModel implements Serializable{
 		return this.text;
 	}
 
+
 }

+ 0 - 1
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/vo/SysUserCacheInfo.java

@@ -63,5 +63,4 @@ public class SysUserCacheInfo {
 	public void setSysMultiOrgCode(List<String> sysMultiOrgCode) {
 		this.sysMultiOrgCode = sysMultiOrgCode;
 	}
-
 }

+ 1 - 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/CommonUtils.java

@@ -167,4 +167,5 @@ public class CommonUtils {
         return DB_TYPE;
 
     }
+
 }

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 1143 - 93
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/DateUtils.java


+ 0 - 70
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/DySmsEnum.java

@@ -1,70 +0,0 @@
-package org.jeecg.common.util;
-
-import org.apache.commons.lang3.StringUtils;
-
-public enum DySmsEnum {
-	
-	LOGIN_TEMPLATE_CODE("SMS_175435174","JEECG","code"),
-	FORGET_PASSWORD_TEMPLATE_CODE("SMS_175435174","JEECG","code"),
-	REGISTER_TEMPLATE_CODE("SMS_175430166","JEECG","code"),
-	/**会议通知*/
-	MEET_NOTICE_TEMPLATE_CODE("SMS_201480469","H5活动之家","username,title,minute,time"),
-	/**我的计划通知*/
-	PLAN_NOTICE_TEMPLATE_CODE("SMS_201470515","H5活动之家","username,title,time");
-
-	/**
-	 * 短信模板编码
-	 */
-	private String templateCode;
-	/**
-	 * 签名
-	 */
-	private String signName;
-	/**
-	 * 短信模板必需的数据名称,多个key以逗号分隔,此处配置作为校验
-	 */
-	private String keys;
-	
-	private DySmsEnum(String templateCode,String signName,String keys) {
-		this.templateCode = templateCode;
-		this.signName = signName;
-		this.keys = keys;
-	}
-	
-	public String getTemplateCode() {
-		return templateCode;
-	}
-	
-	public void setTemplateCode(String templateCode) {
-		this.templateCode = templateCode;
-	}
-	
-	public String getSignName() {
-		return signName;
-	}
-	
-	public void setSignName(String signName) {
-		this.signName = signName;
-	}
-	
-	public String getKeys() {
-		return keys;
-	}
-
-	public void setKeys(String keys) {
-		this.keys = keys;
-	}
-
-	public static DySmsEnum toEnum(String templateCode) {
-		if(StringUtils.isEmpty(templateCode)){
-			return null;
-		}
-		for(DySmsEnum item : DySmsEnum.values()) {
-			if(item.getTemplateCode().equals(templateCode)) {
-				return item;
-			}
-		}
-		return null;
-	}
-}
-

+ 16 - 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/MD5Util.java

@@ -79,4 +79,20 @@ public class MD5Util {
 	public static String getFileMd5(String path) throws Exception {
 		return DigestUtils.md5DigestAsHex(new FileInputStream(path));
 	}
+
+	public static String md5Encode(String origin, String charsetname) {
+		String resultString = null;
+		try {
+			resultString = new String(origin);
+			MessageDigest md = MessageDigest.getInstance("MD5");
+			if (charsetname == null || "".equals(charsetname)) {
+				resultString = byteArrayToHexString(md.digest(resultString.getBytes()));
+			} else {
+				resultString = byteArrayToHexString(md.digest(resultString.getBytes(charsetname)));
+			}
+		} catch (Exception exception) {
+		}
+		return resultString;
+	}
+
 }

+ 1 - 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/PasswordUtil.java

@@ -177,4 +177,5 @@ public class PasswordUtil {
 	}
 
 
+
 }

+ 0 - 5
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/YouBianCodeUtil.java

@@ -165,9 +165,4 @@ public class YouBianCodeUtil {
 		}
 		
 	}
-//	public static void main(String[] args) {
-//		// org.jeecgframework.core.util.LogUtil.info(getNextZiMu('C'));
-//		// org.jeecgframework.core.util.LogUtil.info(getNextNum(8));
-//	    // org.jeecgframework.core.util.LogUtil.info(cutYouBianCode("C99A01B01")[2]);
-//	}
 }

+ 92 - 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/db/DataSourceCachePool.java

@@ -0,0 +1,92 @@
+package org.jeecg.common.util.db;
+
+import com.alibaba.druid.pool.DruidDataSource;
+import org.jeecg.common.constant.CacheConstant;
+import org.jeecg.common.system.vo.DynamicDataSourceModel;
+import org.jeecg.common.util.SpringContextUtils;
+import org.jeecg.modules.base.service.BaseCommonService;
+import org.springframework.data.redis.core.RedisTemplate;
+
+import java.util.HashMap;
+import java.util.Map;
+
+
+/**
+ * 数据源缓存池
+ */
+public class DataSourceCachePool {
+    /** 数据源连接池缓存【本地 class缓存 - 不支持分布式】 */
+    private static Map<String, DruidDataSource> dbSources = new HashMap<>();
+    private static RedisTemplate<String, Object> redisTemplate;
+
+    private static RedisTemplate<String, Object> getRedisTemplate() {
+        if (redisTemplate == null) {
+            redisTemplate = (RedisTemplate<String, Object>) SpringContextUtils.getBean("redisTemplate");
+        }
+        return redisTemplate;
+    }
+
+    /**
+     * 获取多数据源缓存
+     *
+     * @param dbKey
+     * @return
+     */
+    public static DynamicDataSourceModel getCacheDynamicDataSourceModel(String dbKey) {
+        String redisCacheKey = CacheConstant.SYS_DYNAMICDB_CACHE + dbKey;
+        if (getRedisTemplate().hasKey(redisCacheKey)) {
+            return (DynamicDataSourceModel) getRedisTemplate().opsForValue().get(redisCacheKey);
+        }
+        BaseCommonService baseCommonService = SpringContextUtils.getBean(BaseCommonService.class);
+        DynamicDataSourceModel dbSource = baseCommonService.getDynamicDbSourceByCode(dbKey);
+        if (dbSource != null) {
+            getRedisTemplate().opsForValue().set(redisCacheKey, dbSource);
+        }
+        return dbSource;
+    }
+
+    public static DruidDataSource getCacheBasicDataSource(String dbKey) {
+        return dbSources.get(dbKey);
+    }
+
+    /**
+     * put 数据源缓存
+     *
+     * @param dbKey
+     * @param db
+     */
+    public static void putCacheBasicDataSource(String dbKey, DruidDataSource db) {
+        dbSources.put(dbKey, db);
+    }
+
+    /**
+     * 清空数据源缓存
+     */
+    public static void cleanAllCache() {
+        //关闭数据源连接
+        for(Map.Entry<String, DruidDataSource> entry : dbSources.entrySet()){
+            String dbkey = entry.getKey();
+            DruidDataSource druidDataSource = entry.getValue();
+            if(druidDataSource!=null && druidDataSource.isEnable()){
+                druidDataSource.close();
+            }
+            //清空redis缓存
+            getRedisTemplate().delete(CacheConstant.SYS_DYNAMICDB_CACHE + dbkey);
+        }
+        //清空缓存
+        dbSources.clear();
+    }
+
+    public static void removeCache(String dbKey) {
+        //关闭数据源连接
+        DruidDataSource druidDataSource = dbSources.get(dbKey);
+        if(druidDataSource!=null && druidDataSource.isEnable()){
+            druidDataSource.close();
+        }
+        //清空redis缓存
+        getRedisTemplate().delete(CacheConstant.SYS_DYNAMICDB_CACHE + dbKey);
+        //清空缓存
+        dbSources.remove(dbKey);
+    }
+
+}

+ 31 - 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/db/DbValidationQueryEnum.java

@@ -0,0 +1,31 @@
+package org.jeecg.common.util.db;
+
+public enum DbValidationQueryEnum {
+    ORACLE("oracle", "SELECT 1 FROM DUAL"),
+    MYSQL("mysql", "select 1"),
+    SQLSERVER("sqlserver", "SELECT 1 FROM DUAL"),;
+
+    DbValidationQueryEnum(String dbType, String validationQuerySql) {
+        this.dbType = dbType;
+        this.validationQuerySql = validationQuerySql;
+    }
+
+    private String dbType;
+    private String validationQuerySql;
+
+    public String getDbType() {
+        return dbType;
+    }
+
+    public void setDbType(String dbType) {
+        this.dbType = dbType;
+    }
+
+    public String getValidationQuerySql() {
+        return validationQuerySql;
+    }
+
+    public void setValidationQuerySql(String validationQuerySql) {
+        this.validationQuerySql = validationQuerySql;
+    }
+}

+ 299 - 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/db/DynamicDBUtil.java

@@ -0,0 +1,299 @@
+package org.jeecg.common.util.db;
+
+import com.alibaba.druid.pool.DruidDataSource;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang.ArrayUtils;
+import org.jeecg.common.exception.JeecgBootException;
+import org.jeecg.common.system.vo.DynamicDataSourceModel;
+import org.jeecg.common.util.ReflectHelper;
+import org.jeecg.common.util.dynamic.db.FreemarkerParseFactory;
+import org.jeecg.common.util.oConvertUtils;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
+
+import java.sql.SQLException;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Spring JDBC 实时数据库访问
+ *
+ * @author chenguobin
+ * @version 1.0
+ * @date 2014-09-05
+ */
+@Slf4j
+public class DynamicDBUtil {
+
+    /**
+     * 获取数据源【最底层方法,不要随便调用】
+     *
+     * @param dbSource
+     * @return
+     */
+    private static DruidDataSource getJdbcDataSource(final DynamicDataSourceModel dbSource) {
+        DruidDataSource dataSource = new DruidDataSource();
+
+        String driverClassName = dbSource.getDbDriver();
+        String url = dbSource.getDbUrl();
+        String dbUser = dbSource.getDbUsername();
+        String dbPassword = dbSource.getDbPassword();
+        dataSource.setDriverClassName(driverClassName);
+        dataSource.setUrl(url);
+        //dataSource.setValidationQuery("SELECT 1 FROM DUAL");
+        dataSource.setTestWhileIdle(true);
+        dataSource.setTestOnBorrow(false);
+        dataSource.setTestOnReturn(false);
+        dataSource.setBreakAfterAcquireFailure(true);
+        dataSource.setConnectionErrorRetryAttempts(0);
+        dataSource.setUsername(dbUser);
+        dataSource.setMaxWait(60000);
+        dataSource.setPassword(dbPassword);
+
+        log.info("******************************************");
+        log.info("*                                        *");
+        log.info("*====【"+dbSource.getCode()+"】=====Druid连接池已启用 ====*");
+        log.info("*                                        *");
+        log.info("******************************************");
+        return dataSource;
+    }
+
+    /**
+     * 通过 dbKey ,获取数据源
+     *
+     * @param dbKey
+     * @return
+     */
+    public static DruidDataSource getDbSourceByDbKey(final String dbKey) {
+        //获取多数据源配置
+        DynamicDataSourceModel dbSource = DataSourceCachePool.getCacheDynamicDataSourceModel(dbKey);
+        //先判断缓存中是否存在数据库链接
+        DruidDataSource cacheDbSource = DataSourceCachePool.getCacheBasicDataSource(dbKey);
+        if (cacheDbSource != null && !cacheDbSource.isClosed()) {
+            log.debug("--------getDbSourceBydbKey------------------从缓存中获取DB连接-------------------");
+            return cacheDbSource;
+        } else {
+            DruidDataSource dataSource = getJdbcDataSource(dbSource);
+            if(dataSource!=null && dataSource.isEnable()){
+                DataSourceCachePool.putCacheBasicDataSource(dbKey, dataSource);
+            }else{
+                throw new JeecgBootException("动态数据源连接失败,dbKey:"+dbKey);
+            }
+            log.info("--------getDbSourceBydbKey------------------创建DB数据库连接-------------------");
+            return dataSource;
+        }
+    }
+
+    /**
+     * 关闭数据库连接池
+     *
+     * @param dbKey
+     * @return
+     */
+    public static void closeDbKey(final String dbKey) {
+        DruidDataSource dataSource = getDbSourceByDbKey(dbKey);
+        try {
+            if (dataSource != null && !dataSource.isClosed()) {
+                dataSource.getConnection().commit();
+                dataSource.getConnection().close();
+                dataSource.close();
+            }
+        } catch (SQLException e) {
+            e.printStackTrace();
+        }
+    }
+
+
+    private static JdbcTemplate getJdbcTemplate(String dbKey) {
+        DruidDataSource dataSource = getDbSourceByDbKey(dbKey);
+        return new JdbcTemplate(dataSource);
+    }
+
+    /**
+     * Executes the SQL statement in this <code>PreparedStatement</code> object,
+     * which must be an SQL Data Manipulation Language (DML) statement, such as <code>INSERT</code>, <code>UPDATE</code> or
+     * <code>DELETE</code>; or an SQL statement that returns nothing,
+     * such as a DDL statement.
+     */
+    public static int update(final String dbKey, String sql, Object... param) {
+        int effectCount;
+        JdbcTemplate jdbcTemplate = getJdbcTemplate(dbKey);
+        if (ArrayUtils.isEmpty(param)) {
+            effectCount = jdbcTemplate.update(sql);
+        } else {
+            effectCount = jdbcTemplate.update(sql, param);
+        }
+        return effectCount;
+    }
+
+    /**
+     * 支持miniDao语法操作的Update
+     *
+     * @param dbKey 数据源标识
+     * @param sql   执行sql语句,sql支持minidao语法逻辑
+     * @param data  sql语法中需要判断的数据及sql拼接注入中需要的数据
+     * @return
+     */
+    public static int updateByHash(final String dbKey, String sql, HashMap<String, Object> data) {
+        int effectCount;
+        JdbcTemplate jdbcTemplate = getJdbcTemplate(dbKey);
+        //根据模板获取sql
+        sql = FreemarkerParseFactory.parseTemplateContent(sql, data);
+        NamedParameterJdbcTemplate namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(jdbcTemplate.getDataSource());
+        effectCount = namedParameterJdbcTemplate.update(sql, data);
+        return effectCount;
+    }
+
+    public static Object findOne(final String dbKey, String sql, Object... param) {
+        List<Map<String, Object>> list;
+        list = findList(dbKey, sql, param);
+        if (oConvertUtils.listIsEmpty(list)) {
+            log.error("Except one, but not find actually");
+        }
+        if (list.size() > 1) {
+            log.error("Except one, but more than one actually");
+        }
+        return list.get(0);
+    }
+
+    /**
+     * 支持miniDao语法操作的查询 返回HashMap
+     *
+     * @param dbKey 数据源标识
+     * @param sql   执行sql语句,sql支持minidao语法逻辑
+     * @param data  sql语法中需要判断的数据及sql拼接注入中需要的数据
+     * @return
+     */
+    public static Object findOneByHash(final String dbKey, String sql, HashMap<String, Object> data) {
+        List<Map<String, Object>> list;
+        list = findListByHash(dbKey, sql, data);
+        if (oConvertUtils.listIsEmpty(list)) {
+            log.error("Except one, but not find actually");
+        }
+        if (list.size() > 1) {
+            log.error("Except one, but more than one actually");
+        }
+        return list.get(0);
+    }
+
+    /**
+     * 直接sql查询 根据clazz返回单个实例
+     *
+     * @param dbKey 数据源标识
+     * @param sql   执行sql语句
+     * @param clazz 返回实例的Class
+     * @param param
+     * @return
+     */
+    @SuppressWarnings("unchecked")
+    public static <T> Object findOne(final String dbKey, String sql, Class<T> clazz, Object... param) {
+        Map<String, Object> map = (Map<String, Object>) findOne(dbKey, sql, param);
+        return ReflectHelper.setAll(clazz, map);
+    }
+
+    /**
+     * 支持miniDao语法操作的查询 返回单个实例
+     *
+     * @param dbKey 数据源标识
+     * @param sql   执行sql语句,sql支持minidao语法逻辑
+     * @param clazz 返回实例的Class
+     * @param data  sql语法中需要判断的数据及sql拼接注入中需要的数据
+     * @return
+     */
+    @SuppressWarnings("unchecked")
+    public static <T> Object findOneByHash(final String dbKey, String sql, Class<T> clazz, HashMap<String, Object> data) {
+        Map<String, Object> map = (Map<String, Object>) findOneByHash(dbKey, sql, data);
+        return ReflectHelper.setAll(clazz, map);
+    }
+
+    public static List<Map<String, Object>> findList(final String dbKey, String sql, Object... param) {
+        List<Map<String, Object>> list;
+        JdbcTemplate jdbcTemplate = getJdbcTemplate(dbKey);
+
+        if (ArrayUtils.isEmpty(param)) {
+            list = jdbcTemplate.queryForList(sql);
+        } else {
+            list = jdbcTemplate.queryForList(sql, param);
+        }
+        return list;
+    }
+
+    /**
+     * 支持miniDao语法操作的查询
+     *
+     * @param dbKey 数据源标识
+     * @param sql   执行sql语句,sql支持minidao语法逻辑
+     * @param data  sql语法中需要判断的数据及sql拼接注入中需要的数据
+     * @return
+     */
+    public static List<Map<String, Object>> findListByHash(final String dbKey, String sql, HashMap<String, Object> data) {
+        List<Map<String, Object>> list;
+        JdbcTemplate jdbcTemplate = getJdbcTemplate(dbKey);
+        //根据模板获取sql
+        sql = FreemarkerParseFactory.parseTemplateContent(sql, data);
+        NamedParameterJdbcTemplate namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(jdbcTemplate.getDataSource());
+        list = namedParameterJdbcTemplate.queryForList(sql, data);
+        return list;
+    }
+
+    //此方法只能返回单列,不能返回实体类
+    public static <T> List<T> findList(final String dbKey, String sql, Class<T> clazz, Object... param) {
+        List<T> list;
+        JdbcTemplate jdbcTemplate = getJdbcTemplate(dbKey);
+
+        if (ArrayUtils.isEmpty(param)) {
+            list = jdbcTemplate.queryForList(sql, clazz);
+        } else {
+            list = jdbcTemplate.queryForList(sql, clazz, param);
+        }
+        return list;
+    }
+
+    /**
+     * 支持miniDao语法操作的查询 返回单列数据list
+     *
+     * @param dbKey 数据源标识
+     * @param sql   执行sql语句,sql支持minidao语法逻辑
+     * @param clazz 类型Long、String等
+     * @param data  sql语法中需要判断的数据及sql拼接注入中需要的数据
+     * @return
+     */
+    public static <T> List<T> findListByHash(final String dbKey, String sql, Class<T> clazz, HashMap<String, Object> data) {
+        List<T> list;
+        JdbcTemplate jdbcTemplate = getJdbcTemplate(dbKey);
+        //根据模板获取sql
+        sql = FreemarkerParseFactory.parseTemplateContent(sql, data);
+        NamedParameterJdbcTemplate namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(jdbcTemplate.getDataSource());
+        list = namedParameterJdbcTemplate.queryForList(sql, data, clazz);
+        return list;
+    }
+
+    /**
+     * 直接sql查询 返回实体类列表
+     *
+     * @param dbKey 数据源标识
+     * @param sql   执行sql语句,sql支持 minidao 语法逻辑
+     * @param clazz 返回实体类列表的class
+     * @param param sql拼接注入中需要的数据
+     * @return
+     */
+    public static <T> List<T> findListEntities(final String dbKey, String sql, Class<T> clazz, Object... param) {
+        List<Map<String, Object>> queryList = findList(dbKey, sql, param);
+        return ReflectHelper.transList2Entrys(queryList, clazz);
+    }
+
+    /**
+     * 支持miniDao语法操作的查询 返回实体类列表
+     *
+     * @param dbKey 数据源标识
+     * @param sql   执行sql语句,sql支持minidao语法逻辑
+     * @param clazz 返回实体类列表的class
+     * @param data  sql语法中需要判断的数据及sql拼接注入中需要的数据
+     * @return
+     */
+    public static <T> List<T> findListEntitiesByHash(final String dbKey, String sql, Class<T> clazz, HashMap<String, Object> data) {
+        List<Map<String, Object>> queryList = findListByHash(dbKey, sql, data);
+        return ReflectHelper.transList2Entrys(queryList, clazz);
+    }
+}

+ 167 - 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/db/FreemarkerParseFactory.java

@@ -0,0 +1,167 @@
+package org.jeecg.common.util.db;
+
+import freemarker.cache.StringTemplateLoader;
+import freemarker.core.ParseException;
+import freemarker.template.Configuration;
+import freemarker.template.Template;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang.StringUtils;
+import org.jeecgframework.codegenerate.generate.util.SimpleFormat;
+
+import java.io.StringWriter;
+import java.util.Map;
+import java.util.regex.Pattern;
+
+/**
+ * @author 赵俊夫
+ * @version V1.0
+ * @Title:FreemarkerHelper
+ * @description:Freemarker引擎协助类
+ * @date Jul 5, 2013 2:58:29 PM
+ */
+@Slf4j
+public class FreemarkerParseFactory {
+
+    private static final String ENCODE = "utf-8";
+    /**
+     * 参数格式化工具类
+     */
+    private static final String MINI_DAO_FORMAT = "DaoFormat";
+
+    /**
+     * 文件缓存
+     */
+    private static final Configuration _tplConfig = new Configuration();
+    /**
+     * SQL 缓存
+     */
+    private static final Configuration _sqlConfig = new Configuration();
+
+    private static StringTemplateLoader stringTemplateLoader = new StringTemplateLoader();
+
+    // 使用内嵌的(?ms)打开单行和多行模式
+    private final static Pattern p = Pattern
+            .compile("(?ms)/\\*.*?\\*/|^\\s*//.*?$");
+
+    static {
+        _tplConfig.setClassForTemplateLoading(
+                new FreemarkerParseFactory().getClass(), "/");
+        _tplConfig.setNumberFormat("0.#####################");
+        _sqlConfig.setTemplateLoader(stringTemplateLoader);
+        _sqlConfig.setNumberFormat("0.#####################");
+        //classic_compatible设置,解决报空指针错误
+        _sqlConfig.setClassicCompatible(true);
+    }
+
+    /**
+     * 判断模板是否存在
+     *
+     * @throws Exception
+     */
+    public static boolean isExistTemplate(String tplName) throws Exception {
+        try {
+            Template mytpl = _tplConfig.getTemplate(tplName, "UTF-8");
+            if (mytpl == null) {
+                return false;
+            }
+        } catch (Exception e) {
+            //update-begin--Author:scott  Date:20180320 for:解决问题 - 错误提示sql文件不存在,实际问题是sql freemarker用法错误-----
+            if (e instanceof ParseException) {
+                log.error(e.getMessage(), e.fillInStackTrace());
+                throw new Exception(e);
+            }
+            log.debug("----isExistTemplate----" + e.toString());
+            //update-end--Author:scott  Date:20180320 for:解决问题 - 错误提示sql文件不存在,实际问题是sql freemarker用法错误------
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * 解析ftl模板
+     *
+     * @param tplName 模板名
+     * @param paras   参数
+     * @return
+     */
+    public static String parseTemplate(String tplName, Map<String, Object> paras) {
+        try {
+            log.debug(" minidao sql templdate : " + tplName);
+            StringWriter swriter = new StringWriter();
+            Template mytpl = _tplConfig.getTemplate(tplName, ENCODE);
+            if (paras.containsKey(MINI_DAO_FORMAT)) {
+                throw new RuntimeException("DaoFormat 是 minidao 保留关键字,不允许使用 ,请更改参数定义!");
+            }
+            paras.put(MINI_DAO_FORMAT, new SimpleFormat());
+            mytpl.process(paras, swriter);
+            String sql = getSqlText(swriter.toString());
+            paras.remove(MINI_DAO_FORMAT);
+            return sql;
+        } catch (Exception e) {
+            log.error(e.getMessage(), e.fillInStackTrace());
+            log.error("发送一次的模板key:{ " + tplName + " }");
+            throw new RuntimeException("解析SQL模板异常");
+        }
+    }
+
+    /**
+     * 解析ftl
+     *
+     * @param tplContent 模板内容
+     * @param paras      参数
+     * @return String 模板解析后内容
+     */
+    public static String parseTemplateContent(String tplContent,
+                                              Map<String, Object> paras) {
+        try {
+            StringWriter swriter = new StringWriter();
+            if (stringTemplateLoader.findTemplateSource("sql_" + tplContent.hashCode()) == null) {
+                stringTemplateLoader.putTemplate("sql_" + tplContent.hashCode(), tplContent);
+            }
+            Template mytpl = _sqlConfig.getTemplate("sql_" + tplContent.hashCode(), ENCODE);
+            if (paras.containsKey(MINI_DAO_FORMAT)) {
+                throw new RuntimeException("DaoFormat 是 minidao 保留关键字,不允许使用 ,请更改参数定义!");
+            }
+            paras.put(MINI_DAO_FORMAT, new SimpleFormat());
+            mytpl.process(paras, swriter);
+            String sql = getSqlText(swriter.toString());
+            paras.remove(MINI_DAO_FORMAT);
+            return sql;
+        } catch (Exception e) {
+            log.error(e.getMessage(), e.fillInStackTrace());
+            log.error("发送一次的模板key:{ " + tplContent + " }");
+            throw new RuntimeException("解析SQL模板异常");
+        }
+    }
+
+    /**
+     * 除去无效字段,去掉注释 不然批量处理可能报错 去除无效的等于
+     */
+    private static String getSqlText(String sql) {
+        // 将注释替换成""
+        sql = p.matcher(sql).replaceAll("");
+        sql = sql.replaceAll("\\n", " ").replaceAll("\\t", " ")
+                .replaceAll("\\s{1,}", " ").trim();
+        // 去掉 最后是 where这样的问题
+        if (sql.endsWith("where") || sql.endsWith("where ")) {
+            sql = sql.substring(0, sql.lastIndexOf("where"));
+        }
+        // 去掉where and 这样的问题
+        int index = 0;
+        while ((index = StringUtils.indexOfIgnoreCase(sql, "where and", index)) != -1) {
+            sql = sql.substring(0, index + 5)
+                    + sql.substring(index + 9, sql.length());
+        }
+        // 去掉 , where 这样的问题
+        index = 0;
+        while ((index = StringUtils.indexOfIgnoreCase(sql, ", where", index)) != -1) {
+            sql = sql.substring(0, index)
+                    + sql.substring(index + 1, sql.length());
+        }
+        // 去掉 最后是 ,这样的问题
+        if (sql.endsWith(",") || sql.endsWith(", ")) {
+            sql = sql.substring(0, sql.lastIndexOf(","));
+        }
+        return sql;
+    }
+}

+ 5 - 5
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/dynamic/db/DataSourceCachePool.java

@@ -1,12 +1,12 @@
 package org.jeecg.common.util.dynamic.db;
 
 import com.alibaba.druid.pool.DruidDataSource;
-import org.jeecg.common.api.CommonAPI;
 import org.jeecg.common.constant.CacheConstant;
 import org.jeecg.common.system.vo.DynamicDataSourceModel;
-import org.jeecg.common.util.RedisUtil;
 import org.jeecg.common.util.SpringContextUtils;
+import org.jeecg.modules.base.service.BaseCommonService;
 import org.springframework.data.redis.core.RedisTemplate;
+
 import java.util.HashMap;
 import java.util.Map;
 
@@ -19,7 +19,7 @@ public class DataSourceCachePool {
     private static Map<String, DruidDataSource> dbSources = new HashMap<>();
     private static RedisTemplate<String, Object> redisTemplate;
 
-    private static RedisTemplate<String, Object> getRedisTemplate() {
+    public static RedisTemplate<String, Object> getRedisTemplate() {
         if (redisTemplate == null) {
             redisTemplate = (RedisTemplate<String, Object>) SpringContextUtils.getBean("redisTemplate");
         }
@@ -37,8 +37,8 @@ public class DataSourceCachePool {
         if (getRedisTemplate().hasKey(redisCacheKey)) {
             return (DynamicDataSourceModel) getRedisTemplate().opsForValue().get(redisCacheKey);
         }
-        CommonAPI commonAPI = SpringContextUtils.getBean(CommonAPI.class);
-        DynamicDataSourceModel dbSource = commonAPI.getDynamicDbSourceByCode(dbKey);
+        BaseCommonService baseCommonService = SpringContextUtils.getBean(BaseCommonService.class);
+        DynamicDataSourceModel dbSource = baseCommonService.getDynamicDbSourceByCode(dbKey);
         if (dbSource != null) {
             getRedisTemplate().opsForValue().set(redisCacheKey, dbSource);
         }

+ 31 - 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/dynamic/db/DbValidationQueryEnum.java

@@ -0,0 +1,31 @@
+package org.jeecg.common.util.dynamic.db;
+
+public enum DbValidationQueryEnum {
+    ORACLE("oracle", "SELECT 1 FROM DUAL"),
+    MYSQL("mysql", "select 1"),
+    SQLSERVER("sqlserver", "SELECT 1 FROM DUAL"),;
+
+    DbValidationQueryEnum(String dbType, String validationQuerySql) {
+        this.dbType = dbType;
+        this.validationQuerySql = validationQuerySql;
+    }
+
+    private String dbType;
+    private String validationQuerySql;
+
+    public String getDbType() {
+        return dbType;
+    }
+
+    public void setDbType(String dbType) {
+        this.dbType = dbType;
+    }
+
+    public String getValidationQuerySql() {
+        return validationQuerySql;
+    }
+
+    public void setValidationQuerySql(String validationQuerySql) {
+        this.validationQuerySql = validationQuerySql;
+    }
+}

+ 1 - 3
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/dynamic/db/DynamicDBUtil.java

@@ -2,8 +2,7 @@ package org.jeecg.common.util.dynamic.db;
 
 import com.alibaba.druid.pool.DruidDataSource;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.ArrayUtils;
-import org.jeecg.common.exception.JeecgBootException;
+import org.apache.commons.lang.ArrayUtils;
 import org.jeecg.common.exception.JeecgBootException;
 import org.jeecg.common.system.vo.DynamicDataSourceModel;
 import org.jeecg.common.util.ReflectHelper;
@@ -11,7 +10,6 @@ import org.jeecg.common.util.oConvertUtils;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
 
-import javax.sql.DataSource;
 import java.sql.SQLException;
 import java.util.HashMap;
 import java.util.List;

+ 14 - 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/dynamic/db/FreemarkerParseFactory.java

@@ -168,4 +168,18 @@ public class FreemarkerParseFactory {
         }
         return sql;
     }
+
+
+    static {
+        _tplConfig.setClassForTemplateLoading(
+                new FreemarkerParseFactory().getClass(), "/");
+        _tplConfig.setNumberFormat("0.#####################");
+        _sqlConfig.setTemplateLoader(stringTemplateLoader);
+        _sqlConfig.setNumberFormat("0.#####################");
+        //classic_compatible设置,解决报空指针错误
+        _sqlConfig.setClassicCompatible(true);
+    }
+
+
+
 }

+ 2 - 3
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/dynamic/db/SqlUtils.java

@@ -1,6 +1,6 @@
 package org.jeecg.common.util.dynamic.db;
 
-import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang.StringUtils;
 import org.jeecg.common.constant.DataBaseConstant;
 import org.jeecg.common.system.vo.DynamicDataSourceModel;
 
@@ -13,7 +13,6 @@ import java.util.Map;
 public class SqlUtils {
 
     public static final String DATABSE_TYPE_MYSQL = "mysql";
-    public static final String DATABSE_TYPE_MARIADB = "mariadb";
     public static final String DATABSE_TYPE_POSTGRE = "postgresql";
     public static final String DATABSE_TYPE_ORACLE = "oracle";
     public static final String DATABSE_TYPE_SQLSERVER = "sqlserver";
@@ -48,7 +47,7 @@ public class SqlUtils {
      */
 
     public static boolean dbTypeIsMySQL(String dbType) {
-        return dbTypeIf(dbType, DATABSE_TYPE_MYSQL, DataBaseConstant.DB_TYPE_MYSQL_NUM) || dbTypeIf(dbType, DATABSE_TYPE_MARIADB, DataBaseConstant.DB_TYPE_MARIADB_NUM);
+        return dbTypeIf(dbType, DATABSE_TYPE_MYSQL, DataBaseConstant.DB_TYPE_MYSQL_NUM);
     }
 
     public static boolean dbTypeIsOracle(String dbType) {

+ 23 - 24
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/encryption/AesEncryptUtil.java

@@ -5,6 +5,7 @@ import org.apache.shiro.codec.Base64;
 import javax.crypto.Cipher;
 import javax.crypto.spec.IvParameterSpec;
 import javax.crypto.spec.SecretKeySpec;
+import java.io.UnsupportedEncodingException;
 
 /**
  * AES 加密
@@ -23,7 +24,7 @@ public class AesEncryptUtil {
      * @return 加密的结果
      * @throws Exception
      */
-    public static String encrypt(String data, String key, String iv) throws Exception {
+    public static String encrypt(String data, String key, String iv) {
         try {
 
             Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");//"算法/模式/补码方式"NoPadding PkcsPadding
@@ -60,7 +61,7 @@ public class AesEncryptUtil {
      * @return 解密的结果
      * @throws Exception
      */
-    public static String desEncrypt(String data, String key, String iv) throws Exception {
+    public static String desEncrypt(String data, String key, String iv) {
         try {
 			byte[] encrypted1 = Base64.decode(data);
 
@@ -79,43 +80,41 @@ public class AesEncryptUtil {
         }
     }
 
+    private AesEncryptUtil() {
+    }
+
     /**
      * 使用默认的key和iv加密
+     *
      * @param data
      * @return
      * @throws Exception
      */
-    public static String encrypt(String data) throws Exception {
-        return encrypt(data, KEY, IV);
+    public static String encrypt(String data){
+        return encrypt(data, EncryptedString.key, EncryptedString.iv);
     }
 
     /**
      * 使用默认的key和iv解密
+     *
      * @param data
      * @return
-     * @throws Exception
      */
-    public static String desEncrypt(String data) throws Exception {
-        return desEncrypt(data, KEY, IV);
+    public static String desEncrypt(String data){
+        return desEncrypt(data, EncryptedString.key, EncryptedString.iv);
     }
 
 
+    public static String getUrlDecoderString(String str) {
+        String result = "";
+        if (null == str) {
+            return "";
+        }
+        try {
+            result = java.net.URLDecoder.decode(str, "UTF-8");
+        } catch (UnsupportedEncodingException e) {
+        }
+        return result;
 
-//    /**
-//     * 测试
-//     */
-//    public static void main(String args[]) throws Exception {
-//        String test1 = "sa";
-//        String test =new String(test1.getBytes(),"UTF-8");
-//        String data = null;
-//        String key =  KEY;
-//        String iv = IV;
-//        // /g2wzfqvMOeazgtsUVbq1kmJawROa6mcRAzwG1/GeJ4=
-//        data = encrypt(test, key, iv);
-//        System.out.println("数据:"+test);
-//        System.out.println("加密:"+data);
-//        String jiemi =desEncrypt(data, key, iv).trim();
-//        System.out.println("解密:"+jiemi);
-//    }
-
+    }
 }

+ 28 - 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/jsonschema/BaseColumn.java

@@ -0,0 +1,28 @@
+package org.jeecg.common.util.jsonschema;
+
+import lombok.Data;
+
+/**
+ * 列 配置基本信息
+ */
+@Data
+public class BaseColumn {
+
+    /**
+     * 列配置 描述 -对应数据库字段描述
+     */
+    private String title;
+
+    /**
+     * 列配置 名称 -对应数据库字段名
+     */
+    private String field;
+
+    public BaseColumn(){}
+
+    public BaseColumn(String title,String field){
+        this.title = title;
+        this.field = field;
+    }
+
+}

+ 170 - 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/jsonschema/CommonProperty.java

@@ -0,0 +1,170 @@
+package org.jeecg.common.util.jsonschema;
+
+import com.alibaba.fastjson.JSONObject;
+import org.apache.commons.lang.StringUtils;
+import org.jeecg.common.system.vo.DictModel;
+
+import java.io.Serializable;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 验证通用属性
+ */
+public abstract class CommonProperty implements Serializable{
+
+	private static final long serialVersionUID = -426159949502493187L;
+
+
+	protected String key;
+
+
+	/**
+	 * <p>此关键字的值必须是字符串或数组。如果它是一个数组,那么数组的元素必须是字符串,并且必须是唯一的。
+	 * <p>字符串值必须是六种基本类型之一(“null”,“boolean”,“object”,“array”,“number”或“string”),或“integer”,它匹配任何数字,零分数部分。
+	 * <p>当且仅当实例位于为此关键字列出的任何集合中时,实例才会验证。
+	 *
+	 */
+	protected String type;
+
+	/**
+	 * 对应JsonSchema的enum
+	 * <p>该关键字的值必须是一个数组。这个数组应该至少有一个元素。数组中的元素应该是唯一的。如果实例的值等于此关键字的数组值中的某个元素,则实例将对此关键字成功验证。
+	 * 数组中的元素可以是任何值,包括null
+	 *
+	 *  {
+	 *   "type": "string",
+	 *   "enum": ["1", "2", "3"] 需要的话可以通过这个include转一下
+	 *	}
+	 */
+	protected List<DictModel> include;
+
+	/**
+	 * 对应JsonSchema的const
+	 * <p>此关键字的值可以是任何类型,包括null。
+	 *	如果实例的值等于关键字的值,则实例将针对此关键字成功验证。
+	 */
+	protected Object constant;
+
+	//三个自定义 属性
+	protected String view;// 展示类型
+	protected String title;//数据库字段备注
+	protected Integer order;//字段显示排序
+
+	protected boolean disabled;//是否禁用
+
+	protected String defVal; // 字段默认值
+
+	public String getDefVal() {
+		return defVal;
+	}
+
+	public void setDefVal(String defVal) {
+		this.defVal = defVal;
+	}
+
+	public boolean isDisabled() {
+		return disabled;
+	}
+
+	public void setDisabled(boolean disabled) {
+		this.disabled = disabled;
+	}
+
+	public String getView() {
+		return view;
+	}
+
+	public void setView(String view) {
+		this.view = view;
+	}
+
+	public String getKey() {
+		return key;
+	}
+
+	public void setKey(String key) {
+		this.key = key;
+	}
+
+	public String getType() {
+		return type;
+	}
+
+	public void setType(String type) {
+		this.type = type;
+	}
+
+	public List<DictModel> getInclude() {
+		return include;
+	}
+
+	public void setInclude(List<DictModel> include) {
+		this.include = include;
+	}
+
+	public Object getConstant() {
+		return constant;
+	}
+
+	public void setConstant(Object constant) {
+		this.constant = constant;
+	}
+
+	public String getTitle() {
+		return title;
+	}
+
+	public void setTitle(String title) {
+		this.title = title;
+	}
+
+	public Integer getOrder() {
+		return order;
+	}
+
+	public void setOrder(Integer order) {
+		this.order = order;
+	}
+
+	/**
+	 * 返回一个map有两个key
+	 * <P>key ---> Property JSON的key
+	 * <P>prop --> JSON object
+	 * @return
+	 */
+	public abstract Map<String,Object> getPropertyJson();
+
+	public JSONObject getCommonJson() {
+		JSONObject json = new JSONObject();
+		json.put("type", type);
+		if(include!=null && include.size()>0) {
+			json.put("enum", include);
+		}
+		if(constant!=null) {
+			json.put("const", constant);
+		}
+		if(title!=null) {
+			json.put("title", title);
+		}
+		if(order!=null) {
+			json.put("order", order);
+		}
+		if(view==null) {
+			json.put("view", "input");
+		}else {
+			json.put("view", view);
+		}
+		if(disabled) {
+			String str = "{\"widgetattrs\":{\"disabled\":true}}";
+			JSONObject ui = JSONObject.parseObject(str);
+			json.put("ui", ui);
+		}
+		if (StringUtils.isNotBlank(defVal)) {
+			json.put("defVal", defVal);
+		}
+		return json;
+	}
+
+
+}

+ 87 - 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/jsonschema/JsonSchemaDescrip.java

@@ -0,0 +1,87 @@
+package org.jeecg.common.util.jsonschema;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * JsonSchema 模式类
+ * < http://json-schema.org/draft-07/schema# >
+ */
+public class JsonSchemaDescrip implements Serializable{
+	
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 7682073117441544718L;
+	
+	
+	private String $schema = "http://json-schema.org/draft-07/schema#";
+	
+	/**
+	 * 用它给我们的模式提供了标题。
+	 */
+	private String title;
+	
+	/**
+	 * 关于模式的描述。
+	 */
+	private String description;
+	
+	/**
+	 *type 关键字在我们的 JSON 数据上定义了第一个约束:必须是一个 JSON 对象。 可以直接设置成object
+	 */
+	private String type;
+	
+	private List<String> required;
+	
+	
+	public List<String> getRequired() {
+		return required;
+	}
+
+	public void setRequired(List<String> required) {
+		this.required = required;
+	}
+
+	public String get$schema() {
+		return $schema;
+	}
+
+	public void set$schema(String $schema) {
+		this.$schema = $schema;
+	}
+
+	public String getTitle() {
+		return title;
+	}
+
+	public void setTitle(String title) {
+		this.title = title;
+	}
+
+	public String getDescription() {
+		return description;
+	}
+
+	public void setDescription(String description) {
+		this.description = description;
+	}
+
+	public String getType() {
+		return type;
+	}
+
+	public void setType(String type) {
+		this.type = type;
+	}
+	
+	public JsonSchemaDescrip() {}
+	
+	public JsonSchemaDescrip(List<String> required) {
+		this.description="我是一个jsonschema description";
+		this.title="我是一个jsonschema title";
+		this.type="object";
+		this.required = required;
+	}
+
+}

+ 68 - 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/jsonschema/JsonschemaUtil.java

@@ -0,0 +1,68 @@
+package org.jeecg.common.util.jsonschema;
+
+import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+@Slf4j
+public class JsonschemaUtil {
+	
+	/**
+	 * 生成JsonSchema
+	 * 
+	 * @param descrip
+	 * @param propertyList
+	 * @return
+	 */
+	public static JSONObject getJsonSchema(JsonSchemaDescrip descrip, List<CommonProperty> propertyList) {
+		JSONObject obj = new JSONObject();
+		obj.put("$schema", descrip.get$schema());
+		obj.put("type", descrip.getType());
+		obj.put("title", descrip.getTitle());
+
+		List<String> requiredArr = descrip.getRequired();
+		obj.put("required", requiredArr);
+
+		JSONObject properties = new JSONObject();
+		for (CommonProperty commonProperty : propertyList) {
+			Map<String, Object> map = commonProperty.getPropertyJson();
+			properties.put(map.get("key").toString(), map.get("prop"));
+		}
+		obj.put("properties", properties);
+		//鬼知道这里为什么报错 org.jeecg.modules.system.model.DictModel cannot be cast to org.jeecg.modules.system.model.DictModel
+		//log.info("---JSONSchema--->"+obj.toJSONString());
+		return obj;
+	}
+	
+	/**
+	 * 生成JsonSchema 用于子对象
+	 * @param title 子对象描述
+	 * @param requiredArr 子对象必填属性名集合
+	 * @param propertyList 子对象属性集合
+	 * @return
+	 */
+	public static JSONObject getSubJsonSchema(String title,List<String> requiredArr,List<CommonProperty> propertyList) {
+		JSONObject obj = new JSONObject();
+		obj.put("type", "object");
+		obj.put("view", "tab");
+		obj.put("title", title);
+
+		if(requiredArr==null) {
+			requiredArr = new ArrayList<String>();
+		}
+		obj.put("required", requiredArr);
+
+		JSONObject properties = new JSONObject();
+		for (CommonProperty commonProperty : propertyList) {
+			Map<String, Object> map = commonProperty.getPropertyJson();
+			properties.put(map.get("key").toString(), map.get("prop"));
+		}
+		obj.put("properties", properties);
+		//log.info("---JSONSchema--->"+obj.toString());
+		return obj;
+	}
+
+}

+ 61 - 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/jsonschema/validate/DictProperty.java

@@ -0,0 +1,61 @@
+package org.jeecg.common.util.jsonschema.validate;
+
+import com.alibaba.fastjson.JSONObject;
+import lombok.Data;
+import org.jeecg.common.util.jsonschema.CommonProperty;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 字典属性
+ * @author 86729
+ *
+ */
+@Data
+public class DictProperty extends CommonProperty {
+
+	private static final long serialVersionUID = 3786503639885610767L;
+
+    /**
+     * 字典三属性
+     */
+
+	private String dictCode;
+	private String dictTable;
+	private String dictText;
+
+	public DictProperty() {}
+	/**
+	 *  构造器
+	 */
+	public DictProperty(String key,String title,String dictTable,String dictCode,String dictText) {
+		this.type = "string";
+		this.view = "sel_search";
+		this.key = key;
+		this.title = title;
+		this.dictCode = dictCode;
+		this.dictTable= dictTable;
+		this.dictText= dictText;
+	}
+	
+	@Override
+	public Map<String, Object> getPropertyJson() {
+		Map<String,Object> map = new HashMap<>();
+		map.put("key",getKey());
+		JSONObject prop = getCommonJson();
+		if(dictCode!=null) {
+			prop.put("dictCode",dictCode);
+		}
+		if(dictTable!=null) {
+			prop.put("dictTable",dictTable);
+		}
+		if(dictText!=null) {
+			prop.put("dictText",dictText);
+		}
+		map.put("prop",prop);
+		return map;
+	}
+
+	//TODO 重构问题:数据字典 只是字符串类的还是有存储的数值类型?只有字符串请跳过这个 只改前端
+}

+ 37 - 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/jsonschema/validate/HiddenProperty.java

@@ -0,0 +1,37 @@
+package org.jeecg.common.util.jsonschema.validate;
+
+import com.alibaba.fastjson.JSONObject;
+import org.jeecg.common.util.jsonschema.CommonProperty;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 字典属性
+ * @author 86729
+ *
+ */
+public class HiddenProperty extends CommonProperty {
+	
+	private static final long serialVersionUID = -8939298551502162479L;
+	
+	public HiddenProperty() {}
+	
+	public HiddenProperty(String key,String title) {
+		this.type = "string";
+		this.view = "hidden";
+		this.key = key;
+		this.title = title;
+	}
+	
+	@Override
+	public Map<String, Object> getPropertyJson() {
+		Map<String,Object> map = new HashMap<>();
+		map.put("key",getKey());
+		JSONObject prop = getCommonJson();
+		prop.put("hidden",true);
+		map.put("prop",prop);
+		return map;
+	}
+
+}

+ 66 - 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/jsonschema/validate/LinkDownProperty.java

@@ -0,0 +1,66 @@
+package org.jeecg.common.util.jsonschema.validate;
+
+import com.alibaba.fastjson.JSONObject;
+import org.jeecg.common.util.jsonschema.BaseColumn;
+import org.jeecg.common.util.jsonschema.CommonProperty;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 级联下拉
+ */
+public class LinkDownProperty extends CommonProperty {
+
+    /**
+     * 配置信息
+     */
+    String dictTable;
+
+    /**
+     * 级联下拉组件 的其他级联列
+     */
+    List<BaseColumn> otherColumns;
+
+    public String getDictTable(){
+        return this.dictTable;
+    }
+
+    public void setDictTable(String dictTable){
+        this.dictTable = dictTable;
+    }
+
+    public List<BaseColumn> getOtherColumns(){
+        return this.otherColumns;
+    }
+
+    public void setOtherColumns(List<BaseColumn> otherColumns){
+        this.otherColumns = otherColumns;
+    }
+
+    public LinkDownProperty() {}
+
+    /**
+     *  构造器
+     */
+    public LinkDownProperty(String key,String title,String dictTable) {
+        this.type = "string";
+        this.view = "link_down";
+        this.key = key;
+        this.title = title;
+        this.dictTable= dictTable;
+    }
+
+    @Override
+    public Map<String, Object> getPropertyJson() {
+        Map<String, Object> map = new HashMap<>();
+        map.put("key", getKey());
+        JSONObject prop = getCommonJson();
+        JSONObject temp = JSONObject.parseObject(this.dictTable);
+        prop.put("config", temp);
+        prop.put("others", otherColumns);
+        map.put("prop", prop);
+        return map;
+    }
+}

+ 152 - 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/jsonschema/validate/NumberProperty.java

@@ -0,0 +1,152 @@
+package org.jeecg.common.util.jsonschema.validate;
+
+import com.alibaba.fastjson.JSONObject;
+import org.jeecg.common.system.vo.DictModel;
+import org.jeecg.common.util.jsonschema.CommonProperty;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class NumberProperty extends CommonProperty {
+
+	private static final long serialVersionUID = -558615331436437200L;
+	
+	/**
+	 * 倍数
+	 * 验证实例是否为此数值的倍数
+	 * “multipleOf”的值必须是一个数字,严格大于0。
+	 */
+	private Integer multipleOf;
+	
+	/**
+	 * 小于等于
+	 * “maximum”的值必须是一个数字,表示数字实例的包含上限。
+	 *	如果实例是数字,则仅当实例小于或等于“最大”时,此关键字才会生效。
+	 */
+	private Integer maxinum;
+	
+	/**
+	 * 小于
+	 * “exclusiveMaximum”的值必须是数字,表示数字实例的独占上限。
+     * 如果实例是数字,则实例仅在其值严格小于(不等于)“exclusiveMaximum”时才有效。
+	 */
+	private Integer exclusiveMaximum;
+	
+	/**
+	 * 大于等于
+	 */
+	private Integer minimum;
+	
+	/**
+	 * 大于等于
+	 */
+	private Integer exclusiveMinimum;
+	
+	private String pattern;
+
+	public Integer getMultipleOf() {
+		return multipleOf;
+	}
+
+	public void setMultipleOf(Integer multipleOf) {
+		this.multipleOf = multipleOf;
+	}
+
+	public Integer getMaxinum() {
+		return maxinum;
+	}
+
+	public void setMaxinum(Integer maxinum) {
+		this.maxinum = maxinum;
+	}
+
+	public Integer getExclusiveMaximum() {
+		return exclusiveMaximum;
+	}
+
+	public void setExclusiveMaximum(Integer exclusiveMaximum) {
+		this.exclusiveMaximum = exclusiveMaximum;
+	}
+
+	public Integer getMinimum() {
+		return minimum;
+	}
+
+	public void setMinimum(Integer minimum) {
+		this.minimum = minimum;
+	}
+
+	public Integer getExclusiveMinimum() {
+		return exclusiveMinimum;
+	}
+
+	public void setExclusiveMinimum(Integer exclusiveMinimum) {
+		this.exclusiveMinimum = exclusiveMinimum;
+	}
+	
+	public String getPattern() {
+		return pattern;
+	}
+
+	public void setPattern(String pattern) {
+		this.pattern = pattern;
+	}
+
+	public NumberProperty() {}
+	
+	/**
+	  *  构造器
+	 * @param key 字段名
+	 * @param title 字段备注 
+	 * @param type number和integer
+	 */
+	public NumberProperty(String key,String title,String type) {
+		this.key = key;
+		this.type = type;
+		this.title = title;
+		this.view = "number";
+	}
+	
+	/**
+	  * 列表类型的走这个构造器  字典里存储的都是字符串 没法走这个构造器
+	 * @param key
+	 * @param type
+	 * @param view list-checkbox-radio
+	 * @param include
+	 */
+	public NumberProperty(String key,String title,String view,List<DictModel> include) {
+		this.type = "integer";
+		this.key = key;
+		this.view = view;
+		this.title = title;
+		this.include = include;
+	}
+	
+	@Override
+	public Map<String,Object> getPropertyJson() {
+		Map<String,Object> map = new HashMap<>();
+		map.put("key",getKey());
+		JSONObject prop = getCommonJson();
+		if(multipleOf!=null) {
+			prop.put("multipleOf",multipleOf);
+		}
+		if(maxinum!=null) {
+			prop.put("maxinum",maxinum);
+		}
+		if(exclusiveMaximum!=null) {
+			prop.put("exclusiveMaximum",exclusiveMaximum);
+		}
+		if(minimum!=null) {
+			prop.put("minimum",minimum);
+		}
+		if(exclusiveMinimum!=null) {
+			prop.put("exclusiveMinimum",exclusiveMinimum);
+		}
+		if(pattern!=null) {
+			prop.put("pattern",pattern);
+		}
+		map.put("prop",prop);
+		return map;
+	}
+}

+ 74 - 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/jsonschema/validate/PopupProperty.java

@@ -0,0 +1,74 @@
+package org.jeecg.common.util.jsonschema.validate;
+
+import com.alibaba.fastjson.JSONObject;
+import org.jeecg.common.util.jsonschema.CommonProperty;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class PopupProperty extends CommonProperty {
+	
+	private static final long serialVersionUID = -3200493311633999539L;
+	
+	private String code;
+	
+	private String destFields;
+	
+	private String orgFields;
+	
+	public String getCode() {
+		return code;
+	}
+
+	public void setCode(String code) {
+		this.code = code;
+	}
+
+	public String getDestFields() {
+		return destFields;
+	}
+
+	public void setDestFields(String destFields) {
+		this.destFields = destFields;
+	}
+
+	public String getOrgFields() {
+		return orgFields;
+	}
+
+	public void setOrgFields(String orgFields) {
+		this.orgFields = orgFields;
+	}
+
+	public PopupProperty() {}
+	
+	public PopupProperty(String key,String title,String code,String destFields,String orgFields) {
+		this.view = "popup";
+		this.type = "string";
+		this.key = key;
+		this.title = title;
+		this.code = code;
+		this.destFields=destFields;
+		this.orgFields=orgFields;
+	}
+	
+
+	@Override
+	public Map<String, Object> getPropertyJson() {
+		Map<String,Object> map = new HashMap<>();
+		map.put("key",getKey());
+		JSONObject prop = getCommonJson();
+		if(code!=null) {
+			prop.put("code",code);
+		}
+		if(destFields!=null) {
+			prop.put("destFields",destFields);
+		}
+		if(orgFields!=null) {
+			prop.put("orgFields",orgFields);
+		}
+		map.put("prop",prop);
+		return map;
+	}
+
+}

+ 118 - 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/jsonschema/validate/StringProperty.java

@@ -0,0 +1,118 @@
+package org.jeecg.common.util.jsonschema.validate;
+
+import com.alibaba.fastjson.JSONObject;
+import org.jeecg.common.system.vo.DictModel;
+import org.jeecg.common.util.jsonschema.CommonProperty;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class StringProperty extends CommonProperty {
+	
+	private static final long serialVersionUID = -3200493311633999539L;
+	
+	private Integer maxLength;
+	
+	private Integer minLength;
+	
+	/**
+	 * 根据ECMA 262正则表达式方言,该字符串应该是有效的正则表达式。
+	 */
+	private String pattern;
+	
+	/**
+	 * 错误提示信息
+	 */
+	private String errorInfo;
+	
+	public Integer getMaxLength() {
+		return maxLength;
+	}
+
+
+	public void setMaxLength(Integer maxLength) {
+		this.maxLength = maxLength;
+	}
+
+	public Integer getMinLength() {
+		return minLength;
+	}
+
+	public void setMinLength(Integer minLength) {
+		this.minLength = minLength;
+	}
+
+	public String getPattern() {
+		return pattern;
+	}
+
+	public void setPattern(String pattern) {
+		this.pattern = pattern;
+	}
+	
+	public String getErrorInfo() {
+		return errorInfo;
+	}
+
+
+	public void setErrorInfo(String errorInfo) {
+		this.errorInfo = errorInfo;
+	}
+
+
+	public StringProperty() {}
+	
+	/**
+	 *  一般字符串类型走这个构造器
+	 * @param key 字段名
+	 * @param title 字段备注
+	 * @param view 展示控件
+	 * @param maxLength 数据库字段最大长度
+	 */
+	public StringProperty(String key,String title,String view,Integer maxLength) {
+		this.maxLength = maxLength;
+		this.key = key;
+		this.view = view;
+		this.title = title;
+		this.type = "string";
+	}
+	
+	/**
+         *  列表类型的走这个构造器  
+	 * @param key 字段名
+	 * @param title 字段备注 
+	 * @param view 展示控件 list-checkbox-radio
+	 * @param maxLength 数据库字段最大长度
+	 * @param include 数据字典
+	 */
+	public StringProperty(String key,String title,String view,Integer maxLength,List<DictModel> include) {
+		this.maxLength = maxLength;
+		this.key = key;
+		this.view = view;
+		this.title = title;
+		this.type = "string";
+		this.include = include;
+	}
+	@Override
+	public Map<String, Object> getPropertyJson() {
+		Map<String,Object> map = new HashMap<>();
+		map.put("key",getKey());
+		JSONObject prop = getCommonJson();
+		if(maxLength!=null) {
+			prop.put("maxLength",maxLength);
+		}
+		if(minLength!=null) {
+			prop.put("minLength",minLength);
+		}
+		if(pattern!=null) {
+			prop.put("pattern",pattern);
+		}
+		if(errorInfo!=null) {
+			prop.put("errorInfo",errorInfo);
+		}
+		map.put("prop",prop);
+		return map;
+	}
+
+}

+ 46 - 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/jsonschema/validate/SwitchProperty.java

@@ -0,0 +1,46 @@
+package org.jeecg.common.util.jsonschema.validate;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import org.jeecg.common.util.jsonschema.CommonProperty;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 开关 属性
+ */
+public class SwitchProperty extends CommonProperty {
+
+	//扩展参数配置信息
+	private String extendStr;
+
+	public SwitchProperty() {}
+
+	/**
+	 *  构造器
+	 */
+	public SwitchProperty(String key, String title, String extendStr) {
+		this.type = "string";
+		this.view = "switch";
+		this.key = key;
+		this.title = title;
+		this.extendStr = extendStr;
+	}
+	
+	@Override
+	public Map<String, Object> getPropertyJson() {
+		Map<String,Object> map = new HashMap<>();
+		map.put("key",getKey());
+		JSONObject prop = getCommonJson();
+		JSONArray array = new JSONArray();
+		if(extendStr!=null) {
+			array = JSONArray.parseArray(extendStr);
+			prop.put("extendOption",array);
+		}
+		map.put("prop",prop);
+		return map;
+	}
+
+	//TODO 重构问题:数据字典 只是字符串类的还是有存储的数值类型?只有字符串请跳过这个 只改前端
+}

+ 145 - 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/jsonschema/validate/TreeSelectProperty.java

@@ -0,0 +1,145 @@
+package org.jeecg.common.util.jsonschema.validate;
+
+import com.alibaba.fastjson.JSONObject;
+import org.jeecg.common.util.jsonschema.CommonProperty;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 字典属性
+ * @author 86729
+ *
+ */
+public class TreeSelectProperty extends CommonProperty {
+	
+	private static final long serialVersionUID = 3786503639885610767L;
+
+	private String dict;//表名,文本,id
+	private String pidField;//父级字段 默认pid
+	private String pidValue;//父级节点的值 暂时没用到 默认为0
+	private String hasChildField;
+	private String textField;//树形下拉保存text值的字段名
+
+	/**
+	 * 是不是pid 组件 1是 0否
+	 */
+	private Integer pidComponent = 0;
+	
+	public String getDict() {
+		return dict;
+	}
+
+	public void setDict(String dict) {
+		this.dict = dict;
+	}
+
+	public String getPidField() {
+		return pidField;
+	}
+
+	public void setPidField(String pidField) {
+		this.pidField = pidField;
+	}
+
+	public String getPidValue() {
+		return pidValue;
+	}
+
+	public void setPidValue(String pidValue) {
+		this.pidValue = pidValue;
+	}
+	
+	public String getHasChildField() {
+		return hasChildField;
+	}
+
+	public void setHasChildField(String hasChildField) {
+		this.hasChildField = hasChildField;
+	}
+
+	public TreeSelectProperty() {}
+
+	public String getTextField() {
+		return textField;
+	}
+
+	public void setTextField(String textField) {
+		this.textField = textField;
+	}
+
+	public Integer getPidComponent() {
+		return pidComponent;
+	}
+
+	public void setPidComponent(Integer pidComponent) {
+		this.pidComponent = pidComponent;
+	}
+
+	/**
+	 *  构造器 构造普通树形下拉
+	 */
+	public TreeSelectProperty(String key,String title,String dict,String pidField,String pidValue) {
+		this.type = "string";
+		this.view = "sel_tree";
+		this.key = key;
+		this.title = title;
+		this.dict = dict;
+		this.pidField= pidField;
+		this.pidValue= pidValue;
+	}
+
+	/**
+	 * 分类字典下拉专用
+	 * @param key
+	 * @param title
+	 * @param pidValue
+	 */
+	public TreeSelectProperty(String key,String title,String pidValue) {
+		this.type = "string";
+		this.view = "cat_tree";
+		this.key = key;
+		this.title = title;
+		this.pidValue = pidValue;
+	}
+
+	/**
+	 * 分类字典 支持存储text 下拉专用
+	 * @param key
+	 * @param title
+	 * @param pidValue
+	 * @param textField
+	 */
+	public TreeSelectProperty(String key,String title,String pidValue,String textField) {
+		this(key,title,pidValue);
+		this.textField = textField;
+	}
+	
+	@Override
+	public Map<String, Object> getPropertyJson() {
+		Map<String,Object> map = new HashMap<>();
+		map.put("key",getKey());
+		JSONObject prop = getCommonJson();
+		if(dict!=null) {
+			prop.put("dict",dict);
+		}
+		if(pidField!=null) {
+			prop.put("pidField",pidField);
+		}
+		if(pidValue!=null) {
+			prop.put("pidValue",pidValue);
+		}
+		if(textField!=null) {
+			prop.put("textField",textField);
+		}
+		if(hasChildField!=null) {
+			prop.put("hasChildField",hasChildField);
+		}
+		if(pidComponent!=null) {
+			prop.put("pidComponent",pidComponent);
+		}
+		map.put("prop",prop);
+		return map;
+	}
+
+}

+ 13 - 15
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/oss/OssBootUtil.java

@@ -286,20 +286,6 @@ public class OssBootUtil {
         return null;
     }
 
-    /**
-     * 初始化 oss 客户端
-     *
-     * @return
-     */
-    private static OSSClient initOSS(String endpoint, String accessKeyId, String accessKeySecret) {
-        if (ossClient == null) {
-            ossClient = new OSSClient(endpoint,
-                    new DefaultCredentialProvider(accessKeyId, accessKeySecret),
-                    new ClientConfiguration());
-        }
-        return ossClient;
-    }
-
 
     /**
      * 上传文件到oss
@@ -325,5 +311,17 @@ public class OssBootUtil {
         return FILE_URL;
     }
 
-
+    /**
+     * 初始化 oss 客户端
+     *
+     * @return
+     */
+    private static OSSClient initOSS(String endpoint, String accessKeyId, String accessKeySecret) {
+        if (ossClient == null) {
+            ossClient = new OSSClient(endpoint,
+                    new DefaultCredentialProvider(accessKeyId, accessKeySecret),
+                    new ClientConfiguration());
+        }
+        return ossClient;
+    }
 }

+ 0 - 2
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/mybatis/MybatisPlusConfig.java

@@ -141,8 +141,6 @@ public class MybatisPlusConfig {
 //        return new PerformanceInterceptor();
 //    }
 
-
-
     @Bean
     ConfigurationCustomizer mybatisConfigurationCustomizer() {
         return new ConfigurationCustomizer() {

+ 152 - 99
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java

@@ -50,101 +50,180 @@ public class ShiroConfig {
     @Autowired
     private Environment env;
 
+    @Value("${spring.redis.port}")
+    private String port;
+
+    @Value("${spring.redis.host}")
+    private String host;
+
+    @Value("${spring.redis.password}")
+    private String redisPassword;
 
     /**
      * Filter Chain定义说明
-     *
+     * <p>
      * 1、一个URL可以配置多个Filter,使用逗号分隔
      * 2、当设置多个过滤器时,全部验证通过,才视为通过
      * 3、部分过滤器可指定参数,如perms,roles
      */
     @Bean("shiroFilter")
     public ShiroFilterFactoryBean shiroFilter(SecurityManager securityManager) {
-        CustomShiroFilterFactoryBean shiroFilterFactoryBean = new CustomShiroFilterFactoryBean();
+        ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
         shiroFilterFactoryBean.setSecurityManager(securityManager);
         // 拦截器
-        Map<String, String> filterChainDefinitionMap = new LinkedHashMap<String, String>();
-        if(oConvertUtils.isNotEmpty(excludeUrls)){
-            String[] permissionUrl = excludeUrls.split(",");
-            for(String url : permissionUrl){
-                filterChainDefinitionMap.put(url,"anon");
-            }
-        }
+        Map<String, String> filterChainDefinitionMap = new LinkedHashMap<>();
         // 配置不会被拦截的链接 顺序判断
-        filterChainDefinitionMap.put("/sys/cas/client/validateLogin", "anon"); //cas验证登录
-        filterChainDefinitionMap.put("/sys/randomImage/**", "anon"); //登录验证码接口排除
-        filterChainDefinitionMap.put("/sys/checkCaptcha", "anon"); //登录验证码接口排除
-        filterChainDefinitionMap.put("/sys/login", "anon"); //登录接口排除
-        filterChainDefinitionMap.put("/sys/mLogin", "anon"); //登录接口排除
-        filterChainDefinitionMap.put("/sys/logout", "anon"); //登出接口排除
-        filterChainDefinitionMap.put("/sys/thirdLogin/**", "anon"); //第三方登录
-        filterChainDefinitionMap.put("/sys/getEncryptedString", "anon"); //获取加密串
-        filterChainDefinitionMap.put("/sys/sms", "anon");//短信验证码
-        filterChainDefinitionMap.put("/sys/phoneLogin", "anon");//手机登录
-        filterChainDefinitionMap.put("/sys/user/checkOnlyUser", "anon");//校验用户是否存在
-        filterChainDefinitionMap.put("/sys/user/register", "anon");//用户注册
-        filterChainDefinitionMap.put("/sys/user/querySysUser", "anon");//根据手机号获取用户信息
-        filterChainDefinitionMap.put("/sys/user/phoneVerification", "anon");//用户忘记密码验证手机号
-        filterChainDefinitionMap.put("/sys/user/passwordChange", "anon");//用户更改密码
-        filterChainDefinitionMap.put("/auth/2step-code", "anon");//登录验证码
-        filterChainDefinitionMap.put("/sys/common/static/**", "anon");//图片预览 &下载文件不限制token
-        filterChainDefinitionMap.put("/sys/common/pdf/**", "anon");//pdf预览
-        filterChainDefinitionMap.put("/generic/**", "anon");//pdf预览需要文件
+        //登录接口排除
+        filterChainDefinitionMap.put("/sys/mLogin", "anon");
+        filterChainDefinitionMap.put("/sys/login", "anon");
+        filterChainDefinitionMap.put("/sys/wxlogin", "anon");
+        filterChainDefinitionMap.put("/ctop/rule/**", "anon");
+        //第三方登录
+        filterChainDefinitionMap.put("/thirdLogin/**", "anon");
+        //获取加密串
+        filterChainDefinitionMap.put("/sys/getEncryptedString", "anon");
+        //短信验证码
+        filterChainDefinitionMap.put("/sys/sms", "anon");
+        //手机登录
+        filterChainDefinitionMap.put("/sys/phoneLogin", "anon");
+        //校验用户是否存在
+        filterChainDefinitionMap.put("/sys/user/checkOnlyUser", "anon");
+        //用户注册
+        filterChainDefinitionMap.put("/sys/user/register", "anon");
+        //根据手机号获取用户信息
+        filterChainDefinitionMap.put("/sys/user/querySysUser", "anon");
+        //用户忘记密码验证手机号
+        filterChainDefinitionMap.put("/sys/user/phoneVerification", "anon");
+        //用户更改密码
+        filterChainDefinitionMap.put("/sys/user/passwordChange", "anon");
+        //登录验证码
+        filterChainDefinitionMap.put("/auth/2step-code", "anon");
+        //图片预览不限制token
+        filterChainDefinitionMap.put("/sys/common/view/**", "anon");
+        //文件下载不限制token
+        filterChainDefinitionMap.put("/sys/common/download/**", "anon");
+        //pdf预览
+        filterChainDefinitionMap.put("/sys/common/pdf/**", "anon");
+        filterChainDefinitionMap.put("/ctop/bytedanceAreaInfo/**", "anon");
+        filterChainDefinitionMap.put("/ctop/bytedanceInterestCategory/**", "anon");
+        filterChainDefinitionMap.put("/template/creative/words/get", "anon");
+        filterChainDefinitionMap.put("template/bytedance/industry/list", "anon");
+        //积木报表排除
+        filterChainDefinitionMap.put("/jmreport/**", "anon");
+        filterChainDefinitionMap.put("/**/*.js.map", "anon");
+        filterChainDefinitionMap.put("/**/*.css.map", "anon");
+        filterChainDefinitionMap.put("/bytedance/batch/creative/words/get", "anon");
+        filterChainDefinitionMap.put("/bytedance/batch/action/text", "anon");
+        filterChainDefinitionMap.put("/bytedance/batch/industry/list", "anon");
+        filterChainDefinitionMap.put("/appium/crawler/*", "anon");
+
+        filterChainDefinitionMap.put("/ctop/kuaishouChannelRegInfo/*", "anon");
+        filterChainDefinitionMap.put("/ctop/byteDance/homePage/report/*", "anon");
+        filterChainDefinitionMap.put("/ctop/material/top/cost", "anon");
+        filterChainDefinitionMap.put("/dimension/report/*", "anon");
+        filterChainDefinitionMap.put("/userAllocation/updateAuthName", "anon");
+
+        filterChainDefinitionMap.put("/v1/**", "anon");
+
+        filterChainDefinitionMap.put("/generic/**", "anon");
         filterChainDefinitionMap.put("/", "anon");
         filterChainDefinitionMap.put("/doc.html", "anon");
         filterChainDefinitionMap.put("/**/*.js", "anon");
         filterChainDefinitionMap.put("/**/*.css", "anon");
         filterChainDefinitionMap.put("/**/*.html", "anon");
         filterChainDefinitionMap.put("/**/*.svg", "anon");
-        filterChainDefinitionMap.put("/**/*.pdf", "anon");
         filterChainDefinitionMap.put("/**/*.jpg", "anon");
         filterChainDefinitionMap.put("/**/*.png", "anon");
         filterChainDefinitionMap.put("/**/*.ico", "anon");
-
-        filterChainDefinitionMap.put("/**/*.ttf", "anon");
-        filterChainDefinitionMap.put("/**/*.woff", "anon");
-        filterChainDefinitionMap.put("/**/*.woff2", "anon");
-
         filterChainDefinitionMap.put("/druid/**", "anon");
         filterChainDefinitionMap.put("/swagger-ui.html", "anon");
         filterChainDefinitionMap.put("/swagger**/**", "anon");
         filterChainDefinitionMap.put("/webjars/**", "anon");
         filterChainDefinitionMap.put("/v2/**", "anon");
-
-
-        // update-begin--Author:sunjianlei Date:20210510 for:排除消息通告查看详情页面(用于第三方APP)
-        filterChainDefinitionMap.put("/sys/annountCement/show/**", "anon");
-        // update-end--Author:sunjianlei Date:20210510 for:排除消息通告查看详情页面(用于第三方APP)
-
-        //积木报表排除
-        filterChainDefinitionMap.put("/jmreport/**", "anon");
-        filterChainDefinitionMap.put("/**/*.js.map", "anon");
-        filterChainDefinitionMap.put("/**/*.css.map", "anon");
+        filterChainDefinitionMap.put("/kuaishou", "anon");
+        filterChainDefinitionMap.put("/kuaishou/report", "anon");
+        filterChainDefinitionMap.put("/ctop/bindAccount/**", "anon");
+        filterChainDefinitionMap.put("/**/*.mp4", "anon");
+        //activiti
+        filterChainDefinitionMap.put("/activiti/**", "anon");
+        filterChainDefinitionMap.put("/diagram-viewer/**", "anon");
+        filterChainDefinitionMap.put("/editor-app/**", "anon");
         //大屏设计器排除
-        filterChainDefinitionMap.put("/bigscreen/**", "anon");
+        filterChainDefinitionMap.put("/big/screen/**", "anon");
 
-        //测试示例
-        filterChainDefinitionMap.put("/test/order/**", "anon");
-        filterChainDefinitionMap.put("/test/bigScreen/**", "anon"); //大屏模板例子
-        //filterChainDefinitionMap.put("/test/jeecgDemo/rabbitMqClientTest/**", "anon"); //MQ测试
-        //filterChainDefinitionMap.put("/test/jeecgDemo/html", "anon"); //模板页面
-        //filterChainDefinitionMap.put("/test/jeecgDemo/redis/**", "anon"); //redis测试
+        //性能监控
+        filterChainDefinitionMap.put("/actuator/metrics/**", "anon");
+        filterChainDefinitionMap.put("/actuator/httptrace/**", "anon");
+        filterChainDefinitionMap.put("/actuator/redis/**", "anon");
+        //消息队列
+        filterChainDefinitionMap.put("/mq/**", "anon");
+        //模板测试
+        filterChainDefinitionMap.put("/test/**", "anon");
+        //oauth接口
+        filterChainDefinitionMap.put("/auth/**", "anon");
+        filterChainDefinitionMap.put("/ctop/syncdata/**", "anon");
+        filterChainDefinitionMap.put("/sys/dictItem/list", "anon");
+        //头条接口
+        filterChainDefinitionMap.put("/bytedance", "anon");
+        filterChainDefinitionMap.put("/toutiao/loadAllData", "anon");
+        filterChainDefinitionMap.put("/toutiao/loadSingleData", "anon");
+        filterChainDefinitionMap.put("/kuaishou/getReport/historyData", "anon");
+        filterChainDefinitionMap.put("/toutiao/advertiser/**", "anon");
+        filterChainDefinitionMap.put("/template/convert/**", "anon");
+        filterChainDefinitionMap.put("/upload/**", "anon");
+        filterChainDefinitionMap.put("/appium/appiumTask/run", "anon");
 
-        //websocket排除
-        filterChainDefinitionMap.put("/websocket/**", "anon");//系统通知和公告
-        filterChainDefinitionMap.put("/newsWebsocket/**", "anon");//CMS模块
-        filterChainDefinitionMap.put("/vxeSocket/**", "anon");//JVxeTable无痕刷新示例
-        //
-        filterChainDefinitionMap.put("/advertiser/aiBytedanceAdvertiserStrategy/**", "anon");
+        filterChainDefinitionMap.put("/system/userCompany/**", "anon");
+        filterChainDefinitionMap.put("/qywexin", "anon");
+        filterChainDefinitionMap.put("/sys/feishu/**", "anon");
+        filterChainDefinitionMap.put("/test/getGroupData/**", "anon");
+        filterChainDefinitionMap.put("/test/getVideoAndImage/**", "anon");
+        filterChainDefinitionMap.put("/test/gerCreative/**", "anon");
+        filterChainDefinitionMap.put("/test/testdouyinmusic", "anon");
+        filterChainDefinitionMap.put("/test/syncDouyinMusic", "anon");
+        filterChainDefinitionMap.put("/test/parseDouyinMusic", "anon");
+        filterChainDefinitionMap.put("/report/kuaishouReportDailyAgent/get", "anon");
 
-        //性能监控  TODO 存在安全漏洞泄露TOEKN(durid连接池也有)
-        filterChainDefinitionMap.put("/actuator/**", "anon");
+        filterChainDefinitionMap.put("/appium/appiumTask/run/login", "anon");
+        filterChainDefinitionMap.put("/zip/download", "anon");
+        //WebSocket
+        filterChainDefinitionMap.put("/websocket/*", "anon");
+        //爬虫接口
+        filterChainDefinitionMap.put("/graphql/video", "anon");
+        filterChainDefinitionMap.put("/ks/web/test", "anon");
+        filterChainDefinitionMap.put("/ureport/**", "anon");
+        filterChainDefinitionMap.put("/job/test/*", "anon");
+        filterChainDefinitionMap.put("/third/*", "anon");
+        filterChainDefinitionMap.put("/ctop/kuaishou/dailyPage/**", "anon");
+        filterChainDefinitionMap.put("/rest/script/*", "anon");
+        filterChainDefinitionMap.put("/ctop/checkTaskList/*", "anon");
+        filterChainDefinitionMap.put("/ctop/report/bytedance/*", "anon");
+        filterChainDefinitionMap.put("/shiwan/shiwanFileUpload/*", "anon");
+        filterChainDefinitionMap.put("/oa/wechatNoList/*", "anon");
+        filterChainDefinitionMap.put("/ruleGroup/*", "anon");
+        filterChainDefinitionMap.put("/kuaishou/material/*", "anon");
+        filterChainDefinitionMap.put("/kuaishou/create/*", "anon");
+        filterChainDefinitionMap.put("/template/kuaiShouBatchCreativeTemplate/*", "anon");
+        filterChainDefinitionMap.put("/template/kuaiShouBatchGroupTemplate/*", "anon");
+        filterChainDefinitionMap.put("/template/kuaiShouBatchCampaignTemplate/*", "anon");
+        filterChainDefinitionMap.put("/template/**", "anon");
+        filterChainDefinitionMap.put("/batch/kuaiShouGroupTemplate/*", "anon");
+        filterChainDefinitionMap.put("/kuaishouBatch/**", "anon");
+        filterChainDefinitionMap.put("/kuaishou/creative/*", "anon");
+        filterChainDefinitionMap.put("/ai/aiKuaiShouAppInfo/*", "anon");
+        filterChainDefinitionMap.put("/explore/*", "anon");
+        filterChainDefinitionMap.put("/ai/batchUpdate/*", "anon");
+        filterChainDefinitionMap.put("/ctop/kuaishou/videoReport/*", "anon");
+        filterChainDefinitionMap.put("/ai/create/*", "anon");
+        //filterChainDefinitionMap.put("/overView/*", "anon");
+        filterChainDefinitionMap.put("/kuaishouCrowdPack/**", "anon");
+        filterChainDefinitionMap.put("/kuaishou/batch/*", "anon");
+        filterChainDefinitionMap.put("/dimension/kuaiShouDimensionAccount/*", "anon");
+        filterChainDefinitionMap.put("/ai/projectCreate/*", "anon");
 
         // 添加自己的过滤器并且取名为jwt
-        Map<String, Filter> filterMap = new HashMap<String, Filter>(1);
-        //如果cloudServer为空 则说明是单体 需要加载跨域配置
-        Object cloudServer = env.getProperty(CommonConstant.CLOUD_SERVER_KEY);
-        filterMap.put("jwt", new JwtFilter(cloudServer==null));
+        Map<String, Filter> filterMap = new HashMap<>(1);
+        filterMap.put("jwt", new JwtFilter());
         shiroFilterFactoryBean.setFilters(filterMap);
         // <!-- 过滤链定义,从上向下顺序执行,一般将/**放在最为下边
         filterChainDefinitionMap.put("/**", "jwt");
@@ -171,13 +250,13 @@ public class ShiroConfig {
         defaultSessionStorageEvaluator.setSessionStorageEnabled(false);
         subjectDAO.setSessionStorageEvaluator(defaultSessionStorageEvaluator);
         securityManager.setSubjectDAO(subjectDAO);
-        //自定义缓存实现,使用redis
-        securityManager.setCacheManager(redisCacheManager());
+
         return securityManager;
     }
 
     /**
      * 下面的代码是添加注解支持
+     *
      * @return
      */
     @Bean
@@ -213,7 +292,6 @@ public class ShiroConfig {
      * @return
      */
     public RedisCacheManager redisCacheManager() {
-        log.info("===============(1)创建缓存管理器RedisCacheManager");
         RedisCacheManager redisCacheManager = new RedisCacheManager();
         redisCacheManager.setRedisManager(redisManager());
         //redis中针对不同用户缓存(此处的id需要对应user实体中的id字段,用于唯一标识)
@@ -230,39 +308,14 @@ public class ShiroConfig {
      * @return
      */
     @Bean
-    public IRedisManager redisManager() {
-        log.info("===============(2)创建RedisManager,连接Redis..");
-        IRedisManager manager;
-        // redis 单机支持,在集群为空,或者集群无机器时候使用 add by jzyadmin@163.com
-        if (lettuceConnectionFactory.getClusterConfiguration() == null || lettuceConnectionFactory.getClusterConfiguration().getClusterNodes().isEmpty()) {
-            RedisManager redisManager = new RedisManager();
-            redisManager.setHost(lettuceConnectionFactory.getHostName());
-            redisManager.setPort(lettuceConnectionFactory.getPort());
-            redisManager.setDatabase(lettuceConnectionFactory.getDatabase());
-            redisManager.setTimeout(0);
-            if (!StringUtils.isEmpty(lettuceConnectionFactory.getPassword())) {
-                redisManager.setPassword(lettuceConnectionFactory.getPassword());
-            }
-            manager = redisManager;
-        }else{
-            // redis集群支持,优先使用集群配置
-            RedisClusterManager redisManager = new RedisClusterManager();
-            Set<HostAndPort> portSet = new HashSet<>();
-            lettuceConnectionFactory.getClusterConfiguration().getClusterNodes().forEach(node -> portSet.add(new HostAndPort(node.getHost() , node.getPort())));
-            //update-begin--Author:scott Date:20210531 for:修改集群模式下未设置redis密码的bug issues/I3QNIC
-            if (oConvertUtils.isNotEmpty(lettuceConnectionFactory.getPassword())) {
-                JedisCluster jedisCluster = new JedisCluster(portSet, 2000, 2000, 5,
-                    lettuceConnectionFactory.getPassword(), new GenericObjectPoolConfig());
-                redisManager.setPassword(lettuceConnectionFactory.getPassword());
-                redisManager.setJedisCluster(jedisCluster);
-            } else {
-                JedisCluster jedisCluster = new JedisCluster(portSet);
-                redisManager.setJedisCluster(jedisCluster);
-            }
-            //update-end--Author:scott Date:20210531 for:修改集群模式下未设置redis密码的bug issues/I3QNIC
-            manager = redisManager;
+    public RedisManager redisManager() {
+        RedisManager redisManager = new RedisManager();
+        redisManager.setHost(host);
+        redisManager.setPort(oConvertUtils.getInt(port));
+        redisManager.setTimeout(0);
+        if (!StringUtils.isEmpty(redisPassword)) {
+            redisManager.setPassword(redisPassword);
         }
-        return manager;
+        return redisManager;
     }
-
 }

+ 2 - 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/mapper/BaseCommonMapper.java

@@ -3,6 +3,7 @@ package org.jeecg.modules.base.mapper;
 import com.baomidou.mybatisplus.annotation.SqlParser;
 import org.apache.ibatis.annotations.Param;
 import org.jeecg.common.api.dto.LogDTO;
+import org.jeecg.common.system.entity.SysDataSource;
 
 public interface BaseCommonMapper {
 
@@ -13,4 +14,5 @@ public interface BaseCommonMapper {
     @SqlParser(filter=true)
     void saveLog(@Param("dto")LogDTO dto);
 
+    SysDataSource getDateSourceByCode(@Param("dto")String dbSourceCode);
 }

+ 3 - 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/mapper/xml/BaseCommonMapper.xml

@@ -19,5 +19,8 @@
             #{dto.createTime,jdbcType=TIMESTAMP}
         )
     </insert>
+    <select id="getDateSourceByCode" resultType="org.jeecg.common.system.entity.SysDataSource">
+        select * from sys_data_source where code = #{dbSourceCode} limit 1
+    </select>
 
 </mapper>

+ 2 - 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/service/BaseCommonService.java

@@ -1,6 +1,7 @@
 package org.jeecg.modules.base.service;
 
 import org.jeecg.common.api.dto.LogDTO;
+import org.jeecg.common.system.vo.DynamicDataSourceModel;
 import org.jeecg.common.system.vo.LoginUser;
 
 /**
@@ -31,4 +32,5 @@ public interface BaseCommonService {
      */
     void addLog(String LogContent, Integer logType, Integer operateType);
 
+    DynamicDataSourceModel getDynamicDbSourceByCode(String dbKey);
 }

+ 8 - 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/service/impl/BaseCommonServiceImpl.java

@@ -1,9 +1,12 @@
 package org.jeecg.modules.base.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.shiro.SecurityUtils;
 import org.jeecg.common.api.dto.LogDTO;
+import org.jeecg.common.system.entity.SysDataSource;
+import org.jeecg.common.system.vo.DynamicDataSourceModel;
 import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.common.util.IPUtils;
 import org.jeecg.common.util.SpringContextUtils;
@@ -80,6 +83,11 @@ public class BaseCommonServiceImpl implements BaseCommonService {
         addLog(logContent, logType, operateType, null);
     }
 
+    @Override
+    public DynamicDataSourceModel getDynamicDbSourceByCode(String dbSourceCode) {
+        SysDataSource dbSource = baseCommonMapper.getDateSourceByCode(dbSourceCode);
+        return new DynamicDataSourceModel(dbSource);
+    }
 
 
 }

+ 0 - 1
jeecg-boot-base/jeecg-boot-base-tools/pom.xml

@@ -7,7 +7,6 @@
         <version>2.4.5</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
-    <description>公共模块</description>
     <artifactId>jeecg-boot-base-tools</artifactId>
 
     <dependencies>

+ 2 - 0
jeecg-boot-base/jeecg-boot-base-tools/src/main/java/org/jeecg/common/constant/CacheConstant.java

@@ -91,4 +91,6 @@ public interface CacheConstant {
 	 * online图表
 	 */
 	public static final String ONLINE_GRAPH = "sys:cache:online:graph";
+
+
 }

+ 22 - 0
jeecg-boot-base/jeecg-boot-base-tools/src/main/java/org/jeecg/common/modules/redis/config/RedisConfig.java

@@ -15,6 +15,7 @@ import org.jeecg.common.modules.redis.writer.JeecgRedisCacheWriter;
 import org.springframework.cache.CacheManager;
 import org.springframework.cache.annotation.CachingConfigurerSupport;
 import org.springframework.cache.annotation.EnableCaching;
+import org.springframework.cache.interceptor.KeyGenerator;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.data.redis.cache.RedisCacheConfiguration;
@@ -29,7 +30,9 @@ import org.springframework.data.redis.listener.adapter.MessageListenerAdapter;
 import org.springframework.data.redis.serializer.*;
 
 import javax.annotation.Resource;
+import java.lang.reflect.Method;
 import java.time.Duration;
+import java.util.Arrays;
 
 import static java.util.Collections.singletonMap;
 
@@ -157,5 +160,24 @@ public class RedisConfig extends CachingConfigurerSupport {
 		return jackson2JsonRedisSerializer;
 	}
 
+	/**
+	 * @description 自定义的缓存key的生成策略 若想使用这个key
+	 *              只需要讲注解上keyGenerator的值设置为keyGenerator即可</br>
+	 * @return 自定义策略生成的key
+	 */
+	@Override
+	@Bean
+	public KeyGenerator keyGenerator() {
+		return new KeyGenerator() {
+			@Override
+			public Object generate(Object target, Method method, Object... params) {
+				StringBuilder sb = new StringBuilder();
+				sb.append(target.getClass().getName());
+				sb.append(method.getDeclaringClass().getName());
+				Arrays.stream(params).map(Object::toString).forEach(sb::append);
+				return sb.toString();
+			}
+		};
+	}
 
 }

+ 0 - 1
jeecg-boot-base/jeecg-boot-base-tools/src/main/java/org/jeecg/common/util/RedisUtil.java

@@ -463,7 +463,6 @@ public class RedisUtil {
 	 * 
 	 * @param key   键
 	 * @param value 值
-	 * @param time  时间(秒)
 	 * @return
 	 */
 	public boolean lSet(String key, Object value) {

+ 59 - 0
jeecg-boot-bytedance-ad/src/main/java/ctop/bytedance/ad/advertise/controller/AdvertiserMaterialInfoController.java

@@ -0,0 +1,59 @@
+package ctop.bytedance.ad.advertise.controller;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.api.vo.Result;
+import ctop.bytedance.ad.common.service.IMaterialInfoService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * 头条智能投放账户配置信息表
+ * @author jeecg-boot
+ * @date   2021-04-20
+ * @version V1.0
+ */
+@RestController
+@RequestMapping("/advertiser/materialInfoController")
+@Api(tags="视频素材")
+@Slf4j
+public class AdvertiserMaterialInfoController {
+	@Autowired
+	private IMaterialInfoService materialInfoService;
+
+
+
+	@ApiOperation(value="素材下线", notes="素材下线")
+	@GetMapping(value = "/updMaterialOfflineById")
+	public Result updMaterialOfflineById(@RequestParam("id") String id,
+								  		@RequestParam("offlineFlag") Integer offlineFlag) {
+		try {
+			List<String> listIds = Arrays.asList(id.split(","));
+			if (listIds.size() > 8){
+				return Result.errorMsg("已选视频素材最多支持8个。");
+			}
+			return materialInfoService.updMaterialOfflineById(listIds,offlineFlag);
+		}catch (Exception e){
+			log.error("素材下线异常",e);
+			return Result.error("请求失败,请联系开发人员!");
+		}
+	}
+
+
+
+
+
+
+
+
+
+
+
+}

+ 0 - 59
jeecg-boot-bytedance-ad/src/main/java/ctop/bytedance/ad/advertise/controller/MaterialInfoController.java

@@ -1,59 +0,0 @@
-package ctop.bytedance.ad.advertise.controller;
-
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import lombok.extern.slf4j.Slf4j;
-import org.jeecg.common.api.vo.Result;
-import ctop.bytedance.ad.common.service.IMaterialInfoService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
-
-import java.util.Arrays;
-import java.util.List;
-
-/**
- * 头条智能投放账户配置信息表
- * @author jeecg-boot
- * @date   2021-04-20
- * @version V1.0
- */
-@RestController
-@RequestMapping("/advertiser/materialInfoController")
-@Api(tags="视频素材")
-@Slf4j
-public class MaterialInfoController {
-	@Autowired
-	private IMaterialInfoService materialInfoService;
-
-
-
-	@ApiOperation(value="素材下线", notes="素材下线")
-	@GetMapping(value = "/updMaterialOfflineById")
-	public Result updMaterialOfflineById(@RequestParam("id") String id,
-								  		@RequestParam("offlineFlag") Integer offlineFlag) {
-		try {
-			List<String> listIds = Arrays.asList(id.split(","));
-			if (listIds.size() > 8){
-				return Result.errorMsg("已选视频素材最多支持8个。");
-			}
-			return materialInfoService.updMaterialOfflineById(listIds,offlineFlag);
-		}catch (Exception e){
-			log.error("素材下线异常",e);
-			return Result.error("请求失败,请联系开发人员!");
-		}
-	}
-
-
-
-
-
-
-
-
-
-
-
-}

+ 0 - 86
jeecg-boot-common/pom.xml

@@ -1,86 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>jeecg-boot-parent</artifactId>
-        <groupId>org.jeecgframework.boot</groupId>
-        <version>2.4.5</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-    <artifactId>jeecg-boot-common</artifactId>
-    <dependencies>
-        <dependency>
-            <groupId>org.jeecgframework.boot</groupId>
-            <artifactId>jeecg-boot-base-core</artifactId>
-        </dependency>
-        <!--引入微服务启动依赖 starter-->
-        <dependency>
-            <groupId>org.jeecgframework.boot</groupId>
-            <artifactId>jeecg-boot-starter-cloud</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.jeecgframework.boot</groupId>
-            <artifactId>jeecg-system-local-api</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.httpcomponents</groupId>
-            <artifactId>httpmime</artifactId>
-            <version>4.5.10</version>
-        </dependency>
-
-        <dependency>
-            <groupId>com.qcloud</groupId>
-            <artifactId>cos_api</artifactId>
-            <version>5.6.25</version>
-        </dependency>
-
-        <dependency>
-            <groupId>com.tencentcloudapi</groupId>
-            <artifactId>tencentcloud-sdk-java</artifactId>
-            <version>3.1.62</version>
-
-        </dependency>
-        <dependency>
-            <groupId>com.alibaba</groupId>
-            <artifactId>easyexcel</artifactId>
-            <version>1.1.2-beat1</version>
-        </dependency>
-        <dependency>
-            <groupId>com.github.tony19</groupId>
-            <artifactId>apktool-lib</artifactId>
-            <version>1.4.4-3</version>
-            <scope>compile</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>com.github.binarywang</groupId>
-            <artifactId>weixin-java-cp</artifactId>
-            <version>3.6.0</version>
-        </dependency>
-
-        <dependency>
-            <groupId>com.googlecode.plist</groupId>
-            <artifactId>dd-plist</artifactId>
-            <version>1.16</version>
-            <scope>compile</scope>
-        </dependency>
-        <dependency>
-            <groupId>thirtpart</groupId>
-            <artifactId>jave</artifactId>
-            <version>1.0</version>
-            <scope>system</scope>
-            <systemPath>${project.basedir}/src/main/resources/lib/jave-1.0.jar</systemPath>
-        </dependency>
-
-    </dependencies>
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.springframework.boot</groupId>
-                <artifactId>spring-boot-maven-plugin</artifactId>
-            </plugin>
-        </plugins>
-    </build>
-</project>

+ 0 - 24
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/JeecgBootCommonApplication.java

@@ -1,24 +0,0 @@
-package cn.com.ctop.common.module;
-
-import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
-import org.apache.shiro.spring.boot.autoconfigure.ShiroAnnotationProcessorAutoConfiguration;
-import org.apache.shiro.spring.boot.autoconfigure.ShiroAutoConfiguration;
-import org.apache.shiro.spring.boot.autoconfigure.ShiroBeanAutoConfiguration;
-import org.mybatis.spring.annotation.MapperScan;
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.cloud.openfeign.EnableFeignClients;
-import org.springframework.context.annotation.ComponentScan;
-
-@SpringBootApplication(exclude = {ShiroAnnotationProcessorAutoConfiguration.class, ShiroAutoConfiguration.class, ShiroBeanAutoConfiguration.class})
-@EnableDubbo
-@EnableFeignClients(basePackages ={"org.jeecg","cn.com.ctop.common.module"})
-@MapperScan(value={"cn.com.ctop.common.module.**.mapper*"})
-@ComponentScan(basePackages = {"cn.com.ctop.common.module","org.jeecg"})
-public class JeecgBootCommonApplication {
-
-    public static void main(String[] args) {
-        SpringApplication.run(JeecgBootCommonApplication.class, args);
-    }
-
-}

+ 0 - 106
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/BindAccountLogin.java

@@ -1,106 +0,0 @@
-package cn.com.ctop.common.module.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-import org.jeecg.common.aspect.annotation.Dict;
-import org.jeecgframework.poi.excel.annotation.Excel;
-
-import java.util.Date;
-
-/**
- * 账号绑定-登陆
- *
- * @author jeecg-boot
- * @version V1.0
- * @date 2019-07-31
- */
-@Data
-@TableName("ctop_bind_account_login")
-@EqualsAndHashCode(callSuper = false)
-@Accessors(chain = true)
-@ApiModel(value = "ctop_bind_account_login对象", description = "账号绑定-登陆")
-public class BindAccountLogin {
-
-    /**
-     * 主键ID
-     */
-    @TableId(type = IdType.AUTO)
-    @ApiModelProperty(value = "主键ID")
-    private Long id;
-    /**
-     * 广告id
-     */
-    @Excel(name = "广告id", width = 15)
-    @ApiModelProperty(value = "广告id")
-    private String advertiserId;
-
-    /**
-     * 广告名称
-     */
-    @Excel(name = "广告名称", width = 15)
-    @ApiModelProperty(value = "广告名称")
-    private String advertiserName;
-    /**
-     * 广告id
-     */
-    @Excel(name = "平台账户id", width = 15)
-    @ApiModelProperty(value = "平台账户id")
-    private String accountId;
-
-    @Dict(dicCode = "id",dictTable="sys_user",dicText="realname")
-    private String userId;
-    /**
-     * 账号
-     */
-    @Excel(name = "账号", width = 15)
-    @ApiModelProperty(value = "账号")
-    private String accountName;
-    /**
-     * 密码
-     */
-    @Excel(name = "密码", width = 15)
-    @ApiModelProperty(value = "密码")
-    private String password;
-    /**
-     * 登录方式
-     */
-    @Excel(name = "登录方式", width = 15)
-    @ApiModelProperty(value = "登录方式")
-    private String loginType;
-    /**
-     * 1未登陆 2已登陆
-     */
-    @Excel(name = "1未登陆 2已登陆", width = 15)
-    @ApiModelProperty(value = "1未登陆 2已登陆")
-    private String status;
-    /**
-     * 创建时间
-     */
-    @Excel(name = "创建时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
-    @ApiModelProperty(value = "创建时间")
-    private Date createTime;
-    /**
-     * 修改时间
-     */
-    @Excel(name = "修改时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
-    @ApiModelProperty(value = "修改时间")
-    private Date updateTime;
-
-    private String cookie;
-
-    public BindAccountLogin(Long id,String accountName) {
-        this.id = id;
-        this.accountName = accountName;
-    }
-
-    public BindAccountLogin() {
-    }
-
-    private Long projectId;
-}

+ 0 - 41
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/MaterialImageVideoInfo.java

@@ -1,41 +0,0 @@
-package cn.com.ctop.common.module.entity;
-
-import java.io.Serializable;
-import java.util.Date;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.baomidou.mybatisplus.annotation.TableField;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import org.springframework.format.annotation.DateTimeFormat;
-import org.jeecgframework.poi.excel.annotation.Excel;
-
-/**
- * 视频封面关联表信息
- * @author jeecg-boot
- * @date   2020-12-17
- * @version V1.0
- */
-@Data
-@TableName("ctop_material_image_video_info")
-public class MaterialImageVideoInfo {
-    
-	/**id*/
-	@TableId(type = IdType.AUTO)
-	private java.lang.Long id;
-	/**视频md5码*/
-	@Excel(name = "视频md5码", width = 15)
-	private java.lang.String videoCode;
-	/**封面md5码*/
-	@Excel(name = "封面md5码", width = 15)
-	private java.lang.String coverCode;
-	/**createTime*/
-	private java.util.Date createTime;
-	/**updateTime*/
-	private java.util.Date updateTime;
-}

+ 0 - 78
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/Product.java

@@ -1,78 +0,0 @@
-package cn.com.ctop.common.module.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-import org.jeecg.common.aspect.annotation.Dict;
-import org.jeecgframework.poi.excel.annotation.Excel;
-
-import java.util.Date;
-
-/**
- * 产品表
- *
- * @author jeecg-boot
- * @version V1.0
- * @date 2020-09-08
- */
-@Data
-@TableName("ctop_product")
-@EqualsAndHashCode(callSuper = false)
-@Accessors(chain = true)
-@ApiModel(value = "ctop_product对象", description = "产品表")
-public class Product {
-
-    /**
-     * id
-     */
-    @TableId(type = IdType.AUTO)
-    @ApiModelProperty(value = "id")
-    private Long id;
-    /**
-     * 产品名
-     */
-    @Excel(name = "产品名", width = 15)
-    @ApiModelProperty(value = "产品名")
-    private String productName;
-    /**
-     * advertiserId
-     */
-    @Excel(name = "advertiserId", width = 15)
-    @ApiModelProperty(value = "advertiserId")
-    @Dict(dicCode = "id", dictTable = "ctop_advertiser", dicText = "name")
-    private String advertiserId;
-    /**
-     * 创建人
-     */
-    @Excel(name = "创建人", width = 15)
-    @ApiModelProperty(value = "创建人")
-    @Dict(dicCode = "id", dictTable = "sys_user", dicText = "realname")
-    private String userId;
-
-    @Dict(dicCode = "id", dictTable = "sys_category", dicText = "name")
-    private String industryId;
-    /**
-     * 1正常0删除
-     */
-    @Excel(name = "1正常0删除", width = 15)
-    @ApiModelProperty(value = "1正常0删除")
-    private Integer productStatus;
-    /**
-     * createTime
-     */
-    @ApiModelProperty(value = "createTime")
-    private Date createTime;
-    /**
-     * updateTime
-     */
-    @ApiModelProperty(value = "updateTime")
-    private Date updateTime;
-    @TableField(exist = false)
-    private String advertiserName;
-}

+ 0 - 146
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/SysAnnouncement.java

@@ -1,146 +0,0 @@
-package cn.com.ctop.common.module.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import lombok.Data;
-import org.jeecg.common.aspect.annotation.Dict;
-import org.jeecgframework.poi.excel.annotation.Excel;
-import org.springframework.format.annotation.DateTimeFormat;
-
-import java.io.Serializable;
-
-/**
- * @Description: 系统通告表
- * @Author: jeecg-boot
- * @Date:  2019-01-02
- * @Version: V1.0
- */
-@Data
-@TableName("sys_announcement")
-public class SysAnnouncement implements Serializable {
-    private static final long serialVersionUID = 1L;
-
-    /**
-     * id
-     */
-    @TableId(type = IdType.ID_WORKER_STR)
-    private java.lang.String id;
-    /**
-     * 标题
-     */
-    @Excel(name = "标题", width = 15)
-    private java.lang.String titile;
-    /**
-     * 内容
-     */
-    @Excel(name = "内容", width = 30)
-    private java.lang.String msgContent;
-    /**
-     * 开始时间
-     */
-    @Excel(name = "开始时间", width = 15, format = "yyyy-MM-dd HH:mm:ss")
-    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
-    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    private java.util.Date startTime;
-    /**
-     * 结束时间
-     */
-    @Excel(name = "结束时间", width = 15, format = "yyyy-MM-dd HH:mm:ss")
-    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
-    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    private java.util.Date endTime;
-    /**
-     * 发布人
-     */
-    @Excel(name = "发布人", width = 15)
-    private java.lang.String sender;
-    /**
-     * 优先级(L低,M中,H高)
-     */
-    @Excel(name = "优先级", width = 15, dicCode = "priority")
-    @Dict(dicCode = "priority")
-    private java.lang.String priority;
-
-    /**
-     * 消息类型1:通知公告2:系统消息
-     */
-    @Excel(name = "消息类型", width = 15, dicCode = "msg_category")
-    @Dict(dicCode = "msg_category")
-    private java.lang.String msgCategory;
-    /**
-     * 通告对象类型(USER:指定用户,ALL:全体用户)
-     */
-    @Excel(name = "通告对象类型", width = 15, dicCode = "msg_type")
-    @Dict(dicCode = "msg_type")
-    private java.lang.String msgType;
-    /**
-     * 发布状态(0未发布,1已发布,2已撤销)
-     */
-    @Excel(name = "发布状态", width = 15, dicCode = "send_status")
-    @Dict(dicCode = "send_status")
-    private java.lang.String sendStatus;
-    /**
-     * 发布时间
-     */
-    @Excel(name = "发布时间", width = 15, format = "yyyy-MM-dd HH:mm:ss")
-    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
-    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    private java.util.Date sendTime;
-    /**
-     * 撤销时间
-     */
-    @Excel(name = "撤销时间", width = 15, format = "yyyy-MM-dd HH:mm:ss")
-    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
-    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    private java.util.Date cancelTime;
-    /**
-     * 删除状态(0,正常,1已删除)
-     */
-    private java.lang.String delFlag;
-    /**
-     * 创建人
-     */
-    private java.lang.String createBy;
-    /**
-     * 创建时间
-     */
-    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
-    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    private java.util.Date createTime;
-    /**
-     * 更新人
-     */
-    private java.lang.String updateBy;
-    /**
-     * 更新时间
-     */
-    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
-    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    private java.util.Date updateTime;
-    /**
-     * 指定用户
-     **/
-    private java.lang.String userIds;
-    /**
-     * 业务类型(email:邮件 bpm:流程)
-     */
-    private java.lang.String busType;
-    /**
-     * 业务id
-     */
-    private java.lang.String busId;
-    /**
-     * 打开方式 组件:component 路由:url
-     */
-    private java.lang.String openType;
-    /**
-     * 组件/路由 地址
-     */
-    private java.lang.String openPage;
-    /**
-     * 摘要
-     */
-    private java.lang.String msgAbstract;
-}

+ 0 - 48
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/SysAnnouncementSend.java

@@ -1,48 +0,0 @@
-package cn.com.ctop.common.module.entity;
-
-import java.io.Serializable;
-import java.util.Date;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import org.springframework.format.annotation.DateTimeFormat;
-
-/**
- * @Description: 用户通告阅读标记表
- * @Author: jeecg-boot
- * @Date:  2019-02-21
- * @Version: V1.0
- */
-@Data
-@TableName("sys_announcement_send")
-public class SysAnnouncementSend implements Serializable {
-    private static final long serialVersionUID = 1L;
-
-	/**id*/
-	@TableId(type = IdType.ID_WORKER_STR)
-	private java.lang.String id;
-	/**通告id*/
-	private java.lang.String anntId;
-	/**用户id*/
-	private java.lang.String userId;
-	/**阅读状态(0未读,1已读)*/
-	private java.lang.String readFlag;
-	/**阅读时间*/
-	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
-    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
-	private java.util.Date readTime;
-	/**创建人*/
-	private java.lang.String createBy;
-	/**创建时间*/
-	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
-    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
-	private java.util.Date createTime;
-	/**更新人*/
-	private java.lang.String updateBy;
-	/**更新时间*/
-	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
-    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
-	private java.util.Date updateTime;
-}

+ 0 - 58
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/SysCategory.java

@@ -1,58 +0,0 @@
-package cn.com.ctop.common.module.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import lombok.Data;
-import org.jeecgframework.poi.excel.annotation.Excel;
-import org.springframework.format.annotation.DateTimeFormat;
-
-import java.io.Serializable;
-
-/**
- * @Description: 分类字典
- * @Author: jeecg-boot
- * @Date:   2019-05-29
- * @Version: V1.0
- */
-@Data
-@TableName("sys_category")
-public class SysCategory implements Serializable {
-    private static final long serialVersionUID = 1L;
-
-	/**主键*/
-	@TableId(type = IdType.ID_WORKER_STR)
-	private java.lang.String id;
-	/**父级节点*/
-	@Excel(name = "父级节点", width = 15)
-	private java.lang.String pid;
-	/**类型名称*/
-	@Excel(name = "类型名称", width = 15)
-	private java.lang.String name;
-	/**类型编码*/
-	@Excel(name = "类型编码", width = 15)
-	private java.lang.String code;
-	/**创建人*/
-	@Excel(name = "创建人", width = 15)
-	private java.lang.String createBy;
-	/**创建日期*/
-	@Excel(name = "创建日期", width = 20, format = "yyyy-MM-dd HH:mm:ss")
-	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
-    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
-	private java.util.Date createTime;
-	/**更新人*/
-	@Excel(name = "更新人", width = 15)
-	private java.lang.String updateBy;
-	/**更新日期*/
-	@Excel(name = "更新日期", width = 20, format = "yyyy-MM-dd HH:mm:ss")
-	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
-    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
-	private java.util.Date updateTime;
-	/**所属部门*/
-	@Excel(name = "所属部门", width = 15)
-	private java.lang.String sysOrgCode;
-	/**是否有子节点*/
-	@Excel(name = "是否有子节点", width = 15)
-	private java.lang.String hasChild;
-}

+ 0 - 120
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/SysDataSource.java

@@ -1,120 +0,0 @@
-package cn.com.ctop.common.module.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-import org.jeecg.common.aspect.annotation.Dict;
-import org.jeecgframework.poi.excel.annotation.Excel;
-import org.springframework.format.annotation.DateTimeFormat;
-
-/**
- * @Description: 多数据源管理
- * @Author: jeecg-boot
- * @Date: 2019-12-25
- * @Version: V1.0
- */
-@Data
-@TableName("sys_data_source")
-@EqualsAndHashCode(callSuper = false)
-@Accessors(chain = true)
-@ApiModel(value = "sys_data_source对象", description = "多数据源管理")
-public class SysDataSource {
-
-    /**
-     * id
-     */
-    @TableId(type = IdType.ID_WORKER_STR)
-    @ApiModelProperty(value = "id")
-    private java.lang.String id;
-    /**
-     * 数据源编码
-     */
-    @Excel(name = "数据源编码", width = 15)
-    @ApiModelProperty(value = "数据源编码")
-    private java.lang.String code;
-    /**
-     * 数据源名称
-     */
-    @Excel(name = "数据源名称", width = 15)
-    @ApiModelProperty(value = "数据源名称")
-    private java.lang.String name;
-    /**
-     * 描述
-     */
-    @Excel(name = "备注", width = 15)
-    @ApiModelProperty(value = "备注")
-    private java.lang.String remark;
-    /**
-     * 数据库类型
-     */
-    @Dict(dicCode = "database_type")
-    @Excel(name = "数据库类型", width = 15, dicCode = "database_type")
-    @ApiModelProperty(value = "数据库类型")
-    private java.lang.String dbType;
-    /**
-     * 驱动类
-     */
-    @Excel(name = "驱动类", width = 15)
-    @ApiModelProperty(value = "驱动类")
-    private java.lang.String dbDriver;
-    /**
-     * 数据源地址
-     */
-    @Excel(name = "数据源地址", width = 15)
-    @ApiModelProperty(value = "数据源地址")
-    private java.lang.String dbUrl;
-    /**
-     * 数据库名称
-     */
-    @Excel(name = "数据库名称", width = 15)
-    @ApiModelProperty(value = "数据库名称")
-    private java.lang.String dbName;
-    /**
-     * 用户名
-     */
-    @Excel(name = "用户名", width = 15)
-    @ApiModelProperty(value = "用户名")
-    private java.lang.String dbUsername;
-    /**
-     * 密码
-     */
-    @Excel(name = "密码", width = 15)
-    @ApiModelProperty(value = "密码")
-    private java.lang.String dbPassword;
-    /**
-     * 创建人
-     */
-    @ApiModelProperty(value = "创建人")
-    private java.lang.String createBy;
-    /**
-     * 创建日期
-     */
-    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
-    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    @ApiModelProperty(value = "创建日期")
-    private java.util.Date createTime;
-    /**
-     * 更新人
-     */
-    @ApiModelProperty(value = "更新人")
-    private java.lang.String updateBy;
-    /**
-     * 更新日期
-     */
-    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
-    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    @ApiModelProperty(value = "更新日期")
-    private java.util.Date updateTime;
-    /**
-     * 所属部门
-     */
-    @Excel(name = "所属部门", width = 15)
-    @ApiModelProperty(value = "所属部门")
-    private java.lang.String sysOrgCode;
-}

+ 0 - 186
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/SysDepart.java

@@ -1,186 +0,0 @@
-package cn.com.ctop.common.module.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import lombok.Data;
-import org.jeecg.common.aspect.annotation.Dict;
-import org.jeecgframework.poi.excel.annotation.Excel;
-import org.springframework.format.annotation.DateTimeFormat;
-
-import java.io.Serializable;
-import java.util.Date;
-import java.util.Objects;
-
-/**
- * <p>
- * 部门表
- * <p>
- *
- * @Author Steve
- * @Since 2019-01-22
- */
-@Data
-@TableName("sys_depart")
-public class SysDepart implements Serializable {
-    private static final long serialVersionUID = 1L;
-
-    /**
-     * ID
-     */
-    @TableId(type = IdType.ID_WORKER_STR)
-    private String id;
-    /**
-     * 父机构ID
-     */
-    private String parentId;
-    /**
-     * 机构/部门名称
-     */
-    @Excel(name = "机构/部门名称", width = 15)
-    private String departName;
-    /**
-     * 英文名
-     */
-    @Excel(name = "英文名", width = 15)
-    private String departNameEn;
-    /**
-     * 缩写
-     */
-    private String departNameAbbr;
-    /**
-     * 排序
-     */
-    @Excel(name = "排序", width = 15)
-    private Integer departOrder;
-    /**
-     * 描述
-     */
-    @Excel(name = "描述", width = 15)
-    private String description;
-    /**
-     * 机构类别 1组织机构,2岗位
-     */
-    @Excel(name = "机构类别", width = 15, dicCode = "org_category")
-    private String orgCategory;
-    /**
-     * 机构类型
-     */
-    private String orgType;
-    /**
-     * 机构编码
-     */
-    @Excel(name = "机构编码", width = 15)
-    private String orgCode;
-    /**
-     * 手机号
-     */
-    @Excel(name = "手机号", width = 15)
-    private String mobile;
-    /**
-     * 传真
-     */
-    @Excel(name = "传真", width = 15)
-    private String fax;
-    /**
-     * 地址
-     */
-    @Excel(name = "地址", width = 15)
-    private String address;
-    /**
-     * 备注
-     */
-    @Excel(name = "备注", width = 15)
-    private String memo;
-    /**
-     * 状态(1启用,0不启用)
-     */
-    @Dict(dicCode = "depart_status")
-    private String status;
-    /**
-     * 删除状态(0,正常,1已删除)
-     */
-    @Dict(dicCode = "del_flag")
-    private String delFlag;
-    /**
-     * 创建人
-     */
-    private String createBy;
-    /**
-     * 创建日期
-     */
-    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
-    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    private Date createTime;
-    /**
-     * 更新人
-     */
-    private String updateBy;
-    /**
-     * 更新日期
-     */
-    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
-    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    private Date updateTime;
-    /**
-     * 领导 ID
-     */
-    private String leaderId;
-
-    @TableField(exist = false)
-    private String title;
-
-    /**
-     * 领导姓名
-     */
-    private String leaderName;
-
-    /**
-     * 重写equals方法
-     */
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) {
-            return true;
-        }
-        if (o == null || getClass() != o.getClass()) {
-            return false;
-        }
-        if (!super.equals(o)) {
-            return false;
-        }
-        SysDepart depart = (SysDepart) o;
-        return Objects.equals(id, depart.id) &&
-                Objects.equals(parentId, depart.parentId) &&
-                Objects.equals(departName, depart.departName) &&
-                Objects.equals(departNameEn, depart.departNameEn) &&
-                Objects.equals(departNameAbbr, depart.departNameAbbr) &&
-                Objects.equals(departOrder, depart.departOrder) &&
-                Objects.equals(description, depart.description) &&
-                Objects.equals(orgType, depart.orgType) &&
-                Objects.equals(orgCode, depart.orgCode) &&
-                Objects.equals(mobile, depart.mobile) &&
-                Objects.equals(fax, depart.fax) &&
-                Objects.equals(address, depart.address) &&
-                Objects.equals(memo, depart.memo) &&
-                Objects.equals(status, depart.status) &&
-                Objects.equals(delFlag, depart.delFlag) &&
-                Objects.equals(createBy, depart.createBy) &&
-                Objects.equals(createTime, depart.createTime) &&
-                Objects.equals(updateBy, depart.updateBy) &&
-                Objects.equals(updateTime, depart.updateTime);
-    }
-
-    /**
-     * 重写hashCode方法
-     */
-    @Override
-    public int hashCode() {
-        return Objects.hash(super.hashCode(), id, parentId, departName,
-                departNameEn, departNameAbbr, departOrder, description,
-                orgType, orgCode, mobile, fax, address, memo, status,
-                delFlag, createBy, createTime, updateBy, updateTime);
-    }
-}

+ 0 - 50
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/SysDepartPermission.java

@@ -1,50 +0,0 @@
-package cn.com.ctop.common.module.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-import org.jeecgframework.poi.excel.annotation.Excel;
-
-/**
- * @Description: 部门权限表
- * @Author: jeecg-boot
- * @Date:   2020-02-11
- * @Version: V1.0
- */
-@Data
-@TableName("sys_depart_permission")
-@EqualsAndHashCode(callSuper = false)
-@Accessors(chain = true)
-@ApiModel(value="sys_depart_permission对象", description="部门权限表")
-public class SysDepartPermission {
-
-	/**id*/
-	@TableId(type = IdType.ID_WORKER_STR)
-    @ApiModelProperty(value = "id")
-	private java.lang.String id;
-	/**部门id*/
-	@Excel(name = "部门id", width = 15)
-    @ApiModelProperty(value = "部门id")
-	private java.lang.String departId;
-	/**权限id*/
-	@Excel(name = "权限id", width = 15)
-    @ApiModelProperty(value = "权限id")
-	private java.lang.String permissionId;
-	/**数据规则id*/
-	@ApiModelProperty(value = "数据规则id")
-	private java.lang.String dataRuleIds;
-
-	public SysDepartPermission() {
-
-	}
-
-	public SysDepartPermission(String departId, String permissionId) {
-		this.departId = departId;
-		this.permissionId = permissionId;
-	}
-}

+ 0 - 70
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/SysDepartRole.java

@@ -1,70 +0,0 @@
-package cn.com.ctop.common.module.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-import org.jeecg.common.aspect.annotation.Dict;
-import org.jeecgframework.poi.excel.annotation.Excel;
-import org.springframework.format.annotation.DateTimeFormat;
-
-/**
- * @Description: 部门角色
- * @Author: jeecg-boot
- * @Date:   2020-02-12
- * @Version: V1.0
- */
-@Data
-@TableName("sys_depart_role")
-@EqualsAndHashCode(callSuper = false)
-@Accessors(chain = true)
-@ApiModel(value="sys_depart_role对象", description="部门角色")
-public class SysDepartRole {
-
-	/**id*/
-	@TableId(type = IdType.ID_WORKER_STR)
-    @ApiModelProperty(value = "id")
-	private String id;
-	/**部门id*/
-	@Excel(name = "部门id", width = 15)
-	@ApiModelProperty(value = "部门id")
-	@Dict(dictTable ="sys_depart",dicText = "depart_name",dicCode = "id")
-	private String departId;
-	/**部门角色名称*/
-	@Excel(name = "部门角色名称", width = 15)
-    @ApiModelProperty(value = "部门角色名称")
-	private String roleName;
-	/**部门角色编码*/
-	@Excel(name = "部门角色编码", width = 15)
-    @ApiModelProperty(value = "部门角色编码")
-	private String roleCode;
-	/**描述*/
-	@Excel(name = "描述", width = 15)
-    @ApiModelProperty(value = "描述")
-	private String description;
-	/**创建人*/
-	@Excel(name = "创建人", width = 15)
-    @ApiModelProperty(value = "创建人")
-	private String createBy;
-	/**创建时间*/
-	@Excel(name = "创建时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
-	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
-    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
-    @ApiModelProperty(value = "创建时间")
-	private java.util.Date createTime;
-	/**更新人*/
-	@Excel(name = "更新人", width = 15)
-    @ApiModelProperty(value = "更新人")
-	private String updateBy;
-	/**更新时间*/
-	@Excel(name = "更新时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
-	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
-    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
-    @ApiModelProperty(value = "更新时间")
-	private java.util.Date updateTime;
-}

+ 0 - 54
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/SysDepartRolePermission.java

@@ -1,54 +0,0 @@
-package cn.com.ctop.common.module.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-import org.jeecgframework.poi.excel.annotation.Excel;
-
-/**
- * @Description: 部门角色权限
- * @Author: jeecg-boot
- * @Date:   2020-02-12
- * @Version: V1.0
- */
-@Data
-@TableName("sys_depart_role_permission")
-@EqualsAndHashCode(callSuper = false)
-@Accessors(chain = true)
-@ApiModel(value="sys_depart_role_permission对象", description="部门角色权限")
-public class SysDepartRolePermission {
-
-	/**id*/
-	@TableId(type = IdType.ID_WORKER_STR)
-    @ApiModelProperty(value = "id")
-	private java.lang.String id;
-	/**部门id*/
-	@Excel(name = "部门id", width = 15)
-    @ApiModelProperty(value = "部门id")
-	private java.lang.String departId;
-	/**角色id*/
-	@Excel(name = "角色id", width = 15)
-    @ApiModelProperty(value = "角色id")
-	private java.lang.String roleId;
-	/**权限id*/
-	@Excel(name = "权限id", width = 15)
-    @ApiModelProperty(value = "权限id")
-	private java.lang.String permissionId;
-	/**dataRuleIds*/
-	@Excel(name = "dataRuleIds", width = 15)
-    @ApiModelProperty(value = "dataRuleIds")
-	private java.lang.String dataRuleIds;
-
-	public SysDepartRolePermission() {
-	}
-
-	public SysDepartRolePermission(String roleId, String permissionId) {
-		this.roleId = roleId;
-		this.permissionId = permissionId;
-	}
-}

+ 0 - 82
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/SysDict.java

@@ -1,82 +0,0 @@
-package cn.com.ctop.common.module.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableLogic;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-
-import java.io.Serializable;
-import java.util.Date;
-
-/**
- * <p>
- * 字典表
- * </p>
- *
- * @Author zhangweijian
- * @since 2018-12-28
- */
-@Data
-@EqualsAndHashCode(callSuper = false)
-@Accessors(chain = true)
-public class SysDict implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    /**
-     * id
-     */
-    @TableId(type = IdType.ID_WORKER_STR)
-    private String id;
-
-    /**
-     * [预留字段,暂时无用]
-     * 字典类型,0 string,1 number类型,2 boolean
-     * 前端js对stirng类型和number类型 boolean 类型敏感,需要区分。在select 标签匹配的时候会用到
-     * 默认为string类型
-     */
-    private Integer type;
-
-    /**
-     * 字典名称
-     */
-    private String dictName;
-
-    /**
-     * 字典编码
-     */
-    private String dictCode;
-
-    /**
-     * 描述
-     */
-    private String description;
-
-    /**
-     * 删除状态
-     */
-    @TableLogic
-    private Integer delFlag;
-
-    /**
-     * 创建人
-     */
-    private String createBy;
-
-    /**
-     * 创建时间
-     */
-    private Date createTime;
-
-    /**
-     * 更新人
-     */
-    private String updateBy;
-
-    /**
-     * 更新时间
-     */
-    private Date updateTime;
-}

+ 0 - 80
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/SysDictItem.java

@@ -1,80 +0,0 @@
-package cn.com.ctop.common.module.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-import org.jeecg.common.aspect.annotation.Dict;
-import org.jeecgframework.poi.excel.annotation.Excel;
-
-import java.io.Serializable;
-import java.util.Date;
-
-/**
- * <p>
- *
- * </p>
- *
- * @Author zhangweijian
- * @since 2018-12-28
- */
-@Data
-@EqualsAndHashCode(callSuper = false)
-@Accessors(chain = true)
-public class SysDictItem implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    /**
-     * id
-     */
-    @TableId(type = IdType.ID_WORKER_STR)
-    private String id;
-
-    /**
-     * 字典id
-     */
-    private String dictId;
-
-    /**
-     * 字典项文本
-     */
-    @Excel(name = "字典项文本", width = 20)
-    private String itemText;
-
-    /**
-     * 字典项值
-     */
-    @Excel(name = "字典项值", width = 30)
-    private String itemValue;
-
-    /**
-     * 描述
-     */
-    @Excel(name = "描述", width = 40)
-    private String description;
-
-    /**
-     * 排序
-     */
-    @Excel(name = "排序", width = 15,type=4)
-    private Integer sortOrder;
-
-
-    /**
-     * 状态(1启用 0不启用)
-     */
-    @Dict(dicCode = "dict_item_status")
-    private Integer status;
-
-    private String createBy;
-
-    private Date createTime;
-
-    private String updateBy;
-
-    private Date updateTime;
-
-
-}

+ 0 - 112
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/SysLog.java

@@ -1,112 +0,0 @@
-package cn.com.ctop.common.module.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-import org.jeecg.common.aspect.annotation.Dict;
-import org.springframework.format.annotation.DateTimeFormat;
-
-import java.io.Serializable;
-import java.util.Date;
-
-/**
- * <p>
- * 系统日志表
- * </p>
- *
- * @Author zhangweijian
- * @since 2018-12-26
- */
-@Data
-@EqualsAndHashCode(callSuper = false)
-@Accessors(chain = true)
-public class SysLog implements Serializable {
-
-	private static final long serialVersionUID = 1L;
-
-	/**
-	 * id
-	 */
-	@TableId(type = IdType.ID_WORKER_STR)
-	private String id;
-
-	/**
-	 * 创建人
-	 */
-	private String createBy;
-
-	/**
-	 * 创建时间
-	 */
-	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
-	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-	private Date createTime;
-
-	/**
-	 * 更新人
-	 */
-	private String updateBy;
-
-	/**
-	 * 更新时间
-	 */
-	private Date updateTime;
-
-	/**
-	 * 耗时
-	 */
-	private Long costTime;
-
-	/**
-	 * IP
-	 */
-	private String ip;
-
-	/**
-	 * 请求参数
-	 */
-	private String requestParam;
-
-	/**
-	 * 请求类型
-	 */
-	private String requestType;
-
-	/**
-	 * 请求路径
-	 */
-	private String requestUrl;
-	/**
-	 * 请求方法
-	 */
-	private String method;
-
-	/**
-	 * 操作人用户名称
-	 */
-	private String username;
-	/**
-	 * 操作人用户账户
-	 */
-	private String userid;
-	/**
-	 * 操作详细日志
-	 */
-	private String logContent;
-
-	/**
-	 * 日志类型(1登录日志,2操作日志)
-	 */
-	@Dict(dicCode = "log_type")
-	private Integer logType;
-
-	/**
-	 * 操作类型(1查询,2添加,3修改,4删除,5导入,6导出)
-	 */
-	@Dict(dicCode = "operate_type")
-	private Integer operateType;
-
-}

+ 0 - 183
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/SysPermission.java

@@ -1,183 +0,0 @@
-package cn.com.ctop.common.module.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-import org.jeecg.common.aspect.annotation.Dict;
-
-import java.io.Serializable;
-import java.util.Date;
-
-/**
- * <p>
- * 菜单权限表
- * </p>
- *
- * @Author scott
- * @since 2018-12-21
- */
-@Data
-@EqualsAndHashCode(callSuper = false)
-@Accessors(chain = true)
-public class SysPermission implements Serializable {
-
-	private static final long serialVersionUID = 1L;
-
-	/**
-	 * id
-	 */
-	@TableId(type = IdType.ID_WORKER_STR)
-	private String id;
-
-	/**
-	 * 父id
-	 */
-	private String parentId;
-
-	/**
-	 * 菜单名称
-	 */
-	private String name;
-
-	/**
-	 * 菜单权限编码,例如:“sys:schedule:list,sys:schedule:info”,多个逗号隔开
-	 */
-	private String perms;
-	/**
-	 * 权限策略1显示2禁用
-	 */
-	private String permsType;
-
-	/**
-	 * 菜单图标
-	 */
-	private String icon;
-
-	/**
-	 * 组件
-	 */
-	private String component;
-
-	/**
-	 * 组件名字
-	 */
-	private String componentName;
-
-	/**
-	 * 路径
-	 */
-	private String url;
-	/**
-	 * 一级菜单跳转地址
-	 */
-	private String redirect;
-
-	/**
-	 * 菜单排序
-	 */
-	private Double sortNo;
-
-	/**
-	 * 类型(0:一级菜单;1:子菜单 ;2:按钮权限)
-	 */
-	@Dict(dicCode = "menu_type")
-	private Integer menuType;
-
-	/**
-	 * 是否叶子节点: 1:是  0:不是
-	 */
-	@TableField(value="is_leaf")
-	private boolean leaf;
-
-	/**
-	 * 是否路由菜单: 0:不是  1:是(默认值1)
-	 */
-	@TableField(value="is_route")
-	private boolean route;
-
-
-	/**
-	 * 是否缓存页面: 0:不是  1:是(默认值1)
-	 */
-	@TableField(value="keep_alive")
-	private boolean keepAlive;
-
-	/**
-	 * 描述
-	 */
-	private String description;
-
-	/**
-	 * 创建人
-	 */
-	private String createBy;
-
-	/**
-	 * 删除状态 0正常 1已删除
-	 */
-	private Integer delFlag;
-
-	/**
-	 * 是否配置菜单的数据权限 1是0否 默认0
-	 */
-	private Integer ruleFlag;
-
-	/**
-	 * 是否隐藏路由菜单: 0否,1是(默认值0)
-	 */
-	private boolean hidden;
-
-	/**
-	 * 创建时间
-	 */
-	private Date createTime;
-
-	/**
-	 * 更新人
-	 */
-	private String updateBy;
-
-	/**
-	 * 更新时间
-	 */
-	private Date updateTime;
-
-	/**按钮权限状态(0无效1有效)*/
-	private String status;
-
-	/**alwaysShow*/
-    private boolean alwaysShow;
-
-
-	/*update_begin author:wuxianquan date:20190908 for:实体增加字段 */
-    /** 外链菜单打开方式 0/内部打开 1/外部打开 */
-    private boolean internalOrExternal;
-	/*update_end author:wuxianquan date:20190908 for:实体增加字段 */
-
-    public SysPermission() {
-
-    }
-    public SysPermission(boolean index) {
-    	if(index) {
-    		this.id = "9502685863ab87f0ad1134142788a385";
-        	this.name="首页";
-        	this.component="dashboard/Analysis";
-        	this.componentName="dashboard-analysis";
-        	this.url="/dashboard/analysis";
-        	this.icon="home";
-        	this.menuType=0;
-        	this.sortNo=0.0;
-        	this.ruleFlag=0;
-        	this.delFlag=0;
-        	this.alwaysShow=false;
-        	this.route=true;
-        	this.keepAlive=true;
-        	this.leaf=true;
-        	this.hidden=false;
-    	}
-
-    }
-}

+ 0 - 223
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/SysUser.java

@@ -1,223 +0,0 @@
-package cn.com.ctop.common.module.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableLogic;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-import org.jeecg.common.aspect.annotation.Dict;
-import org.jeecgframework.poi.excel.annotation.Excel;
-import org.springframework.format.annotation.DateTimeFormat;
-
-import java.io.Serializable;
-import java.util.Date;
-
-/**
- * <p>
- * 用户表
- * </p>
- *
- * @Author scott
- * @since 2018-12-20
- */
-@Data
-@EqualsAndHashCode(callSuper = false)
-@Accessors(chain = true)
-public class SysUser implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    /**
-     * id
-     */
-    @TableId(type = IdType.UUID)
-    private String id;
-
-    private String departId;
-
-    /**
-     * 登录账号
-     */
-    @Excel(name = "登录账号", width = 15)
-    private String username;
-
-    /**
-     * 真实姓名
-     */
-    @Excel(name = "真实姓名", width = 15)
-    private String realname;
-
-    /**
-     * 密码
-     */
-    @JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
-    private String password;
-
-    /**
-     * md5密码盐
-     */
-    @JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
-    private String salt;
-
-    /**
-     * 头像
-     */
-    @Excel(name = "头像", width = 15,type = 2)
-    private String avatar;
-
-    /**
-     * 生日
-     */
-    @Excel(name = "生日", width = 15, format = "yyyy-MM-dd")
-    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
-    @DateTimeFormat(pattern = "yyyy-MM-dd")
-    private Date birthday;
-
-    /**
-     * 性别(1:男 2:女)
-     */
-    @Excel(name = "性别", width = 15, dicCode = "sex")
-    @Dict(dicCode = "sex")
-    private Integer sex;
-
-    /**
-     * 电子邮件
-     */
-    @Excel(name = "电子邮件", width = 15)
-    private String email;
-
-    /**
-     * 电话
-     */
-    @Excel(name = "电话", width = 15)
-    private String phone;
-
-    /**
-     * 部门code(当前选择登录部门)
-     */
-    private String orgCode;
-
-    /**
-     * 状态(1:正常  2:冻结 )
-     */
-    @Excel(name = "状态", width = 15,dicCode="user_status")
-    @Dict(dicCode = "user_status")
-    private Integer status;
-
-    /**
-     * 删除状态(0,正常,1已删除)
-     */
-    @Excel(name = "删除状态", width = 15,dicCode="del_flag")
-    @TableLogic
-    private Integer delFlag;
-
-    /**
-     * 工号,唯一键
-     */
-    @Excel(name = "工号", width = 15)
-    private String workNo;
-
-    /**
-     * 职务,关联职务表
-     */
-    @Excel(name = "职务", width = 15)
-    private String post;
-
-    /**
-     * 座机号
-     */
-    @Excel(name = "座机号", width = 15)
-    private String telephone;
-
-    /**
-     * 创建人
-     */
-    private String createBy;
-
-    /**
-     * 创建时间
-     */
-    private Date createTime;
-
-    /**
-     * 更新人
-     */
-    private String updateBy;
-
-    /**
-     * 更新时间
-     */
-    private Date updateTime;
-    /**
-     * 同步工作流引擎1同步0不同步
-     */
-    private Integer activitiSync;
-
-    /**
-     * 身份(0 普通成员 1 上级)
-     */
-    @Excel(name="(1普通成员 2上级)",width = 15)
-    private Integer userIdentity;
-
-    /**
-     * 负责部门
-     */
-    @Excel(name="负责部门",width = 15,dictTable ="sys_depart",dicText = "depart_name",dicCode = "id")
-    @Dict(dictTable ="sys_depart",dicText = "depart_name",dicCode = "id")
-    private String departIds;
-
-
-    /**
-     * 第三方登录的唯一标识
-     */
-    private String thirdId;
-
-    /**
-     * 第三方类型 <br>
-     * (github/github,wechat_enterprise/企业微信,dingtalk/钉钉)
-     */
-    private String thirdType;
-
-    /**
-     * 职务
-     */
-    @TableField(exist = false)
-    private String position;
-    /**
-     * 区域
-     */
-    @TableField(exist = false)
-    private String area;
-    /**
-     * 部门
-     */
-    @TableField(exist = false)
-    private String depart;
-
-    /**
-     * 角色
-     */
-    @TableField(exist = false)
-    private String roleName;
-
-    /**
-     * 组织机构名称
-     */
-    @TableField(exist = false)
-    private String departName;
-
-    /**
-     * 领导 ID
-     */
-    private String leaderId;
-
-    /**
-     * 领导姓名
-     */
-    private String leaderName;
-
-}

+ 0 - 49
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/SysUserRole.java

@@ -1,49 +0,0 @@
-package cn.com.ctop.common.module.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-
-import java.io.Serializable;
-
-/**
- * <p>
- * 用户角色表
- * </p>
- *
- * @Author scott
- * @since 2018-12-21
- */
-@Data
-@EqualsAndHashCode(callSuper = false)
-@Accessors(chain = true)
-public class SysUserRole implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    @TableId(type = IdType.ID_WORKER_STR)
-    private String id;
-
-    /**
-     * 用户id
-     */
-    private String userId;
-
-    /**
-     * 角色id
-     */
-    private String roleId;
-
-	public SysUserRole() {
-	}
-
-	public SysUserRole(String userId, String roleId) {
-		this.userId = userId;
-		this.roleId = roleId;
-	}
-
-
-
-}

+ 0 - 57
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/TagInfo.java

@@ -1,57 +0,0 @@
-package cn.com.ctop.common.module.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import io.swagger.annotations.ApiModel;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-import org.jeecg.common.aspect.annotation.Dict;
-
-import java.util.Date;
-import java.util.List;
-
-/**
- * 标签信息
- * @author jeecg-boot
- * @date   2020-08-26
- * @version V1.0
- */
-@Data
-@TableName("ctop_tag_info")
-@EqualsAndHashCode(callSuper = false)
-@Accessors(chain = true)
-@ApiModel(value="ctop_tag_info对象", description="标签信息")
-public class TagInfo {
-	@TableId(type = IdType.AUTO)
-	private Long id;
-	@Dict(dicCode = "id",dictTable="ctop_tag_info",dicText="tag_name")
-	private Long parentId;
-	private Long tagCategoryId;
-	private String tagCategoryName;
-	@Dict(dicCode = "id",dictTable="ctop_tag_info",dicText="tag_name")
-	private Long firstTagId;
-	@Dict(dicCode = "id",dictTable="ctop_tag_info",dicText="tag_name")
-	private Long secendTagId;
-	@Dict(dicCode = "id",dictTable="sys_user",dicText="realname")
-	private String userId;
-	private String tagName;
-	private Integer tagOrder;
-	private String description;
-	private String model;
-	private String tagCode;
-	private Integer level;
-	private Integer status;
-	private Integer delFlag;
-	@TableField(value="is_leaf")
-	private boolean leaf;
-	private Date createTime;
-	private Date updateTime;
-
-	@TableField(exist = false)
-	List<TagInfo> children;
-
-
-}

+ 0 - 174
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/UserAllocation.java

@@ -1,174 +0,0 @@
-package cn.com.ctop.common.module.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-import org.jeecg.common.aspect.annotation.Dict;
-import org.jeecgframework.poi.excel.annotation.Excel;
-import org.springframework.format.annotation.DateTimeFormat;
-
-import java.io.Serializable;
-import java.math.BigDecimal;
-import java.util.Date;
-
-/**
- * 用户分配
- *
- * @author jeecg-boot
- * @version V1.0
- * @date 2019-08-08
- */
-@Data
-@TableName("ctop_user_allocation")
-@EqualsAndHashCode(callSuper = false)
-@Accessors(chain = true)
-@ApiModel(value = "ctop_user_allocation对象", description = "用户分配")
-public class UserAllocation implements Serializable {
-
-    /**
-     * 主键ID
-     */
-    @TableId(type = IdType.AUTO)
-    @ApiModelProperty(value = "主键ID")
-    private Long id;
-    /**
-     * 登陆人id
-     */
-    @Excel(name = "登陆人id", width = 15)
-    @ApiModelProperty(value = "登陆人id")
-    private String userId;
-
-
-    @Excel(name = "登陆人名称", width = 15)
-    @ApiModelProperty(value = "登陆人名称")
-    private String userName;
-
-    /**
-     * 账户id --授权
-     */
-    @Excel(name = "账户id --授权", width = 15)
-    @ApiModelProperty(value = "账户id --授权")
-    private Long accountId;
-    /**
-     * 广告主ID
-     */
-    @Excel(name = "广告主ID", width = 15)
-    @ApiModelProperty(value = "广告主ID")
-    @Dict(dicCode = "id", dictTable = "ctop_advertiser", dicText = "name")
-    private String advertiserId;
-
-    private String systemType;
-
-    /**
-     * 项目id
-     */
-    @Dict(dicCode = "id", dictTable = "ctop_project", dicText = "project_name")
-    private Long projectId;
-
-    /**
-     * 输入账号  --登陆
-     */
-    @Excel(name = "输入账号  --登陆", width = 15)
-    @ApiModelProperty(value = "输入账号  --登陆")
-    private String accountName;
-
-    /**
-     * 预警 金额
-     */
-    private BigDecimal warningAmount;
-
-    /**
-     * 预警 比例
-     */
-    private BigDecimal warningProportion;
-
-    /**
-     * 创建时间
-     */
-    @Excel(name = "创建时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
-    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
-    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    @ApiModelProperty(value = "创建时间")
-    private Date createTime;
-
-    /**
-     * 授权名称
-     */
-    @Excel(name = "授权名称", width = 15)
-    @ApiModelProperty(value = "授权名称")
-    private String authName;
-
-    /**
-     * 授权开始时间
-     */
-    @Excel(name = "授权开始时间", width = 15)
-    @ApiModelProperty(value = "授权开始时间")
-    private String authBeginTime;
-
-
-    /**
-     * 0 启动
-     * 1 禁用
-     */
-    private Integer accountStatus;
-
-    /**
-     * 检测链接预警
-     * 0 启动
-     * 1 禁用
-     */
-    private Integer monitoringLink;
-
-    /**
-     * 检测链接预警
-     * 0 启动
-     * 1 禁用
-     */
-    private Integer landingPage;
-
-    /**
-     * 是否开启删评论
-     * 0 启动
-     * 1 禁用
-     */
-    private Integer deleteComment;
-    /**
-     * 自动投放,0关闭,1开启
-     */
-    private Integer autoDelivery;
-    /**
-     * 物料类型 0-不同步,1应用包,(2人群包,3定向包)
-     */
-    private String materialType;
-
-    /**
-     * 修改时间
-     */
-    @Excel(name = "修改时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
-    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
-    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    @ApiModelProperty(value = "修改时间")
-    private Date updateTime;
-    /**
-     * 平台类型 1 头条 2快手
-     */
-    @Excel(name = "平台类型 1 头条 2快手", width = 15)
-    @ApiModelProperty(value = "平台类型 1 头条 2快手")
-    private String mediaId;
-
-
-
-
-   /* @TableField(exist = false)
-    private String advertiserName;
-
-    @TableField(exist = false)
-    private String projectName;*/
-
-}

+ 0 - 18
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/mapper/CtopCorpWexinUserMapper.java

@@ -1,18 +0,0 @@
-package cn.com.ctop.common.module.mapper;
-
-import cn.com.ctop.common.module.entity.CtopCorpWexinUser;
-import org.apache.ibatis.annotations.Param;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-
-/**
- * 企业微信用户表
- *
- * @author: jeecg-boot
- * @date: 2019-12-08
- * @cersion: V1.0
- */
-public interface CtopCorpWexinUserMapper extends BaseMapper<CtopCorpWexinUser> {
-
-    String queryEmailByUserId(@Param("userId") String userId);
-
-}

+ 0 - 26
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/mapper/MaterialCutFrameMapper.java

@@ -1,26 +0,0 @@
-package cn.com.ctop.common.module.mapper;
-
-import cn.com.ctop.common.module.entity.MaterialCutFrame;
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.apache.ibatis.annotations.Param;
-
-import java.util.List;
-
-
-/**
- * 截屏
- *
- * @author: jeecg-boot
- * @date: 2019-12-25
- * @cersion: V1.0
- */
-public interface MaterialCutFrameMapper extends BaseMapper<MaterialCutFrame> {
-
-    List<MaterialCutFrame> getListByVideoSignature(@Param(value = "videoSignature") String signature);
-
-    List<JSONObject> getProgramCreativeCover(@Param("signature") String signature);
-
-    JSONObject getCutFrameByVideoMd5(@Param("photoId") String photoId,@Param("imageToken") String imageToken);
-}

+ 0 - 8
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/mapper/MusicTypeMapper.java

@@ -1,8 +0,0 @@
-package cn.com.ctop.common.module.mapper;
-
-import cn.com.ctop.common.module.entity.MusicInfo;
-import cn.com.ctop.common.module.entity.MusicType;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-
-public interface MusicTypeMapper extends BaseMapper<MusicType> {
-}

+ 0 - 12
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/mapper/RuleDateUnitKuaishouMapper.java

@@ -1,12 +0,0 @@
-package cn.com.ctop.common.module.mapper;
-
-import cn.com.ctop.common.module.entity.RuleDateUnitKuaishou;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-
-/**
- * 预警快手计划数据清洗
- */
-public interface RuleDateUnitKuaishouMapper extends BaseMapper<RuleDateUnitKuaishou> {
-
-}

+ 0 - 31
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/mapper/SysCategoryMapper.java

@@ -1,31 +0,0 @@
-package cn.com.ctop.common.module.mapper;
-
-import cn.com.ctop.common.module.entity.SysCategory;
-import cn.com.ctop.common.module.model.TreeSelectModel;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.apache.ibatis.annotations.Param;
-import org.apache.ibatis.annotations.Select;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * @Description: 分类字典
- * @Author: jeecg-boot
- * @Date:   2019-05-29
- * @Version: V1.0
- */
-public interface SysCategoryMapper extends BaseMapper<SysCategory> {
-
-	/**
-	  *  根据父级ID查询树节点数据
-	 * @param pid
-	 * @return
-	 */
-	public List<TreeSelectModel> queryListByPid(@Param("pid")  String pid, @Param("query") Map<String, String> query);
-
-	@Select("SELECT ID FROM sys_category WHERE CODE = #{code,jdbcType=VARCHAR}")
-	public String queryIdByCode(@Param("code")  String code);
-
-
-}

+ 0 - 14
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/mapper/SysDataSourceMapper.java

@@ -1,14 +0,0 @@
-package cn.com.ctop.common.module.mapper;
-
-import cn.com.ctop.common.module.entity.SysDataSource;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-
-/**
- * @Description: 多数据源管理
- * @Author: jeecg-boot
- * @Date: 2019-12-25
- * @Version: V1.0
- */
-public interface SysDataSourceMapper extends BaseMapper<SysDataSource> {
-
-}

+ 0 - 62
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/mapper/SysDepartMapper.java

@@ -1,62 +0,0 @@
-package cn.com.ctop.common.module.mapper;
-
-import cn.com.ctop.common.module.entity.SysDepart;
-import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.apache.ibatis.annotations.Param;
-import org.apache.ibatis.annotations.Select;
-
-import java.util.List;
-
-/**
- * <p>
- * 部门 Mapper 接口
- * <p>
- *
- * @Author: Steve
- * @Since: 2019-01-22
- */
-public interface SysDepartMapper extends BaseMapper<SysDepart> {
-
-    /**
-     * 根据用户ID查询部门集合
-     */
-    public List<SysDepart> queryUserDeparts(@Param("userId") String userId);
-
-    /**
-     * 根据用户名查询部门
-     *
-     * @param username
-     * @return
-     */
-    public List<SysDepart> queryDepartsByUsername(@Param("username") String username);
-
-    @Select("select id from sys_depart where org_code=#{orgCode}")
-    public String queryDepartIdByOrgCode(@Param("orgCode") String orgCode);
-
-    @Select("select id,parent_id from sys_depart where id=#{departId}")
-    public SysDepart getParentDepartId(@Param("departId") String departId);
-
-    /**
-     * 根据部门Id查询,当前和下级所有部门IDS
-     *
-     * @param departId
-     * @return
-     */
-    List<String> getSubDepIdsByDepId(@Param("departId") String departId);
-
-    /**
-     * 根据部门编码获取部门下所有IDS
-     *
-     * @param orgCodes
-     * @return
-     */
-    List<String> getSubDepIdsByOrgCodes(@org.apache.ibatis.annotations.Param("orgCodes") String[] orgCodes);
-
-    SysDepart queryUserDepartsByDepartId(@Param("departId") String departId);
-
-    List<JSONObject> getDepartmentIds(@Param("userId") String userId);
-
-    List<JSONObject> checkLowestLevelDepartment(@Param("departIds") List<JSONObject> departIds);
-
-}

+ 0 - 14
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/mapper/SysDepartPermissionMapper.java

@@ -1,14 +0,0 @@
-package cn.com.ctop.common.module.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import cn.com.ctop.common.module.entity.SysDepartPermission;
-
-/**
- * @Description: 部门权限表
- * @Author: jeecg-boot
- * @Date:   2020-02-11
- * @Version: V1.0
- */
-public interface SysDepartPermissionMapper extends BaseMapper<SysDepartPermission> {
-
-}

+ 0 - 14
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/mapper/SysDepartRolePermissionMapper.java

@@ -1,14 +0,0 @@
-package cn.com.ctop.common.module.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import cn.com.ctop.common.module.entity.SysDepartRolePermission;
-
-/**
- * @Description: 部门角色权限
- * @Author: jeecg-boot
- * @Date:   2020-02-12
- * @Version: V1.0
- */
-public interface SysDepartRolePermissionMapper extends BaseMapper<SysDepartRolePermission> {
-
-}

+ 0 - 20
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/mapper/SysDictItemMapper.java

@@ -1,20 +0,0 @@
-package cn.com.ctop.common.module.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.apache.ibatis.annotations.Select;
-import cn.com.ctop.common.module.entity.SysDictItem;
-
-import java.util.List;
-
-/**
- * <p>
- * Mapper 接口
- * </p>
- *
- * @Author zhangweijian
- * @since 2018-12-28
- */
-public interface SysDictItemMapper extends BaseMapper<SysDictItem> {
-    @Select("SELECT * FROM sys_dict_item WHERE DICT_ID = #{mainId} order by sort_order asc, item_value asc")
-    public List<SysDictItem> selectItemsByMainId(String mainId);
-}

+ 0 - 112
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/mapper/SysDictMapper.java

@@ -1,112 +0,0 @@
-package cn.com.ctop.common.module.mapper;
-
-import cn.com.ctop.common.module.entity.SysDict;
-import cn.com.ctop.common.module.model.DuplicateCheckVo;
-import cn.com.ctop.common.module.model.TreeSelectModel;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import org.apache.ibatis.annotations.Param;
-import org.apache.ibatis.annotations.Select;
-import org.apache.ibatis.annotations.Update;
-import org.jeecg.common.system.vo.DictModel;
-import org.jeecg.common.system.vo.DictQuery;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * <p>
- * 字典表 Mapper 接口
- * </p>
- *
- * @Author zhangweijian
- * @since 2018-12-28
- */
-public interface SysDictMapper extends BaseMapper<SysDict> {
-
-	/**
-	  *  重复检查SQL
-	 * @return
-	 */
-	public Long duplicateCheckCountSql(DuplicateCheckVo duplicateCheckVo);
-	public Long duplicateCheckCountSqlNoDataId(DuplicateCheckVo duplicateCheckVo);
-
-	public List<DictModel> queryDictItemsByCode(@Param("code") String code);
-
-	public List<DictModel> queryTableDictItemsByCode(@Param("table") String table,@Param("text") String text,@Param("code") String code);
-
-	public List<DictModel> queryTableDictItemsByCodeAndFilter(@Param("table") String table,@Param("text") String text,@Param("code") String code,@Param("filterSql") String filterSql);
-
-	public String queryDictTextByKey(@Param("code") String code,@Param("key") String key,@Param("extendsKey") String extendsKey,@Param("extendsValue")String extendsValue);
-
-	public String queryTableDictTextByKey(@Param("table") String table,@Param("text") String text,@Param("code") String code,@Param("key") String key,@Param("extendsKey") String extendsKey,@Param("extendsValue")String extendsValue);
-
-	public List<DictModel> queryTableDictByKeys(@Param("table") String table, @Param("text") String text, @Param("code") String code, @Param("keyArray") String[] keyArray);
-
-	/**
-	 * 查询所有部门 作为字典信息 id -->value,departName -->text
-	 * @return
-	 */
-	public List<DictModel> queryAllDepartBackDictModel();
-
-	/**
-	 * 查询所有用户  作为字典信息 username -->value,realname -->text
-	 * @return
-	 */
-	public List<DictModel> queryAllUserBackDictModel();
-
-	/**
-	 * 通过关键字查询出字典表
-	 * @param table
-	 * @param text
-	 * @param code
-	 * @param keyword
-	 * @return
-	 */
-	@Deprecated
-	public List<DictModel> queryTableDictItems(@Param("table") String table,@Param("text") String text,@Param("code") String code,@Param("keyword") String keyword);
-
-	/**
-	  * 根据表名、显示字段名、存储字段名 查询树
-	 * @param table
-	 * @param text
-	 * @param code
-	 * @param pid
-	 * @param hasChildField
-	 * @return
-	 */
-	@Deprecated
-	List<TreeSelectModel> queryTreeList(@Param("query") Map<String, String> query, @Param("table") String table, @Param("text") String text, @Param("code") String code, @Param("pidField") String pidField, @Param("pid") String pid, @Param("hasChildField") String hasChildField);
-
-	/**
-	 * 删除
-	 * @param id
-	 */
-	@Select("delete from sys_dict where id = #{id}")
-	public void deleteOneById(@Param("id") String id);
-
-	/**
-	 * 查询被逻辑删除的数据
-	 * @return
-	 */
-	@Select("select * from sys_dict where del_flag = 1")
-	public List<SysDict> queryDeleteList();
-
-	/**
-	 * 修改状态值
-	 * @param delFlag
-	 * @param id
-	 */
-	@Update("update sys_dict set del_flag = #{flag,jdbcType=INTEGER} where id = #{id,jdbcType=VARCHAR}")
-	public void updateDictDelFlag(@Param("flag") int delFlag, @Param("id") String id);
-
-
-	/**
-	 * 分页查询字典表数据
-	 * @param page
-	 * @param query
-	 * @return
-	 */
-	@Deprecated
-	public Page<DictModel> queryDictTablePageList(Page page, @Param("query") DictQuery query);
-}

+ 0 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/mapper/SysPermissionMapper.java


이 변경점에서 너무 많은 파일들이 변경되어 몇몇 파일들은 표시되지 않았습니다.