//package com.backendsys.controller.Med; // //import com.backendsys.aspect.HttpRequestAspect; //import com.backendsys.entity.Med.MedMaterialDTO; //import com.backendsys.entity.Med.MedMyMaterialDTO; //import com.backendsys.mapper.Med.MedMaterialMapper; //import com.backendsys.mapper.Med.MedMyMaterialMapper; //import com.backendsys.entity.PageDTO; //import com.backendsys.service.Med.MedMyMaterialService; //import com.backendsys.utils.response.Result; //import com.backendsys.utils.response.ResultEnum; //import org.springframework.beans.factory.annotation.Autowired; //import org.springframework.security.access.prepost.PreAuthorize; //import org.springframework.validation.annotation.Validated; //import org.springframework.web.bind.annotation.*; // //import java.util.Map; //import java.util.Set; //import java.util.HashSet; //import java.util.List; //import java.util.Arrays; // ///** // * 素材 // */ //@RestController //public class MedMyMaterialController { // // @Autowired // private HttpRequestAspect httpRequestAspect; // // @Autowired // private MedMyMaterialService medMyMaterialService; // // @Autowired // private MedMyMaterialMapper medMyMaterialMapper; // // @Autowired // private MedMaterialMapper medMaterialMapper; // // @PreAuthorize("@sr.hasPermission('21.1')") // @GetMapping("/api/med/material/getMyMaterial") // public Result getMyMaterial(@Validated PageDTO pageDTO, @Validated MedMyMaterialDTO medMyMaterialDTO) { // // // [查询] 自身 UserId // Long user_id = httpRequestAspect.getUserId(); // medMyMaterialDTO.setUser_id(user_id); // // return Result.success(medMyMaterialService.queryMyMaterial(pageDTO.getPage_num(), pageDTO.getPage_size(), medMyMaterialDTO)); // } // // @PreAuthorize("@sr.hasPermission('21.1.1')") // @GetMapping("/api/med/material/getMyMaterialDetail") // public Result getMyMaterialDetail(@Validated(MedMyMaterialDTO.Detail.class) MedMyMaterialDTO medMyMaterialDTO) { // // // 判断是否当前用户所有,不是则不可操作 // Map myMaterial = medMyMaterialService.queryMyMaterialDetail(medMyMaterialDTO); // Long user_id = (Long) myMaterial.get("user_id"); // Long self_user_id = httpRequestAspect.getUserId(); // if (user_id != self_user_id) { // return Result.error(ResultEnum.DATABASE_OPERATION_FAILED.getCode(), "该资源非用户所有,不可操作"); // } // // return Result.success(myMaterial); // } // // /** // * 加入我的素材 (从素材中心) // * @param medMyMaterialDTO // * @return // */ // @PreAuthorize("@sr.hasPermission('21.1.2')") // @PostMapping("/api/med/material/addToMyMaterial") // public Result addToMyMaterial(@Validated(MedMyMaterialDTO.Create.class) @RequestBody MedMyMaterialDTO medMyMaterialDTO) { // // // [查询] 自身 UserId // Long user_id = httpRequestAspect.getUserId(); // medMyMaterialDTO.setUser_id(user_id); // // // 查询素材详情 // Long material_id = (Long) medMyMaterialDTO.getMaterial_id(); // MedMaterialDTO medMaterialDTO = new MedMaterialDTO(); // medMaterialDTO.setMaterial_id(material_id); // Map materialDetail = medMaterialMapper.queryMaterialDetail(medMaterialDTO); // if (materialDetail == null) { // return Result.error(ResultEnum.DATABASE_OPERATION_FAILED.getCode(), "素材不存在"); // } // // // 判断要加入的素材,必须是 (启用/审核通过) 的 // // 素材状态 (-1禁用, 1启用),审核状态 (-1审核拒绝, 1待审核, 2审核通过) // Integer status = (Integer) materialDetail.get("status"); // Integer audit_status = (Integer) materialDetail.get("audit_status"); // if (status != 1 || audit_status != 2) { // return Result.error(ResultEnum.DATABASE_OPERATION_FAILED.getCode(), "素材未公开或未审核通过"); // } // // return Result.success(medMyMaterialService.addToMyMaterial(medMyMaterialDTO, materialDetail), "创建成功"); // } // // /** // * 分享我的素材 (到素材列表) // * @param medMyMaterialDTO // * @return // */ // @PreAuthorize("@sr.hasPermission('21.1.3')") // @PostMapping("/api/med/material/shareToMaterial") // public Result shareToMaterial(@Validated(MedMyMaterialDTO.Detail.class) @RequestBody MedMyMaterialDTO medMyMaterialDTO) { // // // [查询] 自身 UserId // Long user_id = httpRequestAspect.getUserId(); // medMyMaterialDTO.setUser_id(user_id); // // // 查询素材详情 // Map myMaterialDetail = medMyMaterialMapper.queryMyMaterialDetail(medMyMaterialDTO); // if (myMaterialDetail == null) { // return Result.error(ResultEnum.DATABASE_OPERATION_FAILED.getCode(), "素材不存在"); // } // // // // 判断要加入的素材,必须是 (启用/审核通过) 的 // // // 素材状态 (-1禁用, 1启用),审核状态 (-1审核拒绝, 1待审核, 2审核通过) // // Integer status = (Integer) materialDetail.get("status"); // // Integer audit_status = (Integer) materialDetail.get("audit_status"); // // if (status != 1 || audit_status != 2) { // // return Result.error(ResultEnum.DATABASE_OPERATION_FAILED.getCode(), "素材未公开或未审核通过"); // // } // // return Result.success(medMyMaterialService.shareToMaterial(medMyMaterialDTO, myMaterialDetail), "创建成功"); // } // // // // /** // * [方法] 根据 素材类型 (material_type) 判断对应必填字段 // * 当 material_type 为: // * - 4 时,content 不为空 // * - 1,2,3 时,file 不为空 // */ // private Result checkMaterialContent(MedMyMaterialDTO medMyMaterialDTO) { // Integer material_type = medMyMaterialDTO.getMaterial_type(); // if (material_type == 4) { // String content = medMyMaterialDTO.getContent(); // if (content == null || content == "") return Result.error(ResultEnum.DATABASE_OPERATION_FAILED.getCode(), "(material_type:4) (content) 内容不能为空"); // } // Set materialTypes = new HashSet<>(Arrays.asList(1, 2, 3)); // if (materialTypes.contains(material_type)) { // String file = medMyMaterialDTO.getFile(); // if (file == null || file == "") return Result.error(ResultEnum.DATABASE_OPERATION_FAILED.getCode(), "(material_type:" + material_type + ") (file) 文件路径不能为空"); // } // return null; // } // // /** // * 创建我的素材 (用户) // * @param medMyMaterialDTO // * @return // */ // @PreAuthorize("@sr.hasPermission('21.1.4')") // @PostMapping("/api/med/material/createMyMaterial") // public Result createMyMaterial(@Validated(MedMyMaterialDTO.Create.class) @RequestBody MedMyMaterialDTO medMyMaterialDTO) { // // // 获得自身账号 user_id // Long self_user_id = httpRequestAspect.getUserId(); // medMyMaterialDTO.setUser_id(self_user_id); // // // [方法] 根据 素材类型 (material_type) 判断对应必填字段 // Result valid = checkMaterialContent(medMyMaterialDTO); // if (valid != null) { // return valid; // } // // return Result.success(medMyMaterialService.insertMyMaterial(medMyMaterialDTO), "创建成功"); // } // // @PreAuthorize("@sr.hasPermission('21.1.5')") // @PutMapping("/api/med/material/updateMyMaterial") // public Result updateMyMaterial(@Validated(MedMaterialDTO.Update.class) @RequestBody MedMyMaterialDTO medMyMaterialDTO) { // // // [方法] 根据 素材类型 (material_type) 判断对应必填字段 // Result valid = checkMaterialContent(medMyMaterialDTO); // if (valid != null) { // return valid; // } // // return Result.success(medMyMaterialService.updateMyMaterial(medMyMaterialDTO), "更新成功"); // } // // // // @PreAuthorize("@sr.hasPermission('21.1.6')") // @DeleteMapping("/api/med/material/deleteMyMaterial") // public Result deleteMyMaterial(@Validated(MedMyMaterialDTO.Delete.class) @RequestBody MedMyMaterialDTO medMyMaterialDTO) { // // Map myMaterial = medMyMaterialService.queryMyMaterialDetail(medMyMaterialDTO); // // // 判断是否存在 // if (myMaterial == null) { // return Result.error(ResultEnum.DATABASE_OPERATION_FAILED.getCode(), "资源不存在"); // } // // // 判断是否当前用户所有 (匹配 user_id),不是则不可操作 // Long user_id = (Long) myMaterial.get("user_id"); // Long self_user_id = httpRequestAspect.getUserId(); // if (user_id != self_user_id) { // return Result.error(ResultEnum.DATABASE_OPERATION_FAILED.getCode(), "该资源非用户所有,不可操作"); // } // // return Result.success(medMyMaterialService.deleteMyMaterial(medMyMaterialDTO), "删除成功"); // } // // @PreAuthorize("@sr.hasPermission('21.1.6')") // @DeleteMapping("/api/med/material/deleteMyMaterialBatch") // public Result deleteMyMaterialBatch(@Validated(MedMyMaterialDTO.Delete.class) @RequestBody MedMyMaterialDTO medMyMaterialDTO) { // // List> myMaterials = medMyMaterialMapper.queryMyMaterialList(medMyMaterialDTO); // // // 判断是否存在 // if (myMaterials.isEmpty()) { // return Result.error(ResultEnum.DATABASE_OPERATION_FAILED.getCode(), "资源不存在"); // } // // // 判断是否当前用户所有 (匹配 user_id),不是则不可操作 (批量遍历) // Long self_user_id = httpRequestAspect.getUserId(); // boolean isCurrentUserAll = true; // for (Map myMaterial : myMaterials) { // Long user_id = (Long) myMaterial.get("user_id"); // if (!self_user_id.equals(user_id)) { // isCurrentUserAll = false; // break; // } // } // // if (isCurrentUserAll) { // List my_material_ids = medMyMaterialDTO.getMy_material_ids(); // return Result.success(medMyMaterialService.deleteMyMaterialBatch(my_material_ids), "删除成功"); // } else { // return Result.error(ResultEnum.DATABASE_OPERATION_FAILED.getCode(), "该资源非用户所有,不可操作"); // } // } // //}