Browse Source

用户管理

LiTaohong 6 years ago
parent
commit
e9525475ea

+ 10 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/base/role/RoleDO.java

@ -14,6 +14,16 @@ import javax.persistence.Table;
@Table(name = "base_role")
public class RoleDO extends UuidIdentityEntityWithOperator {
	// 基础三大类角色,对应base_role中code的值,如果有改,务必保持同步
	public enum BaseRoleType{
		// 超级管理员
		admin,
		// 租户管理员
		saasAdmin,
		//机构管理员
		hosAdmin
	}
	/**
	 * 角色代码
	 */

+ 4 - 0
common/common-request-mapping/src/main/java/com/yihu/jw/rm/base/BaseRequestMapping.java

@ -160,6 +160,10 @@ public class BaseRequestMapping {
        public static final String CHECK_USERNAME = "/check_username";
        public static final String CHECK_MOBILE = "/check_mobile";
        public static final String findUserBaseInfo = "/findUserBaseInfo";
        public static final String resetPwd = "/resetPwd";
        public static final String queryOne = "/queryOne";
        public static final String orgTreeInfo = "/orgTreeInfo";
        public static final String lockOrUnlock = "/lockOrUnlock";
    }
    /**

+ 5 - 0
svr/svr-base/src/main/java/com/yihu/jw/base/dao/org/BaseOrgSaasDao.java

@ -2,9 +2,11 @@ package com.yihu.jw.base.dao.org;
import com.yihu.jw.entity.base.org.BaseOrgSaasDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
import java.util.Set;
/**
@ -22,4 +24,7 @@ import java.util.List;
public interface BaseOrgSaasDao extends PagingAndSortingRepository<BaseOrgSaasDO, String>, JpaSpecificationExecutor<BaseOrgSaasDO>  {
    List<BaseOrgSaasDO> findBySaasid(String saasId);
    @Query("select distinct orgCode from BaseOrgSaasDO where saasid = ?1")
    Set<String> findOrgCodeListBySaasid(String saasid);
}

+ 9 - 0
svr/svr-base/src/main/java/com/yihu/jw/base/dao/org/BaseOrgUserDao.java

@ -2,9 +2,11 @@ package com.yihu.jw.base.dao.org;
import com.yihu.jw.entity.base.org.BaseOrgUserDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
import java.util.Set;
/**
@ -22,4 +24,11 @@ import java.util.List;
public interface BaseOrgUserDao extends PagingAndSortingRepository<BaseOrgUserDO, String>, JpaSpecificationExecutor<BaseOrgUserDO>  {
    List<BaseOrgUserDO> findAllByOrgCode(String orgCode);
    @Query("select id from BaseOrgUserDO where userId = ?1")
    Set<Object> findIdListByUserId(String userId);
    @Query("select orgCode from BaseOrgUserDO where userId = ?1")
    Set<String> findorgCodeListByUserId(String userId);
}

+ 2 - 1
svr/svr-base/src/main/java/com/yihu/jw/base/dao/org/OrgTreeDao.java

@ -10,6 +10,7 @@ import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
 * 
@ -29,7 +30,7 @@ public interface OrgTreeDao extends PagingAndSortingRepository<OrgTree, Integer>
    List<OrgTree> findByLevelLessThanEqual(Integer level);
    OrgTree findByCodeAndLevel(String code,Integer level);
    List<OrgTree> findAllByLevelAndCodeIn(String level,Set<String> code );
    OrgTree findByCodeAndParentCode(String code,String parentCode);

+ 1 - 0
svr/svr-base/src/main/java/com/yihu/jw/base/dao/user/UserDao.java

@ -23,4 +23,5 @@ public interface UserDao extends PagingAndSortingRepository<UserDO, String>, Jpa
    boolean existsByUsername(String username);
    UserDO findByUsername(String username);
}

+ 95 - 10
svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/user/UserEndpoint.java

@ -2,6 +2,7 @@ package com.yihu.jw.base.endpoint.user;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.base.service.user.UserService;
import com.yihu.jw.base.util.ConstantUtils;
import com.yihu.jw.entity.base.user.UserDO;
import com.yihu.jw.restmodel.base.user.UserVO;
import com.yihu.jw.restmodel.web.Envelop;
@ -34,12 +35,14 @@ public class UserEndpoint extends EnvelopRestEndpoint {
    @PostMapping(value = BaseRequestMapping.User.CREATE, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @ApiOperation(value = "创建")
    public ObjEnvelop<UserVO> create (
    public Envelop create (
            @ApiParam(name = "json_data", value = "Json数据", required = true)
            @RequestBody String jsonData) throws Exception {
        UserDO userDO = toEntity(jsonData, UserDO.class);
        userDO = userService.registerWithIdcard(userDO);
        return success(userDO, UserVO.class);
        JSONObject jsonObject =  userService.createUser(jsonData);
        if (jsonObject.getString("response").equalsIgnoreCase(ConstantUtils.FAIL)) {
            return failed(jsonObject.getString("msg"));
        }
        return success(jsonObject.getString("msg"));
    }
    @PostMapping(value = BaseRequestMapping.User.DELETE)
@ -56,12 +59,11 @@ public class UserEndpoint extends EnvelopRestEndpoint {
    public Envelop update (
            @ApiParam(name = "json_data", value = "Json数据", required = true)
            @RequestBody String jsonData) throws Exception {
        UserDO userDO = toEntity(jsonData, UserDO.class);
        if (null == userDO.getId()) {
            return failed("ID不能为空", Envelop.class);
        JSONObject jsonObject =  userService.updateUser(jsonData);
        if (jsonObject.getString("response").equalsIgnoreCase(ConstantUtils.FAIL)) {
            return failed(jsonObject.getString("msg"));
        }
        userDO = userService.save(userDO);
        return success(userDO);
        return success(jsonObject.getString("msg"));
    }
    @GetMapping(value = BaseRequestMapping.User.PAGE)
@ -100,7 +102,7 @@ public class UserEndpoint extends EnvelopRestEndpoint {
    public Envelop checkName (
            @ApiParam(name = "username", value = "用户名", required = true)
            @RequestParam(value = "username", required = false) String username) throws Exception {
        if (userService.existUserName(username)) {
        if (userService.existUsername(username)) {
            return success("inavailable");
        } else {
            return success("available");
@ -125,4 +127,87 @@ public class UserEndpoint extends EnvelopRestEndpoint {
                                                               @RequestParam(value = "id", required = false)String id){
        return success(BaseRequestMapping.User.api_success,userService.findUserBaseInfo(id));
    }
    /**
     * 获取单个用户信息
     *
     * @param id
     * @return
     * @throws Exception
     */
    @PostMapping(value = BaseRequestMapping.User.queryOne)
    @ApiOperation(value = "获取单个用户信息")
    public Envelop doctorHosplist(
            @ApiParam(name = "id", value = "获取单个用户信息")
            @RequestParam(value = "id", required = true) String id) throws Exception {
        JSONObject jsonObject = userService.getOneUserInfo(id);
        if (jsonObject.getString("response").equalsIgnoreCase(ConstantUtils.FAIL)) {
            return failed(jsonObject.getString("msg"));
        }
        return success(jsonObject.getJSONObject("msg"));
    }
    /**
     * 获取用户管理机构树 省/市/区/机构 树形结构数据
     *
     * @param saasid
     * @return
     * @throws Exception
     */
    @GetMapping(value = BaseRequestMapping.User.orgTreeInfo)
    @ApiOperation(value = "获取用户管理机构树 省/市/区/机构 树形结构数据")
    public Envelop getOrgDutyTree(
            @ApiParam(name = "saasid", value = "saasid")
            @RequestParam(value = "saasid", required = false) String saasid,
            @ApiParam(name = "userId", value = "userId")
            @RequestParam(value = "userId", required = false) String userId,
            @ApiParam(name = "roleCode", value = "roleCode")
            @RequestParam(value = "roleCode", required = false) String roleCode) throws Exception {
        JSONObject jsonObject = userService.generateUserOrgTree(saasid,userId,roleCode);
        if (jsonObject.getString("response").equalsIgnoreCase(ConstantUtils.FAIL)) {
            return failed(jsonObject.getString("msg"));
        }
        return success(jsonObject.get("msg"));
    }
    /**
     * 生效或失效某个用户
     *
     * @param id
     * @param status
     * @return
     * @throws Exception
     */
    @PostMapping(value = BaseRequestMapping.User.lockOrUnlock)
    @ApiOperation(value = "生效或失效某个用户")
    public Envelop enableOrDisableOrg(
            @ApiParam(name = "id", value = "用户标识")
            @RequestParam(value = "id", required = true) String id,
            @ApiParam(name = "status", value = "生效或失效标识")
            @RequestParam(value = "status", required = true) boolean status) throws Exception {
        JSONObject jsonObject =  userService.lockOrUnlocakUser(id, status);
        if (jsonObject.getString("response").equalsIgnoreCase(ConstantUtils.FAIL)) {
            return failed(jsonObject.getString("msg"));
        }
        return success(jsonObject.getString("response"));
    }
    /**
     * 重置密码
     *
     * @param id
     * @return
     * @throws Exception
     */
    @PostMapping(value = BaseRequestMapping.User.resetPwd)
    @ApiOperation(value = "重置密码")
    public Envelop resetPwd(
            @ApiParam(name = "id", value = "用户标识")
            @RequestParam(value = "id", required = true) String id) throws Exception {
        JSONObject jsonObject =  userService.resetPassword(id);
        if (jsonObject.getString("response").equalsIgnoreCase(ConstantUtils.FAIL)) {
            return failed(jsonObject.getString("msg"));
        }
        return success(jsonObject.getString("response"));
    }
}

