嗨森逛服务
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
hai-server/hai-bweb/src/main/java/com/bweb/controller/BsCompanyController.java

295 lines
14 KiB

package com.bweb.controller;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.hai.common.exception.ErrorCode;
import com.hai.common.exception.ErrorHelp;
import com.hai.common.exception.SysCode;
import com.hai.common.security.SessionObject;
import com.hai.common.security.UserCenter;
import com.hai.common.utils.MD5Util;
import com.hai.common.utils.ResponseMsgUtil;
import com.hai.entity.BsCompany;
import com.hai.entity.BsOrganization;
import com.hai.entity.SecRole;
import com.hai.entity.SecUser;
import com.hai.model.ResponseData;
import com.hai.model.SecCompanyModel;
import com.hai.model.UserInfoModel;
import com.hai.service.BsCompanyService;
import com.hai.service.BsOrganizationService;
import com.hai.service.SecRoleService;
import com.hai.service.SecUserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@Controller
@RequestMapping(value = "/bsCompany")
@Api(value = "公司管理")
public class BsCompanyController {
private static Logger log = LoggerFactory.getLogger(BsCompanyController.class);
@Autowired
private UserCenter userCenter;
@Resource
private BsCompanyService bsCompanyService;
@Resource
private SecUserService secUserService;
@Resource
private SecRoleService secRoleService;
@Resource
private BsOrganizationService bsOrganizationService;
@RequestMapping(value = "/selectCompanyList", method = RequestMethod.GET)
@ResponseBody
@ApiOperation(value = "获取公司列表")
public ResponseData selectCompanyList(@RequestParam(name = "name", required = false) String name,
@RequestParam(name = "pageNum", required = true) Integer pageNum,
@RequestParam(name = "pageSize", required = true) Integer pageSize) {
try {
if (pageNum == null || pageSize == null) {
log.error("BsCompanyController --> selectCompanyList() error!", "参数错误");
throw ErrorHelp.genException(SysCode.System, ErrorCode.REQ_PARAMS_ERROR, "");
}
Map<String, String> map = new HashMap<>();
if(StringUtils.isNotBlank(name)){
map.put("name", name);
}
PageHelper.startPage(pageNum, pageSize);
return ResponseMsgUtil.success(new PageInfo<>(bsCompanyService.findPage(map)));
} catch (Exception e) {
log.error("BsCompanyController --> selectCompanyList() error!", e);
return ResponseMsgUtil.exception(e);
}
}
@RequestMapping(value = "/addCompanyAndUser", method = RequestMethod.POST)
@ResponseBody
@ApiOperation(value = "新增公司和管理员账号")
public ResponseData addCompanyAndUser(@RequestBody SecCompanyModel secCompanyModel, HttpServletRequest request) {
try {
BsCompany company = secCompanyModel.getCompany();
SecUser user = secCompanyModel.getUser();
if (StringUtils.isBlank(company.getName())
|| StringUtils.isBlank(company.getRegionId())
|| StringUtils.isBlank(company.getAddress())
|| StringUtils.isBlank(company.getPhone())
|| StringUtils.isBlank(user.getLoginName())
|| StringUtils.isBlank(user.getPassword())
) {
log.error("BsCompanyController --> addCompanyAndUser() error!", "参数错误");
throw ErrorHelp.genException(SysCode.System, ErrorCode.REQ_PARAMS_ERROR, "");
}
//发布人员
SessionObject sessionObject = userCenter.getSessionObject(request);
if(sessionObject == null){
log.error("SecCompanyController --> updateCompany() error!", "");
throw ErrorHelp.genException(SysCode.System, ErrorCode.SEC_USER_EXPIRED, "");
}
UserInfoModel userInfoModel = (UserInfoModel) sessionObject.getObject();
// 校验公司名称
BsCompany secCompany = bsCompanyService.selectCompanyByName(company.getName());
if (secCompany != null) {
log.error("BsCompanyController --> addCompanyAndUser() error!", "该单位已经存在");
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMPANY_NAME_IS_EXIST_ERROR, "");
}
// 校验用户
SecUser secUser = secUserService.findByLoginName(user.getLoginName());
if (secUser != null) {
log.error("BsCompanyController --> addCompanyAndUser() error!", "该登录用户名已经存在");
throw ErrorHelp.genException(SysCode.System, ErrorCode.USER_LOGIN_NAME_IS_EXIST_ERROR, "");
}
// 校验用户电话
SecUser secUserPhone = secUserService.findByPhone(user.getTelephone());
if (secUserPhone != null) {
log.error("BsCompanyController --> addCompanyAndUser() error!", "该用户电话已被绑定,请更换");
throw ErrorHelp.genException(SysCode.System, ErrorCode.USER_PHONE_HAS_ONE_ERROR, "");
}
//生成公司状态
company.setStatus(1);
company.setCreateTime(new Date());
company.setUpdateTime(new Date());
//员工
user.setAvatar(company.getLogo());
user.setUserName(company.getName());
user.setStatus(1);
user.setAdminFlag(1);
user.setCreateTime(new Date());
user.setUpdateTime(new Date());
user.setPassword(MD5Util.encode(user.getPassword().getBytes()));
//组织架构
BsOrganization bsOrganization = new BsOrganization();
bsOrganization.setRegionId(company.getRegionId());
bsOrganization.setParentId(null);
bsOrganization.setName(company.getName());
bsOrganization.setAddress(company.getAddress());
bsOrganization.setPhone(company.getPhone());
bsOrganization.setRemark(company.getIntroduction());
bsOrganization.setEmail(company.getEmail());
bsOrganization.setSiteUrl(company.getSiteUrl());
bsOrganization.setLogo(company.getLogo());
bsOrganization.setStatus(1);
bsOrganization.setCreateTime(new Date());
bsOrganization.setUpdateTime(new Date());
bsOrganization.setOpId(userInfoModel.getSecUser().getId());
//添加数据
bsCompanyService.addCompanyInfo(company, user, bsOrganization);
return ResponseMsgUtil.success(null);
} catch (Exception e) {
log.error("BsCompanyController --> addCompanyAndUser() error!", e);
return ResponseMsgUtil.exception(e);
}
}
@RequestMapping(value = "/updateCompany", method = RequestMethod.POST)
@ResponseBody
@ApiOperation(value = "修改公司信息")
public ResponseData updateCompany(@RequestBody SecCompanyModel secCompanyModel, HttpServletRequest request) {
try {
BsCompany company = secCompanyModel.getCompany();
SecUser user = secCompanyModel.getUser();
if ( StringUtils.isBlank(company.getName())
|| company.getRegionId() == null
|| StringUtils.isBlank(company.getAddress())
|| StringUtils.isBlank(company.getPhone())
|| company.getId() == null
|| StringUtils.isBlank(user.getLoginName())
|| StringUtils.isBlank(user.getPassword())
|| StringUtils.isBlank(user.getTelephone())
|| user.getId() == null
) {
log.error("BsCompanyController --> updateCompany() error!", "参数错误");
throw ErrorHelp.genException(SysCode.System, ErrorCode.REQ_PARAMS_ERROR, "");
}
//发布人员
SessionObject sessionObject = userCenter.getSessionObject(request);
if(sessionObject == null){
log.error("SecCompanyController --> updateCompany() error!", "");
throw ErrorHelp.genException(SysCode.System, ErrorCode.SEC_USER_EXPIRED, "");
}
UserInfoModel userInfoModel = (UserInfoModel) sessionObject.getObject();
// 校验公司名称
BsCompany secCompany = bsCompanyService.selectCompanyByName(company.getName());
if (secCompany != null && !secCompany.getId().equals(company.getId())) {
log.error("BsCompanyController --> updateCompany() error!", "该单位已经存在");
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMPANY_NAME_IS_EXIST_ERROR, "");
}
BsOrganization organization = bsOrganizationService.findTopByCompany(company.getId());
if (organization == null) {
log.error("BsCompanyController --> updateCompany() error!", "未找到该部门信息");
throw ErrorHelp.genException(SysCode.System, ErrorCode.UN_FIND_ORGANIZATION_ERROR, "");
}
// 查询用户
SecUser secUser = secUserService.findById(user.getId());
if (secUser == null) {
log.error("BsCompanyController --> updateCompany() error!", "未找到该用户");
throw ErrorHelp.genException(SysCode.System, ErrorCode.NOT_FOUND_USER_ERROR, "");
}
// 校验用户电话
SecUser secUserPhone = secUserService.findByPhone(user.getTelephone());
if (secUserPhone != null && !secUserPhone.getId().equals(user.getId())) {
log.error("BsCompanyController --> updateCompany() error!", "该用户电话已被绑定,请更换");
throw ErrorHelp.genException(SysCode.System, ErrorCode.USER_PHONE_HAS_ONE_ERROR, "");
}
if (!secUser.getPassword().equals(user.getPassword())) {
secUser.setPassword(MD5Util.encode(user.getPassword().getBytes()));
}
secUser.setAvatar(company.getLogo());
secUser.setUserName(company.getName());
secUser.setTelephone(user.getTelephone());
secUser.setUpdateTime(new Date());
//组装数据
organization.setName(company.getName());
organization.setRegionId(company.getRegionId());
organization.setOpId(userInfoModel.getSecUser().getId());
organization.setUpdateTime(new Date());
organization.setAddress(company.getAddress());
organization.setPhone(company.getPhone());
organization.setRemark(company.getIntroduction());
organization.setEmail(company.getEmail());
organization.setSiteUrl(company.getSiteUrl());
organization.setLogo(company.getLogo());
company.setUpdateTime(new Date());
//修改公司信息和顶级组织信息
bsCompanyService.updateCompanyAndDept(company,secUser,organization);
return ResponseMsgUtil.success("修改成功");
} catch (Exception e) {
log.error("BsCompanyController --> updateCompany() error!", e);
return ResponseMsgUtil.exception(e);
}
}
@RequestMapping(value = "/companyView", method = RequestMethod.GET)
@ResponseBody
@ApiOperation(value = "公司详情")
public ResponseData companyView(Long companyId) {
try {
if (companyId == null) {
log.error("BsCompanyController --> companyView() error!", "参数错误");
throw ErrorHelp.genException(SysCode.System, ErrorCode.REQ_PARAMS_ERROR, "");
}
BsCompany company = bsCompanyService.getCompanyById(companyId);
SecUser secUser = secUserService.selectAdminUser(companyId);
SecCompanyModel companyModel = new SecCompanyModel();
companyModel.setCompany(company);
companyModel.setUser(secUser);
return ResponseMsgUtil.success(companyModel);
} catch (Exception e) {
log.error("BsCompanyController --> companyView() error!", e);
return ResponseMsgUtil.exception(e);
}
}
@RequestMapping(value="/selectAdminUser",method = RequestMethod.GET)
@ResponseBody
@ApiOperation(value = "查询公司主账号")
public ResponseData selectAdminUser(Long companyId) {
try {
if (companyId == null) {
log.error("BsCompanyController --> selectAdminUser() error!", "参数错误");
throw ErrorHelp.genException(SysCode.System, ErrorCode.REQ_PARAMS_ERROR, "");
}
SecUser user = secUserService.selectAdminUser(companyId);
if (user == null) {
log.error("BsCompanyController --> selectAdminUser() error!", "公司主账号异常");
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMPANY_ADMIN_USER_ERROR, "");
}
SecRole role = secRoleService.getRoleByUserId(user.getId());
user.setRoleId(role.getId());
return ResponseMsgUtil.success(user);
} catch (Exception e) {
log.error("BsCompanyController --> selectAdminUser() error!", e);
return ResponseMsgUtil.exception(e);
}
}
}