瀏覽代碼

添加
史料管理模块

wuweihao 4 年之前
父節點
當前提交
61780548d8

+ 0 - 82
gis_application/src/main/resources/application-44.properties

@@ -1,82 +0,0 @@
-
-#DB # \u9879\u76EE\u6D4B\u8BD5\u670D\u52A1\u5668
-spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
-spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
-spring.datasource.druid.username=root
-#spring.datasource.druid.url=jdbc:mysql://192.168.0.239:3306/${project.en}?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8
-spring.datasource.druid.url=jdbc:mysql://localhost:3306/${project.en}?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8
-#spring.datasource.druid.url=jdbc:mysql://192.168.0.239:3306/army_zhengzhou?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8
-spring.datasource.druid.password=4dkk2020test%
-#spring.datasource.druid.password=4DAGE168
-
-
-
-
-# \u521D\u59CB\u8FDE\u63A5\u6570
-spring.datasource.druid.initial-size=5
-# \u6700\u5C0F\u8FDE\u63A5\u6C60\u6570\u91CF
-spring.datasource.druid.min-idle=10
-# \u6700\u5927\u8FDE\u63A5\u6C60\u6570\u91CF
-spring.datasource.druid.max-active=20
-# \u914D\u7F6E\u83B7\u53D6\u8FDE\u63A5\u7B49\u5F85\u8D85\u65F6\u7684\u65F6\u95F4
-spring.datasource.druid.max-wait=60000
-# \u914D\u7F6E\u95F4\u9694\u591A\u4E45\u624D\u8FDB\u884C\u4E00\u6B21\u68C0\u6D4B\uFF0C\u68C0\u6D4B\u9700\u8981\u5173\u95ED\u7684\u7A7A\u95F2\u8FDE\u63A5\uFF0C\u5355\u4F4D\u662F\u6BEB\u79D2
-spring.datasource.druid.time-between-eviction-runs-millis=60000
-# \u914D\u7F6E\u4E00\u4E2A\u8FDE\u63A5\u5728\u6C60\u4E2D\u6700\u5C0F\u751F\u5B58\u7684\u65F6\u95F4\uFF0C\u5355\u4F4D\u662F\u6BEB\u79D2
-spring.datasource.druid.min-evictable-idle-time-millis=30000
-# \u914D\u7F6E\u4E00\u4E2A\u8FDE\u63A5\u5728\u6C60\u4E2D\u6700\u5927\u751F\u5B58\u7684\u65F6\u95F4\uFF0C\u5355\u4F4D\u662F\u6BEB\u79D2
-spring.datasource.druid.max-evictable-idle-time-millis=90000
-# \u914D\u7F6E\u68C0\u6D4B\u8FDE\u63A5\u662F\u5426\u6709\u6548
-spring.datasource.druid.validation-query=SELECT 1 FROM DUAL
-spring.datasource.druid.test-while-idle=true
-spring.datasource.druid.test-on-borrow=false
-spring.datasource.druid.test-on-return=false
-spring.datasource.druid.web-stat-filter.enabled=true
-spring.datasource.druid.stat-view-servlet.enabled=true
-
-
-# Redis\u6570\u636E\u5E93\u7D22\u5F15\uFF08\u9ED8\u8BA4\u4E3A0\uFF09
-spring.redis.database=0
-spring.redis.host=127.0.0.1
-spring.redis.port=6379
-spring.redis.password=
-# \u8FDE\u63A5\u8D85\u65F6\u65F6\u95F4 \u5355\u4F4D ms\uFF08\u6BEB\u79D2\uFF09
-spring.redis.timeout=3000ms
-# \u8FDE\u63A5\u6C60\u4E2D\u7684\u6700\u5927\u7A7A\u95F2\u8FDE\u63A5\uFF0C\u9ED8\u8BA4\u503C\u4E5F\u662F8\u3002
-spring.redis.jedis.pool.max-idle=8
-#\u8FDE\u63A5\u6C60\u4E2D\u7684\u6700\u5C0F\u7A7A\u95F2\u8FDE\u63A5\uFF0C\u9ED8\u8BA4\u503C\u4E5F\u662F0\u3002
-spring.redis.jedis.pool.min-idle=0
-# \u5982\u679C\u8D4B\u503C\u4E3A-1\uFF0C\u5219\u8868\u793A\u4E0D\u9650\u5236\uFF1B\u5982\u679Cpool\u5DF2\u7ECF\u5206\u914D\u4E86maxActive\u4E2Ajedis\u5B9E\u4F8B\uFF0C\u5219\u6B64\u65F6pool\u7684\u72B6\u6001\u4E3Aexhausted(\u8017\u5C3D)\u3002
-spring.redis.jedis.pool.max-active=8
-# \u7B49\u5F85\u53EF\u7528\u8FDE\u63A5\u7684\u6700\u5927\u65F6\u95F4\uFF0C\u5355\u4F4D\u6BEB\u79D2\uFF0C\u9ED8\u8BA4\u503C\u4E3A-1\uFF0C\u8868\u793A\u6C38\u4E0D\u8D85\u65F6\u3002\u5982\u679C\u8D85\u8FC7\u7B49\u5F85\u65F6\u95F4\uFF0C\u5219\u76F4\u63A5\u629B\u51FAJedisConnectionException
-spring.redis.jedis.pool.max-wait=-1ms
-
-
-#log
-logging.path=/root/data/${project.en}_log
-logging.config=classpath:logback-spring.xml
-logging.level.com.gis=debug
-
-
-
-# file info
-server.file.path=/root/data/${project.en}_data/
-
-## url prefix
-#server.url.prefix=/data/
-
-# swagger2 \u8BBE\u7F6E\u5168\u5C40\u5B57\u4F53\u683C\u5F0F\u4E3Autf-8
-swagger.package=com.gis.web.controller
-swagger.title=${project.sc}-pro
-swagger.description=${swagger.title}
-swagger.version=1.0
-
-
-# swagger login
-# \uFFFD\uFFFD\uFFFD\uFFFDbasic\uFFFD\uFFFD\u00BC\uFFFD\uFFFD\u05A4
-knife4j.basic.enable=true
-knife4j.basic.username=owen
-knife4j.basic.password=owen
-
-
-

