Commit 4153e5fb authored by 廖旭伟's avatar 廖旭伟

用户列表

parent 2163e7c2
package com.mortals.xhx.module.user.dao; package com.mortals.xhx.module.user.dao;
import com.mortals.framework.dao.ICRUDDao; import com.mortals.framework.dao.ICRUDDao;
import com.mortals.framework.model.PageInfo;
import com.mortals.framework.model.Result;
import com.mortals.xhx.module.user.model.UserEntity; import com.mortals.xhx.module.user.model.UserEntity;
import com.mortals.xhx.module.user.model.UserEntityExt;
import java.util.List; import java.util.List;
/** /**
* 用户信息业务Dao * 用户信息业务Dao
...@@ -12,5 +16,5 @@ import java.util.List; ...@@ -12,5 +16,5 @@ import java.util.List;
*/ */
public interface UserDao extends ICRUDDao<UserEntity,Long>{ public interface UserDao extends ICRUDDao<UserEntity,Long>{
List<Long> getAuthListById(Long id); List<Long> getAuthListById(Long id);
Result<UserEntityExt> getListExt(UserEntity params, PageInfo pageInfo);
} }
package com.mortals.xhx.module.user.dao.ibatis; package com.mortals.xhx.module.user.dao.ibatis;
import com.mortals.framework.model.PageInfo;
import com.mortals.framework.model.ParamDto; import com.mortals.framework.model.ParamDto;
import com.mortals.framework.model.Result;
import com.mortals.xhx.module.user.model.UserEntityExt;
import org.apache.ibatis.session.RowBounds;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import com.mortals.xhx.module.user.dao.UserDao; import com.mortals.xhx.module.user.dao.UserDao;
import com.mortals.xhx.module.user.model.UserEntity; import com.mortals.xhx.module.user.model.UserEntity;
import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis; import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis;
...@@ -28,4 +33,40 @@ public class UserDaoImpl extends BaseCRUDDaoMybatis<UserEntity, Long> implements ...@@ -28,4 +33,40 @@ public class UserDaoImpl extends BaseCRUDDaoMybatis<UserEntity, Long> implements
return getSqlSession().selectList(getSqlId("getAuthListById"), param); return getSqlSession().selectList(getSqlId("getAuthListById"), param);
} }
@Override
public Result<UserEntityExt> getListExt(UserEntity param, PageInfo pageInfo) {
ParamDto paramDto = this.getQueryParam(param);
Result result = new Result();
List list = null;
if (pageInfo.isCountPage()) {
int count = this.getCount(paramDto, "getListExtCount");
if (count == 0) {
list = new ArrayList();
} else if (pageInfo.getPrePageResult() == -1) {
list = this.getSqlSession().selectList(this.getSqlId("getListExt"), paramDto);
} else {
RowBounds rowBounds = new RowBounds(pageInfo.getBeginIndex(), pageInfo.getPrePageResult());
list = this.getSqlSession().selectList(this.getSqlId("getListExt"), this.cpyQueryParamDto(paramDto), rowBounds);
}
pageInfo.setTotalResult(count);
result.setPageInfo(pageInfo);
result.setList((List)list);
} else {
if (pageInfo.getPrePageResult() == -1) {
list = this.getSqlSession().selectList(this.getSqlId("getListExt"), paramDto);
} else {
RowBounds rowBounds = new RowBounds(pageInfo.getBeginIndex(), pageInfo.getPrePageResult());
list = this.getSqlSession().selectList(this.getSqlId("getListExt"), this.cpyQueryParamDto(paramDto), rowBounds);
}
pageInfo.setTotalResult(-1);
result.setPageInfo(pageInfo);
result.setList(list);
}
return result;
}
} }
package com.mortals.xhx.module.user.model;
public class UserEntityExt extends UserEntity {
/** 用户已分配角色id,多个角色使用“,”隔开 */
private String roleIds;
/** 用户已分配角色名称,多个角色使用“,”隔开 */
private String roleNames;
public String getRoleIds() {
return roleIds;
}
public void setRoleIds(String roleIds) {
this.roleIds = roleIds;
}
public String getRoleNames() {
return roleNames;
}
public void setRoleNames(String roleNames) {
this.roleNames = roleNames;
}
}
...@@ -46,4 +46,10 @@ public class UserVo extends BaseEntityLong { ...@@ -46,4 +46,10 @@ public class UserVo extends BaseEntityLong {
* 菜单列表 * 菜单列表
*/ */
private List<MenuEntity> menuList; private List<MenuEntity> menuList;
/** 查询条件 */
private String query;
/** 角色id */
private Long roleId;
} }
\ No newline at end of file
package com.mortals.xhx.module.user.service; package com.mortals.xhx.module.user.service;
import com.mortals.framework.exception.AppException; import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context;
import com.mortals.framework.model.PageInfo;
import com.mortals.framework.model.Result; import com.mortals.framework.model.Result;
import com.mortals.framework.service.ICRUDService; import com.mortals.framework.service.ICRUDService;
import com.mortals.framework.service.IUser; import com.mortals.framework.service.IUser;
import com.mortals.xhx.module.menu.model.MenuEntity; import com.mortals.xhx.module.menu.model.MenuEntity;
import com.mortals.xhx.module.user.model.UserEntity; import com.mortals.xhx.module.user.model.UserEntity;
import com.mortals.xhx.module.user.model.UserEntityExt;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
...@@ -90,7 +93,6 @@ public interface UserService extends ICRUDService<UserEntity,Long>{ ...@@ -90,7 +93,6 @@ public interface UserService extends ICRUDService<UserEntity,Long>{
*/ */
boolean updateUserPwd(String loginName, String oldPwd, String newPwd) throws AppException; boolean updateUserPwd(String loginName, String oldPwd, String newPwd) throws AppException;
Result<UserEntityExt> findExt(UserEntity params, PageInfo pageInfo, Context context) throws AppException;
} }
\ No newline at end of file
...@@ -9,12 +9,15 @@ import com.mortals.framework.service.IUser; ...@@ -9,12 +9,15 @@ import com.mortals.framework.service.IUser;
import com.mortals.framework.service.impl.AbstractCRUDServiceImpl; import com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
import com.mortals.framework.util.SecurityUtil; import com.mortals.framework.util.SecurityUtil;
import com.mortals.framework.util.StringUtils; import com.mortals.framework.util.StringUtils;
import com.mortals.xhx.common.utils.BeanUtil;
import com.mortals.xhx.module.menu.model.MenuEntity; import com.mortals.xhx.module.menu.model.MenuEntity;
import com.mortals.xhx.module.menu.service.MenuService; import com.mortals.xhx.module.menu.service.MenuService;
import com.mortals.xhx.module.user.dao.UserDao; import com.mortals.xhx.module.user.dao.UserDao;
import com.mortals.xhx.module.user.model.UserEntity; import com.mortals.xhx.module.user.model.UserEntity;
import com.mortals.xhx.module.user.model.UserEntityExt;
import com.mortals.xhx.module.user.model.UserQuery; import com.mortals.xhx.module.user.model.UserQuery;
import com.mortals.xhx.module.user.service.UserService; import com.mortals.xhx.module.user.service.UserService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -223,5 +226,30 @@ public class UserServiceImpl extends AbstractCRUDServiceImpl<UserDao, UserEntity ...@@ -223,5 +226,30 @@ public class UserServiceImpl extends AbstractCRUDServiceImpl<UserDao, UserEntity
return true; return true;
} }
@Override
public Result<UserEntityExt> findExt(UserEntity params, PageInfo pageInfo, Context context) throws AppException {
UserQuery query = new UserQuery();
BeanUtils.copyProperties(params,query);
if(StringUtils.isNotEmpty(params.getQuery())){
StringBuffer condition = new StringBuffer("%");
condition.append(params.getQuery()).append("%");
UserQuery condition1 = new UserQuery();
UserQuery condition2 = new UserQuery();
UserQuery condition3 = new UserQuery();
UserQuery condition4 = new UserQuery();
condition1.setPhone(condition.toString());
condition2.setMobile(condition.toString());
condition3.setLoginName(condition.toString());
condition4.setRealName(condition.toString());
List<UserQuery> orConditionList = new ArrayList<>();
orConditionList.add(condition1);
orConditionList.add(condition2);
orConditionList.add(condition3);
orConditionList.add(condition4);
query.setOrConditionList(orConditionList);
}
return getDao().getListExt(query,pageInfo);
}
} }
\ No newline at end of file
package com.mortals.xhx.module.user.web; package com.mortals.xhx.module.user.web;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.PageInfo;
import com.mortals.framework.model.Result;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController; import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.module.param.service.ParamService; import com.mortals.xhx.module.param.service.ParamService;
import com.mortals.xhx.module.role.model.RoleEntity;
import com.mortals.xhx.module.role.service.RoleService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
...@@ -44,6 +49,8 @@ public class UserController extends BaseCRUDJsonBodyMappingController<UserServic ...@@ -44,6 +49,8 @@ public class UserController extends BaseCRUDJsonBodyMappingController<UserServic
@Autowired @Autowired
private ParamService paramService; private ParamService paramService;
@Autowired
private RoleService roleService;
public UserController() { public UserController() {
super.setFormClass(UserForm.class); super.setFormClass(UserForm.class);
...@@ -54,8 +61,38 @@ public class UserController extends BaseCRUDJsonBodyMappingController<UserServic ...@@ -54,8 +61,38 @@ public class UserController extends BaseCRUDJsonBodyMappingController<UserServic
protected void init(Map<String, Object> model, Context context) { protected void init(Map<String, Object> model, Context context) {
this.addDict(model, "userType", paramService.getParamBySecondOrganize("User", "userType")); this.addDict(model, "userType", paramService.getParamBySecondOrganize("User", "userType"));
this.addDict(model, "status", paramService.getParamBySecondOrganize("User", "status")); this.addDict(model, "status", paramService.getParamBySecondOrganize("User", "status"));
List<RoleEntity> roleList = roleService.find(new RoleEntity());
super.addDict(model, "roleId", roleList.stream().collect(Collectors.toMap(e->e.getId().toString(), e->e.getName())));
super.init(model, context); super.init(model, context);
} }
@Override
public String list(@RequestBody(required = false) UserEntity query) {
Map<String, Object> model = new HashMap();
JSONObject ret = new JSONObject();
Context context = this.getContext();
String busiDesc = "查询" + this.getModuleDesc();
int code;
try {
PageInfo pageInfo = this.buildPageInfo(query);
this.doListBefore(query, model, context);
Result result = this.getService().findExt(query, pageInfo, context);
model.put("data", result.getList());
model.put("pageInfo", result.getPageInfo());
this.parsePageInfo(model, result.getPageInfo());
code = this.doListAfter(query, model, context);
this.recordSysLog(this.request, busiDesc + " 【成功】");
} catch (Exception var9) {
code = -1;
this.doException(this.request, busiDesc, model, var9);
}
this.init(model, context);
ret.put("code", code);
ret.put("msg", model.remove("message_info"));
ret.put("dict", model.remove("dict"));
ret.put("data", model);
return ret.toJSONString();
}
} }
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"mybatis-3-mapper.dtd"> "mybatis-3-mapper.dtd">
<mapper namespace="com.mortals.xhx.module.user.dao.ibatis.UserDaoImpl"> <mapper namespace="com.mortals.xhx.module.user.dao.ibatis.UserDaoImpl">
<!-- 字段和属性映射 -->
<resultMap type="UserEntityExt" id="UserEntityExt-Map">
<id property="id" column="id" />
<result property="loginName" column="loginName" />
<result property="loginPwd" column="loginPwd" />
<result property="loginLimitAddress" column="loginLimitAddress" />
<result property="realName" column="realName" />
<result property="mobile" column="mobile" />
<result property="phone" column="phone" />
<result property="email" column="email" />
<result property="qq" column="qq" />
<result property="userType" column="userType" />
<result property="siteIds" column="siteIds" />
<result property="areaCodes" column="areaCodes" />
<result property="status" column="status" />
<result property="createTime" column="createTime" />
<result property="createUserId" column="createUserId" />
<result property="createUserName" column="createUserName" />
<result property="lastLoginTime" column="lastLoginTime" />
<result property="lastLoginAddress" column="lastLoginAddress" />
<result property="roleIds" column="roleIds" />
<result property="roleNames" column="roleNames" />
</resultMap>
<!-- 获取列表 --> <!-- 获取列表 -->
<select id="getAuthListById" parameterType="paramDto" resultType="Long"> <select id="getAuthListById" parameterType="paramDto" resultType="Long">
select resourceId select resourceId
from mortals_iot_role_auth as a from mortals_iot_role_auth as a
left join mortals_iot_role_user as b left join mortals_iot_role_user as b
on a.roleId=b.roleId on a.roleId=b.roleId
where b.userId=#{condition.id} where b.userId=#{condition.id}
</select>
<!-- 表所有列 -->
<sql id="_columnsExt">
<trim suffixOverrides="," suffix="">
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('id') or colPickMode == 1 and data.containsKey('id')))">
a.id,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('loginName') or colPickMode == 1 and data.containsKey('loginName')))">
a.loginName,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('loginPwd') or colPickMode == 1 and data.containsKey('loginPwd')))">
a.loginPwd,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('loginLimitAddress') or colPickMode == 1 and data.containsKey('loginLimitAddress')))">
a.loginLimitAddress,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('realName') or colPickMode == 1 and data.containsKey('realName')))">
a.realName,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('mobile') or colPickMode == 1 and data.containsKey('mobile')))">
a.mobile,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('phone') or colPickMode == 1 and data.containsKey('phone')))">
a.phone,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('email') or colPickMode == 1 and data.containsKey('email')))">
a.email,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('qq') or colPickMode == 1 and data.containsKey('qq')))">
a.qq,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('userType') or colPickMode == 1 and data.containsKey('userType')))">
a.userType,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('siteIds') or colPickMode == 1 and data.containsKey('siteIds')))">
a.siteIds,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('areaCodes') or colPickMode == 1 and data.containsKey('areaCodes')))">
a.areaCodes,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('status') or colPickMode == 1 and data.containsKey('status')))">
a.status,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('createTime') or colPickMode == 1 and data.containsKey('createTime')))">
a.createTime,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('createUserId') or colPickMode == 1 and data.containsKey('createUserId')))">
a.createUserId,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('createUserName') or colPickMode == 1 and data.containsKey('createUserName')))">
a.createUserName,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('lastLoginTime') or colPickMode == 1 and data.containsKey('lastLoginTime')))">
a.lastLoginTime,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('lastLoginAddress') or colPickMode == 1 and data.containsKey('lastLoginAddress')))">
a.lastLoginAddress,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('roleIds') or colPickMode == 1 and data.containsKey('roleIds')))">
a.roleIds,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('roleNames') or colPickMode == 1 and data.containsKey('roleNames')))">
a.roleNames,
</if>
</trim>
</sql>
<!-- 获取列表 -->
<select id="getListExt" parameterType="paramDto" resultMap="UserEntityExt-Map">
select <include refid="_columnsExt"/>
from (
SELECT
u.*, group_concat(r.id) AS roleIds,
group_concat(r. NAME) AS roleNames
FROM
mortals_xhx_user u
LEFT JOIN mortals_xhx_role_user ru ON u.id = ru.userId
LEFT JOIN mortals_xhx_role r ON ru.roleId = r.id
GROUP BY
u.id
) as a
<trim suffixOverrides="where" suffix="">
where
<trim prefixOverrides="and" prefix="">
<include refid="_condition_"/>
<if test="condition != null and !condition.isEmpty()">
<if test="condition.containsKey('roleId')">
<if test="condition.roleId != null">
and find_in_set(#{condition.roleId}, a.roleIds)
</if>
</if>
</if>
</trim>
</trim>
<include refid="_orderCols_"/>
</select>
<!-- 获取 -->
<select id="getListExtCount" parameterType="paramDto" resultType="int">
select count(1)
from (
SELECT
u.*, group_concat(r.id) AS roleIds,
group_concat(r. NAME) AS roleNames
FROM
mortals_xhx_user u
LEFT JOIN mortals_xhx_role_user ru ON u.id = ru.userId
LEFT JOIN mortals_xhx_role r ON ru.roleId = r.id
GROUP BY
u.id
) as a
<trim suffixOverrides="where" suffix="">
where
<trim prefixOverrides="and" prefix="">
<include refid="_condition_"/>
<if test="condition != null and !condition.isEmpty()">
<if test="condition.containsKey('roleId')">
<if test="condition.roleId != null">
and find_in_set(#{condition.roleId}, a.roleIds)
</if>
</if>
</if>
</trim>
</trim>
</select> </select>
</mapper> </mapper>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment