接口迁移,删除管理员角色参数调整
This commit is contained in:
parent
31958870c9
commit
38b200e600
@ -30,9 +30,6 @@ public interface PermissionPointApplyApi {
|
|||||||
@PostMapping(value = "/api/v1/permissionPoint/apply/submit")
|
@PostMapping(value = "/api/v1/permissionPoint/apply/submit")
|
||||||
ApiResult<Long> submitApply(@RequestBody@Valid SubmitPermissionPointApplyVO apply);
|
ApiResult<Long> submitApply(@RequestBody@Valid SubmitPermissionPointApplyVO apply);
|
||||||
|
|
||||||
@PostMapping(value = "/api/v1/permissionPoint/apply/update-detail")
|
|
||||||
ApiResult<Void> updateDetail(@RequestBody@Valid UpdatePermissionPointApplyVO updateDetail);
|
|
||||||
|
|
||||||
@PostMapping(value = "/api/v1/permissionPoint/apply/bind")
|
@PostMapping(value = "/api/v1/permissionPoint/apply/bind")
|
||||||
ApiResult<Void> bindWorkflowInstantce(@RequestBody@Valid BindWorkflowInstantceVO bind);
|
ApiResult<Void> bindWorkflowInstantce(@RequestBody@Valid BindWorkflowInstantceVO bind);
|
||||||
|
|
||||||
|
|||||||
@ -73,18 +73,10 @@ public interface TyrSaasRoleUserApi {
|
|||||||
ApiResult<Boolean> deleteAdminRole(@RequestBody @Valid @NotEmpty List<DeleteAdminRoleParam> params);
|
ApiResult<Boolean> deleteAdminRole(@RequestBody @Valid @NotEmpty List<DeleteAdminRoleParam> params);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 批量查询超管
|
* 批量查询超管, 只能批量获取单个工作台台下的超管,业务系统需要根据返回的identityId和identityType查询identityProfile查询用户明细信息
|
||||||
* @param params
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
@PostMapping("api/saas-role-user/super-admin-list")
|
|
||||||
ApiResult<List<SuperAdminInfoDTO>> superAdminList(@RequestBody @Valid @NotEmpty List<SuperAdminParam> params);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查看超管详情
|
|
||||||
* @param param
|
* @param param
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@PostMapping("api/saas-role-user/super-admin")
|
@PostMapping("api/saas-role-user/super-admin-list")
|
||||||
ApiResult<SuperAdminInfoDTO> superAdmin(@RequestBody @Valid SuperAdminParam param);
|
ApiResult<List<SuperAdminInfoDTO>> superAdminList(@RequestBody @Valid SuperAdminParam param);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,5 @@
|
|||||||
package cn.axzo.tyr.client.model.roleuser.dto;
|
package cn.axzo.tyr.client.model.roleuser.dto;
|
||||||
|
|
||||||
import cn.axzo.tyr.client.model.enums.IdentityType;
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -16,19 +15,7 @@ public class SuperAdminInfoDTO {
|
|||||||
*/
|
*/
|
||||||
private Long identityId;
|
private Long identityId;
|
||||||
|
|
||||||
private IdentityType identityType;
|
private Integer identityType;
|
||||||
|
|
||||||
/**
|
|
||||||
* 手机号
|
|
||||||
*/
|
|
||||||
private String phone;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 姓名
|
|
||||||
*/
|
|
||||||
private String realName;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 工作台Id
|
* 工作台Id
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -1,7 +1,5 @@
|
|||||||
package cn.axzo.tyr.client.model.roleuser.req;
|
package cn.axzo.tyr.client.model.roleuser.req;
|
||||||
|
|
||||||
import cn.axzo.basics.common.constant.enums.OrganizationalNodeTypeEnum;
|
|
||||||
import cn.axzo.tyr.client.common.enums.RoleTypeEnum;
|
|
||||||
import cn.axzo.tyr.client.model.enums.IdentityType;
|
import cn.axzo.tyr.client.model.enums.IdentityType;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
@ -12,22 +10,10 @@ public class DeleteAdminRoleParam {
|
|||||||
* 工作台id,与context校验
|
* 工作台id,与context校验
|
||||||
*/
|
*/
|
||||||
private Long workspaceId;
|
private Long workspaceId;
|
||||||
|
|
||||||
/**
|
|
||||||
* 工作台类型
|
|
||||||
*/
|
|
||||||
private Integer workspaceTypeCode;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 单位id : 非必填
|
* 单位id : 非必填
|
||||||
*/
|
*/
|
||||||
private Long ouId;
|
private Long ouId;
|
||||||
|
|
||||||
/**
|
|
||||||
* 单位类型
|
|
||||||
*/
|
|
||||||
private OrganizationalNodeTypeEnum nodeTypeEnum;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 被赋予角色的人的身份id
|
* 被赋予角色的人的身份id
|
||||||
*/
|
*/
|
||||||
@ -37,11 +23,4 @@ public class DeleteAdminRoleParam {
|
|||||||
* 身份类型,必填
|
* 身份类型,必填
|
||||||
*/
|
*/
|
||||||
private IdentityType identityType;
|
private IdentityType identityType;
|
||||||
|
|
||||||
/**
|
|
||||||
* 角色Id,必填
|
|
||||||
* 只能传SUPER_ADMIN,ADMIN
|
|
||||||
*/
|
|
||||||
private RoleTypeEnum roleType;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,5 +1,8 @@
|
|||||||
package cn.axzo.tyr.client.model.roleuser.req;
|
package cn.axzo.tyr.client.model.roleuser.req;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import javax.validation.constraints.NotEmpty;
|
||||||
import javax.validation.constraints.NotNull;
|
import javax.validation.constraints.NotNull;
|
||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
@ -27,7 +30,6 @@ public class SuperAdminParam {
|
|||||||
/**
|
/**
|
||||||
* 单位Id
|
* 单位Id
|
||||||
*/
|
*/
|
||||||
@NotNull(message = "单位Id不能为空")
|
@NotEmpty(message = "单位Id不能为空")
|
||||||
private Long ouId;
|
private List<Long> ouIds;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -35,11 +35,6 @@ public class PermissionPointApplyController implements PermissionPointApplyApi {
|
|||||||
return ApiResult.ok(saasFeatureApplyService.saveApply(apply));
|
return ApiResult.ok(saasFeatureApplyService.saveApply(apply));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public ApiResult<Void> updateDetail(UpdatePermissionPointApplyVO updateDetail) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ApiResult<Void> bindWorkflowInstantce(BindWorkflowInstantceVO bind) {
|
public ApiResult<Void> bindWorkflowInstantce(BindWorkflowInstantceVO bind) {
|
||||||
saasFeatureApplyService.bindWorkflowInstantce(bind);
|
saasFeatureApplyService.bindWorkflowInstantce(bind);
|
||||||
|
|||||||
@ -1,5 +1,12 @@
|
|||||||
package cn.axzo.tyr.server.controller.roleuser;
|
package cn.axzo.tyr.server.controller.roleuser;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import javax.validation.Valid;
|
||||||
|
|
||||||
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
import cn.axzo.framework.domain.web.result.ApiResult;
|
import cn.axzo.framework.domain.web.result.ApiResult;
|
||||||
import cn.axzo.tyr.client.feign.TyrSaasRoleUserApi;
|
import cn.axzo.tyr.client.feign.TyrSaasRoleUserApi;
|
||||||
import cn.axzo.tyr.client.model.roleuser.dto.CreateAdminRoleDTO;
|
import cn.axzo.tyr.client.model.roleuser.dto.CreateAdminRoleDTO;
|
||||||
@ -8,15 +15,8 @@ import cn.axzo.tyr.client.model.roleuser.dto.SuperAdminInfoDTO;
|
|||||||
import cn.axzo.tyr.client.model.roleuser.req.*;
|
import cn.axzo.tyr.client.model.roleuser.req.*;
|
||||||
import cn.axzo.tyr.server.service.SaasRoleUserRelationService;
|
import cn.axzo.tyr.server.service.SaasRoleUserRelationService;
|
||||||
import cn.axzo.tyr.server.service.SaasRoleUserService;
|
import cn.axzo.tyr.server.service.SaasRoleUserService;
|
||||||
import com.google.common.collect.Lists;
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
|
||||||
|
|
||||||
import javax.validation.Valid;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author tanjie@axzo.cn
|
* @author tanjie@axzo.cn
|
||||||
@ -74,15 +74,13 @@ public class RoleUserController implements TyrSaasRoleUserApi {
|
|||||||
return ApiResult.ok(true);
|
return ApiResult.ok(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* cn.axzo.basics.auth.api.SaasRoleApi#batchFindSuperAdmin
|
||||||
|
* @param param
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public ApiResult<List<SuperAdminInfoDTO>> superAdminList(List<SuperAdminParam> params) {
|
public ApiResult<List<SuperAdminInfoDTO>> superAdminList(SuperAdminParam param) {
|
||||||
//todo cn.axzo.basics.auth.api.SaasRoleApi#batchFindSuperAdmin
|
return ApiResult.ok(saasRoleUserService.superAdminList(param));
|
||||||
return ApiResult.ok(new ArrayList<>());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ApiResult<SuperAdminInfoDTO> superAdmin(SuperAdminParam param) {
|
|
||||||
// todo cn.axzo.basics.auth.api.SaasRoleApi#findSuperAdmin
|
|
||||||
return ApiResult.ok(new SuperAdminInfoDTO());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,15 +1,13 @@
|
|||||||
package cn.axzo.tyr.server.service;
|
package cn.axzo.tyr.server.service;
|
||||||
|
|
||||||
import cn.axzo.tyr.client.model.enums.IdentityType;
|
|
||||||
import cn.axzo.tyr.client.model.roleuser.req.DeleteRoleUserParam;
|
|
||||||
import cn.axzo.tyr.client.model.roleuser.req.DeleteUserRoleParam;
|
|
||||||
import cn.axzo.tyr.client.model.roleuser.req.RoleUserParam;
|
|
||||||
import cn.axzo.tyr.client.model.roleuser.req.RoleUserReq;
|
|
||||||
import cn.axzo.tyr.server.repository.entity.SaasRoleUserRelation;
|
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
|
import cn.axzo.tyr.client.model.enums.IdentityType;
|
||||||
|
import cn.axzo.tyr.client.model.roleuser.dto.SuperAdminInfoDTO;
|
||||||
|
import cn.axzo.tyr.client.model.roleuser.req.*;
|
||||||
|
import cn.axzo.tyr.server.repository.entity.SaasRoleUserRelation;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author tanjie@axzo.cn
|
* @author tanjie@axzo.cn
|
||||||
* @date 2023/9/13 15:36
|
* @date 2023/9/13 15:36
|
||||||
@ -60,4 +58,18 @@ public interface SaasRoleUserService {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
List<SaasRoleUserRelation> queryByWorkspaceIdOrOu(Long identityId, IdentityType identityType, Set<Long> workspaceIds, Set<Long> ouIds);
|
List<SaasRoleUserRelation> queryByWorkspaceIdOrOu(Long identityId, IdentityType identityType, Set<Long> workspaceIds, Set<Long> ouIds);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量获取超管信息
|
||||||
|
* @param param
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<SuperAdminInfoDTO> superAdminList(SuperAdminParam param);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 移除管理员
|
||||||
|
* @param params
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
boolean deleteAdminRole(List<DeleteAdminRoleParam> params);
|
||||||
}
|
}
|
||||||
@ -1,30 +1,33 @@
|
|||||||
package cn.axzo.tyr.server.service.impl;
|
package cn.axzo.tyr.server.service.impl;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import cn.axzo.tyr.client.model.roleuser.req.*;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import com.alibaba.nacos.common.utils.CollectionUtils;
|
||||||
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
|
|
||||||
|
import cn.axzo.basics.common.constant.enums.TableIsDeleteEnum;
|
||||||
import cn.axzo.basics.common.exception.ServiceException;
|
import cn.axzo.basics.common.exception.ServiceException;
|
||||||
import cn.axzo.pokonyan.config.mybatisplus.BaseEntity;
|
import cn.axzo.pokonyan.config.mybatisplus.BaseEntity;
|
||||||
import cn.axzo.tyr.client.common.enums.RoleTypeEnum;
|
import cn.axzo.tyr.client.common.enums.RoleTypeEnum;
|
||||||
import cn.axzo.tyr.client.model.BaseWorkspaceModel;
|
import cn.axzo.tyr.client.model.BaseWorkspaceModel;
|
||||||
import cn.axzo.tyr.client.model.enums.IdentityType;
|
import cn.axzo.tyr.client.model.enums.IdentityType;
|
||||||
import cn.axzo.tyr.client.model.roleuser.req.DeleteRoleUserParam;
|
import cn.axzo.tyr.client.model.roleuser.dto.SuperAdminInfoDTO;
|
||||||
import cn.axzo.tyr.client.model.roleuser.req.DeleteUserRoleParam;
|
|
||||||
import cn.axzo.tyr.client.model.roleuser.req.RoleUserReq;
|
|
||||||
import cn.axzo.tyr.server.repository.dao.SaasRoleDao;
|
import cn.axzo.tyr.server.repository.dao.SaasRoleDao;
|
||||||
import cn.axzo.tyr.server.repository.dao.SaasRoleUserRelationDao;
|
import cn.axzo.tyr.server.repository.dao.SaasRoleUserRelationDao;
|
||||||
import cn.axzo.tyr.server.repository.entity.SaasRole;
|
import cn.axzo.tyr.server.repository.entity.SaasRole;
|
||||||
import cn.axzo.tyr.server.repository.entity.SaasRoleUserRelation;
|
import cn.axzo.tyr.server.repository.entity.SaasRoleUserRelation;
|
||||||
import cn.axzo.tyr.server.service.SaasRoleUserService;
|
import cn.axzo.tyr.server.service.SaasRoleUserService;
|
||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
import com.alibaba.nacos.common.utils.CollectionUtils;
|
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Objects;
|
|
||||||
import java.util.Set;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 角色
|
* 角色
|
||||||
@ -142,4 +145,33 @@ public class RoleUserService implements SaasRoleUserService {
|
|||||||
public List<SaasRoleUserRelation> queryByWorkspaceIdOrOu(Long identityId, IdentityType identityType, Set<Long> workspaceIds, Set<Long> ouIds) {
|
public List<SaasRoleUserRelation> queryByWorkspaceIdOrOu(Long identityId, IdentityType identityType, Set<Long> workspaceIds, Set<Long> ouIds) {
|
||||||
return roleUserRelationDao.queryByWorkspaceIdOrOu(identityId, identityType, workspaceIds, ouIds);
|
return roleUserRelationDao.queryByWorkspaceIdOrOu(identityId, identityType, workspaceIds, ouIds);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<SuperAdminInfoDTO> superAdminList(SuperAdminParam param) {
|
||||||
|
if (param.getWorkspaceId() == null || CollectionUtil.isEmpty(param.getOuIds())) {
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
List<SaasRoleUserRelation> relations = roleUserRelationDao.lambdaQuery()
|
||||||
|
.in(SaasRoleUserRelation::getWorkspaceId, param.getWorkspaceId())
|
||||||
|
.in(SaasRoleUserRelation::getOuId, param.getOuIds())
|
||||||
|
.eq(SaasRoleUserRelation::getIsDelete, TableIsDeleteEnum.NORMAL.value).list();
|
||||||
|
if (CollectionUtils.isEmpty(relations)) {
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
return relations.stream().map(r -> {
|
||||||
|
SuperAdminInfoDTO superAdminInfo = new SuperAdminInfoDTO();
|
||||||
|
superAdminInfo.setWorkspaceId(r.getWorkspaceId());
|
||||||
|
superAdminInfo.setOuId(r.getOuId());
|
||||||
|
superAdminInfo.setIdentityId(r.getIdentityId());
|
||||||
|
superAdminInfo.setIdentityType(r.getIdentityType());
|
||||||
|
return superAdminInfo;
|
||||||
|
}).collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public boolean deleteAdminRole(List<DeleteAdminRoleParam> params) {
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -89,9 +89,9 @@ public class SaasFeatureApplyDetailServiceImpl implements SaasFeatureApplyDetail
|
|||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void updateApplyDetail(PermissionPointApplyDetailUpdateReq req) {
|
public void updateApplyDetail(PermissionPointApplyDetailUpdateReq req) {
|
||||||
SaasFeatureApplyDetail detail = BeanMapper.copyBean(req, SaasFeatureApplyDetail.class, (p, s) -> {
|
SaasFeatureApplyDetail detail = BeanMapper.copyBean(req, SaasFeatureApplyDetail.class, (p, s) -> {
|
||||||
s.setFitOuTypeBit(p.getFitOuTypeList() == null ? "" : JSON.toJSONString(p.getFitOuTypeList()));
|
s.setFitOuTypeBit(p.getFitOuTypeList() == null ? "[65535]" : JSON.toJSONString(p.getFitOuTypeList()));
|
||||||
s.setFitOuNodeTypeBit(
|
s.setFitOuNodeTypeBit(
|
||||||
p.getFitOuNodeTypeList() == null ? "" : JSON.toJSONString(p.getFitOuNodeTypeList()));
|
p.getFitOuNodeTypeList() == null ? "[65535]" : JSON.toJSONString(p.getFitOuNodeTypeList()));
|
||||||
});
|
});
|
||||||
this.saveOrUpdate(Lists.newArrayList(detail));
|
this.saveOrUpdate(Lists.newArrayList(detail));
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,6 +5,7 @@ import java.util.function.Function;
|
|||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import cn.axzo.tyr.client.model.enums.FeatureDataType;
|
import cn.axzo.tyr.client.model.enums.FeatureDataType;
|
||||||
|
import com.google.common.collect.Lists;
|
||||||
import org.apache.commons.collections4.CollectionUtils;
|
import org.apache.commons.collections4.CollectionUtils;
|
||||||
import org.apache.commons.collections4.MapUtils;
|
import org.apache.commons.collections4.MapUtils;
|
||||||
import org.apache.commons.lang3.BooleanUtils;
|
import org.apache.commons.lang3.BooleanUtils;
|
||||||
@ -423,9 +424,9 @@ public class SaasFeatureApplyServiceImpl implements SaasFeatureApplyService {
|
|||||||
detail.setSort(point.getSort());
|
detail.setSort(point.getSort());
|
||||||
detail.setTerminal(point.getTerminal());
|
detail.setTerminal(point.getTerminal());
|
||||||
detail.setFeatureType(point.getFeatureType());
|
detail.setFeatureType(point.getFeatureType());
|
||||||
detail.setFitOuTypeBit(point.getFitOuTypeList() == null ? "" : JSON.toJSONString(point.getFitOuTypeList()));
|
detail.setFitOuTypeBit(point.getFitOuTypeList() == null ? "[65535]" : JSON.toJSONString(point.getFitOuTypeList()));
|
||||||
detail.setFitOuNodeTypeBit(
|
detail.setFitOuNodeTypeBit(
|
||||||
point.getFitOuNodeTypeList() == null ? "" : JSON.toJSONString(point.getFitOuNodeTypeList()));
|
point.getFitOuNodeTypeList() == null ? "[65535]" : JSON.toJSONString(point.getFitOuNodeTypeList()));
|
||||||
detail.setDelegatedType(point.getDelegatedType());
|
detail.setDelegatedType(point.getDelegatedType());
|
||||||
detail.setCreateBy(createBy);
|
detail.setCreateBy(createBy);
|
||||||
detail.setCreateAt(now);
|
detail.setCreateAt(now);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user