+ 2 - 19
svr/svr-base/src/main/java/com/yihu/jw/base/service/doctor/BaseDoctorService.java

@ -475,7 +475,7 @@ public class BaseDoctorService extends BaseJpaService<BaseDoctorDO, BaseDoctorDa
        }
        result.put("response", ConstantUtils.SUCCESS);
        // 不同医院职务可以相同
        result.put("msg", objectMapper.readValue(makeTree(orgTreeList,true),JSONArray.class));
        result.put("msg", objectMapper.readValue(orgTreeService.makeTree(orgTreeList,true),JSONArray.class));
        return result;
    }
@ -557,27 +557,10 @@ public class BaseDoctorService extends BaseJpaService<BaseDoctorDO, BaseDoctorDa
        }
        result.put("response", ConstantUtils.SUCCESS);
        //不同医院科室可以相同
        result.put("msg",objectMapper.readValue(makeTree(orgTreeList,true),JSONArray.class));
        result.put("msg",objectMapper.readValue(orgTreeService.makeTree(orgTreeList,true),JSONArray.class));
        return result;
    }
    /**
     * 构建树形结构
     * @return
     */
    public String makeTree(List<OrgTree> orgTreeList,boolean isAllowedRepeat){
        List<TreeNode> treeNodes = new ArrayList<>();
        treeNodes.addAll(orgTreeList);
        SimpleTree tree = new SimpleTree(treeNodes,isAllowedRepeat);
        List<SimpleTreeNode> treeNode = tree.getRoot();
        SimplePropertyPreFilter filter = new SimplePropertyPreFilter();
        filter.getExcludes().add("parent");
        filter.getExcludes().add("allChildren");
        filter.getExcludes().add("orderNum");
        filter.getExcludes().add("level");
        return JSONObject.toJSONString(treeNode, filter);
    }
    /**
     * 获取某一科室下的医生列表
     * @param deptCode

+ 15 - 0
svr/svr-base/src/main/java/com/yihu/jw/base/service/org/BaseOrgSaasService.java

@ -9,7 +9,9 @@ import org.springframework.stereotype.Service;
import javax.xml.ws.Action;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
/**
 * 
@ -36,4 +38,17 @@ public class BaseOrgSaasService extends BaseJpaService<BaseOrgSaasDO, BaseOrgSaa
        }
        return baseOrgSaasDao.findBySaasid(saasId);
    }
    /**
     * 查找某一个租户下的机构id列表
     * @param saasId
     * @return
     */
    public Set<String> findOrgCodeListBySaasid(String saasId){
        Set<String> result =  new HashSet<>();
        if(StringUtils.isEmpty(saasId)){
            return result;
        }
        return baseOrgSaasDao.findOrgCodeListBySaasid(saasId);
    }
}

