master
jia 2024-05-01 10:09:17 +08:00
parent ac2e093631
commit 458c3c2203
49 changed files with 1407 additions and 11 deletions

View File

@ -4,6 +4,7 @@
<file url="file://$PROJECT_DIR$/bwie-auth/src/main/java" charset="UTF-8" /> <file url="file://$PROJECT_DIR$/bwie-auth/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/bwie-common/src/main/java" charset="UTF-8" /> <file url="file://$PROJECT_DIR$/bwie-common/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/bwie-gateway/src/main/java" charset="UTF-8" /> <file url="file://$PROJECT_DIR$/bwie-gateway/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/bwie-modules/bwie-authen/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/bwie-modules/bwie-system/src/main/java" charset="UTF-8" /> <file url="file://$PROJECT_DIR$/bwie-modules/bwie-system/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/bwie-modules/bwie-team/src/main/java" charset="UTF-8" /> <file url="file://$PROJECT_DIR$/bwie-modules/bwie-team/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/bwie-modules/bwie-xxl/src/main/java" charset="UTF-8" /> <file url="file://$PROJECT_DIR$/bwie-modules/bwie-xxl/src/main/java" charset="UTF-8" />

View File

@ -0,0 +1,6 @@
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="AliAccessStaticViaInstance" enabled="true" level="WARNING" enabled_by_default="true" />
</profile>
</component>

View File

@ -8,5 +8,5 @@
</list> </list>
</option> </option>
</component> </component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="17" project-jdk-type="JavaSDK" /> <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK" />
</project> </project>

View File

@ -0,0 +1,124 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Palette2">
<group name="Swing">
<item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
</item>
<item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
</item>
<item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
</item>
<item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.svg" removable="false" auto-create-binding="false" can-attach-label="true">
<default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
</item>
<item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
<initial-values>
<property name="text" value="Button" />
</initial-values>
</item>
<item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
<initial-values>
<property name="text" value="RadioButton" />
</initial-values>
</item>
<item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
<initial-values>
<property name="text" value="CheckBox" />
</initial-values>
</item>
<item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
<initial-values>
<property name="text" value="Label" />
</initial-values>
</item>
<item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
</item>
<item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
<preferred-size width="200" height="200" />
</default-constraints>
</item>
<item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
<preferred-size width="200" height="200" />
</default-constraints>
</item>
<item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
</item>
<item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
</item>
<item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
</item>
<item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
</item>
<item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
<preferred-size width="-1" height="20" />
</default-constraints>
</item>
<item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
</item>
<item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
</item>
</group>
</component>
</project>

View File

@ -0,0 +1,48 @@
package com.bwie.common.domain;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
import java.util.Date;
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName("group")
public class Team {
private Long id;
private Long goodsSpuId;
private String title;
private String groupIntroduce;
private Date groupStart;
private String unit;
private Date groupEnd;
private Integer hours;
private Integer groupPeople;
private Integer groupNum;
private Integer sort;
private BigDecimal groupOrigin;
private Integer freightStatus;
private Integer activityStatus;
private Date createTime;
private Date updateTime;
private Integer isDelete;
}

View File

@ -0,0 +1,74 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.bwie</groupId>
<artifactId>bwie-modules</artifactId>
<version>1.0.0</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>bwie-authen</artifactId>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<!-- 系统公共 依赖 -->
<dependency>
<groupId>com.bwie</groupId>
<artifactId>bwie-common</artifactId>
</dependency>
<!-- SpringBoot Web-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.8</version>
</dependency>
<!-- Mysql Connector -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- Mybatis 依赖配置 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.2</version>
</dependency>
<!-- Pagehelper -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.4.1</version>
</dependency>
<!-- test -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- oss sdk-->
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.10.2</version>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-codec-http</artifactId>
</dependency>
</dependencies>
</project>

View File

@ -0,0 +1,14 @@
package com.bwie.authen;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
@EnableDiscoveryClient
public class AuthenApp {
public static void main(String[] args) {
SpringApplication.run(AuthenApp.class);
}
}

View File

@ -0,0 +1,63 @@
package com.bwie.authen.controller;
import com.bwie.authen.service.AuthenService;
import com.bwie.authen.vo.AliveReq;
import com.bwie.authen.vo.AuthenReq;
import com.bwie.authen.vo.IdCheckReq;
import com.bwie.authen.vo.OCRReq;
import com.bwie.common.result.Result;
import com.fasterxml.jackson.core.JsonProcessingException;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.Map;
import java.util.concurrent.ExecutionException;
@RestController
public class AuthenController {
private final AuthenService authenService;
public AuthenController(AuthenService authenService) {
this.authenService = authenService;
}
@PostMapping("ocrScan")
public Result ocrScan(@RequestBody OCRReq ocrReq) throws IOException {
Result result = authenService.ocrScan(ocrReq);
return result;
}
@PostMapping("commitAuthen")
public Result commitAuthen(@RequestBody AuthenReq authenReq) throws ExecutionException, InterruptedException {
Result result = authenService.commitAuthen(authenReq);
return result;
}
@PostMapping("upload")
public Result upload(@RequestParam("file")MultipartFile multipartFile) throws IOException {
String upload = authenService.upload(multipartFile);
return Result.success(upload);
}
@PostMapping("idCheck")
public Result idCheck(@RequestBody IdCheckReq ocrReq) {
Result result = authenService.idCheck(ocrReq);
return result;
}
@PostMapping("alive")
public Result alive(@RequestBody AliveReq ocrReq) {
Result result = authenService.alive(ocrReq);
return result;
}
}

View File

@ -0,0 +1,33 @@
package com.bwie.authen.service;
import com.bwie.authen.vo.AliveReq;
import com.bwie.authen.vo.AuthenReq;
import com.bwie.authen.vo.IdCheckReq;
import com.bwie.authen.vo.OCRReq;
import com.bwie.common.result.Result;
import com.fasterxml.jackson.core.JsonProcessingException;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.Map;
import java.util.concurrent.ExecutionException;
public interface AuthenService {
Result ocrScan(OCRReq ocrReq) throws IOException;
Result commitAuthen(AuthenReq authenReq) throws ExecutionException, InterruptedException;
String upload(MultipartFile multipartFile) throws IOException;
Result idCheck(IdCheckReq ocrReq);
Result alive(AliveReq ocrReq);
}

View File

@ -0,0 +1,125 @@
package com.bwie.authen.service;
import com.bwie.authen.util.*;
import com.bwie.authen.vo.*;
import com.bwie.common.result.Result;
import lombok.extern.log4j.Log4j2;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.io.Serializable;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.stream.Collectors;
@Service
@Log4j2
public class AuthenServiceImpl implements AuthenService{
private final OSSupload osSupload;
private final IdCheckUtil idCheckUtil;
private final OCRUtil ocrUtil;
private final AliveUtil aliveUtil;
private final ThreadPoolExecutorConfig config;
public AuthenServiceImpl(OSSupload osSupload, IdCheckUtil idCheckUtil, OCRUtil ocrUtil, AliveUtil aliveUtil, ThreadPoolExecutorConfig config) {
this.osSupload = osSupload;
this.idCheckUtil = idCheckUtil;
this.ocrUtil = ocrUtil;
this.aliveUtil = aliveUtil;
this.config = config;
}
@Override
public Result ocrScan(OCRReq ocrReq) throws IOException {
OCRResponse send = ocrUtil.send(ocrReq);
return Result.success(send);
}
@Override
public Result commitAuthen(AuthenReq authenReq) throws ExecutionException, InterruptedException {
ThreadPoolExecutor threadPoolExecutor = config.threadPoolExecutor();
CompletableFuture<Integer> f1 = CompletableFuture.supplyAsync(() -> {
IdCheckReq idCheckReq = new IdCheckReq();
idCheckReq.setName(authenReq.getName());
idCheckReq.setIdCardNo(authenReq.getIdCord());
IdCheckResponse idcheck = idCheckUtil.idcheck(idCheckReq);
return idcheck.getIdData().getResult();
},threadPoolExecutor);
CompletableFuture<? extends Serializable> f2= CompletableFuture.supplyAsync(() -> {
String upload = null;
try {
upload = osSupload.upload(authenReq.getMovie());
} catch (IOException e) {
throw new RuntimeException(e);
}
if(upload==null){
return false;
}
//url添加数据库
AliveReq aliveReq = new AliveReq();
aliveReq.setUrl(upload);
aliveReq.setMotions(authenReq.getMotions());
AliveRes alive = aliveUtil.alive(aliveReq);
String success = alive.getSuccess();
return success;
},threadPoolExecutor);
CompletableFuture<Integer> f3 = CompletableFuture.supplyAsync(() -> {
String upload = null;
try {
upload = osSupload.upload(authenReq.getImg2());
} catch (IOException e) {
throw new RuntimeException(e);
}
String upload2 = null;
try {
upload2 = osSupload.upload(authenReq.getMovie());
} catch (IOException e) {
throw new RuntimeException(e);
}
if(upload==null ||upload2==null){
return 1;
}
//存入数据库
return 0;
},threadPoolExecutor);
Integer i = f1.get();
Serializable serializable = f2.get();
Integer b1 = f3.get();
if ((i == 0) && serializable.equals("true")||b1==0) {
return Result.success();
}
return Result.error();
}
@Override
public String upload(MultipartFile multipartFile) throws IOException {
return osSupload.upload(multipartFile);
}
@Override
public Result idCheck(IdCheckReq ocrReq) {
IdCheckResponse idcheck = idCheckUtil.idcheck(ocrReq);
return Result.success(idcheck);
}
@Override
public Result alive(AliveReq ocrReq) {
AliveRes alive = aliveUtil.alive(ocrReq);
return Result.success(alive);
}
}

View File

@ -0,0 +1,62 @@
package com.bwie.authen.util;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSON;
import com.bwie.authen.vo.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import java.util.HashMap;
import java.util.Map;
@Configuration
public class AliveUtil {
@Value("${alive.appcode}")
private String appcode;
@Value("${alive.host}")
private String host;
public AliveRes alive(AliveReq aliveReq){
Map stringStringMap = new HashMap<>();
stringStringMap.put("url", aliveReq.getUrl());
stringStringMap.put("motions", aliveReq.getMotions());
String result = HttpUtil.createPost(host ) // 不在URL中拼接查询参数因为我们将它们放在请求体中
.header("Authorization", "APPCODE " + appcode)
.form(stringStringMap)
.execute()
.body();
System.out.println("result = " + result);
AliveRes aliveRes = JSON.parseObject(result, AliveRes.class);
AliveData aliveData = JSON.parseObject(aliveRes.getData(), AliveData.class);
AliveMotions aliveMotions = JSON.parseObject(aliveData.getMotions(), AliveMotions.class);
aliveData.setAliveMotions(aliveMotions);
aliveRes.setAliveData(aliveData);
// msgResponse.setIdData(idData);
if(aliveRes.getCode()!=200){
System.out.println("msgResponse = -------------------" + aliveRes.getMsg());
throw new RuntimeException(aliveRes.getMsg());
}
return aliveRes;
}
}

View File

@ -0,0 +1,70 @@
package com.bwie.authen.util;
import cn.hutool.http.HttpResponse;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.bwie.authen.vo.IdCheckReq;
import com.bwie.authen.vo.IdCheckResponse;
import com.bwie.authen.vo.IdData;
import org.apache.http.util.EntityUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import java.util.HashMap;
import java.util.Map;
@Configuration
public class IdCheckUtil {
@Value("${idcheck.appcode}")
private String appcode;
@Value("${idcheck.host}")
private String host;
@Value("${idcheck.path}")
private String path;
public IdCheckResponse idcheck(IdCheckReq idCheckReq){
Map stringStringMap = new HashMap<>();
stringStringMap.put("name", idCheckReq.getName());
stringStringMap.put("idCardNo", idCheckReq.getIdCardNo());
String result = HttpUtil.createPost(host + path) // 不在URL中拼接查询参数因为我们将它们放在请求体中
.header("Authorization", "APPCODE " + appcode)
.form(stringStringMap)
.execute()
.body();
System.out.println("result = " + result);
IdCheckResponse msgResponse = JSON.parseObject(result, IdCheckResponse.class);
IdData idData = JSON.parseObject(msgResponse.getData(), IdData.class);
msgResponse.setIdData(idData);
if(msgResponse.getCode()!=200){
System.out.println("msgResponse = -------------------" + msgResponse);
throw new RuntimeException(msgResponse.getMsg());
}
return msgResponse;
}
}

View File

@ -0,0 +1,90 @@
package com.bwie.authen.util;
import cn.hutool.core.codec.Base64;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.bwie.authen.vo.OCRReq;
import com.bwie.authen.vo.OCRResponse;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;
@Configuration
public class OCRUtil {
@Value("${ocr.appcode}")
private String appcode;
@Value("${ocr.host}")
private String host;
@Value("${ocr.Content-Type}")
private String contentType;
@Value("${ocr.path}")
private String path;
public OCRResponse send(OCRReq ocrReq) throws IOException {
// 对图像进行base64编码
String encode = Base64.encode(ocrReq.getUrl().getBytes());
// 拼装请求body的json字符串
JSONObject requestObj = new JSONObject();
requestObj.put("image", encode);
requestObj.put("side", ocrReq.getSide()); // 假设ocrReq有getSide()方法返回要识别的身份证面(正/反)
// 如果API还有其他配置参数可以从ocrReq中获取并添加到requestObj中
String bodys = requestObj.toString();
try {
// 创建并执行POST请求
String result = HttpUtil.createPost(host + path) // 不在URL中拼接查询参数因为我们将它们放在请求体中
.header("Authorization", "APPCODE " + appcode)
.header("Content-Type", contentType) // 确保这里与headers中的Content-Type一致
.body(bodys) // 设置请求体
.execute()
.body();
System.out.println("result = " + result);
OCRResponse msgResponse = JSON.parseObject(result, OCRResponse.class);
// 检查是否成功而不是使用AssertAssert通常用于测试
if (!msgResponse.equals("true")) {
// 处理失败情况,例如记录日志或返回错误信息给调用者
throw new RuntimeException("扫描失败" ); // 假设OCRResponse有一个getErrorMessage方法
}
// 成功处理逻辑
return msgResponse;
} catch (Exception e) {
// 处理异常,例如记录日志或返回错误信息给调用者
e.printStackTrace();
throw new RuntimeException("请求OCR服务时发生异常", e);
}
}
}

View File

@ -0,0 +1,105 @@
package com.bwie.authen.util;
import com.aliyun.oss.OSSClient;
import com.aliyun.oss.model.ObjectMetadata;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.multipart.MultipartFile;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.security.SecureRandom;
import java.text.SimpleDateFormat;
import java.util.Date;
@Log4j2
@Configuration
public class OSSupload {
@Value("${aliyun.end-point}")
private String endPoint;
@Value("${aliyun.access-key-id}")
private String accessKeyId;
@Value("${aliyun.access-key-secret}")
private String accesskeySecret;
// @Value("${aliyun.access-pre}")
// private String accessPre;
@Value("${aliyun.bucket-name}")
private String bucketName;
public String upload(MultipartFile multipartFile) throws IOException {
OSSClient ossClient = new OSSClient(endPoint, accessKeyId, accesskeySecret);
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
// 获取文件名
String fileName = multipartFile.getOriginalFilename();
// 获取文件后缀名
String suffixName = fileName.substring(fileName.lastIndexOf("."));
// 最后上传生成的文件名
String finalFileName = System.currentTimeMillis() + "" + new SecureRandom().nextInt(0x0400) + suffixName;
// oss中的文件夹名
String objectName = sdf.format(new Date()) + "/" + finalFileName;
// 创建上传文件的元信息可以通过文件元信息设置HTTP header(设置了才能通过返回的链接直接访问)。
ObjectMetadata objectMetadata = new ObjectMetadata();
String contentType = getcontentType(suffixName.substring(suffixName.lastIndexOf("."))); // 注意这里加1
objectMetadata.setContentType(contentType);
// 设置Content-Disposition为inline
objectMetadata.setContentDisposition("inline");
// 文件上传
ossClient.putObject(bucketName, objectName, new ByteArrayInputStream(multipartFile.getBytes()), objectMetadata);
//// 设置URL过期时间为1小时。
// Date expiration = new Date(System.currentTimeMillis() + 3600 * 1000);
// 构造对象的完整URL
String url = "http://" + bucketName + "." + endPoint + "/" + objectName;
log.info("阿里云OSS的文件url:{}", url);
ossClient.shutdown();
return url;
}
public static String getcontentType(String FilenameExtension) {
if (FilenameExtension.equalsIgnoreCase(".bmp")) {
return "image/bmp";
}
if (FilenameExtension.equalsIgnoreCase(".gif")) {
return "image/gif";
}
if (FilenameExtension.equalsIgnoreCase(".jpeg") ||
FilenameExtension.equalsIgnoreCase(".jpg") ||
FilenameExtension.equalsIgnoreCase(".png")) {
return "image/jpg";
}
if (FilenameExtension.equalsIgnoreCase(".html")) {
return "text/html";
}
if (FilenameExtension.equalsIgnoreCase(".txt")) {
return "text/plain";
}
if (FilenameExtension.equalsIgnoreCase(".vsd")) {
return "application/vnd.visio";
}
if (FilenameExtension.equalsIgnoreCase(".pptx") ||
FilenameExtension.equalsIgnoreCase(".ppt")) {
return "application/vnd.ms-powerpoint";
}
if (FilenameExtension.equalsIgnoreCase(".docx") ||
FilenameExtension.equalsIgnoreCase(".doc")) {
return "application/msword";
}
if (FilenameExtension.equalsIgnoreCase(".xml")) {
return "text/xml";
}
return "image/jpg";
}
}

