Merge remote-tracking branch 'origin/master'

This commit is contained in:
wangzhijiang
2022-03-10 18:14:16 +08:00
36 changed files with 1004 additions and 367 deletions
@@ -8,8 +8,6 @@ package com.jero.common.constant.enums;
public enum ModuleEnum {
DOCUMENT_LIBRARY("文档管理","1"),
OCR_RECORD("OCR识别转换记录表","2"),
ONL_CGFORM_TAG("标签项管理","3"),
ONL_CGFORM_AREA("展示区域管理","4"),
ONL_CGFORM_COLLECTION("我的收藏","5"),
ONL_CGFORM_SUBSCRIBE("我的订阅","6");
@@ -119,12 +119,13 @@
</otherwise>
</choose>
</select>
<!-- 查询新增表单数据,并且按照展示区域的"排序号"和字段的"展示顺序"排序 -->
<select id="getFieldList" resultType="com.jero.generater.modules.online.cgform.entity.OnlCgformField">
select * from onl_cgform_field ocf
left join onl_cgform_head och on ocf.cgform_head_id = och.id
left join onl_cgform_area oca on ocf.show_area=oca.id
where table_name =#{tableName} and ocf.is_delete = 0
order by order_num asc
order by oca.sort asc,order_num asc
</select>
</mapper>
@@ -818,10 +818,6 @@ public class OnlCgformFieldServiceImpl extends ServiceImpl<OnlCgformFieldMapper,
fieldList = onlCgformFieldMapper.getFieldList(TableEnum.BUSS_DOCUMENT_LIBRARY.getTable()+" ");
}else if(ModuleEnum.OCR_RECORD.getValue().equals(flag)){
fieldList = onlCgformFieldMapper.getFieldList(TableEnum.OCR_RECORD.getTable());
}else if(ModuleEnum.ONL_CGFORM_TAG.getValue().equals(flag)){
fieldList = onlCgformFieldMapper.getFieldList(TableEnum.TAG.getTable());
}else if(ModuleEnum.ONL_CGFORM_AREA.getValue().equals(flag)){
fieldList = onlCgformFieldMapper.getFieldList(TableEnum.TAG_AREA.getTable());
}else if(ModuleEnum.ONL_CGFORM_COLLECTION.getValue().equals(flag)){
fieldList = onlCgformFieldMapper.getFieldList(TableEnum.ONL_CGFORM_COLLECTION.getTable());
}else if(ModuleEnum.ONL_CGFORM_SUBSCRIBE.getValue().equals(flag)){
@@ -116,8 +116,8 @@ public class SysCategoryController {
* @param
* @return
*/
@AutoLog(value = "标签内容-树形结构-通过sysDictId查询")
@ApiOperation(value="标签内容-树形结构-通过sysDictId查询", notes="标签内容-树形结构-通过sysDictId查询")
@AutoLog(value = "标签内容-树形结构-通过名称查询")
@ApiOperation(value="标签内容-树形结构-通过名称查询", notes="标签内容-树形结构-通过名称查询")
@GetMapping(value = "/queryBySysName")
public Result<?> queryBySysName(@RequestParam(name="id",required=true) String sysName) {
List<SysCategory> sysCategory = sysCategoryService.queryBySysName(sysName);
@@ -136,7 +136,6 @@ public class SysCategoryController {
public Result<SysCategory> add(@RequestBody SysCategory sysCategory) {
Result<SysCategory> result = new Result<SysCategory>();
try {
sysCategory.setDelFlag(CommonConstant.DEL_FLAG_0);
sysCategoryService.addSysCategory(sysCategory);
result.success("添加成功!");
} catch (Exception e) {
@@ -76,6 +76,7 @@ public class SysDictController {
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize, HttpServletRequest req) {
Result<IPage<SysDict>> result = new Result<IPage<SysDict>>();
QueryWrapper<SysDict> queryWrapper = QueryGenerator.initQueryWrapper(sysDict, req.getParameterMap());
queryWrapper.eq("del_flag",CommonConstant.DEL_FLAG_0);
Page<SysDict> page = new Page<SysDict>(pageNo, pageSize);
IPage<SysDict> pageList = sysDictService.page(page, queryWrapper);
log.debug("查询当前页:"+pageList.getCurrent());
@@ -55,7 +55,7 @@ public class SysDictItemController {
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,HttpServletRequest req) {
Result<IPage<SysDictItem>> result = new Result<IPage<SysDictItem>>();
QueryWrapper<SysDictItem> queryWrapper = QueryGenerator.initQueryWrapper(sysDictItem, req.getParameterMap());
queryWrapper.orderByAsc("sort_order");
queryWrapper.orderByAsc("sort_order").eq("del_flag",CommonConstant.DEL_FLAG_0);
Page<SysDictItem> page = new Page<SysDictItem>(pageNo, pageSize);
IPage<SysDictItem> pageList = sysDictItemService.page(page, queryWrapper);
result.setSuccess(true);
@@ -151,7 +151,7 @@ public class SysDictItemController {
* @return
*/
//@RequiresRoles({"admin"})
@RequiresPermissions("sys:dict:list")
//@RequiresPermissions("sys:dict:list")未改
@RequestMapping(value = "/logicDelete", method = RequestMethod.DELETE)
@CacheEvict(value=CacheConstant.SYS_DICT_CACHE, allEntries=true)
public Result<SysDictItem> logicDelete(@RequestParam(name="id",required=true) String id) {
@@ -72,5 +72,5 @@ public interface ISysCategoryService extends IService<SysCategory> {
*/
List<SysCategoryTreeVO> getSysCategoryTree();
List<SysCategory> queryBySysName(String sysName);
List<SysCategory> queryBySysName(String sysDictId);
}
@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.common.constant.CommonConstant;
import com.jero.common.constant.FillRuleConstant;
import com.jero.common.exception.JeroBootException;
import com.jero.common.util.FillRuleUtil;
@@ -59,6 +60,7 @@ public class SysCategoryServiceImpl extends ServiceImpl<SysCategoryMapper, SysCa
//update-end--Author:baihailong Date:20191209 for:分类字典编码规则生成器做成公用配置
sysCategory.setCode(categoryCode);
sysCategory.setPid(categoryPid);
sysCategory.setDelFlag(CommonConstant.DEL_FLAG_0);
baseMapper.insert(sysCategory);
}
@@ -215,14 +217,14 @@ public class SysCategoryServiceImpl extends ServiceImpl<SysCategoryMapper, SysCa
@Override
public List<SysCategory> queryBySysDictId(String sysDictId) {
QueryWrapper<SysCategory> queryWrapper=new QueryWrapper<>();
queryWrapper.eq("sys_dict_id",sysDictId);
queryWrapper.eq("sys_dict_id",sysDictId).eq("del_flag", CommonConstant.DEL_FLAG_0);
return list(queryWrapper);
}
/**搜索条件*/
@Override
public List<SysCategory> queryBySysName(String sysName) {
QueryWrapper<SysCategory> queryWrapper=new QueryWrapper<>();
queryWrapper.like("name",sysName);
queryWrapper.like("name",sysName).eq("del_flag", CommonConstant.DEL_FLAG_0);
return list(queryWrapper);
}
@Override
@@ -62,7 +62,7 @@ public class HttpRequestUtil {
RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(20000000).setSocketTimeout(200000000).build();
HttpPost httpPost = new HttpPost(url);
httpPost.setConfig(requestConfig);
httpPost.setEntity(new StringEntity(body));
httpPost.setEntity(new StringEntity(body,"utf-8"));
if (headerMap != null) {
Iterator var38 = headerMap.entrySet().iterator();
@@ -0,0 +1,29 @@
package com.jero.modules.feishu.service;
import java.io.IOException;
/**
* @Author: liyawei
* @Description:
* @Date: Created in 13:40 2022/3/10
*/
public interface IFeishuService {
/**
* 获取token
* @return
* @throws IOException
*/
String getTenantAccessToken() throws IOException;
/**
* 批量发送消息
* @param userIds 用户域账号,对应数据库字段:third_id
* @param message 消息内容
* @param title 消息类型
* @param backUrl 消息内容中的跳转链接
* @return
* @throws IOException
*/
String batchSendMessage(String[] userIds, String message, String title, String backUrl) throws IOException;
}
@@ -0,0 +1,114 @@
package com.jero.modules.feishu.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.jero.modules.feishu.service.IFeishuService;
import com.jero.modules.system.util.HttpRequestUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @Author: liyawei
* @Description:
* @Date: Created in 13:41 2022/3/10
*/
@Slf4j
@Service
public class FeishuServiceImpl implements IFeishuService {
@Value("${Feishu.appId}")
private String appId;
@Value("${Feishu.appSecret}")
private String appSecret;
@Value("${Feishu.getTenantAccessTokenUrl}")
private String getTenantAccessTokenUrl;
@Value("${Feishu.batchSendMessageUrl}")
private String batchSendMessageUrl;
/**
* 获取token
* @return
* @throws IOException
*/
public String getTenantAccessToken() throws IOException {
Map<String, String> headerMap = new HashMap<>();
headerMap.put("Content-Type", "application/json; charset=utf-8");
Map<String, String> paramsMap = new HashMap<>();
paramsMap.put("app_id", appId);
paramsMap.put("app_secret", appSecret);
String response = HttpRequestUtil.getResponseOfPOST(getTenantAccessTokenUrl, headerMap, JSON.toJSONString(paramsMap));
//返回结果样例: {"code":0,"expire":7167,"msg":"ok","tenant_access_token":"t-3c05f981f36a8a92050718c6875e3c8b02c62304"}
JSONObject tokenJson = JSONObject.parseObject(response);
if(!tokenJson.get("code").toString().equals("0")) {
log.error("请求出现异常:" + tokenJson.get("msg") + " " + tokenJson);
return null;
}
String tenantAccessToken = tokenJson.get("tenant_access_token").toString();
return tenantAccessToken;
}
/**
* 批量发送消息
* @param userIds 用户域账号,对应数据库字段:third_id
* @param message 消息内容
* @param title 消息类型
* @param backUrl 消息内容中的跳转链接
* @return
* @throws IOException
*/
public String batchSendMessage(String[] userIds, String message, String title, String backUrl) throws IOException {
String token = getTenantAccessToken();
// 设置请求头
Map<String, String> headerMap = new HashMap<>();
headerMap.put("Authorization", "Bearer " + token);
headerMap.put("Content-Type", "application/json; charset=utf-8");
// 设置消息标题
JSONObject zh_cn = new JSONObject();
zh_cn.put("title", title);
// 设置消息内容
// 第一行
JSONObject contentOne = new JSONObject();
contentOne.put("tag", "text");
contentOne.put("text", message);
// 第二行
JSONObject contentTwo = new JSONObject();
contentTwo.put("tag", "a");
contentTwo.put("text", "跳转链接");
contentTwo.put("href", backUrl);
List<JSONObject> contentList = new ArrayList<>();
contentList.add(contentOne);
contentList.add(contentTwo);
List<List<JSONObject>> list = new ArrayList<>();
list.add(contentList);
zh_cn.put("content", list);
JSONObject post = new JSONObject();
post.put("zh_cn", zh_cn);
JSONObject contentObj = new JSONObject();
contentObj.put("post", post);
// 设置请求参数
JSONObject paramsMap = new JSONObject();
paramsMap.put("user_ids", userIds);
paramsMap.put("msg_type", "post");
paramsMap.put("content", contentObj);
// 发送请求给飞书
String response = HttpRequestUtil.getResponseOfPOST(batchSendMessageUrl, headerMap, paramsMap.toJSONString());
// 返回结果样例:{"code":0,"data":{"invalid_department_ids":[],"invalid_open_ids":[],"invalid_union_ids":[],"invalid_user_ids":[],"message_id":"bm-d595567e4f448fafe397bc916f0be646"},"msg":"ok"}
// 获取返回结果
JSONObject tokenJson = JSONObject.parseObject(response);
if(!tokenJson.get("code").toString().equals("0")) {
log.error("请求出现异常:" + tokenJson.get("msg") + " " + tokenJson);
}
return tokenJson.get("msg").toString();
}
}
@@ -9,6 +9,7 @@ import com.jero.modules.enums.FixedFieldEnum;
import com.jero.modules.system.service.impl.SysDictItemServiceImpl;
import com.jero.modules.tag.entity.OnlCgformArea;
import com.jero.modules.tag.entity.OnlCgformTag;
import com.jero.modules.tag.enums.FileTableIdEnum;
import com.jero.modules.tag.service.IOnlCgformTagService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -84,7 +85,7 @@ public class OnlCgformTagController extends JeroController<OnlCgformTag, IOnlCgf
//@RequiresPermissions("tag:add")
public Result<?> add(@Validated @RequestBody OnlCgformTag onlCgformTag) {
onlCgformTagService.add(onlCgformTag);
onlCgformApiController.h("48308196e7b04761b533dc31bc899707","normal");
onlCgformApiController.h(String.valueOf(FileTableIdEnum.FILE_TABLE_ID),"normal");
return Result.OK("添加成功!");
}
@@ -103,8 +104,7 @@ public class OnlCgformTagController extends JeroController<OnlCgformTag, IOnlCgf
return Result.error("固定字段,不可修改");
}else {
onlCgformTagService.editById(onlCgformTag);
//TODO 统一定义枚举或者统一常量形式并且加注释说明,不然ID写的太乱后期不好修改
onlCgformApiController.h("48308196e7b04761b533dc31bc899707","normal");
onlCgformApiController.h(String.valueOf(FileTableIdEnum.FILE_TABLE_ID),"normal");
return Result.OK("编辑成功!");
}
}
@@ -127,8 +127,7 @@ public class OnlCgformTagController extends JeroController<OnlCgformTag, IOnlCgf
result.error500("固定字段,不可删除");
} else {
onlCgformTagService.deleteById(id);
//TODO 统一定义枚举或者统一常量形式并且加注释说明,不然ID写的太乱后期不好修改
onlCgformApiController.h("48308196e7b04761b533dc31bc899707","normal");
onlCgformApiController.h(String.valueOf(FileTableIdEnum.FILE_TABLE_ID),"normal");
result.OK("删除成功!");
}
}
@@ -148,11 +147,10 @@ public class OnlCgformTagController extends JeroController<OnlCgformTag, IOnlCgf
public Result<?> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
OnlCgformTag onlCgformTag = onlCgformTagService.queryById(ids);
if (FixedFieldEnum.FIXED_FIELD_ENUM.getValue().equals(onlCgformTag.getIsReadOnly()) || FixedFieldEnum.CONFIGURABLE_FIELD.getValue().equals(onlCgformTag.getIsReadOnly())) {
return Result.error("固定字段,不可删除");
return Result.error("包含固定字段,不可删除");
}else {
this.onlCgformTagService.deleteByIds(Arrays.asList(ids.split(",")));
//TODO 统一定义枚举或者统一常量形式并且加注释说明,不然ID写的太乱后期不好修改
onlCgformApiController.h("48308196e7b04761b533dc31bc899707","normal");
onlCgformApiController.h(String.valueOf(FileTableIdEnum.FILE_TABLE_ID),"normal");
return Result.OK("批量删除成功!");
}
}
@@ -86,10 +86,10 @@ public class OnlCgformTag implements Serializable {
@ApiModelProperty(value = "字段英文名称描述")
private java.lang.String dbFieldEnName;
/**表单控件类型*/
@Excel(name = "表单控件类型", width = 15,dicCode ="field_show_type")
/**属性类型*/
@Excel(name = "属性类型", width = 15,dicCode ="field_show_type")
@Dict(dicCode ="field_show_type")
@ApiModelProperty(value = "表单控件类型")
@ApiModelProperty(value = "属性类型")
private java.lang.String fieldShowType;
@TableField(exist = false)
@@ -0,0 +1,30 @@
package com.jero.modules.tag.enums;
public enum FileTableIdEnum {
FILE_TABLE_ID("文档库表id","48308196e7b04761b533dc31bc899707"),
;
String name;
String value;
FileTableIdEnum(String name, String value) {
this.name = name;
this.value = value;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
@@ -27,6 +27,7 @@ public interface OnlCgformTagMapper extends BaseMapper<OnlCgformTag> {
"left join sys_dict_item as i on f.field_show_type=i.item_value\n" +
"left join onl_cgform_area as a on f.show_area=a.id\n" +
"where f.cgform_head_id=\"48308196e7b04761b533dc31bc899707\"\n" +
"and f.is_delete=0\n" +
"and i.dict_id=1493098515761917954 \n" +
"order by f.create_time desc ")
IPage<OnlCgformTag> queryPageList(IPage page,@Param("params") Map<String,Object> params);
@@ -119,7 +119,6 @@ public class OnlCgformAreaServiceImpl extends ServiceImpl<OnlCgformAreaMapper, O
QueryWrapper<OnlCgformArea> queryWrapper = new QueryWrapper<>();
if (CutEnum.CN.getValue().equals(cut)) {
queryWrapper.select("id","show_area").orderByAsc("sort");
System.out.println("QueryWrapper数据:"+queryWrapper);
return list(queryWrapper);
}else{
queryWrapper.select("id","en_name").orderByAsc("sort");
@@ -8,13 +8,16 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.common.constant.CommonConstant;
import com.jero.common.constant.enums.CutEnum;
import com.jero.common.system.vo.LoginUser;
import com.jero.generater.modules.online.cgform.service.impl.OnlCgformFieldServiceImpl;
import com.jero.modules.document.enums.FieldTypeEnum;
import com.jero.modules.tag.entity.OnlCgformArea;
import com.jero.modules.tag.entity.OnlCgformTag;
import com.jero.modules.tag.mapper.OnlCgformTagMapper;
import com.jero.modules.tag.service.IOnlCgformTagService;
import com.jero.modules.utils.HanYuPinYinUtil;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -55,21 +58,24 @@ public class OnlCgformTagServiceImpl extends ServiceImpl<OnlCgformTagMapper, Onl
onlCgformTag.setDbIsNull(1);
onlCgformTag.setDbPointLength(0);
onlCgformTag.setIsReadOnly(0);
Date now = new Date();
onlCgformTag.setCreateTime(now);
onlCgformTag.setUpdateTime(now);
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
onlCgformTag.setCreateBy(sysUser.getRealname());
onlCgformTag.setUpdateBy(sysUser.getRealname());
String pinYin = HanYuPinYinUtil.changeToNumberPinYin(onlCgformTag.getDbFieldTxt());
onlCgformTag.setDbFieldName(pinYin.replace(" ","_"));
onlCgformTag.setDbFieldEnName(onlCgformTag.getDbFieldEnName().replace(" ","_"));
//TODO 使用枚举形式,不能直接使用字符串定义,看不出代表什么含义
if(onlCgformTag.getFieldShowType()=="2"){
//设置标签存入数据库的字段类型
if(onlCgformTag.getFieldShowType().equals(FieldTypeEnum.TEXT_NUMBER)){
onlCgformTag.setDbType("int");
}else if(onlCgformTag.getFieldShowType()=="5" && onlCgformTag.getFieldShowType()=="6"){
}else if(onlCgformTag.getFieldShowType().equals(FieldTypeEnum.DATE_SINGLE) && onlCgformTag.equals(FieldTypeEnum.DATE_MORE)){
onlCgformTag.setDbType("Date");
}else{
onlCgformTag.setDbType("String");
}
}
Date now = new Date();
onlCgformTag.setCreateTime(now);
onlCgformTag.setUpdateTime(now);
save(onlCgformTag);
}
@@ -81,10 +87,13 @@ public class OnlCgformTagServiceImpl extends ServiceImpl<OnlCgformTagMapper, Onl
*/
@Override
public void editById(OnlCgformTag onlCgformTag) {
Date now = new Date();
String pinYin = HanYuPinYinUtil.changeToNumberPinYin(onlCgformTag.getDbFieldTxt());
onlCgformTag.setDbFieldName(pinYin.replace(" ","_"));
Date now = new Date();
onlCgformTag.setUpdateTime(now);
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
onlCgformTag.setUpdateBy(sysUser.getRealname());
saveOrUpdate(onlCgformTag);
}
@@ -132,13 +132,14 @@ spring:
datasource:
master:
# url: jdbc:mysql://10.0.3.44:3306/jero-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
# username: root
# password: 123456
# driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://121.36.69.172:3307/laws_weilai?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=false
# url: jdbc:mysql://121.36.69.172:3307/laws_weilai?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
url: jdbc:mysql://10.10.10.44:3306/laws_weilai_test?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=false
username: root
password: hzwlsoft.com
password: 123456
# driver-class-name: com.mysql.cj.jdbc.Driver
# url: jdbc:mysql://121.36.69.172:3307/laws_weilai?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=false
# url: jdbc:mysql://121.36.69.172:3307/laws_weilai?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
# username: root
# password: hzwlsoft.com
driver-class-name: com.mysql.cj.jdbc.Driver
# 多数据源配置
#multi-datasource1:
@@ -185,7 +186,7 @@ jero :
uploadType: local
path :
#文件上传根目录 设置
upload: E://opt//upFiles
upload: D://opt//upFiles
#webapp文件路径
webapp: D://opt//webapp
shiro:
@@ -359,3 +360,9 @@ people:
secret: CDf2D9404C6ac1B0f7c3e3845ae0282a
# appSecret CN PROD版
# secret: 7C3F03170E3ea489df04Ce8DEC7Df4f7
## Feishu
Feishu:
appId: cli_a16d47ca9f381013
appSecret: DSfCrj70xku2VUjqwHBIuuY6HZnz7ppe
getTenantAccessTokenUrl: https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal
batchSendMessageUrl: https://open.feishu.cn/open-apis/message/v4/batch_send/