From c80b393f074148626e1134aae38e71bca28ac809 Mon Sep 17 00:00:00 2001 From: houruijun <411269194@kidgrow.com> Date: Sun, 28 Jun 2020 18:44:14 +0800 Subject: [PATCH] 调整扣费业务支持feign调用 --- kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysOrganizationServiceImpl.java | 216 +++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 206 insertions(+), 10 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 3fab158..b47160b 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,53 +1,249 @@ 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.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); + 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); + 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("userId", 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 -> e.getOrgParentId() == MyId).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 -> e.getOrgParentId() == id).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.orderByAsc("id"); + List<SysOrganization> list = baseMapper.selectList(queryWrapper); + if (list.size() > 0) { + SysOrganization sysOrganizationLast = list.get(list.size() - 1); + String orgCodeLast = sysOrganizationLast.getOrgCode(); + String orgCodeLastQianZhui = orgCodeLast.substring(0, orgCodeLast.length() - 4); + Integer codenum = Integer.valueOf(orgCodeLast.substring(orgCodeLast.length() - 4)); + String str = "0000"; + str += (codenum + 1); + String substring = str.substring(str.length() - 4); + return orgCodeLastQianZhui + substring; + } else { + String fucode = sysOrg.getOrgCode(); + String str = "0001"; + return fucode + str; + } + + } + return null; + } + } -- Gitblit v1.8.0