SysUserService.java 6.7 KB
Newer Older
D
dingzhiwei 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
/*
 * Copyright (c) 2021-2031, 河北计全科技有限公司 (https://www.jeequan.com & jeequan@126.com).
 * <p>
 * Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0;
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * <p>
 * http://www.gnu.org/licenses/lgpl.html
 * <p>
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.jeequan.jeepay.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jeequan.jeepay.core.constants.CS;
import com.jeequan.jeepay.core.entity.SysUser;
21
import com.jeequan.jeepay.core.entity.SysUserAuth;
D
dingzhiwei 已提交
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
import com.jeequan.jeepay.core.entity.SysUserRoleRela;
import com.jeequan.jeepay.core.exception.BizException;
import com.jeequan.jeepay.core.utils.StringKit;
import com.jeequan.jeepay.service.mapper.SysUserMapper;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * <p>
 * 系统操作员表 服务实现类
 * </p>
 *
 * @author [mybatis plus generator]
 * @since 2020-06-13
 */
@Service
public class SysUserService extends ServiceImpl<SysUserMapper, SysUser> {

    @Autowired private SysUserAuthService sysUserAuthService;
    @Autowired private SysUserRoleRelaService sysUserRoleRelaService;


    /** 添加系统用户 **/
    @Transactional
terrfly's avatar
terrfly 已提交
50
    public void addSysUser(SysUser sysUser, String sysType){
D
dingzhiwei 已提交
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65

        //判断获取到选择的角色集合
//        String roleIdListStr = sysUser.extv().getString("roleIdListStr");
//        if(StringKit.isEmpty(roleIdListStr)) throw new BizException("请选择角色信息!");
//
//        List<String> roleIdList = JSONArray.parseArray(roleIdListStr, String.class);
//        if(roleIdList.isEmpty()) throw new BizException("请选择角色信息!");

        // 判断数据来源
        if( StringUtils.isEmpty(sysUser.getLoginUsername()) ) throw new BizException("登录用户名不能为空!");
        if( StringUtils.isEmpty(sysUser.getRealname()) )throw new BizException("姓名不能为空!");
        if( StringUtils.isEmpty(sysUser.getTelphone()) ) throw new BizException("手机号不能为空!");
        if(sysUser.getSex() == null ) throw new BizException("性别不能为空!");

        //登录用户名不可重复
terrfly's avatar
terrfly 已提交
66
        if( count(SysUser.gw().eq(SysUser::getSysType, sysType).eq(SysUser::getLoginUsername, sysUser.getLoginUsername())) > 0 ){
D
dingzhiwei 已提交
67 68 69
            throw new BizException("登录用户名已存在!");
        }
        //手机号不可重复
terrfly's avatar
terrfly 已提交
70
        if( count(SysUser.gw().eq(SysUser::getSysType, sysType).eq(SysUser::getTelphone, sysUser.getTelphone())) > 0 ){
D
dingzhiwei 已提交
71 72 73
            throw new BizException("手机号已存在!");
        }
        //员工号不可重复
terrfly's avatar
terrfly 已提交
74
        if( count(SysUser.gw().eq(SysUser::getSysType, sysType).eq(SysUser::getUserNo, sysUser.getUserNo())) > 0 ){
D
dingzhiwei 已提交
75 76 77 78 79
            throw new BizException("员工号已存在!");
        }

        //女  默认头像
        if(sysUser.getSex() != null && CS.SEX_FEMALE == sysUser.getSex()){
D
dingzhiwei 已提交
80
            sysUser.setAvatarUrl("https://jeequan.oss-cn-beijing.aliyuncs.com/jeepay/img/defava_f.png");
D
dingzhiwei 已提交
81
        }else{
D
dingzhiwei 已提交
82
            sysUser.setAvatarUrl("https://jeequan.oss-cn-beijing.aliyuncs.com/jeepay/img/defava_m.png");
D
dingzhiwei 已提交
83 84 85
        }

        //1. 插入用户主表
terrfly's avatar
terrfly 已提交
86
        sysUser.setSysType(sysType); // 系统类型
D
dingzhiwei 已提交
87 88 89 90 91 92 93
        this.save(sysUser);

        Long sysUserId = sysUser.getSysUserId();

        //添加到 user_auth表
        String authPwd = CS.DEFAULT_PWD;

terrfly's avatar
terrfly 已提交
94
        sysUserAuthService.addUserAuthDefault(sysUserId, sysUser.getLoginUsername(), sysUser.getTelphone(), authPwd, sysType);
D
dingzhiwei 已提交
95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112

        //3. 添加用户角色信息
        //saveUserRole(sysUser.getSysUserId(), new ArrayList<>());

    }

