|
@@ -1,19 +1,36 @@
|
|
package com.citu.module.menduner.system.service.invite;
|
|
package com.citu.module.menduner.system.service.invite;
|
|
|
|
|
|
|
|
|
|
|
|
+import com.baomidou.dynamic.datasource.annotation.DSTransactional;
|
|
import com.citu.framework.common.pojo.PageResult;
|
|
import com.citu.framework.common.pojo.PageResult;
|
|
import com.citu.framework.common.util.object.BeanUtils;
|
|
import com.citu.framework.common.util.object.BeanUtils;
|
|
|
|
+import com.citu.framework.security.core.LoginUser;
|
|
|
|
+import com.citu.module.menduner.common.util.LoginUserContext;
|
|
|
|
+import com.citu.module.menduner.system.controller.appadmin.invite.vo.AppAdminEnterpriseInviteRecordPageReqVO;
|
|
|
|
+import com.citu.module.menduner.system.controller.appadmin.invite.vo.AppAdminEnterpriseInviteRecordRespVO;
|
|
import com.citu.module.menduner.system.controller.base.invite.EnterpriseInviteRecordPageReqVO;
|
|
import com.citu.module.menduner.system.controller.base.invite.EnterpriseInviteRecordPageReqVO;
|
|
import com.citu.module.menduner.system.controller.base.invite.EnterpriseInviteRecordSaveReqVO;
|
|
import com.citu.module.menduner.system.controller.base.invite.EnterpriseInviteRecordSaveReqVO;
|
|
|
|
+import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseDO;
|
|
|
|
+import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseUserBindDO;
|
|
|
|
+import com.citu.module.menduner.system.dal.dataobject.invite.EnterpriseInviteDO;
|
|
import com.citu.module.menduner.system.dal.dataobject.invite.EnterpriseInviteRecordDO;
|
|
import com.citu.module.menduner.system.dal.dataobject.invite.EnterpriseInviteRecordDO;
|
|
|
|
+import com.citu.module.menduner.system.dal.dataobject.person.PersonInfoDO;
|
|
|
|
+import com.citu.module.menduner.system.dal.dataobject.user.MdeUserDO;
|
|
import com.citu.module.menduner.system.dal.mysql.invite.EnterpriseInviteRecordMapper;
|
|
import com.citu.module.menduner.system.dal.mysql.invite.EnterpriseInviteRecordMapper;
|
|
|
|
+import com.citu.module.menduner.system.enums.MendunerStatusEnum;
|
|
|
|
+import com.citu.module.menduner.system.enums.enterprise.EnterpriseUserTypeEnum;
|
|
|
|
+import com.citu.module.menduner.system.enums.invite.EnterpriseInviteTypeEnum;
|
|
|
|
+import com.citu.module.menduner.system.service.enterprise.EnterpriseService;
|
|
|
|
+import com.citu.module.menduner.system.service.enterprise.bind.EnterpriseUserBindService;
|
|
|
|
+import com.citu.module.menduner.system.service.person.info.PersonInfoService;
|
|
|
|
+import com.citu.module.menduner.system.service.user.MdeUserService;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.validation.annotation.Validated;
|
|
import org.springframework.validation.annotation.Validated;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
import javax.annotation.Resource;
|
|
|
|
|
|
import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
|
|
import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
|
|
-import static com.citu.module.menduner.system.enums.ErrorCodeConstants.ENTERPRISE_INVITE_RECORD_NOT_EXISTS;
|
|
|
|
|
|
+import static com.citu.module.menduner.system.enums.ErrorCodeConstants.*;
|
|
|
|
|
|
/**
|
|
/**
|
|
* 企业邀请记录 Service 实现类
|
|
* 企业邀请记录 Service 实现类
|
|
@@ -25,13 +42,25 @@ import static com.citu.module.menduner.system.enums.ErrorCodeConstants.ENTERPRIS
|
|
public class EnterpriseInviteRecordServiceImpl implements EnterpriseInviteRecordService {
|
|
public class EnterpriseInviteRecordServiceImpl implements EnterpriseInviteRecordService {
|
|
|
|
|
|
@Resource
|
|
@Resource
|
|
- private EnterpriseInviteRecordMapper enterpriseInviteRecordMapper;
|
|
|
|
|
|
+ private EnterpriseInviteRecordMapper mapper;
|
|
|
|
+
|
|
|
|
+ @Resource
|
|
|
|
+ private EnterpriseInviteService inviteService;
|
|
|
|
+
|
|
|
|
+ @Resource
|
|
|
|
+ private EnterpriseUserBindService userBindService;
|
|
|
|
+
|
|
|
|
+ @Resource
|
|
|
|
+ private EnterpriseService enterpriseService;
|
|
|
|
+
|
|
|
|
+ @Resource
|
|
|
|
+ private PersonInfoService personInfoService;
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public Long createEnterpriseInviteRecord(EnterpriseInviteRecordSaveReqVO createReqVO) {
|
|
public Long createEnterpriseInviteRecord(EnterpriseInviteRecordSaveReqVO createReqVO) {
|
|
// 插入
|
|
// 插入
|
|
EnterpriseInviteRecordDO enterpriseInviteRecord = BeanUtils.toBean(createReqVO, EnterpriseInviteRecordDO.class);
|
|
EnterpriseInviteRecordDO enterpriseInviteRecord = BeanUtils.toBean(createReqVO, EnterpriseInviteRecordDO.class);
|
|
- enterpriseInviteRecordMapper.insert(enterpriseInviteRecord);
|
|
|
|
|
|
+ mapper.insert(enterpriseInviteRecord);
|
|
// 返回
|
|
// 返回
|
|
return enterpriseInviteRecord.getId();
|
|
return enterpriseInviteRecord.getId();
|
|
}
|
|
}
|
|
@@ -42,7 +71,7 @@ public class EnterpriseInviteRecordServiceImpl implements EnterpriseInviteRecord
|
|
validateEnterpriseInviteRecordExists(updateReqVO.getId());
|
|
validateEnterpriseInviteRecordExists(updateReqVO.getId());
|
|
// 更新
|
|
// 更新
|
|
EnterpriseInviteRecordDO updateObj = BeanUtils.toBean(updateReqVO, EnterpriseInviteRecordDO.class);
|
|
EnterpriseInviteRecordDO updateObj = BeanUtils.toBean(updateReqVO, EnterpriseInviteRecordDO.class);
|
|
- enterpriseInviteRecordMapper.updateById(updateObj);
|
|
|
|
|
|
+ mapper.updateById(updateObj);
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -50,23 +79,112 @@ public class EnterpriseInviteRecordServiceImpl implements EnterpriseInviteRecord
|
|
// 校验存在
|
|
// 校验存在
|
|
validateEnterpriseInviteRecordExists(id);
|
|
validateEnterpriseInviteRecordExists(id);
|
|
// 删除
|
|
// 删除
|
|
- enterpriseInviteRecordMapper.deleteById(id);
|
|
|
|
|
|
+ mapper.deleteById(id);
|
|
}
|
|
}
|
|
|
|
|
|
private void validateEnterpriseInviteRecordExists(Long id) {
|
|
private void validateEnterpriseInviteRecordExists(Long id) {
|
|
- if (enterpriseInviteRecordMapper.selectById(id) == null) {
|
|
|
|
|
|
+ if (mapper.selectById(id) == null) {
|
|
throw exception(ENTERPRISE_INVITE_RECORD_NOT_EXISTS);
|
|
throw exception(ENTERPRISE_INVITE_RECORD_NOT_EXISTS);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public EnterpriseInviteRecordDO getEnterpriseInviteRecord(Long id) {
|
|
public EnterpriseInviteRecordDO getEnterpriseInviteRecord(Long id) {
|
|
- return enterpriseInviteRecordMapper.selectById(id);
|
|
|
|
|
|
+ return mapper.selectById(id);
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public PageResult<EnterpriseInviteRecordDO> getEnterpriseInviteRecordPage(EnterpriseInviteRecordPageReqVO pageReqVO) {
|
|
public PageResult<EnterpriseInviteRecordDO> getEnterpriseInviteRecordPage(EnterpriseInviteRecordPageReqVO pageReqVO) {
|
|
- return enterpriseInviteRecordMapper.selectPage(pageReqVO);
|
|
|
|
|
|
+ return mapper.selectPage(pageReqVO);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
+ public PageResult<AppAdminEnterpriseInviteRecordRespVO> page(AppAdminEnterpriseInviteRecordPageReqVO reqVO) {
|
|
|
|
+ LoginUser loginUser = LoginUserContext.get();
|
|
|
|
+ return mapper.page(
|
|
|
|
+ reqVO,
|
|
|
|
+ LoginUserContext.getEnterpriseId(loginUser),
|
|
|
|
+ LoginUserContext.getUserId(loginUser)
|
|
|
|
+ );
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ @DSTransactional
|
|
|
|
+ public void consent(String code) {
|
|
|
|
+ LoginUser loginUser = LoginUserContext.get();
|
|
|
|
+ Long enterpriseId = LoginUserContext.getEnterpriseId2(loginUser);
|
|
|
|
+ Long userId = LoginUserContext.getUserId(loginUser);
|
|
|
|
+
|
|
|
|
+ EnterpriseInviteDO invite = inviteService.getByCode(code);
|
|
|
|
+
|
|
|
|
+ if(EnterpriseInviteTypeEnum.COLLEAGUE.getType()
|
|
|
|
+ .equals(invite.getType())) {
|
|
|
|
+ // 邀请同事
|
|
|
|
+
|
|
|
|
+ EnterpriseUserBindDO userBind = userBindService
|
|
|
|
+ .selectByEnterpriseIdAndUserId(invite.getEnterpriseId(), userId);
|
|
|
|
+
|
|
|
|
+ if(null != userBind) {
|
|
|
|
+ // 已加入该企业
|
|
|
|
+ throw exception(ENTERPRISE_INVITE_RECORD_EXIST);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 获取用户信息
|
|
|
|
+ PersonInfoDO person = personInfoService.getUserInfoByUserId(userId);
|
|
|
|
+ if(null == person) {
|
|
|
|
+ // 用户信息不存在
|
|
|
|
+ throw exception(ENTERPRISE_INVITE_RECORD_PERSON_INFO_NOT_COMPLETE);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 获取邀请的企业信息
|
|
|
|
+ EnterpriseDO enterprise = enterpriseService.getEnterprise(invite.getEnterpriseId());
|
|
|
|
+
|
|
|
|
+ // 增加企业用户
|
|
|
|
+ EnterpriseUserBindDO userBindDO = new EnterpriseUserBindDO();
|
|
|
|
+ userBindDO.setEnterpriseId(enterprise.getId());
|
|
|
|
+ userBindDO.setUserId(userId);
|
|
|
|
+ userBindDO.setName(person.getName());
|
|
|
|
+ userBindDO.setAvatar(person.getAvatar());
|
|
|
|
+ userBindDO.setSex(person.getSex());
|
|
|
|
+ userBindDO.setStatus(MendunerStatusEnum.ENABLE.getStatus());
|
|
|
|
+ userBindDO.setUserType(EnterpriseUserTypeEnum.NORMAL.getType());
|
|
|
|
+ userBindDO.setPhone(person.getPhone());
|
|
|
|
+ userBindDO.setEmail(person.getEmail());
|
|
|
|
+
|
|
|
|
+ userBindService.createUser(userBindDO);
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ }else {
|
|
|
|
+
|
|
|
|
+ EnterpriseUserBindDO userBind = userBindService
|
|
|
|
+ .selectByEnterpriseIdAndUserId(enterpriseId, userId);
|
|
|
|
+
|
|
|
|
+ // 邀请子公司
|
|
|
|
+ if (!userBindService.checkIsAdmin(userBind)) {
|
|
|
|
+ // 不是管理员 不能操作加入
|
|
|
|
+ throw exception(ENTERPRISE_INVITE_RECORD_NOT_ADMIN);
|
|
|
|
+ }
|
|
|
|
+ if (enterpriseService.checkHasParent(enterpriseId)) {
|
|
|
|
+ // 自己的公司已有所属上级
|
|
|
|
+ throw exception(ENTERPRISE_INVITE_RECORD_EXIST_PARENT);
|
|
|
|
+ }
|
|
|
|
+ // 更改企业的上级
|
|
|
|
+ enterpriseService.updateParent(enterpriseId, invite.getEnterpriseId());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 增加邀请记录
|
|
|
|
+ mapper.insert(
|
|
|
|
+ EnterpriseInviteRecordDO.builder()
|
|
|
|
+ .enterpriseId(enterpriseId)
|
|
|
|
+ .userId(userId)
|
|
|
|
+ .inviteEnterpriseId(invite.getEnterpriseId())
|
|
|
|
+ .inviteUserId(invite.getUserId())
|
|
|
|
+ .type(invite.getType())
|
|
|
|
+ .code(invite.getCode())
|
|
|
|
+ .build()
|
|
|
|
+ );
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ }
|
|
}
|
|
}
|