From 81065b8fa819ee2653ee23a3574868784a9be412 Mon Sep 17 00:00:00 2001
From: bingbing <zhaobingliang@aliyun.com>
Date: Fri, 26 Feb 2021 16:10:34 +0800
Subject: [PATCH] 运营平台添加医生或H端添加医生密码为默认的

---
 kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysOrganizationServiceImpl.java |  238 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 227 insertions(+), 11 deletions(-)

diff --git a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysOrganizationServiceImpl.java b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysOrganizationServiceImpl.java
index 9df73fd..3d06eac 100644
--- a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysOrganizationServiceImpl.java
+++ b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysOrganizationServiceImpl.java
@@ -1,60 +1,276 @@
 package com.kidgrow.usercenter.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.kidgrow.common.model.PageResult;
 import com.kidgrow.common.model.ResultBody;
 import com.kidgrow.common.model.SysOrganization;
 import com.kidgrow.common.service.impl.SuperServiceImpl;
+import com.kidgrow.common.utils.StringUtils;
+import com.kidgrow.redis.util.RedisConstant;
+import com.kidgrow.redis.util.RedisUtils;
 import com.kidgrow.usercenter.mapper.SysOrganizationMapper;
+import com.kidgrow.usercenter.mapper.SysUserOrgMapper;
 import com.kidgrow.usercenter.service.ISysOrganizationService;
+import com.kidgrow.usercenter.vo.SysOrganizationVo;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.MapUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.cglib.beans.BeanCopier;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
-import java.util.List;
-import java.util.Map;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
+ *
+ * @version 1.0
  * @Description: 组织架构表<br>
  * @Project: 用户中心<br>
  * @CreateDate: Created in 2020-03-31 11:01:35 <br>
  * @Author: <a href="4345453@kidgrow.com">liuke</a>
