Explorar el Código

create & page api

tanlie hace 1 mes
padre
commit
96bb64c27c
Se han modificado 12 ficheros con 245 adiciones y 8 borrados
  1. 12 3
      wishing-platform/platform-entity/platform-entity-wishing/src/main/java/cn/qinys/platform/entity/wishing/BaseEntity.java
  2. BIN
      wishing-platform/platform-entity/platform-entity-wishing/target/classes/cn/qinys/platform/entity/wishing/BaseEntity.class
  3. BIN
      wishing-platform/platform-entity/platform-entity-wishing/target/classes/cn/qinys/platform/entity/wishing/WishingTree.class
  4. 15 5
      wishing-platform/platform-service/platform-service-admin/src/main/java/cn/qinys/platform/admin/controller/WishTreeController.java
  5. 18 0
      wishing-platform/platform-service/platform-service-admin/src/main/java/cn/qinys/platform/admin/mapper/WishingTreeMapper.java
  6. 22 0
      wishing-platform/platform-service/platform-service-admin/src/main/java/cn/qinys/platform/admin/req/BasePageReq.java
  7. 36 0
      wishing-platform/platform-service/platform-service-admin/src/main/java/cn/qinys/platform/admin/req/WishingTreeCreateReq.java
  8. 19 0
      wishing-platform/platform-service/platform-service-admin/src/main/java/cn/qinys/platform/admin/req/WishingTreePageReq.java
  9. 51 0
      wishing-platform/platform-service/platform-service-admin/src/main/java/cn/qinys/platform/admin/resp/WishingTreePageResp.java
  10. 13 0
      wishing-platform/platform-service/platform-service-admin/src/main/java/cn/qinys/platform/admin/service/WishTreeService.java
  11. 30 0
      wishing-platform/platform-service/platform-service-admin/src/main/java/cn/qinys/platform/admin/service/impl/WishTreeServiceImpl.java
  12. 29 0
      wishing-platform/platform-service/platform-service-admin/src/main/java/cn/qinys/platform/config/MyMetaObjectHandler.java

+ 12 - 3
wishing-platform/platform-entity/platform-entity-wishing/src/main/java/cn/qinys/platform/entity/wishing/BaseEntity.java

@@ -3,15 +3,17 @@ package cn.qinys.platform.entity.wishing;
 import com.baomidou.mybatisplus.annotation.FieldFill;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.Version;
