| @@ -1,12 +1,16 @@ | |||
| package com.iformall.controller; | |||
| import com.github.pagehelper.PageInfo; | |||
| import com.iformall.common.ErrorCode; | |||
| import com.iformall.common.Result; | |||
| import com.iformall.common.ResultData; | |||
| import com.iformall.domain.po.MallRole; | |||
| import com.iformall.domain.po.MallRolePermission; | |||
| import com.iformall.domain.po.MallUserInfo; | |||
| import com.iformall.enums.EnumUserAdmin; | |||
| import com.iformall.service.MallRolePermissionService; | |||
| import com.iformall.service.MallRoleService; | |||
| import com.iformall.service.MallUserInfoService; | |||
| import io.swagger.annotations.Api; | |||
| import org.apache.commons.lang3.StringUtils; | |||
| import org.slf4j.Logger; | |||
| @@ -32,6 +36,9 @@ public class MallRoleController extends BaseController { | |||
| @Autowired | |||
| private MallRolePermissionService sysRolePermissionService; | |||
| @Autowired | |||
| private MallUserInfoService mallUserInfoService; | |||
| @GetMapping("list") | |||
| public ResultData list(MallRole sysRole, Integer pageNum, Integer pageSize) { | |||
| String tenantId = getTenantId(); | |||
| @@ -57,7 +64,11 @@ public class MallRoleController extends BaseController { | |||
| @PostMapping("saveOrUpdate") | |||
| public ResultData saveOrUpdate(@RequestBody MallRole sysRole) { | |||
| String tenantId = getTenantId(); | |||
| MallUserInfo currentUser = getUser(); | |||
| if(currentUser.getIsAdmin().equals(EnumUserAdmin.Normal.getCode())) { | |||
| return new ResultData(ErrorCode.USER_NOT_ADMIN.getCode(), "只有超级管理员才能保存角色"); | |||
| } | |||
| String tenantId = currentUser.getTenantId(); | |||
| int count = sysRoleService.countByName(sysRole.getName(), sysRole.getId()); | |||
| if (count > 0) { | |||
| return new ResultData(ResultData.ERROR, "角色名已存在"); | |||
| @@ -79,6 +90,10 @@ public class MallRoleController extends BaseController { | |||
| @PostMapping("add") | |||
| public ResultData add(MallRole sysRole) { | |||
| MallUserInfo currentUser = getUser(); | |||
| if(currentUser.getIsAdmin().equals(EnumUserAdmin.Normal.getCode())) { | |||
| return new ResultData(ErrorCode.USER_NOT_ADMIN.getCode(), "只有超级管理员才能添加角色"); | |||
| } | |||
| Assert.notNull(sysRole.getName(), "角色名不能为空"); | |||
| Assert.isTrue(!checkUnique(sysRole.getName(), null), "重复的角色名"); | |||
| sysRoleService.saveOrUpdate(sysRole); | |||
| @@ -87,6 +102,10 @@ public class MallRoleController extends BaseController { | |||
| @PostMapping("update") | |||
| public ResultData update(MallRole sysRole) { | |||
| MallUserInfo currentUser = getUser(); | |||
| if(currentUser.getIsAdmin().equals(EnumUserAdmin.Normal.getCode())) { | |||
| return new ResultData(ErrorCode.USER_NOT_ADMIN.getCode(), "只有超级管理员才能更新角色"); | |||
| } | |||
| if (sysRole.getName() != null) { | |||
| System.out.println(checkUnique(sysRole.getName(), sysRole.getId())); | |||
| Assert.isTrue(!checkUnique(sysRole.getName(), sysRole.getId()), "角色名已存在"); | |||
| @@ -99,21 +118,23 @@ public class MallRoleController extends BaseController { | |||
| @PostMapping("/del") | |||
| public ResultData delete(@RequestBody MallRole sysRole) { | |||
| MallUserInfo currentUser = getUser(); | |||
| if(currentUser.getIsAdmin().equals(EnumUserAdmin.Normal.getCode())) { | |||
| return new ResultData(ErrorCode.USER_NOT_ADMIN.getCode(), "只有超级管理员才能删除角色"); | |||
| } | |||
| MallUserInfo record = new MallUserInfo(); | |||
| record.setTenantId(currentUser.getTenantId()); | |||
| record.setRoleId(sysRole.getId()); | |||
| record.setIsAdmin(EnumUserAdmin.Normal.getCode()); | |||
| int count = mallUserInfoService.cntUserList(record); | |||
| if (count > 0) { | |||
| return new ResultData(ErrorCode.USER_USE_ROLE.getCode(), "有用户使用此角色,请先删除相应的用户!!"); | |||
| } | |||
| sysRoleService.deleteById(sysRole.getId()); | |||
| sysRolePermissionService.deleteByRoleId(sysRole.getId()); | |||
| return new ResultData(Result.SUCCESS, "删除成功", null); | |||
| } | |||
| @GetMapping("setPermission") | |||
| public ResultData setPermission(Long roleId, String perId) { | |||
| Assert.notNull(perId, "请选择权限"); | |||
| /*String[] perIds = perId.split(","); | |||
| SysRolePermissionService.savePermissions(roleId, perIds);*/ | |||
| //TODO | |||
| return new ResultData(Result.SUCCESS, "设置角色权限成功", null); | |||
| } | |||
| private boolean checkUnique(String name, Long id) { | |||
| return sysRoleService.countByName(name, id) > 0 ? true : false; | |||
| } | |||
| @@ -117,6 +117,12 @@ public class MallUserInfoController extends BaseController { | |||
| @ApiOperation(value = "修改用户接口", response = String.class) | |||
| @PostMapping("update") | |||
| public ResultData updateUser(@RequestBody MallUserInfo userInfo) { | |||
| MallUserInfo currentUser = getUser(); | |||
| // 只有超管和自己能更新信息 | |||
| if (!(currentUser.getId().equals(userInfo.getId()) || | |||
| currentUser.getIsAdmin().equals(EnumUserAdmin.ADMIN.getCode()))) { | |||
| return new ResultData(ErrorCode.USER_NO_PERMISSION.getCode(), "超级管理员和自己才能修改信息"); | |||
| } | |||
| //Assert.notNull(userInfo.getUsername(), "用户名不能为空"); | |||
| if(checkUniqueName(userInfo.getUsername(), userInfo.getId())){ | |||
| return new ResultData(ErrorCode.USER_NAME_IS_FOUND,"用户名已存在"); | |||
| @@ -125,19 +131,19 @@ public class MallUserInfoController extends BaseController { | |||
| return new ResultData(ErrorCode.USER_PHONE_IS_FOUND,"手机号已存在"); | |||
| } | |||
| // is_admin 不能在此系统设置 | |||
| userInfo.setIsAdmin(null); | |||
| userInfo.setTenantId(getTenantId()); | |||
| if (StringUtils.isNotBlank(userInfo.getPassword()) && userInfo.getPassword().length() > 0) { | |||
| PasswordHelper passwordHelper = new PasswordHelper(); | |||
| passwordHelper.encryptPassword(userInfo); | |||
| } | |||
| userInfo.setTenantId(getTenantId()); | |||
| userInfo.setIsAdmin(null); | |||
| MallUserInfo currentUser = getUser(); | |||
| if(currentUser.getIsAdmin().equals(EnumUserAdmin.ADMIN.getCode())) { | |||
| if (currentUser.getIsAdmin().equals(EnumUserAdmin.ADMIN.getCode()) && | |||
| currentUser.getId().equals(userInfo.getId())) { | |||
| // 超管 | |||
| boolean bModify = false; | |||
| MallUserInfo adminUser = new MallUserInfo(); | |||
| adminUser.setId(userInfo.getId()); | |||
| if (StringUtils.isNotBlank(userInfo.getPassword()) && userInfo.getPassword().length() > 0) { | |||
| adminUser.setPassword(userInfo.getPassword()); | |||
| bModify = true; | |||
| @@ -170,7 +176,7 @@ public class MallUserInfoController extends BaseController { | |||
| return new ResultData(ErrorCode.USER_NOT_ADMIN.getCode(), "只有超级管理员才能删除用户"); | |||
| } | |||
| if (currentUser.getId().equals(userInfo.getId())) { | |||
| return new ResultData(ErrorCode.USER_IS_EMPTY); | |||
| return new ResultData(ErrorCode.USER_NO_PERMISSION.getCode(), "用户不能删除自己"); | |||
| } | |||
| userInfoService.deleteById(userInfo.getId()); | |||
| @@ -48,9 +48,12 @@ public enum ErrorCode{ | |||
| /** | |||
| * 用户2000-2099 | |||
| */ | |||
| USER_PHONE_IS_NOT_FOUND(1990,"手机号不存在"), | |||
| USER_DEL_SELF(1991,"用户删除自己"), | |||
| USER_NOT_ADMIN(1992,"用户非超管"), | |||
| USER_NO_PERMISSION(1993,"用户无此权限"), | |||
| USER_USE_ROLE(1994,"用户使用此角色"), | |||
| USER_IS_EMPTY(2000, "用户不存在"), | |||
| PASSWORD_ERROR(2001, "密码错误"), | |||
| LOGIN_USER_OR_PWD_ERROR(2002, "用户名或密码错误"), | |||
| @@ -11,12 +11,8 @@ public interface MallUserInfoMapper extends CommonMapper<MallUserInfo, String> { | |||
| List<MallUserInfo> findList(MallUserInfo mallUserInfo); | |||
| Integer hasButtonPermission(@Param("userId") Long userId, @Param("permission") String permission); | |||
| long cntByUserName(Map<String,Object> params); | |||
| } | |||
| @@ -11,8 +11,8 @@ public interface MallRoleService { | |||
| * 根据实体查询分页列表 | |||
| * | |||
| * @param record | |||
| * @param offset | |||
| * @param limit | |||
| * @param pageIndex | |||
| * @param pageSize | |||
| * @return | |||
| */ | |||
| PageInfo<MallRole> listAsPage(MallRole record, Integer pageIndex, Integer pageSize); | |||
| @@ -4,17 +4,26 @@ import com.github.pagehelper.PageInfo; | |||
| import com.iformall.common.ResultData; | |||
| import com.iformall.domain.po.MallUserInfo; | |||
| import java.util.List; | |||
| public interface MallUserInfoService { | |||
| /** | |||
| * 根据实体查询分页列表 | |||
| * | |||
| * @param record | |||
| * @param offset | |||
| * @param limit | |||
| * @param pageIndex | |||
| * @param pageSize | |||
| * @return | |||
| */ | |||
| PageInfo<MallUserInfo> listAsPage(MallUserInfo record, Integer pageIndex, Integer pageSize); | |||
| /** | |||
| * 根据实体查询列表 | |||
| * @param record | |||
| * @return | |||
| */ | |||
| int cntUserList(MallUserInfo record); | |||
| /** | |||
| * 根据Id获得实体 | |||
| @@ -37,11 +46,7 @@ public interface MallUserInfoService { | |||
| * @param id | |||
| */ | |||
| void deleteById(Long id); | |||
| /** | |||
| * 查询用户名总数,用于校验用户名是否重复 | |||
| * @param username | |||
| @@ -45,6 +45,11 @@ public class MallUserInfoServiceImpl implements MallUserInfoService { | |||
| return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> mallUserInfoMapper.findList(record)); | |||
| } | |||
| @Override | |||
| public int cntUserList(MallUserInfo record) { | |||
| return mallUserInfoMapper.selectCount(record); | |||
| } | |||
| @Override | |||
| public MallUserInfo getById(Long id) { | |||
| return mallUserInfoMapper.selectByPrimaryKey(id); | |||
| @@ -13,7 +13,6 @@ | |||
| <result column="is_admin" jdbcType="INTEGER" property="isAdmin" /> | |||
| <result column="nick_name" jdbcType="VARCHAR" property="nickName" /> | |||
| <result column="phone" jdbcType="VARCHAR" property="phone" /> | |||
| </resultMap> | |||
| <sql id="allColumns"> | |||
| @@ -90,9 +89,6 @@ | |||
| <include refid="dynamicWhereConditions" /> | |||
| </select> | |||
| <select id="hasButtonPermission" resultType="java.lang.Integer"> | |||
| SELECT 1 | |||
| FROM mall_user_role ur, mall_user_role_permission rp, mall_permission p | |||