提交 d0f564d4 authored 作者: junjie's avatar junjie

feat(user):创建用户支持设置密码;用户表单UI字段名fix

上级 9bf1c528
...@@ -26,6 +26,7 @@ import org.springframework.beans.factory.annotation.Value; ...@@ -26,6 +26,7 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.CacheEvict;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -48,7 +49,7 @@ public class SysUserService { ...@@ -48,7 +49,7 @@ public class SysUserService {
private ExtSysUserMapper extSysUserMapper; private ExtSysUserMapper extSysUserMapper;
public List<SysUserGridResponse> query(BaseGridRequest request){ public List<SysUserGridResponse> query(BaseGridRequest request) {
GridExample gridExample = request.convertExample(); GridExample gridExample = request.convertExample();
List<SysUserGridResponse> lists = extSysUserMapper.query(gridExample); List<SysUserGridResponse> lists = extSysUserMapper.query(gridExample);
lists.forEach(item -> { lists.forEach(item -> {
...@@ -60,18 +61,18 @@ public class SysUserService { ...@@ -60,18 +61,18 @@ public class SysUserService {
} }
@Transactional @Transactional
public int save(SysUserCreateRequest request){ public int save(SysUserCreateRequest request) {
SysUser user = BeanUtils.copyBean(new SysUser(), request); SysUser user = BeanUtils.copyBean(new SysUser(), request);
long now = System.currentTimeMillis(); long now = System.currentTimeMillis();
user.setCreateTime(now); user.setCreateTime(now);
user.setUpdateTime(now); user.setUpdateTime(now);
user.setIsAdmin(false); user.setIsAdmin(false);
if (ObjectUtils.isEmpty(user.getPassword()) || StringUtils.equals(user.getPassword(), DEFAULT_PWD)){ if (ObjectUtils.isEmpty(user.getPassword()) || StringUtils.equals(user.getPassword(), DEFAULT_PWD)) {
user.setPassword(CodingUtil.md5(DEFAULT_PWD)); user.setPassword(CodingUtil.md5(DEFAULT_PWD));
}else{ } else {
user.setPassword(CodingUtil.md5(user.getPassword())); user.setPassword(CodingUtil.md5(user.getPassword()));
} }
if(StringUtils.isEmpty(user.getLanguage())){ if (StringUtils.isEmpty(user.getLanguage())) {
user.setLanguage("zh_CN"); user.setLanguage("zh_CN");
} }
int insert = sysUserMapper.insert(user); int insert = sysUserMapper.insert(user);
...@@ -82,29 +83,33 @@ public class SysUserService { ...@@ -82,29 +83,33 @@ public class SysUserService {
/** /**
* 修改用户密码清楚缓存 * 修改用户密码清楚缓存
*
* @param request * @param request
* @return * @return
*/ */
@CacheEvict(value = AuthConstants.USER_CACHE_NAME, key = "'user' + #request.userId") @CacheEvict(value = AuthConstants.USER_CACHE_NAME, key = "'user' + #request.userId")
@Transactional @Transactional
public int update(SysUserCreateRequest request){ public int update(SysUserCreateRequest request) {
if (StringUtils.isEmpty(request.getPassword())) {
request.setPassword(null);
}
SysUser user = BeanUtils.copyBean(new SysUser(), request); SysUser user = BeanUtils.copyBean(new SysUser(), request);
long now = System.currentTimeMillis(); long now = System.currentTimeMillis();
user.setUpdateTime(now); user.setUpdateTime(now);
deleteUserRoles(user.getUserId());//先删除用户角色关联 deleteUserRoles(user.getUserId());//先删除用户角色关联
saveUserRoles(user.getUserId(), request.getRoleIds());//再插入角色关联 saveUserRoles(user.getUserId(), request.getRoleIds());//再插入角色关联
return sysUserMapper.updateByPrimaryKey(user); return sysUserMapper.updateByPrimaryKeySelective(user);
} }
/** /**
* 用户修改个人信息 * 用户修改个人信息
*
* @param request * @param request
* @return * @return
*/ */
@CacheEvict(value = AuthConstants.USER_CACHE_NAME, key = "'user' + #request.userId") @CacheEvict(value = AuthConstants.USER_CACHE_NAME, key = "'user' + #request.userId")
@Transactional @Transactional
public int updatePersonInfo(SysUserCreateRequest request){ public int updatePersonInfo(SysUserCreateRequest request) {
SysUser user = BeanUtils.copyBean(new SysUser(), request); SysUser user = BeanUtils.copyBean(new SysUser(), request);
long now = System.currentTimeMillis(); long now = System.currentTimeMillis();
user.setUpdateTime(now); user.setUpdateTime(now);
...@@ -114,7 +119,7 @@ public class SysUserService { ...@@ -114,7 +119,7 @@ public class SysUserService {
@CacheEvict(value = AuthConstants.USER_CACHE_NAME, key = "'user' + #request.userId") @CacheEvict(value = AuthConstants.USER_CACHE_NAME, key = "'user' + #request.userId")
public int updateStatus(SysUserStateRequest request){ public int updateStatus(SysUserStateRequest request) {
SysUser sysUser = new SysUser(); SysUser sysUser = new SysUser();
sysUser.setUserId(request.getUserId()); sysUser.setUserId(request.getUserId());
sysUser.setEnabled(request.getEnabled()); sysUser.setEnabled(request.getEnabled());
...@@ -123,6 +128,7 @@ public class SysUserService { ...@@ -123,6 +128,7 @@ public class SysUserService {
/** /**
* 修改用户密码清楚缓存 * 修改用户密码清楚缓存
*
* @param request * @param request
* @return * @return
*/ */
...@@ -133,7 +139,7 @@ public class SysUserService { ...@@ -133,7 +139,7 @@ public class SysUserService {
if (ObjectUtils.isEmpty(user)) { if (ObjectUtils.isEmpty(user)) {
throw new RuntimeException("用户不存在"); throw new RuntimeException("用户不存在");
} }
if (!StringUtils.equals(CodingUtil.md5(request.getPassword()), user.getPassword())){ if (!StringUtils.equals(CodingUtil.md5(request.getPassword()), user.getPassword())) {
throw new RuntimeException("密码错误"); throw new RuntimeException("密码错误");
} }
SysUser sysUser = new SysUser(); SysUser sysUser = new SysUser();
...@@ -143,7 +149,7 @@ public class SysUserService { ...@@ -143,7 +149,7 @@ public class SysUserService {
} }
@CacheEvict(value = AuthConstants.USER_CACHE_NAME, key = "'user' + #request.userId") @CacheEvict(value = AuthConstants.USER_CACHE_NAME, key = "'user' + #request.userId")
public int adminUpdatePwd(SysUserPwdRequest request){ public int adminUpdatePwd(SysUserPwdRequest request) {
SysUser sysUser = new SysUser(); SysUser sysUser = new SysUser();
sysUser.setUserId(request.getUserId()); sysUser.setUserId(request.getUserId());
sysUser.setPassword(CodingUtil.md5(request.getNewPassword())); sysUser.setPassword(CodingUtil.md5(request.getNewPassword()));
...@@ -151,13 +157,13 @@ public class SysUserService { ...@@ -151,13 +157,13 @@ public class SysUserService {
} }
/** /**
* 删除用户角色关联 * 删除用户角色关联
*
* @param userId * @param userId
* @return * @return
*/ */
private int deleteUserRoles(Long userId){ private int deleteUserRoles(Long userId) {
SysUsersRolesExample example = new SysUsersRolesExample(); SysUsersRolesExample example = new SysUsersRolesExample();
example.createCriteria().andUserIdEqualTo(userId); example.createCriteria().andUserIdEqualTo(userId);
return sysUsersRolesMapper.deleteByExample(example); return sysUsersRolesMapper.deleteByExample(example);
...@@ -165,10 +171,11 @@ public class SysUserService { ...@@ -165,10 +171,11 @@ public class SysUserService {
/** /**
* 保存用户角色关联 * 保存用户角色关联
*
* @param userId * @param userId
* @param roleIds * @param roleIds
*/ */
private void saveUserRoles(Long userId, List<Long> roleIds){ private void saveUserRoles(Long userId, List<Long> roleIds) {
roleIds.forEach(roleId -> { roleIds.forEach(roleId -> {
SysUsersRolesKey sysUsersRolesKey = new SysUsersRolesKey(); SysUsersRolesKey sysUsersRolesKey = new SysUsersRolesKey();
sysUsersRolesKey.setUserId(userId); sysUsersRolesKey.setUserId(userId);
...@@ -179,33 +186,33 @@ public class SysUserService { ...@@ -179,33 +186,33 @@ public class SysUserService {
@CacheEvict(value = AuthConstants.USER_CACHE_NAME, key = "'user' + #userId") @CacheEvict(value = AuthConstants.USER_CACHE_NAME, key = "'user' + #userId")
@Transactional @Transactional
public int delete(Long userId){ public int delete(Long userId) {
deleteUserRoles(userId); deleteUserRoles(userId);
return sysUserMapper.deleteByPrimaryKey(userId); return sysUserMapper.deleteByPrimaryKey(userId);
} }
public SysUser findOne(SysUser user){ public SysUser findOne(SysUser user) {
if (ObjectUtils.isEmpty(user)) return null; if (ObjectUtils.isEmpty(user)) return null;
if (ObjectUtils.isNotEmpty(user.getUserId())){ if (ObjectUtils.isNotEmpty(user.getUserId())) {
return sysUserMapper.selectByPrimaryKey(user.getUserId()); return sysUserMapper.selectByPrimaryKey(user.getUserId());
} }
SysUserExample example = new SysUserExample(); SysUserExample example = new SysUserExample();
SysUserExample.Criteria criteria = example.createCriteria(); SysUserExample.Criteria criteria = example.createCriteria();
if (ObjectUtils.isNotEmpty(user.getUsername())){ if (ObjectUtils.isNotEmpty(user.getUsername())) {
criteria.andUsernameEqualTo(user.getUsername()); criteria.andUsernameEqualTo(user.getUsername());
List<SysUser> sysUsers = sysUserMapper.selectByExample(example); List<SysUser> sysUsers = sysUserMapper.selectByExample(example);
if (CollectionUtils.isNotEmpty(sysUsers))return sysUsers.get(0); if (CollectionUtils.isNotEmpty(sysUsers)) return sysUsers.get(0);
} }
return null; return null;
} }
public List<SysUser> users(List<Long> userIds){ public List<SysUser> users(List<Long> userIds) {
return userIds.stream().map(sysUserMapper::selectByPrimaryKey).collect(Collectors.toList()); return userIds.stream().map(sysUserMapper::selectByPrimaryKey).collect(Collectors.toList());
} }
@CacheEvict(value = AuthConstants.USER_CACHE_NAME, key = "'user' + #userId") @CacheEvict(value = AuthConstants.USER_CACHE_NAME, key = "'user' + #userId")
public void setLanguage(Long userId,String language) { public void setLanguage(Long userId, String language) {
SysUser sysUser = new SysUser(); SysUser sysUser = new SysUser();
sysUser.setUserId(userId); sysUser.setUserId(userId);
sysUser.setLanguage(language); sysUser.setLanguage(language);
......
...@@ -100,7 +100,8 @@ export default { ...@@ -100,7 +100,8 @@ export default {
button: 'Button', button: 'Button',
man: 'Man', man: 'Man',
woman: 'Woman', woman: 'Woman',
nick_name: 'Nick Name', nick_name: 'Name',
confirmPassword: 'Confirm Password',
upload: 'Upload', upload: 'Upload',
cover: 'Cover', cover: 'Cover',
not_cover: 'Not Cover', not_cover: 'Not Cover',
......
...@@ -99,7 +99,8 @@ export default { ...@@ -99,7 +99,8 @@ export default {
gender: '性別', gender: '性別',
man: '男', man: '男',
woman: '女', woman: '女',
nick_name: '暱稱', nick_name: '姓名',
confirmPassword: '確認密碼',
upload: '上傳', upload: '上傳',
cover: '覆蓋', cover: '覆蓋',
not_cover: '不覆蓋', not_cover: '不覆蓋',
......
...@@ -100,7 +100,8 @@ export default { ...@@ -100,7 +100,8 @@ export default {
gender: '性别', gender: '性别',
man: '男', man: '男',
woman: '女', woman: '女',
nick_name: '昵称', nick_name: '姓名',
confirmPassword: '确认密码',
upload: '上传', upload: '上传',
cover: '覆盖', cover: '覆盖',
not_cover: '不覆盖', not_cover: '不覆盖',
...@@ -402,7 +403,7 @@ export default { ...@@ -402,7 +403,7 @@ export default {
special_characters_are_not_supported: '不支持特殊字符', special_characters_are_not_supported: '不支持特殊字符',
mobile_number_format_is_incorrect: '手机号码格式不正确', mobile_number_format_is_incorrect: '手机号码格式不正确',
email_format_is_incorrect: '邮箱格式不正确', email_format_is_incorrect: '邮箱格式不正确',
password_format_is_incorrect: '有效密码:6-30位,英文大小写字母+数字+特殊字符(可选)', password_format_is_incorrect: '有效密码:8-30位,英文大小写字母+数字+特殊字符(可选)',
old_password: '旧密码', old_password: '旧密码',
new_password: '新密码', new_password: '新密码',
repeat_password: '确认密码', repeat_password: '确认密码',
......
<template> <template>
<layout-content :header="formType=='add' ? $t('user.create') : $t('user.modify')" back-name="system-user"> <layout-content :header="formType=='add' ? $t('user.create') : $t('user.modify')" back-name="system-user">
<el-form ref="createUserForm" :model="form" :rules="rule" size="small" label-width="auto" label-position="right"> <el-form ref="createUserForm" :model="form" :rules="rule" size="small" label-width="auto" label-position="right">
<el-form-item :label="$t('commons.name')" prop="username"> <el-form-item label="ID" prop="username">
<el-input v-model="form.username" /> <el-input v-model="form.username" />
</el-form-item> </el-form-item>
<el-form-item :label="$t('commons.phone')" prop="phone"> <el-form-item :label="$t('commons.phone')" prop="phone">
...@@ -13,6 +13,12 @@ ...@@ -13,6 +13,12 @@
<el-form-item :label="$t('commons.email')" prop="email"> <el-form-item :label="$t('commons.email')" prop="email">
<el-input v-model="form.email" /> <el-input v-model="form.email" />
</el-form-item> </el-form-item>
<el-form-item v-if="formType !== 'modify'" :label="$t('commons.password')" prop="password">
<el-input v-model="form.password" autocomplete="off" show-password />
</el-form-item>
<el-form-item v-if="formType !== 'modify'" :label="$t('commons.confirmPassword')" prop="confirmPassword">
<el-input v-model="form.confirmPassword" autocomplete="off" show-password />
</el-form-item>
<el-form-item :label="$t('commons.gender')"> <el-form-item :label="$t('commons.gender')">
<el-radio-group v-model="form.gender" style="width: 178px"> <el-radio-group v-model="form.gender" style="width: 178px">
...@@ -127,6 +133,10 @@ export default { ...@@ -127,6 +133,10 @@ export default {
trigger: 'blur' trigger: 'blur'
} }
], ],
confirmPassword: [
{ required: true, message: this.$t('user.input_password'), trigger: 'blur' },
{ required: true, validator: this.repeatValidator, trigger: 'blur' }
],
newPassword: [ newPassword: [
{ required: true, message: this.$t('user.input_password'), trigger: 'blur' }, { required: true, message: this.$t('user.input_password'), trigger: 'blur' },
{ {
...@@ -158,6 +168,13 @@ export default { ...@@ -158,6 +168,13 @@ export default {
this.initRoles() this.initRoles()
}, },
methods: { methods: {
repeatValidator(rule, value, callback) {
if (value !== this.form.password) {
callback(new Error(this.$t('member.inconsistent_passwords')))
} else {
callback()
}
},
create() { create() {
this.depts = null this.depts = null
this.formType = 'add' this.formType = 'add'
...@@ -169,6 +186,7 @@ export default { ...@@ -169,6 +186,7 @@ export default {
this.formType = 'modify' this.formType = 'modify'
this.dialogVisible = true this.dialogVisible = true
this.form = Object.assign({}, row) this.form = Object.assign({}, row)
this.form.password = ''
if (this.form.deptId === 0) { if (this.form.deptId === 0) {
this.form.deptId = null this.form.deptId = null
} }
......
...@@ -125,7 +125,7 @@ ...@@ -125,7 +125,7 @@
:rules="rule" :rules="rule"
class="demo-ruleForm" class="demo-ruleForm"
> >
<el-form-item :label="$t('member.new_password')" prop="newpassword"> <el-form-item :label="$t('member.new_password')" prop="newPassword">
<el-input v-model="ruleForm.newPassword" type="password" autocomplete="off" show-password /> <el-input v-model="ruleForm.newPassword" type="password" autocomplete="off" show-password />
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
......
...@@ -37,7 +37,13 @@ export default { ...@@ -37,7 +37,13 @@ export default {
{ required: true, message: this.$t('user.input_password'), trigger: 'blur' } { required: true, message: this.$t('user.input_password'), trigger: 'blur' }
], ],
newPwd: [ newPwd: [
{ required: true, message: this.$t('user.input_password'), trigger: 'blur' } { required: true, message: this.$t('user.input_password'), trigger: 'blur' },
{
required: true,
pattern: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[^]{8,30}$/,
message: this.$t('member.password_format_is_incorrect'),
trigger: 'blur'
}
], ],
repeatPwd: [ repeatPwd: [
{ required: true, message: this.$t('user.input_password'), trigger: 'blur' }, { required: true, message: this.$t('user.input_password'), trigger: 'blur' },
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<layout-content header="个人信息"> <layout-content header="个人信息">
<div> <div>
<el-form ref="createUserForm" :disabled="formType !== 'modify'" :model="form" :rules="rule" size="small" label-width="auto" label-position="right"> <el-form ref="createUserForm" :disabled="formType !== 'modify'" :model="form" :rules="rule" size="small" label-width="auto" label-position="right">
<el-form-item :label="$t('commons.user')" prop="username"> <el-form-item label="ID" prop="username">
<el-input v-model="form.username" disabled /> <el-input v-model="form.username" disabled />
</el-form-item> </el-form-item>
<el-form-item :label="$t('commons.phone')" prop="phone"> <el-form-item :label="$t('commons.phone')" prop="phone">
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论