Pārlūkot izejas kodu

[update] message:1.区域管理crud

kelei 6 mēneši atpakaļ
vecāks
revīzija
6be43b9613

+ 51 - 2
admin/src/main/java/com/flyer/foster/controller/AreaController.java

@@ -1,7 +1,16 @@
 package com.flyer.foster.controller;
 
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.flyer.foster.dto.AreaAddDTO;
+import com.flyer.foster.dto.AreaQueryDTO;
+import com.flyer.foster.dto.AreaUpdateDTO;
+import com.flyer.foster.service.IAreaService;
+import com.flyer.util.R;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.List;
 
 /**
  * 区域
@@ -12,5 +21,45 @@ import org.springframework.web.bind.annotation.RestController;
 @RestController
 @RequestMapping("/area")
 public class AreaController {
+    @Autowired
+    private IAreaService iAreaService;
+
+    /**
+     * 区域列表-分页
+     *
+     * @param current 当前页,默认1
+     * @param size    当前页显示条数,默认10
+     * @return
+     */
+    @GetMapping("/list/{current}/{size}")
+    public R getPageList(@PathVariable Integer current, @PathVariable Integer size, AreaQueryDTO queryDTO) {
+        return R.ok().result(iAreaService.getPageList(new Page<>(current, size), queryDTO));
+    }
+
+    /**
+     * 新增区域
+     *
+     * @param addDTO
+     * @return
+     */
+    @PostMapping("")
+    public R addArea(@Valid @RequestBody AreaAddDTO addDTO) {
+        return R.ok().result(iAreaService.addArea(addDTO));
+    }
+
+    @PutMapping("/{areaId}")
+    public R updateArea(@PathVariable Integer areaId,@RequestBody AreaUpdateDTO updateDTO){
+        updateDTO.setId(areaId);
+        return R.ok().result(iAreaService.updateArea(updateDTO));
+    }
 
+    /**
+     * 删除区域
+     *
+     * @return
+     */
+    @DeleteMapping("/delete")
+    public R deleteArea(@RequestBody List<Integer> idList) {
+        return R.ok().result(iAreaService.deleteByIdList(idList));
+    }
 }

+ 44 - 0
admin/src/main/java/com/flyer/foster/dto/AreaAddDTO.java

@@ -0,0 +1,44 @@
+package com.flyer.foster.dto;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * AreaSearchDTO
+ *
+ * @author kelei
+ * @since 2024/5/9/10:54
+ */
+@Data
+public class AreaAddDTO {
+    private Integer id;
+
+    /**
+     * 果园id
+     */
+    @NotBlank(message = "果园不能为空")
+    private Integer gardenId;
+
+    /**
+     * 区域名称
+     */
+    @NotBlank(message = "区域名称不能为空")
+    private String name;
+
+    /**
+     * 坐标
+     */
+    @NotBlank(message = "坐标不能为空")
+    private String wkt;
+
+    /**
+     * 状态-{0.不可用 1.可用}
+     */
+    private Integer status;
+
+    /**
+     * 租户号
+     */
+    private Integer tenantId;
+}

+ 39 - 0
admin/src/main/java/com/flyer/foster/dto/AreaQueryDTO.java

@@ -0,0 +1,39 @@
+package com.flyer.foster.dto;
+
+import lombok.Data;
+
+/**
+ * AreaSearchDTO
+ *
+ * @author kelei
+ * @since 2024/5/9/10:54
+ */
+@Data
+public class AreaQueryDTO {
+    private Integer id;
+
+    /**
+     * 果园id
+     */
+    private Integer gardenId;
+
+    /**
+     * 区域名称
+     */
+    private String name;
+
+    /**
+     * 坐标
+     */
+    private String wkt;
+
+    /**
+     * 状态-{0.不可用 1.可用}
+     */
+    private Integer status;
+
+    /**
+     * 租户号
+     */
+    private Integer tenantId;
+}

+ 14 - 0
admin/src/main/java/com/flyer/foster/dto/AreaRespDTO.java

