commit 9f8c374ac283bd8ad2d28b68272c75c60bdd2fbe
Author: zhangjian <178459446@qq.com>
Date: Tue May 9 17:53:58 2023 +0800
推荐系统初始化
diff --git a/api/.gitignore b/api/.gitignore
new file mode 100644
index 0000000..8f9d462
--- /dev/null
+++ b/api/.gitignore
@@ -0,0 +1,13 @@
+/.factorypath
+/.project
+/.apt_generated
+/.settings
+/target
+/.classpath
+@logs_path@
+/logs
+.idea
+*.iml
+!/src/main/resources/config/spring-redisson.yaml
+!/src/main/resources/application.yml
+/doc
diff --git a/api/Dockerfile b/api/Dockerfile
new file mode 100644
index 0000000..f042786
--- /dev/null
+++ b/api/Dockerfile
@@ -0,0 +1,11 @@
+FROM docker.io/openjdk:8u151-slim
+
+MAINTAINER saber "saber.zhicheng@foxmail.com"
+
+EXPOSE 10010
+
+RUN mkdir -p /opt/app/java
+COPY target/application.jar /opt/app/java/application.jar
+RUN mkdir -p /etc/java
+COPY target/classes/config.properties /etc/java/application.conf
+CMD ["java", "-XX:+UseParNewGC", "-XX:+CMSParallelRemarkEnabled", "-XX:ParallelGCThreads=10", "-XX:+CMSScavengeBeforeRemark", "-XX:ParallelCMSThreads=10", "-XX:+CMSPermGenSweepingEnabled", "-XX:+CMSClassUnloadingEnabled", "-Xmx4096m", "-Xms512m", "-XX:PermSize=512m", "-XX:MaxPermSize=4096m", "-Dspring.application.name=syria-api", "-DCONFIG_FILE=file:/etc/java/application.conf", "-Dfile.encoding=UTF8", "-Duser.timezone=GMT+08", "-jar", "/opt/app/java/application.jar"]
diff --git a/api/apidoc.json b/api/apidoc.json
new file mode 100644
index 0000000..5c101f7
--- /dev/null
+++ b/api/apidoc.json
@@ -0,0 +1,15 @@
+{
+ "name": "SpringBootAPIs",
+ "version": "1.0.0",
+ "description": "接口文档",
+ "title": "SpringBootAPIs",
+ "url": "http://1.116.164.215/api",
+ "header": {
+ "title": "文档说明",
+ "filename": "header.md"
+ },
+ "footer": {
+ "title": "文档结尾",
+ "filename": "footer.md"
+ }
+}
diff --git a/api/footer.md b/api/footer.md
new file mode 100644
index 0000000..d67d8da
--- /dev/null
+++ b/api/footer.md
@@ -0,0 +1,2 @@
+### 感谢查阅
+以上文档仅供参考,如有疑问或实际接口与文档不符请联系相关负责人。
diff --git a/api/header.md b/api/header.md
new file mode 100644
index 0000000..2f49c28
--- /dev/null
+++ b/api/header.md
@@ -0,0 +1 @@
+本文档仅供内部查阅,谢绝公开,感谢大家配合。
diff --git a/api/init_doc.bat b/api/init_doc.bat
new file mode 100644
index 0000000..c377b4f
--- /dev/null
+++ b/api/init_doc.bat
@@ -0,0 +1,4 @@
+@echo off
+apidoc.cmd -i src/ -o doc/
+pause
+
diff --git a/api/package-lock.json b/api/package-lock.json
new file mode 100644
index 0000000..48e341a
--- /dev/null
+++ b/api/package-lock.json
@@ -0,0 +1,3 @@
+{
+ "lockfileVersion": 1
+}
diff --git a/api/pom.xml b/api/pom.xml
new file mode 100644
index 0000000..3702126
--- /dev/null
+++ b/api/pom.xml
@@ -0,0 +1,444 @@
+
+ 4.0.0
+
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 2.3.0.RELEASE
+
+
+
+ com.wx
+ recom-gorse-api
+ 0.0.1-SNAPSHOT
+ application
+ 后端API
+
+
+ UTF-8
+ UTF-8
+ 1.8
+ 1.2.73
+ 1.1.6
+ 3.1.2
+ 5.8.4
+ 3.0.0
+ 0.10.7
+ 3.2.1
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter
+
+
+ org.apache.logging.log4j
+ log4j-api
+
+
+ org.apache.logging.log4j
+ log4j-to-slf4j
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+ org.apache.logging.log4j
+ log4j-api
+
+
+ org.apache.logging.log4j
+ log4j-to-slf4j
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-validation
+
+
+
+ org.springframework.boot
+ spring-boot-devtools
+ runtime
+ true
+
+
+
+ org.springframework.boot
+ spring-boot-configuration-processor
+ true
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-aop
+
+
+
+ org.projectlombok
+ lombok
+ true
+
+
+
+ mysql
+ mysql-connector-java
+
+
+
+ com.alibaba
+ fastjson
+ ${fastjson.version}
+
+
+
+ com.alibaba
+ druid
+ ${druid.version}
+
+
+
+ com.baomidou
+ mybatis-plus-boot-starter
+ ${mybatis.plus.version}
+
+
+
+ cn.hutool
+ hutool-all
+ ${hutool.version}
+
+
+
+ org.apache.commons
+ commons-lang3
+
+
+
+ commons-lang
+ commons-lang
+ 2.6
+
+
+
+ com.google.guava
+ guava
+ 28.0-jre
+
+
+
+ junit
+ junit
+ test
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+ org.junit.vintage
+ junit-vintage-engine
+
+
+ org.apache.logging.log4j
+ log4j-api
+
+
+ org.apache.logging.log4j
+ log4j-to-slf4j
+
+
+
+
+
+
+ com.baomidou
+ mybatis-plus-generator
+ 3.2.0
+
+
+ org.apache.velocity
+ velocity-engine-core
+ 2.1
+
+
+ org.bouncycastle
+ bcprov-jdk16
+ 1.46
+
+
+
+
+ io.jsonwebtoken
+ jjwt-api
+ ${jwt.version}
+
+
+ io.jsonwebtoken
+ jjwt-impl
+ ${jwt.version}
+
+
+ io.jsonwebtoken
+ jjwt-jackson
+ ${jwt.version}
+
+
+
+
+
+ org.apache.poi
+ poi-scratchpad
+ 5.0.0
+
+
+
+ org.apache.poi
+ poi
+ 5.0.0
+
+
+ org.apache.poi
+ poi-ooxml
+ 5.0.0
+
+
+ org.apache.xmlbeans
+ xmlbeans
+ 5.0.0
+
+
+ org.apache.poi
+ poi-ooxml-schemas
+ 4.1.2
+
+
+
+ net.sourceforge.javacsv
+ javacsv
+ 2.0
+
+
+
+ com.baomidou
+ kaptcha-spring-boot-starter
+ 1.0.0
+
+
+
+
+ com.tencent.cloud
+ cos-sts-java
+ 3.0.6
+
+
+
+ com.qcloud
+ cos_api
+ 5.6.19
+
+
+
+ com.google.zxing
+ core
+ 3.4.0
+
+
+
+ com.google.zxing
+ javase
+ 3.4.0
+
+
+
+ com.tencentcloudapi
+ tencentcloud-sdk-java
+ 3.1.37
+
+
+
+ com.alibaba
+ easyexcel
+ 2.1.6
+
+
+
+
+ com.carrotsearch
+ hppc
+ 0.8.2
+
+
+
+ com.vesoft
+ client
+ 3.0.0
+
+
+
+
+
+ recom-gorse
+
+
+
+ src/main/resources
+ true
+
+ static/css/**
+ static/data/**
+ static/docs/**
+ static/fonts/**
+ static/img/**
+ static/plugins/**
+ static/view/**
+
+
+
+
+
+
+ maven-jar-plugin
+
+
+ _templates/**
+
+
+
+
+ maven-resources-plugin
+
+
+ @
+
+ false
+
+
+
+
+ copy-application-yml
+ deploy
+
+ copy-resources
+
+
+ ${basedir}/target
+
+
+ src/main/resources
+
+ config.properties
+
+
+
+
+
+
+ copy-zips
+ process-sources
+
+ copy-resources
+
+
+ ${basedir}/target/classes
+
+
+
+
+
+
+
+
+ maven-compiler-plugin
+
+ ${java.version}
+ ${java.version}
+ UTF-8
+ false
+ false
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+ true
+
+
+
+
+ repackage
+
+
+ com.wx.application.Application
+
+
+
+
+
+
+
+
+
+ dev
+
+ jdbc:mysql://43.139.83.67:13306/dn_nebula
+ root
+ AJuSP7F7VTRvm7rk
+ 4026
+ ./logs/
+ true
+ D:/nebulagraph/
+ D:/myReadCSV/southeastuniversity/jszb/
+ true
+ 43.139.83.67
+ 9669
+ root
+ 123456
+
+
+ true
+
+
+
+
+
diff --git a/api/scripts/build_dev.sh b/api/scripts/build_dev.sh
new file mode 100644
index 0000000..7ab0b12
--- /dev/null
+++ b/api/scripts/build_dev.sh
@@ -0,0 +1,47 @@
+#!/bin/bash
+
+set -e
+
+function parentDir()
+{
+ local this_dir=`pwd`
+ local child_dir="$1"
+ dirname "$child_dir"
+ cd $this_dir
+}
+
+CURRENT_PATH=$(cd `dirname $0`; pwd)
+
+DOCKER_IMAGE_NAME='syria/java-api:latest'
+
+DOCKER_CONTAINER_NAME='syria-java-api'
+
+DOCKER_CONTAINER_PORT=40010
+
+workSpace=`parentDir "$CURRENT_PATH"`
+
+echo '更新代码'
+git pull
+
+echo '工作空间'$workSpace
+cd $workSpace
+
+echo '开始打包'
+mvn clean install -Dmaven.test.skip=true -Pdev
+
+echo '开始构建docker镜像'
+docker build -t $DOCKER_IMAGE_NAME .
+
+count=`docker ps -a|grep $DOCKER_CONTAINER_NAME|wc -l`
+if [ $count != 0 ];then
+ echo "准备移除容器 $DOCKER_CONTAINER_NAME ..."
+ docker rm -f $DOCKER_CONTAINER_NAME
+else
+ echo "准备启动容器 $DOCKER_CONTAINER_NAME ..."
+fi
+
+docker run -d --restart always --net=host --add-host redis:127.0.0.1 --name $DOCKER_CONTAINER_NAME -v /var/log:/var/log -v /data/medical-follow:/data -v /etc/syria.conf:/etc/java/application.conf -it $DOCKER_IMAGE_NAME
+
+docker images|grep -v REPOSITORY|grep none|awk '{print $3}'|xargs docker rmi
+
+exit 0
diff --git a/api/src/main/java/com/wx/application/Application.java b/api/src/main/java/com/wx/application/Application.java
new file mode 100644
index 0000000..6f41995
--- /dev/null
+++ b/api/src/main/java/com/wx/application/Application.java
@@ -0,0 +1,72 @@
+package com.wx.application;
+
+import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
+import org.springframework.boot.web.servlet.ServletComponentScan;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.PropertySource;
+import org.springframework.http.converter.HttpMessageConverter;
+import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
+import org.springframework.scheduling.annotation.EnableAsync;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.web.cors.CorsConfiguration;
+import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
+import org.springframework.web.filter.CorsFilter;
+
+/**
+ * https://nebula-graph.com.cn/
+ * es 检查索引是否存在https://blog.csdn.net/qq_29631809/article/details/72172017
+ * es 创建索引https://blog.csdn.net/weixin_41507324/article/details/110862169
+ */
+@SpringBootApplication
+@MapperScan(basePackages = {"com.wx.application.*.mapper*"})
+@ServletComponentScan(basePackages = {"com.wx.application.filter"})
+@EnableScheduling
+@EnableAsync
+@PropertySource("${CONFIG_FILE:classpath:config.properties}")
+public class Application {
+
+ public static void main(String[] args) {
+ SpringApplication.run(Application.class, args);
+ }
+
+ @Bean
+ public HttpMessageConverters fastJsonHttpMessageConverters() {
+ MappingJackson2HttpMessageConverter jackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();
+ HttpMessageConverter> converter = jackson2HttpMessageConverter;
+ return new HttpMessageConverters(converter);
+ }
+
+ /**
+ * 分页插件
+ */
+ @Bean
+ public PaginationInterceptor paginationInterceptor() {
+ return new PaginationInterceptor();
+ }
+
+ @Bean
+ public CorsFilter corsFilter() {
+ final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
+ final CorsConfiguration config = new CorsConfiguration();
+ config.setAllowCredentials(true); // 允许cookies跨域
+ config.addAllowedOrigin("*");// #允许向该服务器提交请求的URI,*表示全部允许,在SpringMVC中,如果设成*,会自动转成当前请求头中的Origin
+ config.addAllowedHeader("*");// #允许访问的头信息,*表示全部
+ config.addExposedHeader("Authorization");// #允许访问的头信息,*表示全部
+ config.setMaxAge(18000L);// 预检请求的缓存时间(秒),即在这个时间段里,对于相同的跨域请求不会再预检了
+ config.addAllowedMethod("OPTIONS");// 允许提交请求的方法,*表示全部允许
+ config.addAllowedMethod("HEAD");
+ config.addAllowedMethod("GET");// 允许Get的请求方法
+ config.addAllowedMethod("PUT");
+ config.addAllowedMethod("POST");
+ config.addAllowedMethod("DELETE");
+ config.addAllowedMethod("PATCH");
+ source.registerCorsConfiguration("/**", config);
+
+ return new CorsFilter(source);
+ }
+
+}
diff --git a/api/src/main/java/com/wx/application/adapter/controller/LoginController.java b/api/src/main/java/com/wx/application/adapter/controller/LoginController.java
new file mode 100644
index 0000000..fb44872
--- /dev/null
+++ b/api/src/main/java/com/wx/application/adapter/controller/LoginController.java
@@ -0,0 +1,180 @@
+package com.wx.application.adapter.controller;
+
+import java.security.AlgorithmParameters;
+import java.security.Security;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.crypto.Cipher;
+import javax.crypto.spec.IvParameterSpec;
+import javax.crypto.spec.SecretKeySpec;
+
+import org.bouncycastle.jce.provider.BouncyCastleProvider;
+//import org.redisson.api.RedissonClient;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.kaptcha.Kaptcha;
+import com.google.common.collect.ImmutableMap;
+import com.wx.application.adapter.dto.qo.RiskUserQ;
+import com.wx.application.base.BaseController;
+import com.wx.application.base.ErrorCodeEnum;
+import com.wx.application.base.ResponseData;
+import com.wx.application.constant.CONSTANT;
+import com.wx.application.core.entity.RiskUser;
+import com.wx.application.core.service.RiskUserService;
+import com.wx.application.util.JwtUtils;
+import com.wx.application.util.MD5Util;
+
+import cn.hutool.core.codec.Base64;
+import lombok.extern.slf4j.Slf4j;
+
+@Slf4j
+@RequestMapping("/login")
+@RestController("loginController")
+public class LoginController extends BaseController {
+
+ @Autowired
+ RiskUserService riskUserService;
+
+ /*@Autowired
+ RedissonClient redissonClient;*/
+
+ @Autowired
+ private Kaptcha kaptcha;
+
+ /**
+ * @api {post} /login/captcha 获取验证码
+ * @apiName 获取验证码
+ * @apiGroup Login
+ * @apiParam {String} name 角色名称
+ * @apiParam {String} description 角色描述
+ * @apiParam {Boolean} isAssistant 是否为医生助理
+ * @apiSuccessExample Success-Response:
+ * HTTP/1.1 200 OK
+ * {
+ * }
+ * @apiDescription 向后端申请一个验证码
+ * 返回验证码的图片流,并且存入对应cookie_id
+ * 登录时传入对应cookie_id,用来验证对应错误码
+ * ---------------------------------
+ * @author : zj
+ * @since : Create in 2021-05-08
+ */
+ @RequestMapping("captcha")
+ public void captcha() {
+ kaptcha.render();
+ }
+
+
+ /**
+ * 登录
+ */
+ @PostMapping(value = "/user")
+ public ResponseData login(@RequestBody RiskUserQ loginQo) throws Exception {
+
+// if(StringUtils.isBlank(loginQo.getCode())) {
+// Map data = new HashMap<>();
+// data.put("msg", "验证码不能为空");
+// return error(ErrorCodeEnum.USER_NOT_EXIST,data);
+// }
+//
+// try {
+// kaptcha.validate(loginQo.getCode());
+// } catch (Exception e) {
+// Map data = new HashMap<>();
+// data.put("msg", "验证码错误");
+// return error(ErrorCodeEnum.USER_NOT_EXIST,data);
+// }
+
+ /*if(StringUtils.isBlank(loginQo.getCode())) {
+ Map data = new HashMap<>();
+ data.put("msg", "验证码不能为空");
+ return error(ErrorCodeEnum.USER_NOT_EXIST,data);
+ }
+
+ try {
+ kaptcha.validate(loginQo.getCode());
+ } catch (Exception e) {
+ Map data = new HashMap<>();
+ data.put("msg", "验证码错误");
+ return error(ErrorCodeEnum.USER_NOT_EXIST,data);
+ }*/
+
+ /**
+ * 将密码改成md5加密查询
+ */
+ Map mQ = new HashMap<>();
+ mQ.put("EQS_username", loginQo.getUsername());
+ mQ.put("EQS_password", MD5Util.MD5(loginQo.getPassword()));
+ mQ.put("EQS_type", loginQo.getType());
+
+ RiskUser riskUser = riskUserService.queryUnique(mQ);
+
+ if(riskUser != null) {
+ String token = JwtUtils.generateJwtToken(riskUser.getId(), CONSTANT.LOGIN_TYPE_ADMIN, riskUser);
+
+ RiskUser _riskUser = new RiskUser();
+ _riskUser.setRealname(riskUser.getRealname());
+ _riskUser.setUsername(riskUser.getUsername());
+
+ return success(ImmutableMap.builder()
+ .put("Authorization",token)
+ .put("user", _riskUser)
+ .build());
+ }
+ Map data = new HashMap<>();
+ data.put("msg", "用户名密码错误");
+ return error(ErrorCodeEnum.USER_NOT_EXIST,data);
+ }
+
+ /**
+ * 解密用户敏感数据获取用户信息
+ *
+ * @param sessionKey 数据进行加密签名的密钥
+ * @param encryptedData 包括敏感数据在内的完整用户信息的加密数据
+ * @param iv 加密算法的初始向量
+ * @return
+ */
+ public static JSONObject getUserInfo(String encryptedData, String sessionKey, String iv) {
+ // 被加密的数据
+ byte[] dataByte = Base64.decode(encryptedData);
+ // 加密秘钥
+ byte[] keyByte = Base64.decode(sessionKey);
+ // 偏移量
+ byte[] ivByte = Base64.decode(iv);
+ try {
+ // 如果密钥不足16位,那么就补足. 这个if 中的内容很重要
+ int base = 16;
+ if (keyByte.length % base != 0) {
+ int groups = keyByte.length / base + (keyByte.length % base != 0 ? 1 : 0);
+ byte[] temp = new byte[groups * base];
+ Arrays.fill(temp, (byte) 0);
+ System.arraycopy(keyByte, 0, temp, 0, keyByte.length);
+ keyByte = temp;
+ }
+ // 初始化
+ Security.addProvider(new BouncyCastleProvider());
+ Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding", "BC");
+ SecretKeySpec spec = new SecretKeySpec(keyByte, "AES");
+ AlgorithmParameters parameters = AlgorithmParameters.getInstance("AES");
+ parameters.init(new IvParameterSpec(ivByte));
+ cipher.init(Cipher.DECRYPT_MODE, spec, parameters);// 初始化
+ byte[] resultByte = cipher.doFinal(dataByte);
+ if (null != resultByte && resultByte.length > 0) {
+ String result = new String(resultByte, "UTF-8");
+ return JSON.parseObject(result);
+ }
+ } catch (Exception e) {
+
+ }
+ return null;
+ }
+
+}
diff --git a/api/src/main/java/com/wx/application/adapter/dto/qo/GraphTaskExecuteQ.java b/api/src/main/java/com/wx/application/adapter/dto/qo/GraphTaskExecuteQ.java
new file mode 100644
index 0000000..eaac1d1
--- /dev/null
+++ b/api/src/main/java/com/wx/application/adapter/dto/qo/GraphTaskExecuteQ.java
@@ -0,0 +1,16 @@
+package com.wx.application.adapter.dto.qo;
+
+import java.util.List;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+@Data
+@EqualsAndHashCode(callSuper=false)
+public class GraphTaskExecuteQ {
+
+ private Long taskId;
+
+ private List taskFiles;
+
+}
diff --git a/api/src/main/java/com/wx/application/adapter/dto/qo/GraphTaskFileExecuteQ.java b/api/src/main/java/com/wx/application/adapter/dto/qo/GraphTaskFileExecuteQ.java
new file mode 100644
index 0000000..2f291fc
--- /dev/null
+++ b/api/src/main/java/com/wx/application/adapter/dto/qo/GraphTaskFileExecuteQ.java
@@ -0,0 +1,37 @@
+package com.wx.application.adapter.dto.qo;
+
+import com.wx.application.nebula.graph.enums.IndexType;
+
+import cn.hutool.json.JSONObject;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+@Data
+@EqualsAndHashCode(callSuper=false)
+public class GraphTaskFileExecuteQ {
+
+ /**
+ * GraphTaskFile
+ */
+ private Long taskFileId;
+
+ /**
+ * 当前导入的是tag 还是 edge
+ */
+ private IndexType type;
+ /**
+ * tag
+ * edge 名称
+ */
+ private String name;
+
+ /**
+ * 对应关系
+ * {
+ * 属性名 : 文件header 名称
+ * name: "姓名"
+ * }
+ */
+ private JSONObject correspond;
+
+}
diff --git a/api/src/main/java/com/wx/application/adapter/dto/qo/OntologyQ.java b/api/src/main/java/com/wx/application/adapter/dto/qo/OntologyQ.java
new file mode 100644
index 0000000..6135834
--- /dev/null
+++ b/api/src/main/java/com/wx/application/adapter/dto/qo/OntologyQ.java
@@ -0,0 +1,12 @@
+package com.wx.application.adapter.dto.qo;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+@Data
+@EqualsAndHashCode(callSuper=false)
+public class OntologyQ {
+
+ private String label;
+
+}
diff --git a/api/src/main/java/com/wx/application/adapter/dto/qo/RemarkTaskRemoveOntologyQ.java b/api/src/main/java/com/wx/application/adapter/dto/qo/RemarkTaskRemoveOntologyQ.java
new file mode 100644
index 0000000..c50ca44
--- /dev/null
+++ b/api/src/main/java/com/wx/application/adapter/dto/qo/RemarkTaskRemoveOntologyQ.java
@@ -0,0 +1,16 @@
+package com.wx.application.adapter.dto.qo;
+
+import javax.validation.constraints.NotNull;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+@Data
+@EqualsAndHashCode(callSuper=false)
+public class RemarkTaskRemoveOntologyQ {
+
+ @NotNull(message = "remarkId不能为空")
+ private Long remarkId;
+
+ private Long ontologyId;
+}
diff --git a/api/src/main/java/com/wx/application/adapter/dto/qo/RiskUserQ.java b/api/src/main/java/com/wx/application/adapter/dto/qo/RiskUserQ.java
new file mode 100644
index 0000000..e17710f
--- /dev/null
+++ b/api/src/main/java/com/wx/application/adapter/dto/qo/RiskUserQ.java
@@ -0,0 +1,59 @@
+package com.wx.application.adapter.dto.qo;
+
+public class RiskUserQ {
+
+ private String code;
+
+ private String username;
+
+ private String realname;
+
+ private String password;
+
+ /**
+ * font 前端登录
+ * admin 后端管理登录
+ */
+ private String type;
+
+ public String getUsername() {
+ return username;
+ }
+
+ public void setUsername(String username) {
+ this.username = username;
+ }
+
+ public String getRealname() {
+ return realname;
+ }
+
+ public void setRealname(String realname) {
+ this.realname = realname;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code;
+ }
+
+}
diff --git a/api/src/main/java/com/wx/application/base/BaseController.java b/api/src/main/java/com/wx/application/base/BaseController.java
new file mode 100644
index 0000000..4fd5566
--- /dev/null
+++ b/api/src/main/java/com/wx/application/base/BaseController.java
@@ -0,0 +1,65 @@
+package com.wx.application.base;
+
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.MessageSource;
+import org.springframework.context.NoSuchMessageException;
+import org.springframework.context.i18n.LocaleContextHolder;
+
+import java.util.Locale;
+
+/**
+ * @author zj
+ * @description : 控制器的基类,抽象方法,标准控制器有crud4个方法 ---------------------------------
+ * @since 2017-11-14
+ */
+public abstract class BaseController {
+
+ private static MessageSource messageSource;
+
+ @Autowired
+ public void setMessageSource(MessageSource messageSource) {
+ BaseController.messageSource = messageSource;
+ }
+
+ public static ResponseData success() {
+ return success(null);
+ }
+
+ public static ResponseData success(Object object) {
+ ResponseData rData = new ResponseData();
+ rData.setCode(ErrorCodeEnum.SUCCESS.toString());
+ rData.setMsg(getMsg(rData.getCode()));
+ rData.setData(object);
+ return rData;
+ }
+
+ public static ResponseData success(Object object, String msg) {
+ ResponseData rData = new ResponseData();
+ rData.setCode(ErrorCodeEnum.SUCCESS.toString());
+ rData.setMsg(getMsg(rData.getCode()));
+ rData.setData(msg);
+ return rData;
+ }
+
+ public static ResponseData error(ErrorCodeEnum errorCodeEnum) {
+ return error(errorCodeEnum, null);
+ }
+
+ public static ResponseData error(ErrorCodeEnum errorCodeEnum, Object object) {
+ ResponseData rData = new ResponseData();
+ rData.setCode(errorCodeEnum.toString());
+ rData.setMsg(getMsg(rData.getCode()));
+ rData.setData(object);
+ return rData;
+ }
+
+ protected static String getMsg(String code) {
+ Locale locale = LocaleContextHolder.getLocale();
+ try {
+ return messageSource.getMessage(code, null, locale);
+ } catch (NoSuchMessageException ex) {
+ return "";
+ }
+ }
+}
diff --git a/api/src/main/java/com/wx/application/base/BaseEntity.java b/api/src/main/java/com/wx/application/base/BaseEntity.java
new file mode 100644
index 0000000..b5b2cc7
--- /dev/null
+++ b/api/src/main/java/com/wx/application/base/BaseEntity.java
@@ -0,0 +1,34 @@
+package com.wx.application.base;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author zj
+ * @description : 实体基类 ---------------------------------
+ * @since 2017-10-27
+ */
+@Data
+public class BaseEntity {
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private FIDTYPE id;// 物理主键
+
+ @TableField(exist = false)
+ @JsonIgnore
+ private List ids;
+
+ @JsonIgnore
+ @TableField(value = "is_remove", fill = FieldFill.INSERT)
+ @TableLogic
+ private Boolean remove;
+
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ @TableField(value = "create_time", fill = FieldFill.INSERT)
+ private Date createTime;
+}
diff --git a/api/src/main/java/com/wx/application/base/BaseQueryApply.java b/api/src/main/java/com/wx/application/base/BaseQueryApply.java
new file mode 100644
index 0000000..8f20b4f
--- /dev/null
+++ b/api/src/main/java/com/wx/application/base/BaseQueryApply.java
@@ -0,0 +1,13 @@
+package com.wx.application.base;
+
+import lombok.Data;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Data
+public class BaseQueryApply {
+ String applySql;
+
+ List