View File

@ -0,0 +1,31 @@
package com.bwie.authen.util;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
@Configuration
@Log4j2
public class ThreadPoolExecutorConfig {
@Value("${authen.coreSize}")
private Integer coreSize;
@Value("${authen.coreMax}")
private Integer coreMax;
@Bean
public ThreadPoolExecutor threadPoolExecutor(){
// int coreSize = 3 * Runtime.getRuntime().availableProcessors();
// int coreMax = coreSize + 30;
ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(coreSize, coreMax, 5, TimeUnit.SECONDS,
new LinkedBlockingQueue<>(100));
return threadPoolExecutor;
}
}

View File

@ -0,0 +1,13 @@
package com.bwie.authen.vo;
import lombok.Data;
@Data
public class AliveData{
private boolean passed;
private String feature_image_id;
private String hack_score;
private String order_no;
private String motions;
private AliveMotions aliveMotions;
}

View File

@ -0,0 +1,11 @@
package com.bwie.authen.vo;
import lombok.Data;
@Data
public class AliveMotions{
private Double score;
private String motion;
private boolean passed;
}

View File

@ -0,0 +1,14 @@
package com.bwie.authen.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class AliveReq {
private String url;
private String motions;
}

View File

@ -0,0 +1,19 @@
package com.bwie.authen.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class AliveRes {
private Integer code;
private String msg;
private String data;
private String success;
private AliveData aliveData;
}

View File

@ -0,0 +1,31 @@
package com.bwie.authen.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.web.multipart.MultipartFile;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class AuthenReq {
private String motions;
private MultipartFile img1;
private MultipartFile img2;
private MultipartFile movie;
private String name;
private String idCord;
}

View File

@ -0,0 +1,13 @@
package com.bwie.authen.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class IdCheckReq {
private String name;
private String idCardNo;
}

View File

@ -0,0 +1,30 @@
package com.bwie.authen.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class IdCheckResponse {
private Integer code;
private String msg;
private String taskNo; // 本次请求号
private IdData idData;
private String data;
}

View File

@ -0,0 +1,16 @@
package com.bwie.authen.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class IdData {
private Integer result;// 0: 一致1: 不一致
private String desc;//描述
private String sex;//性别
private String birthday;
private String address;//地址
}

View File

@ -0,0 +1,13 @@
package com.bwie.authen.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class OCRConfig {
private String side;
private String url;
}

View File

@ -0,0 +1,15 @@
package com.bwie.authen.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.web.multipart.MultipartFile;
@Data
@NoArgsConstructor
public class OCRReq {
private String side;
private MultipartFile url;
}

View File

@ -0,0 +1,27 @@
package com.bwie.authen.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class OCRResponse {
private String address;
private String name;
private String sex;
private String num;
private String birth;
private boolean success;
}

View File

