From 3916a955f4b05f5e4a3c85b456714d1046764b23 Mon Sep 17 00:00:00 2001
From: liusuyi <1951119284@qq.com>
Date: Tue, 14 Oct 2025 09:43:05 +0800
Subject: [PATCH] 增加禁飞区管理

---
 ard-system/src/main/resources/mapper/data/ArdNoFlyZoneMapper.xml                          |   79 +++++++
 ard-system/src/main/java/com/ard/data/noflyzone/mapper/ArdNoFlyZoneMapper.java            |   61 ++++++
 ard-admin/src/main/java/com/ard/web/controller/data/ArdNoFlyZoneController.java           |  157 +++++++++++++++
 ard-system/src/main/java/com/ard/data/noflyzone/domain/FeatureCollectionTypeHandler.java  |   68 ++++++
 ard-system/src/main/java/com/ard/data/noflyzone/domain/ArdNoFlyZone.java                  |   34 +++
 ard-system/src/main/java/com/ard/data/noflyzone/domain/FeatureCollection.java             |   26 ++
 ard-common/pom.xml                                                                        |    2 
 ard-system/src/main/java/com/ard/data/noflyzone/service/IArdNoFlyZoneService.java         |   61 ++++++
 ard-system/src/main/java/com/ard/data/noflyzone/service/impl/ArdNoFlyZoneServiceImpl.java |  103 ++++++++++
 9 files changed, 590 insertions(+), 1 deletions(-)

