Browse Source

未登录时的接口

master
review512jwy@163.com 1 month ago
parent
commit
b49c6579c2
  1. 20
      src/main/java/com/youlai/boot/mini/controller/StrayAnimalController.java
  2. 59
      src/main/java/com/youlai/boot/mini/controller/UnauthenticatedController.java
  3. 2
      src/main/java/com/youlai/boot/mini/mapper/MiniStrayAnimalMapper.java
  4. 7
      src/main/java/com/youlai/boot/mini/model/query/OwnStrayAnimalQuery.java
  5. 4
      src/main/java/com/youlai/boot/mini/service/StrayAnimalService.java
  6. 29
      src/main/java/com/youlai/boot/mini/service/impl/StrayAnimalServiceImpl.java
  7. 1
      src/main/resources/application-dev.yml
  8. 1
      src/main/resources/application-prod.yml
  9. 6
      src/main/resources/mapper/mini/MiniStrayAnimalMapper.xml

20
src/main/java/com/youlai/boot/mini/controller/StrayAnimalController.java

@ -114,17 +114,17 @@ public class StrayAnimalController {
return Result.success(); return Result.success();
} }
@Operation(summary = "获取个人登记创建的动物信息列表") @Operation(summary = "获取自己登记创建的动物信息列表")
@GetMapping(value = "/getOwnPage") @GetMapping(value = "/getSelfCreatedPage")
@Log(module = LogModuleEnum.STRAY_ANIMAL_INFO, value = ActionTypeEnum.LIST) @Log(module = LogModuleEnum.STRAY_ANIMAL_INFO, value = ActionTypeEnum.LIST)
public PageResult<StrayAnimalShortVO> getOwnPage( public PageResult<StrayAnimalShortVO> getSelfCreatedPage(
OwnStrayAnimalQuery queryParams 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) @RequestMapping(value = "/getDetails/{animalUuid}", method = RequestMethod.GET)
public Result<StrayAnimalDetailsVO> getDetails( public Result<StrayAnimalDetailsVO> getDetails(
@PathVariable String animalUuid){ @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<StrayAnimalShortVO> getOthersCreatedPage(
@PathVariable String authorUuid,
OwnStrayAnimalQuery queryParams
) {
return PageResult.success(strayAnimalService.getOthersCreatedPage(authorUuid, queryParams));
}
} }

59
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<StrayAnimalDetailsVO> 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<StrayAnimalShortVO> getOthersCreatedPage(
@PathVariable String authorUuid,
OwnStrayAnimalQuery queryParams
) {
return PageResult.success(strayAnimalService.getOthersCreatedPage(authorUuid, queryParams));
}
}

2
src/main/java/com/youlai/boot/mini/mapper/MiniStrayAnimalMapper.java

@ -21,7 +21,7 @@ public interface MiniStrayAnimalMapper extends BaseMapper<MiniStrayAnimal> {
void updateStrayAnimal(MiniStrayAnimal miniStrayAnimal); void updateStrayAnimal(MiniStrayAnimal miniStrayAnimal);
IPage<StrayAnimalShortVO> getOwnPage(Page<StrayAnimalShortVO> page, @Param("queryParams") OwnStrayAnimalQuery queryParams); IPage<StrayAnimalShortVO> getAnimalPage(Page<StrayAnimalShortVO> page, @Param("queryParams") OwnStrayAnimalQuery queryParams);
StrayAnimalDetailsVO getStrayAnimalDetails(@Param("animalUuid") String animalUuid, @Param("miniUserId") Long miniUserId); StrayAnimalDetailsVO getStrayAnimalDetails(@Param("animalUuid") String animalUuid, @Param("miniUserId") Long miniUserId);
} }

7
src/main/java/com/youlai/boot/mini/model/query/OwnStrayAnimalQuery.java