+ 1 - 1
gis_application/src/main/resources/application.properties

@@ -1,6 +1,6 @@
 server.port=8001
 
-spring.profiles.active=pro
+spring.profiles.active=dev
 
 # \u9879\u76EE\u540D\u79F0
 project.en=army_zhengzhou

+ 16 - 0
gis_common/src/main/java/com/gis/common/constant/MsgCode.java

@@ -0,0 +1,16 @@
+package com.gis.common.constant;
+
+/**
+ * Created by owen on 2021/6/1 0001 16:45
+ */
+public class MsgCode {
+
+    /** 对象不存在*/
+    public static final Integer e3001 = 3001;
+
+    /** 长传文件非法*/
+    public static final Integer e3002 = 3002;
+
+    /** 空目录*/
+    public static final Integer e3003 = 30023;
+}

+ 27 - 0
gis_domain/src/main/java/com/gis/domain/dto/MaterialDto.java

@@ -0,0 +1,27 @@
+package com.gis.domain.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * Created by owen on 2020/5/28 0028 16:36
+ */
+@Data
+public class MaterialDto {
+
+//    @ApiModelProperty(value = "id, 修改时必须传,新增忽略", required = true)
+//    private Long id;
+
+
+    @ApiModelProperty(value = "文件目录码" )
+    private String code;
+
+    @ApiModelProperty(value = "电话")
+    private String phone;
+
+    @NotBlank(message = "简介不能为空")
+    @ApiModelProperty(value = "简介", required = true)
+    private String description;
+}

+ 24 - 0
gis_domain/src/main/java/com/gis/domain/po/MaterialEntity.java

@@ -0,0 +1,24 @@
+package com.gis.domain.po;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.persistence.Table;
+
+/**
+ * Created by owen on 2021/4/20 0010 17:39
+ * 史料收集表
+ */
+@Data
+@Table(name = "tb_material")
+public class MaterialEntity extends BaseEntity {
+
+    @ApiModelProperty(value = "文件目录码", notes = "是否有值判断是否现在下载按钮")
+    private String code;
+
+    @ApiModelProperty(value = "电话")
+    private String phone;
+
+    @ApiModelProperty(value = "简介")
+    private String description;
+}

