diff --git a/src/main/java/com/gxwebsoft/common/system/controller/MainController.java b/src/main/java/com/gxwebsoft/common/system/controller/MainController.java index 9bd26fa..0943349 100644 --- a/src/main/java/com/gxwebsoft/common/system/controller/MainController.java +++ b/src/main/java/com/gxwebsoft/common/system/controller/MainController.java @@ -23,6 +23,7 @@ import com.gxwebsoft.common.core.security.JwtSubject; import com.gxwebsoft.common.core.security.JwtUtil; import com.gxwebsoft.common.core.utils.CacheClient; import com.gxwebsoft.common.core.utils.CommonUtil; +import com.gxwebsoft.common.core.utils.JSONUtil; import com.gxwebsoft.common.core.utils.RedisUtil; import com.gxwebsoft.common.core.web.ApiResult; import com.gxwebsoft.common.core.web.BaseController; @@ -54,7 +55,9 @@ import java.time.Instant; import java.util.HashMap; import java.util.List; import java.util.Random; +import java.util.Set; import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; /** * 登录认证控制器 @@ -501,19 +504,27 @@ public class MainController extends BaseController { String message = "验证码不正确"; return fail(message, null); } - user = userService.getAdminByPhone(phone); - if(user == null){ + // 单用户登录 + final List adminsByPhone = userService.getAdminsByPhone(param); + if(adminsByPhone.isEmpty()){ return fail("用户不存在",null); } + user = adminsByPhone.get(0); // 签发token String access_token = JwtUtil.buildToken(new JwtSubject(phone, user.getTenantId()), tokenExpireTime, configProperties.getTokenKey()); + // 同一个手机号码存在多个管理员账号 + if(adminsByPhone.size() > 1){ + String message = "请选择登录用户"; + user.setHasAdminsByPhone(true); + return success(message, new LoginResult(access_token, user)); + } return success("登录成功", new LoginResult(access_token, user)); } // 普通用户登录 if(tenantId == null){ - return fail("TenantId不存在",null); + return fail("用户不存在",null); } if (!code.equals(redisUtil.get(key)) && !"789789".equals(code)) { String message = "验证码不正确"; diff --git a/src/main/java/com/gxwebsoft/common/system/controller/UserController.java b/src/main/java/com/gxwebsoft/common/system/controller/UserController.java index 282f72a..bbb842f 100644 --- a/src/main/java/com/gxwebsoft/common/system/controller/UserController.java +++ b/src/main/java/com/gxwebsoft/common/system/controller/UserController.java @@ -14,6 +14,7 @@ import com.gxwebsoft.common.core.security.JwtUtil; import com.gxwebsoft.common.core.utils.CommonUtil; import com.gxwebsoft.common.core.web.*; import com.gxwebsoft.common.system.entity.*; +import com.gxwebsoft.common.system.param.LoginParam; import com.gxwebsoft.common.system.param.UserImportParam; import com.gxwebsoft.common.system.param.UserParam; import com.gxwebsoft.common.system.result.LoginResult; @@ -509,4 +510,10 @@ public class UserController extends BaseController { return success("统计成功", userService.orgNumInPark(param)); } + @PreAuthorize("hasAuthority('sys:auth:user')") + @ApiOperation("查询全部用户") + @GetMapping("/listAdminsByPhoneAll") + public ApiResult> listAdminsByPhoneAll(LoginParam param){ + return success(userService.getAdminsByPhone(param)); + } } diff --git a/src/main/java/com/gxwebsoft/common/system/entity/User.java b/src/main/java/com/gxwebsoft/common/system/entity/User.java index 167c4e9..01399a9 100644 --- a/src/main/java/com/gxwebsoft/common/system/entity/User.java +++ b/src/main/java/com/gxwebsoft/common/system/entity/User.java @@ -335,6 +335,13 @@ public class User implements UserDetails { @TableField(exist = false) private Boolean hasParent; + @ApiModelProperty("同一个手机号码存在多个管理员账号") + @TableField(exist = false) + private Boolean hasAdminsByPhone; + + @ApiModelProperty("模板ID") + private Integer templateId; + // @ApiModelProperty("企业信息") // @TableField(exist = false) // private Company companyInfo; diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/UserMapper.java b/src/main/java/com/gxwebsoft/common/system/mapper/UserMapper.java index 5546239..b8c241e 100644 --- a/src/main/java/com/gxwebsoft/common/system/mapper/UserMapper.java +++ b/src/main/java/com/gxwebsoft/common/system/mapper/UserMapper.java @@ -1,6 +1,7 @@ package com.gxwebsoft.common.system.mapper; import com.baomidou.mybatisplus.annotation.InterceptorIgnore; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.gxwebsoft.common.system.entity.User; @@ -58,4 +59,9 @@ public interface UserMapper extends BaseMapper { @InterceptorIgnore(tenantLine = "true") User selectByUserId(@Param("userId") Integer userId); + + @InterceptorIgnore(tenantLine = "true") + List selectListAllRel(@Param("param") UserParam param); + + } diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/xml/UserMapper.xml b/src/main/java/com/gxwebsoft/common/system/mapper/xml/UserMapper.xml index e5b12c0..1dafe20 100644 --- a/src/main/java/com/gxwebsoft/common/system/mapper/xml/UserMapper.xml +++ b/src/main/java/com/gxwebsoft/common/system/mapper/xml/UserMapper.xml @@ -2,246 +2,255 @@ - - - SELECT ta.* - FROM sys_dictionary_data ta - LEFT JOIN sys_dictionary tb - ON ta.dict_id = tb.dict_id - AND tb.deleted = 0 - WHERE ta.deleted = 0 - AND tb.dict_code = 'sex' - + + + SELECT ta.* + FROM sys_dictionary_data ta + LEFT JOIN sys_dictionary tb + ON ta.dict_id = tb.dict_id + AND tb.deleted = 0 + WHERE ta.deleted = 0 + AND tb.dict_code = 'sex' + - - - SELECT a.user_id, - GROUP_CONCAT(b.role_name) role_name - FROM sys_user_role a - LEFT JOIN sys_role b ON a.role_id = b.role_id - GROUP BY a.user_id - + + + SELECT a.user_id, + GROUP_CONCAT(b.role_name) role_name + FROM sys_user_role a + LEFT JOIN sys_role b ON a.role_id = b.role_id + GROUP BY a.user_id + - - - SELECT a.*, - b.organization_name, - c.dict_data_name sex_name, - e.name as groupName, - f.name as gradeName, - g.company_name as companyName,g.company_logo as logo, - t.tenant_name as tenantName - FROM sys_user a - LEFT JOIN sys_organization b ON a.organization_id = b.organization_id - LEFT JOIN ( - - ) c ON a.sex = c.dict_data_code - LEFT JOIN( - - ) d ON a.user_id = d.user_id - LEFT JOIN sys_user_group e ON a.group_id = e.group_id - LEFT JOIN sys_user_grade f ON a.grade_id = f.grade_id - LEFT JOIN sys_tenant t ON a.tenant_id = t.tenant_id - LEFT JOIN sys_company g ON g.tenant_id = t.tenant_id - - - AND a.user_id = #{param.userId} - - - AND a.username LIKE CONCAT('%', #{param.username}, '%') - - - AND a.uid = #{param.uid} - - - AND a.user_code = #{param.userCode} - - - AND a.nickname LIKE CONCAT('%', #{param.nickname}, '%') - - - AND a.type = #{param.type} - - - AND a.sex = #{param.sex} - - - AND a.phone LIKE CONCAT('%', #{param.phone}, '%') - - - AND a.email LIKE CONCAT('%', #{param.email}, '%') - - - AND a.email_verified = #{param.emailVerified} - - - AND a.real_name LIKE CONCAT('%', #{param.realName}, '%') - - - AND a.company_name LIKE CONCAT('%', #{param.companyName}, '%') - - - AND a.id_card LIKE CONCAT('%', #{param.idCard}, '%') - - - AND a.birthday LIKE CONCAT('%', #{param.birthday}, '%') - - - AND a.organization_id = #{param.organizationId} - - - AND a.group_id = #{param.groupId} - - - AND a.organization_id > 0 - - - AND a.merchant_id = #{param.merchantId} - - - AND a.platform = #{param.platform} - - - AND a.`status` = #{param.status} - - - AND a.create_time >= #{param.createTimeStart} - - - AND a.create_time <= #{param.createTimeEnd} - - - AND a.recommend = #{param.recommend} - - - AND a.grade_id = #{param.gradeId} - - - AND a.is_admin = #{param.isAdmin} - - - AND a.is_organization_admin = #{param.isOrganizationAdmin} - - - AND a.deleted = #{param.deleted} - - - AND a.deleted = 0 - - - AND a.user_id IN (SELECT user_id FROM sys_user_role WHERE role_id=#{param.roleId}) - - - AND a.user_id IN (SELECT user_id FROM sys_user_role WHERE role_code=#{param.roleCode}) - - - AND a.user_id IN - - #{item} - - - - AND a.organization_id IN - - #{item} - - - - AND a.phone IN - - #{item} - - - - AND a.province LIKE CONCAT('%', #{param.province}, '%') - - - AND a.city LIKE CONCAT('%', #{param.city}, '%') - - - AND a.region LIKE CONCAT('%', #{param.region}, '%') - - - AND b.organization_name LIKE CONCAT('%', #{param.organizationName}, '%') - - - AND c.dict_data_name = #{param.sexName} - - - AND a.expert_type = #{param.expertType} - - - AND ( - a.username = #{param.keywords} - OR a.user_id = #{param.keywords} - OR a.id_card = #{param.keywords} - OR a.merchant_id = #{param.keywords} - OR a.nickname LIKE CONCAT('%', #{param.keywords}, '%') - OR a.real_name LIKE CONCAT('%', #{param.keywords}, '%') - OR a.phone LIKE CONCAT('%', #{param.keywords}, '%') - OR a.email = #{param.keywords} - ) - - - AND a.organization_id IN (SELECT organization_id FROM sys_organization WHERE parent_id=#{param.parentId}) - - - - - - - - - - - - - - - + + + AND a.user_id IN (SELECT user_id FROM sys_user_role WHERE role_id=#{param.roleId}) + + + AND a.user_id IN (SELECT user_id FROM sys_user_role WHERE role_code=#{param.roleCode}) + + + AND a.user_id IN + + #{item} + + + + AND a.organization_id IN + + #{item} + + + + AND a.phone IN + + #{item} + + + + AND a.province LIKE CONCAT('%', #{param.province}, '%') + + + AND a.city LIKE CONCAT('%', #{param.city}, '%') + + + AND a.region LIKE CONCAT('%', #{param.region}, '%') + + + AND b.organization_name LIKE CONCAT('%', #{param.organizationName}, '%') + + + AND c.dict_data_name = #{param.sexName} + + + AND a.expert_type = #{param.expertType} + + + AND a.tenant_id = #{param.tenantId} + + + AND ( + a.username = #{param.keywords} + OR a.user_id = #{param.keywords} + OR a.id_card = #{param.keywords} + OR a.merchant_id = #{param.keywords} + OR a.nickname LIKE CONCAT('%', #{param.keywords}, '%') + OR a.real_name LIKE CONCAT('%', #{param.keywords}, '%') + OR a.phone LIKE CONCAT('%', #{param.keywords}, '%') + OR a.email = #{param.keywords} + ) + + + AND a.organization_id IN (SELECT organization_id FROM sys_organization WHERE parent_id=#{param.parentId}) + + + + + + + + + + + + + + + @@ -259,11 +268,15 @@ - UPDATE sys_user SET grade_id = #{param.gradeId} WHERE user_id = #{param.userId} + UPDATE sys_user + SET grade_id = #{param.gradeId} + WHERE user_id = #{param.userId} @@ -273,8 +286,13 @@ AND a.deleted = 0 AND a.phone = #{phone} - AND (a.username = 'superAdmin' OR a.username = 'admin') + AND (a.username = 'superAdmin' OR a.username = 'admin' OR a.is_admin = 1) + + diff --git a/src/main/java/com/gxwebsoft/common/system/param/UserParam.java b/src/main/java/com/gxwebsoft/common/system/param/UserParam.java index 95c0bfd..28c2fce 100644 --- a/src/main/java/com/gxwebsoft/common/system/param/UserParam.java +++ b/src/main/java/com/gxwebsoft/common/system/param/UserParam.java @@ -232,6 +232,9 @@ public class UserParam extends BaseParam { @TableField(exist = false) private Date settlementTime; + @ApiModelProperty("模板id") + private Integer templateId; + @ApiModelProperty("报餐时间") @TableField(exist = false) private String deliveryTime; diff --git a/src/main/java/com/gxwebsoft/common/system/service/UserService.java b/src/main/java/com/gxwebsoft/common/system/service/UserService.java index 148c867..e4c443b 100644 --- a/src/main/java/com/gxwebsoft/common/system/service/UserService.java +++ b/src/main/java/com/gxwebsoft/common/system/service/UserService.java @@ -3,6 +3,7 @@ package com.gxwebsoft.common.system.service; import com.baomidou.mybatisplus.extension.service.IService; import com.gxwebsoft.common.core.web.PageResult; import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.param.LoginParam; import com.gxwebsoft.common.system.param.UserParam; import org.springframework.security.core.userdetails.UserDetailsService; @@ -116,4 +117,6 @@ public interface UserService extends IService, UserDetailsService { Integer userNumInPark(UserParam param); Integer orgNumInPark(UserParam param); + + List getAdminsByPhone(LoginParam param); } diff --git a/src/main/java/com/gxwebsoft/common/system/service/impl/UserServiceImpl.java b/src/main/java/com/gxwebsoft/common/system/service/impl/UserServiceImpl.java index 5e6eb00..85fc9a1 100644 --- a/src/main/java/com/gxwebsoft/common/system/service/impl/UserServiceImpl.java +++ b/src/main/java/com/gxwebsoft/common/system/service/impl/UserServiceImpl.java @@ -13,6 +13,7 @@ import com.gxwebsoft.common.core.web.PageParam; import com.gxwebsoft.common.core.web.PageResult; import com.gxwebsoft.common.system.entity.*; import com.gxwebsoft.common.system.mapper.UserMapper; +import com.gxwebsoft.common.system.param.LoginParam; import com.gxwebsoft.common.system.param.UserParam; import com.gxwebsoft.common.system.service.*; import org.springframework.security.core.userdetails.UserDetails; @@ -274,7 +275,17 @@ public class UserServiceImpl extends ServiceImpl implements Us @Override public User getAdminByPhone(String phone) { - return baseMapper.selectAdminByPhone(phone); + return baseMapper.selectAdminByPhone(phone); + } + + @Override + public List getAdminsByPhone(LoginParam param){ + final UserParam userParam = new UserParam(); + userParam.setPhone(param.getPhone()); + userParam.setIsAdmin(true); + userParam.setTenantId(param.getTenantId()); + userParam.setLimit(50L); + return baseMapper.selectListAllRel(userParam); } /**