@ -9,7 +9,10 @@ import lombok.EqualsAndHashCode;
@Data @Data
public class OwnStrayAnimalQuery extends StrayAnimalQuery { public class OwnStrayAnimalQuery extends StrayAnimalQuery {
@Schema(description = "用户ID", example = "1", hidden = true) @Schema(description = "登录用户ID", example = "1", hidden = true)
private Long miniUserId; // 用户ID,用于查询用户自己的流浪动物 private Long miniUserId;
@Schema(description = "创建动物的用户ID", example = "1", hidden = true)
private Long creatorId;
} }

4
src/main/java/com/youlai/boot/mini/service/StrayAnimalService.java

@ -29,8 +29,10 @@ public interface StrayAnimalService extends IService<MiniStrayAnimal> {
void delete(DeleteStrayAnimalDTO deleteStrayAnimalDTO); void delete(DeleteStrayAnimalDTO deleteStrayAnimalDTO);
IPage<StrayAnimalShortVO> getOwnPage(OwnStrayAnimalQuery queryParams); IPage<StrayAnimalShortVO> getSelfCreatedPage(OwnStrayAnimalQuery queryParams);
StrayAnimalDetailsVO getDetails(String animalUuid, Long miniUserId); StrayAnimalDetailsVO getDetails(String animalUuid, Long miniUserId);
IPage<StrayAnimalShortVO> getOthersCreatedPage(String authorUuid, OwnStrayAnimalQuery queryParams);
} }

