Merge branch 'dev-z' into 'main'

修复缺失的service文件

See merge request itc/ma/2024/ms-back!1
This commit is contained in:
890147
2025-02-11 11:16:56 +00:00
16 changed files with 106 additions and 137 deletions

View File

@ -26,19 +26,18 @@ import com.xjrsoft.common.core.exception.ValidationException;
import com.xjrsoft.common.redis.service.RedisUtil;
import com.xjrsoft.organization.client.*;
import com.xjrsoft.organization.entity.*;
import com.xjrsoft.organization.service.*;
import com.xjrsoft.system.client.ILoginConfigClient;
import com.xjrsoft.system.client.ITenantClient;
import com.xjrsoft.system.dto.CreateTokenDto;
import com.xjrsoft.system.entity.LoginConfig;
import com.xjrsoft.system.entity.Tenant;
import com.xjrsoft.system.service.ILoginConfigService;
import com.xjrsoft.system.vo.CreateTokenVo;
import com.xjrsoft.system.vo.LoginVo;
import com.xjrsoft.tenant.config.TenantConfig;
import com.xjrsoft.tenant.util.SecureUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestBody;
@ -79,9 +78,7 @@ public class LoginServiceImpl implements ILoginService {
@Override
public User getUserInfoByName(String userName) {
LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(User::getUserName, userName);
User loginUser = userService.getOne(queryWrapper);
User loginUser = userClient.getUserByUserNameFeign(userName);
return loginUser;
}
@ -98,12 +95,9 @@ public class LoginServiceImpl implements ILoginService {
throw new MyException("登录人数超过授权人数,无法登录,请联系管理员!");
}
}
User loginUser = getUserInfoByName(dto.getUserName());
LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(User::getUserName, dto.getUserName());
User loginUser = userService.getOne(queryWrapper);
List<LoginConfig> list = loginConfigService.list();
List<LoginConfig> list = loginConfigClient.getAllListFeign();
if (list.size() == 0){//如果没有,则设置为默认配置,并进行保存
LoginConfig loginConfig = new LoginConfig();
loginConfig.setId(1L);
@ -113,7 +107,7 @@ public class LoginServiceImpl implements ILoginService {
loginConfig.setPasswordStrategy(YesOrNoEnum.YES.getCode());
loginConfig.setStrategyMaxNumber(7);
list.add(loginConfig);
loginConfigService.save(loginConfig);
loginConfigClient.addLoginConfigFeign(loginConfig);
}
LoginConfig loginConfig = list.get(0);
@ -140,13 +134,13 @@ public class LoginServiceImpl implements ILoginService {
redisUtil.set(GlobalConstant.LOGIN_ERROR_NUMBER + loginUser.getId() , Integer.valueOf(value) + 1);
}else {
loginUser.setEnabledMark(EnabledMark.DISABLED.getCode());
userService.updateById(loginUser);
userClient.updateUserInfoFeign(loginUser);
throw new MyException("当前账号已被锁定,请联系管理员");
}
}else {
if (loginConfig.getStrategyMaxNumber() == 1){
loginUser.setEnabledMark(EnabledMark.DISABLED.getCode());
userService.updateById(loginUser);
userClient.updateUserInfoFeign(loginUser);
throw new MyException("当前账号已被锁定,请联系管理员");
}else {
redisUtil.set(GlobalConstant.LOGIN_ERROR_NUMBER + loginUser.getId() , number);
@ -189,24 +183,22 @@ public class LoginServiceImpl implements ILoginService {
SaSession tokenSession = StpUtil.getTokenSession();
List<UserDeptRelation> userDeptRelations = userDeptRelationService.list(Wrappers.lambdaQuery(UserDeptRelation.class)
.eq(UserDeptRelation::getUserId, StpUtil.getLoginIdAsLong()));
List<UserDeptRelation> userDeptRelations = userDeptRelationClient.getUserDeptRelationListFeign(StpUtil.getLoginIdAsLong());
List<UserPostRelation> userPostRelations = userPostRelationService.list(Wrappers.lambdaQuery(UserPostRelation.class)
.eq(UserPostRelation::getUserId, StpUtil.getLoginIdAsLong()));
List<UserPostRelation> userPostRelations = userPostRelationClient.getUserPostRelationListFeign(StpUtil.getLoginIdAsLong());
//获取登陆人所选择的身份缓存
String postId = redisUtil.get(GlobalConstant.LOGIN_IDENTITY_CACHE_PREFIX + loginUser.getId());
Post post = new Post();
if (StrUtil.isNotBlank(postId) && !postId.equals("null")) {
post = postService.getById(Long.valueOf(postId));
post = postClient.getPostByIdFeign(Long.valueOf(postId));
}
if (userPostRelations.size() > 0) {
List<Long> postIds = userPostRelations.stream().map(UserPostRelation::getPostId).collect(Collectors.toList());
List<Post> postList = postService.listByIds(postIds);
List<Post> postList = postClient.getPostListByIdsFeign(postIds);
if ((post == null || StrUtil.isBlank(postId)) && com.baomidou.mybatisplus.core.toolkit.CollectionUtils.isNotEmpty(postList)) {
post = postList.get(0);
}
@ -222,8 +214,8 @@ public class LoginServiceImpl implements ILoginService {
if (userDeptRelations.size() > 0) {
// 存当前用户所有部门到缓存
List<Long> departmentIds = userDeptRelations.stream().map(UserDeptRelation::getDeptId).collect(Collectors.toList());
List<Department> departmentList = departmentService.listByIds(departmentIds);
departmentService.queryPathFromRoot(departmentList);
List<Department> departmentList = departmentClient.getDepartmentListByIdsFeign(departmentIds);
departmentClient.queryPathFromRoot(departmentList);
tokenSession.set(GlobalConstant.LOGIN_USER_DEPT_LIST_KEY, departmentList);
//主部门
@ -234,7 +226,7 @@ public class LoginServiceImpl implements ILoginService {
Department department = departmentList.get(0);
//如果此人有岗位 使用岗位的deptId 找到当前组织机构
if (ObjectUtil.isNotNull(post.getId())) {
department = departmentService.getById(post.getDeptId());
department = departmentClient.getDepartmentByIdFeign(post.getDeptId());
}else if(ObjectUtil.isNotEmpty(mainDepartmentIds)){
//找一个主部门
department=departmentList.stream().filter(x->mainDepartmentIds.contains(x.getId())).findFirst().get();
@ -288,7 +280,7 @@ public class LoginServiceImpl implements ILoginService {
* @param deviceType
* @return
*/
@Override
/*@Override
public LoginConfig validateLoginConfig(Integer deviceType) {
if (licenseConfig.getEnabled()) {
//查出所有在线用户
@ -335,6 +327,6 @@ public class LoginServiceImpl implements ILoginService {
SaManager.setConfig(oldConfig);
return loginConfig;
}
}*/
}

View File

@ -73,6 +73,9 @@ public class SsoServiceImpl implements SsoService {
@Value("${xjrsoft.dist.url:}")
private String url;
@Value("${xjrsoft.openLoginLog: false}")
private boolean openLoginLog;
private String pcPath = "/flow/%s/%s/approveFlow?taskId=%s";
private String mobilePath = "/pages/workflow/approval?taskId=%s&processId=%s&type=todo";

View File

@ -20,6 +20,7 @@ public class R extends HashMap<String, Object> {
public R() {
put("code", 0);
put("retcode", 1);
put("success", true);
put("msg", "");
}

View File

@ -18,6 +18,7 @@ import com.xjrsoft.common.core.exception.MyException;
import com.xjrsoft.common.satoken.config.MagicApiConfig;
import com.xjrsoft.common.satoken.interceptor.MagicApiWebLoginInterceptor;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
@ -29,6 +30,7 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
*/
@Configuration(proxyBeanMethods = false)
@RequiredArgsConstructor
@Slf4j
public class SaTokenAutoConfiguration implements WebMvcConfigurer {
private final MagicApiConfig magicApiConfig;

View File

@ -44,20 +44,16 @@
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.xjrsoft</groupId>
<artifactId>xjrsoft-common-generate</artifactId>
<version>${xjrsoft.framework.version}</version>
</dependency>
<dependency>
<groupId>com.xjrsoft</groupId>
<artifactId>xjrsoft-common-mybatis</artifactId>
<version>${xjrsoft.framework.version}</version>
<scope>provided</scope>
<version>1.0.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
</dependencies>

View File

@ -18,9 +18,9 @@ import java.util.List;
public interface IDepartmentClient {
/**
* 根据id获取部门
*
* @param depId
* @return
*/
@ -30,6 +30,7 @@ public interface IDepartmentClient {
/**
* 根据id获取部门
*
* @param depIds
* @return
*/
@ -37,9 +38,9 @@ public interface IDepartmentClient {
List<Department> getDepartmentListByIdsFeign(@RequestParam("depIds") List<Long> depIds);
/**
* 新增部门
*
* @param department
* @return
*/
@ -51,4 +52,10 @@ public interface IDepartmentClient {
*/
@GetMapping(GlobalConstant.CLIENT_API_PRE + GlobalConstant.MODULE_ORGANIZATION_NAME + "/departmentCacheFeign")
void departmentCacheFeign();
/**
* 获取root部门
*/
@GetMapping(GlobalConstant.CLIENT_API_PRE + GlobalConstant.MODULE_ORGANIZATION_NAME + "/queryPathFromRootFeign")
List<Department> queryPathFromRoot(List<Department> list);
}

View File

@ -45,7 +45,7 @@ public interface IUserRoleRelationClient {
* @param userRoleRelation
* @return
*/
@GetMapping(GlobalConstant.CLIENT_API_PRE+ GlobalConstant.MODULE_ORGANIZATION_NAME + "/addUserRoleRelationFeign")
@GetMapping(GlobalConstant.CLIENT_API_PRE+ GlobalConstant.MODULE_ORGANIZATION_NAME + "/list")
List<UserRoleRelation> list(UserRoleRelation userRoleRelation);
}

View File

@ -31,4 +31,10 @@ public class DepartmentClientFallBack implements IDepartmentClient {
public void departmentCacheFeign() {
}
@Override
public List<Department> queryPathFromRoot(List<Department> list) {
return null;
}
}

View File

@ -50,7 +50,11 @@
<artifactId>xjrsoft-service-magicapi-api</artifactId>
<version>${xjrsoft.framework.version}</version>
</dependency>
<dependency>
<groupId>com.xjrsoft</groupId>
<artifactId>xjrsoft-service-generate-api</artifactId>
<version>${xjrsoft.framework.version}</version>
</dependency>
<dependency>
<groupId>com.xjrsoft</groupId>

View File

@ -1501,17 +1501,7 @@ public class FormExecuteServiceImpl implements IFormExecuteService {
queryExpression = new AndExpression(queryExpression, dataAuthExpression);
}
}
// 添加租户过滤条件
if (BooleanUtils.isTrue(tenantConfig.getEnabled())) {
EqualsTo tenantExp = new EqualsTo();
tenantExp.setLeftExpression(new net.sf.jsqlparser.schema.Column(tenantConfig.getTenantField()));
tenantExp.setRightExpression(new LongValue(SecureUtil.getTenantId()));
if(queryExpression == null) {
queryExpression = tenantExp;
} else {
queryExpression = new AndExpression(new Parenthesis(queryExpression), tenantExp);
}
}
plainSelect.setWhere(queryExpression);
//将所有查询的数据id 转string
@ -1824,17 +1814,6 @@ public class FormExecuteServiceImpl implements IFormExecuteService {
queryExpression = new AndExpression(queryExpression, dataAuthExpression);
}
}
// 添加租户过滤条件
if (BooleanUtils.isTrue(tenantConfig.getEnabled())) {
EqualsTo tenantExp = new EqualsTo();
tenantExp.setLeftExpression(new net.sf.jsqlparser.schema.Column(tenantConfig.getTenantField()));
tenantExp.setRightExpression(new LongValue(SecureUtil.getTenantId()));
if (queryExpression != null){
queryExpression = new AndExpression(new Parenthesis(queryExpression), tenantExp);
} else {
queryExpression = tenantExp;
}
}
plainSelect.setWhere(queryExpression);
Db use = Db.use(datasource);
use.setRunner(new XjrSqlConnRunner(DialectFactory.getDialect(datasource)));
@ -2279,10 +2258,6 @@ public class FormExecuteServiceImpl implements IFormExecuteService {
}
}
}
// 添加租户id数据
if (BooleanUtils.isTrue(tenantConfig.getEnabled())) {
resultData.put(tenantConfig.getTenantField(), SecureUtil.getTenantId());
}
return resultData;
}

View File

@ -52,7 +52,11 @@
<groupId>com.cloud.govern</groupId>
<artifactId>service-invoke-sdk</artifactId>
</dependency>
<dependency>
<groupId>com.xjrsoft</groupId>
<artifactId>xjrsoft-service-system-api</artifactId>
<version>${xjrsoft.framework.version}</version>
</dependency>
</dependencies>
<build>

View File

@ -63,4 +63,10 @@ public class DepartmentClient implements IDepartmentClient {
public void departmentCacheFeign() {
departmentService.departmentCache();
}
@Override
public List<Department> queryPathFromRoot(List<Department> list) {
return departmentService.queryPathFromRoot(list);
}
}

View File

@ -123,9 +123,9 @@ public class UserController {
SaSession tokenSession = StpUtil.getTokenSession();
User user = tokenSession.get(GlobalConstant.LOGIN_USER_INFO_KEY, new User());
UserInfoVo currentInfo = userService.getCurrentInfo(user);
currentInfo.setTenantId(SecureUtil.getCurrentTenantId());
currentInfo.setTenantCode(SecureUtil.getCurrentTenantCode());
currentInfo.setTenantName(SecureUtil.getCurrentTenantName());
// currentInfo.setTenantId(SecureUtil.getCurrentTenantId());
// currentInfo.setTenantCode(SecureUtil.getCurrentTenantCode());
// currentInfo.setTenantName(SecureUtil.getCurrentTenantName());
return R.ok(currentInfo);
}

View File

@ -65,17 +65,8 @@ public class MenuController {
@GetMapping("/list")
@Operation(summary = "获取所有菜单(不分页)")
public R list() {
List<Long> tenantAuthMenuIds = null;
boolean isAdminTenant = SecureUtil.isAdminTenant();
if (!isAdminTenant) {
tenantAuthMenuIds = menuService.getTenantAuthMenuIds(Long.parseLong(SecureUtil.getTenantId()));
if (CollectionUtils.isEmpty(tenantAuthMenuIds)) {
return R.ok(new ArrayList<>(0));
}
}
List<Menu> list = menuService.list(Wrappers.lambdaQuery(Menu.class)
.select(Menu.class, x -> VoToColumnUtil.fieldsToColumns(MenuListVo.class).contains(x.getProperty()))
.in(CollectionUtils.isNotEmpty(tenantAuthMenuIds), Menu::getId, tenantAuthMenuIds));
.select(Menu.class, x -> VoToColumnUtil.fieldsToColumns(MenuListVo.class).contains(x.getProperty())));
List<MenuListVo> menuListVos = BeanUtil.copyToList(list, MenuListVo.class);
return R.ok(TreeUtil.build(menuListVos));
}
@ -93,14 +84,6 @@ public class MenuController {
@GetMapping("/all-tree")
@Operation(summary = "获取所有菜单(树结构)")
public R allMenuTree(@Valid MenuTreeDto dto) {
List<Long> tenantAuthMenuIds = null;
boolean isAdminTenant = SecureUtil.isAdminTenant();
if (!isAdminTenant&&tenantConfig.getEnabled()) {
tenantAuthMenuIds = menuService.getTenantAuthMenuIds(Long.parseLong(SecureUtil.getTenantId()));
if (CollectionUtils.isEmpty(tenantAuthMenuIds)) {
return R.ok(new ArrayList<>(0));
}
}
List<MenuTreeVo> list = menuService.selectJoinList(MenuTreeVo.class,
MPJWrappers.<Menu>lambdaJoin()
.disableSubLogicDel()
@ -110,7 +93,6 @@ public class MenuController {
.select(Menu.class, x -> VoToColumnUtil.fieldsToColumns(MenuTreeVo.class).contains(x.getProperty()))
.selectAs(Subsystem::getName, MenuTreeVo::getSystemName)
.eq(ObjectUtils.isNotEmpty(dto.getEnabledMark()), Menu::getEnabledMark, dto.getEnabledMark())
.in(CollectionUtils.isNotEmpty(tenantAuthMenuIds), Menu::getId, tenantAuthMenuIds)
.leftJoin(Subsystem.class, Subsystem::getId, Menu::getSystemId)
.orderByAsc(Menu::getSortCode));
List<MenuTreeVo> treeVoList = TreeUtil.build(list);

View File

@ -61,14 +61,6 @@ public class MenuServiceImpl extends MPJBaseServiceImpl<MenuMapper, Menu> implem
@Override
public List<MenuVo> getAuthMenuList(MenuTreeDto dto) {
// 租户授权菜单
List<Long> tenantAuthMenuIds = null;
if (BooleanUtils.isTrue(tenantConfig.getEnabled())&&!SecureUtil.isAdminTenant()) {
tenantAuthMenuIds = getTenantAuthMenuIds(Long.parseLong(SecureUtil.getTenantId()));
if (CollectionUtils.isEmpty(tenantAuthMenuIds)) {
return new ArrayList<>();
}
}
List<UserRoleRelation> relations = userRoleRelationClient.getUserRoleRelationListByUserIdFeign(StpUtil.getLoginIdAsLong());
if (CollectionUtils.isEmpty(relations)) {
return new ArrayList<>();
@ -100,7 +92,6 @@ public class MenuServiceImpl extends MPJBaseServiceImpl<MenuMapper, Menu> implem
.leftJoin(Subsystem.class, Subsystem::getId, Menu::getSystemId)
.leftJoin(WorkflowSchema.class,WorkflowSchema::getFormId, Menu::getFormId)
.selectAs(WorkflowSchema::getId,MenuVo::getSchemaId)
.in(CollectionUtils.isNotEmpty(tenantAuthMenuIds), Menu::getId, tenantAuthMenuIds)
.eq(Menu::getEnabledMark, EnabledMark.ENABLED.getCode())
.orderByAsc(Subsystem::getSortCode)
.orderByAsc(Menu::getSortCode));

View File

@ -4679,27 +4679,27 @@ public class WorkflowExecuteServiceImpl implements IWorkflowExecuteService {
.superProcessInstanceId(dto.getProcessId()).list();
//当前流程是否有父级流程,就是外部流程或者子流程。外部流程或者子流程不能撤回到开始节点,不新增开始节点
if (subProcess.size() < 1) {
//获取到当前流程发起人 如果操作人 是发起人 默认新增开始节点
Object startUserId = runtimeService.getVariable(dto.getProcessId(), WorkflowConstant.PROCESS_START_USER_ID_KEY);
if (StpUtil.getLoginIdAsLong() == Convert.toLong(startUserId)) {
List<HistoricActivityInstance> startList = historyService.createHistoricActivityInstanceQuery()
.processInstanceId(dto.getProcessId())
.activityType(WorkflowConstant.BPMN_START_EVENT_TYPE_NAME)
.finished()
.orderByHistoricActivityInstanceEndTime()
.desc()
.list();
HistoricActivityInstance historicActivityInstance = startList.get(0);
RejectNodeVo vo = new RejectNodeVo();
vo.setActivityId(historicActivityInstance.getActivityId());
vo.setActivityName(historicActivityInstance.getActivityName());
voList.add(vo);
}
}
// if (subProcess.size() < 1) {
// //获取到当前流程发起人 如果操作人 是发起人 默认新增开始节点
// Object startUserId = runtimeService.getVariable(dto.getProcessId(), WorkflowConstant.PROCESS_START_USER_ID_KEY);
// if (StpUtil.getLoginIdAsLong() == Convert.toLong(startUserId)) {
//
// List<HistoricActivityInstance> startList = historyService.createHistoricActivityInstanceQuery()
// .processInstanceId(dto.getProcessId())
// .activityType(WorkflowConstant.BPMN_START_EVENT_TYPE_NAME)
// .finished()
// .orderByHistoricActivityInstanceEndTime()
// .desc()
// .list();
//
// HistoricActivityInstance historicActivityInstance = startList.get(0);
//
// RejectNodeVo vo = new RejectNodeVo();
// vo.setActivityId(historicActivityInstance.getActivityId());
// vo.setActivityName(historicActivityInstance.getActivityName());
// voList.add(vo);
// }
// }
if (list == null || list.size() == 0) {
return voList;