+import lombok.Data;
 
 import java.io.Serializable;
 import java.time.LocalDateTime;
 
 /**
+ * Base entity with common fields and automatic fill support
+ *
  * @author lie tan
- * @description
- * @date 2026-05-23 13:22
- **/
+ */
+@Data
 public class BaseEntity implements Serializable {
 
     @Version
@@ -24,4 +26,11 @@ public class BaseEntity implements Serializable {
 
     @TableField(fill = FieldFill.INSERT_UPDATE)
     private LocalDateTime updatedAt;
+
+    // audit user fields
+    @TableField(fill = FieldFill.INSERT)
+    private String createdBy;
+
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private String updatedBy;
 }

BIN
wishing-platform/platform-entity/platform-entity-wishing/target/classes/cn/qinys/platform/entity/wishing/BaseEntity.class


BIN
wishing-platform/platform-entity/platform-entity-wishing/target/classes/cn/qinys/platform/entity/wishing/WishingTree.class


+ 15 - 5
wishing-platform/platform-service/platform-service-admin/src/main/java/cn/qinys/platform/admin/controller/WishTreeController.java

@@ -1,10 +1,13 @@
 package cn.qinys.platform.admin.controller;
 
+import cn.qinys.platform.admin.req.WishingTreeCreateReq;
+import cn.qinys.platform.admin.req.WishingTreePageReq;
+import cn.qinys.platform.admin.resp.WishingTreePageResp;
 import cn.qinys.platform.admin.service.WishTreeService;
 import cn.qinys.platform.base.response.UnifyResponse;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import jakarta.annotation.Resource;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 /**
  * @author lie tan
@@ -19,9 +22,16 @@ public class WishTreeController {
     @Resource
     private WishTreeService wishTreeService;
 
-    @RequestMapping("/page")
-    public UnifyResponse<String> getWishTreePage() {
-        return new UnifyResponse<>("wishingtree page");
+    @GetMapping("/page")
+    public UnifyResponse<Page<WishingTreePageResp>> getWishTreePage(WishingTreePageReq req) {
+        Page<WishingTreePageResp> wishTreePage = wishTreeService.getWishTreePage(req);
+        return new UnifyResponse<>(wishTreePage);
+    }
+
+    @PostMapping("/create")
+    public UnifyResponse<Long> createWishTree(@RequestBody WishingTreeCreateReq req) {
+        Long id = wishTreeService.createWishTree(req);
+        return new UnifyResponse<>("created", id);
     }
 
 }

+ 18 - 0
wishing-platform/platform-service/platform-service-admin/src/main/java/cn/qinys/platform/admin/mapper/WishingTreeMapper.java

@@ -1,8 +1,14 @@
 package cn.qinys.platform.admin.mapper;
 
+import cn.qinys.platform.admin.resp.WishingTreePageResp;
 import cn.qinys.platform.entity.wishing.WishingTree;
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
 
 /**
  * @author lie tan
@@ -11,4 +17,16 @@ import org.apache.ibatis.annotations.Mapper;
  **/
 @Mapper
 public interface WishingTreeMapper extends BaseMapper<WishingTree> {
+
+
+    /**
+     * 用户分页
+     *
+     * @param page
+     * @param wrapper
+     * @return
+     */
+    @Select("SELECT * FROM wishing_tree ${ew.customSqlSegment}")
+    Page<WishingTreePageResp> selectTreePage(Page<WishingTree> page, @Param(Constants.WRAPPER) Wrapper<WishingTree> wrapper);
+
 }

+ 22 - 0
wishing-platform/platform-service/platform-service-admin/src/main/java/cn/qinys/platform/admin/req/BasePageReq.java

@@ -0,0 +1,22 @@
+package cn.qinys.platform.admin.req;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author lie tan
+ * @description
+ * @date 2026-05-23 13:51
+ **/
+@Data
+public class BasePageReq implements Serializable {
+    /**
+     * 当前页
+     */
+    private Integer current = 1;
+    /**
+     * 每页条数
+     */
+    private Integer size = 10;
+}

+ 36 - 0
wishing-platform/platform-service/platform-service-admin/src/main/java/cn/qinys/platform/admin/req/WishingTreeCreateReq.java

@@ -0,0 +1,36 @@
+package cn.qinys.platform.admin.req;
+
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * Request for creating a wishing tree
+ */
+@Data
+public class WishingTreeCreateReq implements Serializable {
+
+    @NotNull(message = "许愿树名称不能为空")
+    private String name;
+
+    private String description;
+
+    @NotNull(message = "经度不能为空")
+    private BigDecimal longitude;
+
+    @NotNull(message = "纬度不能为空")
+    private BigDecimal latitude;
+
+    private String address;
+
+    private Integer radius = 100;
+
+    @NotNull(message = "封面图片不能为空")
+    private String coverImage;
+
+    private Integer isActive;
+
+}
+

+ 19 - 0
wishing-platform/platform-service/platform-service-admin/src/main/java/cn/qinys/platform/admin/req/WishingTreePageReq.java

@@ -0,0 +1,19 @@
+package cn.qinys.platform.admin.req;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+
+/**
+ * @author lie tan
+ * @description
+ * @date 2026-05-23 13:50
+ **/
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class WishingTreePageReq extends BasePageReq implements Serializable {
+
+    private String name;
+
+}

+ 51 - 0
wishing-platform/platform-service/platform-service-admin/src/main/java/cn/qinys/platform/admin/resp/WishingTreePageResp.java

@@ -0,0 +1,51 @@
+package cn.qinys.platform.admin.resp;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+/**
+ * @author lie tan
+ * @description
+ * @date 2026-05-23 13:47
+ **/
+@Data
+public class WishingTreePageResp implements Serializable {
+
+    private Long id;
+
+    private String name;
+
+    private String description;
+
+    private BigDecimal longitude;
+
+    private BigDecimal latitude;
+
+    private String address;
+
+    private Integer radius;
+
+    private String coverImage;
+
+    private Integer totalWishes;
+
+    private Integer isActive;
+
+    private Integer version;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime createdAt;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime updatedAt;
+
+    private String createdBy;
+
+    private String updatedBy;
+}

+ 13 - 0
wishing-platform/platform-service/platform-service-admin/src/main/java/cn/qinys/platform/admin/service/WishTreeService.java

@@ -1,9 +1,22 @@
 package cn.qinys.platform.admin.service;
 
+import cn.qinys.platform.admin.req.WishingTreeCreateReq;
+import cn.qinys.platform.admin.req.WishingTreePageReq;
+import cn.qinys.platform.admin.resp.WishingTreePageResp;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+
 /**
  * @author lie tan
  * @description
  * @date 2026-05-23 12:05
  **/
 public interface WishTreeService {
+	/**
+	 * Create a new wishing tree
+	 * @param req create request
+	 * @return created record id
+	 */
+	Long createWishTree(WishingTreeCreateReq req);
+
+	Page<WishingTreePageResp> getWishTreePage(WishingTreePageReq req);
 }

+ 30 - 0
wishing-platform/platform-service/platform-service-admin/src/main/java/cn/qinys/platform/admin/service/impl/WishTreeServiceImpl.java

@@ -1,7 +1,17 @@
 package cn.qinys.platform.admin.service.impl;
 
+import cn.qinys.platform.admin.mapper.WishingTreeMapper;
+import cn.qinys.platform.admin.req.WishingTreeCreateReq;
+import cn.qinys.platform.admin.req.WishingTreePageReq;
+import cn.qinys.platform.admin.resp.WishingTreePageResp;
 import cn.qinys.platform.admin.service.WishTreeService;
+import cn.qinys.platform.base.utils.BeanExUtils;
+import cn.qinys.platform.entity.wishing.WishingTree;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import jakarta.annotation.Resource;
 import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
 
 /**
  * @author lie tan
@@ -10,4 +20,24 @@ import org.springframework.stereotype.Service;
  **/
 @Service
 public class WishTreeServiceImpl implements WishTreeService {
+
+    @Resource
+    private WishingTreeMapper wishingTreeMapper;
+
+    @Override
+    public Long createWishTree(WishingTreeCreateReq req) {
+        WishingTree tree = BeanExUtils.convert(req, WishingTree.class);
+        // insert returns number of rows; id is populated into entity if DB supports generated keys
+        wishingTreeMapper.insert(tree);
+        return tree.getId();
+    }
+
+    @Override
+    public Page<WishingTreePageResp> getWishTreePage(WishingTreePageReq req) {
+        Page<WishingTree> page = new Page<>(req.getCurrent(), req.getSize());
+        QueryWrapper<WishingTree> wrapper = new QueryWrapper<>();
+        wrapper.eq("is_deleted", 0)
+                .like(StringUtils.hasText(req.getName()), "name", req.getName());
+        return wishingTreeMapper.selectTreePage(page, wrapper);
+    }
 }

+ 29 - 0
wishing-platform/platform-service/platform-service-admin/src/main/java/cn/qinys/platform/config/MyMetaObjectHandler.java

@@ -7,6 +7,7 @@ import org.springframework.stereotype.Component;
 import java.time.LocalDateTime;
 import java.util.Date;
 import java.util.Objects;
+import cn.qinys.platform.base.security.utils.CurrentUtils;
 
 /**
  * MyBatis-Plus 自动填充处理器:
@@ -18,6 +19,8 @@ public class MyMetaObjectHandler implements MetaObjectHandler {
 
     private static final String CREATED_FIELD = "createdAt";
     private static final String UPDATED_FIELD = "updatedAt";
+    private static final String CREATED_BY_FIELD = "createdBy";
+    private static final String UPDATED_BY_FIELD = "updatedBy";
 
     @Override
     public void insertFill(MetaObject metaObject) {
@@ -46,6 +49,24 @@ public class MyMetaObjectHandler implements MetaObjectHandler {
                 this.setFieldValByName(UPDATED_FIELD, System.currentTimeMillis(), metaObject);
             }
         }
+
+        // createdBy / updatedBy (set from current user)
+        String current = CurrentUtils.getCurrentUsername();
+        if (current == null || current.isEmpty()) {
+            current = "system";
+        }
+        if (hasGetter(metaObject, CREATED_BY_FIELD)) {
+            Object createdByVal = getFieldValByName(CREATED_BY_FIELD, metaObject);
+            if (Objects.isNull(createdByVal)) {
+                this.setFieldValByName(CREATED_BY_FIELD, current, metaObject);
+            }
+        }
+        if (hasGetter(metaObject, UPDATED_BY_FIELD)) {
+            Object updatedByVal = getFieldValByName(UPDATED_BY_FIELD, metaObject);
+            if (Objects.isNull(updatedByVal)) {
+                this.setFieldValByName(UPDATED_BY_FIELD, current, metaObject);
+            }
+        }
     }
 
     @Override
@@ -60,6 +81,14 @@ public class MyMetaObjectHandler implements MetaObjectHandler {
                 this.setFieldValByName(UPDATED_FIELD, System.currentTimeMillis(), metaObject);
             }
         }
+        // updatedBy
+        if (hasGetter(metaObject, UPDATED_BY_FIELD)) {
+            String current = CurrentUtils.getCurrentUsername();
+            if (current == null || current.isEmpty()) {
+                current = "system";
+            }
+            this.setFieldValByName(UPDATED_BY_FIELD, current, metaObject);
+        }
     }
 
     private boolean hasGetter(MetaObject metaObject, String name) {