|
|
@@ -2,6 +2,7 @@ package org.dromara.server.base.service.user;
|
|
|
|
|
|
import cn.dev33.satoken.secure.BCrypt;
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
+import cn.hutool.core.collection.CollectionUtil;
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
@@ -9,7 +10,14 @@ import lombok.RequiredArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.dubbo.config.annotation.DubboReference;
|
|
|
import org.dromara.common.core.domain.R;
|
|
|
+import org.dromara.common.core.domain.model.ErrorInfo;
|
|
|
import org.dromara.common.redis.utils.RedisUtils;
|
|
|
+import org.dromara.hotel.api.domain.bo.RemoteGuestBo;
|
|
|
+import org.dromara.hotel.api.domain.bo.RemoteTeamBo;
|
|
|
+import org.dromara.hotel.api.domain.vo.RemoteGuestVo;
|
|
|
+import org.dromara.hotel.api.domain.vo.RemoteTeamVo;
|
|
|
+import org.dromara.hotel.api.service.RemoteGuestService;
|
|
|
+import org.dromara.hotel.api.service.RemoteTeamService;
|
|
|
import org.dromara.server.base.util.EncryptorUtil;
|
|
|
import org.dromara.server.common.constant.DefaultConstants;
|
|
|
import org.dromara.server.common.domain.bo.ResourcePerson;
|
|
|
@@ -49,6 +57,10 @@ public class SyncRemoteUserService {
|
|
|
private final RemoteDeptService remoteDeptService;
|
|
|
@DubboReference
|
|
|
private final RemotePostService remotePostService;
|
|
|
+ @DubboReference
|
|
|
+ private final RemoteGuestService remoteGuestService;
|
|
|
+ @DubboReference
|
|
|
+ private final RemoteTeamService remoteTeamService;
|
|
|
|
|
|
/**
|
|
|
* 单个人员同步处理
|
|
|
@@ -59,16 +71,16 @@ public class SyncRemoteUserService {
|
|
|
public R<RemoteUserVo> syncPeron(ResourcePerson person) {
|
|
|
try {
|
|
|
String otherId = person.getUserId();
|
|
|
- //获取人员在一卡通系统中的数据
|
|
|
+ // 获取人员在一卡通系统中的数据
|
|
|
RemoteUserVo remoteUserVo = remoteUserService.selectUserVoByOtherId(otherId);
|
|
|
- //组装入库的人员业务对象
|
|
|
+ // 组装入库的人员业务对象
|
|
|
R<RemoteUserBo> result = setUserInfo(person, remoteUserVo);
|
|
|
if (result.getCode() == R.SUCCESS) {
|
|
|
if (ObjectUtil.isEmpty(remoteUserVo)) {
|
|
|
- //不存在此人员,增加
|
|
|
+ // 不存在此人员,增加
|
|
|
return remoteUserService.insertUser(result.getData());
|
|
|
} else {
|
|
|
- //存在此人员,修改
|
|
|
+ // 存在此人员,修改
|
|
|
return remoteUserService.updateUser(result.getData());
|
|
|
}
|
|
|
}
|
|
|
@@ -108,7 +120,7 @@ public class SyncRemoteUserService {
|
|
|
tenantId = DefaultConstants.TENANT_ID;
|
|
|
person.setTenantId(tenantId);
|
|
|
}
|
|
|
- //获取人员对应的部门信息
|
|
|
+ // 获取人员对应的部门信息
|
|
|
RemoteDeptVo remoteDeptVo = remoteDeptService.selectDeptByOtherId(person.getDeptId(), tenantId);
|
|
|
if (remoteDeptVo == null) {
|
|
|
return R.fail("没有找到对应的部门信息");
|
|
|
@@ -139,7 +151,7 @@ public class SyncRemoteUserService {
|
|
|
remoteUserBo.setCardType(getUserCardType(person));
|
|
|
remoteUserBo.setLifespan(getUserLifespan(person, remoteDeptVo));
|
|
|
remoteUserBo.setTenantId(tenantId);
|
|
|
- //身份证
|
|
|
+ // 身份证
|
|
|
String idNumber = person.getIdNumber();
|
|
|
if (StrUtil.isNotEmpty(idNumber)) {
|
|
|
remoteUserBo.setIdNumber(getUserIdNumber(idNumber));
|
|
|
@@ -166,7 +178,7 @@ public class SyncRemoteUserService {
|
|
|
if (StrUtil.isNotEmpty(person.getCardType())) {
|
|
|
return Long.valueOf(person.getCardType());
|
|
|
}
|
|
|
- //默认卡类
|
|
|
+ // 默认卡类
|
|
|
String cardType = "1";
|
|
|
String category = person.getCategory();
|
|
|
String userState = person.getUserState();
|
|
|
@@ -225,7 +237,7 @@ public class SyncRemoteUserService {
|
|
|
private Long getUserPostId(String postCode, String tenantId) {
|
|
|
List<RemotePostVo> postVos = selectPostVoByTenantId(tenantId);
|
|
|
List<Long> postIds = postVos.stream().filter(post -> postCode.equals(post.getPostCode()))
|
|
|
- .map(RemotePostVo::getPostId).toList();
|
|
|
+ .map(RemotePostVo::getPostId).toList();
|
|
|
if (postIds.isEmpty()) {
|
|
|
return DefaultConstants.POST_ID;
|
|
|
}
|
|
|
@@ -240,16 +252,16 @@ public class SyncRemoteUserService {
|
|
|
*/
|
|
|
private String getUserName(ResourcePerson person) {
|
|
|
String userName = person.getUserName();
|
|
|
- //如果同步的有登录账号,返回同步的登录账号
|
|
|
+ // 如果同步的有登录账号,返回同步的登录账号
|
|
|
if (StrUtil.isNotEmpty(userName)) {
|
|
|
return userName;
|
|
|
}
|
|
|
String phone = person.getPhone();
|
|
|
- //如果同步没有登录账号,但同步有手机号,则将手机号作为登录账号
|
|
|
+ // 如果同步没有登录账号,但同步有手机号,则将手机号作为登录账号
|
|
|
if (StrUtil.isNotEmpty(phone)) {
|
|
|
return phone;
|
|
|
}
|
|
|
- //如果都没有,则要自动生成一个
|
|
|
+ // 如果都没有,则要自动生成一个
|
|
|
String temp = DateUtil.format(new Date(), "yyyyMMdd");
|
|
|
String cacheKey = person.getTenantId() + "_day_number:";
|
|
|
Integer count = RedisUtils.getCacheObject(cacheKey);
|
|
|
@@ -272,15 +284,15 @@ public class SyncRemoteUserService {
|
|
|
String category = person.getCategory();
|
|
|
Long[] roleIds = new Long[1];
|
|
|
switch (category) {
|
|
|
- //教职工
|
|
|
+ // 教职工
|
|
|
case "1":
|
|
|
roleIds[0] = DefaultConstants.TEACHER_ROLE_ID;
|
|
|
break;
|
|
|
- //学员
|
|
|
+ // 学员
|
|
|
case "2":
|
|
|
roleIds[0] = DefaultConstants.TRAIN_ROLE_ID;
|
|
|
break;
|
|
|
- //研究生
|
|
|
+ // 研究生
|
|
|
case "3":
|
|
|
roleIds[0] = DefaultConstants.GRADUATE_ROLE_ID;
|
|
|
break;
|
|
|
@@ -297,7 +309,7 @@ public class SyncRemoteUserService {
|
|
|
*/
|
|
|
private List<RemoteUserDeptBo> getUserDept(ResourcePerson person) {
|
|
|
List<ResourcePersonDept> resourcePersonDeptList = person.getUserDeptList();
|
|
|
- if (ObjectUtil.isEmpty(resourcePersonDeptList)) {
|
|
|
+ if (CollectionUtil.isEmpty(resourcePersonDeptList)) {
|
|
|
return null;
|
|
|
}
|
|
|
List<RemoteUserDeptBo> remoteUserDeptBos = new ArrayList<>();
|
|
|
@@ -316,4 +328,57 @@ public class SyncRemoteUserService {
|
|
|
|
|
|
return remoteUserDeptBos;
|
|
|
}
|
|
|
+
|
|
|
+ public R<ErrorInfo> syncGuest(ResourcePerson person) {
|
|
|
+ String otherId = person.getUserId();
|
|
|
+ try {
|
|
|
+ R<RemoteGuestVo> result = remoteGuestService.selectGuestByOtherId(otherId);
|
|
|
+ R<RemoteGuestBo> getBo = setGuestInfo(person, result.getData());
|
|
|
+ if (R.isSuccess(getBo)) {
|
|
|
+ if (R.isSuccess(result)) {
|
|
|
+ return remoteGuestService.updateGuestByBo(getBo.getData());
|
|
|
+ } else {
|
|
|
+ return remoteGuestService.insertGuestByBo(getBo.getData());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return R.fail(getBo.getMsg());
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error(e.getMessage(), e);
|
|
|
+ return R.fail(e.getMessage());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private R<RemoteGuestBo> setGuestInfo(ResourcePerson person, RemoteGuestVo remoteGuestVo) {
|
|
|
+ RemoteGuestBo remoteGuestBo;
|
|
|
+ if (ObjectUtil.isEmpty(remoteGuestVo)) {
|
|
|
+ remoteGuestBo = new RemoteGuestBo();
|
|
|
+ } else {
|
|
|
+ remoteGuestBo = BeanUtil.copyProperties(remoteGuestVo, RemoteGuestBo.class);
|
|
|
+ }
|
|
|
+ remoteGuestBo.setName(person.getRealName());
|
|
|
+ remoteGuestBo.setSex(person.getSex());
|
|
|
+ // remoteGuestBo.setIdCard(person.getIdNumber());
|
|
|
+ remoteGuestBo.setPhone(person.getPhone());
|
|
|
+ remoteGuestBo.setRemark(person.getRemark());
|
|
|
+ remoteGuestBo.setTeamId(getGuestTeamId(person));
|
|
|
+ remoteGuestBo.setOtherId(person.getUserId());
|
|
|
+ String idNumber = person.getIdNumber();
|
|
|
+ if (StrUtil.isNotEmpty(idNumber)) {
|
|
|
+ remoteGuestBo.setIdCard(getUserIdNumber(idNumber));
|
|
|
+ }
|
|
|
+ return R.ok(remoteGuestBo);
|
|
|
+ }
|
|
|
+
|
|
|
+ private Long getGuestTeamId(ResourcePerson person) {
|
|
|
+ if (CollectionUtil.isNotEmpty(person.getUserDeptList())) {
|
|
|
+ String deptId = person.getUserDeptList().get(0).getDeptId();
|
|
|
+ RemoteTeamBo remoteTeamBo = new RemoteTeamBo().setOtherId(deptId).setTenantId(person.getTenantId());
|
|
|
+ RemoteTeamVo remoteTeamVo = remoteTeamService.selectTeamByBo(remoteTeamBo).getData();
|
|
|
+ if (ObjectUtil.isNotEmpty(remoteTeamVo)) {
|
|
|
+ return remoteTeamVo.getId();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return 0L;
|
|
|
+ }
|
|
|
}
|