@ -0,0 +1,58 @@
# Tomcat
server:
port: 9004
# Spring
spring:
main:
allow-circular-references: true
allow-bean-definition-overriding: true
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8
application:
# 应用名称
name: bwie-authen
profiles:
# 环境配置
active: dev
cloud:
nacos:
discovery:
# 服务注册地址
server-addr: 124.221.177.197:8848
config:
# 配置中心地址
server-addr: 124.221.177.197:8848
# 配置文件格式
file-extension: yml
# 共享配置
shared-configs:
- application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
aliyun:
end-point: oss-cn-shanghai.aliyuncs.com
access-key-id: LTAI5tEoxVDPCxDpxXLRjUuz
access-key-secret: 503OGWrDojxpI5fNrojaXaRJC6ya6y
# access-pre: https://dongxiaojie.oss-cn-shanghai.aliyuncs.com
bucket-name: ueana
ocr:
host: https://cardnumber.market.alicloudapi.com
path: /rest/160601/ocr/ocr_idcard.json
appcode: 13a8b5b781bc4c458ce2de65ed79be80
Content-Type: application/json; charset=UTF-8
idcheck:
host: https://jumdata.market.alicloudapi.com
path: /idcard/validate
appcode: 13a8b5b781bc4c458ce2de65ed79be80
alive:
appcode: 13a8b5b781bc4c458ce2de65ed79be80
host: https://life.shumaidata.com/checklife
authen:
coreSize: 21
coreMax: 51

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.bwie.system.mapper.SysMapper">
</mapper>

View File

@ -12,8 +12,8 @@
<artifactId>bwie-team</artifactId> <artifactId>bwie-team</artifactId>
<properties> <properties>
<maven.compiler.source>17</maven.compiler.source> <maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target> <maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties> </properties>
<dependencies> <dependencies>

View File

@ -0,0 +1,13 @@
package com.bwie.team;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@SpringBootApplication
@EnableDiscoveryClient
public class TeamApp {
public static void main(String[] args) {
SpringApplication.run(TeamApp.class);
}
}

View File

@ -0,0 +1,32 @@
package com.bwie.team.controller;
import com.bwie.common.result.Result;
import com.bwie.team.service.BackService;
import com.bwie.team.vo.Goods;
import com.bwie.team.vo.SkuBack;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
public class BackController {
private final BackService backService;
public BackController(BackService backService) {
this.backService = backService;
}
@PostMapping("findSpu")
public Result findSpu(@RequestParam Long spuId){
SkuBack skuBack = backService.findSpu(spuId);
return Result.success(skuBack);
}
}

View File

@ -1,4 +1,22 @@
package com.bwie.team.controller; package com.bwie.team.controller;
import com.bwie.common.result.Result;
import com.bwie.team.service.TeamService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class TeamController { public class TeamController {
private final TeamService teamService;
public TeamController(TeamService teamService) {
this.teamService = teamService;
}
@GetMapping("show")
public Result show(){
return Result.success(teamService.show());
}
} }

View File

@ -0,0 +1,13 @@
package com.bwie.team.mapper;
import com.bwie.team.vo.Goods;
import com.bwie.team.vo.GoodsSku;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface BackMapper {
List<Goods> findspu(Long spuId);
List<GoodsSku> findsku(Long spuId);
}

View File

@ -1,4 +1,12 @@
package com.bwie.team.mapper; package com.bwie.team.mapper;
import com.bwie.common.domain.Team;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface TeamMapper { public interface TeamMapper {
List<Team> show();
} }

View File

@ -0,0 +1,12 @@
package com.bwie.team.service;
import com.bwie.team.vo.Goods;
import com.bwie.team.vo.GoodsSku;
import com.bwie.team.vo.SkuBack;
import java.util.List;
public interface BackService {
SkuBack findSpu(Long spuId);
}

View File

