完成参数配置
parent
35a01cbf29
commit
d2fa839d3c
@ -1,48 +1,48 @@
|
|||||||
package com.ruoyi.system.service;
|
package com.ruoyi.system.service;
|
||||||
|
|
||||||
import com.ruoyi.common.core.domain.model.LoginUser;
|
import com.ruoyi.common.core.domain.model.LoginUser;
|
||||||
import com.ruoyi.system.domain.SysUserOnline;
|
import com.ruoyi.system.domain.SysUserOnline;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 在线用户 服务层
|
* 在线用户 服务层
|
||||||
*
|
*
|
||||||
* @author ruoyi
|
* @author ruoyi
|
||||||
*/
|
*/
|
||||||
public interface ISysUserOnlineService
|
public interface ISysUserOnlineService
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* 通过登录地址查询信息
|
* 通过登录地址查询信息
|
||||||
*
|
*
|
||||||
* @param ipaddr 登录地址
|
* @param ipaddr 登录地址
|
||||||
* @param user 用户信息
|
* @param user 用户信息
|
||||||
* @return 在线用户信息
|
* @return 在线用户信息
|
||||||
*/
|
*/
|
||||||
public SysUserOnline selectOnlineByIpaddr(String ipaddr, LoginUser user);
|
public SysUserOnline selectOnlineByIpaddr(String ipaddr, LoginUser user);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 通过用户名称查询信息
|
* 通过用户名称查询信息
|
||||||
*
|
*
|
||||||
* @param userName 用户名称
|
* @param userName 用户名称
|
||||||
* @param user 用户信息
|
* @param user 用户信息
|
||||||
* @return 在线用户信息
|
* @return 在线用户信息
|
||||||
*/
|
*/
|
||||||
public SysUserOnline selectOnlineByUserName(String userName, LoginUser user);
|
public SysUserOnline selectOnlineByUserName(String userName, LoginUser user);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 通过登录地址/用户名称查询信息
|
* 通过登录地址/用户名称查询信息
|
||||||
*
|
*
|
||||||
* @param ipaddr 登录地址
|
* @param ipaddr 登录地址
|
||||||
* @param userName 用户名称
|
* @param userName 用户名称
|
||||||
* @param user 用户信息
|
* @param user 用户信息
|
||||||
* @return 在线用户信息
|
* @return 在线用户信息
|
||||||
*/
|
*/
|
||||||
public SysUserOnline selectOnlineByInfo(String ipaddr, String userName, LoginUser user);
|
public SysUserOnline selectOnlineByInfo(String ipaddr, String userName, LoginUser user);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 设置在线用户信息
|
* 设置在线用户信息
|
||||||
*
|
*
|
||||||
* @param user 用户信息
|
* @param user 用户信息
|
||||||
* @return 在线用户
|
* @return 在线用户
|
||||||
*/
|
*/
|
||||||
public SysUserOnline loginUserToUserOnline(LoginUser user);
|
public SysUserOnline loginUserToUserOnline(LoginUser user);
|
||||||
}
|
}
|
||||||
@ -1,35 +1,35 @@
|
|||||||
package com.ruoyi.system.domain;
|
package com.ruoyi.system.domain;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 当前在线会话
|
* 当前在线会话
|
||||||
*
|
*
|
||||||
* @author ruoyi
|
* @author ruoyi
|
||||||
*/
|
*/
|
||||||
public class SysUserOnline
|
public class SysUserOnline
|
||||||
{
|
{
|
||||||
/** 会话编号 */
|
/** 会话编号 */
|
||||||
private String tokenId;
|
private String tokenId;
|
||||||
|
|
||||||
/** 部门名称 */
|
/** 部门名称 */
|
||||||
private String deptName;
|
private String deptName;
|
||||||
|
|
||||||
/** 用户名称 */
|
/** 用户名称 */
|
||||||
private String userName;
|
private String userName;
|
||||||
|
|
||||||
/** 登录IP地址 */
|
/** 登录IP地址 */
|
||||||
private String ipaddr;
|
private String ipaddr;
|
||||||
|
|
||||||
/** 登录地址 */
|
/** 登录地址 */
|
||||||
private String loginLocation;
|
private String loginLocation;
|
||||||
|
|
||||||
/** 浏览器类型 */
|
/** 浏览器类型 */
|
||||||
private String browser;
|
private String browser;
|
||||||
|
|
||||||
/** 操作系统 */
|
/** 操作系统 */
|
||||||
private String os;
|
private String os;
|
||||||
|
|
||||||
/** 登录时间 */
|
/** 登录时间 */
|
||||||
private Long loginTime;
|
private Long loginTime;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -1,86 +1,86 @@
|
|||||||
package com.ruoyi.system.service.impl;
|
package com.ruoyi.system.service.impl;
|
||||||
|
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import com.ruoyi.common.core.domain.model.LoginUser;
|
import com.ruoyi.common.core.domain.model.LoginUser;
|
||||||
import com.ruoyi.common.utils.StringUtils;
|
import com.ruoyi.common.utils.StringUtils;
|
||||||
import com.ruoyi.system.domain.SysUserOnline;
|
import com.ruoyi.system.domain.SysUserOnline;
|
||||||
import com.ruoyi.system.service.ISysUserOnlineService;
|
import com.ruoyi.system.service.ISysUserOnlineService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 在线用户 服务层处理
|
* 在线用户 服务层处理
|
||||||
*
|
*
|
||||||
* @author ruoyi
|
* @author ruoyi
|
||||||
*/
|
*/
|
||||||
@Service
|
@Service
|
||||||
public class SysUserOnlineServiceImpl implements ISysUserOnlineService {
|
public class SysUserOnlineServiceImpl implements ISysUserOnlineService {
|
||||||
/**
|
/**
|
||||||
* 通过登录地址查询信息
|
* 通过登录地址查询信息
|
||||||
*
|
*
|
||||||
* @param ipaddr 登录地址
|
* @param ipaddr 登录地址
|
||||||
* @param user 用户信息
|
* @param user 用户信息
|
||||||
* @return 在线用户信息
|
* @return 在线用户信息
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public SysUserOnline selectOnlineByIpaddr(String ipaddr, LoginUser user) {
|
public SysUserOnline selectOnlineByIpaddr(String ipaddr, LoginUser user) {
|
||||||
if (StringUtils.equals(ipaddr, user.getIpaddr())) {
|
if (StringUtils.equals(ipaddr, user.getIpaddr())) {
|
||||||
return loginUserToUserOnline(user);
|
return loginUserToUserOnline(user);
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 通过用户名称查询信息
|
* 通过用户名称查询信息
|
||||||
*
|
*
|
||||||
* @param userName 用户名称
|
* @param userName 用户名称
|
||||||
* @param user 用户信息
|
* @param user 用户信息
|
||||||
* @return 在线用户信息
|
* @return 在线用户信息
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public SysUserOnline selectOnlineByUserName(String userName, LoginUser user) {
|
public SysUserOnline selectOnlineByUserName(String userName, LoginUser user) {
|
||||||
if (StringUtils.equals(userName, user.getUsername())) {
|
if (StringUtils.equals(userName, user.getUsername())) {
|
||||||
return loginUserToUserOnline(user);
|
return loginUserToUserOnline(user);
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 通过登录地址/用户名称查询信息
|
* 通过登录地址/用户名称查询信息
|
||||||
*
|
*
|
||||||
* @param ipaddr 登录地址
|
* @param ipaddr 登录地址
|
||||||
* @param userName 用户名称
|
* @param userName 用户名称
|
||||||
* @param user 用户信息
|
* @param user 用户信息
|
||||||
* @return 在线用户信息
|
* @return 在线用户信息
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public SysUserOnline selectOnlineByInfo(String ipaddr, String userName, LoginUser user) {
|
public SysUserOnline selectOnlineByInfo(String ipaddr, String userName, LoginUser user) {
|
||||||
if (StringUtils.equals(ipaddr, user.getIpaddr()) && StringUtils.equals(userName, user.getUsername())) {
|
if (StringUtils.equals(ipaddr, user.getIpaddr()) && StringUtils.equals(userName, user.getUsername())) {
|
||||||
return loginUserToUserOnline(user);
|
return loginUserToUserOnline(user);
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 设置在线用户信息
|
* 设置在线用户信息
|
||||||
*
|
*
|
||||||
* @param user 用户信息
|
* @param user 用户信息
|
||||||
* @return 在线用户
|
* @return 在线用户
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public SysUserOnline loginUserToUserOnline(LoginUser user) {
|
public SysUserOnline loginUserToUserOnline(LoginUser user) {
|
||||||
if (StringUtils.isNull(user) || StringUtils.isNull(user.getUser())) {
|
if (StringUtils.isNull(user) || StringUtils.isNull(user.getUser())) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
SysUserOnline sysUserOnline = new SysUserOnline();
|
SysUserOnline sysUserOnline = new SysUserOnline();
|
||||||
sysUserOnline.setTokenId(user.getToken());
|
sysUserOnline.setTokenId(user.getToken());
|
||||||
sysUserOnline.setUserName(user.getUsername());
|
sysUserOnline.setUserName(user.getUsername());
|
||||||
sysUserOnline.setIpaddr(user.getIpaddr());
|
sysUserOnline.setIpaddr(user.getIpaddr());
|
||||||
sysUserOnline.setLoginLocation(user.getLoginLocation());
|
sysUserOnline.setLoginLocation(user.getLoginLocation());
|
||||||
sysUserOnline.setBrowser(user.getBrowser());
|
sysUserOnline.setBrowser(user.getBrowser());
|
||||||
sysUserOnline.setOs(user.getOs());
|
sysUserOnline.setOs(user.getOs());
|
||||||
sysUserOnline.setLoginTime(user.getLoginTime());
|
sysUserOnline.setLoginTime(user.getLoginTime());
|
||||||
if (StringUtils.isNotNull(user.getUser().getDept())) {
|
if (StringUtils.isNotNull(user.getUser().getDept())) {
|
||||||
sysUserOnline.setDeptName(user.getUser().getDept().getDeptName());
|
sysUserOnline.setDeptName(user.getUser().getDept().getDeptName());
|
||||||
}
|
}
|
||||||
return sysUserOnline;
|
return sysUserOnline;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,116 +0,0 @@
|
|||||||
package com.ruoyi.web.controller.system;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.security.access.prepost.PreAuthorize;
|
|
||||||
import org.springframework.validation.annotation.Validated;
|
|
||||||
import org.springframework.web.bind.annotation.DeleteMapping;
|
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
|
||||||
import org.springframework.web.bind.annotation.PathVariable;
|
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
|
||||||
import org.springframework.web.bind.annotation.PutMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
|
||||||
import com.ruoyi.common.annotation.Log;
|
|
||||||
import com.ruoyi.common.annotation.RepeatSubmit;
|
|
||||||
import com.ruoyi.common.constant.UserConstants;
|
|
||||||
import com.ruoyi.common.core.controller.BaseController;
|
|
||||||
import com.ruoyi.common.core.domain.AjaxResult;
|
|
||||||
import com.ruoyi.common.core.page.TableDataInfo;
|
|
||||||
import com.ruoyi.common.enums.BusinessType;
|
|
||||||
import com.ruoyi.common.utils.SecurityUtils;
|
|
||||||
import com.ruoyi.common.utils.poi.ExcelUtil;
|
|
||||||
import com.ruoyi.system.domain.SysConfig;
|
|
||||||
import com.ruoyi.system.service.ISysConfigService;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 参数配置 信息操作处理
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
*/
|
|
||||||
@RestController
|
|
||||||
@RequestMapping("/system/config")
|
|
||||||
public class SysConfigController extends BaseController {
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private ISysConfigService configService;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取参数配置列表
|
|
||||||
*/
|
|
||||||
@PreAuthorize("@ss.hasPermi('system:config:list')")
|
|
||||||
@GetMapping("/list")
|
|
||||||
public TableDataInfo list(SysConfig config) {
|
|
||||||
startPage();
|
|
||||||
List<SysConfig> list = configService.selectConfigList(config);
|
|
||||||
return getDataTable(list);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Log(title = "参数管理", businessType = BusinessType.EXPORT)
|
|
||||||
@PreAuthorize("@ss.hasPermi('system:config:export')")
|
|
||||||
@GetMapping("/export")
|
|
||||||
public AjaxResult export(SysConfig config) {
|
|
||||||
List<SysConfig> list = configService.selectConfigList(config);
|
|
||||||
ExcelUtil<SysConfig> util = new ExcelUtil<SysConfig>(SysConfig.class);
|
|
||||||
return util.exportExcel(list, "参数数据");
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 根据参数编号获取详细信息
|
|
||||||
*/
|
|
||||||
@PreAuthorize("@ss.hasPermi('system:config:query')")
|
|
||||||
@GetMapping(value = "/{configId}")
|
|
||||||
public AjaxResult getInfo(@PathVariable Long configId) {
|
|
||||||
return AjaxResult.success(configService.selectConfigById(configId));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 根据参数键名查询参数值
|
|
||||||
*/
|
|
||||||
@GetMapping(value = "/configKey/{configKey}")
|
|
||||||
public AjaxResult getConfigKey(@PathVariable String configKey) {
|
|
||||||
return AjaxResult.success(configService.selectConfigByKey(configKey));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 新增参数配置
|
|
||||||
*/
|
|
||||||
@PreAuthorize("@ss.hasPermi('system:config:add')")
|
|
||||||
@Log(title = "参数管理", businessType = BusinessType.INSERT)
|
|
||||||
@PostMapping
|
|
||||||
@RepeatSubmit
|
|
||||||
public AjaxResult add(@Validated @RequestBody SysConfig config) {
|
|
||||||
if (UserConstants.NOT_UNIQUE.equals(configService.checkConfigKeyUnique(config))) {
|
|
||||||
return AjaxResult.error("新增参数'" + config.getConfigName() + "'失败,参数键名已存在");
|
|
||||||
}
|
|
||||||
config.setCreateBy(SecurityUtils.getUsername());
|
|
||||||
return toAjax(configService.insertConfig(config));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 修改参数配置
|
|
||||||
*/
|
|
||||||
@PreAuthorize("@ss.hasPermi('system:config:edit')")
|
|
||||||
@Log(title = "参数管理", businessType = BusinessType.UPDATE)
|
|
||||||
@PutMapping
|
|
||||||
public AjaxResult edit(@Validated @RequestBody SysConfig config) {
|
|
||||||
if (UserConstants.NOT_UNIQUE.equals(configService.checkConfigKeyUnique(config))) {
|
|
||||||
return AjaxResult.error("修改参数'" + config.getConfigName() + "'失败,参数键名已存在");
|
|
||||||
}
|
|
||||||
config.setUpdateBy(SecurityUtils.getUsername());
|
|
||||||
return toAjax(configService.updateConfig(config));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 删除参数配置
|
|
||||||
*/
|
|
||||||
@PreAuthorize("@ss.hasPermi('system:config:remove')")
|
|
||||||
@Log(title = "参数管理", businessType = BusinessType.DELETE)
|
|
||||||
@DeleteMapping("/{configIds}")
|
|
||||||
public AjaxResult remove(@PathVariable Long[] configIds) {
|
|
||||||
return toAjax(configService.deleteConfigByIds(configIds));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -0,0 +1,33 @@
|
|||||||
|
package cn.iocoder.dashboard.modules.system.controller.config.vo;
|
||||||
|
|
||||||
|
import io.swagger.annotations.ApiModel;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
import static cn.iocoder.dashboard.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
|
||||||
|
|
||||||
|
@ApiModel("参数配置导出 Request VO")
|
||||||
|
@Data
|
||||||
|
public class SysConfigExportReqVO {
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "参数名称", example = "模糊匹配")
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "参数键名", example = "yunai.db.username", notes = "模糊匹配")
|
||||||
|
private String key;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "参数类型", example = "1", notes = "参见 SysConfigTypeEnum 枚举")
|
||||||
|
private Integer type;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "开始时间", example = "2020-10-24")
|
||||||
|
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||||
|
private Date beginTime;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "结束时间", example = "2020-10-24")
|
||||||
|
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||||
|
private Date endTime;
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,36 @@
|
|||||||
|
package cn.iocoder.dashboard.modules.system.controller.config.vo;
|
||||||
|
|
||||||
|
import cn.iocoder.dashboard.common.pojo.PageParam;
|
||||||
|
import io.swagger.annotations.ApiModel;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
import static cn.iocoder.dashboard.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
|
||||||
|
|
||||||
|
@ApiModel("参数配置分页 Request VO")
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
public class SysConfigPageReqVO extends PageParam {
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "参数名称", example = "模糊匹配")
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "参数键名", example = "yunai.db.username", notes = "模糊匹配")
|
||||||
|
private String key;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "参数类型", example = "1", notes = "参见 SysConfigTypeEnum 枚举")
|
||||||
|
private Integer type;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "开始时间", example = "2020-10-24")
|
||||||
|
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||||
|
private Date beginTime;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "结束时间", example = "2020-10-24")
|
||||||
|
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||||
|
private Date endTime;
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,29 @@
|
|||||||
|
package cn.iocoder.dashboard.modules.system.convert.config;
|
||||||
|
|
||||||
|
import cn.iocoder.dashboard.common.pojo.PageResult;
|
||||||
|
import cn.iocoder.dashboard.modules.system.controller.config.vo.SysConfigCreateReqVO;
|
||||||
|
import cn.iocoder.dashboard.modules.system.controller.config.vo.SysConfigExcelVO;
|
||||||
|
import cn.iocoder.dashboard.modules.system.controller.config.vo.SysConfigRespVO;
|
||||||
|
import cn.iocoder.dashboard.modules.system.controller.config.vo.SysConfigUpdateReqVO;
|
||||||
|
import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.config.SysConfigDO;
|
||||||
|
import org.mapstruct.Mapper;
|
||||||
|
import org.mapstruct.factory.Mappers;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Mapper
|
||||||
|
public interface SysConfigConvert {
|
||||||
|
|
||||||
|
SysConfigConvert INSTANCE = Mappers.getMapper(SysConfigConvert.class);
|
||||||
|
|
||||||
|
PageResult<SysConfigRespVO> convertPage(PageResult<SysConfigDO> page);
|
||||||
|
|
||||||
|
SysConfigRespVO convert(SysConfigDO bean);
|
||||||
|
|
||||||
|
SysConfigDO convert(SysConfigCreateReqVO bean);
|
||||||
|
|
||||||
|
SysConfigDO convert(SysConfigUpdateReqVO bean);
|
||||||
|
|
||||||
|
List<SysConfigExcelVO> convertList(List<SysConfigDO> list);
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,36 @@
|
|||||||
|
package cn.iocoder.dashboard.modules.system.dal.mysql.dao.config;
|
||||||
|
|
||||||
|
import cn.iocoder.dashboard.common.pojo.PageResult;
|
||||||
|
import cn.iocoder.dashboard.framework.mybatis.core.mapper.BaseMapperX;
|
||||||
|
import cn.iocoder.dashboard.framework.mybatis.core.query.QueryWrapperX;
|
||||||
|
import cn.iocoder.dashboard.modules.system.controller.config.vo.SysConfigExportReqVO;
|
||||||
|
import cn.iocoder.dashboard.modules.system.controller.config.vo.SysConfigPageReqVO;
|
||||||
|
import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.config.SysConfigDO;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Mapper
|
||||||
|
public interface SysConfigMapper extends BaseMapperX<SysConfigDO> {
|
||||||
|
|
||||||
|
default PageResult<SysConfigDO> selectPage(SysConfigPageReqVO reqVO) {
|
||||||
|
return selectPage(reqVO,
|
||||||
|
new QueryWrapperX<SysConfigDO>().likeIfPresent("name", reqVO.getName())
|
||||||
|
.likeIfPresent("`key`", reqVO.getKey())
|
||||||
|
.eqIfPresent("`type`", reqVO.getType())
|
||||||
|
.betweenIfPresent("create_time", reqVO.getBeginTime(), reqVO.getEndTime()));
|
||||||
|
}
|
||||||
|
|
||||||
|
default SysConfigDO selectByKey(String key) {
|
||||||
|
return selectOne(new QueryWrapper<SysConfigDO>().eq("`key`", key));
|
||||||
|
}
|
||||||
|
|
||||||
|
default List<SysConfigDO> selectList(SysConfigExportReqVO reqVO) {
|
||||||
|
return selectList(new QueryWrapperX<SysConfigDO>().likeIfPresent("name", reqVO.getName())
|
||||||
|
.likeIfPresent("`key`", reqVO.getKey())
|
||||||
|
.eqIfPresent("`type`", reqVO.getType())
|
||||||
|
.betweenIfPresent("create_time", reqVO.getBeginTime(), reqVO.getEndTime()));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,116 @@
|
|||||||
|
package cn.iocoder.dashboard.modules.system.service.config.impl;
|
||||||
|
|
||||||
|
import cn.iocoder.dashboard.common.exception.util.ServiceExceptionUtil;
|
||||||
|
import cn.iocoder.dashboard.common.pojo.PageResult;
|
||||||
|
import cn.iocoder.dashboard.modules.system.controller.config.vo.SysConfigCreateReqVO;
|
||||||
|
import cn.iocoder.dashboard.modules.system.controller.config.vo.SysConfigExportReqVO;
|
||||||
|
import cn.iocoder.dashboard.modules.system.controller.config.vo.SysConfigPageReqVO;
|
||||||
|
import cn.iocoder.dashboard.modules.system.controller.config.vo.SysConfigUpdateReqVO;
|
||||||
|
import cn.iocoder.dashboard.modules.system.convert.config.SysConfigConvert;
|
||||||
|
import cn.iocoder.dashboard.modules.system.dal.mysql.dao.config.SysConfigMapper;
|
||||||
|
import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.config.SysConfigDO;
|
||||||
|
import cn.iocoder.dashboard.modules.system.enums.config.SysConfigTypeEnum;
|
||||||
|
import cn.iocoder.dashboard.modules.system.service.config.SysConfigService;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import static cn.iocoder.dashboard.modules.system.enums.SysErrorCodeConstants.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 参数配置 Service 实现类
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
@Slf4j
|
||||||
|
public class SysConfigServiceImpl implements SysConfigService {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private SysConfigMapper configMapper;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PageResult<SysConfigDO> getConfigPage(SysConfigPageReqVO reqVO) {
|
||||||
|
return configMapper.selectPage(reqVO);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<SysConfigDO> getConfigList(SysConfigExportReqVO reqVO) {
|
||||||
|
return configMapper.selectList(reqVO);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SysConfigDO getConfig(Long id) {
|
||||||
|
return configMapper.selectById(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SysConfigDO getConfigByKey(String key) {
|
||||||
|
return configMapper.selectByKey(key);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Long createConfig(SysConfigCreateReqVO reqVO) {
|
||||||
|
// 校验正确性
|
||||||
|
checkCreateOrUpdate(null, reqVO.getKey());
|
||||||
|
// 插入参数配置
|
||||||
|
SysConfigDO config = SysConfigConvert.INSTANCE.convert(reqVO);
|
||||||
|
config.setType(SysConfigTypeEnum.CUSTOM.getType());
|
||||||
|
configMapper.insert(config);
|
||||||
|
return config.getId();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateConfig(SysConfigUpdateReqVO reqVO) {
|
||||||
|
// 校验正确性
|
||||||
|
checkCreateOrUpdate(reqVO.getId(), null); // 不允许更新 key
|
||||||
|
// 更新参数配置
|
||||||
|
SysConfigDO updateObj = SysConfigConvert.INSTANCE.convert(reqVO);
|
||||||
|
configMapper.updateById(updateObj);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deleteConfig(Long id) {
|
||||||
|
// 校验配置存在
|
||||||
|
SysConfigDO config = checkConfigExists(id);
|
||||||
|
// 内置配置,不允许删除
|
||||||
|
if (SysConfigTypeEnum.SYSTEM.getType().equals(config.getType())) {
|
||||||
|
throw ServiceExceptionUtil.exception(CONFIG_CAN_NOT_DELETE_SYSTEM_TYPE);
|
||||||
|
}
|
||||||
|
// 删除
|
||||||
|
configMapper.deleteById(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void checkCreateOrUpdate(Long id, String key) {
|
||||||
|
// 校验自己存在
|
||||||
|
checkConfigExists(id);
|
||||||
|
// 校验参数配置 key 的唯一性
|
||||||
|
checkConfigKeyUnique(id, key);
|
||||||
|
}
|
||||||
|
|
||||||
|
private SysConfigDO checkConfigExists(Long id) {
|
||||||
|
if (id == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
SysConfigDO config = configMapper.selectById(id);
|
||||||
|
if (config == null) {
|
||||||
|
throw ServiceExceptionUtil.exception(CONFIG_NOT_FOUND);
|
||||||
|
}
|
||||||
|
return config;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void checkConfigKeyUnique(Long id, String key) {
|
||||||
|
SysConfigDO config = configMapper.selectByKey(key);
|
||||||
|
if (config == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// 如果 id 为空,说明不用比较是否为相同 id 的参数配置
|
||||||
|
if (id == null) {
|
||||||
|
throw ServiceExceptionUtil.exception(CONFIG_NAME_DUPLICATE);
|
||||||
|
}
|
||||||
|
if (!config.getId().equals(id)) {
|
||||||
|
throw ServiceExceptionUtil.exception(CONFIG_NAME_DUPLICATE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue