|
@@ -7,6 +7,7 @@ import com.github.pagehelper.PageInfo;
|
|
|
import com.sckw.core.exception.SystemException;
|
|
import com.sckw.core.exception.SystemException;
|
|
|
import com.sckw.core.model.base.BaseModel;
|
|
import com.sckw.core.model.base.BaseModel;
|
|
|
import com.sckw.core.model.constant.Global;
|
|
import com.sckw.core.model.constant.Global;
|
|
|
|
|
+import com.sckw.core.utils.IdWorker;
|
|
|
import com.sckw.core.model.page.PageHelperUtil;
|
|
import com.sckw.core.model.page.PageHelperUtil;
|
|
|
import com.sckw.core.model.page.PageResult;
|
|
import com.sckw.core.model.page.PageResult;
|
|
|
import com.sckw.core.utils.BeanUtils;
|
|
import com.sckw.core.utils.BeanUtils;
|
|
@@ -28,6 +29,7 @@ import com.sckw.system.model.vo.res.KwsUserSystemTypeVo;
|
|
|
import com.sckw.system.service.*;
|
|
import com.sckw.system.service.*;
|
|
|
import jakarta.annotation.Resource;
|
|
import jakarta.annotation.Resource;
|
|
|
import org.apache.dubbo.config.annotation.DubboService;
|
|
import org.apache.dubbo.config.annotation.DubboService;
|
|
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
|
|
import java.util.*;
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
@@ -41,6 +43,8 @@ import java.util.stream.Collectors;
|
|
|
@DubboService(group = "design", version = "1.0.0")
|
|
@DubboService(group = "design", version = "1.0.0")
|
|
|
public class RemoteUserServiceImpl implements RemoteUserService {
|
|
public class RemoteUserServiceImpl implements RemoteUserService {
|
|
|
|
|
|
|
|
|
|
+ private static final String DRIVER_ROLE_NAME = "司机";
|
|
|
|
|
+
|
|
|
@Resource
|
|
@Resource
|
|
|
private RemoteBaseService remoteBaseService;
|
|
private RemoteBaseService remoteBaseService;
|
|
|
|
|
|
|
@@ -74,6 +78,9 @@ public class RemoteUserServiceImpl implements RemoteUserService {
|
|
|
@Resource
|
|
@Resource
|
|
|
private KwsUserDao userDao;
|
|
private KwsUserDao userDao;
|
|
|
|
|
|
|
|
|
|
+ @Resource
|
|
|
|
|
+ private KwsRoleDao kwsRoleDao;
|
|
|
|
|
+
|
|
|
@Resource
|
|
@Resource
|
|
|
private CommonService commonService;
|
|
private CommonService commonService;
|
|
|
|
|
|
|
@@ -471,6 +478,7 @@ public class RemoteUserServiceImpl implements RemoteUserService {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
public void saveUser(KwsUserReqDto kwsUserReqDto) {
|
|
public void saveUser(KwsUserReqDto kwsUserReqDto) {
|
|
|
KwsUser kwsUser = new KwsUser();
|
|
KwsUser kwsUser = new KwsUser();
|
|
|
BeanUtils.copyProperties(kwsUserReqDto, kwsUser);
|
|
BeanUtils.copyProperties(kwsUserReqDto, kwsUser);
|
|
@@ -485,6 +493,71 @@ public class RemoteUserServiceImpl implements RemoteUserService {
|
|
|
kwsUser.setCreateTime(null);
|
|
kwsUser.setCreateTime(null);
|
|
|
userDao.updateById(kwsUser);
|
|
userDao.updateById(kwsUser);
|
|
|
}
|
|
}
|
|
|
|
|
+ bindDriverUserRole(kwsUser, kwsUserReqDto);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 司机用户在 {@link KwsUser} 保存后关联企业下「司机」角色;若该企业尚不存在该角色则先初始化。
|
|
|
|
|
+ */
|
|
|
|
|
+ private void bindDriverUserRole(KwsUser kwsUser, KwsUserReqDto kwsUserReqDto) {
|
|
|
|
|
+ if (kwsUser.getId() == null || kwsUserReqDto.getEntId() == null) {
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ KwsRole driverRole = kwsRoleDao.selectOne(Wrappers.<KwsRole>lambdaQuery()
|
|
|
|
|
+ .eq(KwsRole::getEntId, kwsUserReqDto.getEntId())
|
|
|
|
|
+ .eq(KwsRole::getName, DRIVER_ROLE_NAME)
|
|
|
|
|
+ .eq(KwsRole::getDelFlag, Global.NO)
|
|
|
|
|
+ .last("limit 1"));
|
|
|
|
|
+ if (driverRole == null) {
|
|
|
|
|
+ driverRole = initDriverRole(kwsUserReqDto);
|
|
|
|
|
+ }
|
|
|
|
|
+ List<KwsUserRole> userRoles = userRoleDao.findAllByUserId(kwsUser.getId());
|
|
|
|
|
+ if (!CollectionUtils.isEmpty(userRoles)) {
|
|
|
|
|
+ KwsRole finalDriverRole = driverRole;
|
|
|
|
|
+ boolean alreadyBound = userRoles.stream()
|
|
|
|
|
+ .anyMatch(ur -> Objects.equals(ur.getRoleId(), finalDriverRole.getId()));
|
|
|
|
|
+ if (alreadyBound) {
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ Date now = new Date();
|
|
|
|
|
+ KwsUserRole userRole = new KwsUserRole();
|
|
|
|
|
+ userRole.setId(new IdWorker(1L).nextId());
|
|
|
|
|
+ userRole.setUserId(kwsUser.getId());
|
|
|
|
|
+ userRole.setRoleId(driverRole.getId());
|
|
|
|
|
+ userRole.setRemark(kwsUserReqDto.getRemark());
|
|
|
|
|
+ userRole.setStatus(Global.NO);
|
|
|
|
|
+ userRole.setDelFlag(Global.NO);
|
|
|
|
|
+ userRole.setCreateBy(kwsUserReqDto.getCreateBy() != null ? kwsUserReqDto.getCreateBy() : -1L);
|
|
|
|
|
+ userRole.setCreateTime(kwsUserReqDto.getCreateTime() != null ? kwsUserReqDto.getCreateTime() : now);
|
|
|
|
|
+ userRole.setUpdateBy(kwsUserReqDto.getUpdateBy() != null ? kwsUserReqDto.getUpdateBy() : userRole.getCreateBy());
|
|
|
|
|
+ userRole.setUpdateTime(kwsUserReqDto.getUpdateTime() != null ? kwsUserReqDto.getUpdateTime() : now);
|
|
|
|
|
+ userRoleDao.insert(userRole);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 在当前企业下创建「司机」角色(admin_flag=2 非管理员),不绑定菜单; 相比为司机同步场景的最小初始化。
|
|
|
|
|
+ */
|
|
|
|
|
+ private KwsRole initDriverRole(KwsUserReqDto kwsUserReqDto) {
|
|
|
|
|
+ Date now = new Date();
|
|
|
|
|
+ KwsRole role = new KwsRole();
|
|
|
|
|
+ long roleId = new IdWorker(1L).nextId();
|
|
|
|
|
+ role.setId(roleId);
|
|
|
|
|
+ role.setEntId(kwsUserReqDto.getEntId());
|
|
|
|
|
+ role.setName(DRIVER_ROLE_NAME);
|
|
|
|
|
+ role.setAdminFlag(2);
|
|
|
|
|
+ role.setRemark("司机用户默认角色");
|
|
|
|
|
+ role.setStatus(Global.NO);
|
|
|
|
|
+ role.setDelFlag(Global.NO);
|
|
|
|
|
+ Long operator = kwsUserReqDto.getCreateBy() != null ? kwsUserReqDto.getCreateBy() : -1L;
|
|
|
|
|
+ role.setCreateBy(operator);
|
|
|
|
|
+ role.setCreateTime(kwsUserReqDto.getCreateTime() != null ? kwsUserReqDto.getCreateTime() : now);
|
|
|
|
|
+ role.setUpdateBy(kwsUserReqDto.getUpdateBy() != null ? kwsUserReqDto.getUpdateBy() : operator);
|
|
|
|
|
+ role.setUpdateTime(kwsUserReqDto.getUpdateTime() != null ? kwsUserReqDto.getUpdateTime() : now);
|
|
|
|
|
+ if (kwsRoleDao.insert(role) <= 0) {
|
|
|
|
|
+ throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.INSERT_FAIL);
|
|
|
|
|
+ }
|
|
|
|
|
+ return role;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|