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.redis.util.RedisConstant;
import com.kidgrow.redis.util.RedisUtils;
import com.kidgrow.usercenter.mapper.SysOrganizationMapper;
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.apache.commons.lang3.StringUtils;
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.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020
*
* @version 1.0
* @Description: 组织架构表
* @Project: 用户中心
* @CreateDate: Created in 2020-03-31 11:01:35
* @Author: liuke
*/
@Slf4j
@Service
public class SysOrganizationServiceImpl extends SuperServiceImpl implements ISysOrganizationService {
@Autowired
RedisUtils redisUtils;
/**
* 列表
*
* @param params
* @return
*/
@Override
public PageResult findList(Map params) {
Page page = new Page<>(MapUtils.getInteger(params, "page"), MapUtils.getInteger(params, "limit"));
List list = baseMapper.findList(page, params);
return PageResult.builder().data(list).code(0).count(page.getTotal()).build();
}
/**
* 根据SysOrganization对象当做查询条件进行查询
*
* @param sysOrganization
* @return SysOrganization
*/
@Override
public SysOrganization findByObject(SysOrganization sysOrganization) {
return baseMapper.findByObject(sysOrganization);
}
/**
* 根据用户 获取组织
*
* @param userId
* @return
*/
@Override
public List findListByUserId(Long userId) {
return baseMapper.findListByUserId(userId);
}
/**
* 根据map 查询, 将参数中的 access_token 去掉
*
* @param params
* @return
*/
@Override
public ResultBody getListByMap(Map params) {
//将access_token 参数去掉
params.remove("access_token");
List sysOrganizations = baseMapper.selectByMap(params);
List 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 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 params) {
List sysOrganizations = baseMapper.selectByMap(params);
List