| | |
| | | import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; |
| | | import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; |
| | | import com.baomidou.mybatisplus.core.toolkit.StringPool; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.google.common.base.Joiner; |
| | | import lombok.extern.slf4j.Slf4j; |
| | |
| | | import org.jeecg.common.api.dto.message.*; |
| | | import org.jeecg.common.aspect.UrlMatchEnum; |
| | | import org.jeecg.common.constant.*; |
| | | import org.jeecg.common.constant.enums.MessageSplitTypeEnum; |
| | | import org.jeecg.common.constant.enums.MessageTypeEnum; |
| | | import org.jeecg.common.desensitization.util.SensitiveInfoUtil; |
| | | import org.jeecg.common.exception.JeecgBootException; |
| | | import org.jeecg.common.system.api.ISysBaseAPI; |
| | | import org.jeecg.common.system.base.entity.DataVersion; |
| | | import org.jeecg.common.system.base.entity.SysUpload; |
| | | import org.jeecg.common.system.base.entity.SysUploadRela; |
| | | import org.jeecg.common.system.query.QueryGenerator; |
| | | import org.jeecg.common.system.vo.*; |
| | | import org.jeecg.common.util.*; |
| | | import org.jeecg.common.util.dynamic.db.FreemarkerParseFactory; |
| | | import org.jeecg.modules.base.entity.Unit; |
| | | import org.jeecg.modules.base.service.IEnterpriseService; |
| | | import org.jeecg.modules.base.service.IUnitService; |
| | | import org.jeecg.modules.message.entity.SysMessageTemplate; |
| | | import org.jeecg.modules.message.handle.impl.DdSendMsgHandle; |
| | | import org.jeecg.modules.message.handle.impl.EmailSendMsgHandle; |
| | |
| | | import org.jeecg.modules.message.handle.impl.SystemSendMsgHandle; |
| | | import org.jeecg.modules.message.service.ISysMessageTemplateService; |
| | | import org.jeecg.modules.message.websocket.WebSocket; |
| | | import org.jeecg.modules.quartz.entity.QuartzJob; |
| | | import org.jeecg.modules.quartz.service.IQuartzJobService; |
| | | import org.jeecg.modules.system.entity.*; |
| | | import org.jeecg.modules.system.mapper.*; |
| | | import org.jeecg.modules.system.service.*; |
| | |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.util.AntPathMatcher; |
| | | import org.springframework.util.PathMatcher; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import javax.annotation.Resource; |
| | | import javax.sql.DataSource; |
| | |
| | | import java.sql.DatabaseMetaData; |
| | | import java.sql.SQLException; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * @Description: 底层共通业务API,提供其他独立模块调用 |
| | | * @Author: scott |
| | | * @Date:2019-4-20 |
| | | * @Date:2019-4-20 |
| | | * @Version:V1.0 |
| | | */ |
| | | @Slf4j |
| | | @Service |
| | | public class SysBaseApiImpl implements ISysBaseAPI { |
| | | /** 当前系统数据库类型 */ |
| | | private static String DB_TYPE = ""; |
| | | /** |
| | | * 当前系统数据库类型 |
| | | */ |
| | | private static String DB_TYPE = ""; |
| | | |
| | | @Autowired |
| | | private ISysMessageTemplateService sysMessageTemplateService; |
| | | @Resource |
| | | private SysUserMapper userMapper; |
| | | @Resource |
| | | private SysUserRoleMapper sysUserRoleMapper; |
| | | @Autowired |
| | | private ISysDepartService sysDepartService; |
| | | @Autowired |
| | | private ISysDictService sysDictService; |
| | | @Resource |
| | | private SysAnnouncementMapper sysAnnouncementMapper; |
| | | @Resource |
| | | private SysAnnouncementSendMapper sysAnnouncementSendMapper; |
| | | @Resource |
| | | @Autowired |
| | | private ISysMessageTemplateService sysMessageTemplateService; |
| | | @Resource |
| | | private SysUserMapper userMapper; |
| | | @Resource |
| | | private SysUserRoleMapper sysUserRoleMapper; |
| | | @Autowired |
| | | private ISysDepartService sysDepartService; |
| | | @Autowired |
| | | private ISysDictService sysDictService; |
| | | @Resource |
| | | private SysAnnouncementMapper sysAnnouncementMapper; |
| | | @Resource |
| | | private SysAnnouncementSendMapper sysAnnouncementSendMapper; |
| | | @Resource |
| | | private WebSocket webSocket; |
| | | @Resource |
| | | private SysRoleMapper roleMapper; |
| | | @Resource |
| | | private SysDepartMapper departMapper; |
| | | @Resource |
| | | private SysCategoryMapper categoryMapper; |
| | | @Autowired |
| | | private ISysDataSourceService dataSourceService; |
| | | @Autowired |
| | | private ISysUserDepartService sysUserDepartService; |
| | | @Resource |
| | | private SysPermissionMapper sysPermissionMapper; |
| | | @Autowired |
| | | private ISysPermissionDataRuleService sysPermissionDataRuleService; |
| | | @Autowired |
| | | private ThirdAppWechatEnterpriseServiceImpl wechatEnterpriseService; |
| | | @Autowired |
| | | private ThirdAppDingtalkServiceImpl dingtalkService; |
| | | @Autowired |
| | | ISysCategoryService sysCategoryService; |
| | | @Autowired |
| | | private ISysUserService sysUserService; |
| | | @Autowired |
| | | private ISysDataLogService sysDataLogService; |
| | | @Autowired |
| | | private ISysFilesService sysFilesService; |
| | | @Resource |
| | | private SysRoleMapper roleMapper; |
| | | @Resource |
| | | private SysDepartMapper departMapper; |
| | | @Resource |
| | | private SysCategoryMapper categoryMapper; |
| | | @Autowired |
| | | private ISysDataSourceService dataSourceService; |
| | | @Autowired |
| | | private ISysUserDepartService sysUserDepartService; |
| | | @Resource |
| | | private SysPermissionMapper sysPermissionMapper; |
| | | @Autowired |
| | | private ISysPermissionDataRuleService sysPermissionDataRuleService; |
| | | @Autowired |
| | | private ThirdAppWechatEnterpriseServiceImpl wechatEnterpriseService; |
| | | @Autowired |
| | | private ThirdAppDingtalkServiceImpl dingtalkService; |
| | | @Autowired |
| | | ISysCategoryService sysCategoryService; |
| | | @Autowired |
| | | private ISysUserService sysUserService; |
| | | @Autowired |
| | | private ISysDataLogService sysDataLogService; |
| | | @Autowired |
| | | private ISysFilesService sysFilesService; |
| | | |
| | | @Override |
| | | //@SensitiveDecode |
| | | public LoginUser getUserByName(String username) { |
| | | //update-begin-author:taoyan date:2022-6-6 for: VUEN-1276 【v3流程图】测试bug 1、通过我发起的流程或者流程实例,查看历史,流程图预览问题 |
| | | if (oConvertUtils.isEmpty(username)) { |
| | | return null; |
| | | } |
| | | //update-end-author:taoyan date:2022-6-6 for: VUEN-1276 【v3流程图】测试bug 1、通过我发起的流程或者流程实例,查看历史,流程图预览问题 |
| | | LoginUser user = sysUserService.getEncodeUserInfo(username); |
| | | @Autowired |
| | | private IUploadRelaService uploadRelaService; |
| | | |
| | | //相同类中方法间调用时脱敏解密 Aop会失效,获取用户信息太重要,此处采用原生解密方法,不采用@SensitiveDecodeAble注解方式 |
| | | try { |
| | | SensitiveInfoUtil.handlerObject(user, false); |
| | | } catch (IllegalAccessException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | @Autowired |
| | | private IUploadService uploadService; |
| | | |
| | | return user; |
| | | } |
| | | @Autowired |
| | | private IDataVersionService dataVersionService; |
| | | |
| | | @Override |
| | | public String translateDictFromTable(String table, String text, String code, String key) { |
| | | return sysDictService.queryTableDictTextByKey(table, text, code, key); |
| | | } |
| | | @Autowired |
| | | private IUnitService unitService; |
| | | @Autowired |
| | | private IEnterpriseService enterpriseService; |
| | | |
| | | @Override |
| | | public String translateDict(String code, String key) { |
| | | return sysDictService.queryDictTextByKey(code, key); |
| | | } |
| | | |
| | | @Override |
| | | public List<SysPermissionDataRuleModel> queryPermissionDataRule(String component, String requestPath, String username) { |
| | | List<SysPermission> currentSyspermission = null; |
| | | if(oConvertUtils.isNotEmpty(component)) { |
| | | //1.通过注解属性pageComponent 获取菜单 |
| | | LambdaQueryWrapper<SysPermission> query = new LambdaQueryWrapper<SysPermission>(); |
| | | query.eq(SysPermission::getDelFlag,0); |
| | | query.eq(SysPermission::getComponent, component); |
| | | currentSyspermission = sysPermissionMapper.selectList(query); |
| | | }else { |
| | | //1.直接通过前端请求地址查询菜单 |
| | | LambdaQueryWrapper<SysPermission> query = new LambdaQueryWrapper<SysPermission>(); |
| | | query.eq(SysPermission::getMenuType,2); |
| | | query.eq(SysPermission::getDelFlag,0); |
| | | query.eq(SysPermission::getUrl, requestPath); |
| | | currentSyspermission = sysPermissionMapper.selectList(query); |
| | | //2.未找到 再通过自定义匹配URL 获取菜单 |
| | | if(currentSyspermission==null || currentSyspermission.size()==0) { |
| | | //通过自定义URL匹配规则 获取菜单(实现通过菜单配置数据权限规则,实际上针对获取数据接口进行数据规则控制) |
| | | String userMatchUrl = UrlMatchEnum.getMatchResultByUrl(requestPath); |
| | | LambdaQueryWrapper<SysPermission> queryQserMatch = new LambdaQueryWrapper<SysPermission>(); |
| | | // update-begin-author:taoyan date:20211027 for: online菜单如果配置成一级菜单 权限查询不到 取消menuType = 1 |
| | | //queryQserMatch.eq(SysPermission::getMenuType, 1); |
| | | // update-end-author:taoyan date:20211027 for: online菜单如果配置成一级菜单 权限查询不到 取消menuType = 1 |
| | | queryQserMatch.eq(SysPermission::getDelFlag, 0); |
| | | queryQserMatch.eq(SysPermission::getUrl, userMatchUrl); |
| | | if(oConvertUtils.isNotEmpty(userMatchUrl)){ |
| | | currentSyspermission = sysPermissionMapper.selectList(queryQserMatch); |
| | | } |
| | | } |
| | | //3.未找到 再通过正则匹配获取菜单 |
| | | if(currentSyspermission==null || currentSyspermission.size()==0) { |
| | | //通过正则匹配权限配置 |
| | | String regUrl = getRegexpUrl(requestPath); |
| | | if(regUrl!=null) { |
| | | currentSyspermission = sysPermissionMapper.selectList(new LambdaQueryWrapper<SysPermission>().eq(SysPermission::getMenuType,2).eq(SysPermission::getUrl, regUrl).eq(SysPermission::getDelFlag,0)); |
| | | } |
| | | } |
| | | } |
| | | if(currentSyspermission!=null && currentSyspermission.size()>0){ |
| | | List<SysPermissionDataRuleModel> dataRules = new ArrayList<SysPermissionDataRuleModel>(); |
| | | for (SysPermission sysPermission : currentSyspermission) { |
| | | // update-begin--Author:scott Date:20191119 for:数据权限规则编码不规范,项目存在相同包名和类名 #722 |
| | | List<SysPermissionDataRule> temp = sysPermissionDataRuleService.queryPermissionDataRules(username, sysPermission.getId()); |
| | | if(temp!=null && temp.size()>0) { |
| | | //dataRules.addAll(temp); |
| | | dataRules = oConvertUtils.entityListToModelList(temp,SysPermissionDataRuleModel.class); |
| | | } |
| | | // update-end--Author:scott Date:20191119 for:数据权限规则编码不规范,项目存在相同包名和类名 #722 |
| | | } |
| | | return dataRules; |
| | | } |
| | | return null; |
| | | } |
| | | @Autowired |
| | | private IQuartzJobService quartzJobService; |
| | | @Autowired |
| | | private ISysDictItemService sysDictItemService; |
| | | |
| | | /** |
| | | * 匹配前端传过来的地址 匹配成功返回正则地址 |
| | | * AntPathMatcher匹配地址 |
| | | *()* 匹配0个或多个字符 |
| | | *()**匹配0个或多个目录 |
| | | */ |
| | | private String getRegexpUrl(String url) { |
| | | List<String> list = sysPermissionMapper.queryPermissionUrlWithStar(); |
| | | if(list!=null && list.size()>0) { |
| | | for (String p : list) { |
| | | PathMatcher matcher = new AntPathMatcher(); |
| | | if(matcher.match(p, url)) { |
| | | return p; |
| | | } |
| | | } |
| | | } |
| | | return null; |
| | | } |
| | | @Override |
| | | //@SensitiveDecode |
| | | public LoginUser getUserByName(String username) { |
| | | //update-begin-author:taoyan date:2022-6-6 for: VUEN-1276 【v3流程图】测试bug 1、通过我发起的流程或者流程实例,查看历史,流程图预览问题 |
| | | if (oConvertUtils.isEmpty(username)) { |
| | | return null; |
| | | } |
| | | //update-end-author:taoyan date:2022-6-6 for: VUEN-1276 【v3流程图】测试bug 1、通过我发起的流程或者流程实例,查看历史,流程图预览问题 |
| | | LoginUser user = sysUserService.getEncodeUserInfo(username); |
| | | |
| | | @Override |
| | | public SysUserCacheInfo getCacheUser(String username) { |
| | | SysUserCacheInfo info = new SysUserCacheInfo(); |
| | | info.setOneDepart(true); |
| | | LoginUser user = this.getUserByName(username); |
| | | //相同类中方法间调用时脱敏解密 Aop会失效,获取用户信息太重要,此处采用原生解密方法,不采用@SensitiveDecodeAble注解方式 |
| | | try { |
| | | SensitiveInfoUtil.handlerObject(user, false); |
| | | } catch (IllegalAccessException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | |
| | | return user; |
| | | } |
| | | |
| | | @Override |
| | | public String translateDictFromTable(String table, String text, String code, String key) { |
| | | return sysDictService.queryTableDictTextByKey(table, text, code, key); |
| | | } |
| | | |
| | | @Override |
| | | public String translateDict(String code, String key) { |
| | | return sysDictService.queryDictTextByKey(code, key); |
| | | } |
| | | |
| | | @Override |
| | | public List<SysPermissionDataRuleModel> queryPermissionDataRule(String component, String requestPath, String username) { |
| | | List<SysPermission> currentSyspermission = null; |
| | | if (oConvertUtils.isNotEmpty(component)) { |
| | | //1.通过注解属性pageComponent 获取菜单 |
| | | LambdaQueryWrapper<SysPermission> query = new LambdaQueryWrapper<SysPermission>(); |
| | | query.eq(SysPermission::getDelFlag, 0); |
| | | query.eq(SysPermission::getComponent, component); |
| | | currentSyspermission = sysPermissionMapper.selectList(query); |
| | | } else { |
| | | //1.直接通过前端请求地址查询菜单 |
| | | LambdaQueryWrapper<SysPermission> query = new LambdaQueryWrapper<SysPermission>(); |
| | | query.eq(SysPermission::getMenuType, 2); |
| | | query.eq(SysPermission::getDelFlag, 0); |
| | | query.eq(SysPermission::getUrl, requestPath); |
| | | currentSyspermission = sysPermissionMapper.selectList(query); |
| | | //2.未找到 再通过自定义匹配URL 获取菜单 |
| | | if (currentSyspermission == null || currentSyspermission.size() == 0) { |
| | | //通过自定义URL匹配规则 获取菜单(实现通过菜单配置数据权限规则,实际上针对获取数据接口进行数据规则控制) |
| | | String userMatchUrl = UrlMatchEnum.getMatchResultByUrl(requestPath); |
| | | LambdaQueryWrapper<SysPermission> queryQserMatch = new LambdaQueryWrapper<SysPermission>(); |
| | | // update-begin-author:taoyan date:20211027 for: online菜单如果配置成一级菜单 权限查询不到 取消menuType = 1 |
| | | //queryQserMatch.eq(SysPermission::getMenuType, 1); |
| | | // update-end-author:taoyan date:20211027 for: online菜单如果配置成一级菜单 权限查询不到 取消menuType = 1 |
| | | queryQserMatch.eq(SysPermission::getDelFlag, 0); |
| | | queryQserMatch.eq(SysPermission::getUrl, userMatchUrl); |
| | | if (oConvertUtils.isNotEmpty(userMatchUrl)) { |
| | | currentSyspermission = sysPermissionMapper.selectList(queryQserMatch); |
| | | } |
| | | } |
| | | //3.未找到 再通过正则匹配获取菜单 |
| | | if (currentSyspermission == null || currentSyspermission.size() == 0) { |
| | | //通过正则匹配权限配置 |
| | | String regUrl = getRegexpUrl(requestPath); |
| | | if (regUrl != null) { |
| | | currentSyspermission = sysPermissionMapper.selectList(new LambdaQueryWrapper<SysPermission>().eq(SysPermission::getMenuType, 2).eq(SysPermission::getUrl, regUrl).eq(SysPermission::getDelFlag, 0)); |
| | | } |
| | | } |
| | | } |
| | | if (currentSyspermission != null && currentSyspermission.size() > 0) { |
| | | List<SysPermissionDataRuleModel> dataRules = new ArrayList<SysPermissionDataRuleModel>(); |
| | | for (SysPermission sysPermission : currentSyspermission) { |
| | | // update-begin--Author:scott Date:20191119 for:数据权限规则编码不规范,项目存在相同包名和类名 #722 |
| | | List<SysPermissionDataRule> temp = sysPermissionDataRuleService.queryPermissionDataRules(username, sysPermission.getId()); |
| | | if (temp != null && temp.size() > 0) { |
| | | //dataRules.addAll(temp); |
| | | dataRules = oConvertUtils.entityListToModelList(temp, SysPermissionDataRuleModel.class); |
| | | } |
| | | // update-end--Author:scott Date:20191119 for:数据权限规则编码不规范,项目存在相同包名和类名 #722 |
| | | } |
| | | return dataRules; |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | /** |
| | | * 匹配前端传过来的地址 匹配成功返回正则地址 |
| | | * AntPathMatcher匹配地址 |
| | | * ()* 匹配0个或多个字符 |
| | | * ()**匹配0个或多个目录 |
| | | */ |
| | | private String getRegexpUrl(String url) { |
| | | List<String> list = sysPermissionMapper.queryPermissionUrlWithStar(); |
| | | if (list != null && list.size() > 0) { |
| | | for (String p : list) { |
| | | PathMatcher matcher = new AntPathMatcher(); |
| | | if (matcher.match(p, url)) { |
| | | return p; |
| | | } |
| | | } |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | @Override |
| | | public SysUserCacheInfo getCacheUser(String username) { |
| | | SysUserCacheInfo info = new SysUserCacheInfo(); |
| | | info.setOneDepart(true); |
| | | LoginUser user = this.getUserByName(username); |
| | | |
| | | // try { |
| | | // //相同类中方法间调用时脱敏@SensitiveDecodeAble解密 Aop失效处理 |
| | |
| | | // e.printStackTrace(); |
| | | // } |
| | | |
| | | if(user!=null) { |
| | | info.setSysUserCode(user.getUsername()); |
| | | info.setSysUserName(user.getRealname()); |
| | | info.setSysOrgCode(user.getOrgCode()); |
| | | }else{ |
| | | return null; |
| | | } |
| | | //多部门支持in查询 |
| | | List<SysDepart> list = departMapper.queryUserDeparts(user.getId()); |
| | | List<String> sysMultiOrgCode = new ArrayList<String>(); |
| | | if(list==null || list.size()==0) { |
| | | //当前用户无部门 |
| | | //sysMultiOrgCode.add("0"); |
| | | }else if(list.size()==1) { |
| | | sysMultiOrgCode.add(list.get(0).getOrgCode()); |
| | | }else { |
| | | info.setOneDepart(false); |
| | | for (SysDepart dpt : list) { |
| | | sysMultiOrgCode.add(dpt.getOrgCode()); |
| | | } |
| | | } |
| | | info.setSysMultiOrgCode(sysMultiOrgCode); |
| | | return info; |
| | | } |
| | | if (user != null) { |
| | | info.setSysUserCode(user.getUsername()); |
| | | info.setSysUserName(user.getRealname()); |
| | | info.setSysOrgCode(user.getOrgCode()); |
| | | } else { |
| | | return null; |
| | | } |
| | | //多部门支持in查询 |
| | | List<SysDepart> list = departMapper.queryUserDeparts(user.getId()); |
| | | List<String> sysMultiOrgCode = new ArrayList<String>(); |
| | | if (list == null || list.size() == 0) { |
| | | //当前用户无部门 |
| | | //sysMultiOrgCode.add("0"); |
| | | } else if (list.size() == 1) { |
| | | sysMultiOrgCode.add(list.get(0).getOrgCode()); |
| | | } else { |
| | | info.setOneDepart(false); |
| | | for (SysDepart dpt : list) { |
| | | sysMultiOrgCode.add(dpt.getOrgCode()); |
| | | } |
| | | } |
| | | info.setSysMultiOrgCode(sysMultiOrgCode); |
| | | return info; |
| | | } |
| | | |
| | | @Override |
| | | public LoginUser getUserById(String id) { |
| | | if(oConvertUtils.isEmpty(id)) { |
| | | return null; |
| | | } |
| | | LoginUser loginUser = new LoginUser(); |
| | | SysUser sysUser = userMapper.selectById(id); |
| | | if(sysUser==null) { |
| | | return null; |
| | | } |
| | | BeanUtils.copyProperties(sysUser, loginUser); |
| | | return loginUser; |
| | | } |
| | | @Override |
| | | public LoginUser getUserById(String id) { |
| | | if (oConvertUtils.isEmpty(id)) { |
| | | return null; |
| | | } |
| | | LoginUser loginUser = new LoginUser(); |
| | | SysUser sysUser = userMapper.selectById(id); |
| | | if (sysUser == null) { |
| | | return null; |
| | | } |
| | | BeanUtils.copyProperties(sysUser, loginUser); |
| | | return loginUser; |
| | | } |
| | | |
| | | @Override |
| | | public List<String> getRolesByUsername(String username) { |
| | | return sysUserRoleMapper.getRoleByUserName(username); |
| | | } |
| | | @Override |
| | | public List<String> getRolesByUsername(String username) { |
| | | return sysUserRoleMapper.getRoleByUserName(username); |
| | | } |
| | | |
| | | @Override |
| | | public List<String> getDepartIdsByUsername(String username) { |
| | | List<SysDepart> list = sysDepartService.queryDepartsByUsername(username); |
| | | List<String> result = new ArrayList<>(list.size()); |
| | | for (SysDepart depart : list) { |
| | | result.add(depart.getId()); |
| | | } |
| | | return result; |
| | | } |
| | | @Override |
| | | public List<String> getDepartIdsByUsername(String username) { |
| | | List<SysDepart> list = sysDepartService.queryDepartsByUsername(username); |
| | | List<String> result = new ArrayList<>(list.size()); |
| | | for (SysDepart depart : list) { |
| | | result.add(depart.getId()); |
| | | } |
| | | return result; |
| | | } |
| | | |
| | | @Override |
| | | public List<String> getDepartNamesByUsername(String username) { |
| | | List<SysDepart> list = sysDepartService.queryDepartsByUsername(username); |
| | | List<String> result = new ArrayList<>(list.size()); |
| | | for (SysDepart depart : list) { |
| | | result.add(depart.getDepartName()); |
| | | } |
| | | return result; |
| | | } |
| | | @Override |
| | | public List<String> getDepartNamesByUsername(String username) { |
| | | List<SysDepart> list = sysDepartService.queryDepartsByUsername(username); |
| | | List<String> result = new ArrayList<>(list.size()); |
| | | for (SysDepart depart : list) { |
| | | result.add(depart.getDepartName()); |
| | | } |
| | | return result; |
| | | } |
| | | |
| | | @Override |
| | | public DictModel getParentDepartId(String departId) { |
| | | SysDepart depart = departMapper.getParentDepartId(departId); |
| | | DictModel model = new DictModel(depart.getId(),depart.getParentId()); |
| | | return model; |
| | | } |
| | | @Override |
| | | public DictModel getParentDepartId(String departId) { |
| | | SysDepart depart = departMapper.getParentDepartId(departId); |
| | | DictModel model = new DictModel(depart.getId(), depart.getParentId()); |
| | | return model; |
| | | } |
| | | |
| | | @Override |
| | | @Cacheable(value = CacheConstant.SYS_DICT_CACHE,key = "#code", unless = "#result == null ") |
| | | public List<DictModel> queryDictItemsByCode(String code) { |
| | | return sysDictService.queryDictItemsByCode(code); |
| | | } |
| | | @Override |
| | | @Cacheable(value = CacheConstant.SYS_DICT_CACHE, key = "#code", unless = "#result == null ") |
| | | public List<DictModel> queryDictItemsByCode(String code) { |
| | | return sysDictService.queryDictItemsByCode(code); |
| | | } |
| | | |
| | | @Override |
| | | @Cacheable(value = CacheConstant.SYS_ENABLE_DICT_CACHE,key = "#code", unless = "#result == null ") |
| | | public List<DictModel> queryEnableDictItemsByCode(String code) { |
| | | return sysDictService.queryEnableDictItemsByCode(code); |
| | | } |
| | | @Override |
| | | @Cacheable(value = CacheConstant.SYS_ENABLE_DICT_CACHE, key = "#code", unless = "#result == null ") |
| | | public List<DictModel> queryEnableDictItemsByCode(String code) { |
| | | return sysDictService.queryEnableDictItemsByCode(code); |
| | | } |
| | | |
| | | @Override |
| | | public List<DictModel> queryTableDictItemsByCode(String table, String text, String code) { |
| | | //update-begin-author:taoyan date:20200820 for:【Online+系统】字典表加权限控制机制逻辑,想法不错 LOWCOD-799 |
| | | if(table.indexOf(SymbolConstant.SYS_VAR_PREFIX)>=0){ |
| | | table = QueryGenerator.getSqlRuleValue(table); |
| | | } |
| | | //update-end-author:taoyan date:20200820 for:【Online+系统】字典表加权限控制机制逻辑,想法不错 LOWCOD-799 |
| | | String[] arr = new String[]{text, code}; |
| | | SqlInjectionUtil.filterContent(arr); |
| | | SqlInjectionUtil.specialFilterContentForDictSql(table); |
| | | return sysDictService.queryTableDictItemsByCode(table, text, code); |
| | | } |
| | | @Override |
| | | public List<DictModel> queryTableDictItemsByCode(String table, String text, String code) { |
| | | //update-begin-author:taoyan date:20200820 for:【Online+系统】字典表加权限控制机制逻辑,想法不错 LOWCOD-799 |
| | | if (table.indexOf(SymbolConstant.SYS_VAR_PREFIX) >= 0) { |
| | | table = QueryGenerator.getSqlRuleValue(table); |
| | | } |
| | | //update-end-author:taoyan date:20200820 for:【Online+系统】字典表加权限控制机制逻辑,想法不错 LOWCOD-799 |
| | | String[] arr = new String[]{text, code}; |
| | | SqlInjectionUtil.filterContent(arr); |
| | | SqlInjectionUtil.specialFilterContentForDictSql(table); |
| | | return sysDictService.queryTableDictItemsByCode(table, text, code); |
| | | } |
| | | |
| | | @Override |
| | | public List<DictModel> queryAllDepartBackDictModel() { |
| | | return sysDictService.queryAllDepartBackDictModel(); |
| | | } |
| | | @Override |
| | | public List<DictModel> queryAllDepartBackDictModel() { |
| | | return sysDictService.queryAllDepartBackDictModel(); |
| | | } |
| | | |
| | | @Override |
| | | public void sendSysAnnouncement(MessageDTO message) { |
| | | this.sendSysAnnouncement(message.getFromUser(), |
| | | message.getToUser(), |
| | | message.getTitle(), |
| | | message.getContent(), |
| | | message.getCategory()); |
| | | try { |
| | | // 同步发送第三方APP消息 |
| | | wechatEnterpriseService.sendMessage(message, true); |
| | | dingtalkService.sendMessage(message, true); |
| | | } catch (Exception e) { |
| | | log.error("同步发送第三方APP消息失败!", e); |
| | | } |
| | | } |
| | | @Override |
| | | public void sendSysAnnouncement(MessageDTO message) { |
| | | |
| | | @Override |
| | | public void sendBusAnnouncement(BusMessageDTO message) { |
| | | sendBusAnnouncement(message.getFromUser(), |
| | | message.getToUser(), |
| | | message.getTitle(), |
| | | message.getContent(), |
| | | message.getCategory(), |
| | | message.getBusType(), |
| | | message.getBusId()); |
| | | try { |
| | | // 同步发送第三方APP消息 |
| | | wechatEnterpriseService.sendMessage(message, true); |
| | | dingtalkService.sendMessage(message, true); |
| | | } catch (Exception e) { |
| | | log.error("同步发送第三方APP消息失败!", e); |
| | | } |
| | | } |
| | | if (StringUtils.isNotBlank(message.getMessageType())) { |
| | | //获取消息类型对应角色用户 |
| | | MessageSplitTypeEnum messageSplitTypeEnum = MessageSplitTypeEnum.valueOfType(message.getMessageType()); |
| | | SysDict sysDict = sysDictService.getOne(new LambdaQueryWrapper<SysDict>().eq(SysDict::getDictCode, messageSplitTypeEnum.getDictCode())); |
| | | List<SysDictItem> sysDictItemList = sysDictItemService.list(new QueryWrapper<SysDictItem>().eq("dict_id",sysDict.getId())); |
| | | if (CollectionUtils.isNotEmpty(sysDictItemList)) { |
| | | List<SysUser> sysUserList = sysUserService.getUserByRoleCodeList(sysDictItemList.stream().map(SysDictItem::getItemValue).collect(Collectors.toList())); |
| | | if (CollectionUtils.isNotEmpty(sysUserList)) { |
| | | Set<String> userIdList = new HashSet<>(Arrays.asList(message.getToUser().split(StringPool.COMMA))); |
| | | userIdList.addAll(sysUserList.stream().map(SysUser::getUsername).collect(Collectors.toList())); |
| | | message.setToUser(StringUtils.join(userIdList, StringPool.COMMA)); |
| | | } |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public void sendTemplateAnnouncement(TemplateMessageDTO message) { |
| | | String templateCode = message.getTemplateCode(); |
| | | String title = message.getTitle(); |
| | | Map<String,String> map = message.getTemplateParam(); |
| | | String fromUser = message.getFromUser(); |
| | | String toUser = message.getToUser(); |
| | | this.sendSysAnnouncement(message.getFromUser(), message.getToUser(), message.getTitle(), message.getContent(), message.getCategory()); |
| | | try { |
| | | // 同步发送第三方APP消息 |
| | | wechatEnterpriseService.sendMessage(message, true); |
| | | dingtalkService.sendMessage(message, true); |
| | | } catch (Exception e) { |
| | | log.error("同步发送第三方APP消息失败!", e); |
| | | } |
| | | } |
| | | |
| | | List<SysMessageTemplate> sysSmsTemplates = sysMessageTemplateService.selectByCode(templateCode); |
| | | if(sysSmsTemplates==null||sysSmsTemplates.size()==0){ |
| | | throw new JeecgBootException("消息模板不存在,模板编码:"+templateCode); |
| | | } |
| | | SysMessageTemplate sysSmsTemplate = sysSmsTemplates.get(0); |
| | | //模板标题 |
| | | title = title==null?sysSmsTemplate.getTemplateName():title; |
| | | //模板内容 |
| | | String content = sysSmsTemplate.getTemplateContent(); |
| | | if(map!=null) { |
| | | for (Map.Entry<String, String> entry : map.entrySet()) { |
| | | String str = "${" + entry.getKey() + "}"; |
| | | if(oConvertUtils.isNotEmpty(title)){ |
| | | title = title.replace(str, entry.getValue()); |
| | | } |
| | | content = content.replace(str, entry.getValue()); |
| | | } |
| | | } |
| | | @Override |
| | | public void sendBusAnnouncement(BusMessageDTO message) { |
| | | sendBusAnnouncement(message.getFromUser(), message.getToUser(), message.getTitle(), message.getContent(), message.getCategory(), message.getBusType(), message.getBusId()); |
| | | try { |
| | | // 同步发送第三方APP消息 |
| | | wechatEnterpriseService.sendMessage(message, true); |
| | | dingtalkService.sendMessage(message, true); |
| | | } catch (Exception e) { |
| | | log.error("同步发送第三方APP消息失败!", e); |
| | | } |
| | | } |
| | | |
| | | SysAnnouncement announcement = new SysAnnouncement(); |
| | | announcement.setTitile(title); |
| | | announcement.setMsgContent(content); |
| | | announcement.setSender(fromUser); |
| | | announcement.setPriority(CommonConstant.PRIORITY_M); |
| | | announcement.setMsgType(CommonConstant.MSG_TYPE_UESR); |
| | | announcement.setSendStatus(CommonConstant.HAS_SEND); |
| | | announcement.setSendTime(new Date()); |
| | | announcement.setMsgCategory(CommonConstant.MSG_CATEGORY_2); |
| | | announcement.setDelFlag(String.valueOf(CommonConstant.DEL_FLAG_0)); |
| | | sysAnnouncementMapper.insert(announcement); |
| | | // 2.插入用户通告阅读标记表记录 |
| | | String userId = toUser; |
| | | String[] userIds = userId.split(","); |
| | | String anntId = announcement.getId(); |
| | | for(int i=0;i<userIds.length;i++) { |
| | | if(oConvertUtils.isNotEmpty(userIds[i])) { |
| | | SysUser sysUser = userMapper.getUserByName(userIds[i]); |
| | | if(sysUser==null) { |
| | | continue; |
| | | } |
| | | SysAnnouncementSend announcementSend = new SysAnnouncementSend(); |
| | | announcementSend.setAnntId(anntId); |
| | | announcementSend.setUserId(sysUser.getId()); |
| | | announcementSend.setReadFlag(CommonConstant.NO_READ_FLAG); |
| | | sysAnnouncementSendMapper.insert(announcementSend); |
| | | JSONObject obj = new JSONObject(); |
| | | obj.put(WebsocketConst.MSG_CMD, WebsocketConst.CMD_USER); |
| | | obj.put(WebsocketConst.MSG_USER_ID, sysUser.getId()); |
| | | obj.put(WebsocketConst.MSG_ID, announcement.getId()); |
| | | obj.put(WebsocketConst.MSG_TXT, announcement.getTitile()); |
| | | webSocket.sendMessage(sysUser.getId(), obj.toJSONString()); |
| | | } |
| | | } |
| | | try { |
| | | // 同步企业微信、钉钉的消息通知 |
| | | dingtalkService.sendActionCardMessage(announcement, true); |
| | | wechatEnterpriseService.sendTextCardMessage(announcement, true); |
| | | } catch (Exception e) { |
| | | log.error("同步发送第三方APP消息失败!", e); |
| | | } |
| | | @Override |
| | | public void sendTemplateAnnouncement(TemplateMessageDTO message) { |
| | | String templateCode = message.getTemplateCode(); |
| | | String title = message.getTitle(); |
| | | Map<String, String> map = message.getTemplateParam(); |
| | | String fromUser = message.getFromUser(); |
| | | String toUser = message.getToUser(); |
| | | |
| | | } |
| | | List<SysMessageTemplate> sysSmsTemplates = sysMessageTemplateService.selectByCode(templateCode); |
| | | if (sysSmsTemplates == null || sysSmsTemplates.size() == 0) { |
| | | throw new JeecgBootException("消息模板不存在,模板编码:" + templateCode); |
| | | } |
| | | SysMessageTemplate sysSmsTemplate = sysSmsTemplates.get(0); |
| | | //模板标题 |
| | | title = title == null ? sysSmsTemplate.getTemplateName() : title; |
| | | //模板内容 |
| | | String content = sysSmsTemplate.getTemplateContent(); |
| | | if (map != null) { |
| | | for (Map.Entry<String, String> entry : map.entrySet()) { |
| | | String str = "${" + entry.getKey() + "}"; |
| | | if (oConvertUtils.isNotEmpty(title)) { |
| | | title = title.replace(str, entry.getValue()); |
| | | } |
| | | content = content.replace(str, entry.getValue()); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public void sendBusTemplateAnnouncement(BusTemplateMessageDTO message) { |
| | | String templateCode = message.getTemplateCode(); |
| | | String title = message.getTitle(); |
| | | Map<String,String> map = message.getTemplateParam(); |
| | | String fromUser = message.getFromUser(); |
| | | String toUser = message.getToUser(); |
| | | String busId = message.getBusId(); |
| | | String busType = message.getBusType(); |
| | | SysAnnouncement announcement = new SysAnnouncement(); |
| | | announcement.setTitile(title); |
| | | announcement.setMsgContent(content); |
| | | announcement.setSender(fromUser); |
| | | announcement.setPriority(CommonConstant.PRIORITY_M); |
| | | announcement.setMsgType(CommonConstant.MSG_TYPE_UESR); |
| | | announcement.setSendStatus(CommonConstant.HAS_SEND); |
| | | announcement.setSendTime(new Date()); |
| | | announcement.setMsgCategory(CommonConstant.MSG_CATEGORY_2); |
| | | announcement.setDelFlag(String.valueOf(CommonConstant.DEL_FLAG_0)); |
| | | sysAnnouncementMapper.insert(announcement); |
| | | // 2.插入用户通告阅读标记表记录 |
| | | String userId = toUser; |
| | | String[] userIds = userId.split(","); |
| | | String anntId = announcement.getId(); |
| | | for (int i = 0; i < userIds.length; i++) { |
| | | if (oConvertUtils.isNotEmpty(userIds[i])) { |
| | | SysUser sysUser = userMapper.getUserByName(userIds[i]); |
| | | if (sysUser == null) { |
| | | continue; |
| | | } |
| | | SysAnnouncementSend announcementSend = new SysAnnouncementSend(); |
| | | announcementSend.setAnntId(anntId); |
| | | announcementSend.setUserId(sysUser.getId()); |
| | | announcementSend.setReadFlag(CommonConstant.NO_READ_FLAG); |
| | | sysAnnouncementSendMapper.insert(announcementSend); |
| | | JSONObject obj = new JSONObject(); |
| | | obj.put(WebsocketConst.MSG_CMD, WebsocketConst.CMD_USER); |
| | | obj.put(WebsocketConst.MSG_USER_ID, sysUser.getId()); |
| | | obj.put(WebsocketConst.MSG_ID, announcement.getId()); |
| | | obj.put(WebsocketConst.MSG_TXT, announcement.getTitile()); |
| | | webSocket.sendMessage(sysUser.getId(), obj.toJSONString()); |
| | | } |
| | | } |
| | | try { |
| | | // 同步企业微信、钉钉的消息通知 |
| | | dingtalkService.sendActionCardMessage(announcement, true); |
| | | wechatEnterpriseService.sendTextCardMessage(announcement, true); |
| | | } catch (Exception e) { |
| | | log.error("同步发送第三方APP消息失败!", e); |
| | | } |
| | | |
| | | List<SysMessageTemplate> sysSmsTemplates = sysMessageTemplateService.selectByCode(templateCode); |
| | | if(sysSmsTemplates==null||sysSmsTemplates.size()==0){ |
| | | throw new JeecgBootException("消息模板不存在,模板编码:"+templateCode); |
| | | } |
| | | SysMessageTemplate sysSmsTemplate = sysSmsTemplates.get(0); |
| | | //模板标题 |
| | | title = title==null?sysSmsTemplate.getTemplateName():title; |
| | | //模板内容 |
| | | String content = sysSmsTemplate.getTemplateContent(); |
| | | if(map!=null) { |
| | | for (Map.Entry<String, String> entry : map.entrySet()) { |
| | | String str = "${" + entry.getKey() + "}"; |
| | | title = title.replace(str, entry.getValue()); |
| | | content = content.replace(str, entry.getValue()); |
| | | } |
| | | } |
| | | SysAnnouncement announcement = new SysAnnouncement(); |
| | | announcement.setTitile(title); |
| | | announcement.setMsgContent(content); |
| | | announcement.setSender(fromUser); |
| | | announcement.setPriority(CommonConstant.PRIORITY_M); |
| | | announcement.setMsgType(CommonConstant.MSG_TYPE_UESR); |
| | | announcement.setSendStatus(CommonConstant.HAS_SEND); |
| | | announcement.setSendTime(new Date()); |
| | | announcement.setMsgCategory(CommonConstant.MSG_CATEGORY_2); |
| | | announcement.setDelFlag(String.valueOf(CommonConstant.DEL_FLAG_0)); |
| | | announcement.setBusId(busId); |
| | | announcement.setBusType(busType); |
| | | announcement.setOpenType(SysAnnmentTypeEnum.getByType(busType).getOpenType()); |
| | | announcement.setOpenPage(SysAnnmentTypeEnum.getByType(busType).getOpenPage()); |
| | | sysAnnouncementMapper.insert(announcement); |
| | | // 2.插入用户通告阅读标记表记录 |
| | | String userId = toUser; |
| | | String[] userIds = userId.split(","); |
| | | String anntId = announcement.getId(); |
| | | for(int i=0;i<userIds.length;i++) { |
| | | if(oConvertUtils.isNotEmpty(userIds[i])) { |
| | | SysUser sysUser = userMapper.getUserByName(userIds[i]); |
| | | if(sysUser==null) { |
| | | continue; |
| | | } |
| | | SysAnnouncementSend announcementSend = new SysAnnouncementSend(); |
| | | announcementSend.setAnntId(anntId); |
| | | announcementSend.setUserId(sysUser.getId()); |
| | | announcementSend.setReadFlag(CommonConstant.NO_READ_FLAG); |
| | | sysAnnouncementSendMapper.insert(announcementSend); |
| | | JSONObject obj = new JSONObject(); |
| | | obj.put(WebsocketConst.MSG_CMD, WebsocketConst.CMD_USER); |
| | | obj.put(WebsocketConst.MSG_USER_ID, sysUser.getId()); |
| | | obj.put(WebsocketConst.MSG_ID, announcement.getId()); |
| | | obj.put(WebsocketConst.MSG_TXT, announcement.getTitile()); |
| | | webSocket.sendMessage(sysUser.getId(), obj.toJSONString()); |
| | | } |
| | | } |
| | | try { |
| | | // 同步企业微信、钉钉的消息通知 |
| | | dingtalkService.sendActionCardMessage(announcement, true); |
| | | wechatEnterpriseService.sendTextCardMessage(announcement, true); |
| | | } catch (Exception e) { |
| | | log.error("同步发送第三方APP消息失败!", e); |
| | | } |
| | | } |
| | | |
| | | } |
| | | @Override |
| | | public void sendBusTemplateAnnouncement(BusTemplateMessageDTO message) { |
| | | String templateCode = message.getTemplateCode(); |
| | | String title = message.getTitle(); |
| | | Map<String, String> map = message.getTemplateParam(); |
| | | String fromUser = message.getFromUser(); |
| | | String toUser = message.getToUser(); |
| | | String busId = message.getBusId(); |
| | | String busType = message.getBusType(); |
| | | |
| | | @Override |
| | | public String parseTemplateByCode(TemplateDTO templateDTO) { |
| | | String templateCode = templateDTO.getTemplateCode(); |
| | | Map<String, String> map = templateDTO.getTemplateParam(); |
| | | List<SysMessageTemplate> sysSmsTemplates = sysMessageTemplateService.selectByCode(templateCode); |
| | | if(sysSmsTemplates==null||sysSmsTemplates.size()==0){ |
| | | throw new JeecgBootException("消息模板不存在,模板编码:"+templateCode); |
| | | } |
| | | SysMessageTemplate sysSmsTemplate = sysSmsTemplates.get(0); |
| | | //模板内容 |
| | | String content = sysSmsTemplate.getTemplateContent(); |
| | | if(map!=null) { |
| | | for (Map.Entry<String, String> entry : map.entrySet()) { |
| | | String str = "${" + entry.getKey() + "}"; |
| | | content = content.replace(str, entry.getValue()); |
| | | } |
| | | } |
| | | return content; |
| | | } |
| | | List<SysMessageTemplate> sysSmsTemplates = sysMessageTemplateService.selectByCode(templateCode); |
| | | if (sysSmsTemplates == null || sysSmsTemplates.size() == 0) { |
| | | throw new JeecgBootException("消息模板不存在,模板编码:" + templateCode); |
| | | } |
| | | SysMessageTemplate sysSmsTemplate = sysSmsTemplates.get(0); |
| | | //模板标题 |
| | | title = title == null ? sysSmsTemplate.getTemplateName() : title; |
| | | //模板内容 |
| | | String content = sysSmsTemplate.getTemplateContent(); |
| | | if (map != null) { |
| | | for (Map.Entry<String, String> entry : map.entrySet()) { |
| | | String str = "${" + entry.getKey() + "}"; |
| | | title = title.replace(str, entry.getValue()); |
| | | content = content.replace(str, entry.getValue()); |
| | | } |
| | | } |
| | | SysAnnouncement announcement = new SysAnnouncement(); |
| | | announcement.setTitile(title); |
| | | announcement.setMsgContent(content); |
| | | announcement.setSender(fromUser); |
| | | announcement.setPriority(CommonConstant.PRIORITY_M); |
| | | announcement.setMsgType(CommonConstant.MSG_TYPE_UESR); |
| | | announcement.setSendStatus(CommonConstant.HAS_SEND); |
| | | announcement.setSendTime(new Date()); |
| | | announcement.setMsgCategory(CommonConstant.MSG_CATEGORY_2); |
| | | announcement.setDelFlag(String.valueOf(CommonConstant.DEL_FLAG_0)); |
| | | announcement.setBusId(busId); |
| | | announcement.setBusType(busType); |
| | | announcement.setOpenType(SysAnnmentTypeEnum.getByType(busType).getOpenType()); |
| | | announcement.setOpenPage(SysAnnmentTypeEnum.getByType(busType).getOpenPage()); |
| | | sysAnnouncementMapper.insert(announcement); |
| | | // 2.插入用户通告阅读标记表记录 |
| | | String userId = toUser; |
| | | String[] userIds = userId.split(","); |
| | | String anntId = announcement.getId(); |
| | | for (int i = 0; i < userIds.length; i++) { |
| | | if (oConvertUtils.isNotEmpty(userIds[i])) { |
| | | SysUser sysUser = userMapper.getUserByName(userIds[i]); |
| | | if (sysUser == null) { |
| | | continue; |
| | | } |
| | | SysAnnouncementSend announcementSend = new SysAnnouncementSend(); |
| | | announcementSend.setAnntId(anntId); |
| | | announcementSend.setUserId(sysUser.getId()); |
| | | announcementSend.setReadFlag(CommonConstant.NO_READ_FLAG); |
| | | sysAnnouncementSendMapper.insert(announcementSend); |
| | | JSONObject obj = new JSONObject(); |
| | | obj.put(WebsocketConst.MSG_CMD, WebsocketConst.CMD_USER); |
| | | obj.put(WebsocketConst.MSG_USER_ID, sysUser.getId()); |
| | | obj.put(WebsocketConst.MSG_ID, announcement.getId()); |
| | | obj.put(WebsocketConst.MSG_TXT, announcement.getTitile()); |
| | | webSocket.sendMessage(sysUser.getId(), obj.toJSONString()); |
| | | } |
| | | } |
| | | try { |
| | | // 同步企业微信、钉钉的消息通知 |
| | | dingtalkService.sendActionCardMessage(announcement, true); |
| | | wechatEnterpriseService.sendTextCardMessage(announcement, true); |
| | | } catch (Exception e) { |
| | | log.error("同步发送第三方APP消息失败!", e); |
| | | } |
| | | |
| | | @Override |
| | | public void updateSysAnnounReadFlag(String busType, String busId) { |
| | | SysAnnouncement announcement = sysAnnouncementMapper.selectOne(new QueryWrapper<SysAnnouncement>().eq("bus_type",busType).eq("bus_id",busId)); |
| | | if(announcement != null){ |
| | | LoginUser sysUser = (LoginUser)SecurityUtils.getSubject().getPrincipal(); |
| | | String userId = sysUser.getId(); |
| | | LambdaUpdateWrapper<SysAnnouncementSend> updateWrapper = new UpdateWrapper().lambda(); |
| | | updateWrapper.set(SysAnnouncementSend::getReadFlag, CommonConstant.HAS_READ_FLAG); |
| | | updateWrapper.set(SysAnnouncementSend::getReadTime, new Date()); |
| | | updateWrapper.last("where annt_id ='"+announcement.getId()+"' and user_id ='"+userId+"'"); |
| | | SysAnnouncementSend announcementSend = new SysAnnouncementSend(); |
| | | sysAnnouncementSendMapper.update(announcementSend, updateWrapper); |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 获取数据库类型 |
| | | * @param dataSource |
| | | * @return |
| | | * @throws SQLException |
| | | */ |
| | | private String getDatabaseTypeByDataSource(DataSource dataSource) throws SQLException{ |
| | | if("".equals(DB_TYPE)) { |
| | | Connection connection = dataSource.getConnection(); |
| | | try { |
| | | DatabaseMetaData md = connection.getMetaData(); |
| | | String dbType = md.getDatabaseProductName().toLowerCase(); |
| | | if(dbType.indexOf(DataBaseConstant.DB_TYPE_MYSQL.toLowerCase())>=0) { |
| | | DB_TYPE = DataBaseConstant.DB_TYPE_MYSQL; |
| | | }else if(dbType.indexOf(DataBaseConstant.DB_TYPE_ORACLE.toLowerCase())>=0) { |
| | | DB_TYPE = DataBaseConstant.DB_TYPE_ORACLE; |
| | | }else if(dbType.indexOf(DataBaseConstant.DB_TYPE_SQLSERVER.toLowerCase())>=0||dbType.indexOf(DataBaseConstant.DB_TYPE_SQL_SERVER_BLANK)>=0) { |
| | | DB_TYPE = DataBaseConstant.DB_TYPE_SQLSERVER; |
| | | }else if(dbType.indexOf(DataBaseConstant.DB_TYPE_POSTGRESQL.toLowerCase())>=0) { |
| | | DB_TYPE = DataBaseConstant.DB_TYPE_POSTGRESQL; |
| | | }else if(dbType.indexOf(DataBaseConstant.DB_TYPE_MARIADB.toLowerCase())>=0) { |
| | | DB_TYPE = DataBaseConstant.DB_TYPE_MARIADB; |
| | | }else { |
| | | log.error("数据库类型:[" + dbType + "]不识别!"); |
| | | //throw new JeecgBootException("数据库类型:["+dbType+"]不识别!"); |
| | | } |
| | | } catch (Exception e) { |
| | | log.error(e.getMessage(), e); |
| | | }finally { |
| | | connection.close(); |
| | | } |
| | | } |
| | | return DB_TYPE; |
| | | @Override |
| | | public String parseTemplateByCode(TemplateDTO templateDTO) { |
| | | String templateCode = templateDTO.getTemplateCode(); |
| | | Map<String, String> map = templateDTO.getTemplateParam(); |
| | | List<SysMessageTemplate> sysSmsTemplates = sysMessageTemplateService.selectByCode(templateCode); |
| | | if (sysSmsTemplates == null || sysSmsTemplates.size() == 0) { |
| | | throw new JeecgBootException("消息模板不存在,模板编码:" + templateCode); |
| | | } |
| | | SysMessageTemplate sysSmsTemplate = sysSmsTemplates.get(0); |
| | | //模板内容 |
| | | String content = sysSmsTemplate.getTemplateContent(); |
| | | if (map != null) { |
| | | for (Map.Entry<String, String> entry : map.entrySet()) { |
| | | String str = "${" + entry.getKey() + "}"; |
| | | content = content.replace(str, entry.getValue()); |
| | | } |
| | | } |
| | | return content; |
| | | } |
| | | |
| | | } |
| | | @Override |
| | | public void updateSysAnnounReadFlag(String busType, String busId) { |
| | | SysAnnouncement announcement = sysAnnouncementMapper.selectOne(new QueryWrapper<SysAnnouncement>().eq("bus_type", busType).eq("bus_id", busId)); |
| | | if (announcement != null) { |
| | | LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); |
| | | String userId = sysUser.getId(); |
| | | LambdaUpdateWrapper<SysAnnouncementSend> updateWrapper = new UpdateWrapper().lambda(); |
| | | updateWrapper.set(SysAnnouncementSend::getReadFlag, CommonConstant.HAS_READ_FLAG); |
| | | updateWrapper.set(SysAnnouncementSend::getReadTime, new Date()); |
| | | updateWrapper.last("where annt_id ='" + announcement.getId() + "' and user_id ='" + userId + "'"); |
| | | SysAnnouncementSend announcementSend = new SysAnnouncementSend(); |
| | | sysAnnouncementSendMapper.update(announcementSend, updateWrapper); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public List<DictModel> queryAllDict() { |
| | | // 查询并排序 |
| | | QueryWrapper<SysDict> queryWrapper = new QueryWrapper<SysDict>(); |
| | | queryWrapper.orderByAsc("create_time"); |
| | | List<SysDict> dicts = sysDictService.list(queryWrapper); |
| | | // 封装成 model |
| | | List<DictModel> list = new ArrayList<DictModel>(); |
| | | for (SysDict dict : dicts) { |
| | | list.add(new DictModel(dict.getDictCode(), dict.getDictName())); |
| | | } |
| | | /** |
| | | * 获取数据库类型 |
| | | * |
| | | * @param dataSource |
| | | * @return |
| | | */ |
| | | @Resource |
| | | private String getDatabaseTypeByDataSource(DataSource dataSource) throws SQLException { |
| | | if ("".equals(DB_TYPE)) { |
| | | Connection connection = dataSource.getConnection(); |
| | | try { |
| | | DatabaseMetaData md = connection.getMetaData(); |
| | | String dbType = md.getDatabaseProductName().toLowerCase(); |
| | | if (dbType.indexOf(DataBaseConstant.DB_TYPE_MYSQL.toLowerCase()) >= 0) { |
| | | DB_TYPE = DataBaseConstant.DB_TYPE_MYSQL; |
| | | } else if (dbType.indexOf(DataBaseConstant.DB_TYPE_ORACLE.toLowerCase()) >= 0) { |
| | | DB_TYPE = DataBaseConstant.DB_TYPE_ORACLE; |
| | | } else if (dbType.indexOf(DataBaseConstant.DB_TYPE_SQLSERVER.toLowerCase()) >= 0 || dbType.indexOf(DataBaseConstant.DB_TYPE_SQL_SERVER_BLANK) >= 0) { |
| | | DB_TYPE = DataBaseConstant.DB_TYPE_SQLSERVER; |
| | | } else if (dbType.indexOf(DataBaseConstant.DB_TYPE_POSTGRESQL.toLowerCase()) >= 0) { |
| | | DB_TYPE = DataBaseConstant.DB_TYPE_POSTGRESQL; |
| | | } else if (dbType.indexOf(DataBaseConstant.DB_TYPE_MARIADB.toLowerCase()) >= 0) { |
| | | DB_TYPE = DataBaseConstant.DB_TYPE_MARIADB; |
| | | } else { |
| | | log.error("数据库类型:[" + dbType + "]不识别!"); |
| | | //throw new JeecgBootException("数据库类型:["+dbType+"]不识别!"); |
| | | } |
| | | } catch (Exception e) { |
| | | log.error(e.getMessage(), e); |
| | | } finally { |
| | | connection.close(); |
| | | } |
| | | } |
| | | return DB_TYPE; |
| | | |
| | | return list; |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public List<SysCategoryModel> queryAllSysCategory() { |
| | | List<SysCategory> ls = categoryMapper.selectList(null); |
| | | List<SysCategoryModel> res = oConvertUtils.entityListToModelList(ls,SysCategoryModel.class); |
| | | return res; |
| | | } |
| | | @Override |
| | | public List<DictModel> queryAllDict() { |
| | | // 查询并排序 |
| | | QueryWrapper<SysDict> queryWrapper = new QueryWrapper<SysDict>(); |
| | | queryWrapper.orderByAsc("create_time"); |
| | | List<SysDict> dicts = sysDictService.list(queryWrapper); |
| | | // 封装成 model |
| | | List<DictModel> list = new ArrayList<DictModel>(); |
| | | for (SysDict dict : dicts) { |
| | | list.add(new DictModel(dict.getDictCode(), dict.getDictName())); |
| | | } |
| | | |
| | | @Override |
| | | public List<DictModel> queryFilterTableDictInfo(String table, String text, String code, String filterSql) { |
| | | return sysDictService.queryTableDictItemsByCodeAndFilter(table,text,code,filterSql); |
| | | } |
| | | return list; |
| | | } |
| | | |
| | | @Override |
| | | public List<String> queryTableDictByKeys(String table, String text, String code, String[] keyArray) { |
| | | return sysDictService.queryTableDictByKeys(table,text,code,Joiner.on(",").join(keyArray)); |
| | | } |
| | | @Override |
| | | public List<SysCategoryModel> queryAllSysCategory() { |
| | | List<SysCategory> ls = categoryMapper.selectList(null); |
| | | List<SysCategoryModel> res = oConvertUtils.entityListToModelList(ls, SysCategoryModel.class); |
| | | return res; |
| | | } |
| | | |
| | | @Override |
| | | public List<ComboModel> queryAllUserBackCombo() { |
| | | List<ComboModel> list = new ArrayList<ComboModel>(); |
| | | List<SysUser> userList = userMapper.selectList(new QueryWrapper<SysUser>().eq("status",1).eq("del_flag",0)); |
| | | for(SysUser user : userList){ |
| | | ComboModel model = new ComboModel(); |
| | | model.setTitle(user.getRealname()); |
| | | model.setId(user.getId()); |
| | | model.setUsername(user.getUsername()); |
| | | list.add(model); |
| | | } |
| | | return list; |
| | | } |
| | | @Override |
| | | public List<DictModel> queryFilterTableDictInfo(String table, String text, String code, String filterSql) { |
| | | return sysDictService.queryTableDictItemsByCodeAndFilter(table, text, code, filterSql); |
| | | } |
| | | |
| | | @Override |
| | | public JSONObject queryAllUser(String userIds, Integer pageNo, Integer pageSize) { |
| | | JSONObject json = new JSONObject(); |
| | | QueryWrapper<SysUser> queryWrapper = new QueryWrapper<SysUser>().eq("status",1).eq("del_flag",0); |
| | | List<ComboModel> list = new ArrayList<ComboModel>(); |
| | | Page<SysUser> page = new Page<SysUser>(pageNo, pageSize); |
| | | IPage<SysUser> pageList = userMapper.selectPage(page, queryWrapper); |
| | | for(SysUser user : pageList.getRecords()){ |
| | | ComboModel model = new ComboModel(); |
| | | model.setUsername(user.getUsername()); |
| | | model.setTitle(user.getRealname()); |
| | | model.setId(user.getId()); |
| | | model.setEmail(user.getEmail()); |
| | | if(oConvertUtils.isNotEmpty(userIds)){ |
| | | String[] temp = userIds.split(","); |
| | | for(int i = 0; i<temp.length;i++){ |
| | | if(temp[i].equals(user.getId())){ |
| | | model.setChecked(true); |
| | | } |
| | | } |
| | | } |
| | | list.add(model); |
| | | } |
| | | json.put("list",list); |
| | | json.put("total",pageList.getTotal()); |
| | | return json; |
| | | } |
| | | @Override |
| | | public List<String> queryTableDictByKeys(String table, String text, String code, String[] keyArray) { |
| | | return sysDictService.queryTableDictByKeys(table, text, code, Joiner.on(",").join(keyArray)); |
| | | } |
| | | |
| | | @Override |
| | | public List<ComboModel> queryAllRole() { |
| | | List<ComboModel> list = new ArrayList<ComboModel>(); |
| | | List<SysRole> roleList = roleMapper.selectList(new QueryWrapper<SysRole>()); |
| | | for(SysRole role : roleList){ |
| | | ComboModel model = new ComboModel(); |
| | | model.setTitle(role.getRoleName()); |
| | | model.setId(role.getId()); |
| | | list.add(model); |
| | | } |
| | | return list; |
| | | } |
| | | @Override |
| | | public List<ComboModel> queryAllUserBackCombo() { |
| | | List<ComboModel> list = new ArrayList<ComboModel>(); |
| | | List<SysUser> userList = userMapper.selectList(new QueryWrapper<SysUser>().eq("status", 1).eq("del_flag", 0)); |
| | | for (SysUser user : userList) { |
| | | ComboModel model = new ComboModel(); |
| | | model.setTitle(user.getRealname()); |
| | | model.setId(user.getId()); |
| | | model.setUsername(user.getUsername()); |
| | | list.add(model); |
| | | } |
| | | return list; |
| | | } |
| | | |
| | | @Override |
| | | public JSONObject queryAllUser(String userIds, Integer pageNo, Integer pageSize) { |
| | | JSONObject json = new JSONObject(); |
| | | QueryWrapper<SysUser> queryWrapper = new QueryWrapper<SysUser>().eq("status", 1).eq("del_flag", 0); |
| | | List<ComboModel> list = new ArrayList<ComboModel>(); |
| | | Page<SysUser> page = new Page<SysUser>(pageNo, pageSize); |
| | | IPage<SysUser> pageList = userMapper.selectPage(page, queryWrapper); |
| | | for (SysUser user : pageList.getRecords()) { |
| | | ComboModel model = new ComboModel(); |
| | | model.setUsername(user.getUsername()); |
| | | model.setTitle(user.getRealname()); |
| | | model.setId(user.getId()); |
| | | model.setEmail(user.getEmail()); |
| | | if (oConvertUtils.isNotEmpty(userIds)) { |
| | | String[] temp = userIds.split(","); |
| | | for (int i = 0; i < temp.length; i++) { |
| | | if (temp[i].equals(user.getId())) { |
| | | model.setChecked(true); |
| | | } |
| | | } |
| | | } |
| | | list.add(model); |
| | | } |
| | | json.put("list", list); |
| | | json.put("total", pageList.getTotal()); |
| | | return json; |
| | | } |
| | | |
| | | // @Override |
| | | public List<ComboModel> queryAllRole() { |
| | | List<ComboModel> list = new ArrayList<ComboModel>(); |
| | | List<SysRole> roleList = roleMapper.selectList(new QueryWrapper<SysRole>()); |
| | | for (SysRole role : roleList) { |
| | | ComboModel model = new ComboModel(); |
| | | model.setTitle(role.getRoleName()); |
| | | model.setId(role.getId()); |
| | | list.add(model); |
| | | } |
| | | return list; |
| | | } |
| | | |
| | | @Override |
| | | public List<ComboModel> queryAllRole(String[] roleIds) { |
| | | List<ComboModel> list = new ArrayList<ComboModel>(); |
| | | List<SysRole> roleList = roleMapper.selectList(new QueryWrapper<SysRole>()); |
| | | for(SysRole role : roleList){ |
| | | for (SysRole role : roleList) { |
| | | ComboModel model = new ComboModel(); |
| | | model.setTitle(role.getRoleName()); |
| | | model.setId(role.getId()); |
| | | model.setRoleCode(role.getRoleCode()); |
| | | if(oConvertUtils.isNotEmpty(roleIds)) { |
| | | if (oConvertUtils.isNotEmpty(roleIds)) { |
| | | for (int i = 0; i < roleIds.length; i++) { |
| | | if (roleIds[i].equals(role.getId())) { |
| | | model.setChecked(true); |
| | |
| | | return list; |
| | | } |
| | | |
| | | @Override |
| | | public List<String> getRoleIdsByUsername(String username) { |
| | | return sysUserRoleMapper.getRoleIdByUserName(username); |
| | | } |
| | | @Override |
| | | public List<String> getRoleIdsByUsername(String username) { |
| | | return sysUserRoleMapper.getRoleIdByUserName(username); |
| | | } |
| | | |
| | | @Override |
| | | public String getDepartIdsByOrgCode(String orgCode) { |
| | | return departMapper.queryDepartIdByOrgCode(orgCode); |
| | | } |
| | | @Override |
| | | public String getDepartIdsByOrgCode(String orgCode) { |
| | | return departMapper.queryDepartIdByOrgCode(orgCode); |
| | | } |
| | | |
| | | @Override |
| | | public List<SysDepartModel> getAllSysDepart() { |
| | | List<SysDepartModel> departModelList = new ArrayList<SysDepartModel>(); |
| | | List<SysDepart> departList = departMapper.selectList(new QueryWrapper<SysDepart>().eq("del_flag","0")); |
| | | for(SysDepart depart : departList){ |
| | | SysDepartModel model = new SysDepartModel(); |
| | | BeanUtils.copyProperties(depart,model); |
| | | departModelList.add(model); |
| | | } |
| | | return departModelList; |
| | | } |
| | | @Override |
| | | public List<SysDepartModel> getAllSysDepart() { |
| | | List<SysDepartModel> departModelList = new ArrayList<SysDepartModel>(); |
| | | List<SysDepart> departList = departMapper.selectList(new QueryWrapper<SysDepart>().eq("del_flag", "0")); |
| | | for (SysDepart depart : departList) { |
| | | SysDepartModel model = new SysDepartModel(); |
| | | BeanUtils.copyProperties(depart, model); |
| | | departModelList.add(model); |
| | | } |
| | | return departModelList; |
| | | } |
| | | |
| | | @Override |
| | | public DynamicDataSourceModel getDynamicDbSourceById(String dbSourceId) { |
| | | SysDataSource dbSource = dataSourceService.getById(dbSourceId); |
| | | if(dbSource!=null && StringUtils.isNotBlank(dbSource.getDbPassword())){ |
| | | String dbPassword = dbSource.getDbPassword(); |
| | | String decodedStr = SecurityUtil.jiemi(dbPassword); |
| | | dbSource.setDbPassword(decodedStr); |
| | | } |
| | | return new DynamicDataSourceModel(dbSource); |
| | | } |
| | | @Override |
| | | public DynamicDataSourceModel getDynamicDbSourceById(String dbSourceId) { |
| | | SysDataSource dbSource = dataSourceService.getById(dbSourceId); |
| | | if (dbSource != null && StringUtils.isNotBlank(dbSource.getDbPassword())) { |
| | | String dbPassword = dbSource.getDbPassword(); |
| | | String decodedStr = SecurityUtil.jiemi(dbPassword); |
| | | dbSource.setDbPassword(decodedStr); |
| | | } |
| | | return new DynamicDataSourceModel(dbSource); |
| | | } |
| | | |
| | | @Override |
| | | public DynamicDataSourceModel getDynamicDbSourceByCode(String dbSourceCode) { |
| | | SysDataSource dbSource = dataSourceService.getOne(new LambdaQueryWrapper<SysDataSource>().eq(SysDataSource::getCode, dbSourceCode)); |
| | | if(dbSource!=null && StringUtils.isNotBlank(dbSource.getDbPassword())){ |
| | | String dbPassword = dbSource.getDbPassword(); |
| | | String decodedStr = SecurityUtil.jiemi(dbPassword); |
| | | dbSource.setDbPassword(decodedStr); |
| | | } |
| | | return new DynamicDataSourceModel(dbSource); |
| | | } |
| | | @Override |
| | | public DynamicDataSourceModel getDynamicDbSourceByCode(String dbSourceCode) { |
| | | SysDataSource dbSource = dataSourceService.getOne(new LambdaQueryWrapper<SysDataSource>().eq(SysDataSource::getCode, dbSourceCode)); |
| | | if (dbSource != null && StringUtils.isNotBlank(dbSource.getDbPassword())) { |
| | | String dbPassword = dbSource.getDbPassword(); |
| | | String decodedStr = SecurityUtil.jiemi(dbPassword); |
| | | dbSource.setDbPassword(decodedStr); |
| | | } |
| | | return new DynamicDataSourceModel(dbSource); |
| | | } |
| | | |
| | | @Override |
| | | public List<String> getDeptHeadByDepId(String deptId) { |
| | | List<SysUser> userList = userMapper.selectList(new QueryWrapper<SysUser>().like("depart_ids",deptId).eq("status",1).eq("del_flag",0)); |
| | | List<String> list = new ArrayList<>(); |
| | | for(SysUser user : userList){ |
| | | list.add(user.getUsername()); |
| | | } |
| | | return list; |
| | | } |
| | | @Override |
| | | public List<String> getDeptHeadByDepId(String deptId) { |
| | | List<SysUser> userList = userMapper.selectList(new QueryWrapper<SysUser>().like("depart_ids", deptId).eq("status", 1).eq("del_flag", 0)); |
| | | List<String> list = new ArrayList<>(); |
| | | for (SysUser user : userList) { |
| | | list.add(user.getUsername()); |
| | | } |
| | | return list; |
| | | } |
| | | |
| | | @Override |
| | | public void sendWebSocketMsg(String[] userIds, String cmd) { |
| | | JSONObject obj = new JSONObject(); |
| | | obj.put(WebsocketConst.MSG_CMD, cmd); |
| | | webSocket.sendMessage(userIds, obj.toJSONString()); |
| | | } |
| | | @Override |
| | | public void sendWebSocketMsg(String[] userIds, String cmd) { |
| | | JSONObject obj = new JSONObject(); |
| | | obj.put(WebsocketConst.MSG_CMD, cmd); |
| | | webSocket.sendMessage(userIds, obj.toJSONString()); |
| | | } |
| | | |
| | | @Override |
| | | public List<LoginUser> queryAllUserByIds(String[] userIds) { |
| | | QueryWrapper<SysUser> queryWrapper = new QueryWrapper<SysUser>().eq("status",1).eq("del_flag",0); |
| | | queryWrapper.in("id",userIds); |
| | | List<LoginUser> loginUsers = new ArrayList<>(); |
| | | List<SysUser> sysUsers = userMapper.selectList(queryWrapper); |
| | | for (SysUser user:sysUsers) { |
| | | LoginUser loginUser=new LoginUser(); |
| | | BeanUtils.copyProperties(user, loginUser); |
| | | loginUsers.add(loginUser); |
| | | } |
| | | return loginUsers; |
| | | } |
| | | @Override |
| | | public List<LoginUser> queryAllUserByIds(String[] userIds) { |
| | | QueryWrapper<SysUser> queryWrapper = new QueryWrapper<SysUser>().eq("status", 1).eq("del_flag", 0); |
| | | queryWrapper.in("id", userIds); |
| | | List<LoginUser> loginUsers = new ArrayList<>(); |
| | | List<SysUser> sysUsers = userMapper.selectList(queryWrapper); |
| | | for (SysUser user : sysUsers) { |
| | | LoginUser loginUser = new LoginUser(); |
| | | BeanUtils.copyProperties(user, loginUser); |
| | | loginUsers.add(loginUser); |
| | | } |
| | | return loginUsers; |
| | | } |
| | | |
| | | /** |
| | | * 推送签到人员信息 |
| | | * @param userId |
| | | */ |
| | | @Override |
| | | public void meetingSignWebsocket(String userId) { |
| | | JSONObject obj = new JSONObject(); |
| | | obj.put(WebsocketConst.MSG_CMD, WebsocketConst.CMD_SIGN); |
| | | obj.put(WebsocketConst.MSG_USER_ID,userId); |
| | | //TODO 目前全部推送,后面修改 |
| | | webSocket.sendMessage(obj.toJSONString()); |
| | | } |
| | | /** |
| | | * 推送签到人员信息 |
| | | * |
| | | * @param userId |
| | | */ |
| | | @Override |
| | | public void meetingSignWebsocket(String userId) { |
| | | JSONObject obj = new JSONObject(); |
| | | obj.put(WebsocketConst.MSG_CMD, WebsocketConst.CMD_SIGN); |
| | | obj.put(WebsocketConst.MSG_USER_ID, userId); |
| | | //TODO 目前全部推送,后面修改 |
| | | webSocket.sendMessage(obj.toJSONString()); |
| | | } |
| | | |
| | | @Override |
| | | public List<LoginUser> queryUserByNames(String[] userNames) { |
| | | QueryWrapper<SysUser> queryWrapper = new QueryWrapper<SysUser>().eq("status",1).eq("del_flag",0); |
| | | queryWrapper.in("username",userNames); |
| | | List<LoginUser> loginUsers = new ArrayList<>(); |
| | | List<SysUser> sysUsers = userMapper.selectList(queryWrapper); |
| | | for (SysUser user:sysUsers) { |
| | | LoginUser loginUser=new LoginUser(); |
| | | BeanUtils.copyProperties(user, loginUser); |
| | | loginUsers.add(loginUser); |
| | | } |
| | | return loginUsers; |
| | | } |
| | | @Override |
| | | public List<LoginUser> queryUserByNames(String[] userNames) { |
| | | QueryWrapper<SysUser> queryWrapper = new QueryWrapper<SysUser>().eq("status", 1).eq("del_flag", 0); |
| | | queryWrapper.in("username", userNames); |
| | | List<LoginUser> loginUsers = new ArrayList<>(); |
| | | List<SysUser> sysUsers = userMapper.selectList(queryWrapper); |
| | | for (SysUser user : sysUsers) { |
| | | LoginUser loginUser = new LoginUser(); |
| | | BeanUtils.copyProperties(user, loginUser); |
| | | loginUsers.add(loginUser); |
| | | } |
| | | return loginUsers; |
| | | } |
| | | |
| | | @Override |
| | | public SysDepartModel selectAllById(String id) { |
| | | SysDepart sysDepart = sysDepartService.getById(id); |
| | | SysDepartModel sysDepartModel = new SysDepartModel(); |
| | | BeanUtils.copyProperties(sysDepart,sysDepartModel); |
| | | return sysDepartModel; |
| | | } |
| | | @Override |
| | | public SysDepartModel selectAllById(String id) { |
| | | SysDepart sysDepart = sysDepartService.getById(id); |
| | | SysDepartModel sysDepartModel = new SysDepartModel(); |
| | | BeanUtils.copyProperties(sysDepart, sysDepartModel); |
| | | return sysDepartModel; |
| | | } |
| | | |
| | | @Override |
| | | public List<String> queryDeptUsersByUserId(String userId) { |
| | | List<String> userIds = new ArrayList<>(); |
| | | List<SysUserDepart> userDepartList = sysUserDepartService.list(new QueryWrapper<SysUserDepart>().eq("user_id",userId)); |
| | | if(userDepartList != null){ |
| | | //查找所属公司 |
| | | String orgCodes = ""; |
| | | StringBuilder orgCodesBuilder = new StringBuilder(); |
| | | @Override |
| | | public List<String> queryDeptUsersByUserId(String userId) { |
| | | List<String> userIds = new ArrayList<>(); |
| | | List<SysUserDepart> userDepartList = sysUserDepartService.list(new QueryWrapper<SysUserDepart>().eq("user_id", userId)); |
| | | if (userDepartList != null) { |
| | | //查找所属公司 |
| | | String orgCodes = ""; |
| | | StringBuilder orgCodesBuilder = new StringBuilder(); |
| | | orgCodesBuilder.append(orgCodes); |
| | | for(SysUserDepart userDepart : userDepartList){ |
| | | //查询所属公司编码 |
| | | SysDepart depart = sysDepartService.getById(userDepart.getDepId()); |
| | | int length = YouBianCodeUtil.ZHANWEI_LENGTH; |
| | | String compyOrgCode = ""; |
| | | if(depart != null && depart.getOrgCode() != null){ |
| | | compyOrgCode = depart.getOrgCode().substring(0,length); |
| | | if(orgCodes.indexOf(compyOrgCode) == -1){ |
| | | for (SysUserDepart userDepart : userDepartList) { |
| | | //查询所属公司编码 |
| | | SysDepart depart = sysDepartService.getById(userDepart.getDepId()); |
| | | int length = YouBianCodeUtil.ZHANWEI_LENGTH; |
| | | String compyOrgCode = ""; |
| | | if (depart != null && depart.getOrgCode() != null) { |
| | | compyOrgCode = depart.getOrgCode().substring(0, length); |
| | | if (orgCodes.indexOf(compyOrgCode) == -1) { |
| | | orgCodesBuilder.append(SymbolConstant.COMMA).append(compyOrgCode); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | orgCodes = orgCodesBuilder.toString(); |
| | | if(oConvertUtils.isNotEmpty(orgCodes)){ |
| | | orgCodes = orgCodes.substring(1); |
| | | List<String> listIds = departMapper.getSubDepIdsByOrgCodes(orgCodes.split(",")); |
| | | List<SysUserDepart> userList = sysUserDepartService.list(new QueryWrapper<SysUserDepart>().in("dep_id",listIds)); |
| | | for(SysUserDepart userDepart : userList){ |
| | | if(!userIds.contains(userDepart.getUserId())){ |
| | | userIds.add(userDepart.getUserId()); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | return userIds; |
| | | } |
| | | if (oConvertUtils.isNotEmpty(orgCodes)) { |
| | | orgCodes = orgCodes.substring(1); |
| | | List<String> listIds = departMapper.getSubDepIdsByOrgCodes(orgCodes.split(",")); |
| | | List<SysUserDepart> userList = sysUserDepartService.list(new QueryWrapper<SysUserDepart>().in("dep_id", listIds)); |
| | | for (SysUserDepart userDepart : userList) { |
| | | if (!userIds.contains(userDepart.getUserId())) { |
| | | userIds.add(userDepart.getUserId()); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | return userIds; |
| | | } |
| | | |
| | | /** |
| | | * 查询用户拥有的角色集合 |
| | | * @param username |
| | | * @return |
| | | */ |
| | | @Override |
| | | public Set<String> getUserRoleSet(String username) { |
| | | // 查询用户拥有的角色集合 |
| | | List<String> roles = sysUserRoleMapper.getRoleByUserName(username); |
| | | log.info("-------通过数据库读取用户拥有的角色Rules------username: " + username + ",Roles size: " + (roles == null ? 0 : roles.size())); |
| | | return new HashSet<>(roles); |
| | | } |
| | | /** |
| | | * 查询用户拥有的角色集合 |
| | | * |
| | | * @param username |
| | | * @return |
| | | */ |
| | | @Override |
| | | public Set<String> getUserRoleSet(String username) { |
| | | // 查询用户拥有的角色集合 |
| | | List<String> roles = sysUserRoleMapper.getRoleByUserName(username); |
| | | log.info("-------通过数据库读取用户拥有的角色Rules------username: " + username + ",Roles size: " + (roles == null ? 0 : roles.size())); |
| | | return new HashSet<>(roles); |
| | | } |
| | | |
| | | /** |
| | | * 查询用户拥有的权限集合 |
| | | * @param username |
| | | * @return |
| | | */ |
| | | @Override |
| | | public Set<String> getUserPermissionSet(String username) { |
| | | Set<String> permissionSet = new HashSet<>(); |
| | | List<SysPermission> permissionList = sysPermissionMapper.queryByUser(username); |
| | | for (SysPermission po : permissionList) { |
| | | /** |
| | | * 查询用户拥有的权限集合 |
| | | * |
| | | * @param username |
| | | * @return |
| | | */ |
| | | @Override |
| | | public Set<String> getUserPermissionSet(String username) { |
| | | Set<String> permissionSet = new HashSet<>(); |
| | | List<SysPermission> permissionList = sysPermissionMapper.queryByUser(username); |
| | | for (SysPermission po : permissionList) { |
| | | // // TODO URL规则有问题? |
| | | // if (oConvertUtils.isNotEmpty(po.getUrl())) { |
| | | // permissionSet.add(po.getUrl()); |
| | | // } |
| | | if (oConvertUtils.isNotEmpty(po.getPerms())) { |
| | | permissionSet.add(po.getPerms()); |
| | | } |
| | | } |
| | | log.info("-------通过数据库读取用户拥有的权限Perms------username: "+ username+",Perms size: "+ (permissionSet==null?0:permissionSet.size()) ); |
| | | return permissionSet; |
| | | } |
| | | if (oConvertUtils.isNotEmpty(po.getPerms())) { |
| | | permissionSet.add(po.getPerms()); |
| | | } |
| | | } |
| | | log.info("-------通过数据库读取用户拥有的权限Perms------username: " + username + ",Perms size: " + (permissionSet == null ? 0 : permissionSet.size())); |
| | | return permissionSet; |
| | | } |
| | | |
| | | /** |
| | | * 判断online菜单是否有权限 |
| | | * @param onlineAuthDTO |
| | | * @return |
| | | */ |
| | | @Override |
| | | public boolean hasOnlineAuth(OnlineAuthDTO onlineAuthDTO) { |
| | | String username = onlineAuthDTO.getUsername(); |
| | | List<String> possibleUrl = onlineAuthDTO.getPossibleUrl(); |
| | | String onlineFormUrl = onlineAuthDTO.getOnlineFormUrl(); |
| | | //查询菜单 |
| | | LambdaQueryWrapper<SysPermission> query = new LambdaQueryWrapper<SysPermission>(); |
| | | query.eq(SysPermission::getDelFlag, 0); |
| | | query.in(SysPermission::getUrl, possibleUrl); |
| | | List<SysPermission> permissionList = sysPermissionMapper.selectList(query); |
| | | if (permissionList == null || permissionList.size() == 0) { |
| | | //没有配置菜单 找online表单菜单地址 |
| | | SysPermission sysPermission = new SysPermission(); |
| | | sysPermission.setUrl(onlineFormUrl); |
| | | int count = sysPermissionMapper.queryCountByUsername(username, sysPermission); |
| | | if(count<=0){ |
| | | return false; |
| | | } |
| | | } else { |
| | | //找到菜单了 |
| | | boolean has = false; |
| | | for (SysPermission p : permissionList) { |
| | | int count = sysPermissionMapper.queryCountByUsername(username, p); |
| | | has = has || (count>0); |
| | | } |
| | | return has; |
| | | } |
| | | return true; |
| | | } |
| | | /** |
| | | * 判断online菜单是否有权限 |
| | | * |
| | | * @param onlineAuthDTO |
| | | * @return |
| | | */ |
| | | @Override |
| | | public boolean hasOnlineAuth(OnlineAuthDTO onlineAuthDTO) { |
| | | String username = onlineAuthDTO.getUsername(); |
| | | List<String> possibleUrl = onlineAuthDTO.getPossibleUrl(); |
| | | String onlineFormUrl = onlineAuthDTO.getOnlineFormUrl(); |
| | | //查询菜单 |
| | | LambdaQueryWrapper<SysPermission> query = new LambdaQueryWrapper<SysPermission>(); |
| | | query.eq(SysPermission::getDelFlag, 0); |
| | | query.in(SysPermission::getUrl, possibleUrl); |
| | | List<SysPermission> permissionList = sysPermissionMapper.selectList(query); |
| | | if (permissionList == null || permissionList.size() == 0) { |
| | | //没有配置菜单 找online表单菜单地址 |
| | | SysPermission sysPermission = new SysPermission(); |
| | | sysPermission.setUrl(onlineFormUrl); |
| | | int count = sysPermissionMapper.queryCountByUsername(username, sysPermission); |
| | | if (count <= 0) { |
| | | return false; |
| | | } |
| | | } else { |
| | | //找到菜单了 |
| | | boolean has = false; |
| | | for (SysPermission p : permissionList) { |
| | | int count = sysPermissionMapper.queryCountByUsername(username, p); |
| | | has = has || (count > 0); |
| | | } |
| | | return has; |
| | | } |
| | | return true; |
| | | } |
| | | |
| | | /** |
| | | * 查询用户拥有的角色集合 common api 里面的接口实现 |
| | | * @param username |
| | | * @return |
| | | */ |
| | | @Override |
| | | public Set<String> queryUserRoles(String username) { |
| | | return getUserRoleSet(username); |
| | | } |
| | | /** |
| | | * 查询用户拥有的角色集合 common api 里面的接口实现 |
| | | * |
| | | * @param username |
| | | * @return |
| | | */ |
| | | @Override |
| | | public Set<String> queryUserRoles(String username) { |
| | | return getUserRoleSet(username); |
| | | } |
| | | |
| | | /** |
| | | * 查询用户拥有的权限集合 common api 里面的接口实现 |
| | | * @param username |
| | | * @return |
| | | */ |
| | | @Override |
| | | public Set<String> queryUserAuths(String username) { |
| | | return getUserPermissionSet(username); |
| | | } |
| | | /** |
| | | * 查询用户拥有的权限集合 common api 里面的接口实现 |
| | | * |
| | | * @param username |
| | | * @return |
| | | */ |
| | | @Override |
| | | public Set<String> queryUserAuths(String username) { |
| | | return getUserPermissionSet(username); |
| | | } |
| | | |
| | | /** |
| | | * 36根据多个用户账号(逗号分隔),查询返回多个用户信息 |
| | | * @param usernames |
| | | * @return |
| | | */ |
| | | @Override |
| | | public List<JSONObject> queryUsersByUsernames(String usernames) { |
| | | LambdaQueryWrapper<SysUser> queryWrapper = new LambdaQueryWrapper<>(); |
| | | queryWrapper.in(SysUser::getUsername,usernames.split(",")); |
| | | return JSON.parseArray(JSON.toJSONString(userMapper.selectList(queryWrapper))).toJavaList(JSONObject.class); |
| | | } |
| | | /** |
| | | * 36根据多个用户账号(逗号分隔),查询返回多个用户信息 |
| | | * |
| | | * @param usernames |
| | | * @return |
| | | */ |
| | | @Override |
| | | public List<JSONObject> queryUsersByUsernames(String usernames) { |
| | | LambdaQueryWrapper<SysUser> queryWrapper = new LambdaQueryWrapper<>(); |
| | | queryWrapper.in(SysUser::getUsername, usernames.split(",")); |
| | | return JSON.parseArray(JSON.toJSONString(userMapper.selectList(queryWrapper))).toJavaList(JSONObject.class); |
| | | } |
| | | |
| | | @Override |
| | | public List<JSONObject> queryUsersByIds(String ids) { |
| | | LambdaQueryWrapper<SysUser> queryWrapper = new LambdaQueryWrapper<>(); |
| | | queryWrapper.in(SysUser::getId,ids.split(",")); |
| | | return JSON.parseArray(JSON.toJSONString(userMapper.selectList(queryWrapper))).toJavaList(JSONObject.class); |
| | | } |
| | | @Override |
| | | public List<JSONObject> queryUsersByIds(String ids) { |
| | | LambdaQueryWrapper<SysUser> queryWrapper = new LambdaQueryWrapper<>(); |
| | | queryWrapper.in(SysUser::getId, ids.split(",")); |
| | | return JSON.parseArray(JSON.toJSONString(userMapper.selectList(queryWrapper))).toJavaList(JSONObject.class); |
| | | } |
| | | |
| | | /** |
| | | * 37根据多个部门编码(逗号分隔),查询返回多个部门信息 |
| | | * @param orgCodes |
| | | * @return |
| | | */ |
| | | @Override |
| | | public List<JSONObject> queryDepartsByOrgcodes(String orgCodes) { |
| | | LambdaQueryWrapper<SysDepart> queryWrapper = new LambdaQueryWrapper<>(); |
| | | queryWrapper.in(SysDepart::getOrgCode,orgCodes.split(",")); |
| | | return JSON.parseArray(JSON.toJSONString(sysDepartService.list(queryWrapper))).toJavaList(JSONObject.class); |
| | | } |
| | | /** |
| | | * 37根据多个部门编码(逗号分隔),查询返回多个部门信息 |
| | | * |
| | | * @param orgCodes |
| | | * @return |
| | | */ |
| | | @Override |
| | | public List<JSONObject> queryDepartsByOrgcodes(String orgCodes) { |
| | | LambdaQueryWrapper<SysDepart> queryWrapper = new LambdaQueryWrapper<>(); |
| | | queryWrapper.in(SysDepart::getOrgCode, orgCodes.split(",")); |
| | | return JSON.parseArray(JSON.toJSONString(sysDepartService.list(queryWrapper))).toJavaList(JSONObject.class); |
| | | } |
| | | |
| | | @Override |
| | | public List<JSONObject> queryDepartsByIds(String ids) { |
| | | LambdaQueryWrapper<SysDepart> queryWrapper = new LambdaQueryWrapper<>(); |
| | | queryWrapper.in(SysDepart::getId,ids.split(",")); |
| | | return JSON.parseArray(JSON.toJSONString(sysDepartService.list(queryWrapper))).toJavaList(JSONObject.class); |
| | | } |
| | | @Override |
| | | public List<JSONObject> queryDepartsByIds(String ids) { |
| | | LambdaQueryWrapper<SysDepart> queryWrapper = new LambdaQueryWrapper<>(); |
| | | queryWrapper.in(SysDepart::getId, ids.split(",")); |
| | | return JSON.parseArray(JSON.toJSONString(sysDepartService.list(queryWrapper))).toJavaList(JSONObject.class); |
| | | } |
| | | |
| | | /** |
| | | * 发消息 |
| | | * @param fromUser |
| | | * @param toUser |
| | | * @param title |
| | | * @param msgContent |
| | | * @param setMsgCategory |
| | | */ |
| | | private void sendSysAnnouncement(String fromUser, String toUser, String title, String msgContent, String setMsgCategory) { |
| | | SysAnnouncement announcement = new SysAnnouncement(); |
| | | announcement.setTitile(title); |
| | | announcement.setMsgContent(msgContent); |
| | | announcement.setSender(fromUser); |
| | | announcement.setPriority(CommonConstant.PRIORITY_M); |
| | | announcement.setMsgType(CommonConstant.MSG_TYPE_UESR); |
| | | announcement.setSendStatus(CommonConstant.HAS_SEND); |
| | | announcement.setSendTime(new Date()); |
| | | announcement.setMsgCategory(setMsgCategory); |
| | | announcement.setDelFlag(String.valueOf(CommonConstant.DEL_FLAG_0)); |
| | | sysAnnouncementMapper.insert(announcement); |
| | | // 2.插入用户通告阅读标记表记录 |
| | | String userId = toUser; |
| | | String[] userIds = userId.split(","); |
| | | String anntId = announcement.getId(); |
| | | for(int i=0;i<userIds.length;i++) { |
| | | if(oConvertUtils.isNotEmpty(userIds[i])) { |
| | | SysUser sysUser = userMapper.getUserByName(userIds[i]); |
| | | if(sysUser==null) { |
| | | continue; |
| | | } |
| | | SysAnnouncementSend announcementSend = new SysAnnouncementSend(); |
| | | announcementSend.setAnntId(anntId); |
| | | announcementSend.setUserId(sysUser.getId()); |
| | | announcementSend.setReadFlag(CommonConstant.NO_READ_FLAG); |
| | | sysAnnouncementSendMapper.insert(announcementSend); |
| | | JSONObject obj = new JSONObject(); |
| | | obj.put(WebsocketConst.MSG_CMD, WebsocketConst.CMD_USER); |
| | | obj.put(WebsocketConst.MSG_USER_ID, sysUser.getId()); |
| | | obj.put(WebsocketConst.MSG_ID, announcement.getId()); |
| | | obj.put(WebsocketConst.MSG_TXT, announcement.getTitile()); |
| | | webSocket.sendMessage(sysUser.getId(), obj.toJSONString()); |
| | | } |
| | | } |
| | | /** |
| | | * 发消息 |
| | | * |
| | | * @param fromUser |
| | | * @param toUser |
| | | * @param title |
| | | * @param msgContent |
| | | * @param setMsgCategory |
| | | */ |
| | | private void sendSysAnnouncement(String fromUser, String toUser, String title, String msgContent, String setMsgCategory) { |
| | | SysAnnouncement announcement = new SysAnnouncement(); |
| | | announcement.setTitile(title); |
| | | announcement.setMsgContent(msgContent); |
| | | announcement.setSender(fromUser); |
| | | announcement.setPriority(CommonConstant.PRIORITY_M); |
| | | announcement.setMsgType(CommonConstant.MSG_TYPE_UESR); |
| | | announcement.setSendStatus(CommonConstant.HAS_SEND); |
| | | announcement.setSendTime(new Date()); |
| | | announcement.setMsgCategory(setMsgCategory); |
| | | announcement.setDelFlag(String.valueOf(CommonConstant.DEL_FLAG_0)); |
| | | sysAnnouncementMapper.insert(announcement); |
| | | // 2.插入用户通告阅读标记表记录 |
| | | String userId = toUser; |
| | | String[] userIds = userId.split(","); |
| | | String anntId = announcement.getId(); |
| | | for (int i = 0; i < userIds.length; i++) { |
| | | if (oConvertUtils.isNotEmpty(userIds[i])) { |
| | | SysUser sysUser = userMapper.getUserByName(userIds[i]); |
| | | if (sysUser == null) { |
| | | continue; |
| | | } |
| | | SysAnnouncementSend announcementSend = new SysAnnouncementSend(); |
| | | announcementSend.setAnntId(anntId); |
| | | announcementSend.setUserId(sysUser.getId()); |
| | | announcementSend.setReadFlag(CommonConstant.NO_READ_FLAG); |
| | | sysAnnouncementSendMapper.insert(announcementSend); |
| | | JSONObject obj = new JSONObject(); |
| | | obj.put(WebsocketConst.MSG_CMD, WebsocketConst.CMD_USER); |
| | | obj.put(WebsocketConst.MSG_USER_ID, sysUser.getId()); |
| | | obj.put(WebsocketConst.MSG_ID, announcement.getId()); |
| | | obj.put(WebsocketConst.MSG_TXT, announcement.getTitile()); |
| | | webSocket.sendMessage(sysUser.getId(), obj.toJSONString()); |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 发消息 带业务参数 |
| | | * @param fromUser |
| | | * @param toUser |
| | | * @param title |
| | | * @param msgContent |
| | | * @param setMsgCategory |
| | | * @param busType |
| | | * @param busId |
| | | */ |
| | | private void sendBusAnnouncement(String fromUser, String toUser, String title, String msgContent, String setMsgCategory, String busType, String busId) { |
| | | SysAnnouncement announcement = new SysAnnouncement(); |
| | | announcement.setTitile(title); |
| | | announcement.setMsgContent(msgContent); |
| | | announcement.setSender(fromUser); |
| | | announcement.setPriority(CommonConstant.PRIORITY_M); |
| | | announcement.setMsgType(CommonConstant.MSG_TYPE_UESR); |
| | | announcement.setSendStatus(CommonConstant.HAS_SEND); |
| | | announcement.setSendTime(new Date()); |
| | | announcement.setMsgCategory(setMsgCategory); |
| | | announcement.setDelFlag(String.valueOf(CommonConstant.DEL_FLAG_0)); |
| | | announcement.setBusId(busId); |
| | | announcement.setBusType(busType); |
| | | announcement.setOpenType(SysAnnmentTypeEnum.getByType(busType).getOpenType()); |
| | | announcement.setOpenPage(SysAnnmentTypeEnum.getByType(busType).getOpenPage()); |
| | | sysAnnouncementMapper.insert(announcement); |
| | | // 2.插入用户通告阅读标记表记录 |
| | | String userId = toUser; |
| | | String[] userIds = userId.split(","); |
| | | String anntId = announcement.getId(); |
| | | for(int i=0;i<userIds.length;i++) { |
| | | if(oConvertUtils.isNotEmpty(userIds[i])) { |
| | | SysUser sysUser = userMapper.getUserByName(userIds[i]); |
| | | if(sysUser==null) { |
| | | continue; |
| | | } |
| | | SysAnnouncementSend announcementSend = new SysAnnouncementSend(); |
| | | announcementSend.setAnntId(anntId); |
| | | announcementSend.setUserId(sysUser.getId()); |
| | | announcementSend.setReadFlag(CommonConstant.NO_READ_FLAG); |
| | | sysAnnouncementSendMapper.insert(announcementSend); |
| | | JSONObject obj = new JSONObject(); |
| | | obj.put(WebsocketConst.MSG_CMD, WebsocketConst.CMD_USER); |
| | | obj.put(WebsocketConst.MSG_USER_ID, sysUser.getId()); |
| | | obj.put(WebsocketConst.MSG_ID, announcement.getId()); |
| | | obj.put(WebsocketConst.MSG_TXT, announcement.getTitile()); |
| | | webSocket.sendMessage(sysUser.getId(), obj.toJSONString()); |
| | | } |
| | | } |
| | | } |
| | | /** |
| | | * 发消息 带业务参数 |
| | | * |
| | | * @param fromUser |
| | | * @param toUser |
| | | * @param title |
| | | * @param msgContent |
| | | * @param setMsgCategory |
| | | * @param busType |
| | | * @param busId |
| | | */ |
| | | private void sendBusAnnouncement(String fromUser, String toUser, String title, String msgContent, String setMsgCategory, String busType, String busId) { |
| | | SysAnnouncement announcement = new SysAnnouncement(); |
| | | announcement.setTitile(title); |
| | | announcement.setMsgContent(msgContent); |
| | | announcement.setSender(fromUser); |
| | | announcement.setPriority(CommonConstant.PRIORITY_M); |
| | | announcement.setMsgType(CommonConstant.MSG_TYPE_UESR); |
| | | announcement.setSendStatus(CommonConstant.HAS_SEND); |
| | | announcement.setSendTime(new Date()); |
| | | announcement.setMsgCategory(setMsgCategory); |
| | | announcement.setDelFlag(String.valueOf(CommonConstant.DEL_FLAG_0)); |
| | | announcement.setBusId(busId); |
| | | announcement.setBusType(busType); |
| | | announcement.setOpenType(SysAnnmentTypeEnum.getByType(busType).getOpenType()); |
| | | announcement.setOpenPage(SysAnnmentTypeEnum.getByType(busType).getOpenPage()); |
| | | sysAnnouncementMapper.insert(announcement); |
| | | // 2.插入用户通告阅读标记表记录 |
| | | String userId = toUser; |
| | | String[] userIds = userId.split(","); |
| | | String anntId = announcement.getId(); |
| | | for (int i = 0; i < userIds.length; i++) { |
| | | if (oConvertUtils.isNotEmpty(userIds[i])) { |
| | | SysUser sysUser = userMapper.getUserByName(userIds[i]); |
| | | if (sysUser == null) { |
| | | continue; |
| | | } |
| | | SysAnnouncementSend announcementSend = new SysAnnouncementSend(); |
| | | announcementSend.setAnntId(anntId); |
| | | announcementSend.setUserId(sysUser.getId()); |
| | | announcementSend.setReadFlag(CommonConstant.NO_READ_FLAG); |
| | | sysAnnouncementSendMapper.insert(announcementSend); |
| | | JSONObject obj = new JSONObject(); |
| | | obj.put(WebsocketConst.MSG_CMD, WebsocketConst.CMD_USER); |
| | | obj.put(WebsocketConst.MSG_USER_ID, sysUser.getId()); |
| | | obj.put(WebsocketConst.MSG_ID, announcement.getId()); |
| | | obj.put(WebsocketConst.MSG_TXT, announcement.getTitile()); |
| | | webSocket.sendMessage(sysUser.getId(), obj.toJSONString()); |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 发送邮件消息 |
| | | * @param email |
| | | * @param title |
| | | * @param content |
| | | */ |
| | | @Override |
| | | public void sendEmailMsg(String email, String title, String content) { |
| | | EmailSendMsgHandle emailHandle=new EmailSendMsgHandle(); |
| | | emailHandle.sendMsg(email, title, content); |
| | | } |
| | | /** |
| | | * 发送邮件消息 |
| | | * |
| | | * @param email |
| | | * @param title |
| | | * @param content |
| | | */ |
| | | @Override |
| | | public void sendEmailMsg(String email, String title, String content) { |
| | | EmailSendMsgHandle emailHandle = new EmailSendMsgHandle(); |
| | | emailHandle.sendMsg(email, title, content); |
| | | } |
| | | |
| | | /** |
| | | * 获取公司下级部门和所有用户id信息 |
| | | * @param orgCode |
| | | * @return |
| | | */ |
| | | @Override |
| | | public List<Map> getDeptUserByOrgCode(String orgCode) { |
| | | //1.获取公司信息 |
| | | SysDepart comp=sysDepartService.queryCompByOrgCode(orgCode); |
| | | if(comp!=null){ |
| | | //2.获取公司下级部门 |
| | | List<SysDepart> departs=sysDepartService.queryDeptByPid(comp.getId()); |
| | | //3.获取部门下的人员信息 |
| | | List<Map> list=new ArrayList(); |
| | | //4.处理部门和下级用户数据 |
| | | for (SysDepart dept:departs) { |
| | | Map map=new HashMap(5); |
| | | //部门名称 |
| | | String departName = dept.getDepartName(); |
| | | //根据部门编码获取下级部门id |
| | | List<String> listIds = departMapper.getSubDepIdsByDepId(dept.getId()); |
| | | //根据下级部门ids获取下级部门的所有用户 |
| | | List<SysUserDepart> userList = sysUserDepartService.list(new QueryWrapper<SysUserDepart>().in("dep_id",listIds)); |
| | | List<String> userIds = new ArrayList<>(); |
| | | for(SysUserDepart userDepart : userList){ |
| | | if(!userIds.contains(userDepart.getUserId())){ |
| | | userIds.add(userDepart.getUserId()); |
| | | } |
| | | } |
| | | map.put("name",departName); |
| | | map.put("ids",userIds); |
| | | list.add(map); |
| | | } |
| | | return list; |
| | | } |
| | | return null; |
| | | } |
| | | /** |
| | | * 获取公司下级部门和所有用户id信息 |
| | | * |
| | | * @param orgCode |
| | | * @return |
| | | */ |
| | | @Override |
| | | public List<Map> getDeptUserByOrgCode(String orgCode) { |
| | | //1.获取公司信息 |
| | | SysDepart comp = sysDepartService.queryCompByOrgCode(orgCode); |
| | | if (comp != null) { |
| | | //2.获取公司下级部门 |
| | | List<SysDepart> departs = sysDepartService.queryDeptByPid(comp.getId()); |
| | | //3.获取部门下的人员信息 |
| | | List<Map> list = new ArrayList(); |
| | | //4.处理部门和下级用户数据 |
| | | for (SysDepart dept : departs) { |
| | | Map map = new HashMap(5); |
| | | //部门名称 |
| | | String departName = dept.getDepartName(); |
| | | //根据部门编码获取下级部门id |
| | | List<String> listIds = departMapper.getSubDepIdsByDepId(dept.getId()); |
| | | //根据下级部门ids获取下级部门的所有用户 |
| | | List<SysUserDepart> userList = sysUserDepartService.list(new QueryWrapper<SysUserDepart>().in("dep_id", listIds)); |
| | | List<String> userIds = new ArrayList<>(); |
| | | for (SysUserDepart userDepart : userList) { |
| | | if (!userIds.contains(userDepart.getUserId())) { |
| | | userIds.add(userDepart.getUserId()); |
| | | } |
| | | } |
| | | map.put("name", departName); |
| | | map.put("ids", userIds); |
| | | list.add(map); |
| | | } |
| | | return list; |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | /** |
| | | * 查询分类字典翻译 |
| | | * |
| | | * @param ids 分类字典表id |
| | | * @return |
| | | */ |
| | | @Override |
| | | public List<String> loadCategoryDictItem(String ids) { |
| | | return sysCategoryService.loadDictItem(ids, false); |
| | | } |
| | | /** |
| | | * 查询分类字典翻译 |
| | | * |
| | | * @param ids 分类字典表id |
| | | * @return |
| | | */ |
| | | @Override |
| | | public List<String> loadCategoryDictItem(String ids) { |
| | | return sysCategoryService.loadDictItem(ids, false); |
| | | } |
| | | |
| | | /** |
| | | * 根据字典code加载字典text |
| | | * |
| | | * @param dictCode 顺序:tableName,text,code |
| | | * @param keys 要查询的key |
| | | * @return |
| | | */ |
| | | @Override |
| | | public List<String> loadDictItem(String dictCode, String keys) { |
| | | String[] params = dictCode.split(","); |
| | | return sysDictService.queryTableDictByKeys(params[0], params[1], params[2], keys, false); |
| | | } |
| | | /** |
| | | * 根据字典code加载字典text |
| | | * |
| | | * @param dictCode 顺序:tableName,text,code |
| | | * @param keys 要查询的key |
| | | * @return |
| | | */ |
| | | @Override |
| | | public List<String> loadDictItem(String dictCode, String keys) { |
| | | String[] params = dictCode.split(","); |
| | | return sysDictService.queryTableDictByKeys(params[0], params[1], params[2], keys, false); |
| | | } |
| | | |
| | | /** |
| | | * 根据字典code查询字典项 |
| | | * |
| | | * @param dictCode 顺序:tableName,text,code |
| | | * @param dictCode 要查询的key |
| | | * @return |
| | | */ |
| | | @Override |
| | | public List<DictModel> getDictItems(String dictCode) { |
| | | List<DictModel> ls = sysDictService.getDictItems(dictCode); |
| | | if (ls == null) { |
| | | ls = new ArrayList<>(); |
| | | } |
| | | return ls; |
| | | } |
| | | /** |
| | | * 根据字典code查询字典项 |
| | | * |
| | | * @param dictCode 顺序:tableName,text,code |
| | | * @param dictCode 要查询的key |
| | | * @return |
| | | */ |
| | | @Override |
| | | public List<DictModel> getDictItems(String dictCode) { |
| | | List<DictModel> ls = sysDictService.getDictItems(dictCode); |
| | | if (ls == null) { |
| | | ls = new ArrayList<>(); |
| | | } |
| | | return ls; |
| | | } |
| | | |
| | | /** |
| | | * 根据多个字典code查询多个字典项 |
| | | * |
| | | * @param dictCodeList |
| | | * @return key = dictCode ; value=对应的字典项 |
| | | */ |
| | | @Override |
| | | public Map<String, List<DictModel>> getManyDictItems(List<String> dictCodeList) { |
| | | return sysDictService.queryDictItemsByCodeList(dictCodeList); |
| | | } |
| | | /** |
| | | * 根据多个字典code查询多个字典项 |
| | | * |
| | | * @param dictCodeList |
| | | * @return key = dictCode ; value=对应的字典项 |
| | | */ |
| | | @Override |
| | | public Map<String, List<DictModel>> getManyDictItems(List<String> dictCodeList) { |
| | | return sysDictService.queryDictItemsByCodeList(dictCodeList); |
| | | } |
| | | |
| | | /** |
| | | * 【下拉搜索】 |
| | | * 大数据量的字典表 走异步加载,即前端输入内容过滤数据 |
| | | * |
| | | * @param dictCode 字典code格式:table,text,code |
| | | * @param keyword 过滤关键字 |
| | | * @return |
| | | */ |
| | | @Override |
| | | public List<DictModel> loadDictItemByKeyword(String dictCode, String keyword, Integer pageSize) { |
| | | return sysDictService.loadDict(dictCode, keyword, pageSize); |
| | | } |
| | | /** |
| | | * 【下拉搜索】 |
| | | * 大数据量的字典表 走异步加载,即前端输入内容过滤数据 |
| | | * |
| | | * @param dictCode 字典code格式:table,text,code |
| | | * @param keyword 过滤关键字 |
| | | * @return |
| | | */ |
| | | @Override |
| | | public List<DictModel> loadDictItemByKeyword(String dictCode, String keyword, Integer pageSize) { |
| | | return sysDictService.loadDict(dictCode, keyword, pageSize); |
| | | } |
| | | |
| | | @Override |
| | | public Map<String, List<DictModel>> translateManyDict(String dictCodes, String keys) { |
| | | List<String> dictCodeList = Arrays.asList(dictCodes.split(",")); |
| | | List<String> values = Arrays.asList(keys.split(",")); |
| | | return sysDictService.queryManyDictByKeys(dictCodeList, values); |
| | | } |
| | | @Override |
| | | public Map<String, List<DictModel>> translateManyDict(String dictCodes, String keys) { |
| | | List<String> dictCodeList = Arrays.asList(dictCodes.split(",")); |
| | | List<String> values = Arrays.asList(keys.split(",")); |
| | | return sysDictService.queryManyDictByKeys(dictCodeList, values); |
| | | } |
| | | |
| | | @Override |
| | | public List<DictModel> translateDictFromTableByKeys(String table, String text, String code, String keys) { |
| | | return sysDictService.queryTableDictTextByKeys(table, text, code, Arrays.asList(keys.split(","))); |
| | | } |
| | | @Override |
| | | public List<DictModel> translateDictFromTableByKeys(String table, String text, String code, String keys) { |
| | | return sysDictService.queryTableDictTextByKeys(table, text, code, Arrays.asList(keys.split(","))); |
| | | } |
| | | |
| | | //-------------------------------------流程节点发送模板消息----------------------------------------------- |
| | | @Autowired |
| | | private QywxSendMsgHandle qywxSendMsgHandle; |
| | | //-------------------------------------流程节点发送模板消息----------------------------------------------- |
| | | @Autowired |
| | | private QywxSendMsgHandle qywxSendMsgHandle; |
| | | |
| | | @Autowired |
| | | private SystemSendMsgHandle systemSendMsgHandle; |
| | | @Autowired |
| | | private SystemSendMsgHandle systemSendMsgHandle; |
| | | |
| | | @Autowired |
| | | private EmailSendMsgHandle emailSendMsgHandle; |
| | | @Autowired |
| | | private EmailSendMsgHandle emailSendMsgHandle; |
| | | |
| | | @Autowired |
| | | private DdSendMsgHandle ddSendMsgHandle; |
| | | @Autowired |
| | | private DdSendMsgHandle ddSendMsgHandle; |
| | | |
| | | @Override |
| | | public void sendTemplateMessage(MessageDTO message) { |
| | | String messageType = message.getType(); |
| | | //update-begin-author:taoyan date:2022-7-9 for: 将模板解析代码移至消息发送, 而不是调用的地方 |
| | | String templateCode = message.getTemplateCode(); |
| | | if(oConvertUtils.isNotEmpty(templateCode)){ |
| | | SysMessageTemplate templateEntity = getTemplateEntity(templateCode); |
| | | boolean isMarkdown = CommonConstant.MSG_TEMPLATE_TYPE_MD.equals(templateEntity.getTemplateType()); |
| | | String content = templateEntity.getTemplateContent(); |
| | | if(oConvertUtils.isNotEmpty(content) && null!=message.getData()){ |
| | | content = FreemarkerParseFactory.parseTemplateContent(content, message.getData(), isMarkdown); |
| | | } |
| | | message.setIsMarkdown(isMarkdown); |
| | | message.setContent(content); |
| | | } |
| | | if(oConvertUtils.isEmpty(message.getContent())){ |
| | | throw new JeecgBootException("发送消息失败,消息内容为空!"); |
| | | } |
| | | //update-end-author:taoyan date:2022-7-9 for: 将模板解析代码移至消息发送, 而不是调用的地方 |
| | | if(MessageTypeEnum.XT.getType().equals(messageType)){ |
| | | if (message.isMarkdown()) { |
| | | // 系统消息要解析Markdown |
| | | message.setContent(HTMLUtils.parseMarkdown(message.getContent())); |
| | | } |
| | | systemSendMsgHandle.sendMessage(message); |
| | | }else if(MessageTypeEnum.YJ.getType().equals(messageType)){ |
| | | if (message.isMarkdown()) { |
| | | // 邮件消息要解析Markdown |
| | | message.setContent(HTMLUtils.parseMarkdown(message.getContent())); |
| | | } |
| | | emailSendMsgHandle.sendMessage(message); |
| | | }else if(MessageTypeEnum.DD.getType().equals(messageType)){ |
| | | ddSendMsgHandle.sendMessage(message); |
| | | }else if(MessageTypeEnum.QYWX.getType().equals(messageType)){ |
| | | qywxSendMsgHandle.sendMessage(message); |
| | | } |
| | | } |
| | | @Override |
| | | public void sendTemplateMessage(MessageDTO message) { |
| | | String messageType = message.getType(); |
| | | //update-begin-author:taoyan date:2022-7-9 for: 将模板解析代码移至消息发送, 而不是调用的地方 |
| | | String templateCode = message.getTemplateCode(); |
| | | if (oConvertUtils.isNotEmpty(templateCode)) { |
| | | SysMessageTemplate templateEntity = getTemplateEntity(templateCode); |
| | | boolean isMarkdown = CommonConstant.MSG_TEMPLATE_TYPE_MD.equals(templateEntity.getTemplateType()); |
| | | String content = templateEntity.getTemplateContent(); |
| | | if (oConvertUtils.isNotEmpty(content) && null != message.getData()) { |
| | | content = FreemarkerParseFactory.parseTemplateContent(content, message.getData(), isMarkdown); |
| | | } |
| | | message.setIsMarkdown(isMarkdown); |
| | | message.setContent(content); |
| | | } |
| | | if (oConvertUtils.isEmpty(message.getContent())) { |
| | | throw new JeecgBootException("发送消息失败,消息内容为空!"); |
| | | } |
| | | //update-end-author:taoyan date:2022-7-9 for: 将模板解析代码移至消息发送, 而不是调用的地方 |
| | | if (MessageTypeEnum.XT.getType().equals(messageType)) { |
| | | if (message.isMarkdown()) { |
| | | // 系统消息要解析Markdown |
| | | message.setContent(HTMLUtils.parseMarkdown(message.getContent())); |
| | | } |
| | | systemSendMsgHandle.sendMessage(message); |
| | | } else if (MessageTypeEnum.YJ.getType().equals(messageType)) { |
| | | if (message.isMarkdown()) { |
| | | // 邮件消息要解析Markdown |
| | | message.setContent(HTMLUtils.parseMarkdown(message.getContent())); |
| | | } |
| | | emailSendMsgHandle.sendMessage(message); |
| | | } else if (MessageTypeEnum.DD.getType().equals(messageType)) { |
| | | ddSendMsgHandle.sendMessage(message); |
| | | } else if (MessageTypeEnum.QYWX.getType().equals(messageType)) { |
| | | qywxSendMsgHandle.sendMessage(message); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public String getTemplateContent(String code) { |
| | | List<SysMessageTemplate> list = sysMessageTemplateService.selectByCode(code); |
| | | if(list==null || list.size()==0){ |
| | | return null; |
| | | } |
| | | return list.get(0).getTemplateContent(); |
| | | } |
| | | @Override |
| | | public String getTemplateContent(String code) { |
| | | List<SysMessageTemplate> list = sysMessageTemplateService.selectByCode(code); |
| | | if (list == null || list.size() == 0) { |
| | | return null; |
| | | } |
| | | return list.get(0).getTemplateContent(); |
| | | } |
| | | |
| | | /** |
| | | * 获取模板内容,解析markdown |
| | | * |
| | | * @param code |
| | | * @return |
| | | */ |
| | | public SysMessageTemplate getTemplateEntity(String code) { |
| | | List<SysMessageTemplate> list = sysMessageTemplateService.selectByCode(code); |
| | | if (list == null || list.size() == 0) { |
| | | return null; |
| | | } |
| | | return list.get(0); |
| | | } |
| | | /** |
| | | * 获取模板内容,解析markdown |
| | | * |
| | | * @param code |
| | | * @return |
| | | */ |
| | | public SysMessageTemplate getTemplateEntity(String code) { |
| | | List<SysMessageTemplate> list = sysMessageTemplateService.selectByCode(code); |
| | | if (list == null || list.size() == 0) { |
| | | return null; |
| | | } |
| | | return list.get(0); |
| | | } |
| | | |
| | | //-------------------------------------流程节点发送模板消息----------------------------------------------- |
| | | //-------------------------------------流程节点发送模板消息----------------------------------------------- |
| | | |
| | | @Override |
| | | public void saveDataLog(DataLogDTO dataLogDto) { |
| | | SysDataLog entity = new SysDataLog(); |
| | | entity.setDataTable(dataLogDto.getTableName()); |
| | | entity.setDataId(dataLogDto.getDataId()); |
| | | entity.setDataContent(dataLogDto.getContent()); |
| | | entity.setType(dataLogDto.getType()); |
| | | entity.setDataVersion("1"); |
| | | sysDataLogService.save(entity); |
| | | } |
| | | @Override |
| | | public void saveDataLog(DataLogDTO dataLogDto) { |
| | | SysDataLog entity = new SysDataLog(); |
| | | entity.setDataTable(dataLogDto.getTableName()); |
| | | entity.setDataId(dataLogDto.getDataId()); |
| | | entity.setDataContent(dataLogDto.getContent()); |
| | | entity.setType(dataLogDto.getType()); |
| | | entity.setDataVersion("1"); |
| | | sysDataLogService.save(entity); |
| | | } |
| | | |
| | | @Override |
| | | public void addSysFiles(SysFilesModel sysFilesModel) { |
| | | SysFiles sysFiles = new SysFiles(); |
| | | BeanUtils.copyProperties(sysFilesModel,sysFiles); |
| | | BeanUtils.copyProperties(sysFilesModel, sysFiles); |
| | | String defaultValue = "0"; |
| | | sysFiles.setIzStar(defaultValue); |
| | | sysFiles.setIzFolder(defaultValue); |
| | |
| | | sysUserService.updateById(sysUser); |
| | | } |
| | | |
| | | @Override |
| | | public void sendAppChatSocket(String userId) { |
| | | JSONObject obj = new JSONObject(); |
| | | obj.put(WebsocketConst.MSG_CMD, WebsocketConst.MSG_CHAT); |
| | | obj.put(WebsocketConst.MSG_USER_ID, userId); |
| | | webSocket.sendMessage(userId, obj.toJSONString()); |
| | | } |
| | | @Override |
| | | public void sendAppChatSocket(String userId) { |
| | | JSONObject obj = new JSONObject(); |
| | | obj.put(WebsocketConst.MSG_CMD, WebsocketConst.MSG_CHAT); |
| | | obj.put(WebsocketConst.MSG_USER_ID, userId); |
| | | webSocket.sendMessage(userId, obj.toJSONString()); |
| | | } |
| | | |
| | | @Override |
| | | public List<SysUploadRela> listByBusIdAndBusType(String busId, String busType) { |
| | | return uploadRelaService.listByBusIdAndBusType(busId, busType); |
| | | } |
| | | |
| | | @Override |
| | | public SysUpload getUploadById(String id) { |
| | | return uploadService.getById(id); |
| | | } |
| | | |
| | | @Override |
| | | public boolean saveOrUpdateBatchUploadRela(List<SysUploadRela> sysUploadRelaList) { |
| | | return uploadRelaService.saveOrUpdateBatch(sysUploadRelaList); |
| | | } |
| | | |
| | | @Override |
| | | public boolean updateBatchUploadById(List<SysUpload> sysUploadList) { |
| | | return uploadService.updateBatchById(sysUploadList); |
| | | } |
| | | |
| | | @Override |
| | | public List<SysUpload> batchUploadFile(String fileType, List<MultipartFile> multipartFileList, String description) throws Exception { |
| | | return uploadService.batchUploadFile(fileType, multipartFileList, description); |
| | | } |
| | | |
| | | @Override |
| | | public void saveOrUpdateUploadRale(String busId, String busType, String uploadId) { |
| | | uploadRelaService.saveOrUpdateUploadRale(busId, busType, uploadId); |
| | | } |
| | | |
| | | @Override |
| | | public void removeDataVersionByBusinessId(String businessId) { |
| | | dataVersionService.removeDataVersionByBusinessId(businessId); |
| | | } |
| | | |
| | | @Override |
| | | public void removeUploadById(String id) { |
| | | uploadService.removeById(id); |
| | | } |
| | | |
| | | @Override |
| | | public void removeUploadRelaById(String id) { |
| | | uploadRelaService.removeById(id); |
| | | } |
| | | |
| | | @Override |
| | | public void delSysUploadRelaByBusIdAndBusType(String busId, String busType) { |
| | | uploadRelaService.delSysUploadRelaByBusIdAndBusType(busId, busType); |
| | | } |
| | | |
| | | @Override |
| | | public String getUnitNameById(String unitId) { |
| | | Unit unit = unitService.getById(unitId); |
| | | String unitName = ""; |
| | | if(unit != null){ |
| | | unitName = unit.getName(); |
| | | } |
| | | return unitName; |
| | | } |
| | | |
| | | @Override |
| | | public String queryDictTextByKey(String dictCode, String key) { |
| | | |
| | | return sysDictService.queryDictTextByKey(dictCode, key); |
| | | } |
| | | |
| | | @Override |
| | | public String getVersionStatusByVersionAndBusinessType(Integer version, String businessType) { |
| | | return dataVersionService.getVersionStatusByVersionAndBusinessType(version, businessType); |
| | | } |
| | | |
| | | @Override |
| | | public void saveDataVersion(DataVersion dataVersion) { |
| | | dataVersionService.save(dataVersion); |
| | | } |
| | | |
| | | @Override |
| | | public DataVersion getDataVersionByBusinessId(String id) { |
| | | |
| | | return dataVersionService.getById(id); |
| | | } |
| | | |
| | | @Override |
| | | public void removeDataVersionById(String id) { |
| | | dataVersionService.removeById(id); |
| | | } |
| | | |
| | | /** |
| | | * 根据企业ID获取企业名称 |
| | | * |
| | | * @param enterpriseId |
| | | * @return |
| | | */ |
| | | @Override |
| | | public String getEnterpriseNameById(String enterpriseId) { |
| | | String enterpriseName = enterpriseService.getById(enterpriseId).getName(); |
| | | return enterpriseName; |
| | | } |
| | | |
| | | @Override |
| | | public List<DataVersion> getLastDataVersion(String businessType, String enterpriseId, String isLastusable) { |
| | | List<DataVersion> dataVersionList = dataVersionService.getLastDataVersion(businessType, enterpriseId, isLastusable); |
| | | return dataVersionList; |
| | | } |
| | | |
| | | @Override |
| | | public List<DataVersion> getDataVersionList(String businessType, String enterpriseId, String versionStatus, String version) { |
| | | List<DataVersion> dataVersionList = dataVersionService.getDataVersionList(businessType, enterpriseId, versionStatus, version); |
| | | return dataVersionList; |
| | | } |
| | | |
| | | @Override |
| | | public void removeDataVersionByIds(String ids) { |
| | | dataVersionService.removeBatchByIds(Arrays.asList(ids.split(","))); |
| | | } |
| | | |
| | | @Override |
| | | public void updateBatchDataVersion(List<DataVersion> dataVersionList) { |
| | | dataVersionService.saveOrUpdateBatch(dataVersionList); |
| | | } |
| | | |
| | | @Override |
| | | public void closeJobByClassName(String className) { |
| | | QuartzJob quartzJob = quartzJobService.getOne(new QueryWrapper<QuartzJob>().eq("job_class_name", className), true); |
| | | if (ObjectUtils.isNotNull(quartzJob)) { |
| | | quartzJobService.deleteAndStopJob(quartzJob); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public void sendAnnouncement(String fromUser, String toUser, String title, String msgContent) { |
| | | SysAnnouncement announcement = new SysAnnouncement(); |
| | | announcement.setTitile(title); |
| | | announcement.setMsgContent(msgContent); |
| | | announcement.setSender(fromUser); |
| | | announcement.setPriority(CommonConstant.PRIORITY_M); |
| | | announcement.setMsgType(CommonConstant.MSG_TYPE_UESR); |
| | | announcement.setSendStatus(CommonConstant.HAS_SEND); |
| | | announcement.setSendTime(new Date()); |
| | | announcement.setMsgCategory(CommonConstant.MSG_CATEGORY_2); |
| | | announcement.setDelFlag(String.valueOf(CommonConstant.DEL_FLAG_0)); |
| | | sysAnnouncementMapper.insert(announcement); |
| | | // 2.插入用户通告阅读标记表记录 |
| | | String userId = toUser; |
| | | String[] userIds = userId.split(","); |
| | | String anntId = announcement.getId(); |
| | | for (int i = 0; i < userIds.length; i++) { |
| | | if (oConvertUtils.isNotEmpty(userIds[i])) { |
| | | SysUser sysUser = userMapper.getUserByName(userIds[i]); |
| | | if (sysUser == null) { |
| | | continue; |
| | | } |
| | | SysAnnouncementSend announcementSend = new SysAnnouncementSend(); |
| | | announcementSend.setAnntId(anntId); |
| | | announcementSend.setUserId(sysUser.getId()); |
| | | announcementSend.setReadFlag(CommonConstant.NO_READ_FLAG); |
| | | sysAnnouncementSendMapper.insert(announcementSend); |
| | | JSONObject obj = new JSONObject(); |
| | | obj.put("cmd", "user"); |
| | | obj.put("userId", sysUser.getId()); |
| | | obj.put("msgId", announcement.getId()); |
| | | obj.put("msgTxt", announcement.getTitile()); |
| | | webSocket.sendOneMessage(sysUser.getId(), obj.toJSONString()); |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | } |