提交 f56017e6 编写于 作者: X xiongchun

角色分配相关代码

上级 94576ad8
......@@ -12,7 +12,7 @@ import com.fasterxml.jackson.annotation.JsonFormat;
* <p>此文件由代码生成器自动生成</p>
*
* @author 普蓝开源社区
* @date 2022-09-12 14:34:31
* @date 2022-09-16 21:43:14
*/
@Data
@Accessors(chain = true)
......
......@@ -12,7 +12,7 @@ import com.fasterxml.jackson.annotation.JsonFormat;
* <p>此文件由代码生成器自动生成</p>
*
* @author 普蓝开源社区
* @date 2022-09-12 14:34:31
* @date 2022-09-16 21:43:14
*/
@Data
@Accessors(chain = true)
......
......@@ -12,7 +12,7 @@ import com.fasterxml.jackson.annotation.JsonFormat;
* <p>此文件由代码生成器自动生成</p>
*
* @author 普蓝开源社区
* @date 2022-09-12 14:34:31
* @date 2022-09-16 21:43:13
*/
@Data
@Accessors(chain = true)
......@@ -84,7 +84,7 @@ public class RoleEntity implements Serializable {
private String modifiedBy;
/**
* remark
* 备注
*/
@TableField(value = "remark")
private String remark;
......
......@@ -12,7 +12,7 @@ import com.fasterxml.jackson.annotation.JsonFormat;
* <p>此文件由代码生成器自动生成</p>
*
* @author 普蓝开源社区
* @date 2022-09-12 14:34:31
* @date 2022-09-16 21:43:14
*/
@Data
@Accessors(chain = true)
......@@ -46,7 +46,7 @@ public class UserEntity implements Serializable {
private String name;
/**
* 电子邮件
* 绑定邮箱
*/
@TableField(value = "mail")
private String mail;
......@@ -114,7 +114,7 @@ public class UserEntity implements Serializable {
private String modifiedBy;
/**
* remark
* 备注
*/
@TableField(value = "remark")
private String remark;
......@@ -125,4 +125,10 @@ public class UserEntity implements Serializable {
@TableField(value = "deleted")
private Long deleted;
/**
* 绑定手机
*/
@TableField(value = "mobile_number")
private String mobileNumber;
}
package com.pulanit.pangu.admin.system.api.entity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
/**
* 用户-角色表
* <p>此文件由代码生成器自动生成</p>
*
* @author 普蓝开源社区
* @date 2022-09-16 21:43:14
*/
@Data
@Accessors(chain = true)
@TableName("user_role")
public class UserRoleEntity implements Serializable {
private static final long serialVersionUID=1L;
/**
* 流水号
*/
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 用户ID
*/
@TableField(value = "user_id")
private Long userId;
/**
* 角色ID
*/
@TableField(value = "role_id")
private Long roleId;
/**
* 创建时间
*/
@TableField(value = "gmt_created")
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date gmtCreated;
/**
* 创建人
*/
@TableField(value = "created_by")
private String createdBy;
/**
* 逻辑删除标志
*/
@TableField(value = "deleted")
private Long deleted;
}
......@@ -25,4 +25,9 @@ public class UserIn extends Page {
*/
private String name;
/**
* 所属部门ID
*/
private Long deptId;
}
......@@ -26,7 +26,7 @@ public interface UserService {
/**
* 新增
* @param userEntity
* @param userAddIn
*/
void add(UserAddIn userAddIn);
......@@ -50,9 +50,9 @@ public interface UserService {
/**
* 校验登录账号
* @param account
* @param userName
* @return
*/
long validateAccount(String account, Long id);
long validateUserName(String userName, Long id);
}
......@@ -63,7 +63,7 @@
<url>jdbc:mysql://127.0.0.1:3306/pangu-admin</url>
<user>root</user>
<password>root123456</password>
<tables>role,user,menu,dept</tables>
<tables>role,user,menu,dept,user_role</tables>
<author>普蓝开源社区</author>
<entityFilePath>/Users/xc/git2/pangu-framework/pangu-admin/pangu-admin-backend/pangu-admin-system/pangu-admin-system-api/src/main/java/com/pulanit/pangu/admin/system/api/entity</entityFilePath>
<mapperFilePath>${project.basedir}/src/main/java/com/pulanit/pangu/admin/system/dao/mapper</mapperFilePath>
......
......@@ -9,7 +9,7 @@ import com.pulanit.pangu.admin.system.api.entity.DeptEntity;
* <p>此文件由代码生成器自动生成</p>
*
* @author 普蓝开源社区
* @date 2022-09-12 14:34:31
* @date 2022-09-16 21:43:14
*/
@Mapper
public interface DeptMapper extends BaseMapper<DeptEntity> {
......
......@@ -9,7 +9,7 @@ import com.pulanit.pangu.admin.system.api.entity.MenuEntity;
* <p>此文件由代码生成器自动生成</p>
*
* @author 普蓝开源社区
* @date 2022-09-12 14:34:31
* @date 2022-09-16 21:43:14
*/
@Mapper
public interface MenuMapper extends BaseMapper<MenuEntity> {
......
......@@ -9,7 +9,7 @@ import com.pulanit.pangu.admin.system.api.entity.RoleEntity;
* <p>此文件由代码生成器自动生成</p>
*
* @author 普蓝开源社区
* @date 2022-09-12 14:34:31
* @date 2022-09-16 21:43:14
*/
@Mapper
public interface RoleMapper extends BaseMapper<RoleEntity> {
......
......@@ -9,7 +9,7 @@ import com.pulanit.pangu.admin.system.api.entity.UserEntity;
* <p>此文件由代码生成器自动生成</p>
*
* @author 普蓝开源社区
* @date 2022-09-12 14:34:31
* @date 2022-09-16 21:43:14
*/
@Mapper
public interface UserMapper extends BaseMapper<UserEntity> {
......
package com.pulanit.pangu.admin.system.dao.mapper;
import org.apache.ibatis.annotations.Mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.pulanit.pangu.admin.system.api.entity.UserRoleEntity;
/**
* 用户-角色表
* <p>此文件由代码生成器自动生成</p>
*
* @author 普蓝开源社区
* @date 2022-09-16 21:43:14
*/
@Mapper
public interface UserRoleMapper extends BaseMapper<UserRoleEntity> {
}
......@@ -20,15 +20,14 @@ package com.pulanit.pangu.admin.system.service;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.UUID;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.ReflectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.core.util.*;
import com.alibaba.spring.util.BeanUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.gitee.pulanos.pangu.framework.common.model.PageResult;
import com.gitee.pulanos.pangu.framework.common.utils.PagingUtil;
import com.google.common.base.Strings;
import com.pulanit.pangu.admin.system.api.Constants;
import com.pulanit.pangu.admin.system.api.dto.UserDto;
import com.pulanit.pangu.admin.system.api.entity.UserEntity;
......@@ -43,6 +42,7 @@ import org.apache.dubbo.config.annotation.Service;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.List;
import java.util.Objects;
@Slf4j
@Service(version = "1.0.0", group = "pangu-admin-system-app")
......@@ -66,6 +66,7 @@ public class UserServiceImpl implements UserService {
public PageResult<UserEntity> list(UserIn userIn) {
Page<UserEntity> page = PagingUtil.createPage(userIn);
LambdaQueryWrapper<UserEntity> lambdaQueryWrapper = Wrappers.lambdaQuery();
lambdaQueryWrapper.eq(ObjectUtil.isNotEmpty(userIn.getDeptId()), UserEntity::getDeptId, userIn.getDeptId());
lambdaQueryWrapper.like(ObjectUtil.isNotEmpty(userIn.getName()), UserEntity::getName, userIn.getName());
lambdaQueryWrapper.orderByDesc(UserEntity::getId);
userMapper.selectPage(page, lambdaQueryWrapper);
......@@ -79,6 +80,7 @@ public class UserServiceImpl implements UserService {
if (StrUtil.isEmpty(userEntity.getSex())){
userEntity.setSex(Constants.Sex.UNKNOWN);
}
userEntity.setAvatar(this.randomAvatar());
userEntity.setGmtCreated(DateUtil.date());
userMapper.insert(userEntity);
}
......@@ -100,14 +102,21 @@ public class UserServiceImpl implements UserService {
}
@Override
public long validateAccount(String account, Long id) {
long result = userMapper.selectCount(Wrappers.lambdaQuery(UserEntity.class).eq(UserEntity::getUserName, account));
public long validateUserName(String userName, Long id) {
long result = userMapper.selectCount(Wrappers.lambdaQuery(UserEntity.class).eq(UserEntity::getUserName, userName));
if (ObjectUtil.isNotNull(id)){
UserEntity userEntity = userMapper.selectById(id);
if (StrUtil.equalsIgnoreCase(account, userEntity.getUserName())){
if (StrUtil.equalsIgnoreCase(userName, userEntity.getUserName())){
return 0;
}
}
return result;
}
private String randomAvatar(){
String avatar = "avatar/avatar";
int index = RandomUtil.randomInt(1,9);
avatar = avatar + index;
return index == 1 ? avatar + ".gif" : avatar + ".jpg";
}
}
package com.pulanit.pangu.admin.web.system;
import cn.hutool.core.io.resource.ResourceUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.CharsetUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.gitee.pulanos.pangu.framework.common.model.PageResult;
import com.gitee.pulanos.pangu.framework.common.model.Result;
import com.pulanit.pangu.admin.system.api.entity.UserEntity;
......@@ -98,9 +94,9 @@ public class UserController {
*
* @return
*/
@GetMapping("/validateRoleKey")
public Result<Long> validateRoleKey(@RequestParam String account, @RequestParam Long id) {
long cnt = userService.validateAccount(account, id);
@GetMapping("/validateUserName")
public Result<Long> validateUserName(@RequestParam String userName, @RequestParam Long id) {
long cnt = userService.validateUserName(userName, id);
return Result.success(cnt);
}
......
......@@ -163,6 +163,12 @@ export default {
post: async function (params) {
return await http.post(this.url, params);
}
},
validateUserName: {
url: `${config.API_URL}/system/user/validateUserName`,
get: async function (params) {
return await http.get(this.url, params);
}
}
},
app: {
......
......@@ -29,8 +29,7 @@
</div>
</el-header>
<el-main class="nopadding">
<scTable ref="table" :apiObj="apiObj" @selection-change="selectionChange" stripe remoteSort
remoteFilter>
<scTable ref="table" :apiObj="apiObj" @selection-change="selectionChange" stripe>
<el-table-column type="selection" width="50"></el-table-column>
<!-- <el-table-column label="ID" prop="id" width="80" sortable></el-table-column> -->
<el-table-column label="头像" width="80">
......@@ -53,28 +52,27 @@
<el-tag v-if="scope.row.status == 9" type="danger">停用</el-tag>
</template>
</el-table-column>
<el-table-column label="所属部门" prop="deptId" width="120" show-overflow-tooltip></el-table-column>
<el-table-column label="所属角色" prop="groupName" width="120" show-overflow-tooltip></el-table-column>
<el-table-column label="用户类型" prop="type" width="120">
<template #default="scope">
<el-tag v-if="scope.row.type == 1" type="info">缺省</el-tag>
</template>
</el-table-column>
<el-table-column label="绑定手机" prop="mobileNumber" width="120"></el-table-column>
<el-table-column label="绑定邮箱" prop="mail" width="120"></el-table-column>
<el-table-column label="扩展码" prop="bizCode" width="120"></el-table-column>
<el-table-column label="备注" prop="remark" width="200" show-overflow-tooltip>
</el-table-column>
<el-table-column label="创建时间" prop="gmtCreated" width="180"></el-table-column>
<el-table-column label="操作" fixed="right" align="right" width="120">
<el-table-column label="操作" fixed="right" align="right" width="160">
<template #default="scope">
<el-button-group>
<!-- <el-button text type="primary" size="small"
@click="table_show(scope.row, scope.$index)">查看</el-button> -->
<el-button text type="info" size="small"
@click="table_show(scope.row, scope.$index)">查看</el-button>
<el-button text type="primary" size="small"
@click="table_edit(scope.row, scope.$index)">编辑</el-button>
<el-popconfirm title="确定删除吗?" @confirm="table_del(scope.row, scope.$index)">
<el-popconfirm title="确定删除当前用户吗?" confirm-button-type="danger" confirm-button-text="删除" @confirm="table_del(scope.row, scope.$index)">
<template #reference>
<el-button text type="primary" size="small">删除</el-button>
<el-button text type="danger" size="small">删除</el-button>
</template>
</el-popconfirm>
</el-button-group>
......
<template>
<el-dialog :title="titleMap[mode]" v-model="visible" :width="500" top="30px" destroy-on-close @closed="$emit('closed')">
<el-dialog :title="titleMap[mode]" v-model="visible" :width="500" top="30px" destroy-on-close
@closed="$emit('closed')">
<el-form :model="form" :rules="rules" :disabled="mode == 'show'" ref="dialogForm" label-width="80px"
label-position="right">
<el-form-item label="登录账号" prop="userName">
<el-input v-model="form.userName" placeholder="用于登录系统" clearable></el-input>
<el-input v-model="form.userName" placeholder="请输入登录账号" maxlength="20" show-word-limit clearable></el-input>
</el-form-item>
<template v-if="mode == 'add'">
<el-form-item label="登录密码" prop="password">
<el-input type="password" v-model="form.password" clearable show-password></el-input>
<el-input type="password" v-model="form.password" placeholder="请输入密码" maxlength="20" minlength="8" clearable show-password></el-input>
</el-form-item>
<el-form-item label="确认密码" prop="password2">
<el-input type="password" v-model="form.password2" clearable show-password></el-input>
<el-input type="password" v-model="form.password2" placeholder="请再次输入密码" maxlength="20" minlength="8" clearable show-password></el-input>
</el-form-item>
</template>
<el-form-item label="姓名" prop="name">
<el-input v-model="form.name" placeholder="请输入真实姓名" clearable></el-input>
<el-input v-model="form.name" placeholder="请输入真实姓名" maxlength="10" show-word-limit clearable></el-input>
</el-form-item>
<el-form-item label="所属部门" prop="deptIds">
<el-cascader v-model="form.deptIds" :options="depts" :props="deptsProps" placeholder="请选择所属部门" clearable style="width: 100%;">
<el-cascader v-model="form.deptIds" :options="depts" :props="deptsProps" placeholder="请选择所属部门" clearable
style="width: 100%;">
</el-cascader>
</el-form-item>
<el-form-item label="所属角色" prop="roleIds">
......@@ -36,10 +38,10 @@
</el-select>
</el-form-item>
<el-form-item label="扩展码" prop="bizCode">
<el-input v-model="form.bizCode" placeholder="请输入业务扩展码" clearable></el-input>
<el-input v-model="form.bizCode" placeholder="请输入业务扩展码" maxlength="50" show-word-limit clearable></el-input>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" clearable type="textarea"></el-input>
<el-input v-model="form.remark" maxlength="250" show-word-limit clearable type="textarea"></el-input>
</el-form-item>
</el-form>
<template #footer>
......@@ -84,17 +86,30 @@ export default {
{ required: true, message: '用户类型不能为空' }
],
userName: [
{ required: true, message: '登录账号不能为空' }
{ required: true, message: '登录账号不能为空' },
{
required: true,
validator: (rule, value, callback) => {
var params = { userName: value, id: this.form.id }
this.$API.system.user.validateUserName.get(params).then(res => {
if (res.data >= 1 ) {
return callback(new Error('此账号 ' + value + ' 已存在, 请修改'))
}
callback()
})
},
trigger: 'blur'
}
],
name: [
{ required: true, message: '真实姓名不能为空' }
],
password: [
{ required: true, message: '登录密不能为空码' },
{ required: true, message: '登录密码不能为空' },
{
validator: (rule, value, callback) => {
if (this.form.password2 !== '') {
this.$refs.dialogForm.validateField('password2');
if (value.length < 8) {
return callback(new Error('密码长度不能小于8位'))
}
callback();
}
......@@ -110,6 +125,14 @@ export default {
callback();
}
}
},
{
validator: (rule, value, callback) => {
if (value.length < 8) {
return callback(new Error('密码长度不能小于8位'))
}
callback();
}
}
],
deptIds: [
......@@ -193,6 +216,7 @@ export default {
//表单注入数据
setData(data) {
Object.assign(this.form, data)
this.form.deptIds = data.deptId
}
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册