mirror of
				https://gitee.com/hhyykk/ipms-sjy.git
				synced 2025-11-01 02:38:43 +08:00 
			
		
		
		
	CRM: 获取模块操作日志接口抽离
This commit is contained in:
		| @@ -17,9 +17,6 @@ import cn.iocoder.yudao.module.crm.enums.ErrorCodeConstants; | ||||
| import cn.iocoder.yudao.module.crm.service.contact.CrmContactBusinessService; | ||||
| import cn.iocoder.yudao.module.crm.service.contact.CrmContactService; | ||||
| import cn.iocoder.yudao.module.crm.service.customer.CrmCustomerService; | ||||
| import cn.iocoder.yudao.module.system.api.logger.OperateLogApi; | ||||
| import cn.iocoder.yudao.module.system.api.logger.dto.OperateLogV2PageReqDTO; | ||||
| import cn.iocoder.yudao.module.system.api.logger.dto.OperateLogV2RespDTO; | ||||
| import cn.iocoder.yudao.module.system.api.user.AdminUserApi; | ||||
| import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; | ||||
| import com.google.common.collect.Lists; | ||||
| @@ -46,7 +43,6 @@ import static cn.iocoder.yudao.framework.common.pojo.PageParam.PAGE_SIZE_NONE; | ||||
| import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*; | ||||
| import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; | ||||
| import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; | ||||
| import static cn.iocoder.yudao.module.crm.enums.LogRecordConstants.CRM_CONTACT_TYPE; | ||||
|  | ||||
| @Tag(name = "管理后台 - CRM 联系人") | ||||
| @RestController | ||||
| @@ -64,8 +60,6 @@ public class CrmContactController { | ||||
|  | ||||
|     @Resource | ||||
|     private AdminUserApi adminUserApi; | ||||
|     @Resource | ||||
|     private OperateLogApi operateLogApi; | ||||
|  | ||||
|     @PostMapping("/create") | ||||
|     @Operation(summary = "创建联系人") | ||||
| @@ -158,17 +152,6 @@ public class CrmContactController { | ||||
|                 buildContactDetailPage(pageResult).getList()); | ||||
|     } | ||||
|  | ||||
|     @GetMapping("/operate-log-page") | ||||
|     @Operation(summary = "获得客户操作日志") | ||||
|     @PreAuthorize("@ss.hasPermission('crm:customer:query')") | ||||
|     public CommonResult<PageResult<OperateLogV2RespDTO>> getCustomerOperateLog(@RequestParam("bizId") Long bizId) { | ||||
|         OperateLogV2PageReqDTO reqVO = new OperateLogV2PageReqDTO(); | ||||
|         reqVO.setPageSize(PAGE_SIZE_NONE); // 不分页 | ||||
|         reqVO.setBizType(CRM_CONTACT_TYPE); | ||||
|         reqVO.setBizId(bizId); | ||||
|         return success(operateLogApi.getOperateLogPage(BeanUtils.toBean(reqVO, OperateLogV2PageReqDTO.class))); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 构建详细的联系人分页结果 | ||||
|      * | ||||
|   | ||||
| @@ -17,9 +17,6 @@ import cn.iocoder.yudao.module.crm.service.customer.CrmCustomerPoolConfigService | ||||
| import cn.iocoder.yudao.module.crm.service.customer.CrmCustomerService; | ||||
| import cn.iocoder.yudao.module.system.api.dept.DeptApi; | ||||
| import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO; | ||||
| import cn.iocoder.yudao.module.system.api.logger.OperateLogApi; | ||||
| import cn.iocoder.yudao.module.system.api.logger.dto.OperateLogV2PageReqDTO; | ||||
| import cn.iocoder.yudao.module.system.api.logger.dto.OperateLogV2RespDTO; | ||||
| import cn.iocoder.yudao.module.system.api.user.AdminUserApi; | ||||
| import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; | ||||
| import io.swagger.v3.oas.annotations.Operation; | ||||
| @@ -44,7 +41,6 @@ import static cn.iocoder.yudao.framework.common.pojo.PageParam.PAGE_SIZE_NONE; | ||||
| import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*; | ||||
| import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; | ||||
| import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; | ||||
| import static cn.iocoder.yudao.module.crm.enums.LogRecordConstants.CRM_CUSTOMER_TYPE; | ||||
|  | ||||
| @Tag(name = "管理后台 - CRM 客户") | ||||
| @RestController | ||||
| @@ -60,8 +56,7 @@ public class CrmCustomerController { | ||||
|     private DeptApi deptApi; | ||||
|     @Resource | ||||
|     private AdminUserApi adminUserApi; | ||||
|     @Resource | ||||
|     private OperateLogApi operateLogApi; | ||||
|  | ||||
|  | ||||
|     @PostMapping("/create") | ||||
|     @Operation(summary = "创建客户") | ||||
| @@ -182,19 +177,6 @@ public class CrmCustomerController { | ||||
|         return success(true); | ||||
|     } | ||||
|  | ||||
|     // TODO @puhui999:要不搞个通用的 CrmOperateLogController,之后所有业务都调用它? | ||||
|     @GetMapping("/operate-log-page") | ||||
|     @Operation(summary = "获得客户操作日志") | ||||
|     @Parameter(name = "id", description = "客户编号", required = true) | ||||
|     @PreAuthorize("@ss.hasPermission('crm:customer:query')") | ||||
|     public CommonResult<PageResult<OperateLogV2RespDTO>> getCustomerOperateLog(@RequestParam("id") Long id) { | ||||
|         OperateLogV2PageReqDTO reqDTO = new OperateLogV2PageReqDTO(); | ||||
|         reqDTO.setPageSize(PAGE_SIZE_NONE); // 不分页 | ||||
|         reqDTO.setBizType(CRM_CUSTOMER_TYPE); | ||||
|         reqDTO.setBizId(id); | ||||
|         return success(operateLogApi.getOperateLogPage(reqDTO)); | ||||
|     } | ||||
|  | ||||
|     @PutMapping("/lock") | ||||
|     @Operation(summary = "锁定/解锁客户") | ||||
|     @PreAuthorize("@ss.hasPermission('crm:customer:update')") | ||||
|   | ||||
| @@ -0,0 +1,62 @@ | ||||
| package cn.iocoder.yudao.module.crm.controller.admin.operatelog; | ||||
|  | ||||
| import cn.iocoder.yudao.framework.common.pojo.CommonResult; | ||||
| import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||||
| import cn.iocoder.yudao.module.crm.controller.admin.operatelog.vo.CrmOperateLogPageReqVO; | ||||
| import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum; | ||||
| import cn.iocoder.yudao.module.system.api.logger.OperateLogApi; | ||||
| import cn.iocoder.yudao.module.system.api.logger.dto.OperateLogV2PageReqDTO; | ||||
| import cn.iocoder.yudao.module.system.api.logger.dto.OperateLogV2RespDTO; | ||||
| import io.swagger.v3.oas.annotations.Operation; | ||||
| import io.swagger.v3.oas.annotations.Parameter; | ||||
| import io.swagger.v3.oas.annotations.tags.Tag; | ||||
| import jakarta.annotation.Resource; | ||||
| import jakarta.validation.Valid; | ||||
| import org.springframework.security.access.prepost.PreAuthorize; | ||||
| import org.springframework.validation.annotation.Validated; | ||||
| import org.springframework.web.bind.annotation.GetMapping; | ||||
| import org.springframework.web.bind.annotation.RequestMapping; | ||||
| import org.springframework.web.bind.annotation.RestController; | ||||
|  | ||||
| import java.util.HashMap; | ||||
| import java.util.Map; | ||||
|  | ||||
| import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; | ||||
| import static cn.iocoder.yudao.framework.common.pojo.PageParam.PAGE_SIZE_NONE; | ||||
| import static cn.iocoder.yudao.module.crm.enums.LogRecordConstants.*; | ||||
|  | ||||
| @Tag(name = "管理后台 - 操作日志") | ||||
| @RestController | ||||
| @RequestMapping("/crm/operate-log") | ||||
| @Validated | ||||
| public class CrmOperateLogController { | ||||
|  | ||||
|     @Resource | ||||
|     private OperateLogApi operateLogApi; | ||||
|  | ||||
|     private static final Map<Integer, String> BIZ_TYPE_MAP = new HashMap<>(); | ||||
|  | ||||
|     static { | ||||
|         BIZ_TYPE_MAP.put(CrmBizTypeEnum.CRM_LEADS.getType(), CRM_LEADS_TYPE); | ||||
|         BIZ_TYPE_MAP.put(CrmBizTypeEnum.CRM_CUSTOMER.getType(), CRM_CUSTOMER_TYPE); | ||||
|         BIZ_TYPE_MAP.put(CrmBizTypeEnum.CRM_CONTACT.getType(), CRM_CONTACT_TYPE); | ||||
|         BIZ_TYPE_MAP.put(CrmBizTypeEnum.CRM_BUSINESS.getType(), CRM_BUSINESS_TYPE); | ||||
|         BIZ_TYPE_MAP.put(CrmBizTypeEnum.CRM_CONTRACT.getType(), CRM_CONTRACT_TYPE); | ||||
|         BIZ_TYPE_MAP.put(CrmBizTypeEnum.CRM_PRODUCT.getType(), CRM_PRODUCT_TYPE); | ||||
|         BIZ_TYPE_MAP.put(CrmBizTypeEnum.CRM_RECEIVABLE.getType(), CRM_RECEIVABLE_TYPE); | ||||
|         BIZ_TYPE_MAP.put(CrmBizTypeEnum.CRM_RECEIVABLE_PLAN.getType(), CRM_RECEIVABLE_PLAN_TYPE); | ||||
|     } | ||||
|  | ||||
|     @GetMapping("/page") | ||||
|     @Operation(summary = "获得操作日志") | ||||
|     @Parameter(name = "id", description = "客户编号", required = true) | ||||
|     @PreAuthorize("@ss.hasPermission('crm:customer:query')") | ||||
|     public CommonResult<PageResult<OperateLogV2RespDTO>> getCustomerOperateLog(@Valid CrmOperateLogPageReqVO pageReqVO) { | ||||
|         OperateLogV2PageReqDTO reqDTO = new OperateLogV2PageReqDTO(); | ||||
|         reqDTO.setPageSize(PAGE_SIZE_NONE); // 默认不分页,需要分页需注释 | ||||
|         reqDTO.setBizType(BIZ_TYPE_MAP.get(pageReqVO.getBizType())); | ||||
|         reqDTO.setBizId(pageReqVO.getBizId()); | ||||
|         return success(operateLogApi.getOperateLogPage(reqDTO)); | ||||
|     } | ||||
|  | ||||
| } | ||||
| @@ -0,0 +1,27 @@ | ||||
| package cn.iocoder.yudao.module.crm.controller.admin.operatelog.vo; | ||||
|  | ||||
| import cn.iocoder.yudao.framework.common.pojo.PageParam; | ||||
| import cn.iocoder.yudao.framework.common.validation.InEnum; | ||||
| import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum; | ||||
| import io.swagger.v3.oas.annotations.media.Schema; | ||||
| import jakarta.validation.constraints.NotNull; | ||||
| import lombok.Data; | ||||
| import lombok.EqualsAndHashCode; | ||||
| import lombok.ToString; | ||||
|  | ||||
| @Schema(description = "管理后台 - 跟进记录分页 Request VO") | ||||
| @Data | ||||
| @EqualsAndHashCode(callSuper = true) | ||||
| @ToString(callSuper = true) | ||||
| public class CrmOperateLogPageReqVO extends PageParam { | ||||
|  | ||||
|     @Schema(description = "数据类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") | ||||
|     @InEnum(CrmBizTypeEnum.class) | ||||
|     @NotNull(message = "数据类型不能为空") | ||||
|     private Integer bizType; | ||||
|  | ||||
|     @Schema(description = "数据编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") | ||||
|     @NotNull(message = "数据编号不能为空") | ||||
|     private Long bizId; | ||||
|  | ||||
| } | ||||
| @@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.crm.controller.admin.permission; | ||||
| import cn.hutool.core.collection.CollUtil; | ||||
| import cn.iocoder.yudao.framework.common.pojo.CommonResult; | ||||
| import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; | ||||
| import cn.iocoder.yudao.framework.common.util.object.BeanUtils; | ||||
| import cn.iocoder.yudao.module.crm.controller.admin.permission.vo.CrmPermissionCreateReqVO; | ||||
| import cn.iocoder.yudao.module.crm.controller.admin.permission.vo.CrmPermissionRespVO; | ||||
| import cn.iocoder.yudao.module.crm.controller.admin.permission.vo.CrmPermissionUpdateReqVO; | ||||
| @@ -11,6 +12,7 @@ import cn.iocoder.yudao.module.crm.dal.dataobject.permission.CrmPermissionDO; | ||||
| import cn.iocoder.yudao.module.crm.enums.permission.CrmPermissionLevelEnum; | ||||
| import cn.iocoder.yudao.module.crm.framework.permission.core.annotations.CrmPermission; | ||||
| import cn.iocoder.yudao.module.crm.service.permission.CrmPermissionService; | ||||
| import cn.iocoder.yudao.module.crm.service.permission.bo.CrmPermissionCreateReqBO; | ||||
| import cn.iocoder.yudao.module.system.api.dept.DeptApi; | ||||
| import cn.iocoder.yudao.module.system.api.dept.PostApi; | ||||
| import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO; | ||||
| @@ -55,7 +57,7 @@ public class CrmPermissionController { | ||||
|     @PreAuthorize("@ss.hasPermission('crm:permission:create')") | ||||
|     @CrmPermission(bizTypeValue = "#reqVO.bizType", bizId = "#reqVO.bizId", level = CrmPermissionLevelEnum.OWNER) | ||||
|     public CommonResult<Boolean> addPermission(@Valid @RequestBody CrmPermissionCreateReqVO reqVO) { | ||||
|         permissionService.createPermission(CrmPermissionConvert.INSTANCE.convert(reqVO)); | ||||
|         permissionService.createPermission(BeanUtils.toBean(reqVO, CrmPermissionCreateReqBO.class)); | ||||
|         return success(true); | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -5,7 +5,6 @@ import cn.iocoder.yudao.framework.common.pojo.CommonResult; | ||||
| import cn.iocoder.yudao.framework.common.pojo.PageParam; | ||||
| import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||||
| import cn.iocoder.yudao.framework.common.util.collection.SetUtils; | ||||
| import cn.iocoder.yudao.framework.common.util.object.BeanUtils; | ||||
| import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; | ||||
| import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; | ||||
| import cn.iocoder.yudao.module.crm.controller.admin.product.vo.product.CrmProductPageReqVO; | ||||
| @@ -16,9 +15,6 @@ import cn.iocoder.yudao.module.crm.dal.dataobject.product.CrmProductCategoryDO; | ||||
| import cn.iocoder.yudao.module.crm.dal.dataobject.product.CrmProductDO; | ||||
| import cn.iocoder.yudao.module.crm.service.product.CrmProductCategoryService; | ||||
| import cn.iocoder.yudao.module.crm.service.product.CrmProductService; | ||||
| import cn.iocoder.yudao.module.system.api.logger.OperateLogApi; | ||||
| import cn.iocoder.yudao.module.system.api.logger.dto.OperateLogV2PageReqDTO; | ||||
| import cn.iocoder.yudao.module.system.api.logger.dto.OperateLogV2RespDTO; | ||||
| import cn.iocoder.yudao.module.system.api.user.AdminUserApi; | ||||
| import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; | ||||
| import io.swagger.v3.oas.annotations.Operation; | ||||
| @@ -38,12 +34,10 @@ import java.util.Map; | ||||
| import java.util.stream.Stream; | ||||
|  | ||||
| import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; | ||||
| import static cn.iocoder.yudao.framework.common.pojo.PageParam.PAGE_SIZE_NONE; | ||||
| import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; | ||||
| import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSetByFlatMap; | ||||
| import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; | ||||
| import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; | ||||
| import static cn.iocoder.yudao.module.crm.enums.LogRecordConstants.CRM_PRODUCT_TYPE; | ||||
|  | ||||
| @Tag(name = "管理后台 - CRM 产品") | ||||
| @RestController | ||||
| @@ -56,8 +50,6 @@ public class CrmProductController { | ||||
|     @Resource | ||||
|     private CrmProductCategoryService productCategoryService; | ||||
|     @Resource | ||||
|     private OperateLogApi operateLogApi; | ||||
|     @Resource | ||||
|     private AdminUserApi adminUserApi; | ||||
|  | ||||
|     @PostMapping("/create") | ||||
| @@ -131,14 +123,4 @@ public class CrmProductController { | ||||
|         return CrmProductConvert.INSTANCE.convertList(list, userMap, productCategoryList); | ||||
|     } | ||||
|  | ||||
|     @GetMapping("/operate-log-page") | ||||
|     @Operation(summary = "获得产品操作日志") | ||||
|     @PreAuthorize("@ss.hasPermission('crm:product:query')") | ||||
|     public CommonResult<PageResult<OperateLogV2RespDTO>> getProductOperateLog(@RequestParam("bizId") Long bizId) { | ||||
|         OperateLogV2PageReqDTO reqVO = new OperateLogV2PageReqDTO(); | ||||
|         reqVO.setPageSize(PAGE_SIZE_NONE); // 不分页 | ||||
|         reqVO.setBizType(CRM_PRODUCT_TYPE).setBizId(bizId); | ||||
|         return success(operateLogApi.getOperateLogPage(BeanUtils.toBean(reqVO, OperateLogV2PageReqDTO.class))); | ||||
|     } | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -3,12 +3,9 @@ package cn.iocoder.yudao.module.crm.convert.permission; | ||||
| import cn.hutool.core.collection.CollUtil; | ||||
| import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; | ||||
| import cn.iocoder.yudao.framework.common.util.collection.MapUtils; | ||||
| import cn.iocoder.yudao.module.crm.controller.admin.permission.vo.CrmPermissionCreateReqVO; | ||||
| import cn.iocoder.yudao.module.crm.controller.admin.permission.vo.CrmPermissionRespVO; | ||||
| import cn.iocoder.yudao.module.crm.controller.admin.permission.vo.CrmPermissionUpdateReqVO; | ||||
| import cn.iocoder.yudao.module.crm.dal.dataobject.permission.CrmPermissionDO; | ||||
| import cn.iocoder.yudao.module.crm.service.permission.bo.CrmPermissionCreateReqBO; | ||||
| import cn.iocoder.yudao.module.crm.service.permission.bo.CrmPermissionUpdateReqBO; | ||||
| import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO; | ||||
| import cn.iocoder.yudao.module.system.api.dept.dto.PostRespDTO; | ||||
| import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; | ||||
| @@ -32,14 +29,6 @@ public interface CrmPermissionConvert { | ||||
|  | ||||
|     CrmPermissionConvert INSTANCE = Mappers.getMapper(CrmPermissionConvert.class); | ||||
|  | ||||
|     CrmPermissionDO convert(CrmPermissionCreateReqBO createBO); | ||||
|  | ||||
|     CrmPermissionDO convert(CrmPermissionUpdateReqBO updateBO); | ||||
|  | ||||
|     CrmPermissionCreateReqBO convert(CrmPermissionCreateReqVO reqVO); | ||||
|  | ||||
|     CrmPermissionUpdateReqBO convert(CrmPermissionUpdateReqVO updateReqVO); | ||||
|  | ||||
|     List<CrmPermissionRespVO> convert(List<CrmPermissionDO> permission); | ||||
|  | ||||
|     default List<CrmPermissionRespVO> convert(List<CrmPermissionDO> permission, List<AdminUserRespDTO> userList, | ||||
| @@ -65,7 +54,4 @@ public interface CrmPermissionConvert { | ||||
|                 id -> new CrmPermissionDO().setId(id).setLevel(updateReqVO.getLevel())); | ||||
|     } | ||||
|  | ||||
|     // TODO @puhui999:搞成 BeanUtils | ||||
|     List<CrmPermissionDO> convertList(List<CrmPermissionCreateReqBO> list); | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.crm.service.permission; | ||||
|  | ||||
| import cn.hutool.core.collection.CollUtil; | ||||
| import cn.hutool.core.util.ObjUtil; | ||||
| import cn.iocoder.yudao.framework.common.util.object.BeanUtils; | ||||
| import cn.iocoder.yudao.module.crm.controller.admin.permission.vo.CrmPermissionUpdateReqVO; | ||||
| import cn.iocoder.yudao.module.crm.convert.permission.CrmPermissionConvert; | ||||
| import cn.iocoder.yudao.module.crm.dal.dataobject.permission.CrmPermissionDO; | ||||
| @@ -50,7 +51,7 @@ public class CrmPermissionServiceImpl implements CrmPermissionService { | ||||
|         adminUserApi.validateUserList(Collections.singletonList(createReqBO.getUserId())); | ||||
|  | ||||
|         // 2. 创建 | ||||
|         CrmPermissionDO permission = CrmPermissionConvert.INSTANCE.convert(createReqBO); | ||||
|         CrmPermissionDO permission = BeanUtils.toBean(createReqBO, CrmPermissionDO.class); | ||||
|         permissionMapper.insert(permission); | ||||
|         return permission.getId(); | ||||
|     } | ||||
| @@ -62,7 +63,7 @@ public class CrmPermissionServiceImpl implements CrmPermissionService { | ||||
|         adminUserApi.validateUserList(convertSet(createReqBOs, CrmPermissionCreateReqBO::getUserId)); | ||||
|  | ||||
|         // 2. 创建 | ||||
|         List<CrmPermissionDO> permissions = CrmPermissionConvert.INSTANCE.convertList(createReqBOs); | ||||
|         List<CrmPermissionDO> permissions = BeanUtils.toBean(createReqBOs, CrmPermissionDO.class); | ||||
|         permissionMapper.insertBatch(permissions); | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -1,36 +0,0 @@ | ||||
| package cn.iocoder.yudao.module.crm.service.permission.bo; | ||||
|  | ||||
| import cn.iocoder.yudao.framework.common.validation.InEnum; | ||||
| import cn.iocoder.yudao.module.crm.enums.permission.CrmPermissionLevelEnum; | ||||
| import lombok.Data; | ||||
|  | ||||
| import jakarta.validation.constraints.NotNull; | ||||
|  | ||||
| /** | ||||
|  * crm 数据权限 Update Req BO | ||||
|  * | ||||
|  * @author HUIHUI | ||||
|  */ | ||||
| @Data | ||||
| public class CrmPermissionUpdateReqBO { | ||||
|  | ||||
|     /** | ||||
|      * 数据权限编号 | ||||
|      */ | ||||
|     @NotNull(message = "数据权限编号不能为空") | ||||
|     private Long id; | ||||
|  | ||||
|     /** | ||||
|      * 当前登录用户编号 | ||||
|      */ | ||||
|     @NotNull(message = "用户编号不能为空") | ||||
|     private Long userId; | ||||
|  | ||||
|     /** | ||||
|      * 权限级别 | ||||
|      */ | ||||
|     @NotNull(message = "权限级别不能为空") | ||||
|     @InEnum(CrmPermissionLevelEnum.class) | ||||
|     private Integer level; | ||||
|  | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 puhui999
					puhui999