@ -1,7 +1,15 @@
package com.bwie.team.service; package com.bwie.team.service;
import com.aliyun.tea.Tea;
import com.bwie.common.domain.Team;
import com.bwie.team.vo.GroupSku;
import java.util.List;
public interface TeamService { public interface TeamService {
// 查询商品信息 // 查询商品信息
List<Team> show();

View File

@ -1,4 +0,0 @@
package com.bwie.team.service;
public class TeamServiceImpl {
}

View File

@ -0,0 +1,30 @@
package com.bwie.team.service.impl;
import com.bwie.team.mapper.BackMapper;
import com.bwie.team.service.BackService;
import com.bwie.team.vo.Goods;
import com.bwie.team.vo.GoodsSku;
import com.bwie.team.vo.SkuBack;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class BackServiceImpl implements BackService {
private final BackMapper backMapper;
public BackServiceImpl(BackMapper backMapper) {
this.backMapper = backMapper;
}
@Override
public SkuBack findSpu(Long spuId) {
List<Goods> findspu = backMapper.findspu(spuId);
List<GoodsSku> findsku = backMapper.findsku(spuId);
SkuBack skuBack = new SkuBack();
skuBack.setGg(findspu);
skuBack.setSkus(findsku);
return skuBack;
}
}

View File

@ -0,0 +1,27 @@
package com.bwie.team.service.impl;
import com.bwie.common.domain.Team;
import com.bwie.team.mapper.TeamMapper;
import com.bwie.team.service.TeamService;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class TeamServiceImpl implements TeamService {
private final TeamMapper teamMapper;
public TeamServiceImpl(TeamMapper teamMapper) {
this.teamMapper = teamMapper;
}
@Override
public List<Team> show() {
List<Team> show = teamMapper.show();
return show;
}
}

View File

@ -0,0 +1,36 @@
package com.bwie.team.vo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class AddGroup {
private Long goodsSpuId;
private String title;
private String groupIntroduce;
private Date groupStart;
private Date groupEnd;
private Integer hours;
private String unit;
private Integer groupPeople;
private Integer groupNum;
private Integer sort;
private BigDecimal groupOrigin;
private Integer freightStatus;
private Integer activityStatus;
private Date createTime;
private Date updateTime;
private List<GroupSku>skus;
}

View File

@ -0,0 +1,15 @@
package com.bwie.team.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Goods {
private String url;
private Integer defaultStatus;
}

View File

@ -0,0 +1,20 @@
package com.bwie.team.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class GoodsSku {
private String defaultImage;
private BigDecimal price;
private Integer weight;
private String attrName;
private String attrValue;
}

View File

@ -0,0 +1,19 @@
package com.bwie.team.vo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class GroupSku {
private Long goodsSkuId;
private Integer groupNum;
private BigDecimal groupPrice;
}

View File

@ -0,0 +1,15 @@
package com.bwie.team.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class SkuBack {
private List<Goods> gg;
private List<GoodsSku> skus;
}

View File

@ -19,10 +19,10 @@ spring:
nacos: nacos:
discovery: discovery:
# 服务注册地址 # 服务注册地址
server-addr: 124.221.177.197:8848 server-addr: 124.221.30.134:8848
config: config:
# 配置中心地址 # 配置中心地址
server-addr: 124.221.177.197:8848 server-addr: 124.221.30.134:8848
# 配置文件格式 # 配置文件格式
file-extension: yml file-extension: yml
# 共享配置 # 共享配置

View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.bwie.team.mapper.BackMapper">
<select id="findspu" resultType="com.bwie.team.vo.Goods" parameterType="java.lang.Long">
select i.url,i.default_status from goods_spu g
left join goods_spu_images i on i.spu_id=g.id
left join goods_sku k on k.spu_id=g.id
where i.spu_id=#{spuId}
</select>
<select id="findsku" resultType="com.bwie.team.vo.GoodsSku" parameterType="java.lang.Long">
select attr_name,attr_value,price,weight,default_image from goods_spu g
left join goods_sku p on g.id=p.spu_id
left join goods_sku_attr_value v on v.sku_id=p.id
where g.id=#{spuId}
</select>
</mapper>

View File

@ -2,4 +2,8 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.bwie.team.mapper.TeamMapper"> <mapper namespace="com.bwie.team.mapper.TeamMapper">
<select id="show" resultType="com.bwie.common.domain.Team">
select *
from group
</select>
</mapper> </mapper>

View File

@ -12,8 +12,8 @@
<artifactId>bwie-xxl</artifactId> <artifactId>bwie-xxl</artifactId>
<properties> <properties>
<maven.compiler.source>17</maven.compiler.source> <maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target> <maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties> </properties>
<dependencies> <dependencies>

View File

@ -15,6 +15,7 @@
<module>bwie-system</module> <module>bwie-system</module>
<module>bwie-xxl</module> <module>bwie-xxl</module>
<module>bwie-team</module> <module>bwie-team</module>
<module>bwie-authen</module>
</modules> </modules>
<properties> <properties>