diff --git a/src/main/java/com/youlai/boot/mini/controller/StrayAnimalController.java b/src/main/java/com/youlai/boot/mini/controller/StrayAnimalController.java index 4a37904..56e01de 100644 --- a/src/main/java/com/youlai/boot/mini/controller/StrayAnimalController.java +++ b/src/main/java/com/youlai/boot/mini/controller/StrayAnimalController.java @@ -114,17 +114,17 @@ public class StrayAnimalController { return Result.success(); } - @Operation(summary = "获取个人登记创建的动物信息列表") - @GetMapping(value = "/getOwnPage") + @Operation(summary = "获取自己登记创建的动物信息列表") + @GetMapping(value = "/getSelfCreatedPage") @Log(module = LogModuleEnum.STRAY_ANIMAL_INFO, value = ActionTypeEnum.LIST) - public PageResult getOwnPage( + public PageResult getSelfCreatedPage( OwnStrayAnimalQuery queryParams ) { - return PageResult.success(strayAnimalService.getOwnPage(queryParams)); + return PageResult.success(strayAnimalService.getSelfCreatedPage(queryParams)); } - @Operation(summary = "获取动物信息详情(登录状态下)") + @Operation(summary = "获取动物信息详情") @RequestMapping(value = "/getDetails/{animalUuid}", method = RequestMethod.GET) public Result getDetails( @PathVariable String animalUuid){ @@ -132,4 +132,14 @@ public class StrayAnimalController { } + @Operation(summary = "获取某个用户登记创建的动物信息列表") + @GetMapping(value = "/getOthersCreatedPage/{authorUuid}") + @Log(module = LogModuleEnum.STRAY_ANIMAL_INFO, value = ActionTypeEnum.LIST) + public PageResult getOthersCreatedPage( + @PathVariable String authorUuid, + OwnStrayAnimalQuery queryParams + ) { + return PageResult.success(strayAnimalService.getOthersCreatedPage(authorUuid, queryParams)); + } + } diff --git a/src/main/java/com/youlai/boot/mini/controller/UnauthenticatedController.java b/src/main/java/com/youlai/boot/mini/controller/UnauthenticatedController.java new file mode 100644 index 0000000..16fbf95 --- /dev/null +++ b/src/main/java/com/youlai/boot/mini/controller/UnauthenticatedController.java @@ -0,0 +1,59 @@ +package com.youlai.boot.mini.controller; + +import com.youlai.boot.common.annotation.Log; +import com.youlai.boot.common.annotation.RepeatSubmit; +import com.youlai.boot.common.enums.ActionTypeEnum; +import com.youlai.boot.common.enums.LogModuleEnum; +import com.youlai.boot.common.result.PageResult; +import com.youlai.boot.common.result.Result; +import com.youlai.boot.framework.security.util.SecurityUtils; +import com.youlai.boot.mini.model.dto.DeleteStrayAnimalDTO; +import com.youlai.boot.mini.model.dto.DeleteStrayAnimalNoteMediaDTO; +import com.youlai.boot.mini.model.dto.EditVisibilityDTO; +import com.youlai.boot.mini.model.form.StrayAnimalForm; +import com.youlai.boot.mini.model.query.OwnStrayAnimalQuery; +import com.youlai.boot.mini.model.vo.StrayAnimalDetailsVO; +import com.youlai.boot.mini.model.vo.StrayAnimalShortVO; +import com.youlai.boot.mini.service.StrayAnimalService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.validation.Valid; +import lombok.RequiredArgsConstructor; +import org.springframework.http.MediaType; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.util.List; + +/** + * 流浪动物信息 + */ +@Tag(name = "未登录状态下的相关接口") +@RestController +@RequestMapping("/api/v1/mini/public") +@RequiredArgsConstructor +public class UnauthenticatedController { + + private final StrayAnimalService strayAnimalService; + + + @Operation(summary = "获取动物信息详情)", operationId = "publicGetAnimalDetails") + @RequestMapping(value = "/strayAnimal/getDetails/{animalUuid}", method = RequestMethod.GET) + public Result getDetails( + @PathVariable String animalUuid){ + return Result.success(strayAnimalService.getDetails(animalUuid, null)); + } + + + @Operation(summary = "获取某个用户登记创建的动物信息列表", operationId = "publicGetOthersCreatedPage") + @GetMapping(value = "/strayAnimal/getOthersCreatedPage/{authorUuid}") + @Log(module = LogModuleEnum.STRAY_ANIMAL_INFO, value = ActionTypeEnum.LIST) + public PageResult getOthersCreatedPage( + @PathVariable String authorUuid, + OwnStrayAnimalQuery queryParams + ) { + return PageResult.success(strayAnimalService.getOthersCreatedPage(authorUuid, queryParams)); + } + +} diff --git a/src/main/java/com/youlai/boot/mini/mapper/MiniStrayAnimalMapper.java b/src/main/java/com/youlai/boot/mini/mapper/MiniStrayAnimalMapper.java index 4fd299e..6f4b784 100644 --- a/src/main/java/com/youlai/boot/mini/mapper/MiniStrayAnimalMapper.java +++ b/src/main/java/com/youlai/boot/mini/mapper/MiniStrayAnimalMapper.java @@ -21,7 +21,7 @@ public interface MiniStrayAnimalMapper extends BaseMapper { void updateStrayAnimal(MiniStrayAnimal miniStrayAnimal); - IPage getOwnPage(Page page, @Param("queryParams") OwnStrayAnimalQuery queryParams); + IPage getAnimalPage(Page page, @Param("queryParams") OwnStrayAnimalQuery queryParams); StrayAnimalDetailsVO getStrayAnimalDetails(@Param("animalUuid") String animalUuid, @Param("miniUserId") Long miniUserId); } diff --git a/src/main/java/com/youlai/boot/mini/model/query/OwnStrayAnimalQuery.java b/src/main/java/com/youlai/boot/mini/model/query/OwnStrayAnimalQuery.java index c12b3d7..bc38593 100644 --- a/src/main/java/com/youlai/boot/mini/model/query/OwnStrayAnimalQuery.java +++ b/src/main/java/com/youlai/boot/mini/model/query/OwnStrayAnimalQuery.java @@ -9,7 +9,10 @@ import lombok.EqualsAndHashCode; @Data public class OwnStrayAnimalQuery extends StrayAnimalQuery { - @Schema(description = "用户ID", example = "1", hidden = true) - private Long miniUserId; // 用户ID,用于查询用户自己的流浪动物 + @Schema(description = "登录用户ID", example = "1", hidden = true) + private Long miniUserId; + + @Schema(description = "创建动物的用户ID", example = "1", hidden = true) + private Long creatorId; } diff --git a/src/main/java/com/youlai/boot/mini/service/StrayAnimalService.java b/src/main/java/com/youlai/boot/mini/service/StrayAnimalService.java index 4c9cf40..6c34846 100644 --- a/src/main/java/com/youlai/boot/mini/service/StrayAnimalService.java +++ b/src/main/java/com/youlai/boot/mini/service/StrayAnimalService.java @@ -29,8 +29,10 @@ public interface StrayAnimalService extends IService { void delete(DeleteStrayAnimalDTO deleteStrayAnimalDTO); - IPage getOwnPage(OwnStrayAnimalQuery queryParams); + IPage getSelfCreatedPage(OwnStrayAnimalQuery queryParams); StrayAnimalDetailsVO getDetails(String animalUuid, Long miniUserId); + + IPage getOthersCreatedPage(String authorUuid, OwnStrayAnimalQuery queryParams); } diff --git a/src/main/java/com/youlai/boot/mini/service/impl/StrayAnimalServiceImpl.java b/src/main/java/com/youlai/boot/mini/service/impl/StrayAnimalServiceImpl.java index 9a536e9..6c4d60c 100644 --- a/src/main/java/com/youlai/boot/mini/service/impl/StrayAnimalServiceImpl.java +++ b/src/main/java/com/youlai/boot/mini/service/impl/StrayAnimalServiceImpl.java @@ -34,6 +34,8 @@ import com.youlai.boot.mini.model.vo.MiniStrayAnimalNoteMediaVO; import com.youlai.boot.mini.model.vo.StrayAnimalDetailsVO; import com.youlai.boot.mini.model.vo.StrayAnimalShortVO; import com.youlai.boot.mini.service.StrayAnimalService; +import com.youlai.boot.system.mapper.UserMapper; +import com.youlai.boot.system.model.entity.SysUser; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; @@ -71,6 +73,7 @@ public class StrayAnimalServiceImpl extends ServiceImpl getOwnPage(OwnStrayAnimalQuery queryParams) { + public IPage getSelfCreatedPage(OwnStrayAnimalQuery queryParams) { + queryParams.setMiniUserId(SecurityUtils.getUserId()); + queryParams.setCreatorId(SecurityUtils.getUserId()); + return getAnimalPage(queryParams); + } + + private IPage getAnimalPage(OwnStrayAnimalQuery queryParams) { // 参数构建 int pageNum = queryParams.getPageNum(); int pageSize = queryParams.getPageSize(); Page page = new Page<>(pageNum, pageSize); - queryParams.setMiniUserId(SecurityUtils.getUserId()); - - IPage result = this.miniStrayAnimalMapper.getOwnPage(page, queryParams); + IPage result = this.miniStrayAnimalMapper.getAnimalPage(page, queryParams); if (result.getTotal() > 0) { result.getRecords().forEach(item -> { if (StrUtil.isBlank(item.getFirstImageUrl())) { @@ -506,4 +513,18 @@ public class StrayAnimalServiceImpl extends ServiceImpl getOthersCreatedPage(String authorUuid, OwnStrayAnimalQuery queryParams) { + SysUser sysUser = userMapper.selectOne(new LambdaQueryWrapper() + .eq(SysUser::getUuid, authorUuid) + .eq(SysUser::getIsDeleted, 0)); + if (sysUser == null) { + throw new MsgException("用户不存在"); + } + + queryParams.setMiniUserId(SecurityUtils.getUserId()); + queryParams.setCreatorId(sysUser.getId()); + return getAnimalPage(queryParams); + } + } diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 4fb6ed5..2453cc5 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -88,6 +88,7 @@ security: - /api/v1/auth/refresh-token # 刷新令牌接口 - /api/v1/wxma/auth/** # 微信小程序认证接口(静默登录/手机号快捷登录/绑定手机号) - /api/v1/logs/** # 日志接口(访问日志列表) + - /api/v1/mini/public/** - /healthcheck # 非安全端点路径,完全绕过 Spring Security 的过滤器 unsecured-urls: diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml index eb5b995..fcb3327 100644 --- a/src/main/resources/application-prod.yml +++ b/src/main/resources/application-prod.yml @@ -88,6 +88,7 @@ security: - /api/v1/auth/refresh-token # 刷新令牌接口 - /api/v1/wxma/auth/** # 微信小程序认证接口(静默登录/手机号快捷登录/绑定手机号) - /api/v1/logs/** # 日志接口(访问日志列表) + - /api/v1/mini/public/** - /healthcheck # 非安全端点路径,完全绕过 Spring Security 的过滤器 unsecured-urls: diff --git a/src/main/resources/mapper/mini/MiniStrayAnimalMapper.xml b/src/main/resources/mapper/mini/MiniStrayAnimalMapper.xml index 6b10c36..4f64f79 100644 --- a/src/main/resources/mapper/mini/MiniStrayAnimalMapper.xml +++ b/src/main/resources/mapper/mini/MiniStrayAnimalMapper.xml @@ -117,7 +117,7 @@ - WITH first_image AS ( SELECT @@ -153,23 +153,25 @@ n.comment_count, n.collect_count, - -- 当前用户是否点赞 - EXISTS ( - SELECT 1 - FROM mini_stray_animal_note_like l - WHERE l.note_id = n.id - AND l.mini_user_id = #{queryParams.miniUserId} - AND l.is_deleted = 0 - ) AS isLiked, - - -- 当前用户是否收藏 - EXISTS ( - SELECT 1 - FROM mini_stray_animal_note_collect c - WHERE c.note_id = n.id - AND c.mini_user_id = #{queryParams.miniUserId} - AND c.is_deleted = 0 - ) AS isCollected, + + -- 当前用户是否点赞 + EXISTS ( + SELECT 1 + FROM mini_stray_animal_note_like l + WHERE l.note_id = n.id + AND l.mini_user_id = #{queryParams.miniUserId} + AND l.is_deleted = 0 + ) AS isLiked, + + -- 当前用户是否收藏 + EXISTS ( + SELECT 1 + FROM mini_stray_animal_note_collect c + WHERE c.note_id = n.id + AND c.mini_user_id = #{queryParams.miniUserId} + AND c.is_deleted = 0 + ) AS isCollected, + a.audit_status @@ -183,7 +185,7 @@ n.is_deleted = 0 AND a.is_deleted = 0 - AND n.mini_user_id = #{queryParams.miniUserId} + AND n.mini_user_id = #{queryParams.creatorId}