+ 32 - 0
svr/svr-base/src/main/java/com/yihu/jw/base/service/org/BaseOrgUserService.java

@ -8,7 +8,9 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
/**
 * 
@ -32,4 +34,34 @@ public class BaseOrgUserService extends BaseJpaService<BaseOrgUserDO, BaseOrgUse
        List<BaseOrgUserDO> result = new ArrayList<>();
        return StringUtils.isEmpty(orgCode) ? result : baseOrgUserDao.findAllByOrgCode(orgCode);
    }
    /**
     * 根据用户标识获取用户关联的机构Id列表
     *
     * @param userId
     * @return
     */
    public Set<Object> findIdListByUserId(String userId) {
        Set<Object> result = new HashSet<>();
        if (StringUtils.isEmpty(userId)) {
            return result;
        }
        return baseOrgUserDao.findIdListByUserId(userId);
    }
    /**
     * 根据用户标识获取用户关联的机构code列表
     *
     * @param userId
     * @return
     */
    public Set<String> findorgCodeListByUserId(String userId) {
        Set<String> result = new HashSet<>();
        if (StringUtils.isEmpty(userId)) {
            return result;
        }
        return baseOrgUserDao.findorgCodeListByUserId(userId);
    }
}

+ 20 - 0
svr/svr-base/src/main/java/com/yihu/jw/base/service/org/OrgTreeService.java

