src/main/java/org/springblade/modules/system/controller/UserWxController.java
@@ -111,7 +111,60 @@ return R.status(result); } /** * 自定义用户列表(微信小程序注册用户数据和系统用户数据结构一致,库不同) */ @GetMapping("/page") @ApiImplicitParams({ @ApiImplicitParam(name = "account", value = "账号名", paramType = "query", dataType = "string"), @ApiImplicitParam(name = "realName", value = "姓名", paramType = "query", dataType = "string") }) @ApiOperationSupport(order = 3) @ApiOperation(value = "列表", notes = "传入account和realName") public R<IPage<UserVO>> page(@ApiIgnore User user, Query query, Long deptId) { IPage<UserVO> pages = userWxService.selectUserPage(Condition.getPage(query), user, deptId, (AuthUtil.getTenantId().equals(BladeConstant.ADMIN_TENANT_ID) ? StringPool.EMPTY : AuthUtil.getTenantId())); return R.data(pages); } /** * 用户详情 * * @param user * @return */ @GetMapping("/details") public R details(User user) { UserVO userInfo = userWxService.getUserDetailById(user.getId()); if (null != userInfo.getFingerprint() && !userInfo.getFingerprint().equals("")) { //url 转base64 String base64Url = ImageUtils.imageUrlToBase64(userInfo.getFingerprint()); userInfo.setFingerprint(base64Url); } return R.data(userInfo); } /** * 重置密码 */ @PostMapping("/reset-password") @ApiOperationSupport(order = 8) @ApiOperation(value = "初始化密码", notes = "传入userId集合") //@PreAuth(RoleConstant.HAS_ROLE_ADMIN) public R resetPassword(@ApiParam(value = "userId集合", required = true) @RequestParam String userIds) { boolean temp = userWxService.resetPassword(userIds); return R.status(temp); } /** * 删除 */ @PostMapping("/remove") @ApiOperationSupport(order = 6) @ApiOperation(value = "删除", notes = "传入id集合") public R remove(@RequestParam String ids) { // CacheUtil.clear(USER_CACHE); List<String> list = Arrays.asList(ids.split(",")); return R.status(userWxService.removeUser(ids)); } } src/main/java/org/springblade/modules/system/mapper/UserWxMapper.java
@@ -1,8 +1,27 @@ package org.springblade.modules.system.mapper; import com.baomidou.mybatisplus.annotation.SqlParser; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import org.apache.ibatis.annotations.Param; import org.springblade.modules.system.entity.User; import org.springblade.modules.system.entity.UserWx; import org.springblade.modules.system.vo.UserVO; import java.util.List; public interface UserWxMapper extends BaseMapper<UserWx> { UserWx getUserWx(String tenantId, String account, String password); List<UserVO> selectUserPage(IPage<UserVO> page, User user, List<Long> deptIdList, String tenantId); /** * 查询当前部门名称及父级部门名称 * @param deptId 部门名称 * @return */ @SqlParser(filter = true) List<String> getDeptName(@Param("deptId") String deptId); UserVO getUserDetailById(Long id); } src/main/java/org/springblade/modules/system/mapper/UserWxMapper.xml
@@ -1,7 +1,51 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="org.springblade.modules.system.mapper.UserWxMapper"> <!-- 通用查询映射结果 --> <resultMap id="userResultMap" type="org.springblade.modules.system.vo.UserVO"> <result column="id" property="id"/> <result column="tenant_id" property="tenantId"/> <result column="create_user" property="createUser"/> <result column="create_time" property="createTime"/> <result column="update_user" property="updateUser"/> <result column="update_time" property="updateTime"/> <result column="status" property="status"/> <result column="is_deleted" property="isDeleted"/> <result column="code" property="code"/> <result column="user_type" property="userType"/> <result column="account" property="account"/> <result column="password" property="password"/> <result column="name" property="name"/> <result column="real_name" property="realName"/> <result column="email" property="email"/> <result column="phone" property="phone"/> <result column="birthday" property="birthday"/> <result column="sex" property="sex"/> <result column="role_id" property="roleId"/> <result column="dept_id" property="deptId"/> <result column="post_id" property="postId"/> <result column="cardid" property="cardid"/> <result column="nativeplace" property="nativeplace"/> <result column="nation" property="nation"/> <result column="education" property="education"/> <result column="politicaloutlook" property="politicaloutlook"/> <result column="height" property="height"/> <result column="cell" property="cell"/> <result column="emails" property="emails"/> <result column="hold" property="hold"/> <result column="jurisdiction" property="jurisdiction"/> <result column="securitynumber" property="securitynumber"/> <result column="dispatch" property="dispatch"/> <result column="my_picture" property="myPicture"/> <result column="is_apply" property="isApply"/> <result column="is_apply" property="isApply"/> <result column="is_train" property="isTrain"/> <result column="birthtime" property="birthtime"/> <result column="healstats" property="healstats"/> <result column="soil" property="soil"/> <result column="reason_for_leav" property="reasonForLeav"/> <result column="accreditationStatus" property="accreditationStatus"/> </resultMap> <select id="getUserWx" resultType="org.springblade.modules.system.entity.UserWx"> SELECT * @@ -12,4 +56,95 @@ and is_deleted = 0 and status = 1 </select> <!--查询当前部门名称及父级部门名称--> <select id="getDeptName" resultType="java.lang.String"> (select dept_name from blade_dept where id = #{deptId} and 1=1) union ( select dept_name from blade_dept where id = (select parent_id from blade_dept where id= #{deptId} and 1=1) ) </select> <!--用户列表信息--> <select id="selectUserPage" resultMap="userResultMap"> select bu.* from blade_user_wx bu left join blade_dept bd on bd.id = bu.dept_id left join sys_jurisdiction sj on sj.id = bu.jurisdiction left join blade_role br on br.id = bu.role_id where bu.is_deleted = 0 and bu.id != 1123598821738675201 <if test="user.cardid != null and user.cardid !=''"> and bu.cardid like concat('%', #{user.cardid},'%') </if> <if test="user.tenantId!=null and user.tenantId != ''"> and tenant_id = #{user.tenantId} </if> <if test="user.account!=null and user.account != ''"> and account like concat('%', #{user.account},'%') </if> <if test="user.isFreeze!=null"> and bu.is_freeze = #{user.isFreeze} </if> <if test="user.roleId!=null and user.roleId != ''"> and (br.role_alias = '公安管理员' or br.role_alias = '民警') </if> <if test="user.realName!=null and user.realName != ''"> and real_name like concat(concat('%', #{user.realName}),'%') </if> <if test="user.deptId!=null and user.deptId != ''"> and bd.id in ( select id from blade_dept where id = #{user.deptId} union SELECT id FROM ( SELECT t1.id,t1.parent_id,t1.dept_name, IF ( find_in_set( parent_id, @pids ) > 0, @pids := concat( @pids, ',', id ), 0 ) AS ischild FROM ( SELECT id, parent_id,dept_name FROM blade_dept t ORDER BY parent_id, id ) t1, ( SELECT @pids := #{user.deptId} ) t2 ) t3 WHERE ischild != 0 ) </if> <if test="user.userType!=null and user.userType != ''"> and user_type = #{user.userType} </if> <if test="user.nativeplace!=null and user.nativeplace != ''"> and nativeplace = #{user.nativeplace} </if> <if test="user.sex!=null and user.sex != ''"> and sex = #{user.sex} </if> <if test="user.status!=null and user.status != ''"> and status = #{user.status} </if> <if test="user.hold!=null and user.hold != ''"> and hold = #{user.hold} </if> <if test="user.jurisdiction!=null and user.jurisdiction != '' and user.jurisdiction!='1372091709474910209'"> and (sj.id = #{user.jurisdiction} or sj.parent_id = #{user.jurisdiction}) </if> <if test="user.securitynumber!=null and user.securitynumber != ''"> and securitynumber = #{user.securitynumber} </if> <if test="user.examinationType!=null and user.examinationType != ''"> and examination_type = #{user.examinationType} </if> ORDER BY bu.id desc </select> <select id="getUserDetailById" resultType="org.springblade.modules.system.vo.UserVO"> select bu.* from blade_user_wx bu where bu.is_deleted = 0 and bu.id = #{id} </select> </mapper> src/main/java/org/springblade/modules/system/service/IUserWxService.java
@@ -1,8 +1,10 @@ package org.springblade.modules.system.service; import com.baomidou.mybatisplus.core.metadata.IPage; import org.springblade.core.mp.base.BaseService; import org.springblade.modules.system.entity.User; import org.springblade.modules.system.entity.UserWx; import org.springblade.modules.system.vo.UserVO; public interface IUserWxService extends BaseService<UserWx> { /** @@ -13,4 +15,32 @@ Boolean wxRegister(UserWx user); UserWx getUserWx(String tenantId, String account, String password); /** * 自定义分页 * * @param page * @param user * @param deptId * @param tenantId * @return */ IPage<UserVO> selectUserPage(IPage<UserVO> page, User user, Long deptId, String tenantId); /** * 自定义查询详情信息 * @param id * @return */ UserVO getUserDetailById(Long id); boolean resetPassword(String userIds); /** * 删除用户 * * @param userIds * @return */ boolean removeUser(String userIds); } src/main/java/org/springblade/modules/system/service/impl/UserWxServiceImpl.java
@@ -1,21 +1,36 @@ package org.springblade.modules.system.service.impl; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.AllArgsConstructor; import org.springblade.common.cache.SysCache; import org.springblade.common.constant.CommonConstant; import org.springblade.core.log.exception.ServiceException; import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.mp.support.Condition; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.tool.utils.DigestUtil; import org.springblade.core.tool.utils.Func; import org.springblade.core.tool.utils.StringUtil; import org.springblade.modules.system.entity.Role; import org.springblade.modules.system.entity.User; import org.springblade.modules.system.entity.UserWx; import org.springblade.modules.system.mapper.UserWxMapper; import org.springblade.modules.system.service.IRoleService; import org.springblade.modules.system.service.IUserWxService; import org.springblade.modules.system.vo.UserVO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.Arrays; import java.util.List; @Service @AllArgsConstructor public class UserWxServiceImpl extends BaseServiceImpl<UserWxMapper, UserWx> implements IUserWxService { private final IRoleService roleService; @Override public Boolean wxRegister(UserWx user) { @@ -28,7 +43,7 @@ params.setCardid(user.getCardid()); //查看数据库是否有相同身份证号 List<UserWx> list = list(Condition.getQueryWrapper(params)); if (list.size()>0){ if (list.size() > 0) { throw new ServiceException("该身份证号已注册"); } @@ -39,11 +54,11 @@ //微信注册机构 user.setDeptId("1734016112398020609"); user.setTenantId("000000"); if (StringUtil.isNotBlank(user.getRealName())){ if (StringUtil.isNotBlank(user.getRealName())) { user.setName(user.getRealName()); }else{ user.setName("微信用户"+user.getPhone()); user.setRealName("微信用户"+user.getPhone()); } else { user.setName("微信用户" + user.getPhone()); user.setRealName("微信用户" + user.getPhone()); } boolean save = save(user); return save; @@ -53,4 +68,67 @@ public UserWx getUserWx(String tenantId, String account, String password) { return baseMapper.getUserWx(tenantId, account, password); } @Override public IPage<UserVO> selectUserPage(IPage<UserVO> page, User user, Long deptId, String tenantId) { List<Long> deptIdList = SysCache.getDeptChildIds(deptId); List<UserVO> users = baseMapper.selectUserPage(page, user, deptIdList, tenantId); if (users.size() > 0) { //遍历获取部门名称,角色名称 users.forEach(userVO -> { //查询当前部门名称及父级部门名称 if (null != userVO.getDeptId()) { List<String> list = baseMapper.getDeptName(userVO.getDeptId()); if (list.size() > 1) { if (null != list.get(1) && list.get(1) != "") { userVO.setDeptName(list.get(1) + "," + list.get(0)); } else { userVO.setDeptName(list.get(0)); } } if (list.size() == 1) { userVO.setDeptName(list.get(0)); } } //查询角色名称 if (null != userVO.getRoleId()) { List<String> asList = Arrays.asList(userVO.getRoleId().split(",")); StringBuilder builder = new StringBuilder(); asList.forEach(roleIs -> { Role role = roleService.getById(roleIs); if (null != role) { builder.append(role.getRoleName() + ","); } }); String substringRoleName = null; if (builder.toString().length() > 0) { substringRoleName = builder.toString().substring(0, builder.toString().length() - 1); } userVO.setRoleName(substringRoleName); } }); } return page.setRecords(users); } @Override public UserVO getUserDetailById(Long id) { return baseMapper.getUserDetailById(id); } @Override public boolean resetPassword(String userIds) { UserWx user = new UserWx(); user.setPassword(DigestUtil.encrypt(CommonConstant.DEFAULT_PASSWORD)); user.setUpdateTime(DateUtil.now()); return this.update(user, Wrappers.<UserWx>update().lambda().in(UserWx::getId, Func.toLongList(userIds))); } @Override public boolean removeUser(String userIds) { if (Func.contains(Func.toLongArray(userIds), AuthUtil.getUserId())) { throw new ServiceException("不能删除本账号!"); } return deleteLogic(Func.toLongList(userIds)); } }