    //修改用户信息
    @Transactional
    public void updateSysUser(SysUser sysUser){

        Long sysUserId = sysUser.getSysUserId();
        SysUser dbRecord = getById(sysUserId);

        if (dbRecord == null) throw new BizException("该用户不存在");

        //修改了手机号, 需要修改auth表信息
        if(!dbRecord.getTelphone().equals(sysUser.getTelphone())){

terrfly's avatar
terrfly 已提交
113
            if(count(SysUser.gw().eq(SysUser::getSysType, dbRecord.getSysType()).eq(SysUser::getTelphone, sysUser.getTelphone())) > 0){
D
dingzhiwei 已提交
114 115 116
                throw new BizException("该手机号已关联其他用户!");
            }

terrfly's avatar
terrfly 已提交
117
            sysUserAuthService.resetAuthInfo(sysUserId, null, sysUser.getTelphone(), null, dbRecord.getSysType());
D
dingzhiwei 已提交
118 119 120 121 122
        }

        //修改了手机号, 需要修改auth表信息
        if(!dbRecord.getLoginUsername().equals(sysUser.getLoginUsername())){

terrfly's avatar
terrfly 已提交
123
            if(count(SysUser.gw().eq(SysUser::getSysType, dbRecord.getSysType()).eq(SysUser::getLoginUsername, sysUser.getLoginUsername())) > 0){
D
dingzhiwei 已提交
124 125 126
                throw new BizException("该登录用户名已关联其他用户!");
            }

terrfly's avatar
terrfly 已提交
127
            sysUserAuthService.resetAuthInfo(sysUserId, sysUser.getLoginUsername(), null, null, dbRecord.getSysType());
D
dingzhiwei 已提交
128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147
        }

        //修改用户主表
        baseMapper.updateById(sysUser);
    }


    /** 分配用户角色 **/
    @Transactional
    public void saveUserRole(Long userId, List<String> roleIdList) {

        //删除用户之前的 角色信息
        sysUserRoleRelaService.remove(SysUserRoleRela.gw().eq(SysUserRoleRela::getUserId, userId));
        for (String roleId : roleIdList) {
            SysUserRoleRela addRecord = new SysUserRoleRela();
            addRecord.setUserId(userId); addRecord.setRoleId(roleId);
            sysUserRoleRelaService.save(addRecord);
        }
    }

148 149 150 151 152 153 154 155 156 157 158 159 160
    /** 删除用户 **/
    @Transactional
    public void removeUser(SysUser sysUser, String sysType) {
        // 1.删除用户登录信息
        sysUserAuthService.remove(SysUserAuth.gw()
                .eq(SysUserAuth::getSysType, sysType)
                .in(SysUserAuth::getUserId, sysUser.getSysUserId())
        );
        // 2.删除用户角色信息
        sysUserRoleRelaService.removeById(sysUser.getSysUserId());
        // 3.删除用户信息
        removeById(sysUser.getSysUserId());
    }
161 162 163 164 165 166 167 168 169 170 171 172


    /** 获取到商户的超管用户ID  **/
    public Long findMchAdminUserId(String mchNo){

        return getOne(SysUser.gw().select(SysUser::getSysUserId)
                .eq(SysUser::getBelongInfoId, mchNo)
                .eq(SysUser::getSysType, CS.SYS_TYPE.MCH)
                .eq(SysUser::getIsAdmin, CS.YES)).getSysUserId();

    }

D
dingzhiwei 已提交
173
}