Merge remote-tracking branch 'origin/dev' into dev

dev
huwei 2026-06-26 11:44:37 +08:00
commit 74dc7b7de9
14 changed files with 288 additions and 7 deletions

View File

@ -46,6 +46,7 @@ create table org_info (
economy_industry_name varchar(100) default null comment '国民经济行业分类名称',
auth_status_code int default null comment '认证状态编码(1填写信息2审核中3通过)',
auth_status_name varchar(50) default null comment '认证状态名称',
state int default 0 comment '状态(0启用1禁用)',
delete_enum varchar(32) default null comment '删除标识true false',
remarks varchar(255) default null comment '备注',
create_name varchar(50) default null comment '创建人姓名',
@ -61,7 +62,8 @@ create table org_info (
primary key (id),
key idx_org_info_tenant_id (tenant_id),
key idx_org_info_credit_code (credit_code),
key idx_org_info_auth_status (auth_status_code)
key idx_org_info_auth_status (auth_status_code),
key idx_org_info_state (state)
) engine=innodb default charset=utf8mb4 collate=utf8mb4_0900_ai_ci comment='机构信息表';
-- ------------------------------------------------------------
@ -651,6 +653,10 @@ create table qual_filing_change_detail (
-- 执行前会清理本机构 org_id=1 下的旧联调数据,避免脏数据干扰
-- ============================================================
-- 已有库增量:机构信息 state 字段0启用1禁用
-- ALTER TABLE org_info ADD COLUMN state int DEFAULT 0 COMMENT '状态(0启用1禁用)' AFTER auth_status_name;
-- CREATE INDEX idx_org_info_state ON org_info (state);
SET @tenant_id = 1001;
SET @org_id = 1;
SET @now = NOW();
@ -673,7 +679,7 @@ INSERT INTO org_info (
principal_name, principal_phone, safety_dept_manager, safety_dept_manager_phone,
safety_deputy_phone, production_date, business_status_name, info_disclosure_url,
workplace_area, archive_room_area, fulltime_evaluator_count, registered_engineer_count,
economy_industry_code, auth_status_code, auth_status_name,
economy_industry_code, auth_status_code, auth_status_name, state,
delete_enum, tenant_id, org_id, create_time, update_time
) VALUES (
@org_id, '秦皇岛示例安全评价有限公司', '91130300MA0XXXXXX1', '安全评价', '海港区', '白塔岭街道',
@ -681,7 +687,7 @@ INSERT INTO org_info (
'河北省秦皇岛市海港区示例路88号', '河北省秦皇岛市海港区示例路88号',
'民营企业', '张三', '0335-88880001', '李四', '13800138001', '王五', '13800138002',
'13800138003', '2018-06-01', '正常经营', 'https://example.com/disclosure',
1200.00, 80.00, 12, 5, 'M7491', 3, '通过',
1200.00, 80.00, 12, 5, 'M7491', 3, '通过', 0,
'false', @tenant_id, @org_id, @now, @now
);

View File

@ -9,6 +9,7 @@ import org.qinan.safetyeval.client.co.OrgInfoCO;
import org.qinan.safetyeval.client.dto.OrgInfoAddCmd;
import org.qinan.safetyeval.client.dto.OrgInfoModifyCmd;
import org.qinan.safetyeval.client.dto.OrgInfoPageQuery;
import org.qinan.safetyeval.client.dto.OrgInfoUpdateStateCmd;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@ -57,6 +58,18 @@ public class OrgInfoController {
return orgInfoApi.delete(id);
}
@ApiOperation("启用/禁用机构信息")
@PostMapping("/update-state")
public SingleResponse<Void> updateState(@Validated @RequestBody OrgInfoUpdateStateCmd cmd) {
return orgInfoApi.updateState(cmd);
}
@ApiOperation("重置机构密码")
@PostMapping("/reset-password")
public SingleResponse<Void> resetPassword(@RequestParam Long id) {
return orgInfoApi.resetPassword(id);
}
@ApiOperation("分页查询机构信息")
@GetMapping("/page")
public PageResponse<OrgInfoCO> page(@Validated OrgInfoPageQuery query) {

View File

@ -7,13 +7,17 @@ import org.qinan.safetyeval.client.co.OrgInfoCO;
import org.qinan.safetyeval.client.dto.OrgInfoAddCmd;
import org.qinan.safetyeval.client.dto.OrgInfoModifyCmd;
import org.qinan.safetyeval.client.dto.OrgInfoPageQuery;
import org.qinan.safetyeval.client.dto.OrgInfoUpdateStateCmd;
import org.qinan.safetyeval.domain.entity.OrgInfoEntity;
import org.qinan.safetyeval.domain.exception.BizException;
import org.qinan.safetyeval.domain.exception.ErrorCode;
import org.qinan.safetyeval.domain.query.OrgInfoQuery;
import org.qinan.safetyeval.domain.query.PageResult;
import org.qinan.safetyeval.domain.service.OrgInfoDomainService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
* App
@ -117,11 +121,29 @@ public class OrgInfoExecutor implements OrgInfoApi {
}
@Override
@Transactional(rollbackFor = Exception.class)
public SingleResponse<Void> delete(Long id) {
orgInfoDomainService.delete(id);
return SingleResponse.success();
}
@Override
public SingleResponse<Void> updateState(OrgInfoUpdateStateCmd cmd) {
orgInfoDomainService.updateState(cmd.getId(), cmd.getState());
return SingleResponse.success();
}
@Override
public SingleResponse<Void> resetPassword(Long id) {
OrgInfoEntity entity = orgInfoDomainService.get(id);
if (entity == null) {
throw new BizException(ErrorCode.ORG_INFO_NOT_FOUND);
}
// 联调阶段:密码重置占位,后续对接统一用户中心
orgInfoDomainService.resetPassword(entity.getCreateId());
return SingleResponse.success();
}
@Override
public PageResponse<OrgInfoCO> page(OrgInfoPageQuery query) {
OrgInfoQuery domainQuery = new OrgInfoQuery();
@ -187,6 +209,7 @@ public class OrgInfoExecutor implements OrgInfoApi {
co.setEconomyIndustryName(entity.getEconomyIndustryName());
co.setAuthStatusCode(entity.getAuthStatusCode());
co.setAuthStatusName(entity.getAuthStatusName());
co.setState(entity.getState());
co.setTenantId(entity.getTenantId());
return co;
}

View File

@ -2,6 +2,8 @@ package org.qinan.safetyeval.app.executor;
import com.jjb.saas.system.client.user.facade.UserFacade;
import com.jjb.saas.system.client.user.request.FacadeUserAddCmd;
import com.jjb.saas.system.client.user.request.UserAddCmd;
import com.jjb.saas.system.client.user.request.UserUpdatePasswordCmd;
import org.apache.dubbo.config.annotation.DubboReference;
import org.qinan.safetyeval.app.support.OrgPersonnelChangeRecorder;
import org.qinan.safetyeval.app.support.OrgPersonnelViewEnricher;
@ -21,6 +23,7 @@ import org.qinan.safetyeval.domain.query.PageResult;
import org.qinan.safetyeval.domain.service.OrgPersonnelDomainService;
import org.qinan.safetyeval.infrastructure.adapter.auth.AuthUserContextAdapter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -46,16 +49,26 @@ public class OrgPersonnelExecutor implements OrgPersonnelApi {
@Autowired(required = false)
private OrgResignApplyGateway orgResignApplyGateway;
// @DubboReference
// private UserFacade userFacade;
@DubboReference
private UserFacade userFacade;
@Value("${def.password:a123456}")
private String defPassword;
@Override
@Transactional(rollbackFor = Exception.class)
public SingleResponse<OrgPersonnelCO> add(OrgPersonnelAddCmd cmd) {
OrgPersonnelEntity entity = toEntity(cmd);
OrgPersonnelEntity result = orgPersonnelDomainService.add(entity);
OrgPersonnelCO co = toCO(result);
enrich(co);
// 同步用户信息GBS
//todo 同步用户信息GBS
UserAddCmd userAddCmd = new UserAddCmd();
userAddCmd.setId(result.getId());
userAddCmd.setAccount(result.getAccount());
userAddCmd.setIdCard(result.getIdCardNo());
userAddCmd.setTenantId(result.getTenantId());
userFacade.add(userAddCmd);
return SingleResponse.success(co);
}
@ -93,6 +106,10 @@ public class OrgPersonnelExecutor implements OrgPersonnelApi {
throw new BizException(ErrorCode.ORG_PERSONNEL_NOT_FOUND);
}
// 联调阶段:密码重置占位,后续对接统一用户中心
UserUpdatePasswordCmd userUpdatePasswordCmd = new UserUpdatePasswordCmd();
userUpdatePasswordCmd.setId(entity.getId());
userUpdatePasswordCmd.setPassword(defPassword);
userFacade.updatePassword(userUpdatePasswordCmd);
return SingleResponse.success();
}

View File

@ -6,6 +6,7 @@ import org.qinan.safetyeval.client.dto.SingleResponse;
import org.qinan.safetyeval.client.dto.OrgInfoAddCmd;
import org.qinan.safetyeval.client.dto.OrgInfoModifyCmd;
import org.qinan.safetyeval.client.dto.OrgInfoPageQuery;
import org.qinan.safetyeval.client.dto.OrgInfoUpdateStateCmd;
/**
* Client
@ -22,6 +23,10 @@ public interface OrgInfoApi {
SingleResponse<Void> delete(Long id);
SingleResponse<Void> updateState(OrgInfoUpdateStateCmd cmd);
SingleResponse<Void> resetPassword(Long id);
PageResponse<OrgInfoCO> page(OrgInfoPageQuery query);
SingleResponse<OrgInfoCO> getInfo();

View File

@ -114,6 +114,9 @@ public class OrgInfoCO {
/** authStatusName */
private String authStatusName;
/** 状态(0启用1禁用) */
private Integer state;
/** 租户ID */
private Long tenantId;

View File

@ -0,0 +1,24 @@
package org.qinan.safetyeval.client.dto;
import lombok.Data;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
/**
* /
*/
@Data
public class OrgInfoUpdateStateCmd {
/** 主键ID */
@NotNull(message = "机构ID不能为空")
private Long id;
/** 状态(0启用1禁用) */
@NotNull(message = "状态不能为空")
@Min(value = 0, message = "状态值无效")
@Max(value = 1, message = "状态值无效")
private Integer state;
}

View File

@ -115,9 +115,14 @@ public class OrgInfoEntity {
/** 认证状态名称 */
private String authStatusName;
/** 状态(0启用1禁用) */
private Integer state;
/** 租户ID */
private Long tenantId;
/** 单位ID */
private Long orgId;
/** 创建人 */
private Long createId;
}

View File

@ -21,8 +21,11 @@ public interface OrgInfoGateway {
void delete(Long id);
void updateState(Long id, Integer state);
PageResult<OrgInfoEntity> page(OrgInfoQuery query);
OrgInfoEntity getInfo();
void resetPassword(Long id);
}

View File

@ -45,6 +45,14 @@ public class OrgInfoDomainService {
orgInfoGateway.delete(id);
}
public void updateState(Long id, Integer state) {
OrgInfoEntity existing = orgInfoGateway.get(id);
if (existing == null) {
throw new BizException(ErrorCode.ORG_INFO_NOT_FOUND);
}
orgInfoGateway.updateState(id, state);
}
public PageResult<OrgInfoEntity> page(OrgInfoQuery query) {
return orgInfoGateway.page(query);
}
@ -52,4 +60,8 @@ public class OrgInfoDomainService {
public OrgInfoEntity getInfo() {
return orgInfoGateway.getInfo();
}
public void resetPassword(Long id) {
orgInfoGateway.resetPassword(id);
}
}

View File

@ -50,6 +50,7 @@ public class OrgInfoDO {
private String economyIndustryName;
private Integer authStatusCode;
private String authStatusName;
private Integer state;
// ---- GBS默认字段 ----
private String deleteEnum;

View File

@ -3,6 +3,10 @@ package org.qinan.safetyeval.infrastructure.gatewayimpl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jjb.saas.system.client.user.facade.UserFacade;
import com.jjb.saas.system.client.user.request.UserUpdatePasswordCmd;
import com.jjb.saas.system.client.user.request.UserUpdateQuitCmd;
import org.apache.dubbo.config.annotation.DubboReference;
import org.qinan.safetyeval.domain.entity.OrgInfoEntity;
import org.qinan.safetyeval.domain.gateway.OrgInfoGateway;
import org.qinan.safetyeval.domain.query.OrgInfoQuery;
@ -13,13 +17,16 @@ import org.qinan.safetyeval.infrastructure.dataobject.OrgPersonnelDO;
import org.qinan.safetyeval.infrastructure.mapper.OrgInfoMapper;
import org.qinan.safetyeval.infrastructure.mapper.OrgPersonnelMapper;
import org.qinan.safetyeval.infrastructure.support.InsertFieldDefaults;
import org.qinan.safetyeval.infrastructure.support.OrgInfoCascadeDeleter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import javax.annotation.Resource;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
@ -34,10 +41,19 @@ public class OrgInfoGatewayImpl implements OrgInfoGateway {
private OrgInfoMapper orgInfoMapper;
@Resource
private OrgPersonnelMapper orgPersonnelMapper;
@Resource
private OrgInfoCascadeDeleter orgInfoCascadeDeleter;
@DubboReference
private UserFacade userFacade;
@Value("${def.password:a123456}")
private String defPassword;
@Override
public OrgInfoEntity save(OrgInfoEntity entity) {
OrgInfoDO dataObject = toDO(entity);
if (dataObject.getState() == null) {
dataObject.setState(0);
}
InsertFieldDefaults.apply(dataObject);
orgInfoMapper.insert(dataObject);
entity.setId(dataObject.getId());
@ -68,10 +84,47 @@ public class OrgInfoGatewayImpl implements OrgInfoGateway {
}
@Override
@Transactional(rollbackFor = Exception.class)
public void delete(Long id) {
// 同步删除gbs用户(gbs物理)
List<Long> orgPersonnelDOIdS = orgPersonnelMapper.selectList(new LambdaQueryWrapper<OrgPersonnelDO>()
.eq(OrgPersonnelDO::getOrgId, id)).stream().map(OrgPersonnelDO::getId).collect(Collectors.toList());
if (!CollectionUtils.isEmpty(orgPersonnelDOIdS)) {
for (Long orgPersonnelDOId : orgPersonnelDOIdS) {
userFacade.delete(orgPersonnelDOId);
}
}
orgInfoCascadeDeleter.deleteRelatedData(id);
orgInfoMapper.deleteById(id);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void updateState(Long id, Integer state) {
OrgInfoDO update = new OrgInfoDO();
update.setId(id);
update.setState(state);
InsertFieldDefaults.applyForUpdate(update);
orgInfoMapper.updateById(update);
// 同步启用禁用gbs用户
List<Long> orgPersonnelDOIdS = orgPersonnelMapper.selectList(new LambdaQueryWrapper<OrgPersonnelDO>()
.eq(OrgPersonnelDO::getOrgId, id)).stream().map(OrgPersonnelDO::getId).collect(Collectors.toList());
if (!CollectionUtils.isEmpty(orgPersonnelDOIdS)) {
for (Long orgPersonnelDOId : orgPersonnelDOIdS) {
UserUpdateQuitCmd userUpdateQuitCmd = new UserUpdateQuitCmd();
userUpdateQuitCmd.setId(orgPersonnelDOId);
if (state == 1) {
// 禁用
userFacade.quit(userUpdateQuitCmd);
} else {
// 启用
userFacade.restoreJob(userUpdateQuitCmd);
}
}
}
}
@Override
public PageResult<OrgInfoEntity> page(OrgInfoQuery query) {
LambdaQueryWrapper<OrgInfoDO> wrapper = new LambdaQueryWrapper<>();
@ -117,6 +170,15 @@ public class OrgInfoGatewayImpl implements OrgInfoGateway {
return toEntity(dataObject.get(0));
}
@Override
public void resetPassword(Long id) {
// 同步重置gbs用户密码
UserUpdatePasswordCmd userUpdatePasswordCmd = new UserUpdatePasswordCmd();
userUpdatePasswordCmd.setId(id);
userUpdatePasswordCmd.setPassword(defPassword);
userFacade.updatePassword(userUpdatePasswordCmd);
}
private OrgInfoDO toDO(OrgInfoEntity entity) {
OrgInfoDO dataObject = new OrgInfoDO();
dataObject.setUnitName(entity.getUnitName());
@ -152,6 +214,7 @@ public class OrgInfoGatewayImpl implements OrgInfoGateway {
dataObject.setEconomyIndustryName(entity.getEconomyIndustryName());
dataObject.setAuthStatusCode(entity.getAuthStatusCode());
dataObject.setAuthStatusName(entity.getAuthStatusName());
dataObject.setState(entity.getState());
dataObject.setTenantId(entity.getTenantId());
return dataObject;
}
@ -195,6 +258,7 @@ public class OrgInfoGatewayImpl implements OrgInfoGateway {
entity.setEconomyIndustryName(dataObject.getEconomyIndustryName());
entity.setAuthStatusCode(dataObject.getAuthStatusCode());
entity.setAuthStatusName(dataObject.getAuthStatusName());
entity.setState(dataObject.getState());
entity.setTenantId(dataObject.getTenantId());
return entity;
}

View File

@ -0,0 +1,103 @@
package org.qinan.safetyeval.infrastructure.support;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
import org.qinan.safetyeval.infrastructure.dataobject.OrgDepartmentDO;
import org.qinan.safetyeval.infrastructure.dataobject.OrgEquipmentDO;
import org.qinan.safetyeval.infrastructure.dataobject.OrgPersonnelCertDO;
import org.qinan.safetyeval.infrastructure.dataobject.OrgPersonnelChangeDO;
import org.qinan.safetyeval.infrastructure.dataobject.OrgPersonnelDO;
import org.qinan.safetyeval.infrastructure.dataobject.OrgPositionDO;
import org.qinan.safetyeval.infrastructure.dataobject.OrgQualificationDO;
import org.qinan.safetyeval.infrastructure.dataobject.OrgResignApplyDO;
import org.qinan.safetyeval.infrastructure.dataobject.QualFilingChangeDetailDO;
import org.qinan.safetyeval.infrastructure.dataobject.QualFilingChangeDO;
import org.qinan.safetyeval.infrastructure.dataobject.QualFilingCommitmentDO;
import org.qinan.safetyeval.infrastructure.dataobject.QualFilingDO;
import org.qinan.safetyeval.infrastructure.dataobject.QualFilingEquipmentDO;
import org.qinan.safetyeval.infrastructure.dataobject.QualFilingMaterialDO;
import org.qinan.safetyeval.infrastructure.dataobject.QualFilingPersonnelCertDO;
import org.qinan.safetyeval.infrastructure.dataobject.QualFilingPersonnelDO;
import org.qinan.safetyeval.infrastructure.mapper.OrgDepartmentMapper;
import org.qinan.safetyeval.infrastructure.mapper.OrgEquipmentMapper;
import org.qinan.safetyeval.infrastructure.mapper.OrgPersonnelCertMapper;
import org.qinan.safetyeval.infrastructure.mapper.OrgPersonnelChangeMapper;
import org.qinan.safetyeval.infrastructure.mapper.OrgPersonnelMapper;
import org.qinan.safetyeval.infrastructure.mapper.OrgPositionMapper;
import org.qinan.safetyeval.infrastructure.mapper.OrgQualificationMapper;
import org.qinan.safetyeval.infrastructure.mapper.OrgResignApplyMapper;
import org.qinan.safetyeval.infrastructure.mapper.QualFilingChangeDetailMapper;
import org.qinan.safetyeval.infrastructure.mapper.QualFilingChangeMapper;
import org.qinan.safetyeval.infrastructure.mapper.QualFilingCommitmentMapper;
import org.qinan.safetyeval.infrastructure.mapper.QualFilingEquipmentMapper;
import org.qinan.safetyeval.infrastructure.mapper.QualFilingMapper;
import org.qinan.safetyeval.infrastructure.mapper.QualFilingMaterialMapper;
import org.qinan.safetyeval.infrastructure.mapper.QualFilingPersonnelCertMapper;
import org.qinan.safetyeval.infrastructure.mapper.QualFilingPersonnelMapper;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
/**
* org_info.id
*/
@Component
public class OrgInfoCascadeDeleter {
@Resource
private QualFilingChangeDetailMapper qualFilingChangeDetailMapper;
@Resource
private QualFilingChangeMapper qualFilingChangeMapper;
@Resource
private QualFilingPersonnelCertMapper qualFilingPersonnelCertMapper;
@Resource
private QualFilingEquipmentMapper qualFilingEquipmentMapper;
@Resource
private QualFilingPersonnelMapper qualFilingPersonnelMapper;
@Resource
private QualFilingMaterialMapper qualFilingMaterialMapper;
@Resource
private QualFilingCommitmentMapper qualFilingCommitmentMapper;
@Resource
private QualFilingMapper qualFilingMapper;
@Resource
private OrgPersonnelChangeMapper orgPersonnelChangeMapper;
@Resource
private OrgPersonnelCertMapper orgPersonnelCertMapper;
@Resource
private OrgResignApplyMapper orgResignApplyMapper;
@Resource
private OrgPersonnelMapper orgPersonnelMapper;
@Resource
private OrgEquipmentMapper orgEquipmentMapper;
@Resource
private OrgQualificationMapper orgQualificationMapper;
@Resource
private OrgPositionMapper orgPositionMapper;
@Resource
private OrgDepartmentMapper orgDepartmentMapper;
public void deleteRelatedData(Long orgInfoId) {
deleteByOrgId(qualFilingChangeDetailMapper, QualFilingChangeDetailDO::getOrgId, orgInfoId);
deleteByOrgId(qualFilingChangeMapper, QualFilingChangeDO::getOrgId, orgInfoId);
deleteByOrgId(qualFilingPersonnelCertMapper, QualFilingPersonnelCertDO::getOrgId, orgInfoId);
deleteByOrgId(qualFilingEquipmentMapper, QualFilingEquipmentDO::getOrgId, orgInfoId);
deleteByOrgId(qualFilingPersonnelMapper, QualFilingPersonnelDO::getOrgId, orgInfoId);
deleteByOrgId(qualFilingMaterialMapper, QualFilingMaterialDO::getOrgId, orgInfoId);
deleteByOrgId(qualFilingCommitmentMapper, QualFilingCommitmentDO::getOrgId, orgInfoId);
deleteByOrgId(qualFilingMapper, QualFilingDO::getOrgId, orgInfoId);
deleteByOrgId(orgPersonnelChangeMapper, OrgPersonnelChangeDO::getOrgId, orgInfoId);
deleteByOrgId(orgPersonnelCertMapper, OrgPersonnelCertDO::getOrgId, orgInfoId);
deleteByOrgId(orgResignApplyMapper, OrgResignApplyDO::getOrgId, orgInfoId);
deleteByOrgId(orgPersonnelMapper, OrgPersonnelDO::getOrgId, orgInfoId);
deleteByOrgId(orgEquipmentMapper, OrgEquipmentDO::getOrgId, orgInfoId);
deleteByOrgId(orgQualificationMapper, OrgQualificationDO::getOrgId, orgInfoId);
deleteByOrgId(orgPositionMapper, OrgPositionDO::getOrgId, orgInfoId);
deleteByOrgId(orgDepartmentMapper, OrgDepartmentDO::getOrgId, orgInfoId);
}
private <T> void deleteByOrgId(BaseMapper<T> mapper, SFunction<T, Long> orgIdColumn, Long orgInfoId) {
mapper.delete(new LambdaQueryWrapper<T>().eq(orgIdColumn, orgInfoId));
}
}

View File

@ -116,3 +116,5 @@ safety-eval:
system-user-name: local-dev
tenant-id: 1001
org-id: 1
def:
passwrod: a123456