Browse Source

动物列表接口(未完成)

master
review512jwy@163.com 1 month ago
parent
commit
966a97fd6f
  1. 17
      src/main/java/com/youlai/boot/mini/controller/StrayAnimalController.java
  2. 5
      src/main/java/com/youlai/boot/mini/mapper/MiniStrayAnimalMapper.java
  3. 15
      src/main/java/com/youlai/boot/mini/model/query/OwnStrayAnimalQuery.java
  4. 20
      src/main/java/com/youlai/boot/mini/model/query/StrayAnimalQuery.java
  5. 89
      src/main/java/com/youlai/boot/mini/model/vo/StrayAnimalShortVO.java
  6. 6
      src/main/java/com/youlai/boot/mini/service/StrayAnimalService.java
  7. 19
      src/main/java/com/youlai/boot/mini/service/impl/StrayAnimalServiceImpl.java
  8. 75
      src/main/resources/mapper/mini/MiniStrayAnimalMapper.xml

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

@ -4,22 +4,20 @@ import com.youlai.boot.common.annotation.Log;
import com.youlai.boot.common.annotation.RepeatSubmit; import com.youlai.boot.common.annotation.RepeatSubmit;
import com.youlai.boot.common.enums.ActionTypeEnum; import com.youlai.boot.common.enums.ActionTypeEnum;
import com.youlai.boot.common.enums.LogModuleEnum; import com.youlai.boot.common.enums.LogModuleEnum;
import com.youlai.boot.common.model.Option; import com.youlai.boot.common.result.PageResult;
import com.youlai.boot.common.result.Result; import com.youlai.boot.common.result.Result;
import com.youlai.boot.mini.model.dto.DeleteStrayAnimalDTO; import com.youlai.boot.mini.model.dto.DeleteStrayAnimalDTO;
import com.youlai.boot.mini.model.dto.DeleteStrayAnimalNoteMediaDTO; import com.youlai.boot.mini.model.dto.DeleteStrayAnimalNoteMediaDTO;
import com.youlai.boot.mini.model.dto.EditVisibilityDTO; import com.youlai.boot.mini.model.dto.EditVisibilityDTO;
import com.youlai.boot.mini.model.form.StrayAnimalForm; import com.youlai.boot.mini.model.form.StrayAnimalForm;
import com.youlai.boot.mini.model.query.OwnStrayAnimalQuery;
import com.youlai.boot.mini.model.vo.StrayAnimalShortVO;
import com.youlai.boot.mini.service.StrayAnimalService; import com.youlai.boot.mini.service.StrayAnimalService;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.enums.ParameterIn;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid; import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
@ -111,4 +109,13 @@ public class StrayAnimalController {
return Result.success(); return Result.success();
} }
@Operation(summary = "获取个人登记创建的动物信息列表")
@GetMapping(value = "/getOwnPage")
@Log(module = LogModuleEnum.STRAY_ANIMAL_INFO, value = ActionTypeEnum.LIST)
public PageResult<StrayAnimalShortVO> getOwnPage(
OwnStrayAnimalQuery queryParams
) {
return PageResult.success(strayAnimalService.getOwnPage(queryParams));
}
} }

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

