Browse Source

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	4dkankan-center-platform/src/main/java/com/fdkankan/agent/controller/AgentController.java
#	4dkankan-common/pom.xml
#	pom.xml
by su 3 years ago
parent
commit
945948f4e9
22 changed files with 2064 additions and 37 deletions
  1. 87 32
      4dkankan-center-platform/src/main/java/com/fdkankan/agent/controller/AgentAuditController.java
  2. 2 2
      4dkankan-center-platform/src/main/java/com/fdkankan/agent/controller/AgentController.java
  3. 61 0
      4dkankan-center-platform/src/main/java/com/fdkankan/agent/controller/request/RequestAgentAudit.java
  4. 25 0
      4dkankan-center-platform/src/main/java/com/fdkankan/agent/controller/request/RequestNote.java
  5. 17 0
      4dkankan-center-platform/src/main/java/com/fdkankan/agent/controller/request/RequestSearch.java
  6. 3 0
      4dkankan-center-platform/src/main/java/com/fdkankan/agent/service/IAgentAuditService.java
  7. 31 0
      4dkankan-center-platform/src/main/java/com/fdkankan/agent/service/impl/AgentAuditService.java
  8. 74 0
      4dkankan-center-platform/src/main/java/com/fdkankan/goods/controller/CameraVersionController.java
  9. 18 0
      4dkankan-center-platform/src/main/java/com/fdkankan/goods/controller/request/RequestCameraVersion.java
  10. 8 0
      4dkankan-center-platform/src/main/java/com/fdkankan/goods/service/ICameraVersionService.java
  11. 130 0
      4dkankan-center-platform/src/main/java/com/fdkankan/goods/service/impl/CameraVersionService.java
  12. 1 1
      4dkankan-center-platform/src/main/resources/application.yml
  13. 19 1
      4dkankan-common/pom.xml
  14. 7 0
      4dkankan-common/src/main/java/com/fdkankan/common/base/AbstractService.java
  15. 2 0
      4dkankan-common/src/main/java/com/fdkankan/common/base/IServiceOperations.java
  16. 16 0
      4dkankan-common/src/main/java/com/fdkankan/common/base/request/RequestBase.java
  17. 16 0
      4dkankan-common/src/main/java/com/fdkankan/common/response/PageInfo.java
  18. 9 0
      4dkankan-common/src/main/java/com/fdkankan/common/response/ResultData.java
  19. 240 0
      4dkankan-common/src/main/java/com/fdkankan/common/util/FileUtil.java
  20. 1082 0
      4dkankan-common/src/main/java/com/fdkankan/common/util/FileUtils.java
  21. 208 0
      4dkankan-common/src/main/java/com/fdkankan/common/validation/ValidationUtils.java
  22. 8 1
      pom.xml

+ 87 - 32
4dkankan-center-platform/src/main/java/com/fdkankan/agent/controller/AgentAuditController.java

@@ -1,60 +1,115 @@
 package com.fdkankan.agent.controller;
 
 
+import com.fdkankan.agent.controller.request.RequestAgentAudit;
+import com.fdkankan.agent.controller.request.RequestNote;
+import com.fdkankan.agent.controller.request.RequestSearch;
+import com.fdkankan.agent.entity.AgentAudit;
 import com.fdkankan.agent.service.IAgentAuditService;
 import com.fdkankan.common.constant.ConstantRegex;
 import com.fdkankan.common.constant.ErrorCode;
 import com.fdkankan.common.response.ResultData;