@@ -0,0 +1,14 @@
+package com.flyer.foster.dto;
+
+import lombok.Data;
+
+/**
+ * AreaRespDTO
+ *
+ * @author kelei
+ * @since 2024/5/9/10:58
+ */
+@Data
+public class AreaRespDTO {
+
+}

+ 44 - 0
admin/src/main/java/com/flyer/foster/dto/AreaUpdateDTO.java

@@ -0,0 +1,44 @@
+package com.flyer.foster.dto;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * AreaSearchDTO
+ *
+ * @author kelei
+ * @since 2024/5/9/10:54
+ */
+@Data
+public class AreaUpdateDTO {
+    private Integer id;
+
+    /**
+     * 果园id
+     */
+    @NotBlank(message = "果园不能为空")
+    private Integer gardenId;
+
+    /**
+     * 区域名称
+     */
+    @NotBlank(message = "区域名称不能为空")
+    private String name;
+
+    /**
+     * 坐标
+     */
+    @NotBlank(message = "坐标不能为空")
+    private String wkt;
+
+    /**
+     * 状态-{0.不可用 1.可用}
+     */
+    private Integer status;
+
+    /**
+     * 租户号
+     */
+    private Integer tenantId;
+}

+ 5 - 0
admin/src/main/java/com/flyer/foster/entity/Garden.java