@ -1,7 +1,11 @@
package com.youlai.boot.mini.mapper; package com.youlai.boot.mini.mapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.youlai.boot.mini.model.entity.MiniStrayAnimal; import com.youlai.boot.mini.model.entity.MiniStrayAnimal;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.youlai.boot.mini.model.query.OwnStrayAnimalQuery;
import com.youlai.boot.mini.model.vo.StrayAnimalShortVO;
/** /**
* 流浪动物基础信息表 Mapper 接口 * 流浪动物基础信息表 Mapper 接口
@ -15,4 +19,5 @@ public interface MiniStrayAnimalMapper extends BaseMapper<MiniStrayAnimal> {
void updateStrayAnimal(MiniStrayAnimal miniStrayAnimal); void updateStrayAnimal(MiniStrayAnimal miniStrayAnimal);
IPage<StrayAnimalShortVO> getOwnPage(Page<StrayAnimalShortVO> page, OwnStrayAnimalQuery queryParams);
} }

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

@ -0,0 +1,15 @@
package com.youlai.boot.mini.model.query;
import com.youlai.boot.common.base.BaseQuery;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = true)
@Data
public class OwnStrayAnimalQuery extends StrayAnimalQuery {
@Schema(description = "用户ID", example = "1", hidden = true)
private Long miniUserId; // 用户ID,用于查询用户自己的流浪动物
}

20
src/main/java/com/youlai/boot/mini/model/query/StrayAnimalQuery.java

@ -0,0 +1,20 @@
package com.youlai.boot.mini.model.query;
import com.youlai.boot.common.base.BaseQuery;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = true)
@Data
public class StrayAnimalQuery extends BaseQuery {
@Schema(description = "动物类型,cat-猫,dog-狗,other-其他", example = "cat")
private String animalType;
@Schema(description = "起始登记时间,毫秒级时间戳", example = "1776426078459")
private Long createStartTimestamp;
@Schema(description = "截止登记时间,毫秒级时间戳", example = "1776426078459")
private Long createEndTimestamp;
}

89
src/main/java/com/youlai/boot/mini/model/vo/StrayAnimalShortVO.java

@ -0,0 +1,89 @@
package com.youlai.boot.mini.model.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
public class StrayAnimalShortVO {
@Schema(description = "作者id", example = "true")
private Long authorId;
@Schema(description = "作者昵称", example = "true")
private String authorName;
@Schema(description = "作者头像", example = "true")
private String authorAvatar;
@Schema(type = "string", description = "动物信息UUID", example = "0677d62d63ec693bf1bd6dab8a877dc1", requiredMode = Schema.RequiredMode.REQUIRED)
private String animalUuid;
@Schema(type = "string", description = "动物笔记UUID", example = "0677d62d63ec693bf1bd6dab8a877dc1", requiredMode = Schema.RequiredMode.REQUIRED)
private String animalNoteUuid;
@Schema(description = "封面图片url", example = "https://pet-map.oss-cn-beijing.aliyuncs.com/animal_note/18ec68e743a0bba8c85f441fbce08/17441599158f190n30q.jpg")
private String firstImageUrl;
@Schema(description = "动物类型,cat-猫,dog-狗,other-其他", example = "cat", requiredMode = Schema.RequiredMode.REQUIRED)
private String animalType;
// @Schema(description = "颜色", example = "白色")
// private String color;
//
// @Schema(description = "体型,small-小,medium-中等,large-大", example = "medium")
// private String size;
// @Schema(description = "状态,found-发现,adopted-已被领养,missing-失踪", example = "missing", requiredMode = Schema.RequiredMode.REQUIRED)
// private String status="found";
@Schema(description = "笔记标题", example = "在公园发现的小猫", requiredMode = Schema.RequiredMode.REQUIRED)
private String title;
@Schema(description = "笔记内容", example = "今天下午在人民公园看到一只走失的小猫")
private String content;
@Schema(description = "可见性范围:public-公开,private-仅自己,friends-仅好友", example = "public")
private String visibility="public";
// @Schema(description = "经度", example = "118.08125")
// private Double lng;
//
// @Schema(description = "纬度", example = "24.606929")
// private Double lat;
//
// @Schema(description = "省", example = "福建省")
// private String province;
//
// @Schema(description = "市", example = "厦门市")
// private String city;
//
// @Schema(description = "区(县)", example = "集美区")
// private String district;
//
// @Schema(description = "完整详细地址,含省市区(县)", example = "福建省厦门市集美区侨英街道莲花尚院1号院")
// private String address;
@Schema(description = "浏览数", example = "118")
private Integer viewCount;
@Schema(description = "点赞数", example = "125")
private Integer likeCount;
@Schema(description = "评论数", example = "125")
private Integer commentCount;
@Schema(description = "收藏数", example = "125")
private Integer collectCount;
@Schema(description = "当前用户是否已点赞", example = "false")
private Boolean isLiked;
@Schema(description = "当前用户是否收藏", example = "false")
private Boolean Collected;
@Schema(description = "审核状态:0通过,1审核中,2审核未通过", example = "0")
private Integer auditStatus;
}

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

@ -1,12 +1,14 @@
package com.youlai.boot.mini.service; package com.youlai.boot.mini.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.youlai.boot.common.result.Result;
import com.youlai.boot.mini.model.dto.DeleteStrayAnimalDTO; import com.youlai.boot.mini.model.dto.DeleteStrayAnimalDTO;
import com.youlai.boot.mini.model.dto.DeleteStrayAnimalNoteMediaDTO; import com.youlai.boot.mini.model.dto.DeleteStrayAnimalNoteMediaDTO;
import com.youlai.boot.mini.model.dto.EditVisibilityDTO; import com.youlai.boot.mini.model.dto.EditVisibilityDTO;
import com.youlai.boot.mini.model.entity.MiniStrayAnimal; import com.youlai.boot.mini.model.entity.MiniStrayAnimal;
import com.youlai.boot.mini.model.form.StrayAnimalForm; import com.youlai.boot.mini.model.form.StrayAnimalForm;
import com.youlai.boot.mini.model.query.OwnStrayAnimalQuery;
import com.youlai.boot.mini.model.vo.StrayAnimalShortVO;
import jakarta.validation.Valid; import jakarta.validation.Valid;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
@ -25,5 +27,7 @@ public interface StrayAnimalService extends IService<MiniStrayAnimal> {
void updateVisibility(String animalUuid, EditVisibilityDTO editVisibilityDTO); void updateVisibility(String animalUuid, EditVisibilityDTO editVisibilityDTO);
void delete(DeleteStrayAnimalDTO deleteStrayAnimalDTO); void delete(DeleteStrayAnimalDTO deleteStrayAnimalDTO);
IPage<StrayAnimalShortVO> getOwnPage(OwnStrayAnimalQuery queryParams);
} }

19
src/main/java/com/youlai/boot/mini/service/impl/StrayAnimalServiceImpl.java

@ -5,6 +5,8 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.lang.Assert; import cn.hutool.core.lang.Assert;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.youlai.boot.common.constant.CommonConstants; import com.youlai.boot.common.constant.CommonConstants;
import com.youlai.boot.common.exception.MsgException; import com.youlai.boot.common.exception.MsgException;
@ -26,6 +28,8 @@ import com.youlai.boot.mini.model.entity.MiniStrayAnimal;
import com.youlai.boot.mini.model.entity.MiniStrayAnimalNote; import com.youlai.boot.mini.model.entity.MiniStrayAnimalNote;
import com.youlai.boot.mini.model.entity.MiniStrayAnimalNoteMedia; import com.youlai.boot.mini.model.entity.MiniStrayAnimalNoteMedia;
import com.youlai.boot.mini.model.form.StrayAnimalForm; import com.youlai.boot.mini.model.form.StrayAnimalForm;
import com.youlai.boot.mini.model.query.OwnStrayAnimalQuery;
import com.youlai.boot.mini.model.vo.StrayAnimalShortVO;
import com.youlai.boot.mini.service.StrayAnimalService; import com.youlai.boot.mini.service.StrayAnimalService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -422,4 +426,19 @@ public class StrayAnimalServiceImpl extends ServiceImpl<MiniStrayAnimalMapper, M
miniStrayAnimalMapper.update(null, updateWrapper); miniStrayAnimalMapper.update(null, updateWrapper);
} }
@Override
public IPage<StrayAnimalShortVO> getOwnPage(OwnStrayAnimalQuery queryParams) {
// 参数构建
int pageNum = queryParams.getPageNum();
int pageSize = queryParams.getPageSize();
Page<StrayAnimalShortVO> page = new Page<>(pageNum, pageSize);
queryParams.setMiniUserId(SecurityUtils.getUserId());
// 查询数据
// return this.miniStrayAnimalMapper.getOwnPage(page, queryParams);
IPage<StrayAnimalShortVO> result = null;
return result;
}
} }

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

@ -116,4 +116,79 @@
WHERE id = #{id} WHERE id = #{id}
</update> </update>
<select id="getOwnPage" resultType="com.youlai.boot.mini.model.vo.StrayAnimalShortVO" databaseId="mysql">
SELECT
u.id,
u.username,
u.nickname,
u.mobile,
u.gender,
u.avatar,
u.STATUS,
u.email,
d.NAME AS dept_name,
GROUP_CONCAT( r.NAME ) AS roleNames,
u.create_time
FROM
sys_user u
LEFT JOIN sys_dept d ON u.dept_id = d.id
LEFT JOIN sys_user_role sur ON u.id = sur.user_id
LEFT JOIN sys_role r ON sur.role_id = r.id
<where>
u.is_deleted = 0
<!-- 非超级管理员用户限制查看超级管理员 -->
AND NOT EXISTS (
SELECT
1
FROM sys_user_role sur
INNER JOIN sys_role r ON sur.role_id = r.id
WHERE
sur.user_id = u.id
AND r.code = '${@com.youlai.boot.common.constant.SystemConstants@ROOT_ROLE_CODE}'
)
<if test='queryParams.keywords!=null and queryParams.keywords.trim() neq ""'>
AND (
u.username LIKE CONCAT('%',#{queryParams.keywords},'%')
OR u.nickname LIKE CONCAT('%',#{queryParams.keywords},'%')
OR u.mobile LIKE CONCAT('%',#{queryParams.keywords},'%')
)
</if>
<if test='queryParams.status!=null'>
AND u.status = #{queryParams.status}
</if>
<if test='queryParams.deptId!=null'>
AND concat(',',concat(d.tree_path,',',d.id),',') like concat('%,',#{queryParams.deptId},',%')
</if>
<if test="queryParams.createTime != null and queryParams.createTime.size > 0">
<if test="queryParams.createTime[0] != null and queryParams.createTime[0] != ''">
<bind name="startDate" value="queryParams.createTime[0].length() == 10 ? queryParams.createTime[0] + ' 00:00:00' : queryParams.createTime[0]"/>
AND u.create_time &gt;= #{startDate}
</if>
<if test="queryParams.createTime[1] != null and queryParams.createTime[1] != ''">
<bind name="endDate" value="queryParams.createTime[1].length() == 10 ? queryParams.createTime[1] + ' 23:59:59' : queryParams.createTime[1]"/>
AND u.create_time &lt;= #{endDate}
</if>
</if>
<if test="queryParams.roleIds != null and queryParams.roleIds.size() > 0">
AND sur.role_id IN
<foreach item="roleId" collection="queryParams.roleIds" open="(" separator="," close=")">
#{roleId}
</foreach>
</if>
</where>
GROUP BY
u.id
<choose>
<!-- 如果排序参数都传入 -->
<when test="queryParams.sortBy != null and queryParams.sortBy != '' and queryParams.order != null">
ORDER BY u.${queryParams.sortBy} ${queryParams.order}
</when>
<!-- 默认排序 -->
<otherwise>
ORDER BY u.update_time DESC, u.create_time DESC
</otherwise>
</choose>
</select>
</mapper> </mapper>

Loading…
Cancel
Save