diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/organ/OrganController.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/organ/OrganController.java index 0d3c409c5..b80e36309 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/organ/OrganController.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/organ/OrganController.java @@ -104,6 +104,14 @@ public class OrganController { return success(true); } + @PostMapping("/status") + @Operation(summary = "更新组织状态") + @PreAuthorize("@ss.hasPermission('organizationLIst:update')") + public CommonResult updateOrganStatus(@Valid @RequestBody OrganUpdateStatusReqVO updateReqVO) { + organService.updateOrganStatus(updateReqVO); + return success(true); + } + @DeleteMapping("/delete") @Operation(summary = "删除组织") @Parameter(name = "id", description = "编号", required = true, example = "1024") diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/organ/vo/organ/OrganUpdateStatusReqVO.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/organ/vo/organ/OrganUpdateStatusReqVO.java new file mode 100644 index 000000000..17068a369 --- /dev/null +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/organ/vo/organ/OrganUpdateStatusReqVO.java @@ -0,0 +1,21 @@ +package com.cf.imes.module.system.controller.admin.organ.vo.organ; + +import com.cf.imes.module.system.validation.common.CommonStatus; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +@Schema(description = "管理后台 - 组织更新状态 Request VO") +@Data +public class OrganUpdateStatusReqVO { + + @Schema(description = "组织编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") + @NotNull(message = "组织编号不能为空") + private Long id; + + @Schema(description = "状态,见 CommonStatusEnum 枚举", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotNull(message = "状态不能为空") + @CommonStatus + private Integer status; + +} diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/organ/OrganService.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/organ/OrganService.java index da2ed7cc8..1d1ef6bd7 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/organ/OrganService.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/organ/OrganService.java @@ -7,6 +7,7 @@ import com.cf.imes.module.system.controller.admin.organ.vo.organ.OrganPageReqVO; import com.cf.imes.module.system.controller.admin.organ.vo.organ.OrganRespVO; import com.cf.imes.module.system.controller.admin.organ.vo.organ.OrganSaveReqVO; import com.cf.imes.module.system.controller.admin.organ.vo.organ.OrganSimpleRespVO; +import com.cf.imes.module.system.controller.admin.organ.vo.organ.OrganUpdateStatusReqVO; import com.cf.imes.module.system.controller.admin.statistics.vo.ManageOrgTotalStatisticRespVO; import com.cf.imes.module.system.controller.admin.statistics.vo.OrgStatusGroupStatisticsReqVO; import com.cf.imes.module.system.dal.dataobject.organ.OrganizationDO; @@ -41,6 +42,13 @@ public interface OrganService { */ void updateOrgan(@Valid OrganSaveReqVO updateReqVO); + /** + * 更新组织状态 + * + * @param updateReqVO + */ + void updateOrganStatus(@Valid OrganUpdateStatusReqVO updateReqVO); + /** * 更新组织的角色菜单 * diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/organ/OrganServiceImpl.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/organ/OrganServiceImpl.java index 10298b7d9..305ddbfaa 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/organ/OrganServiceImpl.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/organ/OrganServiceImpl.java @@ -6,6 +6,7 @@ import cn.hutool.core.lang.Assert; import cn.hutool.core.text.CharSequenceUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.dynamic.datasource.annotation.DSTransactional; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO; import com.cf.imes.framework.common.enums.CommonStatusEnum; @@ -33,6 +34,7 @@ import com.cf.imes.module.system.controller.admin.organ.vo.organ.OrganPageReqVO; import com.cf.imes.module.system.controller.admin.organ.vo.organ.OrganRespVO; import com.cf.imes.module.system.controller.admin.organ.vo.organ.OrganSaveReqVO; import com.cf.imes.module.system.controller.admin.organ.vo.organ.OrganSimpleRespVO; +import com.cf.imes.module.system.controller.admin.organ.vo.organ.OrganUpdateStatusReqVO; import com.cf.imes.module.system.controller.admin.statistics.vo.ManageOrgTotalStatisticRespVO; import com.cf.imes.module.system.controller.admin.statistics.vo.OrgStatusGroupStatisticsReqVO; import com.cf.imes.module.system.controller.admin.systemconfig.vo.ProcessSchemeConfig; @@ -228,16 +230,13 @@ public class OrganServiceImpl implements OrganService { organMapper.insert(tenant); Long organId = tenant.getId(); - if (!tenant.getLarge()) { - tenant.setDbNo(organId.intValue() % 8); - } - tenant.setTableNo(organId.intValue() % 256); - organMapper.updateById(tenant); // 创建组织的管理员 // 1、创建用户,并分配角色 Long userId = createUser(InternalRoleConstants.ORGAN_ADMIN_ROLE_ID, createReqVO, organId); // 2、修改组织的管理员 - organMapper.updateById(new OrganizationDO().setId(tenant.getId()).setContactUserId(userId)); + organMapper.update(new LambdaUpdateWrapper() + .eq(OrganizationDO::getId, organId) + .set(OrganizationDO::getContactUserId, userId)); // 复制系统配置里的相关配置 copySystemConfig(organId); @@ -324,6 +323,27 @@ public class OrganServiceImpl implements OrganService { } } + @Override + @Transactional(rollbackFor = Exception.class) + public void updateOrganStatus(OrganUpdateStatusReqVO updateReqVO) { + Long organId = updateReqVO.getId(); + Integer status = updateReqVO.getStatus(); + // 校验存在 + OrganizationDO tenant = validateUpdateTenant(organId); + // 不允许禁用自身组织 + checkCfOrgWhenOperate(organId); + // 更新状态 + OrganizationDO updateObj = new OrganizationDO(); + updateObj.setId(organId); + updateObj.setStatus(status); + organMapper.updateById(updateObj); + + if (CommonStatusEnum.DISABLE.getStatus().equals(status)) { + // 移除机构下用户的token + scanAndCompareDeptAndDelToken(String.format(OAUTH2_ACCESS_TOKEN, "*"), organId); + } + } + private void validTenantNameDuplicate(String name, Long id) { OrganizationDO tenant = organMapper.selectByName(name); if (tenant == null) {