@ -13,10 +13,12 @@ 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 org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
 * 
@ -181,4 +183,22 @@ public class OrgTreeService extends BaseJpaService<OrgTree, OrgTreeDao> {
        }
        return orgTreeDao.findOrgListByParentCode(townCode);
    }
    /**
     * 构建树形结构
     * @return
     */
    public String makeTree(List<OrgTree> orgTreeList,boolean isAllowedRepeat){
        List<TreeNode> treeNodes = new ArrayList<>();
        treeNodes.addAll(orgTreeList);
        SimpleTree tree = new SimpleTree(treeNodes,isAllowedRepeat);
        List<SimpleTreeNode> treeNode = tree.getRoot();
        SimplePropertyPreFilter filter = new SimplePropertyPreFilter();
        filter.getExcludes().add("parent");
        filter.getExcludes().add("allChildren");
        filter.getExcludes().add("orderNum");
        filter.getExcludes().add("level");
        return JSONObject.toJSONString(treeNode, filter);
    }
}

+ 324 - 42
svr/svr-base/src/main/java/com/yihu/jw/base/service/user/UserService.java

@ -1,10 +1,23 @@
package com.yihu.jw.base.service.user;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.jw.base.dao.role.BaseRoleMenuDao;
import com.yihu.jw.base.dao.role.RoleDao;
import com.yihu.jw.base.dao.saas.SaasDao;
import com.yihu.jw.base.dao.user.UserDao;
import com.yihu.jw.base.service.org.BaseOrgSaasService;
import com.yihu.jw.base.service.org.BaseOrgUserService;
import com.yihu.jw.base.service.org.OrgTree;
import com.yihu.jw.base.service.org.OrgTreeService;
import com.yihu.jw.base.util.ConstantUtils;
import com.yihu.jw.base.util.JavaBeanUtils;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.entity.base.doctor.BaseDoctorHospitalDO;
import com.yihu.jw.entity.base.doctor.BaseDoctorRoleDO;
import com.yihu.jw.entity.base.org.BaseOrgDO;
import com.yihu.jw.entity.base.org.BaseOrgUserDO;
import com.yihu.jw.entity.base.role.RoleDO;
import com.yihu.jw.entity.base.saas.SaasDO;
import com.yihu.jw.entity.base.user.UserDO;
@ -12,13 +25,16 @@ import com.yihu.mysql.query.BaseJpaService;
import com.yihu.utils.security.MD5;
import org.apache.commons.collections.map.HashedMap;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.io.IOException;
import java.util.*;
/**
 * Service - 后台管理员
@ -38,6 +54,22 @@ public class UserService extends BaseJpaService<UserDO, UserDao> {
    @Autowired
    private JdbcTemplate jdbcTemplate;
    @Autowired
    private ObjectMapper objectMapper;
    @Autowired
    private BaseOrgUserService baseOrgUserService;
    @Autowired
    private OrgTreeService orgTreeService;
    @Autowired
    private BaseOrgSaasService baseOrgSaasService;
    @Value("${configDefault.saasId}")
    private String defaultSaasId;
    public UserDO registerWithIdcard(UserDO userDO) {
        userDO.setSalt(randomString(5));
        userDO.setEnabled(true);
@ -53,6 +85,7 @@ public class UserService extends BaseJpaService<UserDO, UserDao> {
    /**
     * 手机号作为账号,初始密码为手机号后6位
     *
     * @param userDO
     * @return
     */
