Commit 5766595b authored by “yiyousong”'s avatar “yiyousong”
parents 44bc9b4d 23b7918f
...@@ -8,6 +8,7 @@ const CompressionWebpackPlugin = require("compression-webpack-plugin"); ...@@ -8,6 +8,7 @@ const CompressionWebpackPlugin = require("compression-webpack-plugin");
const productionGzipExtensions = ["js", "css"]; const productionGzipExtensions = ["js", "css"];
const isProd = process.env.NODE_ENV === "production"; const isProd = process.env.NODE_ENV === "production";
const assetsCDN = { const assetsCDN = {
// webpack build externals // webpack build externals
// externals: { // externals: {
...@@ -33,6 +34,17 @@ const assetsCDN = { ...@@ -33,6 +34,17 @@ const assetsCDN = {
], ],
}; };
const HardSourceWebpackPlugin = require('hard-source-webpack-plugin');
const devPlugins = [
new HardSourceWebpackPlugin(),
new HardSourceWebpackPlugin.ExcludeModulePlugin([
{
test: /mini-css-extract-plugin[\\/]dist[\\/]loader/
}
])
];
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin
module.exports = { module.exports = {
devServer: { devServer: {
disableHostCheck: true, disableHostCheck: true,
...@@ -56,6 +68,13 @@ module.exports = { ...@@ -56,6 +68,13 @@ module.exports = {
}, },
}, },
configureWebpack: (config) => { configureWebpack: (config) => {
config.plugin('webpack-report').use(BundleAnalyzerPlugin, [
{
analyzerMode: 'static'
}
])
plugins: process.env.NODE_ENV === "production" ? [] : [...devPlugins];
config.entry.app = ["babel-polyfill", "whatwg-fetch", "./src/main.js"]; config.entry.app = ["babel-polyfill", "whatwg-fetch", "./src/main.js"];
config.performance = { config.performance = {
hints: false, hints: false,
......
...@@ -1577,6 +1577,275 @@ msg|String|消息|- ...@@ -1577,6 +1577,275 @@ msg|String|消息|-
``` ```
## 主题
### 查询主题列表
**请求URL:** site/theme/list
**请求方式:** POST
**内容类型:** application/json;charset=utf-8
**简要描述:** 查询主题
**请求参数:**
参数名称|类型|必填|描述
:---|:---|:---|:------
page|Integer|否|当前页
size|Integer|否|每页条数,值为-1,查询所有记录
siteId|Long|否|站点id
userType|String|否|服务类型编号,字段前后添加%%模糊查询
themeCode|String|否|主题编号,字段前后添加%%模糊查询
themeName|String|否|主题名称,字段前后添加%%模糊查询
**请求样例:**
```
{
"siteId":9425,
"userType":"6mu82c",
"themeCode":"w7vxfs",
"themeName":"a9jq7j",
"page":1,
"size":10
}
```
**响应参数:**
参数名称|参数类型|描述
:---|:---|:------
code|Integer|结果码(-1.失败,1.成功)
msg|String|消息
data|object|数据对象
 per_page|Integer|每页条数
 total|Integer|总条数
 last_page|Integer|总页数
 current_page|Integer|当前页
 data|array|结果集列表|数组
  id|Long|id号
  siteId|Long|站点id
  userType|String|服务类型编号
  themeCode|String|主题编号
  themeName|String|主题名称
  createTime|Date|创建时间
  createUserId|Long|创建用户id
  updateTime|Date|更新时间
dict|object|字典对象
**响应消息样例:**
```
{
"code":1,
"data":{
}
}
```
### 查看主题
**请求URL:** site/theme/info
**请求方式:** GET
**内容类型:** application/json;charset=utf-8
**简要描述:** 查看主题,返回实例详细信息
**请求参数:**
参数名称|类型|必填|描述
:---|:---|:---|:------
id|Long|是|ID
**请求样例:**
```
http://localhost/site/theme/info?id=549
```
**响应参数:**
参数名称 |参数类型|描述
:---|:---|:-------
code|Integer|结果码(-1.失败,1.成功)
msg|String|消息
data|object|数据对象
 id|Long|id号
 siteId|Long|站点id
 userType|String|服务类型编号
 themeCode|String|主题编号
 themeName|String|主题名称
 createTime|Date|创建时间
 createUserId|Long|创建用户id
 updateTime|Date|更新时间
dict|object|字典对象
**响应消息样例:**
```
{
"code": 1,
"data": {
"id":539,
"siteId":4859,
"userType":"ewybhk",
"themeCode":"27cygo",
"themeName":"qu6dep",
"createTime":"2023-01-28",
"createUserId":1565,
"updateTime":"2023-01-28"
}
}
```
## 站点主题事项
### 查询站点主题事项列表
**请求URL:** site/theme/matter/list
**请求方式:** POST
**内容类型:** application/json;charset=utf-8
**简要描述:** 查询站点主题事项
**请求参数:**
参数名称|类型|必填|描述
:---|:---|:---|:------
page|Integer|否|当前页
size|Integer|否|每页条数,值为-1,查询所有记录
siteId|Long|否|站点ID
siteName|String|否|站点名称,字段前后添加%%模糊查询
matterId|Long|否|事项ID
matterName|String|否|事项名称,字段前后添加%%模糊查询
matterCode|String|否|事项编码,字段前后添加%%模糊查询
userType|String|否|服务类型(1.公共服务,2.个人服务,3.法人服务),字段前后添加%%模糊查询
themeCode|String|否|主题编码,字段前后添加%%模糊查询
themeName|String|否|主题名称,字段前后添加%%模糊查询
source|Integer|否|事项来源
**请求样例:**
```
{
"siteId":2334,
"siteName":"j1sn8h",
"matterId":5032,
"matterName":"xnn17d",
"matterCode":"5c6fxz",
"userType":"9c8tar",
"themeCode":"ztkpff",
"themeName":"hyfa7h",
"source":3642,
"page":1,
"size":10
}
```
**响应参数:**
参数名称|参数类型|描述
:---|:---|:------
code|Integer|结果码(-1.失败,1.成功)
msg|String|消息
data|object|数据对象
 per_page|Integer|每页条数
 total|Integer|总条数
 last_page|Integer|总页数
 current_page|Integer|当前页
 data|array|结果集列表|数组
  id|Long|序号,主键,自增长
  siteId|Long|站点ID
  siteName|String|站点名称
  matterId|Long|事项ID
  matterName|String|事项名称
  matterCode|String|事项编码
  userType|String|服务类型(1.公共服务,2.个人服务,3.法人服务)
  themeCode|String|主题编码
  themeName|String|主题名称
  source|Integer|事项来源
  createTime|Date|创建时间
  createUserId|Long|创建用户
  updateTime|Date|修改时间
dict|object|字典对象
 userType|object|字典属性对象,详见附录
**响应消息样例:**
```
{
"code":1,
"data":{
}
}
```
### 查看站点主题事项
**请求URL:** site/theme/matter/info
**请求方式:** GET
**内容类型:** application/json;charset=utf-8
**简要描述:** 查看站点主题事项,返回实例详细信息
**请求参数:**
参数名称|类型|必填|描述
:---|:---|:---|:------
id|Long|是|ID
**请求样例:**
```
http://localhost/site/theme/matter/info?id=549
```
**响应参数:**
参数名称 |参数类型|描述
:---|:---|:-------
code|Integer|结果码(-1.失败,1.成功)
msg|String|消息
data|object|数据对象
 id|Long|序号,主键,自增长
 siteId|Long|站点ID
 siteName|String|站点名称
 matterId|Long|事项ID
 matterName|String|事项名称
 matterCode|String|事项编码
 userType|String|服务类型(1.公共服务,2.个人服务,3.法人服务)
 themeCode|String|主题编码
 themeName|String|主题名称
 source|Integer|事项来源
 createTime|Date|创建时间
 createUserId|Long|创建用户
 updateTime|Date|修改时间
dict|object|字典对象
 userType|object|字典属性对象,详见附录
**响应消息样例:**
```
{
"code": 1,
"data": {
"id":6517,
"siteId":8377,
"siteName":"wnnjis",
"matterId":5970,
"matterName":"b5c0l3",
"matterCode":"y3yyz4",
"userType":"sr07tk",
"themeCode":"s1az2z",
"themeName":"isyo83",
"source":7309,
"createTime":"2023-01-28",
"createUserId":2157,
"updateTime":"2023-01-28"
}
}
```
## 业务 ## 业务
### 查询站点业务列表 ### 查询站点业务列表
...@@ -9264,6 +9533,8 @@ data|object|数据对象 ...@@ -9264,6 +9533,8 @@ data|object|数据对象
  updateUserId|Long|更新用户   updateUserId|Long|更新用户
  updateTime|Date|更新时间   updateTime|Date|更新时间
  serviceApi|String|服务接口地址   serviceApi|String|服务接口地址
  custUrl|String|自主应用前端访问地址
  appIconUrl|String|自主应用前端图标地址
dict|object|字典对象 dict|object|字典对象
 type|object|字典属性对象,详见附录  type|object|字典属性对象,详见附录
 shelves|object|字典属性对象,详见附录  shelves|object|字典属性对象,详见附录
...@@ -9334,6 +9605,8 @@ data|object|数据对象 ...@@ -9334,6 +9605,8 @@ data|object|数据对象
 updateUserId|Long|更新用户  updateUserId|Long|更新用户
 updateTime|Date|更新时间  updateTime|Date|更新时间
 serviceApi|String|服务接口地址  serviceApi|String|服务接口地址
 custUrl|String|自主应用前端访问地址
 appIconUrl|String|自主应用前端图标地址
dict|object|字典对象 dict|object|字典对象
 type|object|字典属性对象,详见附录  type|object|字典属性对象,详见附录
 shelves|object|字典属性对象,详见附录  shelves|object|字典属性对象,详见附录
......
...@@ -38,7 +38,7 @@ ...@@ -38,7 +38,7 @@
<profiles.log.path>/home/mortals/app/logs</profiles.log.path> <profiles.log.path>/home/mortals/app/logs</profiles.log.path>
<profiles.log.level>INFO</profiles.log.level> <profiles.log.level>INFO</profiles.log.level>
<package.environment>test</package.environment> <package.environment>test</package.environment>
<skipDeploy>false</skipDeploy> <skipUi>false</skipUi>
</properties> </properties>
</profile> </profile>
<profile> <profile>
...@@ -58,7 +58,7 @@ ...@@ -58,7 +58,7 @@
<profiles.log.path>/home/mortals/app/logs</profiles.log.path> <profiles.log.path>/home/mortals/app/logs</profiles.log.path>
<profiles.log.level>INFO</profiles.log.level> <profiles.log.level>INFO</profiles.log.level>
<package.environment>test</package.environment> <package.environment>test</package.environment>
<skipDeploy>false</skipDeploy> <skipUi>true</skipUi>
</properties> </properties>
</profile> </profile>
<profile> <profile>
...@@ -78,7 +78,7 @@ ...@@ -78,7 +78,7 @@
<profiles.log.path>/home/mortals/app/logs</profiles.log.path> <profiles.log.path>/home/mortals/app/logs</profiles.log.path>
<profiles.log.level>INFO</profiles.log.level> <profiles.log.level>INFO</profiles.log.level>
<package.environment>build</package.environment> <package.environment>build</package.environment>
<skipDeploy>false</skipDeploy> <skipUi>true</skipUi>
</properties> </properties>
</profile> </profile>
...@@ -88,21 +88,22 @@ ...@@ -88,21 +88,22 @@
<profiles.active>yibin</profiles.active> <profiles.active>yibin</profiles.active>
<profiles.server.path>/base</profiles.server.path> <profiles.server.path>/base</profiles.server.path>
<profiles.publish.path>/home/publish</profiles.publish.path> <profiles.publish.path>/home/publish</profiles.publish.path>
<profiles.rabbitmq.host>127.0.0.1</profiles.rabbitmq.host> <profiles.rabbitmq.host>172.15.28.115</profiles.rabbitmq.host>
<profiles.rabbitmq.port>5672</profiles.rabbitmq.port> <profiles.rabbitmq.port>5672</profiles.rabbitmq.port>
<profiles.rabbitmq.username>taxi_mq</profiles.rabbitmq.username> <profiles.rabbitmq.username>taxi_mq</profiles.rabbitmq.username>
<profiles.rabbitmq.password>admin@2020</profiles.rabbitmq.password> <profiles.rabbitmq.password>admin@2020</profiles.rabbitmq.password>
<profiles.rabbitmq.virtualhost>/</profiles.rabbitmq.virtualhost> <profiles.rabbitmq.virtualhost>/</profiles.rabbitmq.virtualhost>
<profiles.nacos.server-addr>127.0.0.1:8848</profiles.nacos.server-addr> <profiles.nacos.server-addr>172.15.28.120:8848</profiles.nacos.server-addr>
<profiles.nacos.group>DEFAULT_GROUP</profiles.nacos.group> <profiles.nacos.group>DEFAULT_GROUP</profiles.nacos.group>
<profiles.nacos.namespace>smart-gov</profiles.nacos.namespace> <profiles.nacos.namespace>smart-gov</profiles.nacos.namespace>
<profiles.log.path>/home/mortals/app/logs</profiles.log.path> <profiles.log.path>/home/mortals/app/logs</profiles.log.path>
<profiles.filepath>/home/mortals/app/data</profiles.filepath> <profiles.filepath>/home/mortals/app/data</profiles.filepath>
<profiles.log.level>INFO</profiles.log.level> <profiles.log.level>INFO</profiles.log.level>
<package.environment>yibin</package.environment> <package.environment>yibin</package.environment>
<skipDeploy>false</skipDeploy> <skipUi>true</skipUi>
</properties> </properties>
</profile> </profile>
</profiles> </profiles>
<dependencies> <dependencies>
...@@ -190,11 +191,11 @@ ...@@ -190,11 +191,11 @@
</dependency> </dependency>
<!-- 虹软人脸解析 --> <!-- 虹软人脸解析 -->
<dependency> <!-- <dependency>
<groupId>com.arcsoft.face</groupId> <groupId>com.arcsoft.face</groupId>
<artifactId>arcsoft-sdk-face</artifactId> <artifactId>arcsoft-sdk-face</artifactId>
<version>3.0.0.0</version> <version>3.0.0.0</version>
</dependency> </dependency>-->
<dependency> <dependency>
<groupId>net.coobird</groupId> <groupId>net.coobird</groupId>
<artifactId>thumbnailator</artifactId> <artifactId>thumbnailator</artifactId>
...@@ -295,7 +296,7 @@ ...@@ -295,7 +296,7 @@
<artifactId>exec-maven-plugin</artifactId> <artifactId>exec-maven-plugin</artifactId>
<version>1.6.0</version> <version>1.6.0</version>
<configuration> <configuration>
<skip>${skipDeploy}</skip> <skip>${skipUi}</skip>
</configuration> </configuration>
<executions> <executions>
<execution> <execution>
...@@ -358,7 +359,7 @@ ...@@ -358,7 +359,7 @@
<goal>single</goal> <goal>single</goal>
</goals> </goals>
<configuration> <configuration>
<skipAssembly>${skipDeploy}</skipAssembly> <skipAssembly>${skipUi}</skipAssembly>
<finalName>${project.artifactId}-ui</finalName> <finalName>${project.artifactId}-ui</finalName>
<appendAssemblyId>false</appendAssemblyId> <appendAssemblyId>false</appendAssemblyId>
<descriptors> <descriptors>
......
...@@ -37,8 +37,8 @@ import java.util.Map; ...@@ -37,8 +37,8 @@ import java.util.Map;
* @author: zxfei * @author: zxfei
* @date: 2022/4/20 9:24 * @date: 2022/4/20 9:24
*/ */
//@Aspect @Aspect
//@Component @Component
@Slf4j @Slf4j
//@Order(1) //@Order(1)
@Profile({"default", "develop", "test"}) @Profile({"default", "develop", "test"})
......
package com.mortals.xhx.base.system.param.service.impl; package com.mortals.xhx.base.system.param.service.impl;
import cn.hutool.core.util.StrUtil;
import com.mortals.framework.exception.AppException; import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context;
import com.mortals.framework.service.IParam; import com.mortals.framework.service.IParam;
import com.mortals.framework.service.impl.AbstractCRUDCacheServiceImpl; import com.mortals.framework.service.impl.AbstractCRUDCacheServiceImpl;
import com.mortals.framework.util.DataUtil; import com.mortals.framework.util.DataUtil;
...@@ -32,6 +34,20 @@ public class ParamServiceImpl extends AbstractCRUDCacheServiceImpl<ParamDao, Par ...@@ -32,6 +34,20 @@ public class ParamServiceImpl extends AbstractCRUDCacheServiceImpl<ParamDao, Par
return "ParamEntity.paramKey"; return "ParamEntity.paramKey";
} }
/**
* @param entity
* @param context
* @throws AppException
*/
@Override
protected void saveBefore(ParamEntity entity, Context context) throws AppException {
//过滤换行符
entity.setParamKey(StrUtil.removeAllLineBreaks(entity.getParamKey()));
entity.setParamValue(StrUtil.removeAllLineBreaks(entity.getParamValue()));
super.saveBefore(entity, context);
}
@Override @Override
public String getValueByKey(String key) { public String getValueByKey(String key) {
List<ParamEntity> list = this.getCacheList(); List<ParamEntity> list = this.getCacheList();
......
package com.mortals.xhx.common.code;
import java.util.LinkedHashMap;
import java.util.Map;
public enum JointInfoShowEnum {
公共服务部("公共服务部", "公共服务部"),
党政建设部("党政建设部", "党政建设部"),
网络理政部("网络理政部", "网络理政部");
private String value;
private String desc;
JointInfoShowEnum(String value, String desc) {
this.value = value;
this.desc = desc;
}
public String getValue() {
return this.value;
}
public String getDesc() {
return this.desc;
}
public static JointInfoShowEnum getByValue(String value) {
for (JointInfoShowEnum isLackEnum : JointInfoShowEnum.values()) {
if (isLackEnum.getValue() == value) {
return isLackEnum;
}
}
return null;
}
/**
* 获取Map集合
*
* @param eItem 不包含项
* @return
*/
public static Map<String, String> getEnumMap(String... eItem) {
Map<String, String> resultMap = new LinkedHashMap<>();
for (JointInfoShowEnum item : JointInfoShowEnum.values()) {
try {
boolean hasE = false;
for (String e : eItem) {
if (item.getValue() == e) {
hasE = true;
break;
}
}
if (!hasE) {
resultMap.put(item.getValue() + "", item.getDesc());
}
} catch (Exception ex) {
}
}
return resultMap;
}
}
\ No newline at end of file
package com.mortals.xhx.common.utils; //package com.mortals.xhx.common.utils;
//
import com.arcsoft.face.*; //import com.arcsoft.face.*;
import com.arcsoft.face.enums.DetectMode; //import com.arcsoft.face.enums.DetectMode;
import com.arcsoft.face.enums.DetectOrient; //import com.arcsoft.face.enums.DetectOrient;
import com.arcsoft.face.enums.ErrorInfo; //import com.arcsoft.face.enums.ErrorInfo;
import com.arcsoft.face.toolkit.ImageInfo; //import com.arcsoft.face.toolkit.ImageInfo;
import com.mortals.framework.exception.AppException; //import com.mortals.framework.exception.AppException;
import lombok.extern.slf4j.Slf4j; //import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component; //import org.springframework.stereotype.Component;
//
import java.util.ArrayList; //import java.util.ArrayList;
import java.util.List; //import java.util.List;
//
import static com.arcsoft.face.toolkit.ImageFactory.getRGBData; //import static com.arcsoft.face.toolkit.ImageFactory.getRGBData;
//
@Slf4j //@Slf4j
@Component //@Component
public class FaceUtil { //public class FaceUtil {
//
public FaceEngine initFace(String appId, String sdkKey) { // public FaceEngine initFace(String appId, String sdkKey) {
FaceEngine faceEngine = new FaceEngine(getClass().getResource(getOsName()).getPath()); // FaceEngine faceEngine = new FaceEngine(getClass().getResource(getOsName()).getPath());
//激活引擎 // //激活引擎
int errorCode = faceEngine.activeOnline(appId, sdkKey); // int errorCode = faceEngine.activeOnline(appId, sdkKey);
isTrue(!(errorCode != ErrorInfo.MOK.getValue() && errorCode != ErrorInfo.MERR_ASF_ALREADY_ACTIVATED.getValue()), "引擎激活失败"); // isTrue(!(errorCode != ErrorInfo.MOK.getValue() && errorCode != ErrorInfo.MERR_ASF_ALREADY_ACTIVATED.getValue()), "引擎激活失败");
ActiveFileInfo activeFileInfo = new ActiveFileInfo(); // ActiveFileInfo activeFileInfo = new ActiveFileInfo();
errorCode = faceEngine.getActiveFileInfo(activeFileInfo); // errorCode = faceEngine.getActiveFileInfo(activeFileInfo);
isTrue(!(errorCode != ErrorInfo.MOK.getValue() && errorCode != ErrorInfo.MERR_ASF_ALREADY_ACTIVATED.getValue()), "获取激活文件信息失败"); // isTrue(!(errorCode != ErrorInfo.MOK.getValue() && errorCode != ErrorInfo.MERR_ASF_ALREADY_ACTIVATED.getValue()), "获取激活文件信息失败");
//引擎配置 // //引擎配置
EngineConfiguration engineConfiguration = new EngineConfiguration(); // EngineConfiguration engineConfiguration = new EngineConfiguration();
engineConfiguration.setDetectMode(DetectMode.ASF_DETECT_MODE_IMAGE); // engineConfiguration.setDetectMode(DetectMode.ASF_DETECT_MODE_IMAGE);
engineConfiguration.setDetectFaceOrientPriority(DetectOrient.ASF_OP_ALL_OUT); // engineConfiguration.setDetectFaceOrientPriority(DetectOrient.ASF_OP_ALL_OUT);
engineConfiguration.setDetectFaceMaxNum(10); // engineConfiguration.setDetectFaceMaxNum(10);
engineConfiguration.setDetectFaceScaleVal(16); // engineConfiguration.setDetectFaceScaleVal(16);
//功能配置 // //功能配置
FunctionConfiguration functionConfiguration = new FunctionConfiguration(); // FunctionConfiguration functionConfiguration = new FunctionConfiguration();
functionConfiguration.setSupportAge(true); // functionConfiguration.setSupportAge(true);
functionConfiguration.setSupportFace3dAngle(true); // functionConfiguration.setSupportFace3dAngle(true);
functionConfiguration.setSupportFaceDetect(true); // functionConfiguration.setSupportFaceDetect(true);
functionConfiguration.setSupportFaceRecognition(true); // functionConfiguration.setSupportFaceRecognition(true);
functionConfiguration.setSupportGender(true); // functionConfiguration.setSupportGender(true);
functionConfiguration.setSupportLiveness(true); // functionConfiguration.setSupportLiveness(true);
functionConfiguration.setSupportIRLiveness(true); // functionConfiguration.setSupportIRLiveness(true);
engineConfiguration.setFunctionConfiguration(functionConfiguration); // engineConfiguration.setFunctionConfiguration(functionConfiguration);
//初始化引擎 // //初始化引擎
errorCode = faceEngine.init(engineConfiguration); // errorCode = faceEngine.init(engineConfiguration);
isTrue(errorCode == ErrorInfo.MOK.getValue(), "初始化引擎失败"); // isTrue(errorCode == ErrorInfo.MOK.getValue(), "初始化引擎失败");
return faceEngine; // return faceEngine;
} // }
//
//
/** // /**
* 人脸检测、特征提取 // * 人脸检测、特征提取
* // *
* @param faceEngine // * @param faceEngine
* @param bytes // * @param bytes
* @return // * @return
*/ // */
public byte[] featureData(FaceEngine faceEngine, byte[] bytes) { // public byte[] featureData(FaceEngine faceEngine, byte[] bytes) {
//人脸检测 // //人脸检测
ImageInfo imageInfo = getRGBData(bytes); // ImageInfo imageInfo = getRGBData(bytes);
List<FaceInfo> faceInfoList = new ArrayList<FaceInfo>(); // List<FaceInfo> faceInfoList = new ArrayList<FaceInfo>();
faceEngine.detectFaces(imageInfo.getImageData(), imageInfo.getWidth(), imageInfo.getHeight(), imageInfo.getImageFormat(), faceInfoList); // faceEngine.detectFaces(imageInfo.getImageData(), imageInfo.getWidth(), imageInfo.getHeight(), imageInfo.getImageFormat(), faceInfoList);
//特征提取 // //特征提取
FaceFeature faceFeature = new FaceFeature(); // FaceFeature faceFeature = new FaceFeature();
faceEngine.extractFaceFeature(imageInfo.getImageData(), imageInfo.getWidth(), imageInfo.getHeight(), imageInfo.getImageFormat(), faceInfoList.get(0), faceFeature); // faceEngine.extractFaceFeature(imageInfo.getImageData(), imageInfo.getWidth(), imageInfo.getHeight(), imageInfo.getImageFormat(), faceInfoList.get(0), faceFeature);
return faceFeature.getFeatureData(); // return faceFeature.getFeatureData();
} // }
//
//
/** // /**
* 特征比对 // * 特征比对
* // *
* @param targeFace // * @param targeFace
* @param sourceFace // * @param sourceFace
* @return // * @return
*/ // */
public boolean featureComparison(FaceEngine faceEngine, byte[] targeFace, byte[] sourceFace) { // public boolean featureComparison(FaceEngine faceEngine, byte[] targeFace, byte[] sourceFace) {
//特征比对 // //特征比对
FaceFeature targetFaceFeature = new FaceFeature(); // FaceFeature targetFaceFeature = new FaceFeature();
targetFaceFeature.setFeatureData(targeFace); // targetFaceFeature.setFeatureData(targeFace);
FaceFeature sourceFaceFeature = new FaceFeature(); // FaceFeature sourceFaceFeature = new FaceFeature();
sourceFaceFeature.setFeatureData(sourceFace); // sourceFaceFeature.setFeatureData(sourceFace);
FaceSimilar faceSimilar = new FaceSimilar(); // FaceSimilar faceSimilar = new FaceSimilar();
faceEngine.compareFaceFeature(targetFaceFeature, sourceFaceFeature, faceSimilar); // faceEngine.compareFaceFeature(targetFaceFeature, sourceFaceFeature, faceSimilar);
float score = faceSimilar.getScore(); // float score = faceSimilar.getScore();
if (score > 0.8) { // if (score > 0.8) {
return true; // return true;
} // }
return false; // return false;
} // }
//
public void unInit(FaceEngine faceEngine) { // public void unInit(FaceEngine faceEngine) {
faceEngine.unInit(); // faceEngine.unInit();
} // }
//
public String getOsName() { // public String getOsName() {
String os = System.getProperty("os.name"); // String os = System.getProperty("os.name");
String osName = os.toLowerCase().startsWith("win") ? "/face_lib/win64" : "/face_lib/linux"; // String osName = os.toLowerCase().startsWith("win") ? "/face_lib/win64" : "/face_lib/linux";
return osName; // return osName;
} // }
//
//
private void isTrue(boolean b, String errorMsg) { // private void isTrue(boolean b, String errorMsg) {
if (!b) { // if (!b) {
throw new AppException(errorMsg); // throw new AppException(errorMsg);
} // }
} // }
//
} //}
...@@ -5,7 +5,6 @@ import com.alibaba.fastjson.JSON; ...@@ -5,7 +5,6 @@ import com.alibaba.fastjson.JSON;
import com.mortals.framework.common.Rest; import com.mortals.framework.common.Rest;
import com.mortals.framework.model.Context; import com.mortals.framework.model.Context;
import com.mortals.framework.service.ICacheService; import com.mortals.framework.service.ICacheService;
import com.mortals.xhx.ManagerBaseApplication;
import com.mortals.xhx.common.code.DxTypeEnum; import com.mortals.xhx.common.code.DxTypeEnum;
import com.mortals.xhx.common.code.SourceEnum; import com.mortals.xhx.common.code.SourceEnum;
import com.mortals.xhx.common.code.YesNoEnum; import com.mortals.xhx.common.code.YesNoEnum;
...@@ -24,12 +23,8 @@ import com.mortals.xhx.module.site.service.SiteService; ...@@ -24,12 +23,8 @@ import com.mortals.xhx.module.site.service.SiteService;
import com.mortals.xhx.module.site.service.SiteThemeMatterService; import com.mortals.xhx.module.site.service.SiteThemeMatterService;
import com.mortals.xhx.module.site.service.SiteThemeService; import com.mortals.xhx.module.site.service.SiteThemeService;
import com.mortals.xhx.utils.SpringUtils; import com.mortals.xhx.utils.SpringUtils;
import lombok.AllArgsConstructor;
import lombok.CustomLog;
import lombok.extern.apachecommons.CommonsLog; import lombok.extern.apachecommons.CommonsLog;
import lombok.extern.slf4j.Slf4j;
import javax.xml.transform.Source;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -91,7 +86,7 @@ public class SyncGovMatterDetailThread implements Runnable { ...@@ -91,7 +86,7 @@ public class SyncGovMatterDetailThread implements Runnable {
//重新添加 //重新添加
for (SiteEntity site : siteEntities) { for (SiteEntity site : siteEntities) {
List<SiteMatterEntity> siteMatterList = matterEntityList.stream().map(item -> { List<SiteMatterEntity> siteMatterList = matterEntityList.stream().map(item -> {
return matterService.switchMatterToSiteMatterr(item, site, context).getData(); return matterService.switchMatterToSiteMatter(item, site, context).getData();
}).filter(f -> f != null).collect(Collectors.toList()); }).filter(f -> f != null).collect(Collectors.toList());
List<List<SiteMatterEntity>> partition = ListUtil.partition(siteMatterList, 100); List<List<SiteMatterEntity>> partition = ListUtil.partition(siteMatterList, 100);
......
...@@ -55,7 +55,15 @@ public class DemoStartedService implements IApplicationStartedService { ...@@ -55,7 +55,15 @@ public class DemoStartedService implements IApplicationStartedService {
SyncTreeSiteThread syncTreeSiteThread = new SyncTreeSiteThread(contextTemp); SyncTreeSiteThread syncTreeSiteThread = new SyncTreeSiteThread(contextTemp);
ThreadPool.getInstance().execute(syncTreeSiteThread); ThreadPool.getInstance().execute(syncTreeSiteThread);
if(ObjectUtils.isEmpty(userFeign)){
userService.find(new UserQuery()).forEach(user->{
Context context = new Context();
context.setUser(user);
ThreadPool.getInstance().execute(new SyncTreeSiteThread(context));
});
/* if(ObjectUtils.isEmpty(userFeign)){
logger.info("userFeign未加载,加载本地用户"); logger.info("userFeign未加载,加载本地用户");
userService.find(new UserQuery()).forEach(user->{ userService.find(new UserQuery()).forEach(user->{
Context context = new Context(); Context context = new Context();
...@@ -64,9 +72,9 @@ public class DemoStartedService implements IApplicationStartedService { ...@@ -64,9 +72,9 @@ public class DemoStartedService implements IApplicationStartedService {
}); });
return; return;
} }*/
userFeign.list(new UserPdu()).getData().getData().stream().forEach(userPdu->{ /* userFeign.list(new UserPdu()).getData().getData().stream().forEach(userPdu->{
Context context = new Context(); Context context = new Context();
UserEntity entity = new UserEntity(); UserEntity entity = new UserEntity();
...@@ -75,7 +83,7 @@ public class DemoStartedService implements IApplicationStartedService { ...@@ -75,7 +83,7 @@ public class DemoStartedService implements IApplicationStartedService {
context.setUser(entity); context.setUser(entity);
ThreadPool.getInstance().execute(new SyncTreeSiteThread(context)); ThreadPool.getInstance().execute(new SyncTreeSiteThread(context));
}); });*/
} }
@Override @Override
......
package com.mortals.xhx.face; //package com.mortals.xhx.face;
//
import com.arcsoft.face.*; //import com.arcsoft.face.*;
import com.arcsoft.face.toolkit.ImageInfo; //import com.arcsoft.face.toolkit.ImageInfo;
import com.google.common.collect.Lists; //import com.google.common.collect.Lists;
import com.mortals.xhx.face.factory.FaceEnginePoolFactory; //import com.mortals.xhx.face.factory.FaceEnginePoolFactory;
import com.mortals.xhx.module.identity.model.SysFaceEntity; //import com.mortals.xhx.module.identity.model.SysFaceEntity;
import com.sun.org.apache.xerces.internal.impl.dv.util.Base64; //import com.sun.org.apache.xerces.internal.impl.dv.util.Base64;
import lombok.extern.slf4j.Slf4j; //import lombok.extern.slf4j.Slf4j;
import org.apache.commons.pool2.impl.AbandonedConfig; //import org.apache.commons.pool2.impl.AbandonedConfig;
import org.apache.commons.pool2.impl.GenericObjectPool; //import org.apache.commons.pool2.impl.GenericObjectPool;
import org.apache.commons.pool2.impl.GenericObjectPoolConfig; //import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
import org.springframework.beans.factory.annotation.Value; //import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component; //import org.springframework.stereotype.Component;
//
import javax.imageio.ImageIO; //import javax.imageio.ImageIO;
import java.awt.image.BufferedImage; //import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream; //import java.io.ByteArrayOutputStream;
import java.io.IOException; //import java.io.IOException;
import java.io.InputStream; //import java.io.InputStream;
import java.math.BigDecimal; //import java.math.BigDecimal;
import java.util.ArrayList; //import java.util.ArrayList;
import java.util.List; //import java.util.List;
//
import static com.arcsoft.face.toolkit.ImageFactory.getRGBData; //import static com.arcsoft.face.toolkit.ImageFactory.getRGBData;
//
@Slf4j //@Slf4j
@Component //@Component
public class ArcsoftFaceUtil { //public class ArcsoftFaceUtil {
//
@Value(value = "${faceAppId}") // @Value(value = "${faceAppId}")
private String appId; // private String appId;
//
@Value(value = "${winSdkKey}") // @Value(value = "${winSdkKey}")
private String winSdkKey; // private String winSdkKey;
//
@Value(value = "${linuxSdkkey}") // @Value(value = "${linuxSdkkey}")
private String linuxSdkKey; // private String linuxSdkKey;
//
//
public Integer threadPoolSize=5; // public Integer threadPoolSize=5;
//
private GenericObjectPool<FaceEngine> faceEngineGenericObjectPool; // private GenericObjectPool<FaceEngine> faceEngineGenericObjectPool;
//
public ArcsoftFaceUtil(){ // public ArcsoftFaceUtil(){
//
String sdkLibPath = getClass().getResource(getOsName()).getPath(); // String sdkLibPath = getClass().getResource(getOsName()).getPath();
String sdkKey = getSdkKey(sdkLibPath); // String sdkKey = getSdkKey(sdkLibPath);
// 对象池工厂 // // 对象池工厂
FaceEnginePoolFactory personPoolFactory = new FaceEnginePoolFactory(appId,sdkKey,sdkLibPath); // FaceEnginePoolFactory personPoolFactory = new FaceEnginePoolFactory(appId,sdkKey,sdkLibPath);
// 对象池配置 // // 对象池配置
GenericObjectPoolConfig<FaceEngine> objectPoolConfig = new GenericObjectPoolConfig<>(); // GenericObjectPoolConfig<FaceEngine> objectPoolConfig = new GenericObjectPoolConfig<>();
objectPoolConfig.setMaxTotal(threadPoolSize); // objectPoolConfig.setMaxTotal(threadPoolSize);
AbandonedConfig abandonedConfig = new AbandonedConfig(); // AbandonedConfig abandonedConfig = new AbandonedConfig();
//在Maintenance的时候检查是否有泄漏 // //在Maintenance的时候检查是否有泄漏
abandonedConfig.setRemoveAbandonedOnMaintenance(true); // abandonedConfig.setRemoveAbandonedOnMaintenance(true);
//borrow 的时候检查泄漏 // //borrow 的时候检查泄漏
abandonedConfig.setRemoveAbandonedOnBorrow(true); // abandonedConfig.setRemoveAbandonedOnBorrow(true);
//如果一个对象borrow之后10秒还没有返还给pool,认为是泄漏的对象 // //如果一个对象borrow之后10秒还没有返还给pool,认为是泄漏的对象
abandonedConfig.setRemoveAbandonedTimeout(10); // abandonedConfig.setRemoveAbandonedTimeout(10);
// 对象池 // // 对象池
faceEngineGenericObjectPool = new GenericObjectPool<>(personPoolFactory, objectPoolConfig); // faceEngineGenericObjectPool = new GenericObjectPool<>(personPoolFactory, objectPoolConfig);
faceEngineGenericObjectPool.setAbandonedConfig(abandonedConfig); // faceEngineGenericObjectPool.setAbandonedConfig(abandonedConfig);
faceEngineGenericObjectPool.setTimeBetweenEvictionRunsMillis(5000); //5秒运行一次维护任务 // faceEngineGenericObjectPool.setTimeBetweenEvictionRunsMillis(5000); //5秒运行一次维护任务
log.info("引擎池开启成功"); // log.info("引擎池开启成功");
} // }
//
private String getOsName() { // private String getOsName() {
String os = System.getProperty("os.name"); // String os = System.getProperty("os.name");
String osName = os.toLowerCase().startsWith("win") ? "/face_lib/win64" : "/face_lib/linux"; // String osName = os.toLowerCase().startsWith("win") ? "/face_lib/win64" : "/face_lib/linux";
return osName; // return osName;
} // }
//
private String getSdkKey(String sdkLibPath) { // private String getSdkKey(String sdkLibPath) {
return sdkLibPath.equals("/face_lib/win64") ? winSdkKey : linuxSdkKey; // return sdkLibPath.equals("/face_lib/win64") ? winSdkKey : linuxSdkKey;
} // }
//
/** // /**
* 人脸检测 // * 人脸检测
* // *
* @param fileInputStream // * @param fileInputStream
* @return // * @return
*/ // */
public List<FaceInfo> faceFind(InputStream fileInputStream) throws IOException { // public List<FaceInfo> faceFind(InputStream fileInputStream) throws IOException {
FaceEngine faceEngine = null; // FaceEngine faceEngine = null;
try { // try {
faceEngine = faceEngineGenericObjectPool.borrowObject(); // faceEngine = faceEngineGenericObjectPool.borrowObject();
ImageInfo imageInfo = getRGBData(fileInputStream); // ImageInfo imageInfo = getRGBData(fileInputStream);
List<FaceInfo> faceInfoList = new ArrayList<FaceInfo>(); // List<FaceInfo> faceInfoList = new ArrayList<FaceInfo>();
int errorCode = faceEngine.detectFaces(imageInfo.getImageData(), imageInfo.getWidth(), imageInfo.getHeight(), imageInfo.getImageFormat(), faceInfoList); // int errorCode = faceEngine.detectFaces(imageInfo.getImageData(), imageInfo.getWidth(), imageInfo.getHeight(), imageInfo.getImageFormat(), faceInfoList);
return faceInfoList; // return faceInfoList;
} catch (Exception e) { // } catch (Exception e) {
log.error("人脸检测出现了异常"); // log.error("人脸检测出现了异常");
e.printStackTrace(); // e.printStackTrace();
return new ArrayList<FaceInfo>(); // return new ArrayList<FaceInfo>();
} finally { // } finally {
fileInputStream.close(); // fileInputStream.close();
// 回收对象到对象池 // // 回收对象到对象池
if (faceEngine != null) { // if (faceEngine != null) {
faceEngineGenericObjectPool.returnObject(faceEngine); // faceEngineGenericObjectPool.returnObject(faceEngine);
} // }
} // }
//
} // }
//
/** // /**
* 人脸截取 // * 人脸截取
* // *
* @param fileInputStream // * @param fileInputStream
* @param rect // * @param rect
* @return // * @return
*/ // */
public String faceCrop(InputStream fileInputStream, Rect rect) { // public String faceCrop(InputStream fileInputStream, Rect rect) {
try { // try {
ByteArrayOutputStream stream = new ByteArrayOutputStream(); // ByteArrayOutputStream stream = new ByteArrayOutputStream();
BufferedImage bufImage = ImageIO.read(fileInputStream); // BufferedImage bufImage = ImageIO.read(fileInputStream);
int height = bufImage.getHeight(); // int height = bufImage.getHeight();
int width = bufImage.getWidth(); // int width = bufImage.getWidth();
int top = rect.getTop(); // int top = rect.getTop();
int bottom = rect.getBottom(); // int bottom = rect.getBottom();
int left = rect.getLeft(); // int left = rect.getLeft();
int right = rect.getRight(); // int right = rect.getRight();
//System.out.println(top + "-" + bottom + "-" + left + "-" + right); // //System.out.println(top + "-" + bottom + "-" + left + "-" + right);
try { // try {
BufferedImage subimage = bufImage.getSubimage(left, top, right - left, bottom - left); // BufferedImage subimage = bufImage.getSubimage(left, top, right - left, bottom - left);
ImageIO.write(subimage, "png", stream); // ImageIO.write(subimage, "png", stream);
String base64 = Base64.encode(stream.toByteArray()); // String base64 = Base64.encode(stream.toByteArray());
return base64; // return base64;
}catch (Exception e){ // }catch (Exception e){
return null; // return null;
}finally { // }finally {
stream.close(); // stream.close();
fileInputStream.close(); // fileInputStream.close();
} // }
} catch (IOException e) { // } catch (IOException e) {
e.printStackTrace(); // e.printStackTrace();
}finally { // }finally {
//
} // }
return null; // return null;
} // }
//
/** // /**
* 人脸特征值提取 // * 人脸特征值提取
*/ // */
public byte[] faceFeature(byte[] bytes) { // public byte[] faceFeature(byte[] bytes) {
FaceEngine faceEngine = null; // FaceEngine faceEngine = null;
//
try { // try {
faceEngine = faceEngineGenericObjectPool.borrowObject(); // faceEngine = faceEngineGenericObjectPool.borrowObject();
ImageInfo imageInfo = getRGBData(bytes); // ImageInfo imageInfo = getRGBData(bytes);
//人脸检测得到人脸列表 // //人脸检测得到人脸列表
List<FaceInfo> faceInfoList = new ArrayList<FaceInfo>(); // List<FaceInfo> faceInfoList = new ArrayList<FaceInfo>();
faceEngine.detectFaces(imageInfo.getImageData(), imageInfo.getWidth(), imageInfo.getHeight(), imageInfo.getImageFormat(), faceInfoList); // faceEngine.detectFaces(imageInfo.getImageData(), imageInfo.getWidth(), imageInfo.getHeight(), imageInfo.getImageFormat(), faceInfoList);
FaceFeature faceFeature = new FaceFeature(); // FaceFeature faceFeature = new FaceFeature();
faceEngine.extractFaceFeature(imageInfo.getImageData(), imageInfo.getWidth(), imageInfo.getHeight(), imageInfo.getImageFormat(), faceInfoList.get(0), faceFeature); // faceEngine.extractFaceFeature(imageInfo.getImageData(), imageInfo.getWidth(), imageInfo.getHeight(), imageInfo.getImageFormat(), faceInfoList.get(0), faceFeature);
byte[] featureData = faceFeature.getFeatureData(); // byte[] featureData = faceFeature.getFeatureData();
return featureData; // return featureData;
} catch (Exception e) { // } catch (Exception e) {
log.error("人脸特征值提取出现了异常"); // log.error("人脸特征值提取出现了异常");
e.printStackTrace(); // e.printStackTrace();
return new byte[0]; // return new byte[0];
} finally { // } finally {
// 回收对象到对象池 // // 回收对象到对象池
if (faceEngine != null) { // if (faceEngine != null) {
faceEngineGenericObjectPool.returnObject(faceEngine); // faceEngineGenericObjectPool.returnObject(faceEngine);
} // }
} // }
} // }
//
/** // /**
* 人脸对比 // * 人脸对比
*/ // */
public float faceCompared(byte [] source,byte [] des) throws IOException { // public float faceCompared(byte [] source,byte [] des) throws IOException {
FaceEngine faceEngine = null; // FaceEngine faceEngine = null;
try { // try {
faceEngine = faceEngineGenericObjectPool.borrowObject(); // faceEngine = faceEngineGenericObjectPool.borrowObject();
FaceFeature targetFaceFeature = new FaceFeature(); // FaceFeature targetFaceFeature = new FaceFeature();
targetFaceFeature.setFeatureData(source); // targetFaceFeature.setFeatureData(source);
FaceFeature sourceFaceFeature = new FaceFeature(); // FaceFeature sourceFaceFeature = new FaceFeature();
sourceFaceFeature.setFeatureData(des); // sourceFaceFeature.setFeatureData(des);
FaceSimilar faceSimilar = new FaceSimilar(); // FaceSimilar faceSimilar = new FaceSimilar();
faceEngine.compareFaceFeature(targetFaceFeature, sourceFaceFeature, faceSimilar); // faceEngine.compareFaceFeature(targetFaceFeature, sourceFaceFeature, faceSimilar);
float score = faceSimilar.getScore(); // float score = faceSimilar.getScore();
return score; // return score;
} catch (Exception e) { // } catch (Exception e) {
log.error("人脸对比出现了异常"); // log.error("人脸对比出现了异常");
e.printStackTrace(); // e.printStackTrace();
return 0; // return 0;
} finally { // } finally {
// 回收对象到对象池 // // 回收对象到对象池
if (faceEngine != null) { // if (faceEngine != null) {
faceEngineGenericObjectPool.returnObject(faceEngine); // faceEngineGenericObjectPool.returnObject(faceEngine);
} // }
} // }
} // }
//
/** // /**
* 人脸搜索 // * 人脸搜索
*/ // */
public List<SysFaceEntity> faceSearch(FaceFeature targetFaceFeature,List<SysFaceEntity> sourceList) throws IOException { // public List<SysFaceEntity> faceSearch(FaceFeature targetFaceFeature,List<SysFaceEntity> sourceList) throws IOException {
FaceEngine faceEngine = null; // FaceEngine faceEngine = null;
List<SysFaceEntity> resultFaceInfoList = Lists.newLinkedList();//识别到的人脸列表 // List<SysFaceEntity> resultFaceInfoList = Lists.newLinkedList();//识别到的人脸列表
try { // try {
faceEngine = faceEngineGenericObjectPool.borrowObject(); // faceEngine = faceEngineGenericObjectPool.borrowObject();
//
for(SysFaceEntity faceUserInfo : sourceList) { // for(SysFaceEntity faceUserInfo : sourceList) {
FaceFeature sourceFaceFeature = new FaceFeature(); // FaceFeature sourceFaceFeature = new FaceFeature();
sourceFaceFeature.setFeatureData(faceUserInfo.getFaceFeature()); // sourceFaceFeature.setFeatureData(faceUserInfo.getFaceFeature());
FaceSimilar faceSimilar = new FaceSimilar(); // FaceSimilar faceSimilar = new FaceSimilar();
faceEngine.compareFaceFeature(targetFaceFeature, sourceFaceFeature, faceSimilar); // faceEngine.compareFaceFeature(targetFaceFeature, sourceFaceFeature, faceSimilar);
float score = faceSimilar.getScore(); // float score = faceSimilar.getScore();
if(score > 0.8){ // if(score > 0.8){
faceUserInfo.setSimilarValue(plusHundred(score)); // faceUserInfo.setSimilarValue(plusHundred(score));
resultFaceInfoList.add(faceUserInfo); // resultFaceInfoList.add(faceUserInfo);
} // }
} // }
} catch (Exception e) { // } catch (Exception e) {
log.error("人脸对比出现了异常"); // log.error("人脸对比出现了异常");
e.printStackTrace(); // e.printStackTrace();
} finally { // } finally {
// 回收对象到对象池 // // 回收对象到对象池
if (faceEngine != null) { // if (faceEngine != null) {
faceEngineGenericObjectPool.returnObject(faceEngine); // faceEngineGenericObjectPool.returnObject(faceEngine);
} // }
} // }
return resultFaceInfoList; // return resultFaceInfoList;
} // }
//
private int plusHundred(Float value) { // private int plusHundred(Float value) {
BigDecimal target = new BigDecimal(value); // BigDecimal target = new BigDecimal(value);
BigDecimal hundred = new BigDecimal(100f); // BigDecimal hundred = new BigDecimal(100f);
return target.multiply(hundred).intValue(); // return target.multiply(hundred).intValue();
} // }
//
} //}
package com.mortals.xhx.face.factory; //package com.mortals.xhx.face.factory;
//
import com.arcsoft.face.ActiveFileInfo; //import com.arcsoft.face.ActiveFileInfo;
import com.arcsoft.face.EngineConfiguration; //import com.arcsoft.face.EngineConfiguration;
import com.arcsoft.face.FaceEngine; //import com.arcsoft.face.FaceEngine;
import com.arcsoft.face.FunctionConfiguration; //import com.arcsoft.face.FunctionConfiguration;
import com.arcsoft.face.enums.DetectMode; //import com.arcsoft.face.enums.DetectMode;
import com.arcsoft.face.enums.DetectOrient; //import com.arcsoft.face.enums.DetectOrient;
import com.arcsoft.face.enums.ErrorInfo; //import com.arcsoft.face.enums.ErrorInfo;
import lombok.extern.slf4j.Slf4j; //import lombok.extern.slf4j.Slf4j;
import org.apache.commons.pool2.BasePooledObjectFactory; //import org.apache.commons.pool2.BasePooledObjectFactory;
import org.apache.commons.pool2.PooledObject; //import org.apache.commons.pool2.PooledObject;
import org.apache.commons.pool2.impl.DefaultPooledObject; //import org.apache.commons.pool2.impl.DefaultPooledObject;
//
@Slf4j //@Slf4j
public class FaceEnginePoolFactory extends BasePooledObjectFactory<FaceEngine> { //public class FaceEnginePoolFactory extends BasePooledObjectFactory<FaceEngine> {
//
private String appId; // private String appId;
private String sdkKey; // private String sdkKey;
private String sdkLibPath; // private String sdkLibPath;
//
public FaceEnginePoolFactory(String appId, String sdkKey, String sdkLibPath) { // public FaceEnginePoolFactory(String appId, String sdkKey, String sdkLibPath) {
this.appId = appId; // this.appId = appId;
this.sdkKey = sdkKey; // this.sdkKey = sdkKey;
this.sdkLibPath = sdkLibPath; // this.sdkLibPath = sdkLibPath;
//this.sdkLibPath = "D:\\face\\win64"; // //this.sdkLibPath = "D:\\face\\win64";
} // }
//
/** // /**
* 在对象池中创建对象 // * 在对象池中创建对象
* @return // * @return
* @throws Exception // * @throws Exception
*/ // */
@Override // @Override
public FaceEngine create() throws Exception { // public FaceEngine create() throws Exception {
FaceEngine faceEngine = new FaceEngine(sdkLibPath); // FaceEngine faceEngine = new FaceEngine(sdkLibPath);
//激活引擎 // //激活引擎
int errorCode = faceEngine.activeOnline(appId, sdkKey); // int errorCode = faceEngine.activeOnline(appId, sdkKey);
if (errorCode != ErrorInfo.MOK.getValue() && errorCode != ErrorInfo.MERR_ASF_ALREADY_ACTIVATED.getValue()) { // if (errorCode != ErrorInfo.MOK.getValue() && errorCode != ErrorInfo.MERR_ASF_ALREADY_ACTIVATED.getValue()) {
log.warn("引擎激活失败"); // log.warn("引擎激活失败");
} // }
ActiveFileInfo activeFileInfo=new ActiveFileInfo(); // ActiveFileInfo activeFileInfo=new ActiveFileInfo();
errorCode = faceEngine.getActiveFileInfo(activeFileInfo); // errorCode = faceEngine.getActiveFileInfo(activeFileInfo);
if (errorCode != ErrorInfo.MOK.getValue() && errorCode != ErrorInfo.MERR_ASF_ALREADY_ACTIVATED.getValue()) { // if (errorCode != ErrorInfo.MOK.getValue() && errorCode != ErrorInfo.MERR_ASF_ALREADY_ACTIVATED.getValue()) {
log.warn("获取激活文件信息失败"); // log.warn("获取激活文件信息失败");
} // }
//引擎配置 // //引擎配置
EngineConfiguration engineConfiguration = new EngineConfiguration(); // EngineConfiguration engineConfiguration = new EngineConfiguration();
engineConfiguration.setDetectMode(DetectMode.ASF_DETECT_MODE_IMAGE); // engineConfiguration.setDetectMode(DetectMode.ASF_DETECT_MODE_IMAGE);
engineConfiguration.setDetectFaceOrientPriority(DetectOrient.ASF_OP_ALL_OUT); // engineConfiguration.setDetectFaceOrientPriority(DetectOrient.ASF_OP_ALL_OUT);
engineConfiguration.setDetectFaceMaxNum(10); // engineConfiguration.setDetectFaceMaxNum(10);
engineConfiguration.setDetectFaceScaleVal(16); // engineConfiguration.setDetectFaceScaleVal(16);
//功能配置 // //功能配置
FunctionConfiguration functionConfiguration = new FunctionConfiguration(); // FunctionConfiguration functionConfiguration = new FunctionConfiguration();
functionConfiguration.setSupportAge(true); // functionConfiguration.setSupportAge(true);
functionConfiguration.setSupportFace3dAngle(true); // functionConfiguration.setSupportFace3dAngle(true);
functionConfiguration.setSupportFaceDetect(true); // functionConfiguration.setSupportFaceDetect(true);
functionConfiguration.setSupportFaceRecognition(true); // functionConfiguration.setSupportFaceRecognition(true);
functionConfiguration.setSupportGender(true); // functionConfiguration.setSupportGender(true);
functionConfiguration.setSupportLiveness(true); // functionConfiguration.setSupportLiveness(true);
functionConfiguration.setSupportIRLiveness(true); // functionConfiguration.setSupportIRLiveness(true);
engineConfiguration.setFunctionConfiguration(functionConfiguration); // engineConfiguration.setFunctionConfiguration(functionConfiguration);
//初始化引擎 // //初始化引擎
errorCode = faceEngine.init(engineConfiguration); // errorCode = faceEngine.init(engineConfiguration);
//
if (errorCode != ErrorInfo.MOK.getValue()) { // if (errorCode != ErrorInfo.MOK.getValue()) {
log.error("初始化引擎失败"); // log.error("初始化引擎失败");
} // }
return faceEngine; // return faceEngine;
} // }
//
/** // /**
* 包装对象 // * 包装对象
* @param faceEngine // * @param faceEngine
* @return // * @return
*/ // */
@Override // @Override
public PooledObject<FaceEngine> wrap(FaceEngine faceEngine) { // public PooledObject<FaceEngine> wrap(FaceEngine faceEngine) {
return new DefaultPooledObject<>(faceEngine); // return new DefaultPooledObject<>(faceEngine);
} // }
/** // /**
* 销毁对象 // * 销毁对象
* @param faceEngine 对象池 // * @param faceEngine 对象池
* @throws Exception 异常 // * @throws Exception 异常
*/ // */
@Override // @Override
public void destroyObject(PooledObject<FaceEngine> faceEngine) throws Exception { // public void destroyObject(PooledObject<FaceEngine> faceEngine) throws Exception {
super.destroyObject(faceEngine); // super.destroyObject(faceEngine);
} // }
//
/** // /**
* 校验对象是否可用 // * 校验对象是否可用
* @param faceEngine 对象池 // * @param faceEngine 对象池
* @return 对象是否可用结果,boolean // * @return 对象是否可用结果,boolean
*/ // */
@Override // @Override
public boolean validateObject(PooledObject<FaceEngine> faceEngine) { // public boolean validateObject(PooledObject<FaceEngine> faceEngine) {
return super.validateObject(faceEngine); // return super.validateObject(faceEngine);
} // }
//
/** // /**
* 激活钝化的对象系列操作 // * 激活钝化的对象系列操作
* @param faceEngine 对象池 // * @param faceEngine 对象池
* @throws Exception 异常信息 // * @throws Exception 异常信息
*/ // */
@Override // @Override
public void activateObject(PooledObject<FaceEngine> faceEngine) throws Exception { // public void activateObject(PooledObject<FaceEngine> faceEngine) throws Exception {
super.activateObject(faceEngine); // super.activateObject(faceEngine);
} // }
//
/** // /**
* 钝化未使用的对象 // * 钝化未使用的对象
* @param faceEngine 对象池 // * @param faceEngine 对象池
* @throws Exception 异常信息 // * @throws Exception 异常信息
*/ // */
@Override // @Override
public void passivateObject(PooledObject<FaceEngine> faceEngine) throws Exception { // public void passivateObject(PooledObject<FaceEngine> faceEngine) throws Exception {
super.passivateObject(faceEngine); // super.passivateObject(faceEngine);
} // }
//
} //}
...@@ -27,5 +27,9 @@ public class AppVo extends BaseEntityLong { ...@@ -27,5 +27,9 @@ public class AppVo extends BaseEntityLong {
* 自主应用访问地址 * 自主应用访问地址
*/ */
private String custUrl; private String custUrl;
/**
* 图标访问地址
*/
private String appIconUrl;
} }
\ No newline at end of file
...@@ -86,12 +86,11 @@ public class AppServiceImpl extends AbstractCRUDServiceImpl<AppDao, AppEntity, L ...@@ -86,12 +86,11 @@ public class AppServiceImpl extends AbstractCRUDServiceImpl<AppDao, AppEntity, L
List<AppEntity> appEntityList = this.find(new AppQuery().appCode(item.getAppCode()), context); List<AppEntity> appEntityList = this.find(new AppQuery().appCode(item.getAppCode()), context);
item.setApplianceSiteScope(appEntityList.size()); item.setApplianceSiteScope(appEntityList.size());
item.setSiteIdList(appEntityList.stream().map(AppEntity::getSiteId).collect(Collectors.toList())); item.setSiteIdList(appEntityList.stream().map(AppEntity::getSiteId).collect(Collectors.toList()));
//构建访问地址 //构建访问地址
SiteEntity siteEntity = siteService.getCache(item.getSiteId().toString()); SiteEntity siteEntity = siteService.getCache(item.getSiteId().toString());
String domainUrl = GlobalSysInfo.getParamValue(Constant.PARAM_SERVER_HTTP_URL, "http://192.168.0.98:11078");
if (!ObjectUtils.isEmpty(siteEntity)) { if (!ObjectUtils.isEmpty(siteEntity)) {
//请求地址 http://domian/app/siteCode/appcode/html //请求地址 http://domian/app/siteCode/appcode/html
String domainUrl = GlobalSysInfo.getParamValue(Constant.PARAM_SERVER_HTTP_URL, "http://192.168.0.98:11078");
item.setCustUrl(UrlBuilder.of(domainUrl) item.setCustUrl(UrlBuilder.of(domainUrl)
.addPath(CUSTAPP_ROOT_PATH) .addPath(CUSTAPP_ROOT_PATH)
.addPath(siteEntity.getSiteCode()) .addPath(siteEntity.getSiteCode())
...@@ -101,10 +100,10 @@ public class AppServiceImpl extends AbstractCRUDServiceImpl<AppDao, AppEntity, L ...@@ -101,10 +100,10 @@ public class AppServiceImpl extends AbstractCRUDServiceImpl<AppDao, AppEntity, L
} else { } else {
item.setCustUrl(""); item.setCustUrl("");
} }
//构建图标地址
item.setAppIconUrl(UrlBuilder.of(domainUrl)
.addPath(item.getAppIconPath()).build());
}); });
super.findAfter(params, pageInfo, context, list); super.findAfter(params, pageInfo, context, list);
} }
......
package com.mortals.xhx.module.identity.service.impl; //package com.mortals.xhx.module.identity.service.impl;
//
import cn.hutool.core.collection.CollectionUtil; //import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.img.Img; //import cn.hutool.core.img.Img;
import cn.hutool.core.util.IdUtil; //import cn.hutool.core.util.IdUtil;
import com.arcsoft.face.FaceEngine; //import com.arcsoft.face.FaceEngine;
import com.arcsoft.face.FaceFeature; //import com.arcsoft.face.FaceFeature;
import com.arcsoft.face.FaceSimilar; //import com.arcsoft.face.FaceSimilar;
import com.google.common.collect.Lists; //import com.google.common.collect.Lists;
import com.mortals.framework.exception.AppException; //import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context; //import com.mortals.framework.model.Context;
import com.mortals.framework.service.impl.AbstractCRUDServiceImpl; //import com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
import com.mortals.framework.util.StringUtils; //import com.mortals.framework.util.StringUtils;
import com.mortals.xhx.common.utils.FaceUtil; //import com.mortals.xhx.common.utils.FaceUtil;
import com.mortals.xhx.face.ArcsoftFaceUtil; //import com.mortals.xhx.face.ArcsoftFaceUtil;
import com.mortals.xhx.module.identity.dao.SysFaceDao; //import com.mortals.xhx.module.identity.dao.SysFaceDao;
import com.mortals.xhx.module.identity.model.SysFaceEntity; //import com.mortals.xhx.module.identity.model.SysFaceEntity;
import com.mortals.xhx.module.identity.model.SysIdentityEntity; //import com.mortals.xhx.module.identity.model.SysIdentityEntity;
import com.mortals.xhx.module.identity.model.vo.FaceInfoResVO; //import com.mortals.xhx.module.identity.model.vo.FaceInfoResVO;
import com.mortals.xhx.module.identity.service.SysFaceService; //import com.mortals.xhx.module.identity.service.SysFaceService;
import com.mortals.xhx.module.identity.service.SysIdentityService; //import com.mortals.xhx.module.identity.service.SysIdentityService;
import net.coobird.thumbnailator.Thumbnails; //import net.coobird.thumbnailator.Thumbnails;
import org.apache.commons.collections4.CollectionUtils; //import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired; //import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; //import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; //import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; //import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile; //import org.springframework.web.multipart.MultipartFile;
//
import javax.annotation.PostConstruct; //import javax.annotation.PostConstruct;
import java.awt.image.BufferedImage; //import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream; //import java.io.ByteArrayOutputStream;
import java.io.IOException; //import java.io.IOException;
import java.util.Base64; //import java.util.Base64;
import java.util.Date; //import java.util.Date;
import java.util.List; //import java.util.List;
import java.util.concurrent.*; //import java.util.concurrent.*;
import java.util.stream.Collectors; //import java.util.stream.Collectors;
//
/** ///**
* SysFaceService //* SysFaceService
* 人脸识别信息 service实现 //* 人脸识别信息 service实现
* //*
* @author zxfei //* @author zxfei
* @date 2022-08-03 //* @date 2022-08-03
*/ //*/
@Service("sysFaceService") //@Service("sysFaceService")
public class SysFaceServiceImpl extends AbstractCRUDServiceImpl<SysFaceDao, SysFaceEntity, String> implements SysFaceService { //public class SysFaceServiceImpl extends AbstractCRUDServiceImpl<SysFaceDao, SysFaceEntity, String> implements SysFaceService {
//
private Integer passRate = 80; // private Integer passRate = 80;
//
public static final int WIDTH = 100; // public static final int WIDTH = 100;
public static final int HEIGHT = 100; // public static final int HEIGHT = 100;
//
@Value(value = "${faceAppId}") // @Value(value = "${faceAppId}")
private String appId; // private String appId;
//
@Value(value = "${winSdkKey}") // @Value(value = "${winSdkKey}")
private String winSdkKey; // private String winSdkKey;
//
@Value(value = "${linuxSdkkey}") // @Value(value = "${linuxSdkkey}")
private String linuxSdkKey; // private String linuxSdkKey;
//
public Integer threadPoolSize = 5; // public Integer threadPoolSize = 5;
//
@Autowired // @Autowired
private FaceUtil faceUtil; // private FaceUtil faceUtil;
//
@Autowired // @Autowired
private SysIdentityService sysIdentityService; // private SysIdentityService sysIdentityService;
//
@Autowired // @Autowired
private ArcsoftFaceUtil arcsoftFaceUtil; // private ArcsoftFaceUtil arcsoftFaceUtil;
//
private ExecutorService executorService; // private ExecutorService executorService;
//
@PostConstruct // @PostConstruct
public void init() { // public void init() {
executorService = Executors.newFixedThreadPool(threadPoolSize); // executorService = Executors.newFixedThreadPool(threadPoolSize);
} // }
//
@Override // @Override
protected void saveBefore(SysFaceEntity entity, Context context) throws AppException { // protected void saveBefore(SysFaceEntity entity, Context context) throws AppException {
//非系统自增,需这里设置主键 // //非系统自增,需这里设置主键
entity.setId(IdUtil.fastSimpleUUID()); // entity.setId(IdUtil.fastSimpleUUID());
super.saveBefore(entity, context); // super.saveBefore(entity, context);
} // }
//
@Override // @Override
public FaceInfoResVO uploadImage(MultipartFile multipartFile, String name, String idCard, String placeId, String placeName) throws AppException { // public FaceInfoResVO uploadImage(MultipartFile multipartFile, String name, String idCard, String placeId, String placeName) throws AppException {
String clientName = multipartFile.getOriginalFilename(); // String clientName = multipartFile.getOriginalFilename();
if(!(clientName.endsWith(".png") || clientName.endsWith(".jpg") || clientName.endsWith(".jpeg"))){ // if(!(clientName.endsWith(".png") || clientName.endsWith(".jpg") || clientName.endsWith(".jpeg"))){
throw new AppException("请上传图片格式(" + clientName + ")"); // throw new AppException("请上传图片格式(" + clientName + ")");
} // }
FaceInfoResVO resVO = new FaceInfoResVO(); // FaceInfoResVO resVO = new FaceInfoResVO();
SysIdentityEntity idEntityReqVO = new SysIdentityEntity(); // SysIdentityEntity idEntityReqVO = new SysIdentityEntity();
idEntityReqVO.setName(name); // idEntityReqVO.setName(name);
idEntityReqVO.setIdCard(idCard); // idEntityReqVO.setIdCard(idCard);
String entityId = sysIdentityService.saveIdEntity(idEntityReqVO).getId(); // String entityId = sysIdentityService.saveIdEntity(idEntityReqVO).getId();
SysFaceEntity query = new SysFaceEntity(); // SysFaceEntity query = new SysFaceEntity();
query.setIdCard(entityId); // query.setIdCard(entityId);
List<SysFaceEntity> sysFaceList = dao.getList(query); // List<SysFaceEntity> sysFaceList = dao.getList(query);
if(CollectionUtils.isNotEmpty(sysFaceList)){ // if(CollectionUtils.isNotEmpty(sysFaceList)){
throw new AppException("该用户(" + idEntityReqVO.getName() + "_" + idEntityReqVO.getIdCard() + ")人脸数据已存在"); // throw new AppException("该用户(" + idEntityReqVO.getName() + "_" + idEntityReqVO.getIdCard() + ")人脸数据已存在");
} // }
//
try { // try {
byte[] file = multipartFile.getBytes(); // byte[] file = multipartFile.getBytes();
//激活引擎 // //激活引擎
FaceEngine faceEngine = faceUtil.initFace(appId, getSdkKey()); // FaceEngine faceEngine = faceUtil.initFace(appId, getSdkKey());
byte[] featureData = faceUtil.featureData(faceEngine, file); // byte[] featureData = faceUtil.featureData(faceEngine, file);
//创建缩略图 // //创建缩略图
BufferedImage image = Thumbnails.of(multipartFile.getInputStream()).size(WIDTH, HEIGHT).asBufferedImage(); // BufferedImage image = Thumbnails.of(multipartFile.getInputStream()).size(WIDTH, HEIGHT).asBufferedImage();
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); // ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
//此方法会造成png图片有阴影 // //此方法会造成png图片有阴影
// ImageIO.write(image, "jpg", byteArrayOutputStream); //// ImageIO.write(image, "jpg", byteArrayOutputStream);
Img.from(image).write(byteArrayOutputStream); // Img.from(image).write(byteArrayOutputStream);
byteArrayOutputStream.flush(); // byteArrayOutputStream.flush();
SysFaceEntity sysFace = new SysFaceEntity(); // SysFaceEntity sysFace = new SysFaceEntity();
sysFace.setId(IdUtil.fastSimpleUUID()); // sysFace.setId(IdUtil.fastSimpleUUID());
sysFace.setFace(byteArrayOutputStream.toByteArray()); // sysFace.setFace(byteArrayOutputStream.toByteArray());
sysFace.setFaceFeature(featureData); // sysFace.setFaceFeature(featureData);
sysFace.setIdCard(entityId); // sysFace.setIdCard(entityId);
sysFace.setPlaceId(placeId); // sysFace.setPlaceId(placeId);
sysFace.setPlaceName(placeName); // sysFace.setPlaceName(placeName);
sysFace.setCreateTime(new Date()); // sysFace.setCreateTime(new Date());
sysFace.setUpdateTime(sysFace.getCreateTime()); // sysFace.setUpdateTime(sysFace.getCreateTime());
sysFace.setDeleted(0); // sysFace.setDeleted(0);
dao.insert(sysFace); // dao.insert(sysFace);
resVO.setFace(Base64.getEncoder().encodeToString(file)); // resVO.setFace(Base64.getEncoder().encodeToString(file));
resVO.setFaceFeature(Base64.getEncoder().encodeToString(featureData)); // resVO.setFaceFeature(Base64.getEncoder().encodeToString(featureData));
resVO.setIdCard(idCard); // resVO.setIdCard(idCard);
resVO.setName(name); // resVO.setName(name);
resVO.setPhone(""); // resVO.setPhone("");
resVO.setId(sysFace.getId()); // resVO.setId(sysFace.getId());
} catch (IOException e) { // } catch (IOException e) {
log.error("提取特征失败:", e); // log.error("提取特征失败:", e);
} // }
return resVO; // return resVO;
} // }
//
@Override // @Override
public List<FaceInfoResVO> findFaceList(String placeId) throws AppException { // public List<FaceInfoResVO> findFaceList(String placeId) throws AppException {
SysFaceEntity query = new SysFaceEntity(); // SysFaceEntity query = new SysFaceEntity();
query.setPlaceId(placeId); // query.setPlaceId(placeId);
List<SysFaceEntity> sysFaceList = dao.getList(query); // List<SysFaceEntity> sysFaceList = dao.getList(query);
if(CollectionUtils.isEmpty(sysFaceList)){ // if(CollectionUtils.isEmpty(sysFaceList)){
throw new AppException("该场所无人脸数据"); // throw new AppException("该场所无人脸数据");
} // }
return sysFaceList.stream().map(o -> { // return sysFaceList.stream().map(o -> {
FaceInfoResVO resVO = new FaceInfoResVO(); // FaceInfoResVO resVO = new FaceInfoResVO();
SysIdentityEntity resVO1 = sysIdentityService.findIdEntityDetail(o.getIdCard(), 1); // SysIdentityEntity resVO1 = sysIdentityService.findIdEntityDetail(o.getIdCard(), 1);
resVO.setId(o.getId()); // resVO.setId(o.getId());
resVO.setPlaceId(o.getPlaceId()); // resVO.setPlaceId(o.getPlaceId());
resVO.setPlaceName(o.getPlaceName()); // resVO.setPlaceName(o.getPlaceName());
resVO.setCardId(resVO1.getId()); // resVO.setCardId(resVO1.getId());
resVO.setName(resVO1.getName()); // resVO.setName(resVO1.getName());
resVO.setPhone(resVO1.getPhone()); // resVO.setPhone(resVO1.getPhone());
resVO.setFace(Base64.getEncoder().encodeToString(o.getFace())); // resVO.setFace(Base64.getEncoder().encodeToString(o.getFace()));
resVO.setFaceFeature(Base64.getEncoder().encodeToString(o.getFaceFeature())); // resVO.setFaceFeature(Base64.getEncoder().encodeToString(o.getFaceFeature()));
return resVO; // return resVO;
}).collect(Collectors.toList()); // }).collect(Collectors.toList());
} // }
//
@Override // @Override
@Transactional(rollbackFor = Exception.class) // @Transactional(rollbackFor = Exception.class)
public void batchAddFace(List<MultipartFile> files, String placeId, String placeName) { // public void batchAddFace(List<MultipartFile> files, String placeId, String placeName) {
for (int j = 0; j < files.size(); j++) { // for (int j = 0; j < files.size(); j++) {
String fileName = files.get(j).getOriginalFilename(); // String fileName = files.get(j).getOriginalFilename();
if(StringUtils.isEmpty(fileName)){ // if(StringUtils.isEmpty(fileName)){
throw new AppException("文件名称(" + fileName + ")不能为空!"); // throw new AppException("文件名称(" + fileName + ")不能为空!");
} // }
String[] info = fileName.split("/"); // String[] info = fileName.split("/");
if(info.length != 2){ // if(info.length != 2){
throw new AppException("(" + fileName + ")文件命名错误,请按照规定文件模版上传!"); // throw new AppException("(" + fileName + ")文件命名错误,请按照规定文件模版上传!");
} // }
String[] infos = info[1].split("\\."); // String[] infos = info[1].split("\\.");
if(infos.length != 2){ // if(infos.length != 2){
throw new AppException("(" + fileName + ")文件命名错误,请按照规定文件模版上传!"); // throw new AppException("(" + fileName + ")文件命名错误,请按照规定文件模版上传!");
} // }
String[] strings = infos[0].split("_"); // String[] strings = infos[0].split("_");
if(strings.length != 2){ // if(strings.length != 2){
throw new AppException("(" + fileName + ")文件命名错误,请按照规定文件模版上传!"); // throw new AppException("(" + fileName + ")文件命名错误,请按照规定文件模版上传!");
} // }
uploadImage(files.get(j), strings[0], strings[1], placeId, placeName); // uploadImage(files.get(j), strings[0], strings[1], placeId, placeName);
} // }
} // }
//
private String getSdkKey() { // private String getSdkKey() {
return faceUtil.getOsName().equals("/win") ? winSdkKey : linuxSdkKey; // return faceUtil.getOsName().equals("/win") ? winSdkKey : linuxSdkKey;
} // }
//
@Override // @Override
public List<FaceInfoResVO> searchUserByFace(byte[] bytes) throws InterruptedException, ExecutionException{ // public List<FaceInfoResVO> searchUserByFace(byte[] bytes) throws InterruptedException, ExecutionException{
List<SysFaceEntity> resultFaceInfoList = Lists.newLinkedList();//识别到的人脸列表 // List<SysFaceEntity> resultFaceInfoList = Lists.newLinkedList();//识别到的人脸列表
//
byte[] faceFeature = arcsoftFaceUtil.faceFeature(bytes); // byte[] faceFeature = arcsoftFaceUtil.faceFeature(bytes);
FaceFeature targetFaceFeature = new FaceFeature(); // FaceFeature targetFaceFeature = new FaceFeature();
targetFaceFeature.setFeatureData(faceFeature); // targetFaceFeature.setFeatureData(faceFeature);
List<SysFaceEntity> faceInfoList = this.find(new SysFaceEntity()); // List<SysFaceEntity> faceInfoList = this.find(new SysFaceEntity());
List<List<SysFaceEntity>> faceUserInfoPartList = Lists.partition(faceInfoList, 1000);//分成1000一组,多线程处理 // List<List<SysFaceEntity>> faceUserInfoPartList = Lists.partition(faceInfoList, 1000);//分成1000一组,多线程处理
CompletionService<List<SysFaceEntity>> completionService = new ExecutorCompletionService(executorService); // CompletionService<List<SysFaceEntity>> completionService = new ExecutorCompletionService(executorService);
for (List<SysFaceEntity> part : faceUserInfoPartList) { // for (List<SysFaceEntity> part : faceUserInfoPartList) {
completionService.submit(new CompareFaceTask(part, targetFaceFeature)); // completionService.submit(new CompareFaceTask(part, targetFaceFeature));
} // }
for (int i = 0; i < faceUserInfoPartList.size(); i++) { // for (int i = 0; i < faceUserInfoPartList.size(); i++) {
List<SysFaceEntity> faceUserInfoList = completionService.take().get(); // List<SysFaceEntity> faceUserInfoList = completionService.take().get();
if (CollectionUtil.isNotEmpty(faceInfoList)) { // if (CollectionUtil.isNotEmpty(faceInfoList)) {
resultFaceInfoList.addAll(faceUserInfoList); // resultFaceInfoList.addAll(faceUserInfoList);
} // }
} // }
//
resultFaceInfoList.sort((h1, h2) -> h2.getSimilarValue().compareTo(h1.getSimilarValue()));//从大到小排序 // resultFaceInfoList.sort((h1, h2) -> h2.getSimilarValue().compareTo(h1.getSimilarValue()));//从大到小排序
//
return resultFaceInfoList.stream().map(o -> { // return resultFaceInfoList.stream().map(o -> {
FaceInfoResVO resVO = new FaceInfoResVO(); // FaceInfoResVO resVO = new FaceInfoResVO();
SysIdentityEntity resVO1 = sysIdentityService.findIdEntityDetail(o.getIdCard(), 1); // SysIdentityEntity resVO1 = sysIdentityService.findIdEntityDetail(o.getIdCard(), 1);
resVO.setId(o.getId()); // resVO.setId(o.getId());
resVO.setPlaceId(o.getPlaceId()); // resVO.setPlaceId(o.getPlaceId());
resVO.setPlaceName(o.getPlaceName()); // resVO.setPlaceName(o.getPlaceName());
resVO.setCardId(resVO1.getId()); // resVO.setCardId(resVO1.getId());
resVO.setName(resVO1.getName()); // resVO.setName(resVO1.getName());
resVO.setPhone(resVO1.getPhone()); // resVO.setPhone(resVO1.getPhone());
resVO.setFace(Base64.getEncoder().encodeToString(o.getFace())); // resVO.setFace(Base64.getEncoder().encodeToString(o.getFace()));
resVO.setFaceFeature(Base64.getEncoder().encodeToString(o.getFaceFeature())); // resVO.setFaceFeature(Base64.getEncoder().encodeToString(o.getFaceFeature()));
return resVO; // return resVO;
}).collect(Collectors.toList()); // }).collect(Collectors.toList());
} // }
//
private class CompareFaceTask implements Callable<List<SysFaceEntity>> { // private class CompareFaceTask implements Callable<List<SysFaceEntity>> {
//
private List<SysFaceEntity> faceUserInfoList; // private List<SysFaceEntity> faceUserInfoList;
private FaceFeature targetFaceFeature; // private FaceFeature targetFaceFeature;
//
//
public CompareFaceTask(List<SysFaceEntity> faceUserInfoList, FaceFeature targetFaceFeature) { // public CompareFaceTask(List<SysFaceEntity> faceUserInfoList, FaceFeature targetFaceFeature) {
this.faceUserInfoList = faceUserInfoList; // this.faceUserInfoList = faceUserInfoList;
this.targetFaceFeature = targetFaceFeature; // this.targetFaceFeature = targetFaceFeature;
} // }
//
@Override // @Override
public List<SysFaceEntity> call() throws Exception { // public List<SysFaceEntity> call() throws Exception {
//
return arcsoftFaceUtil.faceSearch(targetFaceFeature,faceUserInfoList); // return arcsoftFaceUtil.faceSearch(targetFaceFeature,faceUserInfoList);
} // }
//
} // }
} //}
\ No newline at end of file \ No newline at end of file
package com.mortals.xhx.module.identity.web; //package com.mortals.xhx.module.identity.web;
//
import com.alibaba.fastjson.JSONObject; //import com.alibaba.fastjson.JSONObject;
import com.mortals.framework.annotation.UnAuth; //import com.mortals.framework.annotation.UnAuth;
import com.mortals.framework.model.Context; //import com.mortals.framework.model.Context;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController; //import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.module.identity.model.SysFaceEntity; //import com.mortals.xhx.module.identity.model.SysFaceEntity;
import com.mortals.xhx.module.identity.model.vo.FaceInfoResVO; //import com.mortals.xhx.module.identity.model.vo.FaceInfoResVO;
import com.mortals.xhx.module.identity.service.SysFaceService; //import com.mortals.xhx.module.identity.service.SysFaceService;
import org.springframework.web.bind.annotation.*; //import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; //import org.springframework.web.multipart.MultipartFile;
//
import java.util.HashMap; //import java.util.HashMap;
import java.util.List; //import java.util.List;
import java.util.Map; //import java.util.Map;
/** ///**
* //*
* 人脸识别信息 //* 人脸识别信息
* //*
* @author zxfei //* @author zxfei
* @date 2022-08-03 //* @date 2022-08-03
*/ //*/
@RestController //@RestController
@RequestMapping("face") //@RequestMapping("face")
public class SysFaceController extends BaseCRUDJsonBodyMappingController<SysFaceService,SysFaceEntity,String> { //public class SysFaceController extends BaseCRUDJsonBodyMappingController<SysFaceService,SysFaceEntity,String> {
//
public SysFaceController(){ // public SysFaceController(){
super.setModuleDesc( "人脸识别信息"); // super.setModuleDesc( "人脸识别信息");
} // }
//
@Override // @Override
protected void init(Map<String, Object> model, Context context) { // protected void init(Map<String, Object> model, Context context) {
super.init(model, context); // super.init(model, context);
} // }
//
//
//
@PostMapping({"uploadImage"}) // @PostMapping({"uploadImage"})
@UnAuth // @UnAuth
public String uploadImage(@RequestPart("file") MultipartFile file, // public String uploadImage(@RequestPart("file") MultipartFile file,
@RequestParam("name") String name, // @RequestParam("name") String name,
@RequestParam("idCard") String idCard, // @RequestParam("idCard") String idCard,
@RequestParam(value = "placeId") String placeId, // @RequestParam(value = "placeId") String placeId,
@RequestParam(value = "placeName") String placeName) { // @RequestParam(value = "placeName") String placeName) {
Map<String, Object> model = new HashMap(); // Map<String, Object> model = new HashMap();
JSONObject ret = new JSONObject(); // JSONObject ret = new JSONObject();
String busiDesc = "人脸特征解析"; // String busiDesc = "人脸特征解析";
Context context = this.getContext(); // Context context = this.getContext();
//
try { // try {
FaceInfoResVO resVO = service.uploadImage(file, name, idCard, placeId, placeName); // FaceInfoResVO resVO = service.uploadImage(file, name, idCard, placeId, placeName);
model.put("data",resVO); // model.put("data",resVO);
this.recordSysLog(this.request, busiDesc + " 【成功】"); // this.recordSysLog(this.request, busiDesc + " 【成功】");
} catch (Exception var8) { // } catch (Exception var8) {
this.doException(this.request, busiDesc, model, var8); // this.doException(this.request, busiDesc, model, var8);
Object msg = model.get("message_info"); // Object msg = model.get("message_info");
return this.createFailJsonResp(msg == null ? "系统异常" : msg.toString()); // return this.createFailJsonResp(msg == null ? "系统异常" : msg.toString());
} // }
//
this.init(model, context); // this.init(model, context);
ret.put("data", model.get("data")); // ret.put("data", model.get("data"));
ret.put("code", 1); // ret.put("code", 1);
ret.put("msg", model.remove("message_info")); // ret.put("msg", model.remove("message_info"));
return ret.toJSONString(); // return ret.toJSONString();
} // }
//
@GetMapping({"findFaceList"}) // @GetMapping({"findFaceList"})
@UnAuth // @UnAuth
public String findFaceList(@RequestParam("placeId") String placeId) { // public String findFaceList(@RequestParam("placeId") String placeId) {
Map<String, Object> model = new HashMap(); // Map<String, Object> model = new HashMap();
JSONObject ret = new JSONObject(); // JSONObject ret = new JSONObject();
String busiDesc = "下发人脸列表"; // String busiDesc = "下发人脸列表";
Context context = this.getContext(); // Context context = this.getContext();
try { // try {
List<FaceInfoResVO> list = service.findFaceList(placeId); // List<FaceInfoResVO> list = service.findFaceList(placeId);
model.put("data",list); // model.put("data",list);
this.recordSysLog(this.request, busiDesc + " 【成功】"); // this.recordSysLog(this.request, busiDesc + " 【成功】");
} catch (Exception var8) { // } catch (Exception var8) {
this.doException(this.request, busiDesc, model, var8); // this.doException(this.request, busiDesc, model, var8);
Object msg = model.get("message_info"); // Object msg = model.get("message_info");
return this.createFailJsonResp(msg == null ? "系统异常" : msg.toString()); // return this.createFailJsonResp(msg == null ? "系统异常" : msg.toString());
} // }
//
this.init(model, context); // this.init(model, context);
ret.put("data", model.get("data")); // ret.put("data", model.get("data"));
ret.put("code", 1); // ret.put("code", 1);
ret.put("msg", model.remove("message_info")); // ret.put("msg", model.remove("message_info"));
return ret.toJSONString(); // return ret.toJSONString();
} // }
//
@PostMapping({"batchAddFace"}) // @PostMapping({"batchAddFace"})
@UnAuth // @UnAuth
public String batchAddFace(@RequestPart("files") List<MultipartFile> files, // public String batchAddFace(@RequestPart("files") List<MultipartFile> files,
@RequestParam("placeId") String placeId, // @RequestParam("placeId") String placeId,
@RequestParam("placeName") String placeName) { // @RequestParam("placeName") String placeName) {
Map<String, Object> model = new HashMap(); // Map<String, Object> model = new HashMap();
JSONObject ret = new JSONObject(); // JSONObject ret = new JSONObject();
String busiDesc = "批量上传人脸"; // String busiDesc = "批量上传人脸";
Context context = this.getContext(); // Context context = this.getContext();
//
try { // try {
service.batchAddFace(files, placeId, placeName); // service.batchAddFace(files, placeId, placeName);
this.recordSysLog(this.request, busiDesc + " 【成功】"); // this.recordSysLog(this.request, busiDesc + " 【成功】");
} catch (Exception var8) { // } catch (Exception var8) {
this.doException(this.request, busiDesc, model, var8); // this.doException(this.request, busiDesc, model, var8);
Object msg = model.get("message_info"); // Object msg = model.get("message_info");
return this.createFailJsonResp(msg == null ? "系统异常" : msg.toString()); // return this.createFailJsonResp(msg == null ? "系统异常" : msg.toString());
} // }
//
this.init(model, context); // this.init(model, context);
ret.put("data", null); // ret.put("data", null);
ret.put("code", 1); // ret.put("code", 1);
ret.put("msg", model.remove("message_info")); // ret.put("msg", model.remove("message_info"));
return ret.toJSONString(); // return ret.toJSONString();
} // }
//
@PostMapping({"search"}) // @PostMapping({"search"})
@UnAuth // @UnAuth
public String search(@RequestPart("file") MultipartFile file) { // public String search(@RequestPart("file") MultipartFile file) {
Map<String, Object> model = new HashMap(); // Map<String, Object> model = new HashMap();
JSONObject ret = new JSONObject(); // JSONObject ret = new JSONObject();
String busiDesc = "人脸识别"; // String busiDesc = "人脸识别";
Context context = this.getContext(); // Context context = this.getContext();
try { // try {
List<FaceInfoResVO> list = service.searchUserByFace(file.getBytes()); // List<FaceInfoResVO> list = service.searchUserByFace(file.getBytes());
model.put("data",list); // model.put("data",list);
this.recordSysLog(this.request, busiDesc + " 【成功】"); // this.recordSysLog(this.request, busiDesc + " 【成功】");
} catch (Exception var8) { // } catch (Exception var8) {
this.doException(this.request, busiDesc, model, var8); // this.doException(this.request, busiDesc, model, var8);
Object msg = model.get("message_info"); // Object msg = model.get("message_info");
return this.createFailJsonResp(msg == null ? "系统异常" : msg.toString()); // return this.createFailJsonResp(msg == null ? "系统异常" : msg.toString());
} // }
//
this.init(model, context); // this.init(model, context);
ret.put("data", model.get("data")); // ret.put("data", model.get("data"));
ret.put("code", 1); // ret.put("code", 1);
ret.put("msg", model.remove("message_info")); // ret.put("msg", model.remove("message_info"));
return ret.toJSONString(); // return ret.toJSONString();
} // }
} //}
\ No newline at end of file \ No newline at end of file
...@@ -5,16 +5,12 @@ import com.mortals.framework.exception.AppException; ...@@ -5,16 +5,12 @@ import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context; import com.mortals.framework.model.Context;
import com.mortals.framework.model.PageInfo; import com.mortals.framework.model.PageInfo;
import com.mortals.framework.model.Result; import com.mortals.framework.model.Result;
import com.mortals.framework.service.ICRUDCacheService;
import com.mortals.framework.service.ICRUDService; import com.mortals.framework.service.ICRUDService;
import com.mortals.xhx.module.matter.model.MatterEntity; import com.mortals.xhx.module.matter.model.MatterEntity;
import com.mortals.xhx.module.matter.model.MatterQuery; import com.mortals.xhx.module.matter.model.MatterQuery;
import com.mortals.xhx.module.matter.model.vo.MatterInfo; import com.mortals.xhx.module.matter.model.vo.MatterInfo;
import com.mortals.xhx.module.site.model.SiteEntity; import com.mortals.xhx.module.site.model.SiteEntity;
import com.mortals.xhx.module.site.model.SiteMatterEntity; import com.mortals.xhx.module.site.model.SiteMatterEntity;
import com.mortals.xhx.module.site.model.SiteMatterQuery;
import org.apache.poi.ss.formula.functions.T;
import org.w3c.dom.Document;
import java.util.Map; import java.util.Map;
...@@ -58,14 +54,21 @@ public interface MatterService extends ICRUDService<MatterEntity, Long> { ...@@ -58,14 +54,21 @@ public interface MatterService extends ICRUDService<MatterEntity, Long> {
Rest<String> buildMatterDetail(MatterEntity matterEntity, Context context); Rest<String> buildMatterDetail(MatterEntity matterEntity, Context context);
/** /**
* 添加业务到站点 * 添加事项到站点事项
* *
* @param matterEntity * @param matterEntity
* @param context * @param context
*/ */
Rest<SiteMatterEntity> switchMatterToSiteMatterr(MatterEntity matterEntity, SiteEntity siteEntity, Context context); Rest<SiteMatterEntity> switchMatterToSiteMatter(MatterEntity matterEntity, SiteEntity siteEntity, Context context);
/**
* 查找差集子项
* @param matterQuery
* @param pageInfo
* @param context
* @return
* @throws AppException
*/
Result<MatterEntity> findSubList(MatterEntity matterQuery, PageInfo pageInfo, Context context) throws AppException; Result<MatterEntity> findSubList(MatterEntity matterQuery, PageInfo pageInfo, Context context) throws AppException;
Result<MatterInfo> findMicroList(MatterQuery matterQuery, PageInfo pageInfo, Context context) throws AppException; Result<MatterInfo> findMicroList(MatterQuery matterQuery, PageInfo pageInfo, Context context) throws AppException;
......
...@@ -11,7 +11,6 @@ import com.mortals.framework.exception.AppException; ...@@ -11,7 +11,6 @@ import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context; import com.mortals.framework.model.Context;
import com.mortals.framework.model.PageInfo; import com.mortals.framework.model.PageInfo;
import com.mortals.framework.model.Result; import com.mortals.framework.model.Result;
import com.mortals.framework.service.impl.AbstractCRUDCacheServiceImpl;
import com.mortals.framework.service.impl.AbstractCRUDServiceImpl; import com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
import com.mortals.framework.util.DataUtil; import com.mortals.framework.util.DataUtil;
import com.mortals.xhx.base.framework.config.InterceptorConfig; import com.mortals.xhx.base.framework.config.InterceptorConfig;
...@@ -32,11 +31,11 @@ import com.mortals.xhx.module.matters.model.MattersEntity; ...@@ -32,11 +31,11 @@ import com.mortals.xhx.module.matters.model.MattersEntity;
import com.mortals.xhx.module.matters.model.MattersQuery; import com.mortals.xhx.module.matters.model.MattersQuery;
import com.mortals.xhx.module.matters.service.MattersDetailService; import com.mortals.xhx.module.matters.service.MattersDetailService;
import com.mortals.xhx.module.matters.service.MattersService; import com.mortals.xhx.module.matters.service.MattersService;
import com.mortals.xhx.module.site.model.SiteEntity; import com.mortals.xhx.module.site.model.*;
import com.mortals.xhx.module.site.model.SiteMatterEntity;
import com.mortals.xhx.module.site.model.SiteMatterQuery;
import com.mortals.xhx.module.site.service.SiteMatterService; import com.mortals.xhx.module.site.service.SiteMatterService;
import com.mortals.xhx.module.site.service.SiteService; import com.mortals.xhx.module.site.service.SiteService;
import com.mortals.xhx.module.site.service.SiteThemeMatterService;
import com.mortals.xhx.module.site.service.SiteThemeService;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.LogFactory;
import org.jsoup.Jsoup; import org.jsoup.Jsoup;
...@@ -89,14 +88,52 @@ public class MatterServiceImpl extends AbstractCRUDServiceImpl<MatterDao, Matter ...@@ -89,14 +88,52 @@ public class MatterServiceImpl extends AbstractCRUDServiceImpl<MatterDao, Matter
private DeptService deptService; private DeptService deptService;
@Autowired @Autowired
private MatterExtService matterExtService; private MatterExtService matterExtService;
@Autowired
private SiteThemeMatterService siteThemeMatterService;
@Autowired
private SiteThemeService siteThemeService;
@Override @Override
protected void saveBefore(MatterEntity entity, Context context) throws AppException { protected void saveBefore(MatterEntity entity, Context context) throws AppException {
//判断如果是自定义事项,需要更新区域编码
if (SourceEnum.自定义.getValue().equals(entity.getSource())) {
if (!ObjectUtils.isEmpty(entity.getSiteId())) {
SiteEntity siteEntity = siteService.get(entity.getSiteId(), context);
entity.setAreaCode(siteEntity.getAreaCode());
}
}
super.saveBefore(entity, context); super.saveBefore(entity, context);
} }
/**
* @param entity
* @param context
* @throws AppException
*/
@Override
protected void saveAfter(MatterEntity entity, Context context) throws AppException {
//主题添加自定义关联
if (!ObjectUtils.isEmpty(entity.getThemeCode())) {
SiteThemeEntity siteThemeEntity = siteThemeService.selectOne(new SiteThemeQuery().siteId(entity.getSiteId()).themeCode(entity.getThemeCode()));
SiteThemeMatterEntity siteThemeMatterEntity = new SiteThemeMatterEntity();
siteThemeMatterEntity.initAttrValue();
siteThemeMatterEntity.setThemeCode(entity.getThemeCode());
siteThemeMatterEntity.setSiteId(entity.getSiteId());
siteThemeMatterEntity.setSource(entity.getSource());
siteThemeMatterEntity.setMatterId(entity.getId());
siteThemeMatterEntity.setMatterCode(entity.getMatterNo());
siteThemeMatterEntity.setMatterName(entity.getMatterName());
siteThemeMatterEntity.setUserType(siteThemeEntity == null ? "2" : siteThemeEntity.getUserType());
siteThemeMatterEntity.setCreateTime(new Date());
siteThemeMatterEntity.setCreateUserId(this.getContextUserId(context));
siteThemeMatterService.save(siteThemeMatterEntity, context);
}
super.saveAfter(entity, context);
}
@Override @Override
protected void updateBefore(MatterEntity entity, Context context) throws AppException { protected void updateBefore(MatterEntity entity, Context context) throws AppException {
...@@ -169,7 +206,7 @@ public class MatterServiceImpl extends AbstractCRUDServiceImpl<MatterDao, Matter ...@@ -169,7 +206,7 @@ public class MatterServiceImpl extends AbstractCRUDServiceImpl<MatterDao, Matter
SiteMatterEntity siteMatterEntity = siteMatterService.selectOne(new SiteMatterQuery().siteId(siteId).matterId(item.getId())); SiteMatterEntity siteMatterEntity = siteMatterService.selectOne(new SiteMatterQuery().siteId(siteId).matterId(item.getId()));
if (ObjectUtils.isEmpty(siteMatterEntity)) { if (ObjectUtils.isEmpty(siteMatterEntity)) {
SiteEntity siteEntity = siteService.getCache(siteId.toString()); SiteEntity siteEntity = siteService.getCache(siteId.toString());
Rest<SiteMatterEntity> rest = switchMatterToSiteMatterr(item, siteEntity, context); Rest<SiteMatterEntity> rest = switchMatterToSiteMatter(item, siteEntity, context);
if (rest.getCode() == YesNoEnum.YES.getValue()) { if (rest.getCode() == YesNoEnum.YES.getValue()) {
return rest.getData(); return rest.getData();
} }
...@@ -178,7 +215,7 @@ public class MatterServiceImpl extends AbstractCRUDServiceImpl<MatterDao, Matter ...@@ -178,7 +215,7 @@ public class MatterServiceImpl extends AbstractCRUDServiceImpl<MatterDao, Matter
} }
@Override @Override
public Rest<SiteMatterEntity> switchMatterToSiteMatterr(MatterEntity item, SiteEntity siteEntity, Context context) { public Rest<SiteMatterEntity> switchMatterToSiteMatter(MatterEntity item, SiteEntity siteEntity, Context context) {
try { try {
DeptEntity deptEntity = deptService.getExtCache(item.getDeptCode()); DeptEntity deptEntity = deptService.getExtCache(item.getDeptCode());
SiteMatterEntity siteMatterEntity = new SiteMatterEntity(); SiteMatterEntity siteMatterEntity = new SiteMatterEntity();
......
...@@ -12,8 +12,11 @@ import com.mortals.framework.web.BaseCRUDJsonBodyMappingController; ...@@ -12,8 +12,11 @@ import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.framework.web.BasePhpCRUDJsonMappingController; import com.mortals.framework.web.BasePhpCRUDJsonMappingController;
import com.mortals.xhx.base.framework.config.InterceptorConfig; import com.mortals.xhx.base.framework.config.InterceptorConfig;
import com.mortals.xhx.base.system.param.service.ParamService; import com.mortals.xhx.base.system.param.service.ParamService;
import com.mortals.xhx.common.code.JointInfoShowEnum;
import com.mortals.xhx.module.matter.model.MatterEntity; import com.mortals.xhx.module.matter.model.MatterEntity;
import com.mortals.xhx.module.matter.service.MatterService; import com.mortals.xhx.module.matter.service.MatterService;
import com.mortals.xhx.module.site.model.SiteThemeQuery;
import com.mortals.xhx.module.site.service.SiteThemeService;
import org.apache.poi.ss.formula.functions.T; import org.apache.poi.ss.formula.functions.T;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
...@@ -44,6 +47,8 @@ public class MatterController extends BaseCRUDJsonBodyMappingController<MatterSe ...@@ -44,6 +47,8 @@ public class MatterController extends BaseCRUDJsonBodyMappingController<MatterSe
@Autowired @Autowired
private InterceptorConfig interceptorConfig; private InterceptorConfig interceptorConfig;
private SiteThemeService siteThemeService;
public MatterController() { public MatterController() {
super.setFormClass(MatterForm.class); super.setFormClass(MatterForm.class);
super.setModuleDesc("基础事项"); super.setModuleDesc("基础事项");
...@@ -84,6 +89,7 @@ public class MatterController extends BaseCRUDJsonBodyMappingController<MatterSe ...@@ -84,6 +89,7 @@ public class MatterController extends BaseCRUDJsonBodyMappingController<MatterSe
this.addDict(model, "parson", paramService.getParamBySecondOrganize("Matter", "parson")); this.addDict(model, "parson", paramService.getParamBySecondOrganize("Matter", "parson"));
this.addDict(model, "lengal", paramService.getParamBySecondOrganize("Matter", "lengal")); this.addDict(model, "lengal", paramService.getParamBySecondOrganize("Matter", "lengal"));
this.addDict(model, "source", paramService.getParamBySecondOrganize("Matter", "source")); this.addDict(model, "source", paramService.getParamBySecondOrganize("Matter", "source"));
this.addDict(model, "jointInfoShow", JointInfoShowEnum.getEnumMap());
Setting baseInfoSetting = interceptorConfig.getBaseInfoSetting(); Setting baseInfoSetting = interceptorConfig.getBaseInfoSetting();
Map<String, String> baseInfoMap = new HashMap<>(); Map<String, String> baseInfoMap = new HashMap<>();
...@@ -102,7 +108,9 @@ public class MatterController extends BaseCRUDJsonBodyMappingController<MatterSe ...@@ -102,7 +108,9 @@ public class MatterController extends BaseCRUDJsonBodyMappingController<MatterSe
} }
}); });
this.addDict(model, "sqclInfo", sqclInfoMap); this.addDict(model, "sqclInfo", sqclInfoMap);
//theme
Map<String, String> themeMap = siteThemeService.find(new SiteThemeQuery()).stream().collect(Collectors.toMap(x -> x.getThemeCode(), y -> y.getThemeName(), (o, n) -> n));
this.addDict(model, "theme", themeMap);
super.init(model, context); super.init(model, context);
} }
......
package com.mortals.xhx.module.skin.service.impl; package com.mortals.xhx.module.skin.service.impl;
import cn.hutool.core.util.StrUtil;
import com.mortals.framework.ap.GlobalSysInfo; import com.mortals.framework.ap.GlobalSysInfo;
import com.mortals.framework.exception.AppException; import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context; import com.mortals.framework.model.Context;
...@@ -81,10 +82,10 @@ public class SkinBaseServiceImpl extends AbstractCRUDServiceImpl<SkinBaseDao, Sk ...@@ -81,10 +82,10 @@ public class SkinBaseServiceImpl extends AbstractCRUDServiceImpl<SkinBaseDao, Sk
item.setSkinFieldList(skinFieldEntities); item.setSkinFieldList(skinFieldEntities);
if (!ObjectUtils.isEmpty(item.getPreviewImagePath())) { if (!ObjectUtils.isEmpty(item.getPreviewImagePath())) {
item.setPreviewImagePath(GlobalSysInfo.getParamValue(Constant.DOMAIN, "http://192.168.0.98:11071/") + item.getPreviewImagePath()); item.setPreviewImagePath(StrUtil.removeAllLineBreaks(GlobalSysInfo.getParamValue(Constant.DOMAIN, "http://192.168.0.98:11071/") )+ item.getPreviewImagePath());
} }
if (!ObjectUtils.isEmpty(item.getCssFilePath())) { if (!ObjectUtils.isEmpty(item.getCssFilePath())) {
item.setCssFilePath(GlobalSysInfo.getParamValue(Constant.DOMAIN, "http://192.168.0.98:11071/") + item.getCssFilePath()); item.setCssFilePath(StrUtil.removeAllLineBreaks(GlobalSysInfo.getParamValue(Constant.DOMAIN, "http://192.168.0.98:11071/") )+ item.getCssFilePath());
} }
}); });
super.findAfter(entity, pageInfo, context, list); super.findAfter(entity, pageInfo, context, list);
...@@ -92,7 +93,7 @@ public class SkinBaseServiceImpl extends AbstractCRUDServiceImpl<SkinBaseDao, Sk ...@@ -92,7 +93,7 @@ public class SkinBaseServiceImpl extends AbstractCRUDServiceImpl<SkinBaseDao, Sk
private void updateUrl(SkinFieldEntity field) { private void updateUrl(SkinFieldEntity field) {
if ("2".equals(field.getFieldType())) { if ("2".equals(field.getFieldType())) {
field.setFieldValue(GlobalSysInfo.getParamValue(Constant.DOMAIN, "http://192.168.0.98:11071/") + field.getFieldValue()); field.setFieldValue(StrUtil.removeAllLineBreaks(GlobalSysInfo.getParamValue(Constant.DOMAIN, "http://192.168.0.98:11071/")) + field.getFieldValue());
} }
} }
......
package com.mortals.xhx.module.skin.web; package com.mortals.xhx.module.skin.web;
import cn.hutool.core.util.StrUtil;
import com.mortals.framework.ap.GlobalSysInfo; import com.mortals.framework.ap.GlobalSysInfo;
import com.mortals.framework.exception.AppException; import com.mortals.framework.exception.AppException;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController; import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
...@@ -89,7 +90,7 @@ public class SkinBaseController extends BaseCRUDJsonBodyMappingController<SkinBa ...@@ -89,7 +90,7 @@ public class SkinBaseController extends BaseCRUDJsonBodyMappingController<SkinBa
private void updateUrl(SkinFieldEntity field) { private void updateUrl(SkinFieldEntity field) {
if ("2".equals(field.getFieldType())) { if ("2".equals(field.getFieldType())) {
field.setFieldValue(GlobalSysInfo.getParamValue(Constant.DOMAIN, "http://192.168.0.98:11071/") + field.getFieldValue()); field.setFieldValue(StrUtil.removeAllLineBreaks(GlobalSysInfo.getParamValue(Constant.DOMAIN, "http://192.168.0.98:11071/")) + field.getFieldValue());
} }
} }
......
...@@ -56,13 +56,13 @@ ...@@ -56,13 +56,13 @@
<!-- level 用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,还有一个特俗值INHERITED或者同义词NULL,代表强制执行上级的级别。如果未设置此属性,那么当前logger将会继承上级的级别--> <!-- level 用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,还有一个特俗值INHERITED或者同义词NULL,代表强制执行上级的级别。如果未设置此属性,那么当前logger将会继承上级的级别-->
<!-- additivity 是否向上级logger传递打印信息。默认是true。false:表示只用当前logger的appender-ref。true:表示当前logger的appender-ref和rootLogger的appender-ref都有效。--> <!-- additivity 是否向上级logger传递打印信息。默认是true。false:表示只用当前logger的appender-ref。true:表示当前logger的appender-ref和rootLogger的appender-ref都有效。-->
<logger name="com.mortals" level="INFO" additivity="false"> <logger name="com.mortals" level="${logLevel}" additivity="false">
<appender-ref ref="console"/> <appender-ref ref="console"/>
<appender-ref ref="fileInfo"/> <appender-ref ref="fileInfo"/>
<appender-ref ref="fileError"/> <appender-ref ref="fileError"/>
</logger> </logger>
<logger name="com.mortals.xhx.module" level="debug" additivity="false"> <logger name="com.mortals.xhx.module" level="${logLevel}" additivity="false">
<appender-ref ref="console"/> <appender-ref ref="console"/>
<appender-ref ref="fileInfo"/> <appender-ref ref="fileInfo"/>
<appender-ref ref="fileError"/> <appender-ref ref="fileError"/>
......
...@@ -15,11 +15,9 @@ client.global.set("authToken", JSON.parse(response.body).data.token); ...@@ -15,11 +15,9 @@ client.global.set("authToken", JSON.parse(response.body).data.token);
###自助终端应用列表 ###自助终端应用列表
POST {{baseUrl}}/app/list POST {{baseUrl}}/app/list
Authorization: {{authToken}}
Content-Type: application/json Content-Type: application/json
{ {
"idList":[19,22,20],
"page":1, "page":1,
"size":-1 "size":-1
} }
......
...@@ -5,7 +5,7 @@ Content-Type: application/json ...@@ -5,7 +5,7 @@ Content-Type: application/json
{ {
"page": 1, "page": 1,
"siteBusinessName": "%不动产抵押登记%", "matterId": 123,
"siteId": 53, "siteId": 53,
"size": 10 "size": 10
} }
......
...@@ -20,7 +20,9 @@ POST {{baseUrl}}/matter/list ...@@ -20,7 +20,9 @@ POST {{baseUrl}}/matter/list
Content-Type: application/json Content-Type: application/json
{ {
"idList": [1,2], "siteId": "",
"matterName": "%对墓穴占地面积超过标准的处罚%",
"deptCode":"",
"page": 1, "page": 1,
"size": 10 "size": 10
} }
...@@ -30,7 +32,7 @@ POST {{baseUrl}}/micro/matter/list ...@@ -30,7 +32,7 @@ POST {{baseUrl}}/micro/matter/list
Content-Type: application/json Content-Type: application/json
{ {
"idList": [1,2], "matterName": "%对墓穴占地面积超过标准的处罚%",
"page": 1, "page": 1,
"size": 10 "size": 10
} }
...@@ -124,7 +126,7 @@ client.global.set("Matter_id", JSON.parse(response.body).data.id); ...@@ -124,7 +126,7 @@ client.global.set("Matter_id", JSON.parse(response.body).data.id);
%} %}
###基础事项查看 ###基础事项查看
GET {{baseUrl}}/matter/info?id=1 GET {{baseUrl}}/matter/info?id=5809
Accept: application/json Accept: application/json
###基础事项编辑 ###基础事项编辑
......
...@@ -4,7 +4,8 @@ POST {{baseUrl}}/site/matter/list ...@@ -4,7 +4,8 @@ POST {{baseUrl}}/site/matter/list
Content-Type: application/json Content-Type: application/json
{ {
"siteId":21 , "siteId":35,
"matterId": 5809,
"page":1, "page":1,
"size":10 "size":10
} }
......
...@@ -15,15 +15,10 @@ client.global.set("authToken", JSON.parse(response.body).data.token); ...@@ -15,15 +15,10 @@ client.global.set("authToken", JSON.parse(response.body).data.token);
###主题列表 ###主题列表
POST {{baseUrl}}/site/theme/list POST {{baseUrl}}/site/theme/list
Authorization: {{authToken}}
Content-Type: application/json Content-Type: application/json
{ {
"siteId":149, "siteId":3,
"userType":"0ee9bm",
"themeCode":"p2seel",
"themeName":"2unqht",
"updatetime":"1669132800000"
"page":1, "page":1,
"size":10 "size":10
} }
......
...@@ -4,7 +4,7 @@ Content-Type: application/json ...@@ -4,7 +4,7 @@ Content-Type: application/json
{ {
"loginName":"admin", "loginName":"admin",
"password":"admin", "password":"adsmile",
"securityCode":"8888" "securityCode":"8888"
} }
...@@ -15,19 +15,11 @@ client.global.set("authToken", JSON.parse(response.body).data.token); ...@@ -15,19 +15,11 @@ client.global.set("authToken", JSON.parse(response.body).data.token);
###站点主题事项列表 ###站点主题事项列表
POST {{baseUrl}}/site/theme/matter/list POST {{baseUrl}}/site/theme/matter/list
Authorization: {{authToken}}
Content-Type: application/json Content-Type: application/json
{ {
"siteId":41, "siteId":3,
"siteName":"fzbhd9", "matterId":5809,
"matterId":736,
"matterName":"dhnjnq",
"matterCode":"g61fxt",
"userType":"xd2eec",
"themeCode":"60d2h2",
"themeName":"gcfnnz",
"source":261,
"page":1, "page":1,
"size":10 "size":10
} }
...@@ -55,7 +47,7 @@ client.global.set("SiteThemeMatter_id", JSON.parse(response.body).data.id); ...@@ -55,7 +47,7 @@ client.global.set("SiteThemeMatter_id", JSON.parse(response.body).data.id);
%} %}
###站点主题事项查看 ###站点主题事项查看
GET {{baseUrl}}/site/theme/matter/info?id={{SiteThemeMatter_id}} GET {{baseUrl}}/site/theme/matter/info?id=52237
Authorization: {{authToken}} Authorization: {{authToken}}
Accept: application/json Accept: application/json
......
...@@ -272,8 +272,8 @@ socket=/tmp/mysql.sock ...@@ -272,8 +272,8 @@ socket=/tmp/mysql.sock
#bin/mysqld --initialize-insecure --user=mysql --datadir=${MYSQL_DATA_PATH} --basedir=${MYSQL_EXECPATH} --socket=/tmp/mysql.sock #bin/mysqld --initialize-insecure --user=mysql --datadir=${MYSQL_DATA_PATH} --basedir=${MYSQL_EXECPATH} --socket=/tmp/mysql.sock
#创建软连接 #创建软连接
rm -m /etc/init.d/mysql rm -f /etc/init.d/mysql
rm -m /usr/bin/mysql rm -f /usr/bin/mysql
ln -s ${MYSQL_EXECPATH}/support-files/mysql.server /etc/init.d/mysql ln -s ${MYSQL_EXECPATH}/support-files/mysql.server /etc/init.d/mysql
ln -s ${MYSQL_EXECPATH}/bin/mysql /usr/bin/mysql ln -s ${MYSQL_EXECPATH}/bin/mysql /usr/bin/mysql
# export PATH=$PATH:${MYSQL_EXECPATH}/bin # export PATH=$PATH:${MYSQL_EXECPATH}/bin
...@@ -282,6 +282,8 @@ socket=/tmp/mysql.sock ...@@ -282,6 +282,8 @@ socket=/tmp/mysql.sock
# mysql -uroot -p123 <${BASEDIR}/soft/${MYSQL}/user.sql # mysql -uroot -p123 <${BASEDIR}/soft/${MYSQL}/user.sql
# sed -i "s/skip-grant-tables/#skip-grant-tables/g" ${MYSQL_CONF_PATH} # sed -i "s/skip-grant-tables/#skip-grant-tables/g" ${MYSQL_CONF_PATH}
#service mysql restart #service mysql restart
writelog $MYSQL_SERVICE
echo" echo"
[Unit] [Unit]
Description=MySQL Server Description=MySQL Server
...@@ -298,7 +300,7 @@ ExecReload= /etc/init.d/mysql restart ...@@ -298,7 +300,7 @@ ExecReload= /etc/init.d/mysql restart
LimitNOFILE = 5000 LimitNOFILE = 5000
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target
">${MYSQL_CONF_PATH} ">${MYSQL_SERVICE}
systemctl enable mysql systemctl enable mysql
systemctl daemon-reload systemctl daemon-reload
......
...@@ -25,6 +25,16 @@ ...@@ -25,6 +25,16 @@
<common-lib.version>0.0.1-SNAPSHOT</common-lib.version> <common-lib.version>0.0.1-SNAPSHOT</common-lib.version>
</properties> </properties>
<repositories>
<repository>
<id>aliyun</id>
<name>aliyun Repository</name>
<url>https://maven.aliyun.com/repository/public</url>
</repository>
</repositories>
<dependencyManagement> <dependencyManagement>
<dependencies> <dependencies>
<dependency> <dependency>
...@@ -93,6 +103,15 @@ ...@@ -93,6 +103,15 @@
<useDefaultDelimiters>false</useDefaultDelimiters> <useDefaultDelimiters>false</useDefaultDelimiters>
</configuration> </configuration>
</plugin> </plugin>
<!-- 打包跳过测试 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
</plugins> </plugins>
</build> </build>
</project> </project>
\ No newline at end of file
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
"highlight.js": "^11.5.1", "highlight.js": "^11.5.1",
"js-export-excel": "^1.1.4", "js-export-excel": "^1.1.4",
"lodash": "^4.17.21", "lodash": "^4.17.21",
"moment": "^2.29.4",
"qs": "^6.10.3", "qs": "^6.10.3",
"vue": "^2.6.14", "vue": "^2.6.14",
"vue-highlightjs": "^1.3.3", "vue-highlightjs": "^1.3.3",
...@@ -35,7 +36,8 @@ ...@@ -35,7 +36,8 @@
"less": "^4.0.0", "less": "^4.0.0",
"less-loader": "^8.0.0", "less-loader": "^8.0.0",
"postcss": "^8.4.12", "postcss": "^8.4.12",
"vue-template-compiler": "^2.6.14" "vue-template-compiler": "^2.6.14",
"webpack-bundle-analyzer": "^4.7.0"
} }
}, },
"node_modules/@achrinza/node-ipc": { "node_modules/@achrinza/node-ipc": {
......
...@@ -38,7 +38,8 @@ ...@@ -38,7 +38,8 @@
"less": "^4.0.0", "less": "^4.0.0",
"less-loader": "^8.0.0", "less-loader": "^8.0.0",
"postcss": "^8.4.12", "postcss": "^8.4.12",
"vue-template-compiler": "^2.6.14" "vue-template-compiler": "^2.6.14",
"webpack-bundle-analyzer": "^4.7.0"
}, },
"browserslist": [ "browserslist": [
"> 1%", "> 1%",
......
...@@ -34,7 +34,7 @@ ...@@ -34,7 +34,7 @@
<profiles.log.level>INFO</profiles.log.level> <profiles.log.level>INFO</profiles.log.level>
<profiles.log.path>/mortals/app/logs</profiles.log.path> <profiles.log.path>/mortals/app/logs</profiles.log.path>
<package.environment>test</package.environment> <package.environment>test</package.environment>
<skipDeploy>false</skipDeploy> <skipUi>false</skipUi>
</properties> </properties>
</profile> </profile>
<profile> <profile>
...@@ -54,7 +54,7 @@ ...@@ -54,7 +54,7 @@
<profiles.log.level>INFO</profiles.log.level> <profiles.log.level>INFO</profiles.log.level>
<profiles.log.path>/home/mortals/app/logs</profiles.log.path> <profiles.log.path>/home/mortals/app/logs</profiles.log.path>
<package.environment>test</package.environment> <package.environment>test</package.environment>
<skipDeploy>false</skipDeploy> <skipUi>true</skipUi>
</properties> </properties>
</profile> </profile>
<profile> <profile>
...@@ -74,30 +74,30 @@ ...@@ -74,30 +74,30 @@
<profiles.log.level>INFO</profiles.log.level> <profiles.log.level>INFO</profiles.log.level>
<profiles.log.path>/home/mortals/app/logs</profiles.log.path> <profiles.log.path>/home/mortals/app/logs</profiles.log.path>
<package.environment>build</package.environment> <package.environment>build</package.environment>
<skipDeploy>false</skipDeploy> <skipUi>true</skipUi>
</properties> </properties>
</profile> </profile>
<profile> <profile>
<id>yibin</id> <id>yibin</id>
<properties> <properties>
<profiles.active>yibin</profiles.active> <profiles.active>yibin</profiles.active>
<profiles.server.path>/zwfw</profiles.server.path> <profiles.server.path>/zwfw</profiles.server.path>
<profiles.publish.path>/home/publish</profiles.publish.path> <profiles.publish.path>/home/publish</profiles.publish.path>
<profiles.rabbitmq.host>127.0.0.1</profiles.rabbitmq.host> <profiles.rabbitmq.host>172.15.28.115</profiles.rabbitmq.host>
<profiles.rabbitmq.port>5672</profiles.rabbitmq.port> <profiles.rabbitmq.port>5672</profiles.rabbitmq.port>
<profiles.rabbitmq.username>root_mq</profiles.rabbitmq.username> <profiles.rabbitmq.username>taxi_mq</profiles.rabbitmq.username>
<profiles.rabbitmq.password>xhx@2022</profiles.rabbitmq.password> <profiles.rabbitmq.password>admin@2020</profiles.rabbitmq.password>
<profiles.rabbitmq.virtualhost>/</profiles.rabbitmq.virtualhost> <profiles.rabbitmq.virtualhost>/</profiles.rabbitmq.virtualhost>
<profiles.nacos.server-addr>127.0.0.1:8848</profiles.nacos.server-addr> <profiles.nacos.server-addr>172.15.28.120:8848</profiles.nacos.server-addr>
<profiles.nacos.group>DEFAULT_GROUP</profiles.nacos.group> <profiles.nacos.group>DEFAULT_GROUP</profiles.nacos.group>
<profiles.nacos.namespace>smart-gov</profiles.nacos.namespace> <profiles.nacos.namespace>smart-gov</profiles.nacos.namespace>
<profiles.log.level>INFO</profiles.log.level> <profiles.log.level>INFO</profiles.log.level>
<profiles.log.path>/home/mortals/app/logs</profiles.log.path> <profiles.log.path>/home/mortals/app/logs</profiles.log.path>
<package.environment>yibin</package.environment> <package.environment>yibin</package.environment>
<skipDeploy>false</skipDeploy> <skipUi>true</skipUi>
</properties> </properties>
</profile> </profile>
</profiles> </profiles>
<properties> <properties>
</properties> </properties>
...@@ -246,7 +246,7 @@ ...@@ -246,7 +246,7 @@
<artifactId>exec-maven-plugin</artifactId> <artifactId>exec-maven-plugin</artifactId>
<version>1.6.0</version> <version>1.6.0</version>
<configuration> <configuration>
<skip>${skipDeploy}</skip> <skip>${skipUi}</skip>
</configuration> </configuration>
<executions> <executions>
<execution> <execution>
...@@ -309,7 +309,7 @@ ...@@ -309,7 +309,7 @@
<goal>single</goal> <goal>single</goal>
</goals> </goals>
<configuration> <configuration>
<skipAssembly>${skipDeploy}</skipAssembly> <skipAssembly>${skipUi}</skipAssembly>
<finalName>${project.artifactId}-ui</finalName> <finalName>${project.artifactId}-ui</finalName>
<appendAssemblyId>false</appendAssemblyId> <appendAssemblyId>false</appendAssemblyId>
<descriptors> <descriptors>
......
...@@ -88,20 +88,20 @@ ...@@ -88,20 +88,20 @@
<profiles.server.ip>192.168.2.144</profiles.server.ip> <profiles.server.ip>192.168.2.144</profiles.server.ip>
<profiles.server.port>17214</profiles.server.port> <profiles.server.port>17214</profiles.server.port>
<profiles.nginx.port>11078</profiles.nginx.port> <profiles.nginx.port>11078</profiles.nginx.port>
<profiles.rabbitmq.host>127.0.0.1</profiles.rabbitmq.host> <profiles.rabbitmq.host>172.15.28.115</profiles.rabbitmq.host>
<profiles.rabbitmq.port>5672</profiles.rabbitmq.port> <profiles.rabbitmq.port>5672</profiles.rabbitmq.port>
<profiles.rabbitmq.username>taxi_mq</profiles.rabbitmq.username> <profiles.rabbitmq.username>taxi_mq</profiles.rabbitmq.username>
<profiles.rabbitmq.password>admin@2020</profiles.rabbitmq.password> <profiles.rabbitmq.password>admin@2020</profiles.rabbitmq.password>
<profiles.rabbitmq.virtualhost>/</profiles.rabbitmq.virtualhost> <profiles.rabbitmq.virtualhost>/</profiles.rabbitmq.virtualhost>
<profiles.nacos.server-addr>127.0.0.1:8848</profiles.nacos.server-addr> <profiles.nacos.server-addr>172.15.28.120:8848</profiles.nacos.server-addr>
<profiles.nacos.group>DEFAULT_GROUP</profiles.nacos.group> <profiles.nacos.group>DEFAULT_GROUP</profiles.nacos.group>
<profiles.nacos.namespace>smart-gov</profiles.nacos.namespace> <profiles.nacos.namespace>smart-gov</profiles.nacos.namespace>
<profiles.log.level>INFO</profiles.log.level> <profiles.log.level>INFO</profiles.log.level>
<profiles.log.path>/home/mortals/app/logs</profiles.log.path> <profiles.log.path>/home/mortals/app/logs</profiles.log.path>
<profiles.publish.path>/home/publish</profiles.publish.path> <profiles.publish.path>/home/publish</profiles.publish.path>
</properties> </properties>
</profile> </profile>
</profiles> </profiles>
<properties> <properties>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment