Merge branch 'main' of http://121.37.111.42:3000/zhengsl/WholeProcessPlatform
This commit is contained in:
commit
9dfb0ce75d
@ -165,6 +165,22 @@
|
|||||||
<scope>runtime</scope>
|
<scope>runtime</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<!-- Oracle JDBC 驱动(驱动类:oracle.jdbc.OracleDriver) -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.oracle.database.jdbc</groupId>
|
||||||
|
<artifactId>ojdbc8</artifactId>
|
||||||
|
<version>21.9.0.0</version>
|
||||||
|
<scope>runtime</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- Oracle 国际化支持包(解决 ZHS16GBK 等字符集问题) -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.oracle.database.nls</groupId>
|
||||||
|
<artifactId>orai18n</artifactId>
|
||||||
|
<version>21.9.0.0</version>
|
||||||
|
<scope>runtime</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<!-- sqlite-jdbc数据库 -->
|
<!-- sqlite-jdbc数据库 -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.xerial</groupId>
|
<groupId>org.xerial</groupId>
|
||||||
|
|||||||
@ -18,6 +18,7 @@ public class GlobalExceptionHandler {
|
|||||||
@ExceptionHandler(value = Throwable.class)
|
@ExceptionHandler(value = Throwable.class)
|
||||||
public ResponseResult handleException(Throwable e) {
|
public ResponseResult handleException(Throwable e) {
|
||||||
log.error("message:{}", e.getMessage());
|
log.error("message:{}", e.getMessage());
|
||||||
|
e.printStackTrace();
|
||||||
return ResponseResult.error(e.getMessage());
|
return ResponseResult.error(e.getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,183 +0,0 @@
|
|||||||
package com.yfd.platform.system.controller;
|
|
||||||
|
|
||||||
import cn.hutool.core.util.StrUtil;
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
||||||
import com.yfd.platform.annotation.Log;
|
|
||||||
import com.yfd.platform.config.ResponseResult;
|
|
||||||
import com.yfd.platform.system.domain.QuartzJob;
|
|
||||||
import com.yfd.platform.system.service.IQuartzJobService;
|
|
||||||
import com.yfd.platform.system.service.impl.UserServiceImpl;
|
|
||||||
import com.yfd.platform.utils.QuartzManage;
|
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
|
||||||
import org.quartz.CronExpression;
|
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
|
||||||
import org.springframework.web.bind.annotation.*;
|
|
||||||
|
|
||||||
import jakarta.annotation.Resource;
|
|
||||||
import java.sql.Timestamp;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>
|
|
||||||
* 定时任务 前端控制器
|
|
||||||
* </p>
|
|
||||||
*
|
|
||||||
* @author TangWei
|
|
||||||
* @since 2023-03-19
|
|
||||||
*/
|
|
||||||
@RestController
|
|
||||||
@RequestMapping("/system/quartzjob")
|
|
||||||
@Tag(name = "定时任务")
|
|
||||||
@Transactional
|
|
||||||
public class QuartzJobController {
|
|
||||||
|
|
||||||
@Resource
|
|
||||||
private IQuartzJobService quartzJobService;
|
|
||||||
|
|
||||||
@Resource
|
|
||||||
private UserServiceImpl currentUser;
|
|
||||||
|
|
||||||
@Resource
|
|
||||||
private QuartzManage quartzManage;
|
|
||||||
|
|
||||||
@Operation(summary = "查询定时任务")
|
|
||||||
@GetMapping("/getQuartzJobList")
|
|
||||||
public ResponseResult getQuartzJobList(Page<QuartzJob> page,
|
|
||||||
String jobName) {
|
|
||||||
LambdaQueryWrapper<QuartzJob> queryWrapper = new LambdaQueryWrapper<>();
|
|
||||||
if (StrUtil.isNotBlank(jobName)) {
|
|
||||||
queryWrapper.like(QuartzJob::getJobName, jobName);
|
|
||||||
}
|
|
||||||
queryWrapper.orderByAsc(QuartzJob::getOrderno);
|
|
||||||
Page<QuartzJob> pageList = quartzJobService.page(page, queryWrapper);
|
|
||||||
return ResponseResult.successData(pageList);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Log(module = "定时任务管理", value = "新增定时任务")
|
|
||||||
@Operation(summary = "新增定时任务")
|
|
||||||
@PostMapping("/addQuartzJob")
|
|
||||||
public ResponseResult addQuartzJob(@RequestBody QuartzJob quartzJob) {
|
|
||||||
if (quartzJob == null) {
|
|
||||||
return ResponseResult.error("参数为空");
|
|
||||||
}
|
|
||||||
// 添加最近修改人
|
|
||||||
quartzJob.setLastmodifier(currentUser.getUsername());
|
|
||||||
// 添加最近修改时间
|
|
||||||
quartzJob.setLastmodifydate(new Timestamp(System.currentTimeMillis()));
|
|
||||||
if (StrUtil.isBlank(quartzJob.getJobCron()) || !CronExpression.isValidExpression(quartzJob.getJobCron())) {
|
|
||||||
return ResponseResult.error("cron表达式格式错误");
|
|
||||||
}
|
|
||||||
quartzJob.setStatus("0");
|
|
||||||
boolean ok = quartzJobService.addQuartzJob(quartzJob);
|
|
||||||
quartzManage.addJob(quartzJob);
|
|
||||||
if (ok) {
|
|
||||||
return ResponseResult.success();
|
|
||||||
} else {
|
|
||||||
return ResponseResult.error("新增失败");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Log(module = "定时任务管理", value = "设置定时任务是否有效")
|
|
||||||
@Operation(summary = "设置定时任务是否有效")
|
|
||||||
@PostMapping("/setQuartzStatus")
|
|
||||||
public ResponseResult setQuartzStatus(@RequestParam String id,
|
|
||||||
@RequestParam String status) {
|
|
||||||
if (StrUtil.isBlank(id) || StrUtil.isBlank(status)) {
|
|
||||||
return ResponseResult.error("参数为空");
|
|
||||||
}
|
|
||||||
LambdaUpdateWrapper<QuartzJob> updateWrapper =
|
|
||||||
new LambdaUpdateWrapper<>();
|
|
||||||
//根据id 更新状态,最近修改人,最近修改时间
|
|
||||||
updateWrapper.eq(QuartzJob::getId, id).set(QuartzJob::getStatus,
|
|
||||||
status).set(
|
|
||||||
QuartzJob::getLastmodifier, currentUser.getUsername()).set(QuartzJob::getLastmodifydate,
|
|
||||||
LocalDateTime.now());
|
|
||||||
boolean ok = quartzJobService.update(updateWrapper);
|
|
||||||
QuartzJob quartzJob = quartzJobService.getById(id);
|
|
||||||
if ("0".equals(quartzJob.getStatus())) {
|
|
||||||
quartzManage.pauseJob(quartzJob);
|
|
||||||
} else {
|
|
||||||
quartzManage.resumeJob(quartzJob);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ok) {
|
|
||||||
return ResponseResult.success();
|
|
||||||
} else {
|
|
||||||
return ResponseResult.error();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Operation(summary = "根据ID查询定时任务")
|
|
||||||
@GetMapping("/getQuartzJobById")
|
|
||||||
public ResponseResult getQuartzJobById(String id) {
|
|
||||||
QuartzJob quartzJob = quartzJobService.getById(id);
|
|
||||||
return ResponseResult.successData(quartzJob);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Log(module = "定时任务管理", value = "修改定时任务")
|
|
||||||
@Operation(summary = "修改定时任务")
|
|
||||||
@PostMapping("/updateQuartzJob")
|
|
||||||
@Transactional(rollbackFor = Exception.class)
|
|
||||||
public ResponseResult updateQuartzJob(@RequestBody QuartzJob quartzJob) {
|
|
||||||
// 添加最近修改人
|
|
||||||
quartzJob.setLastmodifier(currentUser.getUsername());
|
|
||||||
// 添加最近修改时间
|
|
||||||
quartzJob.setLastmodifydate(new Timestamp(System.currentTimeMillis()));
|
|
||||||
if (StrUtil.isBlank(quartzJob.getJobCron()) || !CronExpression.isValidExpression(quartzJob.getJobCron())) {
|
|
||||||
return ResponseResult.error("cron表达式格式错误");
|
|
||||||
}
|
|
||||||
boolean ok = quartzJobService.updateById(quartzJob);
|
|
||||||
quartzManage.updateJobCron(quartzJob);
|
|
||||||
if (ok) {
|
|
||||||
return ResponseResult.success();
|
|
||||||
} else {
|
|
||||||
return ResponseResult.error("修改失败");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Log(module = "定时任务管理", value = "删除定时任务")
|
|
||||||
@Operation(summary = "删除定时任务")
|
|
||||||
@PostMapping("/deleteQuartzJob")
|
|
||||||
public ResponseResult deleteQuartzJob(@RequestParam String id) {
|
|
||||||
if (StrUtil.isBlank(id)) {
|
|
||||||
return ResponseResult.error("参数为空");
|
|
||||||
}
|
|
||||||
boolean ok = quartzJobService.deleteQuartzJob(id);
|
|
||||||
if (ok) {
|
|
||||||
return ResponseResult.success();
|
|
||||||
} else {
|
|
||||||
return ResponseResult.error("删除失败");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Log(module = "定时任务管理", value = "执行定时任务")
|
|
||||||
@Operation(summary = "执行定时任务")
|
|
||||||
@PostMapping("/execution")
|
|
||||||
public ResponseResult execution(@RequestParam String id) {
|
|
||||||
quartzJobService.execution(quartzJobService.getById(id));
|
|
||||||
return ResponseResult.success();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**********************************
|
|
||||||
* 用途说明: 拖动修改定时顺序
|
|
||||||
* 参数说明 fromID 当前ID toID 到达ID
|
|
||||||
* 返回值说明: com.yfd.platform.config.ResponseResult 成功或者失败
|
|
||||||
***********************************/
|
|
||||||
@Log(module = "定时任务管理", value = "拖动定时任务")
|
|
||||||
@PostMapping("/changeDictOrder")
|
|
||||||
@Operation(summary = "拖动修改定时任务顺序")
|
|
||||||
public ResponseResult changeQuartzOrder(@RequestParam String fromID,
|
|
||||||
@RequestParam String toID) {
|
|
||||||
|
|
||||||
boolean ok = quartzJobService.changeDictOrder(fromID, toID);
|
|
||||||
if (ok) {
|
|
||||||
return ResponseResult.success();
|
|
||||||
} else {
|
|
||||||
return ResponseResult.error();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,114 +0,0 @@
|
|||||||
package com.yfd.platform.system.service.impl;
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
||||||
import com.yfd.platform.system.domain.QuartzJob;
|
|
||||||
import com.yfd.platform.system.domain.SysDictionary;
|
|
||||||
import com.yfd.platform.system.mapper.QuartzJobMapper;
|
|
||||||
import com.yfd.platform.system.service.IQuartzJobService;
|
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
||||||
import com.yfd.platform.utils.QuartzManage;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
|
|
||||||
import jakarta.annotation.Resource;
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Set;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>
|
|
||||||
* 定时任务 服务实现类
|
|
||||||
* </p>
|
|
||||||
*
|
|
||||||
* @author TangWei
|
|
||||||
* @since 2023-03-19
|
|
||||||
*/
|
|
||||||
@Service
|
|
||||||
public class QuartzJobServiceImpl extends ServiceImpl<QuartzJobMapper,
|
|
||||||
QuartzJob> implements IQuartzJobService {
|
|
||||||
|
|
||||||
@Resource
|
|
||||||
private QuartzJobMapper quartzJobMapper;
|
|
||||||
|
|
||||||
@Resource
|
|
||||||
private QuartzManage quartzManage;
|
|
||||||
|
|
||||||
/**********************************
|
|
||||||
* 用途说明: 新增定时任务
|
|
||||||
* 参数说明 quartzJob 定时对象
|
|
||||||
* 返回值说明: boolean 是否成功
|
|
||||||
***********************************/
|
|
||||||
@Override
|
|
||||||
public boolean addQuartzJob(QuartzJob quartzJob) {
|
|
||||||
// 生成序号
|
|
||||||
long orderNo = this.count() + 1L;
|
|
||||||
quartzJob.setOrderno((int) orderNo);
|
|
||||||
return this.save(quartzJob);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**********************************
|
|
||||||
* 用途说明: 删除定时任务
|
|
||||||
* 参数说明 id id
|
|
||||||
* 返回值说明: boolean 是否成功
|
|
||||||
***********************************/
|
|
||||||
@Override
|
|
||||||
public boolean deleteQuartzJob(String id) {
|
|
||||||
String[] split = id.split(",");
|
|
||||||
Set<String> ids = Arrays.stream(split).collect(Collectors.toSet());
|
|
||||||
for (String s : ids) {
|
|
||||||
QuartzJob quartzJob = this.getById(s);
|
|
||||||
quartzManage.deleteJob(quartzJob);
|
|
||||||
this.removeById(s);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 查询所有定时任务
|
|
||||||
List<QuartzJob> list =
|
|
||||||
this.list(new LambdaQueryWrapper<QuartzJob>().orderByAsc(QuartzJob::getOrderno));
|
|
||||||
// 更新序号
|
|
||||||
for (int i = 0; i < list.size(); i++) {
|
|
||||||
QuartzJob quartzJob = list.get(i);
|
|
||||||
quartzJob.setOrderno(i + 1);
|
|
||||||
this.updateById(quartzJob);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**********************************
|
|
||||||
* 用途说明: 拖动修改定时任务顺序
|
|
||||||
* 参数说明 fromID 当前ID toID 到达ID
|
|
||||||
* 返回值说明: com.yfd.platform.config.ResponseResult 返回拖动成功或者失败
|
|
||||||
***********************************/
|
|
||||||
@Override
|
|
||||||
public boolean changeDictOrder(String fromID, String toID) {
|
|
||||||
QuartzJob fromQuartzJob =
|
|
||||||
quartzJobMapper.selectById(fromID);
|
|
||||||
QuartzJob toQuartzJob = quartzJobMapper.selectById(toID);
|
|
||||||
// 如果数据字典不存在拖动失败
|
|
||||||
if (fromQuartzJob == null || toQuartzJob == null) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
Integer fromOrderNo = fromQuartzJob.getOrderno();
|
|
||||||
Integer toOrderNo = toQuartzJob.getOrderno();
|
|
||||||
// 如果数据字典的顺序号不存在拖动失败
|
|
||||||
if (fromOrderNo == null || toOrderNo == null) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
// 将顺序号放入字典对象中
|
|
||||||
fromQuartzJob.setOrderno(toOrderNo);
|
|
||||||
toQuartzJob.setOrderno(fromOrderNo);
|
|
||||||
// 更改顺序号
|
|
||||||
boolean fromBool = this.updateById(fromQuartzJob);
|
|
||||||
boolean toBool = this.updateById(toQuartzJob);
|
|
||||||
return fromBool && toBool;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**********************************
|
|
||||||
* 用途说明: 执行定时任务
|
|
||||||
* 参数说明 id id
|
|
||||||
* 返回值说明: void
|
|
||||||
***********************************/
|
|
||||||
@Override
|
|
||||||
public void execution(QuartzJob quartzJob) {
|
|
||||||
quartzManage.runJobNow(quartzJob);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -31,8 +31,8 @@ public class SysLog implements Serializable {
|
|||||||
/**
|
/**
|
||||||
* ID
|
* ID
|
||||||
*/
|
*/
|
||||||
@TableId(value = "ID", type = IdType.AUTO)
|
@TableId(value = "ID", type = IdType.ASSIGN_UUID)
|
||||||
private Long id;
|
private String id;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 用户账号
|
* 用户账号
|
||||||
|
|||||||
@ -41,7 +41,7 @@ public interface SysMenuMapper extends BaseMapper<SysMenu> {
|
|||||||
List<String> selectPermsByUserId(String userId);
|
List<String> selectPermsByUserId(String userId);
|
||||||
|
|
||||||
//List<SysMenu> selectMenuByUserId(String userId);
|
//List<SysMenu> selectMenuByUserId(String userId);
|
||||||
List<Map<String,Object>> selectMenuByUserId(String userId);
|
List<SysMenu> selectMenuByUserId(String userId);
|
||||||
|
|
||||||
/***********************************
|
/***********************************
|
||||||
* 用途说明:根据权限id查找系统类型
|
* 用途说明:根据权限id查找系统类型
|
||||||
|
|||||||
@ -86,4 +86,19 @@ public interface SysRoleMapper extends BaseMapper<SysRole> {
|
|||||||
|
|
||||||
void addRoleMenu(@Param("id") String id, @Param("roleid") String roleid,
|
void addRoleMenu(@Param("id") String id, @Param("roleid") String roleid,
|
||||||
@Param("menuid") String menuid);
|
@Param("menuid") String menuid);
|
||||||
|
|
||||||
|
|
||||||
|
/**********************************
|
||||||
|
* 用途说明:根据用户 id 获取角色信息
|
||||||
|
* 参数说明 id 用户 id
|
||||||
|
* 返回值说明:角色列表
|
||||||
|
***********************************/
|
||||||
|
List<SysRole> getRoleListByUserId(String id);
|
||||||
|
|
||||||
|
/**********************************
|
||||||
|
* 用途说明:根据用户 id 获取角色 ID 列表
|
||||||
|
* 参数说明 id 用户 id
|
||||||
|
* 返回值说明:角色 ID 列表
|
||||||
|
***********************************/
|
||||||
|
List<String> getRoleIdsByUserId(String id);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -14,6 +14,7 @@ import com.yfd.platform.system.mapper.SysRoleMapper;
|
|||||||
import com.yfd.platform.system.service.ISysMenuService;
|
import com.yfd.platform.system.service.ISysMenuService;
|
||||||
import com.yfd.platform.utils.FileUtil;
|
import com.yfd.platform.utils.FileUtil;
|
||||||
import com.yfd.platform.config.FileSpaceProperties;
|
import com.yfd.platform.config.FileSpaceProperties;
|
||||||
|
import com.yfd.platform.utils.ObjectConverterUtil;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
@ -64,12 +65,13 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
|||||||
public List<Map<String, Object>> getMenuButtonTree(String systemcode,
|
public List<Map<String, Object>> getMenuButtonTree(String systemcode,
|
||||||
String name,
|
String name,
|
||||||
String isdisplay) {
|
String isdisplay) {
|
||||||
List<Map<String, Object>> listMap=null;
|
List<Map<String, Object>> mapList=null;
|
||||||
|
List<Map<String, Object>> listMap =new ArrayList<>();
|
||||||
if(StrUtil.isEmpty(name)){//不带名称查询,返回树结构
|
if(StrUtil.isEmpty(name)){//不带名称查询,返回树结构
|
||||||
QueryWrapper<SysMenu> queryWrapper = new QueryWrapper<>();
|
QueryWrapper<SysMenu> queryWrapper = new QueryWrapper<>();
|
||||||
queryWrapper.eq("parentid", "0").eq("systemcode", systemcode).orderByAsc("orderno");
|
queryWrapper.eq("parentid", "0").eq("systemcode", systemcode).orderByAsc("orderno");
|
||||||
listMap = this.listMaps(queryWrapper);
|
mapList = this.listMaps(queryWrapper);
|
||||||
|
listMap.addAll(ObjectConverterUtil.convertMapFieldsToEntityFormat(SysMenu.class, mapList));
|
||||||
for (int i = 0; i < listMap.size(); i++) {
|
for (int i = 0; i < listMap.size(); i++) {
|
||||||
//查询下一子集
|
//查询下一子集
|
||||||
List<Map<String, Object>> childList = child(listMap.get(i).get(
|
List<Map<String, Object>> childList = child(listMap.get(i).get(
|
||||||
@ -79,11 +81,9 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
|||||||
}else{ //根据菜单名称查询,直接返回类别
|
}else{ //根据菜单名称查询,直接返回类别
|
||||||
QueryWrapper<SysMenu> queryWrapper = new QueryWrapper<>();
|
QueryWrapper<SysMenu> queryWrapper = new QueryWrapper<>();
|
||||||
queryWrapper.like("name", name).eq("systemcode", systemcode).orderByAsc("name");
|
queryWrapper.like("name", name).eq("systemcode", systemcode).orderByAsc("name");
|
||||||
listMap = this.listMaps(queryWrapper);
|
mapList = this.listMaps(queryWrapper);
|
||||||
|
listMap.addAll(ObjectConverterUtil.convertMapFieldsToEntityFormat(SysMenu.class, mapList));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return listMap;
|
return listMap;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -129,7 +129,7 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
|||||||
private List<Map<String, Object>> child(String parentid,
|
private List<Map<String, Object>> child(String parentid,
|
||||||
String systemcode, String name,
|
String systemcode, String name,
|
||||||
String isdisplay, String type) {
|
String isdisplay, String type) {
|
||||||
List<Map<String, Object>> listMap = new ArrayList<>();
|
List<Map<String, Object>> mapList;
|
||||||
QueryWrapper<SysMenu> queryWrapper = new QueryWrapper<>();
|
QueryWrapper<SysMenu> queryWrapper = new QueryWrapper<>();
|
||||||
queryWrapper.eq("parentid", parentid).eq("systemcode", systemcode);
|
queryWrapper.eq("parentid", parentid).eq("systemcode", systemcode);
|
||||||
//根据上级id 系统 查询
|
//根据上级id 系统 查询
|
||||||
@ -140,8 +140,9 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
|||||||
if (StrUtil.isNotEmpty(name)) { //根据菜单名称查询
|
if (StrUtil.isNotEmpty(name)) { //根据菜单名称查询
|
||||||
queryWrapper.like("name", name);
|
queryWrapper.like("name", name);
|
||||||
}
|
}
|
||||||
listMap = this.listMaps(queryWrapper.orderByAsc("orderno"));
|
mapList = this.listMaps(queryWrapper.orderByAsc("orderno"));
|
||||||
if (listMap.size() > 0) { //判断是否存在子集
|
List<Map<String, Object>> listMap = ObjectConverterUtil.convertMapFieldsToEntityFormat(SysMenu.class, mapList);
|
||||||
|
if (!listMap.isEmpty()) { //判断是否存在子集
|
||||||
for (int i = 0; i < listMap.size(); i++) { //遍历表数据
|
for (int i = 0; i < listMap.size(); i++) { //遍历表数据
|
||||||
List<Map<String, Object>> childList =
|
List<Map<String, Object>> childList =
|
||||||
child(listMap.get(i).get("id").toString(), systemcode
|
child(listMap.get(i).get("id").toString(), systemcode
|
||||||
@ -170,14 +171,16 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
|||||||
sysMenu.setOrderno((int) orderno);
|
sysMenu.setOrderno((int) orderno);
|
||||||
// 生成编号
|
// 生成编号
|
||||||
QueryWrapper<SysMenu> queryMaxCode = new QueryWrapper<>();
|
QueryWrapper<SysMenu> queryMaxCode = new QueryWrapper<>();
|
||||||
queryMaxCode.eq("parentid",
|
queryMaxCode.eq("parentid", parentId);
|
||||||
parentId);
|
|
||||||
// 查询最大的编号
|
// 使用 Oracle 兼容的 NVL 函数处理空值
|
||||||
List<Object> maxList = this.listObjs(queryMaxCode.select("max(code) " +
|
List<Object> maxList = this.listObjs(
|
||||||
"code").eq("systemcode", sysMenu.getSystemcode()));
|
queryMaxCode.select("NVL(MAX(code), '0') as code")
|
||||||
|
.eq("systemcode", sysMenu.getSystemcode())
|
||||||
|
);
|
||||||
SysMenu parentMenu = sysMenuMapper.selectById(parentId);
|
SysMenu parentMenu = sysMenuMapper.selectById(parentId);
|
||||||
// 最大编号转换成int类型
|
// 最大编号转换成int类型
|
||||||
String maxCode = maxList.size() > 0 ? maxList.get(0).toString() : "0";
|
String maxCode = !maxList.isEmpty() ? maxList.getFirst().toString() : "0";
|
||||||
int max = ObjectUtil.isEmpty(maxList) ? 0 :
|
int max = ObjectUtil.isEmpty(maxList) ? 0 :
|
||||||
Integer.parseInt(maxCode);
|
Integer.parseInt(maxCode);
|
||||||
DecimalFormat df;
|
DecimalFormat df;
|
||||||
@ -409,14 +412,31 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
|||||||
public List<Map<String, Object>> getMenuTree(String id) {
|
public List<Map<String, Object>> getMenuTree(String id) {
|
||||||
// 根据id获取菜单
|
// 根据id获取菜单
|
||||||
//List<SysMenu> sysMenus = sysMenuMapper.selectMenuByUserId(id);
|
//List<SysMenu> sysMenus = sysMenuMapper.selectMenuByUserId(id);
|
||||||
List<Map<String, Object>> list;
|
List<SysMenu> sysMenuList;
|
||||||
if (StrUtil.isBlank(id)) {
|
if (StrUtil.isBlank(id)) {
|
||||||
LambdaQueryWrapper<SysMenu> queryWrapper =
|
LambdaQueryWrapper<SysMenu> queryWrapper =
|
||||||
new LambdaQueryWrapper<>();
|
new LambdaQueryWrapper<>();
|
||||||
list = this.listMaps(queryWrapper.eq(SysMenu::getIsdisplay, "1").ne(SysMenu::getType, "2").eq(SysMenu::getSystemcode, "1").orderByAsc(SysMenu::getOrderno));
|
sysMenuList = this.list(queryWrapper.eq(SysMenu::getIsdisplay, "1").ne(SysMenu::getType, "2").eq(SysMenu::getSystemcode, "1").orderByAsc(SysMenu::getOrderno));
|
||||||
} else {
|
} else {
|
||||||
list = sysMenuMapper.selectMenuByUserId(id);
|
sysMenuList = sysMenuMapper.selectMenuByUserId(id);
|
||||||
}
|
}
|
||||||
|
// 将 SysMenu 转换为 Map 并构建树
|
||||||
|
List<Map<String, Object>> list = sysMenuList.stream()
|
||||||
|
.map(menu -> {
|
||||||
|
Map<String, Object> map = new HashMap<>();
|
||||||
|
map.put("id", menu.getId());
|
||||||
|
map.put("parentid", menu.getParentid());
|
||||||
|
map.put("name", menu.getName());
|
||||||
|
map.put("opturl", menu.getOpturl());
|
||||||
|
map.put("icon", menu.getIcon());
|
||||||
|
map.put("type", menu.getType());
|
||||||
|
map.put("systemcode", menu.getSystemcode());
|
||||||
|
map.put("isdisplay", menu.getIsdisplay());
|
||||||
|
map.put("orderno", menu.getOrderno());
|
||||||
|
return map;
|
||||||
|
})
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
// 将菜单转换成树
|
// 将菜单转换成树
|
||||||
List<Map<String, Object>> sysMenus = buildTreeLeft(list);
|
List<Map<String, Object>> sysMenus = buildTreeLeft(list);
|
||||||
return sysMenus;
|
return sysMenus;
|
||||||
|
|||||||
@ -55,7 +55,7 @@ public class SysOrganizationServiceImpl extends ServiceImpl<SysOrganizationMappe
|
|||||||
@Override
|
@Override
|
||||||
public List<Map<String, Object>> getOrgTree(String parentid,
|
public List<Map<String, Object>> getOrgTree(String parentid,
|
||||||
String params) {
|
String params) {
|
||||||
List<Map<String, Object>> listMap = new ArrayList<>();
|
List<SysOrganization> orgList = new ArrayList<>();
|
||||||
QueryWrapper<SysOrganization> queryWrapper = new QueryWrapper<>();
|
QueryWrapper<SysOrganization> queryWrapper = new QueryWrapper<>();
|
||||||
//根据父级id查询
|
//根据父级id查询
|
||||||
queryWrapper.eq("parentid", parentid);
|
queryWrapper.eq("parentid", parentid);
|
||||||
@ -88,11 +88,30 @@ public class SysOrganizationServiceImpl extends ServiceImpl<SysOrganizationMappe
|
|||||||
}
|
}
|
||||||
queryWrapper.in("id", ids);
|
queryWrapper.in("id", ids);
|
||||||
}
|
}
|
||||||
listMap = this.listMaps(queryWrapper.orderByAsc("orgcode"));
|
orgList = this.list(queryWrapper.orderByAsc("orgcode"));
|
||||||
for (int i = 0; i < listMap.size(); i++) {
|
// 将实体对象转换为 Map,确保字段名与实体类一致
|
||||||
List<Map<String, Object>> childList = child(listMap.get(i).get(
|
// 将实体对象转换为 Map,确保字段名与实体类一致
|
||||||
|
List<Map<String,Object>> listMap = orgList.stream().map(org -> {
|
||||||
|
Map<String, Object> map = new HashMap<>();
|
||||||
|
map.put("id", org.getId());
|
||||||
|
map.put("orgtype", org.getOrgtype());
|
||||||
|
map.put("orgcode", org.getOrgcode());
|
||||||
|
map.put("orgname", org.getOrgname());
|
||||||
|
map.put("parentid", org.getParentid());
|
||||||
|
map.put("manager", org.getManager());
|
||||||
|
map.put("isvaild", org.getIsvaild());
|
||||||
|
map.put("description", org.getDescription());
|
||||||
|
map.put("lastmodifier", org.getLastmodifier());
|
||||||
|
map.put("lastmodifydate", org.getLastmodifydate());
|
||||||
|
map.put("custom1", org.getCustom1());
|
||||||
|
map.put("custom2", org.getCustom2());
|
||||||
|
map.put("custom3", org.getCustom3());
|
||||||
|
return map;
|
||||||
|
}).collect(Collectors.toList());
|
||||||
|
for (Map<String, Object> map : listMap) {
|
||||||
|
List<Map<String, Object>> childList = child(map.get(
|
||||||
"id").toString());//查询下一子集
|
"id").toString());//查询下一子集
|
||||||
listMap.get(i).put("childList", childList); //添加新列 子集
|
map.put("childList", childList); //添加新列 子集
|
||||||
}
|
}
|
||||||
return listMap;
|
return listMap;
|
||||||
}
|
}
|
||||||
@ -109,7 +128,7 @@ public class SysOrganizationServiceImpl extends ServiceImpl<SysOrganizationMappe
|
|||||||
QueryWrapper<SysOrganization> queryWrapper = new QueryWrapper<>();
|
QueryWrapper<SysOrganization> queryWrapper = new QueryWrapper<>();
|
||||||
queryWrapper.eq("parentid", parentid); //根据上级id 查询
|
queryWrapper.eq("parentid", parentid); //根据上级id 查询
|
||||||
listMap = this.listMaps(queryWrapper.orderByAsc("orgcode"));
|
listMap = this.listMaps(queryWrapper.orderByAsc("orgcode"));
|
||||||
if (listMap.size() > 0) { //判断是否存在子集
|
if (!listMap.isEmpty()) { //判断是否存在子集
|
||||||
for (int i = 0; i < listMap.size(); i++) { //遍历表数据
|
for (int i = 0; i < listMap.size(); i++) { //遍历表数据
|
||||||
List<Map<String, Object>> childList =
|
List<Map<String, Object>> childList =
|
||||||
child(listMap.get(i).get("id").toString()); //循环获取下一子集
|
child(listMap.get(i).get("id").toString()); //循环获取下一子集
|
||||||
|
|||||||
@ -108,10 +108,9 @@ public class UserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impleme
|
|||||||
//根据用户ID获取组织
|
//根据用户ID获取组织
|
||||||
Map<String, String> userInfo =
|
Map<String, String> userInfo =
|
||||||
sysUserMapper.getOrganizationByid(user.getId());
|
sysUserMapper.getOrganizationByid(user.getId());
|
||||||
List<SysRole> roles =
|
|
||||||
sysRoleMapper.selectList(new QueryWrapper<SysRole>().inSql(
|
// 使用 MyBatis 方式查询用户角色(Oracle 兼容)
|
||||||
"id ", "SELECT roleid FROM sys_role_users ru WHERE ru" +
|
List<SysRole> roles = sysRoleMapper.getRoleByUserId(user.getId());
|
||||||
".userid = '" + user.getId() + "'"));
|
|
||||||
List<String> collect =
|
List<String> collect =
|
||||||
roles.stream().map(SysRole::getRolename).collect(Collectors.toList());
|
roles.stream().map(SysRole::getRolename).collect(Collectors.toList());
|
||||||
ResponseResult responseResult = new ResponseResult();
|
ResponseResult responseResult = new ResponseResult();
|
||||||
|
|||||||
@ -0,0 +1,149 @@
|
|||||||
|
package com.yfd.platform.utils;
|
||||||
|
|
||||||
|
import java.lang.reflect.Field;
|
||||||
|
import java.sql.Timestamp;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.time.format.DateTimeFormatter;
|
||||||
|
import java.util.*;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
public class ObjectConverterUtil {
|
||||||
|
|
||||||
|
// 日期时间格式
|
||||||
|
private static final DateTimeFormatter DATE_TIME_FORMATTER =
|
||||||
|
DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 将 List<Map> 中的大写字段名转换为与实体类一致的小写格式
|
||||||
|
* 适用于 Oracle 数据库查询结果转换
|
||||||
|
* 时间类型字段会转换为字符串格式
|
||||||
|
*
|
||||||
|
* @param entityClass 实体类 Class 对象
|
||||||
|
* @param sourceList 源数据列表(字段名为大写)
|
||||||
|
* @return 转换后的列表(字段名与实体类一致)
|
||||||
|
*/
|
||||||
|
public static <T> List<Map<String, Object>> convertMapFieldsToEntityFormat(
|
||||||
|
Class<T> entityClass,
|
||||||
|
List<Map<String, Object>> sourceList) {
|
||||||
|
|
||||||
|
if (sourceList == null || sourceList.isEmpty()) {
|
||||||
|
return sourceList;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取实体类的所有字段及类型
|
||||||
|
Map<String, Field> fieldMap = new HashMap<>();
|
||||||
|
for (Field field : entityClass.getDeclaredFields()) {
|
||||||
|
fieldMap.put(field.getName(), field);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 转换每个 Map
|
||||||
|
return sourceList.stream().map(sourceMap -> {
|
||||||
|
Map<String, Object> targetMap = new HashMap<>();
|
||||||
|
|
||||||
|
for (Map.Entry<String, Object> entry : sourceMap.entrySet()) {
|
||||||
|
String dbColumnName = entry.getKey(); // 数据库列名(大写)
|
||||||
|
Object value = entry.getValue();
|
||||||
|
|
||||||
|
// 将大写列名转为小写
|
||||||
|
String lowerCaseName = dbColumnName.toLowerCase();
|
||||||
|
|
||||||
|
// 如果实体类中有对应的字段
|
||||||
|
if (fieldMap.containsKey(lowerCaseName)) {
|
||||||
|
Field field = fieldMap.get(lowerCaseName);
|
||||||
|
String fieldType = field.getType().getSimpleName();
|
||||||
|
|
||||||
|
// 处理时间类型,转换为字符串
|
||||||
|
if ("Timestamp".equals(fieldType) || "Date".equals(fieldType) ||
|
||||||
|
"LocalDateTime".equals(fieldType)) {
|
||||||
|
targetMap.put(lowerCaseName, formatDateTimeValue(value));
|
||||||
|
} else {
|
||||||
|
targetMap.put(lowerCaseName, value);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// 如果实体类中没有对应字段,保留原列名(转小写)
|
||||||
|
targetMap.put(lowerCaseName, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return targetMap;
|
||||||
|
}).collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通用方法:将单个 Map 的大写字段转换为实体类格式
|
||||||
|
* 时间类型字段会转换为字符串格式
|
||||||
|
*
|
||||||
|
* @param entityClass 实体类 Class 对象
|
||||||
|
* @param sourceMap 源 Map(字段名为大写)
|
||||||
|
* @return 转换后的 Map(字段名与实体类一致)
|
||||||
|
*/
|
||||||
|
public static <T> Map<String, Object> convertSingleMapFieldsToEntityFormat(
|
||||||
|
Class<T> entityClass,
|
||||||
|
Map<String, Object> sourceMap) {
|
||||||
|
|
||||||
|
if (sourceMap == null) {
|
||||||
|
return sourceMap;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取实体类的所有字段及类型
|
||||||
|
Map<String, Field> fieldMap = new HashMap<>();
|
||||||
|
for (Field field : entityClass.getDeclaredFields()) {
|
||||||
|
fieldMap.put(field.getName(), field);
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, Object> targetMap = new HashMap<>();
|
||||||
|
|
||||||
|
for (Map.Entry<String, Object> entry : sourceMap.entrySet()) {
|
||||||
|
String dbColumnName = entry.getKey();
|
||||||
|
Object value = entry.getValue();
|
||||||
|
|
||||||
|
// 将大写列名转为小写
|
||||||
|
String lowerCaseName = dbColumnName.toLowerCase();
|
||||||
|
|
||||||
|
// 验证字段是否存在于实体类中
|
||||||
|
if (fieldMap.containsKey(lowerCaseName)) {
|
||||||
|
Field field = fieldMap.get(lowerCaseName);
|
||||||
|
String fieldType = field.getType().getSimpleName();
|
||||||
|
|
||||||
|
// 处理时间类型,转换为字符串
|
||||||
|
if ("Timestamp".equals(fieldType) || "Date".equals(fieldType) ||
|
||||||
|
"LocalDateTime".equals(fieldType)) {
|
||||||
|
targetMap.put(lowerCaseName, formatDateTimeValue(value));
|
||||||
|
} else {
|
||||||
|
targetMap.put(lowerCaseName, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return targetMap;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 格式化时间类型值为字符串
|
||||||
|
*
|
||||||
|
* @param value 时间值(可能是 Timestamp、Date 或 LocalDateTime)
|
||||||
|
* @return 格式化后的字符串,如果为 null 则返回 null
|
||||||
|
*/
|
||||||
|
private static String formatDateTimeValue(Object value) {
|
||||||
|
if (value == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (value instanceof Timestamp) {
|
||||||
|
LocalDateTime localDateTime = ((Timestamp) value).toLocalDateTime();
|
||||||
|
return localDateTime.format(DATE_TIME_FORMATTER);
|
||||||
|
} else if (value instanceof java.util.Date) {
|
||||||
|
// 包括 java.sql.Date 和 java.util.Date
|
||||||
|
LocalDateTime localDateTime = ((java.util.Date) value).toInstant()
|
||||||
|
.atZone(java.time.ZoneId.systemDefault())
|
||||||
|
.toLocalDateTime();
|
||||||
|
return localDateTime.format(DATE_TIME_FORMATTER);
|
||||||
|
} else if (value instanceof LocalDateTime) {
|
||||||
|
return ((LocalDateTime) value).format(DATE_TIME_FORMATTER);
|
||||||
|
} else {
|
||||||
|
// 其他类型直接转字符串
|
||||||
|
return value.toString();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -20,13 +20,22 @@ public class RsaUtils {
|
|||||||
|
|
||||||
public static void main(String[] args) throws Exception {
|
public static void main(String[] args) throws Exception {
|
||||||
System.out.println("\n");
|
System.out.println("\n");
|
||||||
RsaKeyPair keyPair = generateKeyPair();
|
// RsaKeyPair keyPair = generateKeyPair();
|
||||||
System.out.println("公钥:" + keyPair.getPublicKey());
|
String publicKey = "MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBANL378k3RiZHWx5AfJqdH9xRNBmD9wGD2iRe41HdTNF8RUhNnHit5NpMNtGL0NPTSSpPjjI1kJfVorRvaQerUgkCAwEAAQ==";
|
||||||
System.out.println("私钥:" + keyPair.getPrivateKey());
|
String privateKey = "MIIBUwIBADANBgkqhkiG9w0BAQEFAASCAT0wggE5AgEAAkEA0vfvyTdGJkdbHkB8\n" +
|
||||||
|
"mp0f3FE0GYP3AYPaJF7jUd1M0XxFSE2ceK3k2kw20YvQ09NJKk+OMjWQl9WitG9p\n" +
|
||||||
|
"B6tSCQIDAQABAkA2SimBrWC2/wvauBuYqjCFwLvYiRYqZKThUS3MZlebXJiLB+Ue\n" +
|
||||||
|
"/gUifAAKIg1avttUZsHBHrop4qfJCwAI0+YRAiEA+W3NK/RaXtnRqmoUUkb59zsZ\n" +
|
||||||
|
"UBLpvZgQPfj1MhyHDz0CIQDYhsAhPJ3mgS64NbUZmGWuuNKp5coY2GIj/zYDMJp6\n" +
|
||||||
|
"vQIgUueLFXv/eZ1ekgz2Oi67MNCk5jeTF2BurZqNLR3MSmUCIFT3Q6uHMtsB9Eha\n" +
|
||||||
|
"4u7hS31tj1UWE+D+ADzp59MGnoftAiBeHT7gDMuqeJHPL4b+kC+gzV4FGTfhR9q3\n" +
|
||||||
|
"tTbklZkD2A==";
|
||||||
|
RsaKeyPair keyPair =new RsaKeyPair(publicKey, privateKey);
|
||||||
|
System.out.println("私钥:" + keyPair.getPrivateKey());
|
||||||
System.out.println("\n");
|
System.out.println("\n");
|
||||||
test1(keyPair);
|
test1(keyPair);
|
||||||
System.out.println("\n");
|
System.out.println("\n");
|
||||||
test2(keyPair);
|
// test2(keyPair);
|
||||||
System.out.println("\n");
|
System.out.println("\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
94
backend/src/main/resources/application-devtw.yml
Normal file
94
backend/src/main/resources/application-devtw.yml
Normal file
@ -0,0 +1,94 @@
|
|||||||
|
server:
|
||||||
|
port: 8093
|
||||||
|
|
||||||
|
spring:
|
||||||
|
#应用名称
|
||||||
|
application:
|
||||||
|
name: Project-plateform
|
||||||
|
datasource:
|
||||||
|
type: com.alibaba.druid.pool.DruidDataSource
|
||||||
|
druid:
|
||||||
|
master:
|
||||||
|
driverClassName: oracle.jdbc.OracleDriver
|
||||||
|
url: "${DB_MASTER_URL:jdbc:oracle:thin:@172.16.21.134:1521/SDLYZ}"
|
||||||
|
username: "${DB_MASTER_USERNAME:QGC}"
|
||||||
|
password: "${DB_MASTER_PASSWORD:ar6Yr7Vxo5}"
|
||||||
|
slave:
|
||||||
|
driverClassName: oracle.jdbc.OracleDriver
|
||||||
|
url: "${DB_SLAVE_URL:jdbc:oracle:thin:@172.16.21.134:1521/SDLYZ}"
|
||||||
|
username: "${DB_SLAVE_USERNAME:QGC}"
|
||||||
|
password: "${DB_SLAVE_PASSWORD:ar6Yr7Vxo5}"
|
||||||
|
|
||||||
|
mvc:
|
||||||
|
pathmatch:
|
||||||
|
matching-strategy: ant_path_matcher
|
||||||
|
servlet:
|
||||||
|
multipart:
|
||||||
|
max-file-size: 30MB
|
||||||
|
max-request-size: 100MB
|
||||||
|
|
||||||
|
logging:
|
||||||
|
file:
|
||||||
|
name: logs/projectname.log
|
||||||
|
level:
|
||||||
|
com.genersoft.iot: debug
|
||||||
|
com.genersoft.iot.vmp.storager.dao: info
|
||||||
|
com.genersoft.iot.vmp.gb28181: info
|
||||||
|
|
||||||
|
# 在线文档: swagger-ui(生产环境建议关闭)
|
||||||
|
swagger-ui:
|
||||||
|
enabled: true
|
||||||
|
|
||||||
|
|
||||||
|
# 登录相关配置
|
||||||
|
login:
|
||||||
|
# 登录缓存
|
||||||
|
cache-enable: true
|
||||||
|
# 是否限制单用户登录
|
||||||
|
single-login: false
|
||||||
|
# 验证码
|
||||||
|
login-code:
|
||||||
|
# 验证码类型配置 查看 LoginProperties 类
|
||||||
|
code-type: arithmetic
|
||||||
|
|
||||||
|
# 启动自动数据库初始化(仅 dev/server):
|
||||||
|
app:
|
||||||
|
init:
|
||||||
|
enabled: false
|
||||||
|
schema: classpath:db-init/sql/min-schema.sql
|
||||||
|
# data 文件可选;为避免复杂 dump 解析问题,先不导入
|
||||||
|
# data:
|
||||||
|
marker-table: sys_user
|
||||||
|
marker-version: v1.0.0
|
||||||
|
# 登录图形验证码有效时间/分钟
|
||||||
|
expiration: 2
|
||||||
|
# 验证码高度
|
||||||
|
width: 111
|
||||||
|
# 验证码宽度
|
||||||
|
heigth: 36
|
||||||
|
# 内容长度
|
||||||
|
length: 2
|
||||||
|
# 字体名称,为空则使用默认字体
|
||||||
|
font-name:
|
||||||
|
# 字体大小
|
||||||
|
font-size: 25
|
||||||
|
|
||||||
|
# IP 本地解析
|
||||||
|
ip:
|
||||||
|
local-parsing: true
|
||||||
|
|
||||||
|
|
||||||
|
file-space: #项目文档空间
|
||||||
|
files: D:\demoproject\files\ #单独上传的文件附件
|
||||||
|
system: D:\demoproject\system\ #单独上传的文件
|
||||||
|
|
||||||
|
task:
|
||||||
|
pool:
|
||||||
|
# 核心线程池大小
|
||||||
|
core-pool-size: 10
|
||||||
|
# 最大线程数
|
||||||
|
max-pool-size: 30
|
||||||
|
# 活跃时间
|
||||||
|
keep-alive-seconds: 60
|
||||||
|
# 队列容量
|
||||||
|
queue-capacity: 50
|
||||||
@ -1,6 +1,6 @@
|
|||||||
spring:
|
spring:
|
||||||
profiles:
|
profiles:
|
||||||
active: dev
|
active: devtw
|
||||||
|
|
||||||
jasypt:
|
jasypt:
|
||||||
encryptor:
|
encryptor:
|
||||||
@ -8,7 +8,7 @@ jasypt:
|
|||||||
|
|
||||||
#密码加密传输,前端公钥加密,后端私钥解密
|
#密码加密传输,前端公钥加密,后端私钥解密
|
||||||
rsa:
|
rsa:
|
||||||
private_key: ${RSA_PRIVATE_KEY:}
|
private_key: ${RSA_PRIVATE_KEY:MIIBUwIBADANBgkqhkiG9w0BAQEFAASCAT0wggE5AgEAAkEA0vfvyTdGJkdbHkB8mp0f3FE0GYP3AYPaJF7jUd1M0XxFSE2ceK3k2kw20YvQ09NJKk+OMjWQl9WitG9pB6tSCQIDAQABAkA2SimBrWC2/wvauBuYqjCFwLvYiRYqZKThUS3MZlebXJiLB+Ue/gUifAAKIg1avttUZsHBHrop4qfJCwAI0+YRAiEA+W3NK/RaXtnRqmoUUkb59zsZUBLpvZgQPfj1MhyHDz0CIQDYhsAhPJ3mgS64NbUZmGWuuNKp5coY2GIj/zYDMJp6vQIgUueLFXv/eZ1ekgz2Oi67MNCk5jeTF2BurZqNLR3MSmUCIFT3Q6uHMtsB9Eha4u7hS31tj1UWE+D+ADzp59MGnoftAiBeHT7gDMuqeJHPL4b+kC+gzV4FGTfhR9q3tTbklZkD2A==}
|
||||||
|
|
||||||
# Actuator & Micrometer 默认配置
|
# Actuator & Micrometer 默认配置
|
||||||
management:
|
management:
|
||||||
|
|||||||
@ -28,7 +28,7 @@
|
|||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="selectMenuByUserId"
|
<select id="selectMenuByUserId"
|
||||||
resultType="Map">
|
resultType="com.yfd.platform.system.domain.SysMenu">
|
||||||
SELECT
|
SELECT
|
||||||
DISTINCT
|
DISTINCT
|
||||||
m.id,
|
m.id,
|
||||||
|
|||||||
@ -98,7 +98,19 @@
|
|||||||
<select id="getUserIdById" resultType="java.lang.String">
|
<select id="getUserIdById" resultType="java.lang.String">
|
||||||
select userid from sys_role_users where roleid=#{roleid}
|
select userid from sys_role_users where roleid=#{roleid}
|
||||||
</select>
|
</select>
|
||||||
|
<select id="getRoleListByUserId" resultType="com.yfd.platform.system.domain.SysRole">
|
||||||
|
SELECT r.id, r.rolename, r.orgscope
|
||||||
|
FROM sys_role r
|
||||||
|
INNER JOIN sys_role_users ru ON r.id = ru.roleid
|
||||||
|
WHERE ru.userid = #{id}
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<!--根据用户 id 获取角色 ID 列表-->
|
||||||
|
<select id="getRoleIdsByUserId" resultType="java.lang.String">
|
||||||
|
SELECT roleid
|
||||||
|
FROM sys_role_users
|
||||||
|
WHERE userid = #{id}
|
||||||
|
</select>
|
||||||
<!--根据 角色id和用户id 删除系统角色用户对照 (admin除外)-->
|
<!--根据 角色id和用户id 删除系统角色用户对照 (admin除外)-->
|
||||||
<delete id="deleteRoleUsers">
|
<delete id="deleteRoleUsers">
|
||||||
delete from sys_role_users where userid !=(select u.id from sys_user u where u.account="admin") and roleid=#{roleid} and userid=#{urserid}
|
delete from sys_role_users where userid !=(select u.id from sys_user u where u.account="admin") and roleid=#{roleid} and userid=#{urserid}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user