package com.hssx.cloudmodel.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.hssx.cloudmodel.constant.Constant;
import com.hssx.cloudmodel.entity.Power;
import com.hssx.cloudmodel.entity.Project;
import com.hssx.cloudmodel.entity.User;
import com.hssx.cloudmodel.entity.vo.ProjectVO;
import com.hssx.cloudmodel.entity.vo.UserVO;
import com.hssx.cloudmodel.mapper.PowerMapper;
import com.hssx.cloudmodel.mapper.ProjectMapper;
import com.hssx.cloudmodel.mapper.UserMapper;
import com.hssx.cloudmodel.service.PowerService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.hssx.cloudmodel.util.HttpRespMsg;
import com.hssx.cloudmodel.util.ListUtil;
import com.hssx.cloudmodel.util.PageUtil;
import net.sf.jsqlparser.expression.operators.arithmetic.Concat;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
/**
*
* 服务实现类
*
*
* @author 吴涛涛
* @since 2019-08-06
*/
@Service
public class PowerServiceImpl extends ServiceImpl implements PowerService {
@Resource
PowerMapper powerMapper;
@Resource
UserMapper userMapper;
@Resource
ProjectMapper projectMapper;
@Override
public HttpRespMsg getList(UserVO userVO, String token, PageUtil page) {
HttpRespMsg msg = new HttpRespMsg();
List list = new ArrayList<>();
Integer type = 0;
PageHelper.startPage(page.getPageNum(), page.getPageSize());
User user = userMapper.selectOne(new QueryWrapper().eq("head_imgurl", token));
QueryWrapper qw = new QueryWrapper<>();
Integer count = projectMapper.selectCount(qw.eq("manager_id", user.getId()));
BeanUtils.copyProperties(user, userVO);
if (user != null) {
if (Constant.SYS_PARENT_ID == user.getParentId()) {
//平台超级管理员
msg.setError("对不起你不具备该项权限!");
} else if (Constant.SYS_ID == user.getParentId()) {
//资产方管理员,展示此人创建所有项目对应的权限
list = projectMapper.selectUserPowerList(userVO, type);
} else if (count > 0) {
//项目经理
type = 1;
list = projectMapper.selectUserPowerList(userVO, type);
} else {
//普通用户
msg.setError("对不起你不具备该项权限!");
}
PageInfo pageInfos = new PageInfo<>(list);
msg.data = pageInfos;
} else {
msg.setError("用户不存或没登录!");
}
return msg;
}
@Override
public HttpRespMsg updatePower(UserVO userVO, String token) {
HttpRespMsg msg = new HttpRespMsg();
QueryWrapper qw = new QueryWrapper<>();
User user = userMapper.selectOne(new QueryWrapper().eq("head_imgurl", token));
if (user != null) {
Project pro = projectMapper.selectById(userVO.getProjectId());
if (pro.getCreatorId() == user.getId() || pro.getManagerId() == user.getId()) {
//资产方管理员或者担任项目经理的人才可修改人员权限
if (null != userVO.getPowers()) {
List powerTypes = ListUtil.convertIntegerIdsArrayToList(userVO.getPowers());
if (powerTypes.size() > 0) {
//删除之前的权限
powerMapper.delete(new QueryWrapper().eq("user_id", userVO.getId()).eq("project_id", userVO.getProjectId()));
}
for (Integer powerType : powerTypes) {
Power power = new Power();
power.setPowerType(powerType);
power.setProjectId(userVO.getProjectId());
power.setUserId(userVO.getId());
powerMapper.insert(power);
}
} else {
msg.setError("对不起您没有该项权限!");
}
} else {
msg.setError("用户不存或没登录!");
}
}
return msg;
}
}