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.*;
import com.hssx.cloudmodel.entity.vo.UserVO;
import com.hssx.cloudmodel.mapper.*;
import com.hssx.cloudmodel.service.UserService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.hssx.cloudmodel.util.HttpRespMsg;
import com.hssx.cloudmodel.util.MD5Util;
import com.hssx.cloudmodel.util.PageUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.UUID;
/**
*
* 服务实现类
*
*
* @author 吴涛涛
* @since 2019-07-26
*/
@Service
public class UserServiceImpl extends ServiceImpl implements UserService {
@Autowired
UserMapper userMapper;
@Autowired
CompanyMapper companyMapper;
@Autowired
UserCompanyMapper userCompanyMapper;
@Autowired
ProjectUserMapper projectUserMapper;
@Autowired
ProjectMapper projectMapper;
@Override
public HttpRespMsg login(User user, HttpServletRequest request) {
System.out.println("user" + user);
HttpRespMsg msg = new HttpRespMsg();
//验证用户名是否存在
QueryWrapper qw = new QueryWrapper<>();
qw.eq("account", user.getAccount());
Integer count = userMapper.selectCount(qw);
//验证用户名是否正确
if (count > 0) {
User newUser = userMapper.selectOne(qw);
//验证密码是否正确
if (MD5Util.getPassword(user.getPassword()).equals(newUser.getPassword())) {
newUser.setPassword("");
msg.data = newUser;
} else {
msg.setError("密码错误");
}
} else {
msg.setError("账号不存在");
}
return msg;
}
@Override
public HttpRespMsg pageList(PageUtil page, Integer companyId, Integer flag, String keyName, User user, Integer roleType) {
HttpRespMsg msg = new HttpRespMsg();
PageHelper.startPage(page.getPageNum(), page.getPageSize());
List users = userMapper.selectListByCondition(roleType, companyId, flag, user, keyName);
PageInfo pageInfos = new PageInfo<>(users);
msg.data = pageInfos;
return msg;
}
@Override
public HttpRespMsg deleteUser(User user) {
HttpRespMsg msg = new HttpRespMsg();
QueryWrapper qw = new QueryWrapper<>();
qw.eq("user_id", user.getId());
//普通用户应用到项目不能删除
Integer count = projectUserMapper.selectCount(qw);
if (count > 0) {
msg.setError("该用户已被应用到项目,暂不提供删除操作");
return msg;
}
//是项目经理不能删除
Integer countProject = projectMapper.selectCount(new QueryWrapper().eq("manager_id", user.getId()));
if(countProject>0){
msg.setError("该用户已被应用到项目,暂不提供删除操作");
return msg;
}
//删除用户
userMapper.deleteById(user.getId());
//删除合作的公司
userCompanyMapper.delete(new QueryWrapper().eq("user_id",user.getId()));
return msg;
}
@Override
public HttpRespMsg addAndUpdateUser(User user, Integer flag) {
//获取该账号的创建者
User parentUser = userMapper.selectById(user.getParentId());
//获取admin的用户信息
User proParentUser = userMapper.selectById(parentUser.getParentId());
HttpRespMsg msg = new HttpRespMsg();
if (flag == 0) {
//添加角色
QueryWrapper qw = new QueryWrapper<>();
qw.eq("account", user.getAccount());
int count = userMapper.selectCount(qw);
if (count > 0) {
User existingUser = userMapper.selectOne(qw);
//此时用户已经有了,则建立一条合作公司的关系
UserCompany userCompany = new UserCompany();
userCompany.setUserId(existingUser.getId());
userCompany.setBelongCompanyId(existingUser.getCompanyId());
userCompany.setCooperationCompanyId(proParentUser.getCompanyId());
QueryWrapper qWra = new QueryWrapper<>(userCompany);
int userCompanyCount = userCompanyMapper.selectCount(qWra);
if (count == 0) {
userCompanyMapper.insert(userCompany);
}
} else {
//创建账号默认密码"000000"
user.setPassword(MD5Util.getPassword(Constant.DEFAULT_PWD));
user.setHeadImgurl(UUID.randomUUID().toString().replaceAll("-", ""));
//获取角色所属的团体
Company company = companyMapper.selectById(user.getCompanyId());
if (Constant.ASSETS_COMPANY == company.getCompanyType()) {
user.setSubordinateType(Constant.ASSETS_COMPANY);
user.setTeamName("资产方");
} else if (Constant.PRODUCER_COMPANY == company.getCompanyType()) {
user.setSubordinateType(Constant.PRODUCER_COMPANY);
user.setTeamName("生产方");
}
userMapper.insert(user);
UserCompany userCompany = new UserCompany();
userCompany.setUserId(user.getId());
userCompany.setBelongCompanyId(user.getCompanyId());
userCompany.setCooperationCompanyId(proParentUser.getCompanyId());
QueryWrapper qWra = new QueryWrapper<>(userCompany);
int userCompanyCount = userCompanyMapper.selectCount(qWra);
if (count == 0) {
userCompanyMapper.insert(userCompany);
}
}
} else if (flag == 1) {
//更新角色信息
userMapper.updateById(user);
}
return msg;
}
}