+ 13 - 0
gis_mapper/src/main/java/com/gis/mapper/MaterialMapper.java

@@ -0,0 +1,13 @@
+package com.gis.mapper;
+
+
+import com.gis.domain.po.MaterialEntity;
+import com.gis.domain.po.ZoneEntity;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Component;
+
+@Component
+@Mapper
+public interface MaterialMapper extends IBaseMapper<MaterialEntity, Long> {
+
+}

+ 21 - 0
gis_service/src/main/java/com/gis/service/MaterialService.java

@@ -0,0 +1,21 @@
+package com.gis.service;
+
+
+import com.gis.common.util.Result;
+import com.gis.domain.dto.PageDto;
+import com.gis.domain.po.MaterialEntity;
+import org.springframework.web.multipart.MultipartFile;
+
+
+/**
+ * Created by owen on 2020/3/11 0011 16:14
+ */
+public interface MaterialService extends IBaseService<MaterialEntity, Long> {
+
+
+    Result materialUpload(MultipartFile file, String code);
+
+    Result search(PageDto param);
+
+    Result download(Long id);
+}

+ 100 - 0
gis_service/src/main/java/com/gis/service/impl/MaterialServiceImpl.java

@@ -0,0 +1,100 @@
+package com.gis.service.impl;
+
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.io.FileUtil;
+import cn.hutool.core.util.ZipUtil;
+import com.gis.common.constant.ConfigConstant;
+import com.gis.common.constant.MsgCode;
+import com.gis.common.exception.BaseRuntimeException;
+import com.gis.common.util.FileUtils;
+import com.gis.common.util.Result;
+import com.gis.domain.dto.PageDto;
+import com.gis.domain.po.MaterialEntity;
+import com.gis.mapper.IBaseMapper;
+import com.gis.mapper.MaterialMapper;
+import com.gis.service.MaterialService;
+import com.github.pagehelper.PageInfo;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+import tk.mybatis.mapper.entity.Condition;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Date;
+
+
+/**
+ * Created by owen on 2020/3/11 0011 16:16
+ */
+@Slf4j
+@Service
+public class MaterialServiceImpl extends IBaseServiceImpl<MaterialEntity, Long> implements MaterialService {
+
+    @Autowired
+    private MaterialMapper entityMapper;
+
+    @Autowired
+    ConfigConstant configConstant;
+
+    @Override
+    public IBaseMapper<MaterialEntity, Long> getBaseMapper() {
+        return this.entityMapper;
+    }
+
+
+    @Override
+    public Result materialUpload(MultipartFile file, String code) {
+
+
+        if (!FileUtils.checkFile(file)) {
+            throw new BaseRuntimeException(MsgCode.e3002, "非法文件");
+        }
+        String basePath = configConstant.serverBasePath + "material/" + code + File.separator;
+        String filename = file.getOriginalFilename();
+        String savePath = basePath + filename;
+
+        try {
+            FileUtil.writeFromStream(file.getInputStream(), savePath);
+            log.info("史料文件写入完成: {}", savePath);
+            return Result.success();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return Result.failure("长传失败");
+    }
+
+    @Override
+    public Result search(PageDto param) {
+        Condition condition = new Condition(MaterialEntity.class);
+        String searchKey = param.getSearchKey();
+        if (StringUtils.isNotBlank(searchKey)) {
+            condition.and().orLike("description", "%" + searchKey + "%");
+        }
+        PageInfo<MaterialEntity> pageInfo = findAll(condition, param.getPageNum(), param.getPageSize());
+        return Result.success(pageInfo);
+    }
+
+    @Override
+    public Result download(Long id) {
+        MaterialEntity entity = this.findById(id);
+        if (entity == null) {
+            return Result.failure(MsgCode.e3001, "对象不存在, id:" + id);
+        }
+        String code = entity.getCode();
+        if (StringUtils.isAllEmpty(code)) {
+            return Result.failure(MsgCode.e3003, "文件为空, id:" + id);
+        }
+        String srcPath = configConstant.serverBasePath + "material/" + code;
+        String zipName = "material/" + code + ".zip";
+        String zipPath = configConstant.serverBasePath+ zipName;
+        ZipUtil.zip(srcPath, zipPath, true);
+        log.info("压缩文件完成:{}", zipPath);
+
+        Object url =  "/data/" + zipName;
+        log.info("url: {}", url);
+        return Result.success(url);
+    }
+}

+ 42 - 0
gis_web/src/main/java/com/gis/web/controller/MaterialController.java

@@ -0,0 +1,42 @@
+package com.gis.web.controller;
+
+import com.gis.common.util.Result;
+import com.gis.domain.dto.PageDto;
+import com.gis.domain.po.MaterialEntity;
+import com.gis.service.MaterialService;
+import com.gis.service.aop.WebControllerLog;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+
+/**
+ * Created by owen on 2021/5/14 0008 9:54
+ */
+@Api(tags = "史料管理")
+@RestController
+@RequestMapping("manage/material")
+public class MaterialController extends BaseController {
+
+    @Autowired
+    private MaterialService materialService;
+
+
+
+    @ApiOperation("列表")
+    @PostMapping("list")
+    public Result<MaterialEntity> list(@RequestBody PageDto param) {
+        return Result.success(materialService.search(param));
+    }
+
+    @WebControllerLog(description = "史料管理-下载史料", addDb = true)
+    @ApiOperation("下载史料")
+    @GetMapping("download/{id}")
+    public Result<MaterialEntity> download(@PathVariable Long id) {
+        return Result.success(materialService.download(id));
+    }
+
+
+
+}

+ 43 - 0
gis_web/src/main/java/com/gis/web/controller/WebController.java

@@ -1,19 +1,31 @@
 package com.gis.web.controller;
 
+import cn.hutool.core.date.DateUtil;
 import com.gis.common.util.Result;
 import com.gis.domain.dto.GoodsPageDto;
+import com.gis.domain.dto.MaterialDto;
 import com.gis.domain.po.GoodsEntity;
+import com.gis.domain.po.MaterialEntity;
 import com.gis.domain.po.ZoneEntity;
 import com.gis.service.GoodsService;
+import com.gis.service.MaterialService;
 import com.gis.service.ZoneService;
+import com.gis.service.aop.WebControllerLog;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.validation.Valid;
+import java.util.Date;
 
 /**
  * Created by owen on 2021/5/18 0018 14:50
  */
+@Slf4j
 @Api(tags = "展示页")
 @RestController
 @RequestMapping("api/web")
@@ -25,6 +37,9 @@ public class WebController {
     @Autowired
     private GoodsService goodsService;
 
+    @Autowired
+    MaterialService materialService;
+
     @ApiOperation("展区列表")
     @GetMapping("zoneList")
     public Result<ZoneEntity> list() {
@@ -36,4 +51,32 @@ public class WebController {
     public Result<GoodsEntity> list(@RequestBody GoodsPageDto param) {
         return goodsService.search(param);
     }
+
+
+
+    @WebControllerLog(description = "展示页-史料上传", addDb = true)
+    @ApiOperation(value = "史料-上传", notes = "把上传文件都放到code目录里")
+    @PostMapping("material/upload/{code}")
+    public Result materialUpload(MultipartFile file, @PathVariable String code) {
+        return materialService.materialUpload(file, code);
+    }
+
+
+    @ApiOperation(value = "史料-获取上传码")
+    @GetMapping("material/getCode")
+    public Result materialGetCode() {
+        Object code = DateUtil.format(new Date(), "yyyyMMdd_HHmmssSSS");
+        log.info("返回码:{}", code);
+        return Result.success(code);
+    }
+
+    @WebControllerLog(description = "展示页-史料保存", addDb = true)
+    @ApiOperation(value = "史料-保存", notes = "把上传文件都放到code目录里")
+    @PostMapping("material/save")
+    public Result materialSave(@Valid @RequestBody MaterialDto param) {
+        MaterialEntity entity = new MaterialEntity();
+        BeanUtils.copyProperties(param, entity);
+        materialService.save(entity);
+        return Result.success();
+    }
 }