添加文件存储记录和序列号生成规则的操作画面

This commit is contained in:
AlanScipio
2024-02-20 13:27:51 +08:00
parent eae6443f11
commit e4a49e6b1c
39 changed files with 1699 additions and 531 deletions

View File

@@ -1,15 +1,5 @@
package com.ruoyi.system.controller;
import java.util.Arrays;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
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.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.core.utils.file.FileTypeUtils;
@@ -21,26 +11,30 @@ import com.ruoyi.common.log.enums.BusinessType;
import com.ruoyi.common.security.service.TokenService;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.system.api.RemoteFileService;
import com.ruoyi.system.api.domain.SysFile;
import com.ruoyi.system.api.domain.SysFileInfo;
import com.ruoyi.system.api.domain.SysUser;
import com.ruoyi.system.api.model.LoginUser;
import com.ruoyi.system.service.ISysUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.util.Arrays;
/**
* 个人信息 业务处理
*
*
* @author ruoyi
*/
@RestController
@RequestMapping("/user/profile")
public class SysProfileController extends BaseController
{
public class SysProfileController extends BaseController {
@Autowired
private ISysUserService userService;
@Autowired
private TokenService tokenService;
@Autowired
private RemoteFileService remoteFileService;
@@ -48,8 +42,7 @@ public class SysProfileController extends BaseController
* 个人信息
*/
@GetMapping
public AjaxResult profile()
{
public AjaxResult profile() {
String username = SecurityUtils.getUsername();
SysUser user = userService.selectUserByUserName(username);
AjaxResult ajax = AjaxResult.success(user);
@@ -63,24 +56,20 @@ public class SysProfileController extends BaseController
*/
@Log(title = "个人信息", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult updateProfile(@RequestBody SysUser user)
{
public AjaxResult updateProfile(@RequestBody SysUser user) {
LoginUser loginUser = SecurityUtils.getLoginUser();
SysUser currentUser = loginUser.getSysUser();
currentUser.setNickName(user.getNickName());
currentUser.setEmail(user.getEmail());
currentUser.setPhonenumber(user.getPhonenumber());
currentUser.setSex(user.getSex());
if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(currentUser))
{
if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(currentUser)) {
return error("修改用户'" + loginUser.getUsername() + "'失败,手机号码已存在");
}
if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(currentUser))
{
if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(currentUser)) {
return error("修改用户'" + loginUser.getUsername() + "'失败,邮箱账号已存在");
}
if (userService.updateUserProfile(currentUser) > 0)
{
if (userService.updateUserProfile(currentUser) > 0) {
// 更新缓存用户信息
tokenService.setLoginUser(loginUser);
return success();
@@ -93,22 +82,18 @@ public class SysProfileController extends BaseController
*/
@Log(title = "个人信息", businessType = BusinessType.UPDATE)
@PutMapping("/updatePwd")
public AjaxResult updatePwd(String oldPassword, String newPassword)
{
public AjaxResult updatePwd(String oldPassword, String newPassword) {
String username = SecurityUtils.getUsername();
SysUser user = userService.selectUserByUserName(username);
String password = user.getPassword();
if (!SecurityUtils.matchesPassword(oldPassword, password))
{
if (!SecurityUtils.matchesPassword(oldPassword, password)) {
return error("修改密码失败,旧密码错误");
}
if (SecurityUtils.matchesPassword(newPassword, password))
{
if (SecurityUtils.matchesPassword(newPassword, password)) {
return error("新密码不能与旧密码相同");
}
newPassword = SecurityUtils.encryptPassword(newPassword);
if (userService.resetUserPwd(username, newPassword) > 0)
{
if (userService.resetUserPwd(username, newPassword) > 0) {
// 更新缓存用户密码
LoginUser loginUser = SecurityUtils.getLoginUser();
loginUser.getSysUser().setPassword(newPassword);
@@ -117,30 +102,25 @@ public class SysProfileController extends BaseController
}
return error("修改密码异常,请联系管理员");
}
/**
* 头像上传
*/
@Log(title = "用户头像", businessType = BusinessType.UPDATE)
@PostMapping("/avatar")
public AjaxResult avatar(@RequestParam("avatarfile") MultipartFile file)
{
if (!file.isEmpty())
{
public AjaxResult avatar(@RequestParam("avatarfile") MultipartFile file) {
if (!file.isEmpty()) {
LoginUser loginUser = SecurityUtils.getLoginUser();
String extension = FileTypeUtils.getExtension(file);
if (!StringUtils.equalsAnyIgnoreCase(extension, MimeTypeUtils.IMAGE_EXTENSION))
{
if (!StringUtils.equalsAnyIgnoreCase(extension, MimeTypeUtils.IMAGE_EXTENSION)) {
return error("文件格式不正确,请上传" + Arrays.toString(MimeTypeUtils.IMAGE_EXTENSION) + "格式");
}
R<SysFile> fileResult = remoteFileService.upload(file);
if (StringUtils.isNull(fileResult) || StringUtils.isNull(fileResult.getData()))
{
R<SysFileInfo> fileResult = remoteFileService.upload(file);
if (StringUtils.isNull(fileResult) || StringUtils.isNull(fileResult.getData())) {
return error("文件服务异常,请联系管理员");
}
String url = fileResult.getData().getUrl();
if (userService.updateUserAvatar(loginUser.getUsername(), url))
{
if (userService.updateUserAvatar(loginUser.getUsername(), url)) {
AjaxResult ajax = AjaxResult.success();
ajax.put("imgUrl", url);
// 更新缓存用户头像

View File

@@ -0,0 +1,101 @@
package com.ruoyi.system.controller;
import com.ruoyi.common.core.utils.poi.ExcelUtil;
import com.ruoyi.common.core.web.controller.BaseController;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.core.web.page.TableDataInfo;
import com.ruoyi.common.log.annotation.Log;
import com.ruoyi.common.log.enums.BusinessType;
import com.ruoyi.common.security.annotation.RequiresPermissions;
import com.ruoyi.common.services.domain.SysSeqRule;
import com.ruoyi.system.service.ISysSeqRuleService;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 序列号生成规则Controller
*
* @author ryas
* created on 2024-02-20
*/
@RestController
@RequestMapping("/SeqRule")
public class SysSeqRuleController extends BaseController {
@Autowired
private ISysSeqRuleService sysSeqRuleService;
/**
* 查询序列号生成规则列表
*/
@RequiresPermissions("system:SeqRule:list")
@GetMapping("/list")
public TableDataInfo list(SysSeqRule sysSeqRule) {
startPage();
List<SysSeqRule> list = sysSeqRuleService.selectSysSeqRuleList(sysSeqRule);
return getDataTable(list);
}
/**
* 导出序列号生成规则列表
*/
@RequiresPermissions("system:SeqRule:export")
@Log(title = "序列号生成规则", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, SysSeqRule sysSeqRule) {
List<SysSeqRule> list = sysSeqRuleService.selectSysSeqRuleList(sysSeqRule);
ExcelUtil<SysSeqRule> util = new ExcelUtil<>(SysSeqRule.class);
util.exportExcel(response, list, "序列号生成规则数据");
}
/**
* 获取序列号生成规则详细信息
*/
@RequiresPermissions("system:SeqRule:query")
@GetMapping(value = "/{ruleId}")
public AjaxResult getInfo(@PathVariable("ruleId") Long ruleId) {
return success(sysSeqRuleService.selectSysSeqRuleByRuleId(ruleId));
}
/**
* 新增序列号生成规则
*/
@RequiresPermissions("system:SeqRule:add")
@Log(title = "序列号生成规则", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody SysSeqRule sysSeqRule) {
return toAjax(sysSeqRuleService.insertSysSeqRule(sysSeqRule));
}
/**
* 修改序列号生成规则
*/
@RequiresPermissions("system:SeqRule:edit")
@Log(title = "序列号生成规则", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody SysSeqRule sysSeqRule) {
return toAjax(sysSeqRuleService.updateSysSeqRule(sysSeqRule));
}
/**
* 删除序列号生成规则
*/
@RequiresPermissions("system:SeqRule:remove")
@Log(title = "序列号生成规则", businessType = BusinessType.DELETE)
@DeleteMapping("/{ruleIds}")
public AjaxResult remove(@PathVariable Long[] ruleIds) {
return toAjax(sysSeqRuleService.deleteSysSeqRuleByRuleIds(ruleIds));
}
/**
* 规则启用状态修改
*/
@RequiresPermissions("system:SeqRule:edit")
@Log(title = "序列号生成规则启用状态修改", businessType = BusinessType.UPDATE)
@PutMapping("/changeRuleEnableFlag")
public AjaxResult changeRuleEnableFlag(@RequestBody SysSeqRule sysSeqRule) {
return toAjax(sysSeqRuleService.updateEnableFlag(sysSeqRule));
}
}

View File

@@ -1,76 +1,76 @@
package com.ruoyi.system.mapper;
import java.util.List;
import com.ruoyi.system.domain.SysConfig;
import java.util.List;
/**
* 参数配置 数据层
*
*
* @author ruoyi
*/
public interface SysConfigMapper
{
public interface SysConfigMapper {
/**
* 查询参数配置信息
*
*
* @param config 参数配置信息
* @return 参数配置信息
*/
public SysConfig selectConfig(SysConfig config);
SysConfig selectConfig(SysConfig config);
/**
* 通过ID查询配置
*
*
* @param configId 参数ID
* @return 参数配置信息
*/
public SysConfig selectConfigById(Long configId);
SysConfig selectConfigById(Long configId);
/**
* 查询参数配置列表
*
*
* @param config 参数配置信息
* @return 参数配置集合
*/
public List<SysConfig> selectConfigList(SysConfig config);
List<SysConfig> selectConfigList(SysConfig config);
/**
* 根据键名查询参数配置信息
*
*
* @param configKey 参数键名
* @return 参数配置信息
*/
public SysConfig checkConfigKeyUnique(String configKey);
SysConfig checkConfigKeyUnique(String configKey);
/**
* 新增参数配置
*
*
* @param config 参数配置信息
* @return 结果
*/
public int insertConfig(SysConfig config);
int insertConfig(SysConfig config);
/**
* 修改参数配置
*
*
* @param config 参数配置信息
* @return 结果
*/
public int updateConfig(SysConfig config);
int updateConfig(SysConfig config);
/**
* 删除参数配置
*
*
* @param configId 参数ID
* @return 结果
*/
public int deleteConfigById(Long configId);
int deleteConfigById(Long configId);
/**
* 批量删除参数信息
*
*
* @param configIds 需要删除的参数ID
* @return 结果
*/
public int deleteConfigByIds(Long[] configIds);
int deleteConfigByIds(Long[] configIds);
}

View File

@@ -1,82 +1,82 @@
package com.ruoyi.system.service;
import java.util.List;
import com.ruoyi.system.domain.SysConfig;
import java.util.List;
/**
* 参数配置 服务层
*
*
* @author ruoyi
*/
public interface ISysConfigService
{
public interface ISysConfigService {
/**
* 查询参数配置信息
*
*
* @param configId 参数配置ID
* @return 参数配置信息
*/
public SysConfig selectConfigById(Long configId);
SysConfig selectConfigById(Long configId);
/**
* 根据键名查询参数配置信息
*
*
* @param configKey 参数键名
* @return 参数键值
*/
public String selectConfigByKey(String configKey);
String selectConfigByKey(String configKey);
/**
* 查询参数配置列表
*
*
* @param config 参数配置信息
* @return 参数配置集合
*/
public List<SysConfig> selectConfigList(SysConfig config);
List<SysConfig> selectConfigList(SysConfig config);
/**
* 新增参数配置
*
*
* @param config 参数配置信息
* @return 结果
*/
public int insertConfig(SysConfig config);
int insertConfig(SysConfig config);
/**
* 修改参数配置
*
*
* @param config 参数配置信息
* @return 结果
*/
public int updateConfig(SysConfig config);
int updateConfig(SysConfig config);
/**
* 批量删除参数信息
*
*
* @param configIds 需要删除的参数ID
*/
public void deleteConfigByIds(Long[] configIds);
void deleteConfigByIds(Long[] configIds);
/**
* 加载参数缓存数据
*/
public void loadingConfigCache();
void loadingConfigCache();
/**
* 清空参数缓存数据
*/
public void clearConfigCache();
void clearConfigCache();
/**
* 重置参数缓存数据
*/
public void resetConfigCache();
void resetConfigCache();
/**
* 校验参数键名是否唯一
*
*
* @param config 参数信息
* @return 结果
*/
public boolean checkConfigKeyUnique(SysConfig config);
boolean checkConfigKeyUnique(SysConfig config);
}

View File

@@ -0,0 +1,69 @@
package com.ruoyi.system.service;
import com.ruoyi.common.services.domain.SysSeqRule;
import java.util.List;
/**
* 序列号生成规则Service接口
*
* @author ryas
* created on 2024-02-20
*/
public interface ISysSeqRuleService {
/**
* 查询序列号生成规则
*
* @param ruleId 序列号生成规则主键
* @return 序列号生成规则
*/
SysSeqRule selectSysSeqRuleByRuleId(Long ruleId);
/**
* 查询序列号生成规则列表
*
* @param sysSeqRule 序列号生成规则
* @return 序列号生成规则集合
*/
List<SysSeqRule> selectSysSeqRuleList(SysSeqRule sysSeqRule);
/**
* 新增序列号生成规则
*
* @param sysSeqRule 序列号生成规则
* @return 结果
*/
int insertSysSeqRule(SysSeqRule sysSeqRule);
/**
* 修改序列号生成规则
*
* @param sysSeqRule 序列号生成规则
* @return 结果
*/
int updateSysSeqRule(SysSeqRule sysSeqRule);
/**
* 批量删除序列号生成规则
*
* @param ruleIds 需要删除的序列号生成规则主键集合
* @return 结果
*/
int deleteSysSeqRuleByRuleIds(Long[] ruleIds);
/**
* 删除序列号生成规则信息
*
* @param ruleId 序列号生成规则主键
* @return 结果
*/
int deleteSysSeqRuleByRuleId(Long ruleId);
/**
* 更新序列号生成规则启用状态
*
* @param rule 序列号生成规则
* @return 结果
*/
int updateEnableFlag(SysSeqRule rule);
}

View File

@@ -10,7 +10,7 @@ import com.ruoyi.system.domain.SysConfig;
import com.ruoyi.system.mapper.SysConfigMapper;
import com.ruoyi.system.service.ISysConfigService;
import jakarta.annotation.PostConstruct;
import org.springframework.beans.factory.annotation.Autowired;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import java.util.Collection;
@@ -23,10 +23,10 @@ import java.util.List;
*/
@Service
public class SysConfigServiceImpl implements ISysConfigService {
@Autowired
@Resource
private SysConfigMapper configMapper;
@Autowired
@Resource
private RedisService redisService;
/**

View File

@@ -0,0 +1,132 @@
package com.ruoyi.system.service.impl;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.services.domain.SysSeqRule;
import com.ruoyi.common.services.mapper.SysSeqRuleDynamicSqlSupport;
import com.ruoyi.common.services.mapper.SysSeqRuleMapper;
import com.ruoyi.system.service.ISysSeqRuleService;
import org.mybatis.dynamic.sql.SqlBuilder;
import org.mybatis.dynamic.sql.delete.render.DeleteStatementProvider;
import org.mybatis.dynamic.sql.render.RenderingStrategies;
import org.mybatis.dynamic.sql.select.SelectDSLCompleter;
import org.mybatis.dynamic.sql.select.render.SelectStatementProvider;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Optional;
/**
* 序列号生成规则Service业务层处理
*
* @author ryas
* created on 2024-02-20
*/
@Service
public class SysSeqRuleServiceImpl implements ISysSeqRuleService {
@Autowired
private SysSeqRuleMapper sysSeqRuleMapper;
/**
* 查询序列号生成规则
*
* @param ruleId 序列号生成规则主键
* @return 序列号生成规则
*/
@Override
public SysSeqRule selectSysSeqRuleByRuleId(Long ruleId) {
Optional<SysSeqRule> result = sysSeqRuleMapper.selectOne(dsl -> dsl.where(SysSeqRuleDynamicSqlSupport.ruleId, SqlBuilder.isEqualTo(ruleId)));
return result.orElse(null);
}
/**
* 查询序列号生成规则列表
*
* @param sysSeqRule 序列号生成规则
* @return 序列号生成规则
*/
@Override
public List<SysSeqRule> selectSysSeqRuleList(SysSeqRule sysSeqRule) {
if (StringUtils.isNotBlank(sysSeqRule.getRuleName()) || StringUtils.isNotBlank(sysSeqRule.getSeqDistCd())) {
//条件查询
SelectStatementProvider provider = SqlBuilder.select(SysSeqRuleMapper.selectList)
.from(SysSeqRuleDynamicSqlSupport.sysSeqRule)
.where(SysSeqRuleDynamicSqlSupport.seqDistCd, SqlBuilder.isEqualToWhenPresent(sysSeqRule.getSeqDistCd()))
.and(SysSeqRuleDynamicSqlSupport.ruleName, SqlBuilder.isLikeWhenPresent(sysSeqRule.getRuleName() == null ? null : "%" + sysSeqRule.getRuleName() + "%"))
.build()
.render(RenderingStrategies.MYBATIS3);
return sysSeqRuleMapper.selectMany(provider);
} else {
//全部查询
return sysSeqRuleMapper.select(SelectDSLCompleter.allRows());
}
}
/**
* 新增序列号生成规则
*
* @param sysSeqRule 序列号生成规则
* @return 结果
*/
@Transactional
@Override
public int insertSysSeqRule(SysSeqRule sysSeqRule) {
return sysSeqRuleMapper.insertSelective(sysSeqRule);
}
/**
* 修改序列号生成规则
*
* @param sysSeqRule 序列号生成规则
* @return 结果
*/
@Transactional
@Override
public int updateSysSeqRule(SysSeqRule sysSeqRule) {
return sysSeqRuleMapper.updateByPrimaryKeySelective(sysSeqRule);
}
/**
* 批量删除序列号生成规则
*
* @param ruleIds 需要删除的序列号生成规则主键
* @return 结果
*/
@Transactional
@Override
public int deleteSysSeqRuleByRuleIds(Long[] ruleIds) {
DeleteStatementProvider provider = SqlBuilder.deleteFrom(SysSeqRuleDynamicSqlSupport.sysSeqRule)
.where(SysSeqRuleDynamicSqlSupport.ruleId, SqlBuilder.isIn(ruleIds))
.build()
.render(RenderingStrategies.MYBATIS3);
return sysSeqRuleMapper.delete(provider);
}
/**
* 删除序列号生成规则信息
*
* @param ruleId 序列号生成规则主键
* @return 结果
*/
@Transactional
@Override
public int deleteSysSeqRuleByRuleId(Long ruleId) {
return sysSeqRuleMapper.deleteByPrimaryKey(ruleId);
}
/**
* 更新序列号生成规则启用状态
*
* @param rule 序列号生成规则
* @return 结果
*/
@Transactional
@Override
public int updateEnableFlag(SysSeqRule rule) {
SysSeqRule updateRule = new SysSeqRule();
updateRule.setRuleId(rule.getRuleId());
updateRule.setEnableFlag(rule.getEnableFlag());
return sysSeqRuleMapper.updateByPrimaryKeySelective(updateRule);
}
}