diff --git a/ard-admin/src/main/java/com/ard/web/controller/data/ArdNoFlyZoneController.java b/ard-admin/src/main/java/com/ard/web/controller/data/ArdNoFlyZoneController.java
new file mode 100644
index 0000000..0c91912
--- /dev/null
+++ b/ard-admin/src/main/java/com/ard/web/controller/data/ArdNoFlyZoneController.java
@@ -0,0 +1,157 @@
+package com.ard.web.controller.data;
+
+import com.alibaba.fastjson2.JSON;
+import com.ard.common.utils.uuid.IdUtils;
+import com.ard.data.noflyzone.domain.FeatureCollection;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+import java.nio.charset.StandardCharsets;
+import java.util.List;
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+import com.ard.common.annotation.Log;
+import com.ard.common.core.controller.BaseController;
+import com.ard.common.core.domain.AjaxResult;
+import com.ard.common.enums.BusinessType;
+import com.ard.data.noflyzone.domain.ArdNoFlyZone;
+import com.ard.data.noflyzone.service.IArdNoFlyZoneService;
+import com.ard.common.utils.poi.ExcelUtil;
+import com.ard.common.core.page.TableDataInfo;
+import org.springframework.web.multipart.MultipartFile;
+
+/**
+ * 禁飞区管理Controller
+ *
+ * @author ruoyi
+ * @date 2025-10-14
+ */
+@Api(tags = "禁飞区管理")
+@RestController
+@RequestMapping("/data/noflyzone")
+public class ArdNoFlyZoneController extends BaseController
+{
+    @Resource
+    private IArdNoFlyZoneService ardNoFlyZoneService;
+
+    /**
+     * 查询禁飞区管理列表
+     */
+    @ApiOperation("查询禁飞区管理列表")
+    @PreAuthorize("@ss.hasPermi('data:noflyzone:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(ArdNoFlyZone ardNoFlyZone)
+    {
+        startPage();
+        List<ArdNoFlyZone> list = ardNoFlyZoneService.selectArdNoFlyZoneList(ardNoFlyZone);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出禁飞区管理列表
+     */
+    @PreAuthorize("@ss.hasPermi('data:noflyzone:export')")
+    @Log(title = "禁飞区管理", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, ArdNoFlyZone ardNoFlyZone)
+    {
+        List<ArdNoFlyZone> list = ardNoFlyZoneService.selectArdNoFlyZoneList(ardNoFlyZone);
+        ExcelUtil<ArdNoFlyZone> util = new ExcelUtil<ArdNoFlyZone>(ArdNoFlyZone.class);
+        util.exportExcel(response, list, "禁飞区管理数据");
+    }
+
+    /**
+     * 获取禁飞区管理详细信息
+     */
+    @ApiOperation("获取禁飞区管理详细信息")
+    @PreAuthorize("@ss.hasPermi('data:noflyzone:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") String id)
+    {
+        return success(ardNoFlyZoneService.selectArdNoFlyZoneById(id));
+    }
+
+    /**
+     * 新增禁飞区管理
+     */
+    @ApiOperation("新增禁飞区管理")
+    @PreAuthorize("@ss.hasPermi('data:noflyzone:add')")
+    @Log(title = "禁飞区管理", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody ArdNoFlyZone ardNoFlyZone)
+    {
+        return toAjax(ardNoFlyZoneService.insertArdNoFlyZone(ardNoFlyZone));
+    }
+
+    /**
+     * 修改禁飞区管理
+     */
+    @ApiOperation("修改禁飞区管理")
+    @PreAuthorize("@ss.hasPermi('data:noflyzone:edit')")
+    @Log(title = "禁飞区管理", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody ArdNoFlyZone ardNoFlyZone)
+    {
+        return toAjax(ardNoFlyZoneService.updateArdNoFlyZone(ardNoFlyZone));
+    }
+
+    /**
+     * 删除禁飞区管理
+     */
+    @ApiOperation("删除禁飞区管理")
+    @PreAuthorize("@ss.hasPermi('data:noflyzone:remove')")
+    @Log(title = "禁飞区管理", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable String[] ids)
+    {
+        return toAjax(ardNoFlyZoneService.deleteArdNoFlyZoneByIds(ids));
+    }
+
+    /**
+     * 上传 GeoJSON 文件导入禁飞区
+     */
+    @ApiOperation("上传 GeoJSON 文件导入禁飞区")
+    @PreAuthorize("@ss.hasPermi('data:noflyzone:import')")
+    @Log(title = "禁飞区管理", businessType = BusinessType.IMPORT)
+    @PostMapping("/import")
+    public AjaxResult importGeoJson(@RequestPart("file") MultipartFile file) {
+        if (file.isEmpty()) {
+            return AjaxResult.error("上传文件为空");
+        }
+
+        try {
+            // 读取文件内容为字符串
+            String jsonStr = new String(file.getBytes(), StandardCharsets.UTF_8);
+
+            // 解析成 FeatureCollection 对象
+            FeatureCollection featureCollection = JSON.parseObject(jsonStr, FeatureCollection.class);
+
+            int successCount = 0;
+            for (FeatureCollection.Feature feature : featureCollection.getFeatures()) {
+                ArdNoFlyZone zone = new ArdNoFlyZone();
+                zone.setId(IdUtils.simpleUUID());
+                zone.setName(feature.getName() != null ? feature.getName() : "未命名禁飞区");
+
+                // 单独包装 FeatureCollection
+                FeatureCollection singleFc = new FeatureCollection();
+                singleFc.setType("FeatureCollection");
+                singleFc.setName(featureCollection.getName());
+                singleFc.setFeatures(List.of(feature));
+                zone.setGeojson(singleFc);
+
+                // 调用 Service 插入
+                ardNoFlyZoneService.insertArdNoFlyZone(zone);
+                successCount++;
+            }
+
+            return AjaxResult.success("导入成功,共导入 " + successCount + " 条禁飞区");
+
+        } catch (Exception e) {
+            e.printStackTrace();
+            return AjaxResult.error("导入失败:" + e.getMessage());
+        }
+    }
+
+}
diff --git a/ard-common/pom.xml b/ard-common/pom.xml
index cdf374a..96cf934 100644
--- a/ard-common/pom.xml
+++ b/ard-common/pom.xml
@@ -119,7 +119,7 @@
             <artifactId>javax.servlet-api</artifactId>
         </dependency>
 
-        <!-- ruoyi-springboot2 / mybatis-plus 配置 -->
+        <!--  mybatis-plus -->
         <dependency>
             <groupId>com.baomidou</groupId>
             <artifactId>mybatis-plus-boot-starter</artifactId>
diff --git a/ard-system/src/main/java/com/ard/data/noflyzone/domain/ArdNoFlyZone.java b/ard-system/src/main/java/com/ard/data/noflyzone/domain/ArdNoFlyZone.java
new file mode 100644
index 0000000..003a1fb
--- /dev/null
+++ b/ard-system/src/main/java/com/ard/data/noflyzone/domain/ArdNoFlyZone.java
@@ -0,0 +1,34 @@
+package com.ard.data.noflyzone.domain;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ard.common.annotation.Excel;
+import com.ard.common.core.domain.BaseEntity;
+
+/**
+ * 禁飞区管理对象 ard_no_fly_zone
+ * 
+ * @author ruoyi
+ * @date 2025-10-14
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class ArdNoFlyZone extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */
+    private String id;
+
+    /** 禁飞区名称 */
+    @Excel(name = "禁飞区名称")
+    private String name;
+
+    /** 数据json */
+    @Excel(name = "数据json")
+    private FeatureCollection geojson;
+}
diff --git a/ard-system/src/main/java/com/ard/data/noflyzone/domain/FeatureCollection.java b/ard-system/src/main/java/com/ard/data/noflyzone/domain/FeatureCollection.java
new file mode 100644
index 0000000..4caf0ba
--- /dev/null
+++ b/ard-system/src/main/java/com/ard/data/noflyzone/domain/FeatureCollection.java
@@ -0,0 +1,26 @@
+package com.ard.data.noflyzone.domain;
+
+import lombok.Data;
+import java.util.List;
+import java.util.Map;
+
+@Data
+public class FeatureCollection {
+    private String type;
+    private List<Feature> features;
+    private String name;
+
+    @Data
+    public static class Feature {
+        private String type;
+        private Geometry geometry;
+        private Map<String, Object> properties;
+        private String name;
+    }
+
+    @Data
+    public static class Geometry {
+        private String type;
+        private List<List<List<Double>>> coordinates;
+    }
+}
diff --git a/ard-system/src/main/java/com/ard/data/noflyzone/domain/FeatureCollectionTypeHandler.java b/ard-system/src/main/java/com/ard/data/noflyzone/domain/FeatureCollectionTypeHandler.java
new file mode 100644
index 0000000..888d20b
--- /dev/null
+++ b/ard-system/src/main/java/com/ard/data/noflyzone/domain/FeatureCollectionTypeHandler.java
@@ -0,0 +1,68 @@
+package com.ard.data.noflyzone.domain;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.apache.ibatis.type.BaseTypeHandler;
+import org.apache.ibatis.type.JdbcType;
+import org.apache.ibatis.type.MappedJdbcTypes;
+import org.apache.ibatis.type.MappedTypes;
+
+import java.sql.CallableStatement;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+@MappedJdbcTypes(JdbcType.VARCHAR)
+@MappedTypes(FeatureCollection.class)
+public class FeatureCollectionTypeHandler extends BaseTypeHandler<FeatureCollection> {
+
+    private static final ObjectMapper objectMapper = new ObjectMapper();
+
+    @Override
+    public void setNonNullParameter(PreparedStatement ps, int i, FeatureCollection parameter, JdbcType jdbcType) throws SQLException {
+        try {
+            ps.setString(i, objectMapper.writeValueAsString(parameter));
+        } catch (JsonProcessingException e) {
+            throw new SQLException("Failed to convert FeatureCollection to JSON", e);
+        }
+    }
+
+    @Override
+    public FeatureCollection getNullableResult(ResultSet rs, String columnName) throws SQLException {
+        String json = rs.getString(columnName);
+        if (json != null) {
+            try {
+                return objectMapper.readValue(json, FeatureCollection.class);
+            } catch (JsonProcessingException e) {
+                throw new SQLException("Failed to parse JSON to FeatureCollection", e);
+            }
+        }
+        return null;
+    }
+
+    @Override
+    public FeatureCollection getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
+        String json = rs.getString(columnIndex);
+        if (json != null) {
+            try {
+                return objectMapper.readValue(json, FeatureCollection.class);
+            } catch (JsonProcessingException e) {
+                throw new SQLException("Failed to parse JSON to FeatureCollection", e);
+            }
+        }
+        return null;
+    }
+
+    @Override
+    public FeatureCollection getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
+        String json = cs.getString(columnIndex);
+        if (json != null) {
+            try {
+                return objectMapper.readValue(json, FeatureCollection.class);
+            } catch (JsonProcessingException e) {
+                throw new SQLException("Failed to parse JSON to FeatureCollection", e);
+            }
+        }
+        return null;
+    }
+}
diff --git a/ard-system/src/main/java/com/ard/data/noflyzone/mapper/ArdNoFlyZoneMapper.java b/ard-system/src/main/java/com/ard/data/noflyzone/mapper/ArdNoFlyZoneMapper.java
new file mode 100644
index 0000000..0a0acc3
--- /dev/null
+++ b/ard-system/src/main/java/com/ard/data/noflyzone/mapper/ArdNoFlyZoneMapper.java
@@ -0,0 +1,61 @@
+package com.ard.data.noflyzone.mapper;
+
+import java.util.List;
+import com.ard.data.noflyzone.domain.ArdNoFlyZone;
+
+/**
+ * 禁飞区管理Mapper接口
+ * 
+ * @author ruoyi
+ * @date 2025-10-14
+ */
+public interface ArdNoFlyZoneMapper 
+{
+    /**
+     * 查询禁飞区管理
+     * 
+     * @param id 禁飞区管理主键
+     * @return 禁飞区管理
+     */
+    public ArdNoFlyZone selectArdNoFlyZoneById(String id);
+
+    /**
+     * 查询禁飞区管理列表
+     * 
+     * @param ardNoFlyZone 禁飞区管理
+     * @return 禁飞区管理集合
+     */
+    public List<ArdNoFlyZone> selectArdNoFlyZoneList(ArdNoFlyZone ardNoFlyZone);
+
+    /**
+     * 新增禁飞区管理
+     * 
+     * @param ardNoFlyZone 禁飞区管理
+     * @return 结果
+     */
+    public int insertArdNoFlyZone(ArdNoFlyZone ardNoFlyZone);
+
+    /**
+     * 修改禁飞区管理
+     * 
+     * @param ardNoFlyZone 禁飞区管理
+     * @return 结果
+     */
+    public int updateArdNoFlyZone(ArdNoFlyZone ardNoFlyZone);
+
+    /**
+     * 删除禁飞区管理
+     * 
+     * @param id 禁飞区管理主键
+     * @return 结果
+     */
+    public int deleteArdNoFlyZoneById(String id);
+
+    /**
+     * 批量删除禁飞区管理
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteArdNoFlyZoneByIds(String[] ids);
+}
diff --git a/ard-system/src/main/java/com/ard/data/noflyzone/service/IArdNoFlyZoneService.java b/ard-system/src/main/java/com/ard/data/noflyzone/service/IArdNoFlyZoneService.java
new file mode 100644
index 0000000..4287024
--- /dev/null
+++ b/ard-system/src/main/java/com/ard/data/noflyzone/service/IArdNoFlyZoneService.java
@@ -0,0 +1,61 @@
+package com.ard.data.noflyzone.service;
+
+import java.util.List;
+import com.ard.data.noflyzone.domain.ArdNoFlyZone;
+
+/**
+ * 禁飞区管理Service接口
+ * 
+ * @author ruoyi
+ * @date 2025-10-14
+ */
+public interface IArdNoFlyZoneService 
+{
+    /**
+     * 查询禁飞区管理
+     * 
+     * @param id 禁飞区管理主键
+     * @return 禁飞区管理
+     */
+    public ArdNoFlyZone selectArdNoFlyZoneById(String id);
+
+    /**
+     * 查询禁飞区管理列表
+     * 
+     * @param ardNoFlyZone 禁飞区管理
+     * @return 禁飞区管理集合
+     */
+    public List<ArdNoFlyZone> selectArdNoFlyZoneList(ArdNoFlyZone ardNoFlyZone);
+
+    /**
+     * 新增禁飞区管理
+     * 
+     * @param ardNoFlyZone 禁飞区管理
+     * @return 结果
+     */
+    public int insertArdNoFlyZone(ArdNoFlyZone ardNoFlyZone);
+
+    /**
+     * 修改禁飞区管理
+     * 
+     * @param ardNoFlyZone 禁飞区管理
+     * @return 结果
+     */
+    public int updateArdNoFlyZone(ArdNoFlyZone ardNoFlyZone);
+
+    /**
+     * 批量删除禁飞区管理
+     * 
+     * @param ids 需要删除的禁飞区管理主键集合
+     * @return 结果
+     */
+    public int deleteArdNoFlyZoneByIds(String[] ids);
+
+    /**
+     * 删除禁飞区管理信息
+     * 
+     * @param id 禁飞区管理主键
+     * @return 结果
+     */
+    public int deleteArdNoFlyZoneById(String id);
+}
diff --git a/ard-system/src/main/java/com/ard/data/noflyzone/service/impl/ArdNoFlyZoneServiceImpl.java b/ard-system/src/main/java/com/ard/data/noflyzone/service/impl/ArdNoFlyZoneServiceImpl.java
new file mode 100644
index 0000000..a2549c6
--- /dev/null
+++ b/ard-system/src/main/java/com/ard/data/noflyzone/service/impl/ArdNoFlyZoneServiceImpl.java
@@ -0,0 +1,103 @@
+package com.ard.data.noflyzone.service.impl;
+
+import java.util.List;
+import com.ard.common.utils.DateUtils;
+import com.ard.common.utils.SecurityUtils;
+import com.ard.common.utils.uuid.IdUtils;
+import com.ard.data.noflyzone.service.IArdNoFlyZoneService;
+import org.springframework.stereotype.Service;
+import com.ard.data.noflyzone.mapper.ArdNoFlyZoneMapper;
+import com.ard.data.noflyzone.domain.ArdNoFlyZone;
+
+import javax.annotation.Resource;
+
+
+/**
+ * 禁飞区管理Service业务层处理
+ * 
+ * @author ruoyi
+ * @date 2025-10-14
+ */
+@Service
+public class ArdNoFlyZoneServiceImpl implements IArdNoFlyZoneService
+{
+    @Resource
+    private ArdNoFlyZoneMapper ardNoFlyZoneMapper;
+
+    /**
+     * 查询禁飞区管理
+     * 
+     * @param id 禁飞区管理主键
+     * @return 禁飞区管理
+     */
+    @Override
+    public ArdNoFlyZone selectArdNoFlyZoneById(String id)
+    {
+        return ardNoFlyZoneMapper.selectArdNoFlyZoneById(id);
+    }
+
+    /**
+     * 查询禁飞区管理列表
+     * 
+     * @param ardNoFlyZone 禁飞区管理
+     * @return 禁飞区管理
+     */
+    @Override
+    public List<ArdNoFlyZone> selectArdNoFlyZoneList(ArdNoFlyZone ardNoFlyZone)
+    {
+        return ardNoFlyZoneMapper.selectArdNoFlyZoneList(ardNoFlyZone);
+    }
+
+    /**
+     * 新增禁飞区管理
+     * 
+     * @param ardNoFlyZone 禁飞区管理
+     * @return 结果
+     */
+    @Override
+    public int insertArdNoFlyZone(ArdNoFlyZone ardNoFlyZone)
+    {
+        ardNoFlyZone.setId(IdUtils.simpleUUID());
+        ardNoFlyZone.setCreateTime(DateUtils.getNowDate());
+        ardNoFlyZone.setCreateBy(SecurityUtils.getUsername());
+        return ardNoFlyZoneMapper.insertArdNoFlyZone(ardNoFlyZone);
+    }
+
+    /**
+     * 修改禁飞区管理
+     * 
+     * @param ardNoFlyZone 禁飞区管理
+     * @return 结果
+     */
+    @Override
+    public int updateArdNoFlyZone(ArdNoFlyZone ardNoFlyZone)
+    {
+        ardNoFlyZone.setUpdateBy(SecurityUtils.getUsername());
+        ardNoFlyZone.setUpdateTime(DateUtils.getNowDate());
+        return ardNoFlyZoneMapper.updateArdNoFlyZone(ardNoFlyZone);
+    }
+
+    /**
+     * 批量删除禁飞区管理
+     * 
+     * @param ids 需要删除的禁飞区管理主键
+     * @return 结果
+     */
+    @Override
+    public int deleteArdNoFlyZoneByIds(String[] ids)
+    {
+        return ardNoFlyZoneMapper.deleteArdNoFlyZoneByIds(ids);
+    }
+
+    /**
+     * 删除禁飞区管理信息
+     * 
+     * @param id 禁飞区管理主键
+     * @return 结果
+     */
+    @Override
+    public int deleteArdNoFlyZoneById(String id)
+    {
+        return ardNoFlyZoneMapper.deleteArdNoFlyZoneById(id);
+    }
+}
diff --git a/ard-system/src/main/resources/mapper/data/ArdNoFlyZoneMapper.xml b/ard-system/src/main/resources/mapper/data/ArdNoFlyZoneMapper.xml
new file mode 100644
index 0000000..8b5ef2f
--- /dev/null
+++ b/ard-system/src/main/resources/mapper/data/ArdNoFlyZoneMapper.xml
@@ -0,0 +1,79 @@
+<?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.ard.data.noflyzone.mapper.ArdNoFlyZoneMapper">
+    
+    <resultMap type="ArdNoFlyZone" id="ArdNoFlyZoneResult">
+        <result property="id"    column="id"    />
+        <result property="name"    column="name"    />
+        <result property="geojson" column="geojson" typeHandler="com.ard.data.noflyzone.domain.FeatureCollectionTypeHandler"/>
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+    </resultMap>
+
+    <sql id="selectArdNoFlyZoneVo">
+        select id, name, geojson, create_by, create_time, update_by, update_time from ard_no_fly_zone
+    </sql>
+
+    <select id="selectArdNoFlyZoneList" parameterType="ArdNoFlyZone" resultMap="ArdNoFlyZoneResult">
+        <include refid="selectArdNoFlyZoneVo"/>
+        <where>  
+            <if test="name != null  and name != ''"> and name like concat('%', #{name}, '%')</if>
+            <if test="geojson != null  and geojson != ''"> and geojson = #{geojson}</if>
+        </where>
+    </select>
+    
+    <select id="selectArdNoFlyZoneById" parameterType="String" resultMap="ArdNoFlyZoneResult">
+        <include refid="selectArdNoFlyZoneVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertArdNoFlyZone" parameterType="ArdNoFlyZone">
+        insert into ard_no_fly_zone
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,</if>
+            <if test="name != null">name,</if>
+            <if test="geojson != null">geojson,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">#{id},</if>
+            <if test="name != null">#{name},</if>
+            <if test="geojson != null">#{geojson, typeHandler=com.ard.data.noflyzone.domain.FeatureCollectionTypeHandler},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+         </trim>
+    </insert>
+
+    <update id="updateArdNoFlyZone" parameterType="ArdNoFlyZone">
+        update ard_no_fly_zone
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="name != null">name = #{name},</if>
+            <if test="geojson != null">geojson = #{geojson},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteArdNoFlyZoneById" parameterType="String">
+        delete from ard_no_fly_zone where id = #{id}
+    </delete>
+
+    <delete id="deleteArdNoFlyZoneByIds" parameterType="String">
+        delete from ard_no_fly_zone where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>
\ No newline at end of file

--
Gitblit v1.9.3