@@ -34,6 +34,11 @@ public class Garden implements Serializable {
     private Integer id;
 
     /**
+     * 果园名称
+     */
+    private String name;
+
+    /**
      * 用户id
      */
     private Integer userId;

+ 19 - 0
admin/src/main/java/com/flyer/foster/mapper/IAreaMapper.java

@@ -1,7 +1,13 @@
 package com.flyer.foster.mapper;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.flyer.foster.dto.AreaRespDTO;
+import com.flyer.foster.dto.AreaQueryDTO;
 import com.flyer.foster.entity.Area;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * <p>
@@ -12,5 +18,18 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  * @since 2024-05-09
  */
 public interface IAreaMapper extends BaseMapper<Area> {
+    /**
+     *区域列表-分页
+     * @param page
+     * @param searchDTO
+     * @return
+     */
+    IPage<AreaRespDTO> getPageList(@Param("page") IPage<AreaRespDTO> page, @Param("queryDTO") AreaQueryDTO searchDTO);
 
+    /**
+     * 物理删除
+     * @param idList
+     * @return
+     */
+    boolean deleteByIdList(@Param("idList") List<Integer> idList);
 }

+ 28 - 0
admin/src/main/java/com/flyer/foster/service/IAreaService.java

@@ -1,8 +1,15 @@
 package com.flyer.foster.service;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.flyer.foster.dto.AreaAddDTO;
+import com.flyer.foster.dto.AreaRespDTO;
+import com.flyer.foster.dto.AreaQueryDTO;
+import com.flyer.foster.dto.AreaUpdateDTO;
 import com.flyer.foster.entity.Area;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import java.util.List;
+
 /**
  * <p>
  * 区域 服务类
@@ -12,5 +19,26 @@ import com.baomidou.mybatisplus.extension.service.IService;
  * @since 2024-05-09
  */
 public interface IAreaService extends IService<Area> {
+    IPage<AreaRespDTO> getPageList(IPage<AreaRespDTO> page, AreaQueryDTO searchDTO);
+
+    /**
+     * 新增区域
+     * @param addDTO
+     * @return
+     */
+    boolean addArea(AreaAddDTO addDTO);
+
+    /**
+     * 物理删除
+     * @param idList
+     * @return
+     */
+    boolean deleteByIdList(List<Integer> idList);
 
+    /**
+     * 修改区域
+     * @param updateDTO
+     * @return
+     */
+    boolean updateArea(AreaUpdateDTO updateDTO);
 }

+ 44 - 0
admin/src/main/java/com/flyer/foster/service/impl/AreaServiceImpl.java

@@ -1,10 +1,21 @@
 package com.flyer.foster.service.impl;
 
+import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
+import com.flyer.exception.BusinessException;
+import com.flyer.foster.dto.AreaAddDTO;
+import com.flyer.foster.dto.AreaRespDTO;
+import com.flyer.foster.dto.AreaQueryDTO;
+import com.flyer.foster.dto.AreaUpdateDTO;
 import com.flyer.foster.entity.Area;
 import com.flyer.foster.mapper.IAreaMapper;
 import com.flyer.foster.service.IAreaService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
 
 /**
  * <p>
@@ -16,5 +27,38 @@ import org.springframework.stereotype.Service;
  */
 @Service
 public class AreaServiceImpl extends ServiceImpl<IAreaMapper, Area> implements IAreaService {
+    @Override
+    public IPage<AreaRespDTO> getPageList(IPage<AreaRespDTO> page, AreaQueryDTO searchDTO) {
+        return baseMapper.getPageList(page, searchDTO);
+    }
+
+    @Transactional
+    @Override
+    public boolean addArea(AreaAddDTO addDTO) {
+        Area area = new Area();
+        BeanUtil.copyProperties(addDTO, area);
+        return this.save(area);
+    }
+
+    @Transactional
+    @Override
+    public boolean deleteByIdList(List<Integer> idList) {
+        return baseMapper.deleteByIdList(idList);
+    }
 
+    @Transactional
+    @Override
+    public boolean updateArea(AreaUpdateDTO updateDTO) {
+        Area area = baseMapper.selectById(updateDTO.getId());
+        if (area == null) {
+            throw new BusinessException("无效的区域id");
+        }
+        return this.lambdaUpdate()
+                .set(Area::getName, updateDTO.getName())
+                .set(Area::getGardenId, updateDTO.getGardenId())
+                .set(Area::getWkt, updateDTO.getWkt())
+                .set(Area::getStatus, updateDTO.getStatus())
+                .eq(Area::getId, updateDTO.getId())
+                .update();
+    }
 }

+ 23 - 0
admin/src/main/resources/mapper/AreaMapper.xml

@@ -1,5 +1,28 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.flyer.foster.mapper.IAreaMapper">
+    <delete id="deleteByIdList">
+        delete from tb_area where id in
+        <foreach collection="idList" item="id" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
 
+    <select id="getPageList" resultType="com.flyer.foster.dto.AreaRespDTO">
+        select a.id,
+               a.name         as areaName,
+               case a.status
+                   when 0 then '禁用'
+                   when 1 then '启用'
+                   end        as areaStatus,
+               b.name         as gardenName,
+               a.created_time as createdTime,
+               a.updated_time as updatedTime
+        from tb_area a
+                 inner join tb_garden b on a.garden_id = b.id
+        where a.tenant_id = #{queryDTO.tenantId}
+        <if test="queryDTO.gardenName!=null and queryDTO.gardenName!=''">
+            and b.name like concat('%',#{queryDTO.gardenName},'%')
+        </if>
+    </select>
 </mapper>

+ 182 - 182
admin/src/main/resources/mysql/ddl/init-table.sql

@@ -1,247 +1,247 @@
 drop table if exists tb_app_user;
 create table tb_app_user
 (
-    id int auto_increment comment '主键'
+    id           int auto_increment comment '主键'
         primary key,
-    union_id varchar(255) null,
-    tel varchar(15) null comment '手机号',
-    name varchar(32) null comment '用户名',
-    sex int null comment '性别-{0:女,1:男}',
-    open_id varchar(255) null,
-    icon varchar(255) null comment '机构id',
-    app_id varchar(255) null,
-    status int default 1 null comment '状态-{0.不可用 1.可用}',
-    tenant_id int default 0 null comment '租户号',
-    version int default 1 null comment '乐观锁',
-    is_deleted int default 0 null comment '是否删除',
-    created_by varchar(32) null comment '创建人',
-    created_time datetime null comment '创建时间',
-    updated_by varchar(32) null comment '更新人',
-    updated_time datetime null comment '更新时间'
+    union_id     varchar(255)  null,
+    tel          varchar(15)   null comment '手机号',
+    name         varchar(32)   null comment '用户名',
+    sex          int           null comment '性别-{0:女,1:男}',
+    open_id      varchar(255)  null,
+    icon         varchar(255)  null comment '机构id',
+    app_id       varchar(255)  null,
+    status       int default 1 null comment '状态-{0.不可用 1.可用}',
+    tenant_id    int default 0 null comment '租户号',
+    version      int default 1 null comment '乐观锁',
+    is_deleted   int default 0 null comment '是否删除',
+    created_by   varchar(32)   null comment '创建人',
+    created_time datetime      null comment '创建时间',
+    updated_by   varchar(32)   null comment '更新人',
+    updated_time datetime      null comment '更新时间'
 )
     comment '小程序用户';
 
 drop table if exists tb_area;
 create table tb_area
 (
-    id int auto_increment comment '主键'
+    id           int auto_increment comment '主键'
         primary key,
-    garden_id int null comment '果园id',
-    name varchar(255) null comment '区域名称',
-    wkt varchar(255) null comment '坐标',
-    status int default 1 null comment '状态-{0.不可用 1.可用}',
-    tenant_id int default 0 null comment '租户号',
-    version int default 1 null comment '乐观锁',
-    is_deleted int default 0 null comment '是否删除',
-    created_by varchar(32) null comment '创建人',
-    created_time datetime null comment '创建时间',
-    updated_by varchar(32) null comment '更新人',
-    updated_time datetime null comment '更新时间'
+    garden_id    int           null comment '果园id',
+    name         varchar(255)  null comment '区域名称',
+    wkt          varchar(255)  null comment '坐标',
+    status       int default 1 null comment '状态-{0.不可用 1.可用}',
+    tenant_id    int default 0 null comment '租户号',
+    version      int default 1 null comment '乐观锁',
+    is_deleted   int default 0 null comment '是否删除',
+    created_by   varchar(32)   null comment '创建人',
+    created_time datetime      null comment '创建时间',
+    updated_by   varchar(32)   null comment '更新人',
+    updated_time datetime      null comment '更新时间'
 )
     comment '区域';
 
 drop table if exists tb_foster_record;
 create table tb_foster_record
 (
-    id int auto_increment comment '主键'
+    id           int auto_increment comment '主键'
         primary key,
-    app_user_id int null comment '小程序用户id',
-    tree_id int null comment '树id',
-    status int default 1 null comment '状态-{0.不可用 1.可用}',
-    tenant_id int default 0 null comment '租户号',
-    version int default 1 null comment '乐观锁',
-    is_deleted int default 0 null comment '是否删除',
-    created_by varchar(32) null comment '创建人',
-    created_time datetime null comment '创建时间',
-    updated_by varchar(32) null comment '更新人',
-    updated_time datetime null comment '更新时间'
+    app_user_id  int           null comment '小程序用户id',
+    tree_id      int           null comment '树id',
+    status       int default 1 null comment '状态-{0.不可用 1.可用}',
+    tenant_id    int default 0 null comment '租户号',
+    version      int default 1 null comment '乐观锁',
+    is_deleted   int default 0 null comment '是否删除',
+    created_by   varchar(32)   null comment '创建人',
+    created_time datetime      null comment '创建时间',
+    updated_by   varchar(32)   null comment '更新人',
+    updated_time datetime      null comment '更新时间'
 )
     comment '领养记录';
 
-drop table if exists tb_garden;
-create table tb_garden
+DROP TABLE IF EXISTS tb_garden;
+CREATE TABLE tb_garden
 (
-    id int auto_increment comment '主键'
-        primary key,
-    user_id int null comment '用户id',
-    base_map_url varchar(255) null comment '底图',
-    qr_code varchar(255) null comment '二维码',
-    status int default 1 null comment '状态-{0.不可用 1.可用}',
-    tenant_id int default 0 null comment '租户号',
-    version int default 1 null comment '乐观锁',
-    is_deleted int default 0 null comment '是否删除',
-    created_by varchar(32) null comment '创建人',
-    created_time datetime null comment '创建时间',
-    updated_by varchar(32) null comment '更新人',
-    updated_time datetime null comment '更新时间'
-)
-    comment '果园';
+    `id`           INT NOT NULL AUTO_INCREMENT COMMENT '主键',
+    `name`         VARCHAR(32) COMMENT '果园名称',
+    `user_id`      INT COMMENT '用户id',
+    `base_map_url` VARCHAR(255) COMMENT '底图',
+    `qr_code`      VARCHAR(255) COMMENT '二维码',
+    `status`       INT DEFAULT 1 COMMENT '状态-{0.不可用 1.可用}',
+    `tenant_id`    INT DEFAULT 0 COMMENT '租户号',
+    `version`      INT DEFAULT 1 COMMENT '乐观锁',
+    `is_deleted`   INT DEFAULT 0 COMMENT '是否删除',
+    `created_by`   VARCHAR(32) COMMENT '创建人',
+    `created_time` DATETIME COMMENT '创建时间',
+    `updated_by`   VARCHAR(32) COMMENT '更新人',
+    `updated_time` DATETIME COMMENT '更新时间',
+    PRIMARY KEY (id)
+) COMMENT = '果园';
 
 drop table if exists tb_menu;
 create table tb_menu
 (
-    id int auto_increment comment '主键'
+    id           int auto_increment comment '主键'
         primary key,
-    menu_name varchar(32) null comment '菜单名称',
-    menu_code varchar(32) null comment '菜单编码',
-    parent_id int null comment '父节点',
-    is_admin int default 0 null comment '0:嘉谷和医院的菜单,1:嘉谷的菜单',
-    menu_sort int null comment '菜单排序',
-    type int null comment '菜单类型-{0:父级菜单 1:菜单,2:权限}',
-    permission varchar(100) null comment '权限',
-    url varchar(100) null comment '前端页面路径',
-    status int default 1 null comment '状态-{0.不可用 1.可用}',
-    version int default 1 null comment '乐观锁',
-    is_deleted int default 0 null comment '是否删除',
-    created_by varchar(32) null comment '创建人',
-    created_time datetime null comment '创建时间',
-    updated_by varchar(32) null comment '更新人',
-    updated_time datetime null comment '更新时间'
+    menu_name    varchar(32)   null comment '菜单名称',
+    menu_code    varchar(32)   null comment '菜单编码',
+    parent_id    int           null comment '父节点',
+    is_admin     int default 0 null comment '0:嘉谷和医院的菜单,1:嘉谷的菜单',
+    menu_sort    int           null comment '菜单排序',
+    type         int           null comment '菜单类型-{0:父级菜单 1:菜单,2:权限}',
+    permission   varchar(100)  null comment '权限',
+    url          varchar(100)  null comment '前端页面路径',
+    status       int default 1 null comment '状态-{0.不可用 1.可用}',
+    version      int default 1 null comment '乐观锁',
+    is_deleted   int default 0 null comment '是否删除',
+    created_by   varchar(32)   null comment '创建人',
+    created_time datetime      null comment '创建时间',
+    updated_by   varchar(32)   null comment '更新人',
+    updated_time datetime      null comment '更新时间'
 )
     comment '菜单表';
 
 drop table if exists tb_poster_lib;
 create table tb_poster_lib
 (
-    id int auto_increment comment '主键'
+    id           int auto_increment comment '主键'
         primary key,
-    url varchar(255) null comment '海报url',
-    status int default 1 null comment '状态-{0.不可用 1.可用}',
-    tenant_id int default 0 null comment '租户号',
-    version int default 1 null comment '乐观锁',
-    is_deleted int default 0 null comment '是否删除',
-    created_by varchar(32) null comment '创建人',
-    created_time datetime null comment '创建时间',
-    updated_by varchar(32) null comment '更新人',
-    updated_time datetime null comment '更新时间'
+    url          varchar(255)  null comment '海报url',
+    status       int default 1 null comment '状态-{0.不可用 1.可用}',
+    tenant_id    int default 0 null comment '租户号',
+    version      int default 1 null comment '乐观锁',
+    is_deleted   int default 0 null comment '是否删除',
+    created_by   varchar(32)   null comment '创建人',
+    created_time datetime      null comment '创建时间',
+    updated_by   varchar(32)   null comment '更新人',
+    updated_time datetime      null comment '更新时间'
 )
     comment '海报库';
 
 drop table if exists tb_role;
 create table tb_role
 (
-    id int auto_increment comment '主键'
+    id           int auto_increment comment '主键'
         primary key,
-    role_name varchar(35) not null comment '角色名称',
-    role_code varchar(50) null comment '角色编码',
-    is_admin int default 0 null comment '管理员角色-{0:不是,1:是}',
-    status int default 1 null comment '状态-{0.不可用 1.可用}',
-    tenant_id int null comment '租户号',
-    version int default 1 null comment '乐观锁',
-    is_deleted int default 0 null comment '是否删除',
-    created_by varchar(32) null comment '创建人',
-    created_time datetime null comment '创建时间',
-    updated_by varchar(32) null comment '更新人',
-    updated_time datetime null comment '更新时间'
+    role_name    varchar(35)   not null comment '角色名称',
+    role_code    varchar(50)   null comment '角色编码',
+    is_admin     int default 0 null comment '管理员角色-{0:不是,1:是}',
+    status       int default 1 null comment '状态-{0.不可用 1.可用}',
+    tenant_id    int           null comment '租户号',
+    version      int default 1 null comment '乐观锁',
+    is_deleted   int default 0 null comment '是否删除',
+    created_by   varchar(32)   null comment '创建人',
+    created_time datetime      null comment '创建时间',
+    updated_by   varchar(32)   null comment '更新人',
+    updated_time datetime      null comment '更新时间'
 )
     comment '角色表';
 
 drop table if exists tb_role_menu;
 create table tb_role_menu
 (
-    id int auto_increment comment '主键'
+    id           int auto_increment comment '主键'
         primary key,
-    role_id int not null comment '角色id',
-    menu_id int not null comment '菜单id',
-    status int default 1 null comment '状态-{0.不可用 1.可用}',
-    version int default 1 null comment '乐观锁',
-    is_deleted int default 0 null comment '是否删除',
-    created_by varchar(32) null comment '创建人',
-    created_time datetime null comment '创建时间',
-    updated_by varchar(32) null comment '更新人',
-    updated_time datetime null comment '更新时间'
+    role_id      int           not null comment '角色id',
+    menu_id      int           not null comment '菜单id',
+    status       int default 1 null comment '状态-{0.不可用 1.可用}',
+    version      int default 1 null comment '乐观锁',
+    is_deleted   int default 0 null comment '是否删除',
+    created_by   varchar(32)   null comment '创建人',
+    created_time datetime      null comment '创建时间',
+    updated_by   varchar(32)   null comment '更新人',
+    updated_time datetime      null comment '更新时间'
 )
     comment '角色菜单关系表';
 
 drop table if exists tb_tenant;
 create table tb_tenant
 (
-    id int auto_increment comment '主键'
+    id           int auto_increment comment '主键'
         primary key,
-    tenant_name varchar(100) null comment '租户名称',
-    parent_id int default 0 null comment '父级id',
-    status int default 1 null comment '状态-{0.不可用 1.可用}',
-    version int default 1 null comment '乐观锁',
-    is_deleted int default 0 null comment '是否删除',
-    created_by varchar(32) null comment '创建人',
-    created_time timestamp null comment '创建时间',
-    updated_by varchar(32) null comment '更新人',
-    updated_time timestamp null comment '更新时间'
+    tenant_name  varchar(100)  null comment '租户名称',
+    parent_id    int default 0 null comment '父级id',
+    status       int default 1 null comment '状态-{0.不可用 1.可用}',
+    version      int default 1 null comment '乐观锁',
+    is_deleted   int default 0 null comment '是否删除',
+    created_by   varchar(32)   null comment '创建人',
+    created_time timestamp     null comment '创建时间',
+    updated_by   varchar(32)   null comment '更新人',
+    updated_time timestamp     null comment '更新时间'
 )
     comment '系统租户表';
 
 drop table if exists tb_tree;
 create table tb_tree
 (
-    id int auto_increment comment '主键'
+    id           int auto_increment comment '主键'
         primary key,
-    garden_id int null comment '果园id',
-    area_id int null comment '区域id',
-    wkt varchar(255) null comment '坐标',
-    status int default 1 null comment '状态-{0.不可用 1.可用}',
-    tenant_id int default 0 null comment '租户号',
-    version int default 1 null comment '乐观锁',
-    is_deleted int default 0 null comment '是否删除',
-    created_by varchar(32) null comment '创建人',
-    created_time datetime null comment '创建时间',
-    updated_by varchar(32) null comment '更新人',
-    updated_time datetime null comment '更新时间'
+    garden_id    int           null comment '果园id',
+    area_id      int           null comment '区域id',
+    wkt          varchar(255)  null comment '坐标',
+    status       int default 1 null comment '状态-{0.不可用 1.可用}',
+    tenant_id    int default 0 null comment '租户号',
+    version      int default 1 null comment '乐观锁',
+    is_deleted   int default 0 null comment '是否删除',
+    created_by   varchar(32)   null comment '创建人',
+    created_time datetime      null comment '创建时间',
+    updated_by   varchar(32)   null comment '更新人',
+    updated_time datetime      null comment '更新时间'
 )
     comment '树';
 
 drop table if exists tb_tree_image;
 create table tb_tree_image
 (
-    id int auto_increment comment '主键'
+    id           int auto_increment comment '主键'
         primary key,
-    tree_id varchar(255) null comment '树id',
-    url varchar(255) null comment '图片地址',
-    status int default 1 null comment '状态-{0.不可用 1.可用}',
-    tenant_id int default 0 null comment '租户号',
-    version int default 1 null comment '乐观锁',
-    is_deleted int default 0 null comment '是否删除',
-    created_by varchar(32) null comment '创建人',
-    created_time datetime null comment '创建时间',
-    updated_by varchar(32) null comment '更新人',
-    updated_time datetime null comment '更新时间'
+    tree_id      varchar(255)  null comment '树id',
+    url          varchar(255)  null comment '图片地址',
+    status       int default 1 null comment '状态-{0.不可用 1.可用}',
+    tenant_id    int default 0 null comment '租户号',
+    version      int default 1 null comment '乐观锁',
+    is_deleted   int default 0 null comment '是否删除',
+    created_by   varchar(32)   null comment '创建人',
+    created_time datetime      null comment '创建时间',
+    updated_by   varchar(32)   null comment '更新人',
+    updated_time datetime      null comment '更新时间'
 )
     comment '树照片';
 
 drop table if exists tb_tree_poster_content;
 create table tb_tree_poster_content
 (
-    id int auto_increment comment '主键'
+    id           int auto_increment comment '主键'
         primary key,
-    poster_url varchar(255) null comment '海报url',
-    content varchar(255) null comment '悄悄话内容',
-    app_user_id int null comment '小程序用户id',
-    tree_id int null comment '树id',
-    status int default 1 null comment '状态-{0.不可用 1.可用}',
-    tenant_id int default 0 null comment '租户号',
-    version int default 1 null comment '乐观锁',
-    is_deleted int default 0 null comment '是否删除',
-    created_by varchar(32) null comment '创建人',
-    created_time datetime null comment '创建时间',
-    updated_by varchar(32) null comment '更新人',
-    updated_time datetime null comment '更新时间'
+    poster_url   varchar(255)  null comment '海报url',
+    content      varchar(255)  null comment '悄悄话内容',
+    app_user_id  int           null comment '小程序用户id',
+    tree_id      int           null comment '树id',
+    status       int default 1 null comment '状态-{0.不可用 1.可用}',
+    tenant_id    int default 0 null comment '租户号',
+    version      int default 1 null comment '乐观锁',
+    is_deleted   int default 0 null comment '是否删除',
+    created_by   varchar(32)   null comment '创建人',
+    created_time datetime      null comment '创建时间',
+    updated_by   varchar(32)   null comment '更新人',
+    updated_time datetime      null comment '更新时间'
 )
     comment '果树海报悄悄话';
 
 drop table if exists tb_user;
 create table tb_user
 (
-    id int auto_increment comment '主键'
+    id           int auto_increment comment '主键'
         primary key,
-    username varchar(32) null comment '账号',
-    password varchar(100) null comment '密码',
-    status int default 1 null comment '状态-{0.不可用 1.可用}',
-    tenant_id int null comment '租户号',
-    version int default 1 null comment '乐观锁',
-    is_deleted int default 0 null comment '是否删除',
-    created_by varchar(32) null comment '创建人',
-    created_time datetime null comment '创建时间',
-    updated_by varchar(32) null comment '更新人',
-    updated_time datetime null comment '更新时间',
+    username     varchar(32)   null comment '账号',
+    password     varchar(100)  null comment '密码',
+    status       int default 1 null comment '状态-{0.不可用 1.可用}',
+    tenant_id    int           null comment '租户号',
+    version      int default 1 null comment '乐观锁',
+    is_deleted   int default 0 null comment '是否删除',
+    created_by   varchar(32)   null comment '创建人',
+    created_time datetime      null comment '创建时间',
+    updated_by   varchar(32)   null comment '更新人',
+    updated_time datetime      null comment '更新时间',
     constraint username
         unique (username)
 )
@@ -250,35 +250,35 @@ create table tb_user
 drop table if exists tb_user_role;
 create table tb_user_role
 (
-    id int auto_increment comment '主键'
+    id           int auto_increment comment '主键'
         primary key,
-    user_id int not null comment '用户id',
-    role_id int not null comment '角色id',
-    status int default 1 null comment '状态-{0.不可用 1.可用}',
-    tenant_id int null comment '租户号',
-    version int default 1 null comment '乐观锁',
-    is_deleted int default 0 null comment '是否删除',
-    created_by varchar(32) null comment '创建人',
-    created_time datetime null comment '创建时间',
-    updated_by varchar(32) null comment '更新人',
-    updated_time datetime null comment '更新时间'
+    user_id      int           not null comment '用户id',
+    role_id      int           not null comment '角色id',
+    status       int default 1 null comment '状态-{0.不可用 1.可用}',
+    tenant_id    int           null comment '租户号',
+    version      int default 1 null comment '乐观锁',
+    is_deleted   int default 0 null comment '是否删除',
+    created_by   varchar(32)   null comment '创建人',
+    created_time datetime      null comment '创建时间',
+    updated_by   varchar(32)   null comment '更新人',
+    updated_time datetime      null comment '更新时间'
 )
     comment '用户角色表';
 
 drop table if exists tb_whisper;
 create table tb_whisper
 (
-    id int auto_increment comment '主键'
+    id           int auto_increment comment '主键'
         primary key,
-    content varchar(255) null comment '文案内容',
-    status int default 1 null comment '状态-{0.不可用 1.可用}',
-    tenant_id int default 0 null comment '租户号',
-    version int default 1 null comment '乐观锁',
-    is_deleted int default 0 null comment '是否删除',
-    created_by varchar(32) null comment '创建人',
-    created_time datetime null comment '创建时间',
-    updated_by varchar(32) null comment '更新人',
-    updated_time datetime null comment '更新时间'
+    content      varchar(255)  null comment '文案内容',
+    status       int default 1 null comment '状态-{0.不可用 1.可用}',
+    tenant_id    int default 0 null comment '租户号',
+    version      int default 1 null comment '乐观锁',
+    is_deleted   int default 0 null comment '是否删除',
+    created_by   varchar(32)   null comment '创建人',
+    created_time datetime      null comment '创建时间',
+    updated_by   varchar(32)   null comment '更新人',
+    updated_time datetime      null comment '更新时间'
 )
     comment '悄悄话';