29
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.StrayAnimalDetailsVO;
import com.youlai.boot.mini.model.vo.StrayAnimalShortVO; import com.youlai.boot.mini.model.vo.StrayAnimalShortVO;
import com.youlai.boot.mini.service.StrayAnimalService; 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.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
@ -71,6 +73,7 @@ public class StrayAnimalServiceImpl extends ServiceImpl<MiniStrayAnimalMapper, M
private final MiniStrayAnimalNoteMapper miniStrayAnimalNoteMapper; private final MiniStrayAnimalNoteMapper miniStrayAnimalNoteMapper;
private final MiniStrayAnimalNoteMediaMapper miniStrayAnimalNoteMediaMapper; private final MiniStrayAnimalNoteMediaMapper miniStrayAnimalNoteMediaMapper;
private final MiniStrayAnimalMapper miniStrayAnimalMapper; private final MiniStrayAnimalMapper miniStrayAnimalMapper;
private final UserMapper userMapper;
private final MiniStrayAnimalConverter miniStrayAnimalConverter; private final MiniStrayAnimalConverter miniStrayAnimalConverter;
@ -440,15 +443,19 @@ public class StrayAnimalServiceImpl extends ServiceImpl<MiniStrayAnimalMapper, M
} }
@Override @Override
public IPage<StrayAnimalShortVO> getOwnPage(OwnStrayAnimalQuery queryParams) { public IPage<StrayAnimalShortVO> getSelfCreatedPage(OwnStrayAnimalQuery queryParams) {
queryParams.setMiniUserId(SecurityUtils.getUserId());
queryParams.setCreatorId(SecurityUtils.getUserId());
return getAnimalPage(queryParams);
}
private IPage<StrayAnimalShortVO> getAnimalPage(OwnStrayAnimalQuery queryParams) {
// 参数构建 // 参数构建
int pageNum = queryParams.getPageNum(); int pageNum = queryParams.getPageNum();
int pageSize = queryParams.getPageSize(); int pageSize = queryParams.getPageSize();
Page<StrayAnimalShortVO> page = new Page<>(pageNum, pageSize); Page<StrayAnimalShortVO> page = new Page<>(pageNum, pageSize);
queryParams.setMiniUserId(SecurityUtils.getUserId()); IPage<StrayAnimalShortVO> result = this.miniStrayAnimalMapper.getAnimalPage(page, queryParams);
IPage<StrayAnimalShortVO> result = this.miniStrayAnimalMapper.getOwnPage(page, queryParams);
if (result.getTotal() > 0) { if (result.getTotal() > 0) {
result.getRecords().forEach(item -> { result.getRecords().forEach(item -> {
if (StrUtil.isBlank(item.getFirstImageUrl())) { if (StrUtil.isBlank(item.getFirstImageUrl())) {
@ -506,4 +513,18 @@ public class StrayAnimalServiceImpl extends ServiceImpl<MiniStrayAnimalMapper, M
return strayAnimalDetailsVO; return strayAnimalDetailsVO;
} }
@Override
public IPage<StrayAnimalShortVO> getOthersCreatedPage(String authorUuid, OwnStrayAnimalQuery queryParams) {
SysUser sysUser = userMapper.selectOne(new LambdaQueryWrapper<SysUser>()
.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);
}
} }

1
src/main/resources/application-dev.yml

@ -88,6 +88,7 @@ security:
- /api/v1/auth/refresh-token # 刷新令牌接口 - /api/v1/auth/refresh-token # 刷新令牌接口
- /api/v1/wxma/auth/** # 微信小程序认证接口(静默登录/手机号快捷登录/绑定手机号) - /api/v1/wxma/auth/** # 微信小程序认证接口(静默登录/手机号快捷登录/绑定手机号)
- /api/v1/logs/** # 日志接口(访问日志列表) - /api/v1/logs/** # 日志接口(访问日志列表)
- /api/v1/mini/public/**
- /healthcheck - /healthcheck
# 非安全端点路径,完全绕过 Spring Security 的过滤器 # 非安全端点路径,完全绕过 Spring Security 的过滤器
unsecured-urls: unsecured-urls:

1
src/main/resources/application-prod.yml

@ -88,6 +88,7 @@ security:
- /api/v1/auth/refresh-token # 刷新令牌接口 - /api/v1/auth/refresh-token # 刷新令牌接口
- /api/v1/wxma/auth/** # 微信小程序认证接口(静默登录/手机号快捷登录/绑定手机号) - /api/v1/wxma/auth/** # 微信小程序认证接口(静默登录/手机号快捷登录/绑定手机号)
- /api/v1/logs/** # 日志接口(访问日志列表) - /api/v1/logs/** # 日志接口(访问日志列表)
- /api/v1/mini/public/**
- /healthcheck - /healthcheck
# 非安全端点路径,完全绕过 Spring Security 的过滤器 # 非安全端点路径,完全绕过 Spring Security 的过滤器
unsecured-urls: unsecured-urls:

6
src/main/resources/mapper/mini/MiniStrayAnimalMapper.xml

@ -117,7 +117,7 @@
</update> </update>
<select id="getOwnPage" resultType="com.youlai.boot.mini.model.vo.StrayAnimalShortVO" databaseId="mysql"> <select id="getAnimalPage" resultType="com.youlai.boot.mini.model.vo.StrayAnimalShortVO" databaseId="mysql">
WITH first_image AS ( WITH first_image AS (
SELECT SELECT
@ -153,6 +153,7 @@
n.comment_count, n.comment_count,
n.collect_count, n.collect_count,
<if test="queryParams.miniUserId != null">
-- 当前用户是否点赞 -- 当前用户是否点赞
EXISTS ( EXISTS (
SELECT 1 SELECT 1
@ -170,6 +171,7 @@
AND c.mini_user_id = #{queryParams.miniUserId} AND c.mini_user_id = #{queryParams.miniUserId}
AND c.is_deleted = 0 AND c.is_deleted = 0
) AS isCollected, ) AS isCollected,
</if>
a.audit_status a.audit_status
@ -183,7 +185,7 @@
n.is_deleted = 0 AND a.is_deleted = 0 n.is_deleted = 0 AND a.is_deleted = 0
<!-- 指定用户 --> <!-- 指定用户 -->
AND n.mini_user_id = #{queryParams.miniUserId} AND n.mini_user_id = #{queryParams.creatorId}
<!-- 动物类型 --> <!-- 动物类型 -->
<if test="queryParams.animalType != null and queryParams.animalType != ''"> <if test="queryParams.animalType != null and queryParams.animalType != ''">

Loading…
Cancel
Save