智慧保安后台管理-外网项目备份
guoshilong
2024-01-10 b760be32e710b2f286128614ef1ace5283a32cdb
微信用户接口
5 files modified
327 ■■■■■ changed files
src/main/java/org/springblade/modules/system/controller/UserWxController.java 53 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/system/mapper/UserWxMapper.java 19 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/system/mapper/UserWxMapper.xml 137 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/system/service/IUserWxService.java 30 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/system/service/impl/UserWxServiceImpl.java 88 ●●●●● patch | view | raw | blame | history
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));
    }
}