- * @version 1.0
  */
 @Slf4j
 @Service
 public class SysOrganizationServiceImpl extends SuperServiceImpl<SysOrganizationMapper, SysOrganization> implements ISysOrganizationService {
+    @Autowired
+    RedisUtils redisUtils;
+    @Autowired
+    SysUserOrgMapper sysUserOrgMapper;
+
     /**
      * 列表
+     *
      * @param params
      * @return
      */
     @Override
-    public PageResult<SysOrganization> findList(Map<String, Object> params){
+    public PageResult<SysOrganization> findList(Map<String, Object> params) {
         Page<SysOrganization> page = new Page<>(MapUtils.getInteger(params, "page"), MapUtils.getInteger(params, "limit"));
-        List<SysOrganization> list  =  baseMapper.findList(page, params);
+        List<SysOrganization> list = baseMapper.findList(page, params);
         return PageResult.<SysOrganization>builder().data(list).code(0).count(page.getTotal()).build();
     }
 
     /**
-   * 根据SysOrganization对象当做查询条件进行查询
-   * @param sysOrganization
-   * @return SysOrganization
-   */
+     * 根据SysOrganization对象当做查询条件进行查询
+     *
+     * @param sysOrganization
+     * @return SysOrganization
+     */
     @Override
-    public SysOrganization findByObject(SysOrganization sysOrganization){
+    public SysOrganization findByObject(SysOrganization sysOrganization) {
         return baseMapper.findByObject(sysOrganization);
     }
 
+    /**
+     * 根据用户  获取组织
+     *
+     * @param userId
+     * @return
+     */
     @Override
     public List<SysOrganization> findListByUserId(Long userId) {
         return baseMapper.findListByUserId(userId);
     }
 
+    /**
+     * 根据map  查询,  将参数中的  access_token 去掉
+     *
+     * @param params
+     * @return
+     */
     @Override
     public ResultBody getListByMap(Map<String, Object> params) {
+        //将access_token  参数去掉
+        params.remove("access_token");
         List<SysOrganization> sysOrganizations = baseMapper.selectByMap(params);
-        return ResultBody.ok().data(sysOrganizations);
+        List<SysOrganizationVo> sysOrganizationVos = new ArrayList<>();
+        sysOrganizations.forEach(e -> {
+            if (e.getOrgParentId() != null) {
+                SysOrganizationVo sysOrganizationVo = new SysOrganizationVo();
+                BeanCopier beanCopier = BeanCopier.create(SysOrganization.class, SysOrganizationVo.class, false);
+                beanCopier.copy(e, sysOrganizationVo, null);
+                SysOrganization sysOrganization = baseMapper.selectById(e.getOrgParentId());
+                if (sysOrganization != null) {
+                    sysOrganizationVo.setOrgParentName(sysOrganization.getOrgName());
+                }
+                sysOrganizationVos.add(sysOrganizationVo);
+            }
+        });
+        return ResultBody.ok().data(sysOrganizationVos);
+    }
+
+    /**
+     * 更新状态
+     *
+     * @param params
+     * @return
+     */
+    @Override
+    public ResultBody updateEnabled(Map<String, Object> params) {
+        Long id = MapUtils.getLong(params, "id");
+        if (id == null) {
+            return ResultBody.failed("请选取一条数据");
+        }
+        SysOrganization sysOrganization = baseMapper.selectById(id);
+        if (sysOrganization != null) {
+            sysOrganization.setEnabled(MapUtils.getBoolean(params, "enabled"));
+            int i = baseMapper.updateById(sysOrganization);
+            redisUtils.hdel(RedisConstant.ORGANIZATION, sysOrganization.getId().toString());
+            redisUtils.hset(RedisConstant.ORGANIZATION, sysOrganization.getId().toString(), sysOrganization);
+            if (i > 0) {
+                return ResultBody.ok();
+            } else {
+                return ResultBody.failed("更新失败");
+            }
+        } else {
+            return ResultBody.failed("更新失败");
+        }
+    }
+
+    /**
+     * 获取树状图
+     *
+     * @param params
+     * @return
+     */
+    @Override
+    public ResultBody getTree(Map<String, Object> params) {
+        List<SysOrganization> sysOrganizations = baseMapper.selectByMap(params);
+        //查询 ,父类为-1的;即顶级父类
+//        params.put("org_parent_id",Long.valueOf("-1"));
+//        List<SysOrganization> sysOrgs=baseMapper.selectByMap(params);
+//        if (sysOrgs.isEmpty()) {
+//            return ResultBody.ok().data(null);
+//        }
+        List<Map<String, Object>> treeData = getTreeData(Long.valueOf("-1"), sysOrganizations);
+        return ResultBody.ok().data(treeData);
+    }
+
+    @Override
+    public int deleteByUserId(Long userId) {
+        Map<String, Object> params = new HashMap<>();
+        params.put("user_id", userId);
+        return sysUserOrgMapper.deleteByMap(params);
+    }
+
+    /**
+     * 将数据  封装成  tree   (递归方式)
+     *
+     * @param MyId
+     * @param sysOrganizations
+     * @return
+     */
+    public List<Map<String, Object>> getTreeData(Long MyId, List<SysOrganization> sysOrganizations) {
+        List<Map<String, Object>> listMap = new ArrayList<>();
+        Map<Long, SysOrganization> collect = sysOrganizations.stream().collect(Collectors.toMap(SysOrganization::getId, SysOrganization -> SysOrganization));
+        List<Long> idList = sysOrganizations.stream().filter(e -> MyId.equals(e.getOrgParentId())).map(e -> e.getId()).collect(Collectors.toList());
+        for (Long id : idList
+        ) {
+            Map<String, Object> map = new HashMap<>();
+            map.put("id", "" + id);
+            map.put("name", collect.get(id).getOrgName());
+            map.put("level", collect.get(id).getOrgLevel());
+            map.put("parentId", collect.get(id).getOrgParentId());
+            List<Long> childs = sysOrganizations.stream().filter(e ->
+                    id.equals(e.getOrgParentId())
+            ).map(e -> e.getId()).collect(Collectors.toList());
+            if (childs.size() > 0) {
+                List<Map<String, Object>> treeData = getTreeData(id, sysOrganizations);
+                map.put("children", treeData);
+            }
+            listMap.add(map);
+        }
+        return listMap;
+    }
+
+    /**
+     * 保存或者更新
+     *
+     * @param sysOrganization
+     * @return
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean saveOrUpdateSer(SysOrganization sysOrganization) {
+        //获取code
+
+        if (sysOrganization.getId() == null) {
+            //保存
+            String code = this.getCode(sysOrganization);
+            sysOrganization.setOrgCode(code);
+            baseMapper.insert(sysOrganization);
+        } else {
+            //更新
+            SysOrganization sysOrg = baseMapper.selectById(sysOrganization.getId());
+            if (sysOrg.getOrgParentId() != sysOrganization.getOrgParentId()) {
+                String code = this.getCode(sysOrganization);
+                sysOrganization.setOrgCode(code);
+            }
+            int i = baseMapper.updateById(sysOrganization);
+        }
+        redisUtils.hdel(RedisConstant.ORGANIZATION, sysOrganization.getId().toString());
+        redisUtils.hset(RedisConstant.ORGANIZATION, sysOrganization.getId().toString(), sysOrganization);
+        return true;
+    }
+
+
+    /**
+     * 获取自己组织的code
+     *
+     * @param sysOrganization
+     * @return
+     */
+    public String getCode(SysOrganization sysOrganization) {
+        //获取父级
+        Long orgParentId = sysOrganization.getOrgParentId();
+        if (orgParentId == null) {
+            return null;
+        }
+        SysOrganization sysOrg = baseMapper.selectById(orgParentId);
+        if (sysOrg != null) {
+            String orgCode = sysOrg.getOrgCode();
+            //查询
+            QueryWrapper queryWrapper = new QueryWrapper();
+            queryWrapper.eq("org_parent_id", sysOrg.getId());
+            queryWrapper.orderByDesc("org_code");
+            queryWrapper.last("limit 1");
+            List<SysOrganization> list = baseMapper.selectList(queryWrapper);
+            if (list.size() > 0) {
+                SysOrganization sysOrganizationLast = list.get(list.size() - 1);
+                if (sysOrganizationLast.getOrgLevel() >= 2) {
+                    String orgCodeLast = sysOrganizationLast.getOrgCode();
+                    if (StringUtils.isNotBlank(orgCodeLast)) {
+                        //取前部分
+                        String orgCodeLastQianZhui = orgCodeLast.substring(0, orgCodeLast.length() - 3);
+                        //取后部分
+                        Integer codenum = Integer.valueOf(orgCodeLast.substring(orgCodeLast.length() - 3));
+                        String str = "00";
+                        str += (codenum + 1);
+                        String substring = str.substring(str.length() - 3);
+                        return orgCodeLastQianZhui + substring;
+                    }
+                } else {
+                    String orgCodeLast = sysOrganizationLast.getOrgCode();
+                    if (StringUtils.isNotBlank(orgCodeLast)) {
+                    //取前部分
+                    String orgCodeLastQianZhui = orgCodeLast.substring(0, orgCodeLast.length() - 7);
+                    //取后部分
+                    Integer codenum = Integer.valueOf(orgCodeLast.substring(orgCodeLast.length() - 7));
+                    String str = "0000000";
+                    str += (codenum + 1);
+                    String substring = str.substring(str.length() - 7);
+                    return orgCodeLastQianZhui + substring;
+                    }
+                }
+            } else {
+                String fucode = sysOrg.getOrgCode();
+                String str = "01";
+                return fucode + str;
+            }
+        }
+        return null;
     }
 }

--
Gitblit v1.8.0