+import com.fdkankan.common.validation.ValidationUtils;
+import org.apache.commons.lang.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
-//经销商申请模块
+import java.util.LinkedHashMap;
+import java.util.List;
+
+/**
+ * 经销商申请模块
+ */
 @RestController
 @RequestMapping("/api")
 public class AgentAuditController {
 
-
     @Autowired
     IAgentAuditService agentAuditService;
 
+    private static Logger log = LoggerFactory.getLogger("programLog");
 
     /**
      * 保存申请信息
-     * @param name  经销商名称
-     * @param address   地址
-     * @param country   国家
-     * @param surName   申请人的姓
-     * @param userName  申请人的名字
-     * @param post  申请人职位
-     * @param areaCode  区号
-     * @param phone  手机号
-     * @param email 邮箱地址
-     * @param region  地区
-     * @return
-     * @throws Exception
      */
     @PostMapping("/agentAduit/save")
     public ResultData agentAuditSave(
-            @RequestParam(required = true) String name,
-            @RequestParam(required = true) String address,
-            @RequestParam(required = true) String country,
-            @RequestParam(required = true) String surName,
-            @RequestParam(required = true) String userName,
-            @RequestParam(required = true) String post,
-            @RequestParam(required = true) String areaCode,
-            @RequestParam(required = true) String phone,
-            @RequestParam(required = true) String email,
-            @RequestParam(required = true) String region
-    ) throws Exception {
-
-        if(!email.matches(ConstantRegex.EMAIL_REGEX)){
+            @RequestBody RequestAgentAudit param) {
+        if(param == null || StringUtils.isEmpty(param.getName()) || StringUtils.isEmpty(param.getAddress()) ||
+                StringUtils.isEmpty(param.getCountry()) || StringUtils.isEmpty(param.getRegion()) ||
+                StringUtils.isEmpty(param.getSurName()) || StringUtils.isEmpty(param.getUserName()) ||
+                StringUtils.isEmpty(param.getPost()) || StringUtils.isEmpty(param.getAreaCode()) ||
+                StringUtils.isEmpty(param.getPhone()) || StringUtils.isEmpty(param.getEmail())){
+            return ResultData.error(ErrorCode.FAILURE_CODE_3001);
+        }
+
+        if(!param.getEmail().matches(ConstantRegex.EMAIL_REGEX)){
             return ResultData.error(ErrorCode.FAILURE_CODE_3019);
         }
 
-        return ResultData.ok("");
+        AgentAudit agentAudit = new AgentAudit();
+        BeanUtils.copyProperties(param,agentAudit);
+        agentAudit.setRecStatus("A");
+        agentAudit.setNoteType(1);
+        agentAudit.setState(1);
+        agentAuditService.insert(agentAudit);
+        return ResultData.ok();
+    }
+
+    @GetMapping("/manager/agentAduit/list")
+    public ResultData list(
+            @RequestParam(value="pageNum", defaultValue="1", required = false) Integer pageNum,
+            @RequestParam(value="pageSize", defaultValue="10", required = false) Integer pageSize) {
+
+        LinkedHashMap<String,String> condition = new LinkedHashMap<>();
+        condition.put("rec_status = 'A'","and");
+        List<AgentAudit> agentAuditList = agentAuditService.getList(condition,pageNum, pageSize, "create_time desc");
+        int count = agentAuditService.getCount(condition, null);
+        return ResultData.ok(pageNum,pageSize,count,agentAuditList);
+    }
+
+    @PostMapping("/manager/agentAduit/update/active/{id}/{state}")
+    private ResultData updateActive(
+            @PathVariable("id") Long id, @PathVariable("state") String state) {
+        LinkedHashMap<String,String> condition = new LinkedHashMap<>();
+        condition.put("id ="+id,"and");
+        condition.put("rec_status = 'A'","and");
+        AgentAudit agentAudit = agentAuditService.getOne(condition);
+        int iState = Integer.parseInt(state);
+        if (agentAudit == null || !ValidationUtils.validateState(iState)) {
+            log.info("state: {}", state);
+            return ResultData.error(ErrorCode.FAILURE_CODE_3001);
+        }
+        agentAudit.setState(iState);
+        agentAuditService.update(agentAudit);
+        return ResultData.ok();
+    }
+
+
+    @PostMapping("/manager/agentAduit/update/note")
+    private ResultData updateNote(@RequestBody RequestNote param){
+        LinkedHashMap<String,String> condition = new LinkedHashMap<>();
+        condition.put("id ="+param.getId(),"and");
+        condition.put("rec_status = 'A'","and");
+        AgentAudit agentAudit = agentAuditService.getOne(condition);
+        if (agentAudit == null) {
+            return ResultData.error(ErrorCode.FAILURE_CODE_3001);
+        }
+        if (!ValidationUtils.validateInteger(param.getNoteType())){
+            log.info("NoteType: {}", param.getNoteType());
+            return ResultData.error(ErrorCode.FAILURE_CODE_3001);
+        }
+        agentAudit.setNoteType(param.getNoteType());
+        agentAudit.setNoteContent(param.getNoteContent());
+        agentAuditService.update(agentAudit);
+        return ResultData.ok();
     }
 
+    @PostMapping("/manager/agentAduit/search")
+    private ResultData search(@RequestBody RequestSearch param) {
+        return  agentAuditService.searchLike(param);
+    }
 }

+ 2 - 2
4dkankan-center-platform/src/main/java/com/fdkankan/agent/controller/AgentController.java

@@ -34,7 +34,7 @@ public class AgentController {
      * @return
      */
     @PostMapping(value = "/detail")
-    public ResultData detail(HttpServletRequest request ) throws Exception {
+    public ResultData detail(HttpServletRequest request ) {
         String userName = JWT.decode( request.getHeader("token")).getClaim("userName").asString();
         String agentId = userName.split(":")[1];
         LinkedHashMap<String,String > queryMap = new LinkedHashMap<>();
@@ -50,7 +50,7 @@ public class AgentController {
      * @return
      */
     @PostMapping(value = "/notice")
-    public ResultData notice(HttpServletRequest request) throws Exception {
+    public ResultData notice(HttpServletRequest request ) {
         AgentNoticeVo agentNoticeVo = new AgentNoticeVo();
         LinkedHashMap<String,String> queryMap = new LinkedHashMap<>();
         queryMap.put("rec_status = A" ,"and");

+ 61 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/agent/controller/request/RequestAgentAudit.java

@@ -0,0 +1,61 @@
+package com.fdkankan.agent.controller.request;
+
+import com.fdkankan.common.base.request.RequestBase;
+import lombok.Data;
+
+@Data
+public class RequestAgentAudit extends RequestBase {
+
+    /**
+     * 经销商公司名称
+     */
+    private String name;
+    /**
+     * 国家
+     */
+    private String country;
+    /**
+     * 地区
+     */
+    private String region;
+    /**
+     * 地址
+     */
+    private String address;
+    /**
+     * 类型,1为线下,2为线上
+     */
+    private Integer type;
+    /**
+     * 线下门店地址或线上网站
+     */
+    private String storeAddress;
+    /**
+     * 申请人的姓
+     */
+    private String surName;
+    /**
+     * 状态,0申请中,1审核通过,2审核失败
+     */
+    private int state;
+    /**
+     * 申请人的名字
+     */
+    private String userName;
+    /**
+     * 申请人职位
+     */
+    private String post;
+    /**
+     * 区号
+     */
+    private String areaCode;
+    /**
+     * 手机号
+     */
+    private String phone;
+    /**
+     * 邮箱地址
+     */
+    private String email;
+}

+ 25 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/agent/controller/request/RequestNote.java

@@ -0,0 +1,25 @@
+package com.fdkankan.agent.controller.request;
+
+
+import com.fdkankan.common.base.request.RequestBase;
+import lombok.Data;
+
+/**
+ * 备注信息
+ */
+
+@Data
+public class RequestNote extends RequestBase {
+
+    private Long id;
+
+    /**
+     * 备注等级
+     */
+    private Integer noteType;
+
+    /**
+     * 备注内容
+     */
+    private String noteContent;
+}

+ 17 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/agent/controller/request/RequestSearch.java

@@ -0,0 +1,17 @@
+package com.fdkankan.agent.controller.request;
+
+import com.fdkankan.common.base.request.RequestBase;
+import lombok.Data;
+
+@Data
+public class RequestSearch extends RequestBase {
+
+    private String itemName;
+
+    private String startDate;
+
+    private String endDate;
+
+    private String type;
+
+}

+ 3 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/agent/service/IAgentAuditService.java

@@ -1,9 +1,12 @@
 package com.fdkankan.agent.service;
 
+import com.fdkankan.agent.controller.request.RequestSearch;
 import com.fdkankan.agent.entity.AgentAudit;
 import com.fdkankan.common.base.IServiceOperations;
+import com.fdkankan.common.response.ResultData;
 
 public interface IAgentAuditService extends IServiceOperations<AgentAudit> {
 
+    ResultData searchLike(RequestSearch param);
 }
 

+ 31 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/agent/service/impl/AgentAuditService.java

@@ -1,13 +1,18 @@
 package com.fdkankan.agent.service.impl;
 
+import com.fdkankan.agent.controller.request.RequestSearch;
 import com.fdkankan.agent.entity.AgentAudit;
 import com.fdkankan.agent.mapper.IAgentAuditMapper;
 import com.fdkankan.agent.service.IAgentAuditService;
 import com.fdkankan.common.base.AbstractService;
 import com.fdkankan.common.base.IOperations;
+import com.fdkankan.common.response.ResultData;
+import org.apache.commons.lang.StringUtils;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import java.util.LinkedHashMap;
+import java.util.List;
 
 @Service("AgentAuditService")
 public class AgentAuditService extends AbstractService<AgentAudit> implements IAgentAuditService {
@@ -26,5 +31,31 @@ public class AgentAuditService extends AbstractService<AgentAudit> implements IA
 	public void setTableName(String tableName){
 		this.tableName = tableName;
 	}
+
+	@Override
+	public ResultData searchLike(RequestSearch param) {
+		Integer pageNum = Integer.valueOf(param.getPageNum());
+		Integer pageSize = Integer.valueOf(param.getPageSize());
+		String startDate = param.getStartDate();
+		String endDate = param.getEndDate();
+		String itemName = param.getItemName();
+
+		LinkedHashMap<String,String> condition = new LinkedHashMap<>();
+		condition.put("rec_status ='A'","and");
+		if(StringUtils.isNotBlank(startDate)){
+			condition.put("create_time >= '"+startDate+"'","and");
+		}
+		if(StringUtils.isNotBlank(endDate)){
+			condition.put("create_time <= '"+endDate+"' ","and");
+		}
+		if(StringUtils.isNotBlank(itemName)){
+			condition.put("((audit_name like '%"+itemName+"%' )","and");
+			condition.put("(address like '%"+itemName+"%' )","or");
+			condition.put("(note_content like '%"+itemName+"%' ))","or");
+		}
+		List<AgentAudit> list = this.getList(condition, pageNum,pageSize,"create_time desc");
+		Integer total = this.getCount(condition,null);
+		return ResultData.ok(pageNum,pageSize,total,list);
+	}
 }
 

+ 74 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/goods/controller/CameraVersionController.java

@@ -0,0 +1,74 @@
+package com.fdkankan.goods.controller;
+
+import com.fdkankan.agent.controller.request.RequestSearch;
+import com.fdkankan.common.response.ResultData;
+import com.fdkankan.goods.controller.request.RequestCameraVersion;
+import com.fdkankan.goods.entity.CameraVersion;
+import com.fdkankan.goods.service.ICameraVersionService;
+import org.apache.commons.lang.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.util.LinkedHashMap;
+import java.util.List;
+
+/**
+ * 相机版本管理模块
+ */
+@RequestMapping("/api")
+public class CameraVersionController {
+
+    @Autowired
+    private ICameraVersionService cameraVersionService;
+
+
+    /**
+     * 获取相机版本列表
+     */
+    @GetMapping("/manager/goods/version/list")
+    private ResultData getList(@RequestParam(value="pageNum", defaultValue="1", required = false) Integer pageNum,
+                               @RequestParam(value="pageSize", defaultValue="10", required = false) Integer pageSize,
+                               String type) {
+
+        LinkedHashMap<String,String> condition = new LinkedHashMap<>();
+        if(StringUtils.isBlank(type)){
+            type = "1";
+        }
+        condition.put("res_status = 'A'","and");
+        condition.put("type = "+ type,"and");
+        List<CameraVersion> list = cameraVersionService.getList(condition,pageNum, pageSize, "create_time desc");
+        Integer total = cameraVersionService.getCount(condition,null);
+        return ResultData.ok(pageNum,pageSize,total,list);
+    }
+
+    /**
+     * 更新状态
+     * @param id
+     * @param status   状态
+     * @param type     相机类型,1八目,2双目,不传默认八目 3:转台相机 4:激光
+     * @return
+     */
+    @GetMapping("/manager/goods/version/update/{id}/{status}/{type}")
+    private ResultData updateStatus(@PathVariable("id") Long id, @PathVariable("status") String status, @PathVariable("type") String type) {
+        return cameraVersionService.updateStatus(id, StringUtils.upperCase(status), type);
+    }
+
+
+    @PostMapping("/manager/goods/version/search")
+    private ResultData search(@RequestBody RequestSearch param){
+        return cameraVersionService.searchLike(param);
+    }
+
+
+    @PostMapping(value = "/manager/goods/version/upload", consumes = { "multipart/form-data" })
+    private ResultData upload(@RequestParam("file") MultipartFile file,
+                          @RequestParam("version") String version,
+                          @RequestParam("description") String description,
+                          @RequestParam("minVersion") String minVersion,
+                          String type) {
+
+        return cameraVersionService.upload(file, version,description,minVersion,type);
+    }
+}

+ 18 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/goods/controller/request/RequestCameraVersion.java

@@ -0,0 +1,18 @@
+package com.fdkankan.goods.controller.request;
+
+import lombok.Data;
+
+@Data
+public class RequestCameraVersion {
+
+    private static final long serialVersionUID = 2345798398902100085L;
+
+    private String description; // 描述
+
+    private String version; // 相机版本
+
+    private String minVersion; // 相机版本
+
+    private Integer type;
+
+}

+ 8 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/goods/service/ICameraVersionService.java

@@ -1,10 +1,18 @@
 package com.fdkankan.goods.service;
 
 
+import com.fdkankan.agent.controller.request.RequestSearch;
 import com.fdkankan.common.base.IServiceOperations;
+import com.fdkankan.common.response.ResultData;
 import com.fdkankan.goods.entity.CameraVersion;
+import org.springframework.web.multipart.MultipartFile;
 
 public interface ICameraVersionService extends IServiceOperations<CameraVersion> {
 
+    ResultData updateStatus(Long id, String upperCase, String type);
+
+    ResultData searchLike(RequestSearch param);
+
+    ResultData upload(MultipartFile file, String version, String description, String minVersion, String type)throws Exception;
 }
 

+ 130 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/goods/service/impl/CameraVersionService.java

@@ -1,17 +1,40 @@
 package com.fdkankan.goods.service.impl;
 
+import com.fdkankan.agent.controller.request.RequestSearch;
 import com.fdkankan.common.base.AbstractService;
 import com.fdkankan.common.base.IOperations;
+import com.fdkankan.common.constant.ErrorCode;
+import com.fdkankan.common.response.ResultData;
+import com.fdkankan.common.util.FileUtil;
+import com.fdkankan.common.util.FileUtils;
+import com.fdkankan.common.validation.ValidationUtils;
 import com.fdkankan.goods.entity.CameraVersion;
 import com.fdkankan.goods.mapper.ICameraVersionMapper;
 import com.fdkankan.goods.service.ICameraVersionService;
+import org.apache.commons.lang.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Base64;
+import java.util.Date;
+import java.util.LinkedHashMap;
+import java.util.List;
 
 @Service("CameraVersionService")
 public class CameraVersionService extends AbstractService<CameraVersion> implements ICameraVersionService {
 
+	private static Logger log = LoggerFactory.getLogger("programLog");
+
+	private static String ALIYUN_SSO_PATH = "camera_version/";
+
+	private static String YAMAXUN_S3_PATH = "https://eurs3.4dkankan.com/camera_version/";
+
+	private static String DIR_NAME = "camera_version/";
+
 	public CameraVersionService() {
 		this.setTableName("t_camera_version");
 	}
@@ -26,5 +49,112 @@ public class CameraVersionService extends AbstractService<CameraVersion> impleme
 	public void setTableName(String tableName){
 		this.tableName = tableName;
 	}
+
+	@Override
+	public ResultData updateStatus(Long id, String status, String type) {
+		LinkedHashMap<String,String> condition = new LinkedHashMap<>();
+		condition.put("id= "+id,"and");
+		CameraVersion cameraVersion = this.getOne(condition);
+		if(cameraVersion == null){
+			return ResultData.error(ErrorCode.FAILURE_CODE_3001);
+		}
+		if (!ValidationUtils.validateRecStatus(status)) {
+			return ResultData.error(ErrorCode.FAILURE_CODE_3001);
+		}
+
+		condition = new LinkedHashMap<>();
+		if(StringUtils.isBlank(type)){
+			type = "1";
+		}
+		condition.put("res_status = 'A'","and");
+		condition.put("type = "+ type,"and");
+		List<CameraVersion> list = this.getAllList(condition);
+		for (CameraVersion version : list) {
+			version.setAcStatus("I");
+		}
+		this.update(list);
+
+		cameraVersion.setAcStatus(status);
+		this.update(cameraVersion);
+		return ResultData.ok();
+	}
+
+	@Override
+	public ResultData searchLike(RequestSearch param) {
+		Integer pageNum = Integer.valueOf(param.getPageNum());
+		Integer pageSize = Integer.valueOf(param.getPageSize());
+		String startDate = param.getStartDate();
+		String endDate = param.getEndDate();
+		String itemName = param.getItemName();
+		Integer type = StringUtils.isNotBlank(param.getType()) ? Integer.valueOf(param.getType()) : 1;
+
+		LinkedHashMap<String,String> condition = new LinkedHashMap<>();
+		condition.put("rec_status ='A'","and");
+		condition.put("camera_type ="+type,"and");
+		if(StringUtils.isNotBlank(startDate)){
+			condition.put("create_time >= '"+startDate+"'","and");
+		}
+		if(StringUtils.isNotBlank(endDate)){
+			condition.put("create_time <= '"+endDate+"' ","and");
+		}
+		if(StringUtils.isNotBlank(itemName)){
+			condition.put("((file_name like '%"+itemName+"%' )","and");
+			condition.put("(version like '%"+itemName+"%' )","or");
+			condition.put("(note_content like '%"+itemName+"%' ))","or");
+		}
+		List<CameraVersion> list = this.getList(condition, pageNum,pageSize,"create_time desc");
+		Integer total = this.getCount(condition,null);
+		return ResultData.ok(pageNum,pageSize,total,list);
+	}
+
+
+	/**
+	 * 上传文件到阿里云
+	 */
+	@Override
+	public ResultData upload(MultipartFile file, String version, String description, String minVersion, String StringType) throws Exception{
+		Integer type = StringUtils.isNotBlank(StringType) ? Integer.valueOf(StringType) : 1;
+		log.info("run upload");
+		if (!file.isEmpty()&& file.getSize() <= 0) {
+			return ResultData.error(ErrorCode.FAILURE_CODE_3017);
+		}
+
+		// 文件名全名
+		String fullFileName = file.getOriginalFilename();
+
+		// 将文件转字节-> 字符串
+		String fileContent = Base64.getEncoder().encodeToString(file.getBytes());
+
+		// 获取类路径
+		String resourcePath = FileUtils.getResource();
+		log.info("resourcePath: {}", resourcePath);
+
+		// 创建目录
+		String dirPath = resourcePath + DIR_NAME  ;
+		FileUtils.createDir(dirPath);
+
+		// 拼接唯一文件名
+		String fileName = dateStr() + fullFileName;
+
+		// 文件保存路径
+		String filePath = dirPath + dateStr() + fullFileName;
+
+		// 写文件到本地
+		FileUtils.base64ToFileWriter(fileContent, filePath);
+		log.info("filePath: {}", filePath);
+
+		// 读取本地文件
+		byte[] content = FileUtil.getContent(filePath);
+
+		return null;
+	}
+
+	// 获取时间戳
+	private String dateStr() {
+		SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");
+		String format = df.format(new Date());
+		long timeMillis = System.currentTimeMillis();
+		return format + "_" + timeMillis + "_";
+	}
 }
 

+ 1 - 1
4dkankan-center-platform/src/main/resources/application.yml

@@ -19,7 +19,7 @@ spring:
     nacos:
       discovery:
         port: ${discoveryPort:8848}
-        server-addr: 127.0.0.1
+        server-addr: 192.168.0.47
   application:
     name: platform
   datasource:

+ 19 - 1
4dkankan-common/pom.xml

@@ -14,7 +14,6 @@
     <artifactId>4dkankan-common</artifactId>
 
     <dependencies>
-
         <dependency>
             <groupId>org.mybatis.spring.boot</groupId>
             <artifactId>mybatis-spring-boot-starter</artifactId>
@@ -47,6 +46,25 @@
         </dependency>
 
         <dependency>
+            <groupId>org.apache.ant</groupId>
+            <artifactId>ant</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>joinery</groupId>
+            <artifactId>jave</artifactId>
+            <version>1.0.2.2</version>
+        </dependency>
+        <dependency>
+            <groupId>org.bytedeco</groupId>
+            <artifactId>javacpp</artifactId>
+            <version>1.4.3</version>
+        </dependency>
+        <dependency>
+            <groupId>org.bytedeco</groupId>
+            <artifactId>javacv-platform</artifactId>
+            <version>1.4.3</version>
+        </dependency>
+        <dependency>
             <groupId>org.apache.shiro</groupId>
             <artifactId>shiro-spring</artifactId>
         </dependency>

+ 7 - 0
4dkankan-common/src/main/java/com/fdkankan/common/base/AbstractService.java

@@ -1,6 +1,7 @@
 package com.fdkankan.common.base;
 
 import java.io.Serializable;
+import java.util.ArrayList;
 import java.util.LinkedHashMap;
 import java.util.List;
 
@@ -30,6 +31,12 @@ public abstract class AbstractService<T extends Serializable> implements IServic
 	public int update(List<T> list) {
 		return getMapper().update(list, this.getTableName());
 	}
+	@Override
+	public int update(T entity) {
+		List<T> entityList = new ArrayList<>();
+		entityList.add(entity);
+		return getMapper().update(entityList, this.getTableName());
+	}
 
 	@Override
 	public int updateByBatch(LinkedHashMap<String, String> condition, String field) {

+ 2 - 0
4dkankan-common/src/main/java/com/fdkankan/common/base/IServiceOperations.java

@@ -14,6 +14,8 @@ public interface IServiceOperations<T extends Serializable> extends IOperations<
 
 	int update(List<T> list);
 
+	int update (final T entity);
+
 	int updateByBatch(LinkedHashMap<String, String> condition, String field);
 
 	T getById(final int id);

+ 16 - 0
4dkankan-common/src/main/java/com/fdkankan/common/base/request/RequestBase.java

@@ -0,0 +1,16 @@
+package com.fdkankan.common.base.request;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class RequestBase implements Serializable {
+
+    private int pageNum;
+
+    private int pageSize;
+
+    private int start;
+
+}

+ 16 - 0
4dkankan-common/src/main/java/com/fdkankan/common/response/PageInfo.java

@@ -0,0 +1,16 @@
+package com.fdkankan.common.response;
+
+import lombok.Data;
+
+@Data
+public class PageInfo {
+
+    private int page;
+
+    private int pageSize;
+
+    private int total;
+
+    private Object list;
+
+}

+ 9 - 0
4dkankan-common/src/main/java/com/fdkankan/common/response/ResultData.java

@@ -43,6 +43,15 @@ public class ResultData implements Serializable {
         return base(200, msg, data,true);
     }
 
+    public static ResultData ok(int page,int pageSize,int total,Object data){
+        PageInfo pageInfo = new PageInfo();
+        pageInfo.setPage(page);
+        pageInfo.setPageSize(pageSize);
+        pageInfo.setTotal(total);
+        pageInfo.setList(data);
+        return  ok(pageInfo);
+    }
+
     public static ResultData error(int code, String msg) {
         return error(code, msg, ""); }
     public static ResultData error(int code, String msg, Object data) {

+ 240 - 0
4dkankan-common/src/main/java/com/fdkankan/common/util/FileUtil.java

@@ -0,0 +1,240 @@
+package com.fdkankan.common.util;
+
+import java.io.*;
+import java.nio.ByteBuffer;
+import java.nio.MappedByteBuffer;
+import java.nio.channels.FileChannel;
+import java.nio.channels.FileChannel.MapMode;
+
+/**
+ * @author MeepoGuan
+ *
+ * <p>Description: file_util</p>
+ *
+ * 2017年4月30日
+ *
+ */
+public class FileUtil {
+
+/*	public static void main(String[] args) {
+		String dirName = "d:/FH/topic/";// 创建目录
+		FileUtil.createDir(dirName);
+	}*/
+
+	/**
+	 * 创建目录
+	 * 
+	 * @param destDirName
+	 *            目标目录名
+	 * @return 目录创建成功返回true,否则返回false
+	 */
+	public static boolean createDir(String destDirName) {
+		File dir = new File(destDirName);
+		if (dir.exists()) {
+			return false;
+		}
+		if (!destDirName.endsWith(File.separator)) {
+			destDirName = destDirName + File.separator;
+		}
+		// 创建单个目录
+		if (dir.mkdirs()) {
+			return true;
+		} else {
+			return false;
+		}
+	}
+
+	/**
+	 * 删除文件
+	 * 
+	 * @param filePathAndName
+	 *            String 文件路径及名称 如c:/fqf.txt
+	 * @return boolean
+	 */
+	public static void delFile(String filePathAndName) {
+		try {
+			String filePath = filePathAndName;
+			filePath = filePath.toString();
+			File myDelFile = new File(filePath);
+			myDelFile.delete();
+
+		} catch (Exception e) {
+			System.out.println("删除文件操作出错");
+			e.printStackTrace();
+
+		}
+
+	}
+
+	/**
+	 * 读取到字节数组0
+	 * 
+	 * @param filePath //路径
+	 * @throws IOException
+	 */
+	public static byte[] getContent(String filePath) throws IOException {
+		File file = new File(filePath);
+		long fileSize = file.length();
+		if (fileSize > Integer.MAX_VALUE) {
+			System.out.println("file too big...");
+			return null;
+		}
+		FileInputStream fi = new FileInputStream(file);
+		byte[] buffer = new byte[(int) fileSize];
+		int offset = 0;
+		int numRead = 0;
+		while (offset < buffer.length
+				&& (numRead = fi.read(buffer, offset, buffer.length - offset)) >= 0) {
+			offset += numRead;
+		}
+		// 确保所有数据均被读取
+		if (offset != buffer.length) {
+			throw new IOException("Could not completely read file "
+					+ file.getName());
+		}
+		fi.close();
+		return buffer;
+	}
+
+	/**
+	 * 读取到字节数组1
+	 * 
+	 * @param filePath
+	 * @return
+	 * @throws IOException
+	 */
+	public static byte[] toByteArray(String filePath) throws IOException {
+
+		File f = new File(filePath);
+		if (!f.exists()) {
+			throw new FileNotFoundException(filePath);
+		}
+		ByteArrayOutputStream bos = new ByteArrayOutputStream((int) f.length());
+		BufferedInputStream in = null;
+		try {
+			in = new BufferedInputStream(new FileInputStream(f));
+			int buf_size = 1024;
+			byte[] buffer = new byte[buf_size];
+			int len = 0;
+			while (-1 != (len = in.read(buffer, 0, buf_size))) {
+				bos.write(buffer, 0, len);
+			}
+			return bos.toByteArray();
+		} catch (IOException e) {
+			e.printStackTrace();
+			throw e;
+		} finally {
+			try {
+				in.close();
+			} catch (IOException e) {
+				e.printStackTrace();
+			}
+			bos.close();
+		}
+	}
+
+	/**
+	 * 读取到字节数组2
+	 * 
+	 * @param filePath
+	 * @return
+	 * @throws IOException
+	 */
+	public static byte[] toByteArray2(String filePath) throws IOException {
+
+		File f = new File(filePath);
+		if (!f.exists()) {
+			throw new FileNotFoundException(filePath);
+		}
+
+		FileChannel channel = null;
+		FileInputStream fs = null;
+		try {
+			fs = new FileInputStream(f);
+			channel = fs.getChannel();
+			ByteBuffer byteBuffer = ByteBuffer.allocate((int) channel.size());
+			while ((channel.read(byteBuffer)) > 0) {
+				// do nothing
+				// System.out.println("reading");
+			}
+			return byteBuffer.array();
+		} catch (IOException e) {
+			e.printStackTrace();
+			throw e;
+		} finally {
+			try {
+				channel.close();
+			} catch (IOException e) {
+				e.printStackTrace();
+			}
+			try {
+				fs.close();
+			} catch (IOException e) {
+				e.printStackTrace();
+			}
+		}
+	}
+
+	/**
+	 * Mapped File way MappedByteBuffer 可以在处理大文件时,提升性能
+	 * 
+	 * @param filePath
+	 * @return
+	 * @throws IOException
+	 */
+	public static byte[] toByteArray3(String filePath) throws IOException {
+
+		FileChannel fc = null;
+		RandomAccessFile rf = null;
+		try {
+			rf = new RandomAccessFile(filePath, "r");
+			fc = rf.getChannel();
+			MappedByteBuffer byteBuffer = fc.map(MapMode.READ_ONLY, 0,
+					fc.size()).load();
+			//System.out.println(byteBuffer.isLoaded());
+			byte[] result = new byte[(int) fc.size()];
+			if (byteBuffer.remaining() > 0) {
+				// System.out.println("remain");
+				byteBuffer.get(result, 0, byteBuffer.remaining());
+			}
+			return result;
+		} catch (IOException e) {
+			e.printStackTrace();
+			throw e;
+		} finally {
+			try {
+				rf.close();
+				fc.close();
+			} catch (IOException e) {
+				e.printStackTrace();
+			}
+		}
+	}
+
+    public static File[] sort(File[] s) {
+        //中间值
+        File temp = null;
+        //外循环:我认为最小的数,从0~长度-1
+        for (int j = 0; j < s.length - 1; j++) {
+            //最小值:假设第一个数就是最小的
+            String min = s[j].getName();
+            //记录最小数的下标的
+            int minIndex = j;
+            //内循环:拿我认为的最小的数和后面的数一个个进行比较
+            for (int k = j + 1; k < s.length; k++) {
+                //找到最小值
+                if (Integer.parseInt(min.substring(0, min.indexOf("."))) > Integer.parseInt(s[k].getName().substring(0, s[k].getName().indexOf(".")))) {
+                    //修改最小
+                    min = s[k].getName();
+                    minIndex = k;
+                }
+            }
+            //当退出内层循环就找到这次的最小值
+            //交换位置
+            temp = s[j];
+            s[j] = s[minIndex];
+            s[minIndex] = temp;
+        }
+        return s;
+    }
+}

File diff suppressed because it is too large
+ 1082 - 0
4dkankan-common/src/main/java/com/fdkankan/common/util/FileUtils.java


+ 208 - 0
4dkankan-common/src/main/java/com/fdkankan/common/validation/ValidationUtils.java

@@ -0,0 +1,208 @@
+package com.fdkankan.common.validation;
+
+import org.springframework.util.StringUtils;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+
+public class ValidationUtils {
+
+    /** Email */
+    public static final String EMAIL_PATTERN = "^([a-z0-9A-Z]+[-|_|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z0-9]{2,40}$" ;
+
+    /** Age 1-120  */
+    public static final String AGE_PATTERN="^(?:[1-9][0-9]?|1[01][0-9]|120)$";
+
+    /** URL、http、www、ftp */
+    public static final String URL_PATTERN = "http(s)?://([\\w-]+\\.)+[\\w-]+(/[\\w- ./?%&=]*)?" ;
+
+    /** No. */
+    public static final String INTEGER_PATTERN = "^([+-]?)\\d*\\.?\\d+$" ;
+
+    /** String. */
+    public static final String STRING_PATTERN = "^[\\u4E00-\\u9FFF\\sA-za-z]+$";
+//    public static final String STRING_PATTERN = "^[\\u4E00-\\u9FFF\\sA-za-z\\d*]+$";
+
+    /** Chinese. */
+    public static final String CHINESE_NAME = "^[\\u4E00-\\u9FFF\\W]+$";
+
+    /** PhoenNo. */
+    public static final String PHONE_NO = "^[0-9 ]{1,20}$";
+
+    /** PhoneCountry. */
+    public static final String PHONE_COUNTRY = "^[0-9\\ \\+\\-\\(\\)]{1,22}$";
+
+    /** HkID. */
+    public static final String HK_ID = "[a-zA-Z]{1}[0-9a-zA-Z]{6}\\([0-9]{1}\\)";
+
+    /** Only String and space */
+    public static final String ONLY_STRING_SPACE="^[A-Za-z\\s\\u4E00-\\u9FFF\\W]+$";
+
+
+
+    /** RecStatus */
+    public static boolean validateRecStatus(String str){
+        if(StringUtils.isEmpty(str)){
+            return Boolean.FALSE ;
+        }
+        if ("A".equals(str) || "I".equals(str)){
+            return Boolean.TRUE;
+        }
+        return Boolean.FALSE;
+    }
+
+
+
+    /**
+     * plan、marital
+     */
+    public static boolean validateInteger(int i){
+        if(i == 1 || i == 2 || i == 3 || i == 4 || i == 5){
+            return Boolean.TRUE ;
+        }
+        return Boolean.FALSE;
+    }
+
+    public static boolean validateString(String i){
+        if("1".equals(i) || "2".equals(i)){
+            return Boolean.TRUE ;
+        }
+        return Boolean.FALSE;
+    }
+
+
+
+
+    /**  Email */
+    public static boolean validateEamil(final String email){
+        if(StringUtils.isEmpty(email)){
+            return Boolean.FALSE ;
+        }
+        return email.matches(EMAIL_PATTERN) ;
+    }
+
+
+    /**  URL */
+    public static boolean validateUrl(final String url){
+        if(StringUtils.isEmpty(url)){
+            return Boolean.FALSE ;
+        }
+        return url.matches(URL_PATTERN) ;
+    }
+
+    /**
+     * Date
+     * str to Date check
+     */
+    public static boolean validateDate(String date){
+        if(StringUtils.isEmpty(date)){
+            return Boolean.FALSE ;
+        }
+        try {
+            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
+            dateFormat.parse(date);
+        }   catch (ParseException e) {
+            return Boolean.FALSE;
+        }
+        return Boolean.TRUE;
+    }
+
+    /**
+     * Date
+     * date check
+     */
+    public static boolean validateDate(Date date){
+        try {
+            SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
+            formatter.format(date);
+            if(date.after(new Date())){
+                return Boolean.FALSE;
+            }
+        }   catch (Exception e) {
+            return Boolean.FALSE;
+        }
+        return Boolean.TRUE;
+    }
+
+
+
+
+    /**  Message */
+    public static boolean validateMsg(String name, int start , int end){
+        if(StringUtils.isEmpty(name)){
+            return Boolean.FALSE ;
+        }
+        if (name.length() >= start && name.length() <= end){
+            return Boolean.TRUE ;
+        }
+        return Boolean.FALSE;
+    }
+
+
+    /**  PhoenNo */
+    public static boolean validatePhoenNo(String str){
+        if(StringUtils.isEmpty(str)){
+            return Boolean.FALSE ;
+        }
+        return str.matches(PHONE_NO) ;
+    }
+
+
+    /**  PhoneCountry */
+    public static boolean validatePhoneCountry(String str){
+        if(StringUtils.isEmpty(str)){
+            return Boolean.FALSE ;
+        }
+        return str.matches(PHONE_COUNTRY) ;
+    }
+
+
+
+
+
+    /**  check Float */
+    public static boolean validateFloat(String str){
+        if(StringUtils.isEmpty(str)){
+            return Boolean.FALSE ;
+        }
+        String key = "[+]?[0-9]*\\.?[0-9]{2}+";
+        return str.matches(key) ;
+    }
+
+
+
+    /**  compareDate */
+    public static boolean compareDate(String str){
+        if(StringUtils.isEmpty(str)){
+            return Boolean.FALSE ;
+        }
+        try {
+            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
+            Date date = dateFormat.parse(str);
+            Calendar calendar = Calendar.getInstance();
+            calendar.setTime(new Date());
+            calendar.add(Calendar.DAY_OF_MONTH, -15);
+            Date nowDate = dateFormat.parse(dateFormat.format(calendar.getTime()));
+            if (date.before(nowDate)){
+                return Boolean.TRUE;
+            } else {
+                return Boolean.FALSE;
+            }
+        }   catch (ParseException e) {
+            return Boolean.FALSE;
+        }
+    }
+
+
+
+
+    public static boolean validateState(int i){
+        if(i == 0 || i == 1 ){
+            return Boolean.TRUE ;
+        }
+        return Boolean.FALSE;
+    }
+
+}

+ 8 - 1
pom.xml

@@ -28,12 +28,13 @@
         <hutool-version>5.7.17</hutool-version>
         <spring.cloud-version>Hoxton.SR8</spring.cloud-version>
         <fdkankan.common-version>2.0.0</fdkankan.common-version>
-        <fastjson-version>1.2.58</fastjson-version>
+        <fastjson-version>1.2.79</fastjson-version>
         <servlet-api-version>2.4</servlet-api-version>
         <spring.boot-mybatis-version>1.3.2</spring.boot-mybatis-version>
         <druid-version>1.1.17</druid-version>
         <spring.plugin.metadata-version>1.2.0.RELEASE</spring.plugin.metadata-version>
         <jwt-version>3.10.3</jwt-version>
+        <ant-version>1.8.2</ant-version>
         <shiro.version>1.7.1</shiro.version>
         <version>0.6.0</version>
         <jjwt.version>0.6.0</jjwt.version>
@@ -107,6 +108,12 @@
                 <version>${jwt-version}</version>
             </dependency>
 
+            <dependency>
+                <groupId>org.apache.ant</groupId>
+                <artifactId>ant</artifactId>
+                <version>${ant-version}</version>
+            </dependency>
+
 <!--            <dependency>-->
 <!--                <groupId>org.apache.shiro</groupId>-->
 <!--                <artifactId>shiro-core</artifactId>-->