@ -63,7 +96,7 @@ public class UserService extends BaseJpaService<UserDO, UserDao> {
        userDO.setLoginFailureCount(0);
        String password = userDO.getPassword();
        if (StringUtils.isEmpty(password)) {
            password =  userDO.getMobile().substring(0, 5);
            password = userDO.getMobile().substring(0, 5);
        }
        userDO.setPassword(MD5.md5Hex(password + "{" + userDO.getSalt() + "}"));
        return userDao.save(userDO);
@ -72,6 +105,7 @@ public class UserService extends BaseJpaService<UserDO, UserDao> {
    /**
     * 根据用户手机号查找(手机号为登录账号)
     *
     * @param mobile
     * @return
     */
@ -81,6 +115,7 @@ public class UserService extends BaseJpaService<UserDO, UserDao> {
    /**
     * 根据id查找用户
     *
     * @param id
     * @return
     */
@ -90,67 +125,57 @@ public class UserService extends BaseJpaService<UserDO, UserDao> {
    /**
     * 判断手机号是否存在
     *
     * @param mobile
     * @return
     */
    public Boolean existMobile(String mobile){
        if(StringUtils.isEmpty(mobile)) {
    public Boolean existMobile(String mobile) {
        if (StringUtils.isEmpty(mobile)) {
            return null;
        }
        return userDao.existsByMobile(mobile);
    }
    /**
     * 判断用户名是否存在
     * @param username
     * @return
     */
    public Boolean existUserName(String username){
        if(StringUtils.isEmpty(username)) {
            return null;
        }
        return userDao.existsByUsername(username);
    }
    /**
     * 用户管理,获取用户基本信息列表
     * @param name 模糊查询
     *
     * @param name   模糊查询
     * @param saasId 精准匹配,为空查全部
     * @param roleId 精准匹配,为空查全部
     * @return
     */
    public List<Map<String,Object>> queryBaseUserInfoList(String name,String saasId,String roleId){
        List<Map<String,Object>> result = new ArrayList<>();
    public List<Map<String, Object>> queryBaseUserInfoList(String name, String saasId, String roleId) {
        List<Map<String, Object>> result = new ArrayList<>();
        return result;
    }
    public Map<String,Object> findUserBaseInfo(String id){
    public Map<String, Object> findUserBaseInfo(String id) {
        Map<String,Object> userinfo = new HashedMap();
        Map<String, Object> userinfo = new HashedMap();
        UserDO user = userDao.findOne(id);
        RoleDO role = roleDao.findByCode(user.getRoleCode());
        userinfo.put("id",user.getId());
        userinfo.put("name",user.getName());
        userinfo.put("role",role.getName());
        userinfo.put("roleCode",role.getCode());
        userinfo.put("system",role.getSystem());
        userinfo.put("id", user.getId());
        userinfo.put("name", user.getName());
        userinfo.put("role", role.getName());
        userinfo.put("roleCode", role.getCode());
        userinfo.put("system", role.getSystem());
        if("admin".equals(role.getCode())){
        if ("admin".equals(role.getCode())) {
        }else if("saasAdmin".equals(role.getCode())){
        } else if ("saasAdmin".equals(role.getCode())) {
            if(org.apache.commons.lang3.StringUtils.isNotBlank(user.getId())){
            if (org.apache.commons.lang3.StringUtils.isNotBlank(user.getId())) {
                SaasDO saas = saasDao.findOne(user.getSaasId());
                Map<String,Object> ss = new HashedMap();
                ss.put("id",saas.getId());
                ss.put("name",saas.getName());
                userinfo.put("saas",ss);
                Map<String, Object> ss = new HashedMap();
                ss.put("id", saas.getId());
                ss.put("name", saas.getName());
                userinfo.put("saas", ss);
            }
        }else if("hosAdmin".equals(role.getCode())){
        } else if ("hosAdmin".equals(role.getCode())) {
            String sql = "SELECT " +
                    " g.code AS orgCode, " +
                    " g.province_code AS provinceCode, " +
@ -167,16 +192,273 @@ public class UserService extends BaseJpaService<UserDO, UserDao> {
                    " base_org g " +
                    " JOIN base_org_user u ON g.`code` = u.org_code " +
                    " WHERE  " +
                    " u.user_id = '"+id+"'";
            List<Map<String,Object>> org = jdbcTemplate.queryForList(sql);
            userinfo.put("org",org.get(0));
                    " u.user_id = '" + id + "'";
            List<Map<String, Object>> org = jdbcTemplate.queryForList(sql);
            userinfo.put("org", org.get(0));
        }
        return userinfo;
    }
//    public Map<String,Object> findUserMenu(String id){
//
//    }
    /**
     * 创建用户
     *
     * @param jsonData
     * @return
     */
    @Transactional(rollbackFor = Exception.class)
    public JSONObject createUser(String jsonData) {
        JSONObject result = new JSONObject();
        if (StringUtils.isEmpty(jsonData)) {
            result.put("msg", "parameter jsonData is null");
            result.put("response", ConstantUtils.FAIL);
            return result;
        }
        JSONObject jsonObject = JSONObject.parseObject(jsonData);
        JSONObject user = jsonObject.getJSONObject("user");
        JSONArray org = jsonObject.getJSONArray("org");
        if (null == user || CollectionUtils.isEmpty(org)) {
            result.put("msg", "parameter user or org of jsonData is null");
            result.put("response", ConstantUtils.FAIL);
            return result;
        }
        //组装用户信息
        UserDO userDO = null;
        try {
            userDO = objectMapper.readValue(user.toJSONString(), UserDO.class);
        } catch (IOException e) {
            result.put("msg", "convert user jsonObject to UserDO failed," + e.getCause());
            result.put("response", ConstantUtils.FAIL);
            return result;
        }
        registerWithIdcard(userDO);
        //组装用户与机构的关联关系
        List<BaseOrgUserDO> orgList = new ArrayList<>();
        BaseOrgUserDO orgUserDO = null;
        for (Object obj : org) {
            try {
                orgUserDO = objectMapper.readValue(obj.toString(), BaseOrgUserDO.class);
                orgUserDO.setUserId(userDO.getId());
                orgList.add(orgUserDO);
            } catch (IOException e) {
                result.put("msg", "convert org jsonObject to BaseOrgUserDO failed," + e.getCause());
                result.put("response", ConstantUtils.FAIL);
                return result;
            }
        }
        baseOrgUserService.batchInsert(orgList);
        JSONObject returnMsg = new JSONObject();
        returnMsg.put("username",userDO.getUsername());
        returnMsg.put("password",userDO.getSalt());
        result.put("response", ConstantUtils.SUCCESS);
        result.put("msg", returnMsg);
        return result;
    }
    /**
     * 修改用户
     *
     * @param jsonData
     * @return
     */
    @Transactional(rollbackFor = Exception.class)
    public JSONObject updateUser(String jsonData) {
        JSONObject result = new JSONObject();
        if (StringUtils.isEmpty(jsonData)) {
            result.put("msg", "parameter jsonData is null");
            result.put("response", ConstantUtils.FAIL);
            return result;
        }
        JSONObject jsonObject = JSONObject.parseObject(jsonData);
        JSONObject user = jsonObject.getJSONObject("user");
        JSONArray org = jsonObject.getJSONArray("org");
        if (null == user || CollectionUtils.isEmpty(org)) {
            result.put("msg", "parameter user or org of jsonData is null");
            result.put("response", ConstantUtils.FAIL);
            return result;
        }
        //修改用户信息
        UserDO userDO = null;
        try {
            userDO = objectMapper.readValue(user.toJSONString(), UserDO.class);
            UserDO oldUser = userDao.findOne(userDO.getId());
            userDO.setPassword(oldUser.getPassword());
        } catch (IOException e) {
            result.put("msg", "convert user jsonObject to UserDO failed," + e.getCause());
            result.put("response", ConstantUtils.FAIL);
            return result;
        }
        this.save(userDO);
        //修改用户机构关联关系
        Set<Object> roleIdList = baseOrgUserService.findIdListByUserId(userDO.getId());
        BaseOrgUserDO orgUserDO = null;
        try {
            for (Object obj : org) {
                orgUserDO = objectMapper.readValue(obj.toString(), BaseOrgUserDO.class);
                orgUserDO.setUserId(userDO.getId());
                if(roleIdList.contains(orgUserDO.getId())){
                    roleIdList.remove(orgUserDO.getId());
                }
                orgUserDO.setUserId(userDO.getId());
                baseOrgUserService.save(orgUserDO);
            }
        } catch (IOException e) {
            result.put("msg", "convert org jsonObject to BaseOrgUserDO failed," + e.getCause());
            result.put("response", ConstantUtils.FAIL);
            return result;
        }
        // 表示没有删除,只有修改
        if (roleIdList.size() > 0) {
            baseOrgUserService.delete(roleIdList.toArray());
        }
        result.put("response", ConstantUtils.SUCCESS);
        result.put("msg", userDO);
        return result;
    }
    /**
     * 获取单个用户信息
     * @param userId 用户id
     * @return
     */
    public JSONObject getOneUserInfo(String userId) throws Exception{
        JSONObject result = new JSONObject();
        if(StringUtils.isEmpty(userId)){
            result.put("msg","parameter userId is null ");
            result.put("response",ConstantUtils.FAIL);
            return result;
        }
        //用户基本信息
        UserDO user = userDao.findOne(userId);
        if(null == user){
            result.put("msg","User not exist for id:" + userId);
            result.put("response",ConstantUtils.FAIL);
            return result;
        }
        result.put("response",ConstantUtils.SUCCESS);
        result.put("msg",user);
        return result;
    }
    /**
     * 租户只能给用户归属到自己租户底下的机构
     * 机构管理员只能属于一个租户
     * @param saasid
     * @param userId
     * @return
     */
    public JSONObject generateUserOrgTree(String saasid,String userId,String roleCode) throws IOException {
        JSONObject result = new JSONObject();
        List<OrgTree> orgList = new ArrayList<>();
        // 有归属租户加载saas底下的所有机构树列表,角色为机构管理员时不需要选管理机构
        if(!StringUtils.isEmpty(saasid) && !StringUtils.endsWithIgnoreCase(RoleDO.BaseRoleType.admin.toString(),roleCode)){
            StringBuilder sql = new StringBuilder("SELECT " +
                    "  tree.* " +
                    " FROM " +
                    "  org_tree tree, " +
                    "  base_org org, " +
                    "  base_org_saas saas " +
                    " WHERE " +
                    "  org.code = saas.org_code " +
                    " and  saas.saasid = '{saasid}' " +
                    " and  (tree.code = org.code or tree.code = org.province_code or tree.code = org.city_code or tree.code = town_code) " +
                    " ORDER BY tree.name;");
            orgList = jdbcTemplate.query(sql.toString().replace("{saasid}",saasid),new BeanPropertyRowMapper(OrgTree.class));
        }
        // 用户不为空表示修改,需要筛选出用户已经选择过的机构,设置checked为true
        else if(!StringUtils.isEmpty(userId)){
            Set<String> codeSet = baseOrgUserService.findorgCodeListByUserId(userId);
            orgList.forEach( one -> {
                if(codeSet.contains(one.getCode())){
                    one.setChecked(true);
                }
            });
          /*  StringBuilder sql = new StringBuilder("SELECT tree.* " +
                    "FROM " +
                    "  org_tree tree, " +
                    "  base_org org, " +
                    "  base_org_user user " +
                    "WHERE " +
                    "  org.code = user.org_code " +
                    "  AND user.user_id = '{userId}' " +
                    "  and (tree.code = org.code OR tree.code = org.province_code OR tree.code = org.city_code OR tree.code = town_code) " +
                    "ORDER BY tree.name;");
            orgList = jdbcTemplate.query(sql.toString().replace("{userId}",userId),new BeanPropertyRowMapper(OrgTree.class));*/
        }
        if(CollectionUtils.isEmpty(orgList)){
            result.put("msg","no org under this saasid:" + saasid);
            result.put("response", ConstantUtils.FAIL);
            return result;
        }
        String tree = orgTreeService.makeTree(orgList,false);
        result.put("response", ConstantUtils.SUCCESS);
        result.put("msg",objectMapper.readValue(tree,JSONArray.class));
        return result;
    }
    /**
     * 用户重置密码
     * @param userId
     * @return
     */
    public JSONObject resetPassword(String userId){
        JSONObject result = new JSONObject();
        UserDO user = userDao.findOne(userId);
        if(null == user){
            result.put("response", ConstantUtils.FAIL);
            result.put("msg","user not exist for id : " + userId);
            return result;
        }
        registerWithIdcard(user);
        result.put("response",ConstantUtils.SUCCESS);
        result.put("msg", user.getSalt());
        return result;
    }
    /**
     * 判断用户账号是否存在
     * @param code
     * @return
     */
    public Boolean existUsername(String code){
        if(StringUtils.isEmpty(code)) {
            return null;
        }
        return userDao.existsByUsername(code);
    }
    /**
     * 生效或失效单个用户
     * @param userId
     * @param lock
     * @return
     */
    public JSONObject lockOrUnlocakUser(String userId,boolean lock){
        JSONObject result = new JSONObject();
        if(StringUtils.isEmpty(userId) || StringUtils.isEmpty(lock)){
            result.put("msg","parameter id or del is null");
            result.put("response",ConstantUtils.FAIL);
            return result;
        }
        UserDO user = userDao.findOne(userId);
        if( null == user ){
            result.put("msg","user not exist for id:" + userId);
            result.put("response",ConstantUtils.FAIL);
            return result;
        }
        user.setLocked(lock);
        user.setLockedDate(new Date());
        this.save(user);
        result.put("response",ConstantUtils.SUCCESS);
        return result;
    }
}

+ 1 - 1
svr/svr-base/src/main/resources/bootstrap.yml

@ -1,6 +1,6 @@
spring:
  application:
    name: svr-base
    name: svr-base-lith
  cloud:
    config:
      failFast: true