From 00e15a5c2c312335463760cbd03423e1ed81efd7 Mon Sep 17 00:00:00 2001 From: zhujiqian <924931408@qq.com> Date: Sun, 5 Sep 2021 22:46:01 +0800 Subject: [PATCH 01/81] =?UTF-8?q?1=E3=80=81=E9=9B=86=E6=88=90Activiti7?= =?UTF-8?q?=E7=89=88=E6=9C=AC=EF=BC=8Cyudao-dependencies=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=E6=96=B0=E5=A2=9Eactiviti=E4=BE=9D=E8=B5=96=E5=8C=85=EF=BC=9B?= =?UTF-8?q?=202=E3=80=81=E6=B5=81=E7=A8=8B=E6=96=87=E4=BB=B6=E4=B8=8A?= =?UTF-8?q?=E4=BC=A0=E9=83=A8=E7=BD=B2API=E5=90=8E=E7=AB=AF=E9=80=BB?= =?UTF-8?q?=E8=BE=91=E5=AE=9E=E7=8E=B0=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/process/ProcessService.java | 18 ++++ .../process/impl/ProcessServiceImpl.java | 85 +++++++++++++++++++ .../src/main/resources/application-local.yaml | 21 ++++- yudao-dependencies/pom.xml | 9 ++ yudao-framework/pom.xml | 1 + .../pom.xml | 58 +++++++++++++ .../framework/activiti/package-info.java | 1 + 7 files changed, 189 insertions(+), 4 deletions(-) create mode 100644 yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/process/ProcessService.java create mode 100644 yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/process/impl/ProcessServiceImpl.java create mode 100644 yudao-framework/yudao-spring-boot-starter-activiti/pom.xml create mode 100644 yudao-framework/yudao-spring-boot-starter-activiti/src/main/java/cn/iocoder/yudao/framework/activiti/package-info.java diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/process/ProcessService.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/process/ProcessService.java new file mode 100644 index 0000000000..4ef499658f --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/process/ProcessService.java @@ -0,0 +1,18 @@ +package cn.iocoder.yudao.adminserver.modules.activiti.service.process; + +import org.springframework.web.multipart.MultipartFile; + +/** + * 流程基础管理 + * + * @author ZJQ + * @date 2021/9/5 21:00 + */ +public interface ProcessService { + + /** + * 上传流程文件,进行流程部署 + * @param multipartFile 上传文件 + */ + void deployProcess(MultipartFile multipartFile); +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/process/impl/ProcessServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/process/impl/ProcessServiceImpl.java new file mode 100644 index 0000000000..aa4e134f7f --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/process/impl/ProcessServiceImpl.java @@ -0,0 +1,85 @@ +package cn.iocoder.yudao.adminserver.modules.activiti.service.process.impl; + +import cn.iocoder.yudao.adminserver.modules.activiti.service.process.ProcessService; +import lombok.extern.slf4j.Slf4j; +import org.activiti.engine.RepositoryService; +import org.activiti.engine.repository.Deployment; +import org.activiti.engine.repository.ProcessDefinition; +import org.apache.commons.io.FilenameUtils; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; +import java.io.IOException; +import java.io.InputStream; +import java.util.List; +import java.util.zip.ZipInputStream; +import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.FILE_UPLOAD_FAILED; +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; + +/** + * 流程基础管理 + * + * @author ZJQ + * @date 2021/9/5 21:04 + */ +@Service +@Slf4j +public class ProcessServiceImpl implements ProcessService { + + private static final String BPMN20_XML = "bpmn20.xml"; + + @Resource + private RepositoryService repositoryService; + + /** + * 上传流程文件,进行流程部署 + * @param multipartFile 上传文件 + */ + @Override + public void deployProcess(MultipartFile multipartFile) { + String fileName = multipartFile.getOriginalFilename(); + try (InputStream inputStream = multipartFile.getInputStream()){ + Deployment deployment = getDeplymentByType(inputStream,fileName); + //获取部署成功的流程模型 + List processDefinitions = repositoryService.createProcessDefinitionQuery().deploymentId(deployment.getId()).list(); + processDefinitions.forEach((processDefinition)->{ + //设置线上部署流程模型名字 + String proDefId= processDefinition.getId(); + repositoryService.setProcessDefinitionCategory(proDefId,fileName); + log.info("流程文件部署成功,流程ID="+proDefId); + }); + } catch (IOException e) { + log.error("流程部署出现异常"+e); + } + } + + + /** + * 根据上传文件类型对应实现不同方式的流程部署 + * @param inputStream 文件输入流 + * @param fileName 文件名 + * @return 文件部署流程 + */ + public Deployment getDeplymentByType(InputStream inputStream,String fileName){ + Deployment deployment; + String type = FilenameUtils.getExtension(fileName); + switch (type){ + case "bpmn": + String baseName = FilenameUtils.getBaseName(fileName); + deployment = repositoryService.createDeployment().addInputStream(baseName+"."+BPMN20_XML,inputStream).deploy(); + break; + case "png": + deployment = repositoryService.createDeployment().addInputStream(fileName,inputStream).deploy(); + break; + case "zip": + case "bar": + ZipInputStream zipInputStream = new ZipInputStream(inputStream); + deployment = repositoryService.createDeployment().addZipInputStream(zipInputStream).deploy(); + break; + default: + throw exception(FILE_UPLOAD_FAILED); + } + return deployment; + } +} diff --git a/yudao-admin-server/src/main/resources/application-local.yaml b/yudao-admin-server/src/main/resources/application-local.yaml index 53ab065605..ef485e0837 100644 --- a/yudao-admin-server/src/main/resources/application-local.yaml +++ b/yudao-admin-server/src/main/resources/application-local.yaml @@ -43,17 +43,30 @@ spring: primary: master datasource: master: - name: ruoyi-vue-pro + name: ruoyi_vue_pro url: jdbc:mysql://127.0.0.1:3306/${spring.datasource.dynamic.datasource.master.name}?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=CTT driver-class-name: com.mysql.jdbc.Driver username: root - password: 123456 + password: root slave: # 模拟从库,可根据自己需要修改 - name: ruoyi-vue-pro + name: ruoyi_vue_pro url: jdbc:mysql://127.0.0.1:3306/${spring.datasource.dynamic.datasource.slave.name}?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=CTT driver-class-name: com.mysql.jdbc.Driver username: root - password: 123456 + password: root + + + activiti: + #1.false:默认值,activiti启动时,对比数据库表中保存的版本,如果不匹配。将抛出异常 + #2.true:启动时会对数据库中所有表进行更新操作,如果表存在,不做处理,反之,自动创建表 + #3.create_drop:启动时自动创建表,关闭时自动删除表 + #4.drop_create:启动时,删除旧表,再创建新表 + database-schema-update: true + #activiti7默认不生成历史信息表,需手动设置开启 + db-history-used: true + check-process-definitions: true + history-level: full + # Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优 redis: diff --git a/yudao-dependencies/pom.xml b/yudao-dependencies/pom.xml index 42adcdf8af..e2989e6e21 100644 --- a/yudao-dependencies/pom.xml +++ b/yudao-dependencies/pom.xml @@ -396,6 +396,15 @@ ${aliyun-java-sdk-dysmsapi.version} + + + + + cn.iocoder.boot + yudao-spring-boot-starter-activiti + ${revision} + + diff --git a/yudao-framework/pom.xml b/yudao-framework/pom.xml index 635dc7cf62..e9ff025f5b 100644 --- a/yudao-framework/pom.xml +++ b/yudao-framework/pom.xml @@ -28,6 +28,7 @@ yudao-spring-boot-starter-biz-operatelog yudao-spring-boot-starter-biz-dict yudao-spring-boot-starter-biz-sms + yudao-spring-boot-starter-activiti yudao-framework diff --git a/yudao-framework/yudao-spring-boot-starter-activiti/pom.xml b/yudao-framework/yudao-spring-boot-starter-activiti/pom.xml new file mode 100644 index 0000000000..f3acec5e2c --- /dev/null +++ b/yudao-framework/yudao-spring-boot-starter-activiti/pom.xml @@ -0,0 +1,58 @@ + + + + cn.iocoder.boot + yudao-framework + ${revision} + + 4.0.0 + yudao-spring-boot-starter-activiti + jar + + ${artifactId} + Activiti 拓展 + https://github.com/YunaiV/ruoyi-vue-pro + + + + 7.1.0.M6 + + + + + cn.iocoder.boot + yudao-common + + + + + org.activiti.dependencies + activiti-dependencies + ${activiti.version} + pom + + + + org.activiti + activiti-spring-boot-starter + ${activiti.version} + + + de.odysseus.juel + juel-api + + + de.odysseus.juel + juel-spi + + + org.mybatis + mybatis + + + + + + diff --git a/yudao-framework/yudao-spring-boot-starter-activiti/src/main/java/cn/iocoder/yudao/framework/activiti/package-info.java b/yudao-framework/yudao-spring-boot-starter-activiti/src/main/java/cn/iocoder/yudao/framework/activiti/package-info.java new file mode 100644 index 0000000000..c49d90f93b --- /dev/null +++ b/yudao-framework/yudao-spring-boot-starter-activiti/src/main/java/cn/iocoder/yudao/framework/activiti/package-info.java @@ -0,0 +1 @@ +package cn.iocoder.yudao.framework.activiti; From b8ff47e832fc9e27e8a7d228b63370b1d8d71cd4 Mon Sep 17 00:00:00 2001 From: zhujiqian <924931408@qq.com> Date: Sun, 5 Sep 2021 22:57:38 +0800 Subject: [PATCH 02/81] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E5=8F=82=E6=95=B0=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yudao-admin-server/src/main/resources/application-local.yaml | 5 +++-- yudao-framework/yudao-spring-boot-starter-activiti/pom.xml | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/yudao-admin-server/src/main/resources/application-local.yaml b/yudao-admin-server/src/main/resources/application-local.yaml index ef485e0837..9676da09c3 100644 --- a/yudao-admin-server/src/main/resources/application-local.yaml +++ b/yudao-admin-server/src/main/resources/application-local.yaml @@ -43,13 +43,13 @@ spring: primary: master datasource: master: - name: ruoyi_vue_pro + name: ruoyi-vue-pro url: jdbc:mysql://127.0.0.1:3306/${spring.datasource.dynamic.datasource.master.name}?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=CTT driver-class-name: com.mysql.jdbc.Driver username: root password: root slave: # 模拟从库,可根据自己需要修改 - name: ruoyi_vue_pro + name: ruoyi-vue-pro url: jdbc:mysql://127.0.0.1:3306/${spring.datasource.dynamic.datasource.slave.name}?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=CTT driver-class-name: com.mysql.jdbc.Driver username: root @@ -65,6 +65,7 @@ spring: #activiti7默认不生成历史信息表,需手动设置开启 db-history-used: true check-process-definitions: true + #full:保存历史数据的最高级别,可保存全部流程相关细节,包括流程流转各节点参数 history-level: full diff --git a/yudao-framework/yudao-spring-boot-starter-activiti/pom.xml b/yudao-framework/yudao-spring-boot-starter-activiti/pom.xml index f3acec5e2c..e9cee07f1f 100644 --- a/yudao-framework/yudao-spring-boot-starter-activiti/pom.xml +++ b/yudao-framework/yudao-spring-boot-starter-activiti/pom.xml @@ -33,7 +33,7 @@ ${activiti.version} pom - + org.activiti activiti-spring-boot-starter From e8b3f355e674e4f72c70cd1bb26c814a49ee2bdf Mon Sep 17 00:00:00 2001 From: zhujiqian <924931408@qq.com> Date: Sun, 5 Sep 2021 23:12:32 +0800 Subject: [PATCH 03/81] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E5=8F=82=E6=95=B0=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../activiti/service/process/impl/ProcessServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/process/impl/ProcessServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/process/impl/ProcessServiceImpl.java index aa4e134f7f..baebe87002 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/process/impl/ProcessServiceImpl.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/process/impl/ProcessServiceImpl.java @@ -45,7 +45,7 @@ public class ProcessServiceImpl implements ProcessService { List processDefinitions = repositoryService.createProcessDefinitionQuery().deploymentId(deployment.getId()).list(); processDefinitions.forEach((processDefinition)->{ //设置线上部署流程模型名字 - String proDefId= processDefinition.getId(); + String proDefId = processDefinition.getId(); repositoryService.setProcessDefinitionCategory(proDefId,fileName); log.info("流程文件部署成功,流程ID="+proDefId); }); From 1bb10d007efc68e59864519d00f5edc6b242f895 Mon Sep 17 00:00:00 2001 From: zhujiqian <924931408@qq.com> Date: Tue, 7 Sep 2021 23:40:18 +0800 Subject: [PATCH 04/81] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=B5=81=E7=A8=8B?= =?UTF-8?q?=E6=A8=A1=E5=9E=8B=E5=AE=9E=E4=BD=93=E6=BF=80=E6=B4=BB=E6=88=96?= =?UTF-8?q?=E6=8C=82=E8=B5=B7=E5=90=8E=E7=AB=AF=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../process/ProcessDefinitionDO.java | 29 +++++++++++++++++++ .../service/process/ProcessService.java | 13 ++++++++- .../process/impl/ProcessServiceImpl.java | 24 +++++++++++++++ 3 files changed, 65 insertions(+), 1 deletion(-) create mode 100644 yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/dal/dataobject/process/ProcessDefinitionDO.java diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/dal/dataobject/process/ProcessDefinitionDO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/dal/dataobject/process/ProcessDefinitionDO.java new file mode 100644 index 0000000000..7913d1ee6a --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/dal/dataobject/process/ProcessDefinitionDO.java @@ -0,0 +1,29 @@ +package cn.iocoder.yudao.adminserver.modules.activiti.dal.dataobject.process; + +/** + * 流程模型实体类 映射 activiti ProcessDefinition接口 + * + * @author ZJQ + * @date 2021/9/7 23:23 + */ +public class ProcessDefinitionDO { + + private String id; + + private String category; + + private String key; + + private String name; + + private String version; + + private String resourceName; + + private String deploymentId; + + private String diagramResourceName; + + private boolean suspended; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/process/ProcessService.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/process/ProcessService.java index 4ef499658f..bd829353db 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/process/ProcessService.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/process/ProcessService.java @@ -11,8 +11,19 @@ import org.springframework.web.multipart.MultipartFile; public interface ProcessService { /** - * 上传流程文件,进行流程部署 + * 上传流程文件,进行流程模型部署 * @param multipartFile 上传文件 */ void deployProcess(MultipartFile multipartFile); + + + /** + * 激活或者挂起流程模型实体 + * @param processDefinitionId 流程模型实体id + * @param type 类型 + * @return 状态 + */ + String setActivOrHang(String processDefinitionId,String type); + + } diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/process/impl/ProcessServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/process/impl/ProcessServiceImpl.java index baebe87002..2e3d04b1d1 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/process/impl/ProcessServiceImpl.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/process/impl/ProcessServiceImpl.java @@ -54,6 +54,30 @@ public class ProcessServiceImpl implements ProcessService { } } + /** + * 激活或者挂起流程模型实体 + * @param processDefinitionId 流程模型实体id + * @param type 类型 + * @return 提示 + */ + @Override + public String setActivOrHang(String processDefinitionId, String type) { + String result = "无操作"; + switch (type){ + case "active": + repositoryService.activateProcessDefinitionById(processDefinitionId,true,null); + result = "已激活ID为【"+processDefinitionId+"】的流程模型实例"; + break; + case "suspend": + repositoryService.suspendProcessDefinitionById(processDefinitionId,true,null); + result = "已挂起ID为【"+processDefinitionId+"】的流程模型实例"; + break; + default: + break; + } + return result; + } + /** * 根据上传文件类型对应实现不同方式的流程部署 From ee8dcd08882f0bcd05c82760bf7ede0adee280bb Mon Sep 17 00:00:00 2001 From: jason <2667446@qq.com> Date: Wed, 13 Oct 2021 23:43:03 +0800 Subject: [PATCH 05/81] =?UTF-8?q?1.=E5=AE=9E=E7=8E=B0=E4=BA=86=E5=B7=A5?= =?UTF-8?q?=E4=BD=9C=E6=B5=81=E5=BC=95=E6=93=8E=20=E4=B8=AD=20=E8=AF=B7?= =?UTF-8?q?=E5=81=87=E6=B5=81=E7=A8=8Bdemo=EF=BC=88=E5=AE=9A=E4=B9=89?= =?UTF-8?q?=E5=9C=A8=20resources/leave.bpmn)=202.=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E4=B8=80=E4=B8=AA=E4=B8=80=E7=BA=A7=E8=8F=9C=E5=8D=95=20OA=20?= =?UTF-8?q?=E5=8A=9E=E5=85=AC=20=E4=B8=8B=E9=9D=A2=E4=B8=A4=E4=B8=AA?= =?UTF-8?q?=E8=8F=9C=E5=8D=95=EF=BC=9A=20=E8=AF=B7=E5=81=87=E7=94=B3?= =?UTF-8?q?=E8=AF=B7=EF=BC=8C=E5=BE=85=E5=8A=9E=E4=BB=BB=E5=8A=A1=203.?= =?UTF-8?q?=E6=9A=82=E6=97=B6=E4=B8=8D=E7=9F=A5=E5=A6=82=E4=BD=95=E6=89=BE?= =?UTF-8?q?=E9=83=A8=E9=97=A8=E9=A2=86=E5=AF=BC=EF=BC=8C=20=E6=9A=82?= =?UTF-8?q?=E6=97=B6=E5=86=99=E6=AD=BB=E4=B8=BA=20admin=204.activity=20?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E7=BB=84=E4=BD=BF=E7=94=A8=20=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E5=B2=97=E4=BD=8D=E6=9D=A5=E4=BB=A3=E6=9B=BF=E3=80=82?= =?UTF-8?q?=205.=E6=96=B0=E5=A2=9E=E4=B8=80=E4=B8=AA=E7=94=A8=E6=88=B7=20h?= =?UTF-8?q?radmin=EF=BC=8C=20=E5=AF=86=E7=A0=81=20123456=20=20=E5=B2=97?= =?UTF-8?q?=E4=BD=8D=E6=98=AF=20=E4=BA=BA=E5=8A=9B=E8=B5=84=E6=BA=90=206.?= =?UTF-8?q?=E6=BC=94=E7=A4=BA=E6=B5=81=E7=A8=8B=E3=80=82=20=20=20a.=20admi?= =?UTF-8?q?n=20=E7=99=BB=E9=99=86=20=E7=94=B3=E8=AF=B7=E8=AF=B7=E5=81=87?= =?UTF-8?q?=20=20=20b.=20admin=20=E5=BE=85=E5=8A=9E=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=EF=BC=88=E5=AE=A1=E6=89=B9=EF=BC=89=20=20=20c.=20hradmin=20?= =?UTF-8?q?=E7=99=BB=E9=99=86=20=E5=BE=85=E5=8A=9E=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=EF=BC=88=E5=AE=A1=E6=89=B9=EF=BC=89=20=20=20d.=20admin=20?= =?UTF-8?q?=E7=99=BB=E9=99=86=20=E5=BE=85=E5=8A=9E=E4=BB=BB=E5=8A=A1=20?= =?UTF-8?q?=EF=BC=88=E7=A1=AE=E8=AE=A4)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sql/ruoyi-vue-pro.sql | 43 +++ yudao-admin-server/pom.xml | 7 + .../controller/oa/OaLeaveController.java | 104 ++++++ .../controller/oa/vo/OaLeaveBaseVO.java | 48 +++ .../controller/oa/vo/OaLeaveCreateReqVO.java | 14 + .../controller/oa/vo/OaLeaveExcelVO.java | 44 +++ .../controller/oa/vo/OaLeaveExportReqVO.java | 54 +++ .../controller/oa/vo/OaLeavePageReqVO.java | 56 +++ .../controller/oa/vo/OaLeaveRespVO.java | 16 + .../controller/oa/vo/OaLeaveUpdateReqVO.java | 18 + .../controller/workflow/TaskController.java | 57 +++ .../controller/workflow/vo/TaskHandleVO.java | 19 + .../workflow/vo/TaskQueryReqVO.java | 15 + .../controller/workflow/vo/TaskReqVO.java | 17 + .../controller/workflow/vo/TaskStepVO.java | 22 ++ .../workflow/vo/TodoTaskPageReqVO.java | 16 + .../workflow/vo/TodoTaskRespVO.java | 30 ++ .../activiti/convert/oa/OaLeaveConvert.java | 34 ++ .../convert/workflow/TodoTaskConvert.java | 9 + .../activiti/dal/dataobject/oa/OaLeaveDO.java | 60 +++ .../activiti/dal/mysql/oa/OaLeaveMapper.java | 46 +++ .../activiti/enums/OaErrorCodeConstants.java | 13 + .../config/UserGroupManagerService.java | 61 +++ .../service/config/UserGroupsProvider.java | 31 ++ .../activiti/service/oa/OaLeaveService.java | 76 ++++ .../service/oa/ReportBackEndProcessor.java | 30 ++ .../service/oa/impl/OaLeaveServiceImpl.java | 112 ++++++ .../service/workflow/TaskService.java | 23 ++ .../workflow/impl/TaskServiceImpl.java | 264 +++++++++++++ .../service/auth/impl/SysAuthServiceImpl.java | 21 +- .../src/main/resources/application.yaml | 19 +- .../mybatis-config/mybatis-config.xml | 52 +++ .../src/main/resources/processes/leave.bpmn | 130 +++++++ yudao-admin-ui/src/api/oa/leave.js | 54 +++ yudao-admin-ui/src/api/oa/todo.js | 75 ++++ yudao-admin-ui/src/utils/dict.js | 3 + yudao-admin-ui/src/views/oa/leave/index.vue | 347 ++++++++++++++++++ yudao-admin-ui/src/views/oa/todo/index.vue | 284 ++++++++++++++ .../pom.xml | 25 +- .../config/YudaoActivitiConfiguration.java | 32 ++ .../pom.xml | 12 + .../framework/security/core/LoginUser.java | 22 +- .../core/util/SecurityFrameworkUtils.java | 7 +- 43 files changed, 2405 insertions(+), 17 deletions(-) create mode 100644 yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/oa/OaLeaveController.java create mode 100644 yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/oa/vo/OaLeaveBaseVO.java create mode 100644 yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/oa/vo/OaLeaveCreateReqVO.java create mode 100644 yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/oa/vo/OaLeaveExcelVO.java create mode 100644 yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/oa/vo/OaLeaveExportReqVO.java create mode 100644 yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/oa/vo/OaLeavePageReqVO.java create mode 100644 yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/oa/vo/OaLeaveRespVO.java create mode 100644 yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/oa/vo/OaLeaveUpdateReqVO.java create mode 100644 yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/workflow/TaskController.java create mode 100644 yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/workflow/vo/TaskHandleVO.java create mode 100644 yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/workflow/vo/TaskQueryReqVO.java create mode 100644 yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/workflow/vo/TaskReqVO.java create mode 100644 yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/workflow/vo/TaskStepVO.java create mode 100644 yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/workflow/vo/TodoTaskPageReqVO.java create mode 100644 yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/workflow/vo/TodoTaskRespVO.java create mode 100644 yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/convert/oa/OaLeaveConvert.java create mode 100644 yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/convert/workflow/TodoTaskConvert.java create mode 100644 yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/dal/dataobject/oa/OaLeaveDO.java create mode 100644 yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/dal/mysql/oa/OaLeaveMapper.java create mode 100644 yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/enums/OaErrorCodeConstants.java create mode 100644 yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/config/UserGroupManagerService.java create mode 100644 yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/config/UserGroupsProvider.java create mode 100644 yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/oa/OaLeaveService.java create mode 100644 yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/oa/ReportBackEndProcessor.java create mode 100644 yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/oa/impl/OaLeaveServiceImpl.java create mode 100644 yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/workflow/TaskService.java create mode 100644 yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/workflow/impl/TaskServiceImpl.java create mode 100644 yudao-admin-server/src/main/resources/mybatis-config/mybatis-config.xml create mode 100644 yudao-admin-server/src/main/resources/processes/leave.bpmn create mode 100644 yudao-admin-ui/src/api/oa/leave.js create mode 100644 yudao-admin-ui/src/api/oa/todo.js create mode 100644 yudao-admin-ui/src/views/oa/leave/index.vue create mode 100644 yudao-admin-ui/src/views/oa/todo/index.vue create mode 100644 yudao-framework/yudao-spring-boot-starter-activiti/src/main/java/cn/iocoder/yudao/framework/activiti/config/YudaoActivitiConfiguration.java diff --git a/sql/ruoyi-vue-pro.sql b/sql/ruoyi-vue-pro.sql index 35b521bb14..866c46b56f 100644 --- a/sql/ruoyi-vue-pro.sql +++ b/sql/ruoyi-vue-pro.sql @@ -1108,6 +1108,12 @@ INSERT INTO `sys_dict_data` VALUES (76, 2, '接收失败', '20', 'sys_sms_receiv INSERT INTO `sys_dict_data` VALUES (77, 0, '调试(钉钉)', 'DEBUG_DING_TALK', 'sys_sms_channel_code', 0, NULL, '1', '2021-04-13 00:20:37', '1', '2021-04-13 00:20:37', b'0'); INSERT INTO `sys_dict_data` VALUES (78, 1, '自动生成', '1', 'sys_error_code_type', 0, NULL, '1', '2021-04-21 00:06:48', '1', '2021-04-13 22:06:44', b'0'); INSERT INTO `sys_dict_data` VALUES (79, 2, '手动编辑', '2', 'sys_error_code_type', 0, NULL, '1', '2021-04-21 00:07:14', '1', '2021-04-13 22:06:49', b'0'); +INSERT INTO `sys_dict_data` VALUES (80,0,'病假','1','oa_leave_type',0,NULL,'1','2021-09-21 22:35:28','1','2021-09-21 14:59:27',0x00); +INSERT INTO `sys_dict_data` VALUES (81,1,'事假','2','oa_leave_type',0,NULL,'1','2021-09-21 22:36:11','1','2021-09-21 14:59:27',0x00); +INSERT INTO `sys_dict_data` VALUES (82,2,'婚假','3','oa_leave_type',0,NULL,'1','2021-09-21 22:36:38','1','2021-09-21 14:59:27',0x00); +INSERT INTO `sys_dict_data` VALUES (83,0,'处理中','1','oa_leave_status',0,NULL,'1','2021-09-21 22:46:46','1','2021-10-12 22:12:20',0x00); +INSERT INTO `sys_dict_data` VALUES (84,1,'流程结束','2','oa_leave_status',0,NULL,'1','2021-09-21 22:47:03','1','2021-10-12 22:12:58',0x00); +INSERT INTO `sys_dict_data` VALUES (85,2,'完成','3','oa_leave_status',0,NULL,'1','2021-09-21 22:47:25','1','2021-10-12 14:13:06',0x01); COMMIT; -- ---------------------------- @@ -1155,6 +1161,9 @@ INSERT INTO `sys_dict_type` VALUES (112, '短信模板的类型', 'sys_sms_templ INSERT INTO `sys_dict_type` VALUES (113, '短信发送状态', 'sys_sms_send_status', 0, NULL, '1', '2021-04-11 20:18:03', '1', '2021-04-11 09:30:02', b'0'); INSERT INTO `sys_dict_type` VALUES (114, '短信接收状态', 'sys_sms_receive_status', 0, NULL, '1', '2021-04-11 20:27:14', '1', '2021-04-11 20:27:14', b'0'); INSERT INTO `sys_dict_type` VALUES (115, '错误码的类型', 'sys_error_code_type', 0, NULL, '1', '2021-04-21 00:06:30', '1', '2021-04-13 22:07:12', b'0'); +INSERT INTO `sys_dict_type` VALUES (116,'请假类型','oa_leave_type',0,NULL,'1','2021-09-21 22:34:33','1','2021-09-21 15:00:38',0x00); +INSERT INTO `sys_dict_type` VALUES (117,'请假流程状态','oa_leave_status',0,NULL,'1','2021-09-21 22:46:04','1','2021-09-21 15:00:38',0x00); + COMMIT; -- ---------------------------- @@ -1357,6 +1366,7 @@ INSERT INTO `sys_menu` VALUES (1, '系统管理', '', 1, 1, 0, '/system', 'syste INSERT INTO `sys_menu` VALUES (2, '基础设施', '', 1, 2, 0, '/infra', 'monitor', NULL, 0, 'admin', '2021-01-05 17:03:48', '', '2021-01-20 14:18:35', b'0'); INSERT INTO `sys_menu` VALUES (3, '研发工具', '', 1, 3, 0, '/tool', 'tool', NULL, 0, 'admin', '2021-01-05 17:03:48', '', '2021-02-06 12:44:42', b'0'); INSERT INTO `sys_menu` VALUES (4, '若依官网', '', 1, 4, 0, 'http://ruoyi.vip', 'guide', NULL, 0, 'admin', '2021-01-05 17:03:48', '', '2021-01-20 21:54:28', b'1'); +INSERT INTO `sys_menu` VALUES (5,'OA 办公','',1,4,0,'/oa','people',NULL,0,'admin','2021-09-20 16:26:19','1','2021-09-20 13:55:54',0x00); INSERT INTO `sys_menu` VALUES (100, '用户管理', 'system:user:list', 2, 1, 1, 'user', 'user', 'system/user/index', 0, 'admin', '2021-01-05 17:03:48', '', '2021-01-05 22:36:45', b'0'); INSERT INTO `sys_menu` VALUES (101, '角色管理', '', 2, 2, 1, 'role', 'peoples', 'system/role/index', 0, 'admin', '2021-01-05 17:03:48', '1', '2021-03-14 22:04:49', b'0'); INSERT INTO `sys_menu` VALUES (102, '菜单管理', '', 2, 3, 1, 'menu', 'tree-table', 'system/menu/index', 0, 'admin', '2021-01-05 17:03:48', '1', '2021-03-14 22:04:28', b'0'); @@ -1485,6 +1495,14 @@ INSERT INTO `sys_menu` VALUES (1113, '错误码更新', 'system:error-code:updat INSERT INTO `sys_menu` VALUES (1114, '错误码删除', 'system:error-code:delete', 3, 4, 1110, '', '', '', 0, '', '2021-04-13 21:46:42', '', '2021-04-13 22:09:51', b'0'); INSERT INTO `sys_menu` VALUES (1115, '错误码导出', 'system:error-code:export', 3, 5, 1110, '', '', '', 0, '', '2021-04-13 21:46:42', '', '2021-04-13 22:09:55', b'0'); INSERT INTO `sys_menu` VALUES (1116, '日志中心', '', 2, 8, 2, 'log-center', 'log', 'infra/skywalking/log', 0, '1', '2021-04-26 22:35:45', '1', '2021-04-26 22:37:25', b'0'); +INSERT INTO `sys_menu` VALUES (1118,'请假申请','',2,0,5,'oa/leave','user','oa/leave/index',0,'','2021-09-20 08:51:03','1','2021-10-12 22:19:02',0x00); +INSERT INTO `sys_menu` VALUES (1119,'请假申请查询','oa:leave:query',3,1,1118,'','','',0,'','2021-09-20 08:51:03','','2021-09-20 08:51:03',0x00); +INSERT INTO `sys_menu` VALUES (1120,'请假申请创建','oa:leave:create',3,2,1118,'','','',0,'','2021-09-20 08:51:03','','2021-09-20 08:51:03',0x00); +INSERT INTO `sys_menu` VALUES (1121,'请假申请更新','oa:leave:update',3,3,1118,'','','',0,'','2021-09-20 08:51:03','','2021-09-20 08:51:03',0x00); +INSERT INTO `sys_menu` VALUES (1122,'请假申请删除','oa:leave:delete',3,4,1118,'','','',0,'','2021-09-20 08:51:03','','2021-09-20 08:51:03',0x00); +INSERT INTO `sys_menu` VALUES (1123,'请假申请导出','oa:leave:export',3,5,1118,'','','',0,'','2021-09-20 08:51:03','','2021-09-20 08:51:03',0x00); +INSERT INTO `sys_menu` VALUES (1124,'待办任务','',2,2,5,'todo','edit','oa/todo/index',0,'1','2021-09-20 22:10:09','1','2021-09-21 23:17:12',0x00); + COMMIT; -- ---------------------------- @@ -1958,6 +1976,7 @@ INSERT INTO `sys_user` VALUES (2, 'ry', '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ul INSERT INTO `sys_user` VALUES (100, 'yudao', '$2a$10$11U48RhyJ5pSBYWSn12AD./ld671.ycSzJHbyrtpeoMeYiw31eo8a', '芋道', '不要吓我', 100, '[1]', 'yudao@iocoder.cn', '15601691300', 1, '', 1, '', NULL, '', '2021-01-07 09:07:17', '1', '2021-03-14 22:35:17', b'0'); INSERT INTO `sys_user` VALUES (103, 'yuanma', '', '源码', NULL, 100, NULL, 'yuanma@iocoder.cn', '15601701300', 0, '', 0, '', NULL, '', '2021-01-13 23:50:35', '', '2021-01-13 23:50:35', b'0'); INSERT INTO `sys_user` VALUES (104, 'test', '$2a$10$.TOFpaIiI3PzEwkGrNq0Eu6Cc3rOqJMxTb1DqeSEM8StxaGPBRKoi', '测试号', NULL, 100, '[]', '', '15601691200', 1, '', 0, '', NULL, '', '2021-01-21 02:13:53', '1', '2021-03-14 22:36:38', b'0'); +INSERT INTO `sys_user` VALUES (105,'hradmin','$2a$10$JEhJOL25X1eMnFfR3PILo.MoAljf29YukpL2w6H9GvVGjmqOCuh.O','hr-mgr','hr 管理员',100,'[3]','','',1,'',0,'',NULL,'1','2021-09-25 16:50:41','1','2021-09-25 01:14:09',0x00); COMMIT; -- ---------------------------- @@ -1987,6 +2006,7 @@ INSERT INTO `sys_user_role` VALUES (4, 100, 101, '', NULL, '', NULL, b'0'); INSERT INTO `sys_user_role` VALUES (5, 100, 1, '', NULL, '', NULL, b'0'); INSERT INTO `sys_user_role` VALUES (6, 100, 2, '', NULL, '', NULL, b'0'); INSERT INTO `sys_user_role` VALUES (7, 104, 101, '', NULL, '', NULL, b'0'); +INSERT INTO `sys_user_role` VALUES (8,105,1,'1','2021-09-25 16:51:44','1','2021-09-25 16:51:44',0x00); COMMIT; -- ---------------------------- @@ -2425,4 +2445,27 @@ INSERT INTO `tool_test_demo` VALUES (106, '老五1', 0, 1, 1, '牛逼哈2', '', INSERT INTO `tool_test_demo` VALUES (107, '哈哈哈哈', 1, 0, 1, 'biubiubui', '', '2021-02-06 14:00:54', '', '2021-02-06 14:00:54', b'0'); COMMIT; + +DROP TABLE IF EXISTS `oa_leave`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `oa_leave` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '请假表单主键', + `process_instance_id` varchar(64) DEFAULT NULL COMMENT '流程id', + `status` tinyint(4) NOT NULL COMMENT '状态', + `user_id` varchar(20) NOT NULL COMMENT '申请人id', + `start_time` datetime NOT NULL COMMENT '开始时间', + `end_time` datetime NOT NULL COMMENT '结束时间', + `leave_type` varchar(20) DEFAULT NULL COMMENT '请假类型', + `reason` varchar(2000) DEFAULT NULL COMMENT '原因', + `apply_time` datetime NOT NULL COMMENT '申请时间', + `creator` varchar(64) DEFAULT '' COMMENT '创建者', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `updater` varchar(64) DEFAULT '' COMMENT '更新者', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='请假申请表'; +/*!40101 SET character_set_client = @saved_cs_client */; + SET FOREIGN_KEY_CHECKS = 1; diff --git a/yudao-admin-server/pom.xml b/yudao-admin-server/pom.xml index 7a04d6647f..624feb2a98 100644 --- a/yudao-admin-server/pom.xml +++ b/yudao-admin-server/pom.xml @@ -31,6 +31,11 @@ yudao-spring-boot-starter-biz-sms + + cn.iocoder.boot + yudao-spring-boot-starter-activiti + + cn.iocoder.boot @@ -107,6 +112,8 @@ yudao-spring-boot-starter-excel + + org.apache.velocity velocity-engine-core diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/oa/OaLeaveController.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/oa/OaLeaveController.java new file mode 100644 index 0000000000..e8dd527b91 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/oa/OaLeaveController.java @@ -0,0 +1,104 @@ +package cn.iocoder.yudao.adminserver.modules.activiti.controller.oa; + +import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; +import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; + +import io.swagger.annotations.*; + +import javax.validation.constraints.*; +import javax.validation.*; +import javax.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; + +import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; +import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.*; + +import cn.iocoder.yudao.adminserver.modules.activiti.controller.oa.vo.*; +import cn.iocoder.yudao.adminserver.modules.activiti.dal.dataobject.oa.OaLeaveDO; +import cn.iocoder.yudao.adminserver.modules.activiti.convert.oa.OaLeaveConvert; +import cn.iocoder.yudao.adminserver.modules.activiti.service.oa.OaLeaveService; + +@Api(tags = "请假申请") +@RestController +@RequestMapping("/oa/leave") +@Validated +public class OaLeaveController { + + @Resource + private OaLeaveService leaveService; + + @PostMapping("/create") + @ApiOperation("创建请假申请") + @PreAuthorize("@ss.hasPermission('oa:leave:create')") + public CommonResult createLeave(@Valid @RequestBody OaLeaveCreateReqVO createReqVO) { + return success(leaveService.createLeave(createReqVO)); + } + + @PutMapping("/update") + @ApiOperation("更新请假申请") + @PreAuthorize("@ss.hasPermission('oa:leave:update')") + public CommonResult updateLeave(@Valid @RequestBody OaLeaveUpdateReqVO updateReqVO) { + leaveService.updateLeave(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @ApiOperation("删除请假申请") + @ApiImplicitParam(name = "id", value = "编号", required = true) + @PreAuthorize("@ss.hasPermission('oa:leave:delete')") + public CommonResult deleteLeave(@RequestParam("id") Long id) { + leaveService.deleteLeave(id); + return success(true); + } + + @GetMapping("/get") + @ApiOperation("获得请假申请") + @ApiImplicitParam(name = "id", value = "编号", required = true, example = "1024", dataTypeClass = Long.class) + @PreAuthorize("@ss.hasPermission('oa:leave:query')") + public CommonResult getLeave(@RequestParam("id") Long id) { + OaLeaveDO leave = leaveService.getLeave(id); + return success(OaLeaveConvert.INSTANCE.convert(leave)); + } + + @GetMapping("/list") + @ApiOperation("获得请假申请列表") + @ApiImplicitParam(name = "ids", value = "编号列表", required = true, example = "1024,2048", dataTypeClass = List.class) + @PreAuthorize("@ss.hasPermission('oa:leave:query')") + public CommonResult> getLeaveList(@RequestParam("ids") Collection ids) { + List list = leaveService.getLeaveList(ids); + return success(OaLeaveConvert.INSTANCE.convertList(list)); + } + + @GetMapping("/page") + @ApiOperation("获得请假申请分页") + @PreAuthorize("@ss.hasPermission('oa:leave:query')") + public CommonResult> getLeavePage(@Valid OaLeavePageReqVO pageVO) { + //值查询自己申请请假 + pageVO.setUserId(SecurityFrameworkUtils.getLoginUser().getUsername()); + PageResult pageResult = leaveService.getLeavePage(pageVO); + return success(OaLeaveConvert.INSTANCE.convertPage(pageResult)); + } + + @GetMapping("/export-excel") + @ApiOperation("导出请假申请 Excel") + @PreAuthorize("@ss.hasPermission('oa:leave:export')") + @OperateLog(type = EXPORT) + public void exportLeaveExcel(@Valid OaLeaveExportReqVO exportReqVO, + HttpServletResponse response) throws IOException { + List list = leaveService.getLeaveList(exportReqVO); + // 导出 Excel + List datas = OaLeaveConvert.INSTANCE.convertList02(list); + ExcelUtils.write(response, "请假申请.xls", "数据", OaLeaveExcelVO.class, datas); + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/oa/vo/OaLeaveBaseVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/oa/vo/OaLeaveBaseVO.java new file mode 100644 index 0000000000..ed7f458af1 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/oa/vo/OaLeaveBaseVO.java @@ -0,0 +1,48 @@ +package cn.iocoder.yudao.adminserver.modules.activiti.controller.oa.vo; + +import lombok.*; +import java.util.*; +import io.swagger.annotations.*; +import javax.validation.constraints.*; +import org.springframework.format.annotation.DateTimeFormat; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +/** +* 请假申请 Base VO,提供给添加、修改、详细的子 VO 使用 +* 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 +*/ +@Data +public class OaLeaveBaseVO { + + @ApiModelProperty(value = "流程id") + private String processInstanceId; + + @ApiModelProperty(value = "状态", required = true) + private Integer status; + + @ApiModelProperty(value = "申请人id", required = true) + private String userId; + + @ApiModelProperty(value = "开始时间", required = true) + @NotNull(message = "开始时间不能为空") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private Date startTime; + + @ApiModelProperty(value = "结束时间", required = true) + @NotNull(message = "结束时间不能为空") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private Date endTime; + + @ApiModelProperty(value = "请假类型") + private String leaveType; + + @ApiModelProperty(value = "原因") + private String reason; + + @ApiModelProperty(value = "申请时间", required = true) + @NotNull(message = "申请时间不能为空") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private Date applyTime; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/oa/vo/OaLeaveCreateReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/oa/vo/OaLeaveCreateReqVO.java new file mode 100644 index 0000000000..29cede1ff7 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/oa/vo/OaLeaveCreateReqVO.java @@ -0,0 +1,14 @@ +package cn.iocoder.yudao.adminserver.modules.activiti.controller.oa.vo; + +import lombok.*; +import java.util.*; +import io.swagger.annotations.*; +import javax.validation.constraints.*; + +@ApiModel("请假申请创建 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class OaLeaveCreateReqVO extends OaLeaveBaseVO { + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/oa/vo/OaLeaveExcelVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/oa/vo/OaLeaveExcelVO.java new file mode 100644 index 0000000000..6c309c1800 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/oa/vo/OaLeaveExcelVO.java @@ -0,0 +1,44 @@ +package cn.iocoder.yudao.adminserver.modules.activiti.controller.oa.vo; + +import lombok.*; +import java.util.*; +import io.swagger.annotations.*; + +import com.alibaba.excel.annotation.ExcelProperty; + +/** + * 请假申请 Excel VO + * + * @author 芋艿 + */ +@Data +public class OaLeaveExcelVO { + + @ExcelProperty("请假表单主键") + private Long id; + + @ExcelProperty("流程id") + private String processInstanceId; + + @ExcelProperty("状态") + private Integer status; + + @ExcelProperty("申请人id") + private String userId; + + @ExcelProperty("开始时间") + private Date startTime; + + @ExcelProperty("结束时间") + private Date endTime; + + @ExcelProperty("请假类型") + private String leaveType; + + @ExcelProperty("原因") + private String reason; + + @ExcelProperty("申请时间") + private Date applyTime; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/oa/vo/OaLeaveExportReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/oa/vo/OaLeaveExportReqVO.java new file mode 100644 index 0000000000..811c502053 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/oa/vo/OaLeaveExportReqVO.java @@ -0,0 +1,54 @@ +package cn.iocoder.yudao.adminserver.modules.activiti.controller.oa.vo; + +import lombok.*; +import java.util.*; +import io.swagger.annotations.*; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@ApiModel(value = "请假申请 Excel 导出 Request VO", description = "参数和 OaLeavePageReqVO 是一致的") +@Data +public class OaLeaveExportReqVO { + + @ApiModelProperty(value = "流程id") + private String processInstanceId; + + @ApiModelProperty(value = "状态") + private Integer status; + + @ApiModelProperty(value = "申请人id") + private String userId; + + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + @ApiModelProperty(value = "开始开始时间") + private Date beginStartTime; + + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + @ApiModelProperty(value = "结束开始时间") + private Date endStartTime; + + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + @ApiModelProperty(value = "开始结束时间") + private Date beginEndTime; + + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + @ApiModelProperty(value = "结束结束时间") + private Date endEndTime; + + @ApiModelProperty(value = "请假类型") + private String leaveType; + + @ApiModelProperty(value = "原因") + private String reason; + + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + @ApiModelProperty(value = "开始申请时间") + private Date beginApplyTime; + + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + @ApiModelProperty(value = "结束申请时间") + private Date endApplyTime; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/oa/vo/OaLeavePageReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/oa/vo/OaLeavePageReqVO.java new file mode 100644 index 0000000000..fe879c4aea --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/oa/vo/OaLeavePageReqVO.java @@ -0,0 +1,56 @@ +package cn.iocoder.yudao.adminserver.modules.activiti.controller.oa.vo; + +import lombok.*; +import java.util.*; +import io.swagger.annotations.*; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@ApiModel("请假申请分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class OaLeavePageReqVO extends PageParam { + + @ApiModelProperty(value = "流程id") + private String processInstanceId; + + @ApiModelProperty(value = "状态") + private Integer status; + + @ApiModelProperty(value = "申请人id") + private String userId; + + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + @ApiModelProperty(value = "开始开始时间") + private Date beginStartTime; + + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + @ApiModelProperty(value = "结束开始时间") + private Date endStartTime; + + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + @ApiModelProperty(value = "开始结束时间") + private Date beginEndTime; + + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + @ApiModelProperty(value = "结束结束时间") + private Date endEndTime; + + @ApiModelProperty(value = "请假类型") + private String leaveType; + + @ApiModelProperty(value = "原因") + private String reason; + + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + @ApiModelProperty(value = "开始申请时间") + private Date beginApplyTime; + + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + @ApiModelProperty(value = "结束申请时间") + private Date endApplyTime; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/oa/vo/OaLeaveRespVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/oa/vo/OaLeaveRespVO.java new file mode 100644 index 0000000000..7f359d7b1c --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/oa/vo/OaLeaveRespVO.java @@ -0,0 +1,16 @@ +package cn.iocoder.yudao.adminserver.modules.activiti.controller.oa.vo; + +import lombok.*; +import java.util.*; +import io.swagger.annotations.*; + +@ApiModel("请假申请 Response VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class OaLeaveRespVO extends OaLeaveBaseVO { + + @ApiModelProperty(value = "请假表单主键", required = true) + private Long id; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/oa/vo/OaLeaveUpdateReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/oa/vo/OaLeaveUpdateReqVO.java new file mode 100644 index 0000000000..dc81fa31e3 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/oa/vo/OaLeaveUpdateReqVO.java @@ -0,0 +1,18 @@ +package cn.iocoder.yudao.adminserver.modules.activiti.controller.oa.vo; + +import lombok.*; +import java.util.*; +import io.swagger.annotations.*; +import javax.validation.constraints.*; + +@ApiModel("请假申请更新 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class OaLeaveUpdateReqVO extends OaLeaveBaseVO { + + @ApiModelProperty(value = "请假表单主键", required = true) + @NotNull(message = "请假表单主键不能为空") + private Long id; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/workflow/TaskController.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/workflow/TaskController.java new file mode 100644 index 0000000000..3a717f1164 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/workflow/TaskController.java @@ -0,0 +1,57 @@ +package cn.iocoder.yudao.adminserver.modules.activiti.controller.workflow; + +import cn.iocoder.yudao.adminserver.modules.activiti.controller.workflow.vo.*; +import cn.iocoder.yudao.adminserver.modules.activiti.service.workflow.TaskService; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; +import java.util.List; + +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +@Api(tags = "工作流待办任务") +@RestController +@RequestMapping("/workflow/task") +public class TaskController { + + @Resource + private TaskService taskService; + + + + @GetMapping("/todo/page") + @ApiOperation("获取待办任务分页") + public CommonResult> getTodoTaskPage(@Valid TodoTaskPageReqVO pageVO) { + return success(taskService.getTodoTaskPage(pageVO)); + } + + @GetMapping("/claim") + @ApiOperation("签收任务") + public CommonResult claimTask(@RequestParam("id") String taskId) { + taskService.claimTask(taskId); + return success(true); + } + + + @PostMapping("/task-steps") + public CommonResult getTaskSteps(@RequestBody TaskQueryReqVO taskQuery) { + return success( taskService.getTaskSteps(taskQuery)); + } + + @PostMapping("/complete") + public CommonResult complete(@RequestBody TaskReqVO taskReq) { + taskService.completeTask(taskReq); + return success(true); + } + + + @GetMapping("/process/history-steps") + public CommonResult> getHistorySteps(@RequestParam("id") String processInstanceId) { + return success( taskService.getHistorySteps(processInstanceId)); + } +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/workflow/vo/TaskHandleVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/workflow/vo/TaskHandleVO.java new file mode 100644 index 0000000000..3ef40fa328 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/workflow/vo/TaskHandleVO.java @@ -0,0 +1,19 @@ +package cn.iocoder.yudao.adminserver.modules.activiti.controller.workflow.vo; + +import lombok.Data; +import lombok.ToString; + +import java.util.List; + +@Data +@ToString +public class TaskHandleVO { + + private Object formObject; + + + private List historyTask; + + + private String taskVariable; +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/workflow/vo/TaskQueryReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/workflow/vo/TaskQueryReqVO.java new file mode 100644 index 0000000000..fab24a948e --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/workflow/vo/TaskQueryReqVO.java @@ -0,0 +1,15 @@ +package cn.iocoder.yudao.adminserver.modules.activiti.controller.workflow.vo; + +import lombok.Data; +import lombok.ToString; + +@Data +@ToString +public class TaskQueryReqVO { + + private String processKey; + + private String taskId; + + private String businessKey; +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/workflow/vo/TaskReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/workflow/vo/TaskReqVO.java new file mode 100644 index 0000000000..8e3eb6079f --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/workflow/vo/TaskReqVO.java @@ -0,0 +1,17 @@ +package cn.iocoder.yudao.adminserver.modules.activiti.controller.workflow.vo; + +import lombok.Data; +import lombok.ToString; + +import java.util.Map; + +@Data +@ToString +public class TaskReqVO { + + private String taskId; + + private Map variables; + + private String comment; +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/workflow/vo/TaskStepVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/workflow/vo/TaskStepVO.java new file mode 100644 index 0000000000..fe23355625 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/workflow/vo/TaskStepVO.java @@ -0,0 +1,22 @@ +package cn.iocoder.yudao.adminserver.modules.activiti.controller.workflow.vo; + +import lombok.Data; +import lombok.ToString; + +import java.util.Date; + +@Data +@ToString +public class TaskStepVO { + + private String stepName; + + private Date startTime; + + private Date endTime; + + private String assignee; + + private String comment; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/workflow/vo/TodoTaskPageReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/workflow/vo/TodoTaskPageReqVO.java new file mode 100644 index 0000000000..b5dddbc610 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/workflow/vo/TodoTaskPageReqVO.java @@ -0,0 +1,16 @@ +package cn.iocoder.yudao.adminserver.modules.activiti.controller.workflow.vo; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.annotations.ApiModel; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +@ApiModel("待办任务申请分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class TodoTaskPageReqVO extends PageParam { + + private String assignee; +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/workflow/vo/TodoTaskRespVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/workflow/vo/TodoTaskRespVO.java new file mode 100644 index 0000000000..5fef60eb52 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/workflow/vo/TodoTaskRespVO.java @@ -0,0 +1,30 @@ +package cn.iocoder.yudao.adminserver.modules.activiti.controller.workflow.vo; + +import io.swagger.annotations.ApiModel; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +@ApiModel("待办任务 Response VO") +@Data +@ToString +public class TodoTaskRespVO { + + private String id; + + /** + * 1:未签收 + * 2:已签收 + */ + private Integer status; + + + private String processName; + + + private String processKey; + + + private String businessKey; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/convert/oa/OaLeaveConvert.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/convert/oa/OaLeaveConvert.java new file mode 100644 index 0000000000..cabf892fe7 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/convert/oa/OaLeaveConvert.java @@ -0,0 +1,34 @@ +package cn.iocoder.yudao.adminserver.modules.activiti.convert.oa; + +import java.util.*; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; + +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; +import cn.iocoder.yudao.adminserver.modules.activiti.controller.oa.vo.*; +import cn.iocoder.yudao.adminserver.modules.activiti.dal.dataobject.oa.OaLeaveDO; + +/** + * 请假申请 Convert + * + * @author 芋艿 + */ +@Mapper +public interface OaLeaveConvert { + + OaLeaveConvert INSTANCE = Mappers.getMapper(OaLeaveConvert.class); + + OaLeaveDO convert(OaLeaveCreateReqVO bean); + + OaLeaveDO convert(OaLeaveUpdateReqVO bean); + + OaLeaveRespVO convert(OaLeaveDO bean); + + List convertList(List list); + + PageResult convertPage(PageResult page); + + List convertList02(List list); + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/convert/workflow/TodoTaskConvert.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/convert/workflow/TodoTaskConvert.java new file mode 100644 index 0000000000..787cbadd39 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/convert/workflow/TodoTaskConvert.java @@ -0,0 +1,9 @@ +package cn.iocoder.yudao.adminserver.modules.activiti.convert.workflow; + +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +@Mapper +public interface TodoTaskConvert { + TodoTaskConvert INSTANCE = Mappers.getMapper(TodoTaskConvert.class); +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/dal/dataobject/oa/OaLeaveDO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/dal/dataobject/oa/OaLeaveDO.java new file mode 100644 index 0000000000..dc0aae769f --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/dal/dataobject/oa/OaLeaveDO.java @@ -0,0 +1,60 @@ +package cn.iocoder.yudao.adminserver.modules.activiti.dal.dataobject.oa; + +import lombok.*; +import java.util.*; +import com.baomidou.mybatisplus.annotation.*; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; + +/** + * 请假申请 DO + * + * @author 芋艿 + */ +@TableName("oa_leave") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class OaLeaveDO extends BaseDO { + + /** + * 请假表单主键 + */ + @TableId + private Long id; + /** + * 流程id + */ + private String processInstanceId; + /** + * 状态 + */ + private Integer status; + /** + * 申请人id + */ + private String userId; + /** + * 开始时间 + */ + private Date startTime; + /** + * 结束时间 + */ + private Date endTime; + /** + * 请假类型 + */ + private String leaveType; + /** + * 原因 + */ + private String reason; + /** + * 申请时间 + */ + private Date applyTime; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/dal/mysql/oa/OaLeaveMapper.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/dal/mysql/oa/OaLeaveMapper.java new file mode 100644 index 0000000000..6a641c6c0f --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/dal/mysql/oa/OaLeaveMapper.java @@ -0,0 +1,46 @@ +package cn.iocoder.yudao.adminserver.modules.activiti.dal.mysql.oa; + +import java.util.*; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.adminserver.modules.activiti.dal.dataobject.oa.OaLeaveDO; +import org.apache.ibatis.annotations.Mapper; +import cn.iocoder.yudao.adminserver.modules.activiti.controller.oa.vo.*; + +/** + * 请假申请 Mapper + * + * @author 芋艿 + */ +@Mapper +public interface OaLeaveMapper extends BaseMapperX { + + default PageResult selectPage(OaLeavePageReqVO reqVO) { + return selectPage(reqVO, new QueryWrapperX() + .eqIfPresent("process_instance_id", reqVO.getProcessInstanceId()) + .eqIfPresent("status", reqVO.getStatus()) + .eqIfPresent("user_id", reqVO.getUserId()) + .betweenIfPresent("start_time", reqVO.getBeginStartTime(), reqVO.getEndStartTime()) + .betweenIfPresent("end_time", reqVO.getBeginEndTime(), reqVO.getEndEndTime()) + .eqIfPresent("leave_type", reqVO.getLeaveType()) + .eqIfPresent("reason", reqVO.getReason()) + .betweenIfPresent("apply_time", reqVO.getBeginApplyTime(), reqVO.getEndApplyTime()) + .orderByDesc("id") ); + } + + default List selectList(OaLeaveExportReqVO reqVO) { + return selectList(new QueryWrapperX() + .eqIfPresent("process_instance_id", reqVO.getProcessInstanceId()) + .eqIfPresent("status", reqVO.getStatus()) + .eqIfPresent("user_id", reqVO.getUserId()) + .betweenIfPresent("start_time", reqVO.getBeginStartTime(), reqVO.getEndStartTime()) + .betweenIfPresent("end_time", reqVO.getBeginEndTime(), reqVO.getEndEndTime()) + .eqIfPresent("leave_type", reqVO.getLeaveType()) + .eqIfPresent("reason", reqVO.getReason()) + .betweenIfPresent("apply_time", reqVO.getBeginApplyTime(), reqVO.getEndApplyTime()) + .orderByDesc("id") ); + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/enums/OaErrorCodeConstants.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/enums/OaErrorCodeConstants.java new file mode 100644 index 0000000000..78a9461128 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/enums/OaErrorCodeConstants.java @@ -0,0 +1,13 @@ +package cn.iocoder.yudao.adminserver.modules.activiti.enums; + +import cn.iocoder.yudao.framework.common.exception.ErrorCode; +/** + * activiti 系统 错误码枚举类 + * + * 003 activiti + * 001 oa + * activiti 系统,使用 1-003-000-000 段 + */ +public interface OaErrorCodeConstants { + ErrorCode LEAVE_NOT_EXISTS = new ErrorCode(1003001001, "请假申请不存在"); +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/config/UserGroupManagerService.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/config/UserGroupManagerService.java new file mode 100644 index 0000000000..0b10f3c532 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/config/UserGroupManagerService.java @@ -0,0 +1,61 @@ +package cn.iocoder.yudao.adminserver.modules.activiti.service.config; + +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.user.SysUserDO; +import cn.iocoder.yudao.adminserver.modules.system.service.dept.SysPostService; +import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysPermissionService; +import cn.iocoder.yudao.adminserver.modules.system.service.user.SysUserService; +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; +import cn.iocoder.yudao.framework.security.core.LoginUser; +import org.activiti.api.runtime.shared.identity.UserGroupManager; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.core.userdetails.UserDetailsService; +import org.springframework.stereotype.Service; + + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +import static java.util.Collections.singleton; + +@Service +public class UserGroupManagerService implements UserGroupManager { + + @Resource + private UserDetailsService userDetailsService; + + @Resource + private SysUserService userService; + + @Resource + private SysPostService sysPostService; + + /** + * 暂时使用岗位来代替 + * @param userId + * @return + */ + @Override + public List getUserGroups(String userId) { + final LoginUser loginUser = (LoginUser) userDetailsService.loadUserByUsername(userId); + final Long id = loginUser.getId(); + final SysUserDO user = userService.getUser(id); + return sysPostService.getPosts(user.getPostIds()).stream().map(post -> post.getCode()).collect(Collectors.toList()); + + } + + @Override + public List getUserRoles(String userId) { + return Arrays.asList("ROLE_ACTIVITI_USER"); + } + + @Override + public List getGroups() { + throw new UnsupportedOperationException("getGroups is now un supported"); + } + + @Override + public List getUsers() { + throw new UnsupportedOperationException("getGroups is now un supported"); + } +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/config/UserGroupsProvider.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/config/UserGroupsProvider.java new file mode 100644 index 0000000000..3f8b552999 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/config/UserGroupsProvider.java @@ -0,0 +1,31 @@ +package cn.iocoder.yudao.adminserver.modules.activiti.service.config; + +import cn.iocoder.yudao.framework.security.core.LoginUser; +import org.activiti.api.runtime.shared.security.PrincipalGroupsProvider; +import org.springframework.security.core.Authentication; +import org.springframework.stereotype.Service; + +import java.security.Principal; +import java.util.Collections; +import java.util.List; + +@Service +public class UserGroupsProvider implements PrincipalGroupsProvider { + + @Override + public List getGroups(Principal principal) { + + if(principal instanceof Authentication){ + Authentication authentication = (Authentication) principal; + final Object user = authentication.getPrincipal(); + if( user instanceof LoginUser){ + return ((LoginUser) user).getGroups(); + }else{ + return Collections.emptyList(); + } + }else{ + return Collections.emptyList(); + } + + } +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/oa/OaLeaveService.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/oa/OaLeaveService.java new file mode 100644 index 0000000000..f5c84115a4 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/oa/OaLeaveService.java @@ -0,0 +1,76 @@ +package cn.iocoder.yudao.adminserver.modules.activiti.service.oa; + + +import cn.iocoder.yudao.adminserver.modules.activiti.controller.oa.vo.OaLeaveCreateReqVO; +import cn.iocoder.yudao.adminserver.modules.activiti.controller.oa.vo.OaLeaveExportReqVO; +import cn.iocoder.yudao.adminserver.modules.activiti.controller.oa.vo.OaLeavePageReqVO; +import cn.iocoder.yudao.adminserver.modules.activiti.controller.oa.vo.OaLeaveUpdateReqVO; +import cn.iocoder.yudao.adminserver.modules.activiti.dal.dataobject.oa.OaLeaveDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; + +import javax.validation.Valid; +import java.util.Collection; +import java.util.List; + +/** + * 请假申请 Service 接口 + * + * @author 芋艿 + */ +public interface OaLeaveService { + + /** + * 创建请假申请 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createLeave(@Valid OaLeaveCreateReqVO createReqVO); + + /** + * 更新请假申请 + * + * @param updateReqVO 更新信息 + */ + void updateLeave(@Valid OaLeaveUpdateReqVO updateReqVO); + + /** + * 删除请假申请 + * + * @param id 编号 + */ + void deleteLeave(Long id); + + /** + * 获得请假申请 + * + * @param id 编号 + * @return 请假申请 + */ + OaLeaveDO getLeave(Long id); + + /** + * 获得请假申请列表 + * + * @param ids 编号 + * @return 请假申请列表 + */ + List getLeaveList(Collection ids); + + /** + * 获得请假申请分页 + * + * @param pageReqVO 分页查询 + * @return 请假申请分页 + */ + PageResult getLeavePage(OaLeavePageReqVO pageReqVO); + + /** + * 获得请假申请列表, 用于 Excel 导出 + * + * @param exportReqVO 查询条件 + * @return 请假申请列表 + */ + List getLeaveList(OaLeaveExportReqVO exportReqVO); + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/oa/ReportBackEndProcessor.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/oa/ReportBackEndProcessor.java new file mode 100644 index 0000000000..05ed6fb7d3 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/oa/ReportBackEndProcessor.java @@ -0,0 +1,30 @@ +package cn.iocoder.yudao.adminserver.modules.activiti.service.oa; + +import cn.iocoder.yudao.adminserver.modules.activiti.dal.dataobject.oa.OaLeaveDO; +import cn.iocoder.yudao.adminserver.modules.activiti.dal.mysql.oa.OaLeaveMapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import org.activiti.engine.delegate.DelegateTask; +import org.activiti.engine.delegate.TaskListener; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; + +@Component +public class ReportBackEndProcessor implements TaskListener { + + @Resource + private OaLeaveMapper leaveMapper; + + + @Override + @Transactional(rollbackFor = Exception.class) + public void notify(DelegateTask delegateTask) { + final String businessKey = delegateTask.getExecution().getProcessInstanceBusinessKey(); + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("id", Long.valueOf(businessKey)); + OaLeaveDO updateDo = new OaLeaveDO(); + updateDo.setStatus(2); + leaveMapper.update(updateDo, updateWrapper); + } +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/oa/impl/OaLeaveServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/oa/impl/OaLeaveServiceImpl.java new file mode 100644 index 0000000000..c82e7a1008 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/oa/impl/OaLeaveServiceImpl.java @@ -0,0 +1,112 @@ +package cn.iocoder.yudao.adminserver.modules.activiti.service.oa.impl; + +import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import org.activiti.engine.RuntimeService; +import org.activiti.engine.runtime.ProcessInstance; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import javax.annotation.Resource; + +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.annotation.Validated; + +import java.util.*; +import cn.iocoder.yudao.adminserver.modules.activiti.controller.oa.vo.*; +import cn.iocoder.yudao.adminserver.modules.activiti.dal.dataobject.oa.OaLeaveDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; + +import cn.iocoder.yudao.adminserver.modules.activiti.convert.oa.OaLeaveConvert; +import cn.iocoder.yudao.adminserver.modules.activiti.dal.mysql.oa.OaLeaveMapper; +import cn.iocoder.yudao.adminserver.modules.activiti.service.oa.OaLeaveService; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.adminserver.modules.activiti.enums.OaErrorCodeConstants.*; + +/** + * 请假申请 Service 实现类 + * + * @author 芋艿 + */ +@Service +@Validated +public class OaLeaveServiceImpl implements OaLeaveService { + + @Resource + private OaLeaveMapper leaveMapper; + + @Resource + private RuntimeService runtimeService; + + @Override + @Transactional(rollbackFor = Exception.class) + public Long createLeave(OaLeaveCreateReqVO createReqVO) { + // 插入 + OaLeaveDO leave = OaLeaveConvert.INSTANCE.convert(createReqVO); + leave.setStatus(1); + leave.setUserId(SecurityFrameworkUtils.getLoginUser().getUsername()); + leaveMapper.insert(leave); + + Map variables = new HashMap<>(); + //如何得到部门领导人, 暂时写死 + variables.put("deptLeader", "admin"); + final Long id = leave.getId(); + String businessKey = String.valueOf(id); + ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("leave", businessKey, variables); + + final String processInstanceId = processInstance.getProcessInstanceId(); + + + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("id", id); + OaLeaveDO updateDo = new OaLeaveDO(); + updateDo.setProcessInstanceId(processInstanceId); + leaveMapper.update(updateDo, updateWrapper); + // 返回 + return id; + } + + @Override + public void updateLeave(OaLeaveUpdateReqVO updateReqVO) { + // 校验存在 + this.validateLeaveExists(updateReqVO.getId()); + // 更新 + OaLeaveDO updateObj = OaLeaveConvert.INSTANCE.convert(updateReqVO); + leaveMapper.updateById(updateObj); + } + + @Override + public void deleteLeave(Long id) { + // 校验存在 + this.validateLeaveExists(id); + // 删除 + leaveMapper.deleteById(id); + } + + private void validateLeaveExists(Long id) { + if (leaveMapper.selectById(id) == null) { + throw exception(LEAVE_NOT_EXISTS); + } + } + + @Override + public OaLeaveDO getLeave(Long id) { + return leaveMapper.selectById(id); + } + + @Override + public List getLeaveList(Collection ids) { + return leaveMapper.selectBatchIds(ids); + } + + @Override + public PageResult getLeavePage(OaLeavePageReqVO pageReqVO) { + return leaveMapper.selectPage(pageReqVO); + } + + @Override + public List getLeaveList(OaLeaveExportReqVO exportReqVO) { + return leaveMapper.selectList(exportReqVO); + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/workflow/TaskService.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/workflow/TaskService.java new file mode 100644 index 0000000000..ae0783b482 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/workflow/TaskService.java @@ -0,0 +1,23 @@ +package cn.iocoder.yudao.adminserver.modules.activiti.service.workflow; + +import cn.iocoder.yudao.adminserver.modules.activiti.controller.workflow.vo.*; +import cn.iocoder.yudao.framework.common.pojo.PageResult; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +public interface TaskService { + + PageResult getTodoTaskPage(TodoTaskPageReqVO pageReqVO); + + void claimTask(String taskId); + + void getTaskHistory(String taskId); + + void completeTask(TaskReqVO taskReq); + +// void flowImage(String taskId, HttpServletResponse response); + TaskHandleVO getTaskSteps(TaskQueryReqVO taskQuery); + + List getHistorySteps(String processInstanceId); +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/workflow/impl/TaskServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/workflow/impl/TaskServiceImpl.java new file mode 100644 index 0000000000..aae12755b6 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/workflow/impl/TaskServiceImpl.java @@ -0,0 +1,264 @@ +package cn.iocoder.yudao.adminserver.modules.activiti.service.workflow.impl; + +import cn.iocoder.yudao.adminserver.modules.activiti.controller.workflow.vo.*; +import cn.iocoder.yudao.adminserver.modules.activiti.convert.oa.OaLeaveConvert; +import cn.iocoder.yudao.adminserver.modules.activiti.dal.dataobject.oa.OaLeaveDO; +import cn.iocoder.yudao.adminserver.modules.activiti.dal.mysql.oa.OaLeaveMapper; +import cn.iocoder.yudao.adminserver.modules.activiti.service.oa.OaLeaveService; +import cn.iocoder.yudao.adminserver.modules.activiti.service.workflow.TaskService; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.security.core.LoginUser; +import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.google.common.collect.ImmutableMap; +import org.activiti.api.process.runtime.ProcessRuntime; +import org.activiti.api.runtime.shared.query.Page; +import org.activiti.api.runtime.shared.query.Pageable; +import org.activiti.api.task.model.Task; +import org.activiti.api.task.model.builders.ClaimTaskPayloadBuilder; +import org.activiti.api.task.model.builders.GetTasksPayloadBuilder; +import org.activiti.api.task.model.builders.TaskPayloadBuilder; +import org.activiti.api.task.runtime.TaskRuntime; +import org.activiti.bpmn.model.BpmnModel; +import org.activiti.bpmn.model.Process; +import org.activiti.engine.HistoryService; +import org.activiti.engine.RepositoryService; +import org.activiti.engine.history.HistoricActivityInstance; +import org.activiti.engine.history.HistoricProcessInstance; +import org.activiti.engine.history.HistoricVariableInstance; +import org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity; +import org.activiti.engine.repository.ProcessDefinition; +import org.activiti.engine.task.Comment; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.stream.Collectors; + +@Service +public class TaskServiceImpl implements TaskService { + + @Resource + private TaskRuntime taskRuntime; + + @Resource + private org.activiti.engine.TaskService activitiTaskService; + + @Resource + private HistoryService historyService; + + @Resource + private RepositoryService repositoryService; + + @Resource + private OaLeaveMapper leaveMapper; + + private static Map taskVariable = ImmutableMap.builder() + .put("deptLeaderVerify","deptLeaderApproved") + .put("hrVerify","hrApproved") + .build(); + + public TaskServiceImpl() { + + } + + @Override + public PageResult getTodoTaskPage(TodoTaskPageReqVO pageReqVO) { + final LoginUser loginUser = SecurityFrameworkUtils.getLoginUser(); + final Pageable pageable = Pageable.of((pageReqVO.getPageNo() - 1) * pageReqVO.getPageSize(), pageReqVO.getPageSize()); + Page pageTasks = taskRuntime.tasks(pageable); + List tasks = pageTasks.getContent(); + int totalItems = pageTasks.getTotalItems(); + final List respVOList = tasks.stream().map(task -> { + TodoTaskRespVO respVO = new TodoTaskRespVO(); + respVO.setId(task.getId()); + final ProcessDefinition definition = repositoryService.getProcessDefinition(task.getProcessDefinitionId()); + respVO.setProcessName(definition.getName()); + respVO.setProcessKey(definition.getKey()); + respVO.setBusinessKey(task.getBusinessKey()); + respVO.setStatus(task.getAssignee() == null ? 1 : 2); + return respVO; + }).collect(Collectors.toList()); + return new PageResult(respVOList, Long.valueOf(totalItems)); + } + + + @Override + public void claimTask(String taskId) { + taskRuntime.claim(new ClaimTaskPayloadBuilder() + .withTaskId(taskId) + .withAssignee(SecurityFrameworkUtils.getLoginUser().getUsername()) + .build()); + } + + @Override + public void getTaskHistory(String taskId) { + + final List list = historyService.createHistoricProcessInstanceQuery(). + processInstanceId("8e2801fc-1a38-11ec-98ce-74867a13730f").list(); + + } + + @Override + @Transactional + public void completeTask(TaskReqVO taskReq) { + final Task task = taskRuntime.task(taskReq.getTaskId()); + + final Map variables = taskReq.getVariables(); + + activitiTaskService.addComment(taskReq.getTaskId(), task.getProcessInstanceId(), taskReq.getComment()); + + taskRuntime.complete(TaskPayloadBuilder.complete().withTaskId(taskReq.getTaskId()) + .withVariables(taskReq.getVariables()) + .build()); + + if(variables.containsValue(Boolean.FALSE)){ + final String businessKey = task.getBusinessKey(); + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("id", Long.valueOf(businessKey)); + OaLeaveDO updateDo = new OaLeaveDO(); + updateDo.setStatus(2); + leaveMapper.update(updateDo, updateWrapper); + } + + } + +// @Override +// public void flowImage(String taskId, HttpServletResponse response) { +// +// final Task task = taskRuntime.task(taskId); +// BpmnModel bpmnModel = repositoryService.getBpmnModel(task.getProcessDefinitionId()); +// final Process process = bpmnModel.getMainProcess(); +// ProcessDefinitionEntity processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionId(task.getProcessDefinitionId()).singleResult(); +// List activeActivityIds = runtimeService.getActiveActivityIds(executionId); +// List highLightedFlows = getHighLightedFlows(processDefinition, processInstance.getId()); +// ProcessDiagramGenerator diagramGenerator = processEngineConfiguration.getProcessDiagramGenerator(); +// InputStream imageStream =diagramGenerator.generateDiagram(bpmnModel, "png", activeActivityIds, highLightedFlows); +// +// // 输出资源内容到相应对象 +// byte[] b = new byte[1024]; +// int len; +// while ((len = imageStream.read(b, 0, 1024)) != -1) { +// response.getOutputStream().write(b, 0, len); +// } +// } + + @Override + public TaskHandleVO getTaskSteps(TaskQueryReqVO taskQuery) { + TaskHandleVO handleVO = new TaskHandleVO(); + + String processKey = taskQuery.getProcessKey(); + if ("leave".equals(processKey)) { + String businessKey = taskQuery.getBusinessKey(); + final OaLeaveDO leave = leaveMapper.selectById(Long.valueOf(businessKey)); + handleVO.setFormObject( OaLeaveConvert.INSTANCE.convert(leave)); + } + + final Task task = taskRuntime.task(taskQuery.getTaskId()); + final String taskDefKey = task.getTaskDefinitionKey(); + final String variableName = Optional.ofNullable(taskVariable.get(taskDefKey)).orElse(""); + + + handleVO.setTaskVariable(variableName); + List steps = getTaskSteps(task.getProcessInstanceId()); + + handleVO.setHistoryTask(steps); + return handleVO; + } + + + private List getTaskSteps(String processInstanceId) { + + List steps = new ArrayList<>(); + + List finished = historyService + .createHistoricActivityInstanceQuery() + .processInstanceId(processInstanceId) + .activityType("userTask") + .finished() + .orderByHistoricActivityInstanceStartTime().asc().list(); + + finished.forEach(instance->{ + TaskStepVO step = new TaskStepVO(); + step.setStepName(instance.getActivityName()); + step.setStartTime(instance.getStartTime()); + step.setEndTime(instance.getEndTime()); + step.setAssignee(instance.getAssignee()); + final List comments = activitiTaskService.getTaskComments(instance.getTaskId()); + if(comments.size()>0){ + step.setComment(comments.get(0).getFullMessage()); + }else{ + step.setComment(""); + } + steps.add(step); + }); + + List unfinished = historyService + .createHistoricActivityInstanceQuery() + .processInstanceId(processInstanceId) + .activityType("userTask") + .unfinished().list(); + + if(unfinished.size()>0) { + + final HistoricActivityInstance unFinishedActiviti = unfinished.get(0); + TaskStepVO step = new TaskStepVO(); + step.setStepName(unFinishedActiviti.getActivityName()); + step.setStartTime(unFinishedActiviti.getStartTime()); + step.setEndTime(unFinishedActiviti.getEndTime()); + step.setAssignee(Optional.ofNullable(unFinishedActiviti.getAssignee()).orElse("")); + step.setComment(""); + steps.add(step); + } + return steps; + } + + + @Override + public List getHistorySteps(String processInstanceId) { + + return getTaskSteps(processInstanceId); + } + + + +// private List getHighLightedFlows(ProcessDefinitionEntity processDefinition, String processInstanceId) { +// +// List highLightedFlows = new ArrayList(); +// List historicActivityInstances = historyService +// .createHistoricActivityInstanceQuery() +// .processInstanceId(processInstanceId) +// .orderByHistoricActivityInstanceStartTime().asc().list(); +// +// List historicActivityInstanceList = new ArrayList(); +// for (HistoricActivityInstance hai : historicActivityInstances) { +// historicActivityInstanceList.add(hai.getActivityId()); +// } + +// // add current activities to list +// List highLightedActivities = runtimeService.getActiveActivityIds(processInstanceId); +// historicActivityInstanceList.addAll(highLightedActivities); + + // activities and their sequence-flows +// for (ActivityImpl activity : processDefinition.getActivities()) { +// int index = historicActivityInstanceList.indexOf(activity.getId()); +// +// if (index >= 0 && index + 1 < historicActivityInstanceList.size()) { +// List pvmTransitionList = activity +// .getOutgoingTransitions(); +// for (PvmTransition pvmTransition : pvmTransitionList) { +// String destinationFlowId = pvmTransition.getDestination().getId(); +// if (destinationFlowId.equals(historicActivityInstanceList.get(index + 1))) { +// highLightedFlows.add(pvmTransition.getId()); +// } +// } +// } +// } +// return highLightedFlows; +// } +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/impl/SysAuthServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/impl/SysAuthServiceImpl.java index f69c967369..63869170db 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/impl/SysAuthServiceImpl.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/impl/SysAuthServiceImpl.java @@ -1,5 +1,6 @@ package cn.iocoder.yudao.adminserver.modules.system.service.auth.impl; +import cn.iocoder.yudao.adminserver.modules.system.service.dept.SysPostService; import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil; import cn.iocoder.yudao.framework.security.core.LoginUser; @@ -31,10 +32,14 @@ import org.springframework.stereotype.Service; import org.springframework.util.Assert; import javax.annotation.Resource; +import java.util.List; +import java.util.Optional; import java.util.Set; +import java.util.stream.Collectors; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.*; +import static java.util.Collections.EMPTY_LIST; import static java.util.Collections.singleton; /** @@ -59,6 +64,8 @@ public class SysAuthServiceImpl implements SysAuthService { private SysLoginLogService loginLogService; @Resource private SysUserSessionService userSessionService; + @Resource + private SysPostService sysPostService; @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { @@ -68,7 +75,9 @@ public class SysAuthServiceImpl implements SysAuthService { throw new UsernameNotFoundException(username); } // 创建 LoginUser 对象 - return SysAuthConvert.INSTANCE.convert(user); + LoginUser loginUser = SysAuthConvert.INSTANCE.convert(user); + loginUser.setPostIds(user.getPostIds()); + return loginUser; } @Override @@ -92,11 +101,18 @@ public class SysAuthServiceImpl implements SysAuthService { // 使用账号密码,进行登陆。 LoginUser loginUser = this.login0(reqVO.getUsername(), reqVO.getPassword()); loginUser.setRoleIds(this.getUserRoleIds(loginUser.getId())); // 获取用户角色列表 - + loginUser.setGroups(this.getUserPosts(loginUser.getPostIds())); // 缓存登陆用户到 Redis 中,返回 sessionId 编号 return userSessionService.createUserSession(loginUser, userIp, userAgent); } + + private List getUserPosts(Set postIds) { + return Optional.ofNullable(postIds).map(ids-> + sysPostService.getPosts(ids).stream().map(post -> post.getCode()).collect(Collectors.toList()) + ).orElse(EMPTY_LIST); + } + private void verifyCaptcha(String username, String captchaUUID, String captchaCode) { String code = captchaService.getCaptchaCode(captchaUUID); // 验证码不存在 @@ -122,6 +138,7 @@ public class SysAuthServiceImpl implements SysAuthService { // 调用 Spring Security 的 AuthenticationManager#authenticate(...) 方法,使用账号密码进行认证 // 在其内部,会调用到 loadUserByUsername 方法,获取 User 信息 authentication = authenticationManager.authenticate(new UsernamePasswordAuthenticationToken(username, password)); + // org.activiti.engine.impl.identity.Authentication.setAuthenticatedUserId(username); } catch (BadCredentialsException badCredentialsException) { this.createLoginLog(username, SysLoginResultEnum.BAD_CREDENTIALS); throw exception(AUTH_LOGIN_BAD_CREDENTIALS); diff --git a/yudao-admin-server/src/main/resources/application.yaml b/yudao-admin-server/src/main/resources/application.yaml index 486d4a4877..49cfaa44af 100644 --- a/yudao-admin-server/src/main/resources/application.yaml +++ b/yudao-admin-server/src/main/resources/application.yaml @@ -22,9 +22,10 @@ spring: # MyBatis Plus 的配置项 mybatis-plus: - configuration: - map-underscore-to-camel-case: true # 虽然默认为 true ,但是还是显示去指定下。 - log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 打印日志 +# 在 mybatis-config/mybatis-config.xml 中设置 +# configuration: +# map-underscore-to-camel-case: true # 虽然默认为 true ,但是还是显示去指定下。 +# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 打印日志 global-config: db-config: id-type: AUTO # 自增 ID @@ -32,6 +33,18 @@ mybatis-plus: logic-not-delete-value: 0 # 逻辑未删除值(默认为 0) mapper-locations: classpath*:mapper/*.xml type-aliases-package: ${yudao.info.base-package}.modules.*.dal.dataobject + config-location: classpath:mybatis-config/mybatis-config.xml + configuration-properties: + prefix: "" + wildcardEscapeClause: "" + limitBefore: "" + limitAfter: "LIMIT #{maxResults} OFFSET #{firstResult}" + limitBetween: "" + limitOuterJoinBetween: "" + limitBeforeNativeQuery: "" + orderBy: "order by ${orderByColumns}" + blobType: "BLOB" + boolValue: "TRUE" --- #################### 芋道相关配置 #################### diff --git a/yudao-admin-server/src/main/resources/mybatis-config/mybatis-config.xml b/yudao-admin-server/src/main/resources/mybatis-config/mybatis-config.xml new file mode 100644 index 0000000000..4f290bc98f --- /dev/null +++ b/yudao-admin-server/src/main/resources/mybatis-config/mybatis-config.xml @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/yudao-admin-server/src/main/resources/processes/leave.bpmn b/yudao-admin-server/src/main/resources/processes/leave.bpmn new file mode 100644 index 0000000000..34eeea0a51 --- /dev/null +++ b/yudao-admin-server/src/main/resources/processes/leave.bpmn @@ -0,0 +1,130 @@ + + + + 请假流程演示 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/yudao-admin-ui/src/api/oa/leave.js b/yudao-admin-ui/src/api/oa/leave.js new file mode 100644 index 0000000000..3fb0f806ce --- /dev/null +++ b/yudao-admin-ui/src/api/oa/leave.js @@ -0,0 +1,54 @@ +import request from '@/utils/request' + +// 创建请假申请 +export function createLeave(data) { + return request({ + url: '/oa/leave/create', + method: 'post', + data: data + }) +} + +// 更新请假申请 +export function updateLeave(data) { + return request({ + url: '/oa/leave/update', + method: 'put', + data: data + }) +} + +// 删除请假申请 +export function deleteLeave(id) { + return request({ + url: '/oa/leave/delete?id=' + id, + method: 'delete' + }) +} + +// 获得请假申请 +export function getLeave(id) { + return request({ + url: '/oa/leave/get?id=' + id, + method: 'get' + }) +} + +// 获得请假申请分页 +export function getLeavePage(query) { + return request({ + url: '/oa/leave/page', + method: 'get', + params: query + }) +} + +// 导出请假申请 Excel +export function exportLeaveExcel(query) { + return request({ + url: '/oa/leave/export-excel', + method: 'get', + params: query, + responseType: 'blob' + }) +} diff --git a/yudao-admin-ui/src/api/oa/todo.js b/yudao-admin-ui/src/api/oa/todo.js new file mode 100644 index 0000000000..35f857988e --- /dev/null +++ b/yudao-admin-ui/src/api/oa/todo.js @@ -0,0 +1,75 @@ +import request from '@/utils/request' + +// 创建请假申请 +export function createLeave(data) { + return request({ + url: '/oa/leave/create', + method: 'post', + data: data + }) +} + +// 更新请假申请 +export function updateLeave(data) { + return request({ + url: '/oa/leave/update', + method: 'put', + data: data + }) +} + +// 删除请假申请 +export function deleteLeave(id) { + return request({ + url: '/oa/leave/delete?id=' + id, + method: 'delete' + }) +} + +// 获得请假申请 +export function getLeave(id) { + return request({ + url: '/oa/leave/get?id=' + id, + method: 'get' + }) +} + +// 获得待办任务分页 +export function getTodoTaskPage(query) { + return request({ + url: '/workflow/task/todo/page', + method: 'get', + params: query + }) +} + +// 签收任务 +export function claimTask(id) { + return request({ + url: '/workflow/task/claim?id=' + id, + method: 'get' + }) +} + +export function completeTask(data) { + return request({ + url: '/workflow/task/complete', + method: 'post', + data: data + }) +} + +export function taskSteps(data) { + return request({ + url: '/workflow/task/task-steps', + method: 'post', + data: data + }) +} + +export function processHistorySteps(id) { + return request({ + url: '/workflow/task/process/history-steps?id='+id, + method: 'get' + }) +} diff --git a/yudao-admin-ui/src/utils/dict.js b/yudao-admin-ui/src/utils/dict.js index 17d5bd00e8..b29c003590 100644 --- a/yudao-admin-ui/src/utils/dict.js +++ b/yudao-admin-ui/src/utils/dict.js @@ -29,6 +29,9 @@ export const DICT_TYPE = { INF_API_ERROR_LOG_PROCESS_STATUS: 'inf_api_error_log_process_status', TOOL_CODEGEN_TEMPLATE_TYPE: 'tool_codegen_template_type', + + OA_LEAVE_STATUS: 'oa_leave_status', + OA_LEAVE_TYPE: 'oa_leave_type' } /** diff --git a/yudao-admin-ui/src/views/oa/leave/index.vue b/yudao-admin-ui/src/views/oa/leave/index.vue new file mode 100644 index 0000000000..d147063839 --- /dev/null +++ b/yudao-admin-ui/src/views/oa/leave/index.vue @@ -0,0 +1,347 @@ + + + diff --git a/yudao-admin-ui/src/views/oa/todo/index.vue b/yudao-admin-ui/src/views/oa/todo/index.vue new file mode 100644 index 0000000000..0d41076244 --- /dev/null +++ b/yudao-admin-ui/src/views/oa/todo/index.vue @@ -0,0 +1,284 @@ + + + diff --git a/yudao-framework/yudao-spring-boot-starter-activiti/pom.xml b/yudao-framework/yudao-spring-boot-starter-activiti/pom.xml index e9cee07f1f..b1c08492ad 100644 --- a/yudao-framework/yudao-spring-boot-starter-activiti/pom.xml +++ b/yudao-framework/yudao-spring-boot-starter-activiti/pom.xml @@ -19,20 +19,29 @@ 7.1.0.M6 - + + + + org.activiti.dependencies + activiti-dependencies + ${activiti.version} + import + pom + + + cn.iocoder.boot yudao-common - - org.activiti.dependencies - activiti-dependencies - ${activiti.version} - pom + org.mybatis + mybatis + true + org.activiti @@ -51,6 +60,10 @@ org.mybatis mybatis + + el-api + javax.el + diff --git a/yudao-framework/yudao-spring-boot-starter-activiti/src/main/java/cn/iocoder/yudao/framework/activiti/config/YudaoActivitiConfiguration.java b/yudao-framework/yudao-spring-boot-starter-activiti/src/main/java/cn/iocoder/yudao/framework/activiti/config/YudaoActivitiConfiguration.java new file mode 100644 index 0000000000..6e7355db93 --- /dev/null +++ b/yudao-framework/yudao-spring-boot-starter-activiti/src/main/java/cn/iocoder/yudao/framework/activiti/config/YudaoActivitiConfiguration.java @@ -0,0 +1,32 @@ +package cn.iocoder.yudao.framework.activiti.config; + +import org.activiti.api.runtime.shared.identity.UserGroupManager; +import org.activiti.spring.SpringProcessEngineConfiguration; +import org.activiti.spring.boot.ProcessEngineConfigurationConfigurer; +import org.apache.ibatis.session.SqlSessionFactory; +import org.springframework.context.annotation.Configuration; +import org.springframework.stereotype.Component; + +@Configuration +public class YudaoActivitiConfiguration { + + + + + @Component + public static class SqlSessionFactoryProcessEngineConfigurationConfigurer + implements ProcessEngineConfigurationConfigurer { + + private final SqlSessionFactory sqlSessionFactory; + public SqlSessionFactoryProcessEngineConfigurationConfigurer(SqlSessionFactory sessionFactory) { + this.sqlSessionFactory = sessionFactory; + } + + @Override + public void configure(SpringProcessEngineConfiguration springProcessEngineConfiguration) { + springProcessEngineConfiguration.setSqlSessionFactory(sqlSessionFactory); + } + } + + +} diff --git a/yudao-framework/yudao-spring-boot-starter-security/pom.xml b/yudao-framework/yudao-spring-boot-starter-security/pom.xml index 4a2b1878a8..bdc69f264f 100644 --- a/yudao-framework/yudao-spring-boot-starter-security/pom.xml +++ b/yudao-framework/yudao-spring-boot-starter-security/pom.xml @@ -39,6 +39,18 @@ spring-boot-starter-security + + org.activiti + activiti-engine + 7.1.0.M6 + + + * + * + + + true + diff --git a/yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/core/LoginUser.java b/yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/core/LoginUser.java index 2c2ff89142..f6c5acad1c 100644 --- a/yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/core/LoginUser.java +++ b/yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/core/LoginUser.java @@ -4,11 +4,10 @@ import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Data; import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.springframework.security.core.userdetails.UserDetails; -import java.util.Collection; -import java.util.Date; -import java.util.Set; +import java.util.*; /** * 登陆用户信息 @@ -48,6 +47,18 @@ public class LoginUser implements UserDetails { */ private Integer status; + + /** + * 所属岗位 + */ + private Set postIds; + + /** + * group 目前指岗位代替 + */ + private List groups; + + @Override @JsonIgnore// 避免序列化 public String getPassword() { @@ -55,7 +66,6 @@ public class LoginUser implements UserDetails { } @Override - @JsonIgnore public String getUsername() { return username; } @@ -69,7 +79,9 @@ public class LoginUser implements UserDetails { @Override @JsonIgnore// 避免序列化 public Collection getAuthorities() { - return null; + List list = new ArrayList<>(1); + list.add(new SimpleGrantedAuthority("ROLE_ACTIVITI_USER")); + return list; } @Override diff --git a/yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/core/util/SecurityFrameworkUtils.java b/yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/core/util/SecurityFrameworkUtils.java index a8360c490f..f63a9b7ba8 100644 --- a/yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/core/util/SecurityFrameworkUtils.java +++ b/yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/core/util/SecurityFrameworkUtils.java @@ -90,13 +90,18 @@ public class SecurityFrameworkUtils { public static void setLoginUser(LoginUser loginUser, HttpServletRequest request) { // 创建 UsernamePasswordAuthenticationToken 对象 UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken( - loginUser, null, null); + loginUser, null, loginUser.getAuthorities()); authenticationToken.setDetails(new WebAuthenticationDetailsSource().buildDetails(request)); // 设置到上下文 + //何时调用 SecurityContextHolder.clearContext. spring security filter 应该会调用 clearContext SecurityContextHolder.getContext().setAuthentication(authenticationToken); // 额外设置到 request 中,用于 ApiAccessLogFilter 可以获取到用户编号; // 原因是,Spring Security 的 Filter 在 ApiAccessLogFilter 后面,在它记录访问日志时,线上上下文已经没有用户编号等信息 WebFrameworkUtils.setLoginUserId(request, loginUser.getId()); + + org.activiti.engine.impl.identity.Authentication.setAuthenticatedUserId(loginUser.getUsername()); + + } } From fcf1c228c58a727497bcc005f4ef5f06d733647e Mon Sep 17 00:00:00 2001 From: timfruit Date: Tue, 26 Oct 2021 21:35:06 +0800 Subject: [PATCH 06/81] =?UTF-8?q?=E5=88=9D=E6=AD=A5=E5=AE=8C=E6=88=90?= =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E5=85=AC=E4=BC=97=E5=8F=B7=E7=99=BB=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yudao-admin-server/pom.xml | 6 -- .../controller/auth/SysAuthController.java | 5 +- .../auth/vo/auth/SysAuthSocialBindReqVO.java | 2 +- .../vo/auth/SysAuthSocialLogin2ReqVO.java | 2 +- .../auth/vo/auth/SysAuthSocialLoginReqVO.java | 2 +- .../dal/redis/SysRedisKeyConstants.java | 7 -- .../system/enums/SysErrorCodeConstants.java | 4 +- .../service/auth/impl/SysAuthServiceImpl.java | 16 ++-- yudao-core-service/pom.xml | 6 ++ .../dataobject/social/SysSocialUserDO.java | 2 +- .../dal/mysql/social/SysSocialUserMapper.java | 4 +- .../dal/redis/SysRedisKeyCoreConstants.java | 10 +++ .../social/SysSocialAuthUserRedisDAO.java | 7 +- .../system/enums/SysErrorCodeConstants.java | 5 ++ .../enums/social/SysSocialTypeEnum.java | 12 ++- .../service/social/SysSocialService.java | 15 ++-- .../social/impl/SysSocialServiceImpl.java | 40 +++++----- .../enums/social/SysSocialTypeEnum.java | 55 -------------- .../controller/auth/SysAuthController.java | 48 +++++++----- .../auth/vo/MbrAuthSocialBindReqVO.java | 2 +- .../auth/vo/MbrAuthSocialLogin2ReqVO.java | 2 +- .../auth/vo/MbrAuthSocialLoginReqVO.java | 2 +- .../auth/vo/MbrAuthSocialUnbindReqVO.java | 2 +- .../system/enums/SysErrorCodeConstants.java | 4 + .../system/service/auth/SysAuthService.java | 32 +++++++- .../service/auth/impl/SysAuthServiceImpl.java | 74 ++++++++++++++++++- .../src/main/resources/application-dev.yaml | 27 +++++++ .../src/main/resources/application-local.yaml | 26 +++++++ 28 files changed, 275 insertions(+), 144 deletions(-) rename {yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver => yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice}/modules/system/dal/dataobject/social/SysSocialUserDO.java (96%) rename {yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver => yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice}/modules/system/dal/mysql/social/SysSocialUserMapper.java (89%) rename {yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver => yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice}/modules/system/dal/redis/social/SysSocialAuthUserRedisDAO.java (83%) rename {yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver => yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice}/modules/system/enums/social/SysSocialTypeEnum.java (74%) rename {yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver => yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice}/modules/system/service/social/SysSocialService.java (83%) rename {yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver => yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice}/modules/system/service/social/impl/SysSocialServiceImpl.java (84%) delete mode 100644 yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/member/enums/social/SysSocialTypeEnum.java diff --git a/yudao-admin-server/pom.xml b/yudao-admin-server/pom.xml index 120d3e926f..bfccf80923 100644 --- a/yudao-admin-server/pom.xml +++ b/yudao-admin-server/pom.xml @@ -122,12 +122,6 @@ screw-core - - - com.xkcoding.justauth - justauth-spring-boot-starter - 1.4.0 - diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/SysAuthController.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/SysAuthController.java index b87deaca97..16130e17ea 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/SysAuthController.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/SysAuthController.java @@ -8,10 +8,11 @@ import cn.iocoder.yudao.adminserver.modules.system.enums.permission.MenuTypeEnum import cn.iocoder.yudao.adminserver.modules.system.service.auth.SysAuthService; import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysPermissionService; import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysRoleService; -import cn.iocoder.yudao.adminserver.modules.system.service.social.SysSocialService; import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO; +import cn.iocoder.yudao.coreservice.modules.system.service.social.SysSocialService; import cn.iocoder.yudao.coreservice.modules.system.service.user.SysUserCoreService; import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; +import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.util.collection.SetUtils; import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; @@ -132,7 +133,7 @@ public class SysAuthController { @DeleteMapping("/social-unbind") @ApiOperation("取消社交绑定") public CommonResult socialUnbind(@RequestBody SysAuthSocialUnbindReqVO reqVO) { - socialService.unbindSocialUser(getLoginUserId(), reqVO.getType(), reqVO.getUnionId()); + socialService.unbindSocialUser(getLoginUserId(), reqVO.getType(), reqVO.getUnionId(), UserTypeEnum.ADMIN); return CommonResult.success(true); } diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/vo/auth/SysAuthSocialBindReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/vo/auth/SysAuthSocialBindReqVO.java index 66d05cedfe..e92d3fc504 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/vo/auth/SysAuthSocialBindReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/vo/auth/SysAuthSocialBindReqVO.java @@ -1,6 +1,6 @@ package cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.auth; -import cn.iocoder.yudao.adminserver.modules.system.enums.social.SysSocialTypeEnum; +import cn.iocoder.yudao.coreservice.modules.system.enums.social.SysSocialTypeEnum; import cn.iocoder.yudao.framework.common.validation.InEnum; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/vo/auth/SysAuthSocialLogin2ReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/vo/auth/SysAuthSocialLogin2ReqVO.java index bedf8ba3e8..13aaa71cc7 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/vo/auth/SysAuthSocialLogin2ReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/vo/auth/SysAuthSocialLogin2ReqVO.java @@ -1,6 +1,6 @@ package cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.auth; -import cn.iocoder.yudao.adminserver.modules.system.enums.social.SysSocialTypeEnum; +import cn.iocoder.yudao.coreservice.modules.system.enums.social.SysSocialTypeEnum; import cn.iocoder.yudao.framework.common.validation.InEnum; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/vo/auth/SysAuthSocialLoginReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/vo/auth/SysAuthSocialLoginReqVO.java index b34022d4fd..71d19685d0 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/vo/auth/SysAuthSocialLoginReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/vo/auth/SysAuthSocialLoginReqVO.java @@ -1,6 +1,6 @@ package cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.auth; -import cn.iocoder.yudao.adminserver.modules.system.enums.social.SysSocialTypeEnum; +import cn.iocoder.yudao.coreservice.modules.system.enums.social.SysSocialTypeEnum; import cn.iocoder.yudao.framework.common.validation.InEnum; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/redis/SysRedisKeyConstants.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/redis/SysRedisKeyConstants.java index e7c484bb02..e9d3373b25 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/redis/SysRedisKeyConstants.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/redis/SysRedisKeyConstants.java @@ -19,12 +19,5 @@ public interface SysRedisKeyConstants { "captcha_code:%s", // 参数为 uuid STRING, String.class, RedisKeyDefine.TimeoutTypeEnum.DYNAMIC); - RedisKeyDefine SOCIAL_AUTH_USER = new RedisKeyDefine("社交的授权用户", - "social_auth_user:%d:%s", // 参数为 type,code - STRING, AuthUser.class, Duration.ofDays(1)); - - RedisKeyDefine SOCIAL_AUTH_STATE = new RedisKeyDefine("社交的 state", - "social_auth_state:%s", // 参数为 state - STRING, String.class, Duration.ofHours(24)); // 值为 state } diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/SysErrorCodeConstants.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/SysErrorCodeConstants.java index 8a606e0624..3b4051d206 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/SysErrorCodeConstants.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/SysErrorCodeConstants.java @@ -90,8 +90,6 @@ public interface SysErrorCodeConstants { ErrorCode ERROR_CODE_NOT_EXISTS = new ErrorCode(1002013000, "错误码不存在"); ErrorCode ERROR_CODE_DUPLICATE = new ErrorCode(1002013001, "已经存在编码为【{}】的错误码"); - // ========== 社交模块 1002014000 ========== - ErrorCode SOCIAL_AUTH_FAILURE = new ErrorCode(1002014000, "社交授权失败,原因是:{}"); - ErrorCode SOCIAL_UNBIND_NOT_SELF = new ErrorCode(1002014001, "社交解绑失败,非当前用户绑定"); + } diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/impl/SysAuthServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/impl/SysAuthServiceImpl.java index d5fb91f95d..0bf08e8c2f 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/impl/SysAuthServiceImpl.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/impl/SysAuthServiceImpl.java @@ -6,18 +6,18 @@ import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.auth.SysAu import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.auth.SysAuthSocialLogin2ReqVO; import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.auth.SysAuthSocialLoginReqVO; import cn.iocoder.yudao.adminserver.modules.system.convert.auth.SysAuthConvert; -import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.social.SysSocialUserDO; import cn.iocoder.yudao.adminserver.modules.system.enums.logger.SysLoginLogTypeEnum; import cn.iocoder.yudao.adminserver.modules.system.enums.logger.SysLoginResultEnum; import cn.iocoder.yudao.adminserver.modules.system.service.auth.SysAuthService; import cn.iocoder.yudao.adminserver.modules.system.service.common.SysCaptchaService; import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysPermissionService; -import cn.iocoder.yudao.adminserver.modules.system.service.social.SysSocialService; import cn.iocoder.yudao.adminserver.modules.system.service.user.SysUserService; +import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.social.SysSocialUserDO; import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO; import cn.iocoder.yudao.coreservice.modules.system.service.auth.SysUserSessionCoreService; import cn.iocoder.yudao.coreservice.modules.system.service.logger.SysLoginLogCoreService; import cn.iocoder.yudao.coreservice.modules.system.service.logger.dto.SysLoginLogCreateReqDTO; +import cn.iocoder.yudao.coreservice.modules.system.service.social.SysSocialService; import cn.iocoder.yudao.coreservice.modules.system.service.user.SysUserCoreService; import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; @@ -75,6 +75,8 @@ public class SysAuthServiceImpl implements SysAuthService { @Resource private SysSocialService socialService; + private static final UserTypeEnum userTypeEnum = UserTypeEnum.ADMIN; + @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { // 获取 username 对应的 SysUserDO @@ -198,7 +200,7 @@ public class SysAuthServiceImpl implements SysAuthService { // 如果未绑定 SysSocialUserDO 用户,则无法自动登录,进行报错 String unionId = socialService.getAuthUserUnionId(authUser); - List socialUsers = socialService.getAllSocialUserList(reqVO.getType(), unionId); + List socialUsers = socialService.getAllSocialUserList(reqVO.getType(), unionId, userTypeEnum); if (CollUtil.isEmpty(socialUsers)) { throw exception(AUTH_THIRD_LOGIN_NOT_BIND); } @@ -216,7 +218,7 @@ public class SysAuthServiceImpl implements SysAuthService { loginUser.setRoleIds(this.getUserRoleIds(loginUser.getId())); // 获取用户角色列表 // 绑定社交用户(更新) - socialService.bindSocialUser(loginUser.getId(), reqVO.getType(), authUser); + socialService.bindSocialUser(loginUser.getId(), reqVO.getType(), authUser, userTypeEnum); // 缓存登录用户到 Redis 中,返回 sessionId 编号 return userSessionCoreService.createUserSession(loginUser, userIp, userAgent); @@ -233,7 +235,7 @@ public class SysAuthServiceImpl implements SysAuthService { loginUser.setRoleIds(this.getUserRoleIds(loginUser.getId())); // 获取用户角色列表 // 绑定社交用户(新增) - socialService.bindSocialUser(loginUser.getId(), reqVO.getType(), authUser); + socialService.bindSocialUser(loginUser.getId(), reqVO.getType(), authUser, userTypeEnum); // 缓存登录用户到 Redis 中,返回 sessionId 编号 return userSessionCoreService.createUserSession(loginUser, userIp, userAgent); @@ -246,7 +248,7 @@ public class SysAuthServiceImpl implements SysAuthService { Assert.notNull(authUser, "授权用户不为空"); // 绑定社交用户(新增) - socialService.bindSocialUser(userId, reqVO.getType(), authUser); + socialService.bindSocialUser(userId, reqVO.getType(), authUser, userTypeEnum); } @Override @@ -267,7 +269,7 @@ public class SysAuthServiceImpl implements SysAuthService { reqDTO.setLogType(SysLoginLogTypeEnum.LOGOUT_SELF.getType()); reqDTO.setTraceId(TracerUtils.getTraceId()); reqDTO.setUserId(userId); - reqDTO.setUserType(UserTypeEnum.ADMIN.getValue()); + reqDTO.setUserType(userTypeEnum.getValue()); reqDTO.setUsername(username); reqDTO.setUserAgent(ServletUtils.getUserAgent()); reqDTO.setUserIp(ServletUtils.getClientIP()); diff --git a/yudao-core-service/pom.xml b/yudao-core-service/pom.xml index 43cdae127e..42a7d9627f 100644 --- a/yudao-core-service/pom.xml +++ b/yudao-core-service/pom.xml @@ -85,6 +85,12 @@ com.google.guava guava + + + com.xkcoding.justauth + justauth-spring-boot-starter + 1.4.0 + diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/dataobject/social/SysSocialUserDO.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/dal/dataobject/social/SysSocialUserDO.java similarity index 96% rename from yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/dataobject/social/SysSocialUserDO.java rename to yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/dal/dataobject/social/SysSocialUserDO.java index 7e998b8fcf..d1772a1324 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/dataobject/social/SysSocialUserDO.java +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/dal/dataobject/social/SysSocialUserDO.java @@ -1,4 +1,4 @@ -package cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.social; +package cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.social; import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO; import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/social/SysSocialUserMapper.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/dal/mysql/social/SysSocialUserMapper.java similarity index 89% rename from yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/social/SysSocialUserMapper.java rename to yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/dal/mysql/social/SysSocialUserMapper.java index b5762ec7fb..43fc4a790f 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/social/SysSocialUserMapper.java +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/dal/mysql/social/SysSocialUserMapper.java @@ -1,6 +1,6 @@ -package cn.iocoder.yudao.adminserver.modules.system.dal.mysql.social; +package cn.iocoder.yudao.coreservice.modules.system.dal.mysql.social; -import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.social.SysSocialUserDO; +import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.social.SysSocialUserDO; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import org.apache.ibatis.annotations.Mapper; diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/dal/redis/SysRedisKeyCoreConstants.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/dal/redis/SysRedisKeyCoreConstants.java index fb4118874f..8076980d3e 100644 --- a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/dal/redis/SysRedisKeyCoreConstants.java +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/dal/redis/SysRedisKeyCoreConstants.java @@ -2,6 +2,9 @@ package cn.iocoder.yudao.coreservice.modules.system.dal.redis; import cn.iocoder.yudao.framework.redis.core.RedisKeyDefine; import cn.iocoder.yudao.framework.security.core.LoginUser; +import me.zhyd.oauth.model.AuthUser; + +import java.time.Duration; import static cn.iocoder.yudao.framework.redis.core.RedisKeyDefine.KeyTypeEnum.STRING; @@ -16,4 +19,11 @@ public interface SysRedisKeyCoreConstants { "login_user:%s", // 参数为 sessionId STRING, LoginUser.class, RedisKeyDefine.TimeoutTypeEnum.DYNAMIC); + RedisKeyDefine SOCIAL_AUTH_USER = new RedisKeyDefine("社交的授权用户", + "social_auth_user:%d:%s", // 参数为 type,code + STRING, AuthUser.class, Duration.ofDays(1)); + + RedisKeyDefine SOCIAL_AUTH_STATE = new RedisKeyDefine("社交的 state", + "social_auth_state:%s", // 参数为 state + STRING, String.class, Duration.ofHours(24)); // 值为 state } diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/redis/social/SysSocialAuthUserRedisDAO.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/dal/redis/social/SysSocialAuthUserRedisDAO.java similarity index 83% rename from yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/redis/social/SysSocialAuthUserRedisDAO.java rename to yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/dal/redis/social/SysSocialAuthUserRedisDAO.java index d5e84e62d2..e82c813940 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/redis/social/SysSocialAuthUserRedisDAO.java +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/dal/redis/social/SysSocialAuthUserRedisDAO.java @@ -1,4 +1,4 @@ -package cn.iocoder.yudao.adminserver.modules.system.dal.redis.social; +package cn.iocoder.yudao.coreservice.modules.system.dal.redis.social; import cn.iocoder.yudao.framework.common.util.json.JsonUtils; import me.zhyd.oauth.model.AuthCallback; @@ -8,10 +8,11 @@ import org.springframework.stereotype.Repository; import javax.annotation.Resource; -import static cn.iocoder.yudao.adminserver.modules.system.dal.redis.SysRedisKeyConstants.SOCIAL_AUTH_USER; +import static cn.iocoder.yudao.coreservice.modules.system.dal.redis.SysRedisKeyCoreConstants.SOCIAL_AUTH_USER; + /** - * 社交 {@link me.zhyd.oauth.model.AuthUser} 的 RedisDAO + * 社交 {@link AuthUser} 的 RedisDAO * * @author 芋道源码 */ diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/enums/SysErrorCodeConstants.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/enums/SysErrorCodeConstants.java index 3c1fc87efe..a7231f4215 100644 --- a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/enums/SysErrorCodeConstants.java +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/enums/SysErrorCodeConstants.java @@ -14,4 +14,9 @@ public interface SysErrorCodeConstants { ErrorCode SMS_SEND_MOBILE_TEMPLATE_PARAM_MISS = new ErrorCode(1006000001, "模板参数({})缺失"); ErrorCode SMS_SEND_TEMPLATE_NOT_EXISTS = new ErrorCode(1006000000, "短信模板不存在"); + + // ========== 社交模块 1006001000 ========== + ErrorCode SOCIAL_AUTH_FAILURE = new ErrorCode(1006001000, "社交授权失败,原因是:{}"); + ErrorCode SOCIAL_UNBIND_NOT_SELF = new ErrorCode(1006001001, "社交解绑失败,非当前用户绑定"); + } diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/social/SysSocialTypeEnum.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/enums/social/SysSocialTypeEnum.java similarity index 74% rename from yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/social/SysSocialTypeEnum.java rename to yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/enums/social/SysSocialTypeEnum.java index 87d762dcec..592c274a1b 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/social/SysSocialTypeEnum.java +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/enums/social/SysSocialTypeEnum.java @@ -1,4 +1,4 @@ -package cn.iocoder.yudao.adminserver.modules.system.enums.social; +package cn.iocoder.yudao.coreservice.modules.system.enums.social; import cn.hutool.core.collection.ListUtil; import cn.hutool.core.util.ArrayUtil; @@ -21,11 +21,19 @@ public enum SysSocialTypeEnum implements IntArrayValuable { GITEE(10, "GITEE"), // https://gitee.com/api/v5/oauth_doc#/ DINGTALK(20, "DINGTALK"), // https://developers.dingtalk.com/document/app/obtain-identity-credentials WECHAT_ENTERPRISE(30, "WECHAT_ENTERPRISE"), // https://xkcoding.com/2019/08/06/use-justauth-integration-wechat-enterprise.html + /** + * 微信公众平台 - H5 + */ + WECHAT_MP(12, "WECHAT_MP"), // https://www.cnblogs.com/juewuzhe/p/11905461.html + /** + * 微信开放平台 - 小程序 + */ + WECHAT_OPEN(11, "WECHAT_OPEN"), // https://justauth.wiki/guide/oauth/wechat_open/#_2-%E7%94%B3%E8%AF%B7%E5%BC%80%E5%8F%91%E8%80%85%E8%B5%84%E8%B4%A8%E8%AE%A4%E8%AF%81 ; public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(SysSocialTypeEnum::getType).toArray(); - public static final List WECHAT_ALL = ListUtil.toList(WECHAT_ENTERPRISE.type); + public static final List WECHAT_ALL = ListUtil.toList(WECHAT_ENTERPRISE.type, WECHAT_MP.type, WECHAT_OPEN.type); /** * 类型 diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/social/SysSocialService.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/social/SysSocialService.java similarity index 83% rename from yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/social/SysSocialService.java rename to yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/social/SysSocialService.java index 44dfad63a5..81ee31ecf5 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/social/SysSocialService.java +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/social/SysSocialService.java @@ -1,8 +1,9 @@ -package cn.iocoder.yudao.adminserver.modules.system.service.social; +package cn.iocoder.yudao.coreservice.modules.system.service.social; import cn.hutool.core.util.StrUtil; -import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.social.SysSocialUserDO; -import cn.iocoder.yudao.adminserver.modules.system.enums.social.SysSocialTypeEnum; +import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.social.SysSocialUserDO; +import cn.iocoder.yudao.coreservice.modules.system.enums.social.SysSocialTypeEnum; +import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; import cn.iocoder.yudao.framework.common.exception.ServiceException; import me.zhyd.oauth.model.AuthUser; @@ -49,7 +50,7 @@ public interface SysSocialService { * @param unionId 社交平台的 unionId * @return 社交用户列表 */ - List getAllSocialUserList(Integer type, String unionId); + List getAllSocialUserList(Integer type, String unionId, UserTypeEnum userTypeEnum); /** * 获得指定用户的社交用户列表 @@ -57,7 +58,7 @@ public interface SysSocialService { * @param userId 用户编号 * @return 社交用户列表 */ - List getSocialUserList(Long userId); + List getSocialUserList(Long userId,UserTypeEnum userTypeEnum); /** * 绑定社交用户 @@ -66,7 +67,7 @@ public interface SysSocialService { * @param type 社交平台的类型 {@link SysSocialTypeEnum} * @param authUser 授权用户 */ - void bindSocialUser(Long userId, Integer type, AuthUser authUser); + void bindSocialUser(Long userId, Integer type, AuthUser authUser, UserTypeEnum userTypeEnum); /** * 取消绑定社交用户 @@ -75,6 +76,6 @@ public interface SysSocialService { * @param type 社交平台的类型 {@link SysSocialTypeEnum} * @param unionId 社交平台的 unionId */ - void unbindSocialUser(Long userId, Integer type, String unionId); + void unbindSocialUser(Long userId, Integer type, String unionId,UserTypeEnum userTypeEnum); } diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/social/impl/SysSocialServiceImpl.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/social/impl/SysSocialServiceImpl.java similarity index 84% rename from yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/social/impl/SysSocialServiceImpl.java rename to yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/social/impl/SysSocialServiceImpl.java index 291015aa50..2bc8a73857 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/social/impl/SysSocialServiceImpl.java +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/social/impl/SysSocialServiceImpl.java @@ -1,11 +1,11 @@ -package cn.iocoder.yudao.adminserver.modules.system.service.social.impl; +package cn.iocoder.yudao.coreservice.modules.system.service.social.impl; import cn.hutool.core.collection.CollUtil; -import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.social.SysSocialUserDO; -import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.social.SysSocialUserMapper; -import cn.iocoder.yudao.adminserver.modules.system.dal.redis.social.SysSocialAuthUserRedisDAO; -import cn.iocoder.yudao.adminserver.modules.system.enums.social.SysSocialTypeEnum; -import cn.iocoder.yudao.adminserver.modules.system.service.social.SysSocialService; +import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.social.SysSocialUserDO; +import cn.iocoder.yudao.coreservice.modules.system.dal.mysql.social.SysSocialUserMapper; +import cn.iocoder.yudao.coreservice.modules.system.dal.redis.social.SysSocialAuthUserRedisDAO; +import cn.iocoder.yudao.coreservice.modules.system.enums.social.SysSocialTypeEnum; +import cn.iocoder.yudao.coreservice.modules.system.service.social.SysSocialService; import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; import cn.iocoder.yudao.framework.common.util.http.HttpUtils; @@ -25,8 +25,8 @@ import javax.validation.Valid; import java.util.List; import java.util.Objects; -import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.SOCIAL_AUTH_FAILURE; -import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.SOCIAL_UNBIND_NOT_SELF; +import static cn.iocoder.yudao.coreservice.modules.system.enums.SysErrorCodeConstants.SOCIAL_AUTH_FAILURE; +import static cn.iocoder.yudao.coreservice.modules.system.enums.SysErrorCodeConstants.SOCIAL_UNBIND_NOT_SELF; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.framework.common.util.json.JsonUtils.toJsonString; @@ -75,25 +75,25 @@ public class SysSocialServiceImpl implements SysSocialService { } @Override - public List getAllSocialUserList(Integer type, String unionId) { + public List getAllSocialUserList(Integer type, String unionId,UserTypeEnum userTypeEnum) { List types = SysSocialTypeEnum.getRelationTypes(type); - return socialUserMapper.selectListByTypeAndUnionId(UserTypeEnum.ADMIN.getValue(), types, unionId); + return socialUserMapper.selectListByTypeAndUnionId(userTypeEnum.getValue(), types, unionId); } @Override - public List getSocialUserList(Long userId) { - return socialUserMapper.selectListByUserId(UserTypeEnum.ADMIN.getValue(), userId); + public List getSocialUserList(Long userId,UserTypeEnum userTypeEnum) { + return socialUserMapper.selectListByUserId(userTypeEnum.getValue(), userId); } @Override @Transactional - public void bindSocialUser(Long userId, Integer type, AuthUser authUser) { + public void bindSocialUser(Long userId, Integer type, AuthUser authUser,UserTypeEnum userTypeEnum) { // 获得 unionId 对应的 SysSocialUserDO 列表 String unionId = getAuthUserUnionId(authUser); - List socialUsers = this.getAllSocialUserList(type, unionId); + List socialUsers = this.getAllSocialUserList(type, unionId, userTypeEnum); // 逻辑一:如果 userId 之前绑定过该 type 的其它账号,需要进行解绑 - this.unbindOldSocialUser(userId, type, unionId); + this.unbindOldSocialUser(userId, type, unionId, userTypeEnum); // 逻辑二:如果 socialUsers 指定的 userId 改变,需要进行更新 // 例如说,一个微信 unionId 对应了多个社交账号,结果其中有个关联了新的 userId,则其它也要跟着修改 @@ -112,7 +112,7 @@ public class SysSocialServiceImpl implements SysSocialService { .nickname(authUser.getNickname()).avatar(authUser.getAvatar()).rawUserInfo(toJsonString(authUser.getRawUserInfo())) .build(); if (socialUser == null) { - saveSocialUser.setUserId(userId).setUserType(UserTypeEnum.ADMIN.getValue()) + saveSocialUser.setUserId(userId).setUserType(userTypeEnum.getValue()) .setType(type).setOpenid(authUser.getUuid()).setUnionId(unionId); socialUserMapper.insert(saveSocialUser); } else { @@ -122,9 +122,9 @@ public class SysSocialServiceImpl implements SysSocialService { } @Override - public void unbindSocialUser(Long userId, Integer type, String unionId) { + public void unbindSocialUser(Long userId, Integer type, String unionId, UserTypeEnum userTypeEnum) { // 获得 unionId 对应的所有 SysSocialUserDO 社交用户 - List socialUsers = this.getAllSocialUserList(type, unionId); + List socialUsers = this.getAllSocialUserList(type, unionId, userTypeEnum); if (CollUtil.isEmpty(socialUsers)) { return; } @@ -140,10 +140,10 @@ public class SysSocialServiceImpl implements SysSocialService { } @VisibleForTesting - public void unbindOldSocialUser(Long userId, Integer type, String newUnionId) { + public void unbindOldSocialUser(Long userId, Integer type, String newUnionId, UserTypeEnum userTypeEnum) { List types = SysSocialTypeEnum.getRelationTypes(type); List oldSocialUsers = socialUserMapper.selectListByTypeAndUserId( - UserTypeEnum.ADMIN.getValue(), types, userId); + userTypeEnum.getValue(), types, userId); // 如果新老的 unionId 是一致的,说明无需解绑 if (CollUtil.isEmpty(oldSocialUsers) || Objects.equals(newUnionId, oldSocialUsers.get(0).getUnionId())) { return; diff --git a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/member/enums/social/SysSocialTypeEnum.java b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/member/enums/social/SysSocialTypeEnum.java deleted file mode 100644 index fe93f39c83..0000000000 --- a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/member/enums/social/SysSocialTypeEnum.java +++ /dev/null @@ -1,55 +0,0 @@ -package cn.iocoder.yudao.userserver.modules.member.enums.social; - -import cn.hutool.core.collection.ListUtil; -import cn.hutool.core.util.ArrayUtil; -import cn.iocoder.yudao.framework.common.core.IntArrayValuable; -import lombok.AllArgsConstructor; -import lombok.Getter; - -import java.util.Arrays; -import java.util.List; - -/** - * 社交平台的类型枚举 - * - * @author 芋道源码 - */ -@Getter -@AllArgsConstructor -public enum SysSocialTypeEnum implements IntArrayValuable { - - GITEE(10, "GITEE"), // https://gitee.com/api/v5/oauth_doc#/ - DINGTALK(20, "DINGTALK"), // https://developers.dingtalk.com/document/app/obtain-identity-credentials - WECHAT_ENTERPRISE(30, "WECHAT_ENTERPRISE"), // https://xkcoding.com/2019/08/06/use-justauth-integration-wechat-enterprise.html - ; - - public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(SysSocialTypeEnum::getType).toArray(); - - public static final List WECHAT_ALL = ListUtil.toList(WECHAT_ENTERPRISE.type); - - /** - * 类型 - */ - private final Integer type; - /** - * 类型的标识 - */ - private final String source; - - @Override - public int[] array() { - return ARRAYS; - } - - public static SysSocialTypeEnum valueOfType(Integer type) { - return ArrayUtil.firstMatch(o -> o.getType().equals(type), values()); - } - - public static List getRelationTypes(Integer type) { - if (WECHAT_ALL.contains(type)) { - return WECHAT_ALL; - } - return ListUtil.toList(type); - } - -} diff --git a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/controller/auth/SysAuthController.java b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/controller/auth/SysAuthController.java index 2b1fd6161a..377dd99668 100644 --- a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/controller/auth/SysAuthController.java +++ b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/controller/auth/SysAuthController.java @@ -1,9 +1,13 @@ package cn.iocoder.yudao.userserver.modules.system.controller.auth; +import cn.iocoder.yudao.coreservice.modules.system.service.social.SysSocialService; +import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; import cn.iocoder.yudao.userserver.modules.system.controller.auth.vo.*; import cn.iocoder.yudao.userserver.modules.system.service.auth.SysAuthService; import cn.iocoder.yudao.userserver.modules.system.service.sms.SysSmsCodeService; +import com.alibaba.fastjson.JSON; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; @@ -13,11 +17,13 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; import static cn.iocoder.yudao.framework.common.util.servlet.ServletUtils.getClientIP; import static cn.iocoder.yudao.framework.common.util.servlet.ServletUtils.getUserAgent; +import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; @Api(tags = "认证") @RestController @@ -30,6 +36,9 @@ public class SysAuthController { private SysAuthService authService; @Resource private SysSmsCodeService smsCodeService; + @Resource + private SysSocialService socialService; + @PostMapping("/login") @ApiOperation("使用手机 + 密码登录") @@ -70,42 +79,47 @@ public class SysAuthController { }) public CommonResult socialAuthRedirect(@RequestParam("type") Integer type, @RequestParam("redirectUri") String redirectUri) { -// return CommonResult.success(socialService.getAuthorizeUrl(type, redirectUri)); - return null; + return CommonResult.success(socialService.getAuthorizeUrl(type, redirectUri)); + } + + @GetMapping("/social-login-get") + @ApiOperation("社交登录,使用 code 授权码") + @ResponseBody + @Deprecated + public CommonResult socialLoginGet(HttpServletRequest request,String code,String state) { + // 返回结果 + MbrAuthSocialLoginReqVO reqVO = MbrAuthSocialLoginReqVO.builder().state(state).code(code).build(); + reqVO.setType(12); + System.out.println(JSON.toJSON(reqVO)); + return success(reqVO); } @PostMapping("/social-login") @ApiOperation("社交登录,使用 code 授权码") - public CommonResult socialLogin(@RequestBody @Valid MbrAuthSocialLoginReqVO reqVO) { -// String token = authService.socialLogin(reqVO, getClientIP(), getUserAgent()); -// // 返回结果 -// return success(MbrAuthLoginRespVO.builder().token(token).build()); - return null; + public CommonResult socialLogin(@RequestBody @Valid MbrAuthSocialLoginReqVO reqVO) { + String token = authService.socialLogin(reqVO, getClientIP(), getUserAgent()); + return success(SysAuthLoginRespVO.builder().token(token).build()); } @PostMapping("/social-login2") @ApiOperation("社交登录,使用 code 授权码 + 账号密码") public CommonResult socialLogin2(@RequestBody @Valid MbrAuthSocialLogin2ReqVO reqVO) { -// String token = authService.socialLogin2(reqVO, getClientIP(), getUserAgent()); -// // 返回结果 -// return success(MbrAuthLoginRespVO.builder().token(token).build()); - return null; + String token = authService.socialLogin2(reqVO, getClientIP(), getUserAgent()); + return success(SysAuthLoginRespVO.builder().token(token).build()); } @PostMapping("/social-bind") @ApiOperation("社交绑定,使用 code 授权码") public CommonResult socialBind(@RequestBody @Valid MbrAuthSocialBindReqVO reqVO) { -// authService.socialBind(getLoginUserId(), reqVO); -// return CommonResult.success(true); - return null; + authService.socialBind(getLoginUserId(), reqVO); + return CommonResult.success(true); } @DeleteMapping("/social-unbind") @ApiOperation("取消社交绑定") public CommonResult socialUnbind(@RequestBody MbrAuthSocialUnbindReqVO reqVO) { -// socialService.unbindSocialUser(getLoginUserId(), reqVO.getType(), reqVO.getUnionId()); -// return CommonResult.success(true); - return null; + socialService.unbindSocialUser(getLoginUserId(), reqVO.getType(), reqVO.getUnionId(), UserTypeEnum.MEMBER); + return CommonResult.success(true); } } diff --git a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/controller/auth/vo/MbrAuthSocialBindReqVO.java b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/controller/auth/vo/MbrAuthSocialBindReqVO.java index d866411d28..767446b5f0 100644 --- a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/controller/auth/vo/MbrAuthSocialBindReqVO.java +++ b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/controller/auth/vo/MbrAuthSocialBindReqVO.java @@ -1,7 +1,7 @@ package cn.iocoder.yudao.userserver.modules.system.controller.auth.vo; +import cn.iocoder.yudao.coreservice.modules.system.enums.social.SysSocialTypeEnum; import cn.iocoder.yudao.framework.common.validation.InEnum; -import cn.iocoder.yudao.userserver.modules.member.enums.social.SysSocialTypeEnum; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; diff --git a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/controller/auth/vo/MbrAuthSocialLogin2ReqVO.java b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/controller/auth/vo/MbrAuthSocialLogin2ReqVO.java index 371e7e9b30..584df7ed14 100644 --- a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/controller/auth/vo/MbrAuthSocialLogin2ReqVO.java +++ b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/controller/auth/vo/MbrAuthSocialLogin2ReqVO.java @@ -1,7 +1,7 @@ package cn.iocoder.yudao.userserver.modules.system.controller.auth.vo; +import cn.iocoder.yudao.coreservice.modules.system.enums.social.SysSocialTypeEnum; import cn.iocoder.yudao.framework.common.validation.InEnum; -import cn.iocoder.yudao.userserver.modules.member.enums.social.SysSocialTypeEnum; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; diff --git a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/controller/auth/vo/MbrAuthSocialLoginReqVO.java b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/controller/auth/vo/MbrAuthSocialLoginReqVO.java index 5fdd424c1c..cb430231a0 100644 --- a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/controller/auth/vo/MbrAuthSocialLoginReqVO.java +++ b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/controller/auth/vo/MbrAuthSocialLoginReqVO.java @@ -1,7 +1,7 @@ package cn.iocoder.yudao.userserver.modules.system.controller.auth.vo; +import cn.iocoder.yudao.coreservice.modules.system.enums.social.SysSocialTypeEnum; import cn.iocoder.yudao.framework.common.validation.InEnum; -import cn.iocoder.yudao.userserver.modules.member.enums.social.SysSocialTypeEnum; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; diff --git a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/controller/auth/vo/MbrAuthSocialUnbindReqVO.java b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/controller/auth/vo/MbrAuthSocialUnbindReqVO.java index ea9050a292..75e31701d1 100644 --- a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/controller/auth/vo/MbrAuthSocialUnbindReqVO.java +++ b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/controller/auth/vo/MbrAuthSocialUnbindReqVO.java @@ -1,7 +1,7 @@ package cn.iocoder.yudao.userserver.modules.system.controller.auth.vo; +import cn.iocoder.yudao.coreservice.modules.system.enums.social.SysSocialTypeEnum; import cn.iocoder.yudao.framework.common.validation.InEnum; -import cn.iocoder.yudao.userserver.modules.member.enums.social.SysSocialTypeEnum; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; diff --git a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/enums/SysErrorCodeConstants.java b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/enums/SysErrorCodeConstants.java index e5f4ac6785..f24be9cc60 100644 --- a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/enums/SysErrorCodeConstants.java +++ b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/enums/SysErrorCodeConstants.java @@ -14,6 +14,7 @@ public interface SysErrorCodeConstants { ErrorCode AUTH_LOGIN_USER_DISABLED = new ErrorCode(1005000001, "登录失败,账号被禁用"); ErrorCode AUTH_LOGIN_FAIL_UNKNOWN = new ErrorCode(1005000002, "登录失败"); // 登录失败的兜底,未知原因 ErrorCode AUTH_TOKEN_EXPIRED = new ErrorCode(1005000003, "Token 已经过期"); + ErrorCode AUTH_THIRD_LOGIN_NOT_BIND = new ErrorCode(1005000004, "未绑定账号,需要进行绑定"); // ========== SMS CODE 模块 1005001000 ========== ErrorCode USER_SMS_CODE_NOT_FOUND = new ErrorCode(1005001000, "验证码不存在"); @@ -22,4 +23,7 @@ public interface SysErrorCodeConstants { ErrorCode USER_SMS_CODE_NOT_CORRECT = new ErrorCode(1005001003, "验证码不正确"); ErrorCode USER_SMS_CODE_EXCEED_SEND_MAXIMUM_QUANTITY_PER_DAY = new ErrorCode(1005001004, "超过每日短信发送数量"); ErrorCode USER_SMS_CODE_SEND_TOO_FAST = new ErrorCode(1005001005, "短信发送过于频率"); + + // ========== 用户模块 1005002000 ========== + ErrorCode USER_NOT_EXISTS = new ErrorCode(1005002001, "用户不存在"); } diff --git a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/service/auth/SysAuthService.java b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/service/auth/SysAuthService.java index b35d1c27a2..628f95c80b 100644 --- a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/service/auth/SysAuthService.java +++ b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/service/auth/SysAuthService.java @@ -1,8 +1,7 @@ package cn.iocoder.yudao.userserver.modules.system.service.auth; import cn.iocoder.yudao.framework.security.core.service.SecurityAuthFrameworkService; -import cn.iocoder.yudao.userserver.modules.system.controller.auth.vo.SysAuthLoginReqVO; -import cn.iocoder.yudao.userserver.modules.system.controller.auth.vo.SysAuthSmsLoginReqVO; +import cn.iocoder.yudao.userserver.modules.system.controller.auth.vo.*; import javax.validation.Valid; @@ -35,4 +34,33 @@ public interface SysAuthService extends SecurityAuthFrameworkService { */ String smsLogin(@Valid SysAuthSmsLoginReqVO reqVO, String userIp, String userAgent); + + /** + * 社交登录,使用 code 授权码 + * + * @param reqVO 登录信息 + * @param userIp 用户 IP + * @param userAgent 用户 UA + * @return 身份令牌,使用 JWT 方式 + */ + String socialLogin(@Valid MbrAuthSocialLoginReqVO reqVO, String userIp, String userAgent); + + /** + * 社交登录,使用 code 授权码 + 账号密码 + * + * @param reqVO 登录信息 + * @param userIp 用户 IP + * @param userAgent 用户 UA + * @return 身份令牌,使用 JWT 方式 + */ + String socialLogin2(@Valid MbrAuthSocialLogin2ReqVO reqVO, String userIp, String userAgent); + + /** + * 社交绑定,使用 code 授权码 + * + * @param userId 用户编号 + * @param reqVO 绑定信息 + */ + void socialBind(Long userId, @Valid MbrAuthSocialBindReqVO reqVO); + } diff --git a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/service/auth/impl/SysAuthServiceImpl.java b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/service/auth/impl/SysAuthServiceImpl.java index 0199c078ef..52acc46a30 100644 --- a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/service/auth/impl/SysAuthServiceImpl.java +++ b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/service/auth/impl/SysAuthServiceImpl.java @@ -1,25 +1,29 @@ package cn.iocoder.yudao.userserver.modules.system.service.auth.impl; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.Assert; import cn.iocoder.yudao.coreservice.modules.member.dal.dataobject.user.MbrUserDO; +import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.social.SysSocialUserDO; +import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO; import cn.iocoder.yudao.coreservice.modules.system.enums.logger.SysLoginLogTypeEnum; import cn.iocoder.yudao.coreservice.modules.system.enums.logger.SysLoginResultEnum; import cn.iocoder.yudao.coreservice.modules.system.service.auth.SysUserSessionCoreService; import cn.iocoder.yudao.coreservice.modules.system.service.logger.SysLoginLogCoreService; import cn.iocoder.yudao.coreservice.modules.system.service.logger.dto.SysLoginLogCreateReqDTO; +import cn.iocoder.yudao.coreservice.modules.system.service.social.SysSocialService; import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; import cn.iocoder.yudao.framework.common.util.monitor.TracerUtils; import cn.iocoder.yudao.framework.common.util.servlet.ServletUtils; import cn.iocoder.yudao.framework.security.core.LoginUser; import cn.iocoder.yudao.userserver.modules.member.service.user.MbrUserService; -import cn.iocoder.yudao.userserver.modules.system.controller.auth.vo.SysAuthLoginReqVO; -import cn.iocoder.yudao.userserver.modules.system.controller.auth.vo.SysAuthSmsLoginReqVO; +import cn.iocoder.yudao.userserver.modules.system.controller.auth.vo.*; import cn.iocoder.yudao.userserver.modules.system.convert.auth.SysAuthConvert; import cn.iocoder.yudao.userserver.modules.system.enums.sms.SysSmsSceneEnum; import cn.iocoder.yudao.userserver.modules.system.service.auth.SysAuthService; import cn.iocoder.yudao.userserver.modules.system.service.sms.SysSmsCodeService; import lombok.extern.slf4j.Slf4j; +import me.zhyd.oauth.model.AuthUser; import org.springframework.context.annotation.Lazy; import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.authentication.BadCredentialsException; @@ -33,6 +37,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import javax.validation.Valid; +import java.util.List; import java.util.Objects; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; @@ -59,6 +65,9 @@ public class SysAuthServiceImpl implements SysAuthService { private SysLoginLogCoreService loginLogCoreService; @Resource private SysUserSessionCoreService userSessionCoreService; + @Resource + private SysSocialService socialService; + private static final UserTypeEnum userTypeEnum = UserTypeEnum.MEMBER; @Override public UserDetails loadUserByUsername(String mobile) throws UsernameNotFoundException { @@ -99,6 +108,65 @@ public class SysAuthServiceImpl implements SysAuthService { return userSessionCoreService.createUserSession(loginUser, userIp, userAgent); } + @Override + public String socialLogin(MbrAuthSocialLoginReqVO reqVO, String userIp, String userAgent) { + // 使用 code 授权码,进行登录 + AuthUser authUser = socialService.getAuthUser(reqVO.getType(), reqVO.getCode(), reqVO.getState()); + org.springframework.util.Assert.notNull(authUser, "授权用户不为空"); + + // 如果未绑定 SysSocialUserDO 用户,则无法自动登录,进行报错 + String unionId = socialService.getAuthUserUnionId(authUser); + List socialUsers = socialService.getAllSocialUserList(reqVO.getType(), unionId, userTypeEnum); + if (CollUtil.isEmpty(socialUsers)) { + throw exception(AUTH_THIRD_LOGIN_NOT_BIND); + } + + // 自动登录 + MbrUserDO user = userService.getUser(socialUsers.get(0).getUserId()); + if (user == null) { + throw exception(USER_NOT_EXISTS); + } + this.createLoginLog(user.getMobile(), SysLoginLogTypeEnum.LOGIN_SOCIAL, SysLoginResultEnum.SUCCESS); + + // 创建 LoginUser 对象 + LoginUser loginUser = SysAuthConvert.INSTANCE.convert(user); + // TODO 芋艿:需要改造下,增加各种登录方式 +// loginUser.setRoleIds(this.getUserRoleIds(loginUser.getId())); // 获取用户角色列表 + + // 绑定社交用户(更新) + socialService.bindSocialUser(loginUser.getId(), reqVO.getType(), authUser, userTypeEnum); + + // 缓存登录用户到 Redis 中,返回 sessionId 编号 + return userSessionCoreService.createUserSession(loginUser, userIp, userAgent); + } + + @Override + public String socialLogin2(MbrAuthSocialLogin2ReqVO reqVO, String userIp, String userAgent) { + // 使用 code 授权码,进行登录 + AuthUser authUser = socialService.getAuthUser(reqVO.getType(), reqVO.getCode(), reqVO.getState()); + org.springframework.util.Assert.notNull(authUser, "授权用户不为空"); + + // 使用账号密码,进行登录。 + LoginUser loginUser = this.login0(reqVO.getUsername(), reqVO.getPassword()); +// loginUser.setRoleIds(this.getUserRoleIds(loginUser.getId())); // 获取用户角色列表 + + // 绑定社交用户(新增) + socialService.bindSocialUser(loginUser.getId(), reqVO.getType(), authUser, userTypeEnum); + + // 缓存登录用户到 Redis 中,返回 sessionId 编号 + return userSessionCoreService.createUserSession(loginUser, userIp, userAgent); + } + + @Override + public void socialBind(Long userId, MbrAuthSocialBindReqVO reqVO) { + // 使用 code 授权码,进行登录 + AuthUser authUser = socialService.getAuthUser(reqVO.getType(), reqVO.getCode(), reqVO.getState()); + org.springframework.util.Assert.notNull(authUser, "授权用户不为空"); + + // 绑定社交用户(新增) + socialService.bindSocialUser(userId, reqVO.getType(), authUser, userTypeEnum); + } + private LoginUser login0(String username, String password) { final SysLoginLogTypeEnum logTypeEnum = SysLoginLogTypeEnum.LOGIN_USERNAME; // 用户验证 @@ -207,7 +275,7 @@ public class SysAuthServiceImpl implements SysAuthService { reqDTO.setLogType(SysLoginLogTypeEnum.LOGOUT_SELF.getType()); reqDTO.setTraceId(TracerUtils.getTraceId()); reqDTO.setUserId(userId); - reqDTO.setUserType(UserTypeEnum.MEMBER.getValue()); + reqDTO.setUserType(userTypeEnum.getValue()); reqDTO.setUsername(username); reqDTO.setUserAgent(ServletUtils.getUserAgent()); reqDTO.setUserIp(ServletUtils.getClientIP()); diff --git a/yudao-user-server/src/main/resources/application-dev.yaml b/yudao-user-server/src/main/resources/application-dev.yaml index b6bfbd1ddf..bbf7398643 100644 --- a/yudao-user-server/src/main/resources/application-dev.yaml +++ b/yudao-user-server/src/main/resources/application-dev.yaml @@ -138,3 +138,30 @@ yudao: - ${spring.boot.admin.context-path}/** # 不处理 Spring Boot Admin 的请求 - ${management.endpoints.web.base-path}/** # 不处理 Actuator 的请求 demo: true # 开启演示模式 + + +justauth: + enabled: true + type: + GITEE: # Gitee + client-id: ee61f0374a4c6c404a8717094caa7a410d76950e45ff60348015830c519ba5c1 + client-secret: 7c044a5671be3b051414db0cf2cec6ad702dd298d2416ba24ceaf608e6fa26f9 + ignore-check-redirect-uri: true + DINGTALK: # 钉钉 + client-id: dingvrnreaje3yqvzhxg + client-secret: i8E6iZyDvZj51JIb0tYsYfVQYOks9Cq1lgryEjFRqC79P3iJcrxEwT6Qk2QvLrLI + ignore-check-redirect-uri: true + WECHAT_ENTERPRISE: # 企业微信 + client-id: wwd411c69a39ad2e54 + client-secret: 1wTb7hYxnpT2TUbIeHGXGo7T0odav1ic10mLdyyATOw + agent-id: 1000004 + ignore-check-redirect-uri: true + WECHAT_MP: # 微信公众平台 - H5 https://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo&t=sandbox/index + client-id: wxa5a05b85ac361f96 + client-secret: 247073c7cebb67f27f0e769195c2a57e + ignore-check-redirect-uri: true + cache: + type: REDIS + prefix: 'social_auth_state:' # 缓存前缀,目前只对 Redis 缓存生效,默认 JUSTAUTH::STATE:: + timeout: 24h # 超时时长,目前只对 Redis 缓存生效,默认 3 分钟 + diff --git a/yudao-user-server/src/main/resources/application-local.yaml b/yudao-user-server/src/main/resources/application-local.yaml index 506ee19f65..74f8abbb26 100644 --- a/yudao-user-server/src/main/resources/application-local.yaml +++ b/yudao-user-server/src/main/resources/application-local.yaml @@ -140,3 +140,29 @@ yudao: - ${spring.boot.admin.context-path}/** # 不处理 Spring Boot Admin 的请求 - ${management.endpoints.web.base-path}/** # 不处理 Actuator 的请求 demo: false # 关闭演示模式 + + +justauth: + enabled: true + type: + GITEE: # Gitee + client-id: ee61f0374a4c6c404a8717094caa7a410d76950e45ff60348015830c519ba5c1 + client-secret: 7c044a5671be3b051414db0cf2cec6ad702dd298d2416ba24ceaf608e6fa26f9 + ignore-check-redirect-uri: true + DINGTALK: # 钉钉 + client-id: dingvrnreaje3yqvzhxg + client-secret: i8E6iZyDvZj51JIb0tYsYfVQYOks9Cq1lgryEjFRqC79P3iJcrxEwT6Qk2QvLrLI + ignore-check-redirect-uri: true + WECHAT_ENTERPRISE: # 企业微信 + client-id: wwd411c69a39ad2e54 + client-secret: 1wTb7hYxnpT2TUbIeHGXGo7T0odav1ic10mLdyyATOw + agent-id: 1000004 + ignore-check-redirect-uri: true + WECHAT_MP: # 微信公众平台 - H5 https://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo&t=sandbox/index + client-id: wxa5a05b85ac361f96 + client-secret: 247073c7cebb67f27f0e769195c2a57e + ignore-check-redirect-uri: true + cache: + type: REDIS + prefix: 'social_auth_state:' # 缓存前缀,目前只对 Redis 缓存生效,默认 JUSTAUTH::STATE:: + timeout: 24h # 超时时长,目前只对 Redis 缓存生效,默认 3 分钟 \ No newline at end of file From 1a9440824c65a7d21904cb81e329d48dd4937c63 Mon Sep 17 00:00:00 2001 From: timfruit Date: Tue, 26 Oct 2021 22:26:33 +0800 Subject: [PATCH 07/81] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/system/controller/auth/SysAuthController.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/controller/auth/SysAuthController.java b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/controller/auth/SysAuthController.java index 377dd99668..1e85f427d2 100644 --- a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/controller/auth/SysAuthController.java +++ b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/controller/auth/SysAuthController.java @@ -83,13 +83,14 @@ public class SysAuthController { } @GetMapping("/social-login-get") - @ApiOperation("社交登录,使用 code 授权码") + @ApiOperation("微信公众号授权回调地址,输出social-login2的必要参数用于测试,使用 code 授权码") @ResponseBody @Deprecated public CommonResult socialLoginGet(HttpServletRequest request,String code,String state) { // 返回结果 MbrAuthSocialLoginReqVO reqVO = MbrAuthSocialLoginReqVO.builder().state(state).code(code).build(); reqVO.setType(12); + //输出social-login2的必要参数用于测试 System.out.println(JSON.toJSON(reqVO)); return success(reqVO); } From d16185f87d06885df206946b2b949d7a7c78c3a7 Mon Sep 17 00:00:00 2001 From: jason <2667446@qq.com> Date: Thu, 28 Oct 2021 00:51:57 +0800 Subject: [PATCH 08/81] =?UTF-8?q?=20=E4=BF=AE=E6=94=B9=E8=A1=A8=E5=8D=95?= =?UTF-8?q?=E4=B8=BA=E5=A4=96=E7=BD=AE=E8=A1=A8=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sql/ruoyi-vue-pro.sql | 3 +- .../controller/oa/OaLeaveController.java | 8 + .../controller/oa/vo/OaLeaveCreateReqVO.java | 1 + .../controller/oa/vo/OaLeaveUpdateReqVO.java | 7 + .../workflow/ProcessDefinitionController.java | 34 +++ .../controller/workflow/TaskController.java | 5 + .../controller/workflow/vo/TaskStepVO.java | 2 + .../workflow/vo/TodoTaskRespVO.java | 3 + .../service/oa/ReportBackEndProcessor.java | 19 +- .../service/oa/impl/OaLeaveServiceImpl.java | 34 ++- .../service/workflow/TaskService.java | 2 + .../workflow/impl/TaskServiceImpl.java | 59 ++--- .../resources/processes/leave-formkey.bpmn | 152 +++++++++++++ .../src/main/resources/processes/leave.bpmn | 130 ----------- yudao-admin-ui/src/api/oa/flow.js | 9 + yudao-admin-ui/src/api/oa/leave.js | 8 + yudao-admin-ui/src/api/oa/todo.js | 8 + yudao-admin-ui/src/router/index.js | 70 ++++++ yudao-admin-ui/src/views/oa/flow/index.vue | 36 +++ .../src/views/oa/leave/apply/index.vue | 93 ++++++++ .../src/views/oa/leave/approve-hr/index.vue | 190 ++++++++++++++++ .../views/oa/leave/approve-leader/index.vue | 190 ++++++++++++++++ .../src/views/oa/leave/confirm/index.vue | 137 ++++++++++++ yudao-admin-ui/src/views/oa/leave/index.vue | 64 ++++-- .../src/views/oa/leave/modify/index.vue | 211 ++++++++++++++++++ yudao-admin-ui/src/views/oa/todo/index.vue | 25 ++- 更新日志.md | 11 + 27 files changed, 1328 insertions(+), 183 deletions(-) create mode 100644 yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/workflow/ProcessDefinitionController.java create mode 100644 yudao-admin-server/src/main/resources/processes/leave-formkey.bpmn delete mode 100644 yudao-admin-server/src/main/resources/processes/leave.bpmn create mode 100644 yudao-admin-ui/src/api/oa/flow.js create mode 100644 yudao-admin-ui/src/views/oa/flow/index.vue create mode 100644 yudao-admin-ui/src/views/oa/leave/apply/index.vue create mode 100644 yudao-admin-ui/src/views/oa/leave/approve-hr/index.vue create mode 100644 yudao-admin-ui/src/views/oa/leave/approve-leader/index.vue create mode 100644 yudao-admin-ui/src/views/oa/leave/confirm/index.vue create mode 100644 yudao-admin-ui/src/views/oa/leave/modify/index.vue diff --git a/sql/ruoyi-vue-pro.sql b/sql/ruoyi-vue-pro.sql index 2b9c359ddd..f42642e2b5 100644 --- a/sql/ruoyi-vue-pro.sql +++ b/sql/ruoyi-vue-pro.sql @@ -733,13 +733,14 @@ INSERT INTO `sys_menu` VALUES (1113, '错误码更新', 'system:error-code:updat INSERT INTO `sys_menu` VALUES (1114, '错误码删除', 'system:error-code:delete', 3, 4, 1110, '', '', '', 0, '', '2021-04-13 21:46:42', '', '2021-04-13 22:09:51', b'0'); INSERT INTO `sys_menu` VALUES (1115, '错误码导出', 'system:error-code:export', 3, 5, 1110, '', '', '', 0, '', '2021-04-13 21:46:42', '', '2021-04-13 22:09:55', b'0'); INSERT INTO `sys_menu` VALUES (1116, '日志中心', '', 2, 8, 2, 'log-center', 'log', 'infra/skywalking/log', 0, '1', '2021-04-26 22:35:45', '1', '2021-04-26 22:37:25', b'0'); -INSERT INTO `sys_menu` VALUES (1118,'请假申请','',2,0,5,'oa/leave','user','oa/leave/index',0,'','2021-09-20 08:51:03','1','2021-10-12 22:19:02',0x00); +INSERT INTO `sys_menu` VALUES (1118,'请假查询','',2,0,5,'oa/leave','user','oa/leave/index',0,'','2021-09-20 08:51:03','1','2021-10-12 22:19:02',0x00); INSERT INTO `sys_menu` VALUES (1119,'请假申请查询','oa:leave:query',3,1,1118,'','','',0,'','2021-09-20 08:51:03','','2021-09-20 08:51:03',0x00); INSERT INTO `sys_menu` VALUES (1120,'请假申请创建','oa:leave:create',3,2,1118,'','','',0,'','2021-09-20 08:51:03','','2021-09-20 08:51:03',0x00); INSERT INTO `sys_menu` VALUES (1121,'请假申请更新','oa:leave:update',3,3,1118,'','','',0,'','2021-09-20 08:51:03','','2021-09-20 08:51:03',0x00); INSERT INTO `sys_menu` VALUES (1122,'请假申请删除','oa:leave:delete',3,4,1118,'','','',0,'','2021-09-20 08:51:03','','2021-09-20 08:51:03',0x00); INSERT INTO `sys_menu` VALUES (1123,'请假申请导出','oa:leave:export',3,5,1118,'','','',0,'','2021-09-20 08:51:03','','2021-09-20 08:51:03',0x00); INSERT INTO `sys_menu` VALUES (1124,'待办任务','',2,2,5,'todo','edit','oa/todo/index',0,'1','2021-09-20 22:10:09','1','2021-09-21 23:17:12',0x00); +INSERT INTO `sys_menu` VALUES (1125,'流程申请','',2,3,5,'flow','form','oa/flow/index',0,'1','2021-10-23 22:10:09','1','2021-10-23 23:17:12',0x00); COMMIT; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/oa/OaLeaveController.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/oa/OaLeaveController.java index e8dd527b91..679c667da4 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/oa/OaLeaveController.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/oa/OaLeaveController.java @@ -41,6 +41,14 @@ public class OaLeaveController { @ApiOperation("创建请假申请") @PreAuthorize("@ss.hasPermission('oa:leave:create')") public CommonResult createLeave(@Valid @RequestBody OaLeaveCreateReqVO createReqVO) { + createReqVO.setProcessKey("leave"); + return success(leaveService.createLeave(createReqVO)); + } + + @PostMapping("/form-key/create") + @ApiOperation("创建外置请假申请") + public CommonResult createFormKeyLeave(@Valid @RequestBody OaLeaveCreateReqVO createReqVO) { + createReqVO.setProcessKey("leave-formkey"); return success(leaveService.createLeave(createReqVO)); } diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/oa/vo/OaLeaveCreateReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/oa/vo/OaLeaveCreateReqVO.java index 29cede1ff7..ccbb70d718 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/oa/vo/OaLeaveCreateReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/oa/vo/OaLeaveCreateReqVO.java @@ -11,4 +11,5 @@ import javax.validation.constraints.*; @ToString(callSuper = true) public class OaLeaveCreateReqVO extends OaLeaveBaseVO { + private String processKey; } diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/oa/vo/OaLeaveUpdateReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/oa/vo/OaLeaveUpdateReqVO.java index dc81fa31e3..17a229d5fd 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/oa/vo/OaLeaveUpdateReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/oa/vo/OaLeaveUpdateReqVO.java @@ -15,4 +15,11 @@ public class OaLeaveUpdateReqVO extends OaLeaveBaseVO { @NotNull(message = "请假表单主键不能为空") private Long id; + + private String taskId; + + private String comment; + + private Map variables; + } diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/workflow/ProcessDefinitionController.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/workflow/ProcessDefinitionController.java new file mode 100644 index 0000000000..d5241263c2 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/workflow/ProcessDefinitionController.java @@ -0,0 +1,34 @@ +package cn.iocoder.yudao.adminserver.modules.activiti.controller.workflow; + +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import org.activiti.api.process.runtime.ProcessRuntime; +import org.activiti.engine.RepositoryService; +import org.activiti.engine.repository.ProcessDefinition; +import org.activiti.engine.repository.ProcessDefinitionQuery; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +@RestController +@RequestMapping("/workflow/process/definition") +public class ProcessDefinitionController { + + @Resource + private RepositoryService repositoryService; + + @Resource + private ProcessRuntime processRuntime; + + + @GetMapping(value = "/getStartForm") + public CommonResult getStartForm(@RequestParam("processKey") String processKey){ + //这样查似乎有问题??, 暂时写死 +// final ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery(). +// processDefinitionKey(processKey).latestVersion().singleResult(); +// processRuntime.processDefinition(processDefinition.getId()).getFormKey(); + return CommonResult.success("/flow/leave/apply"); + } +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/workflow/TaskController.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/workflow/TaskController.java index 3a717f1164..9309cca9e3 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/workflow/TaskController.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/workflow/TaskController.java @@ -43,6 +43,11 @@ public class TaskController { return success( taskService.getTaskSteps(taskQuery)); } + @PostMapping("/formKey") + public CommonResult getTaskFormKey(@RequestBody TaskQueryReqVO taskQuery) { + return success( taskService.getTaskFormKey(taskQuery)); + } + @PostMapping("/complete") public CommonResult complete(@RequestBody TaskReqVO taskReq) { taskService.completeTask(taskReq); diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/workflow/vo/TaskStepVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/workflow/vo/TaskStepVO.java index fe23355625..b1bb93ac6f 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/workflow/vo/TaskStepVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/workflow/vo/TaskStepVO.java @@ -19,4 +19,6 @@ public class TaskStepVO { private String comment; + private Integer status; + } diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/workflow/vo/TodoTaskRespVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/workflow/vo/TodoTaskRespVO.java index 5fef60eb52..685324b1bf 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/workflow/vo/TodoTaskRespVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/workflow/vo/TodoTaskRespVO.java @@ -27,4 +27,7 @@ public class TodoTaskRespVO { private String businessKey; + + private String formKey; + } diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/oa/ReportBackEndProcessor.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/oa/ReportBackEndProcessor.java index 05ed6fb7d3..44991ec8ca 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/oa/ReportBackEndProcessor.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/oa/ReportBackEndProcessor.java @@ -3,7 +3,9 @@ package cn.iocoder.yudao.adminserver.modules.activiti.service.oa; import cn.iocoder.yudao.adminserver.modules.activiti.dal.dataobject.oa.OaLeaveDO; import cn.iocoder.yudao.adminserver.modules.activiti.dal.mysql.oa.OaLeaveMapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import org.activiti.engine.delegate.DelegateExecution; import org.activiti.engine.delegate.DelegateTask; +import org.activiti.engine.delegate.ExecutionListener; import org.activiti.engine.delegate.TaskListener; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; @@ -11,16 +13,27 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; @Component -public class ReportBackEndProcessor implements TaskListener { +public class ReportBackEndProcessor implements ExecutionListener { @Resource private OaLeaveMapper leaveMapper; +// @Override +// @Transactional(rollbackFor = Exception.class) +// public void notify(DelegateTask delegateTask) { +// final String businessKey = delegateTask.getExecution().getProcessInstanceBusinessKey(); +// UpdateWrapper updateWrapper = new UpdateWrapper<>(); +// updateWrapper.eq("id", Long.valueOf(businessKey)); +// OaLeaveDO updateDo = new OaLeaveDO(); +// updateDo.setStatus(2); +// leaveMapper.update(updateDo, updateWrapper); +// } + @Override @Transactional(rollbackFor = Exception.class) - public void notify(DelegateTask delegateTask) { - final String businessKey = delegateTask.getExecution().getProcessInstanceBusinessKey(); + public void notify(DelegateExecution delegateExecution) { + final String businessKey = delegateExecution.getProcessInstanceBusinessKey(); UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id", Long.valueOf(businessKey)); OaLeaveDO updateDo = new OaLeaveDO(); diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/oa/impl/OaLeaveServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/oa/impl/OaLeaveServiceImpl.java index c82e7a1008..0e78ef2b43 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/oa/impl/OaLeaveServiceImpl.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/oa/impl/OaLeaveServiceImpl.java @@ -2,6 +2,9 @@ package cn.iocoder.yudao.adminserver.modules.activiti.service.oa.impl; import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import org.activiti.api.task.model.Task; +import org.activiti.api.task.model.builders.TaskPayloadBuilder; +import org.activiti.api.task.runtime.TaskRuntime; import org.activiti.engine.RuntimeService; import org.activiti.engine.runtime.ProcessInstance; import org.springframework.beans.factory.annotation.Autowired; @@ -38,6 +41,12 @@ public class OaLeaveServiceImpl implements OaLeaveService { @Resource private RuntimeService runtimeService; + @Resource + private org.activiti.engine.TaskService activitiTaskService; + + @Resource + private TaskRuntime taskRuntime; + @Override @Transactional(rollbackFor = Exception.class) public Long createLeave(OaLeaveCreateReqVO createReqVO) { @@ -52,7 +61,7 @@ public class OaLeaveServiceImpl implements OaLeaveService { variables.put("deptLeader", "admin"); final Long id = leave.getId(); String businessKey = String.valueOf(id); - ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("leave", businessKey, variables); + ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(createReqVO.getProcessKey(), businessKey, variables); final String processInstanceId = processInstance.getProcessInstanceId(); @@ -67,12 +76,29 @@ public class OaLeaveServiceImpl implements OaLeaveService { } @Override + @Transactional(rollbackFor = Exception.class) public void updateLeave(OaLeaveUpdateReqVO updateReqVO) { + // 校验存在 this.validateLeaveExists(updateReqVO.getId()); - // 更新 - OaLeaveDO updateObj = OaLeaveConvert.INSTANCE.convert(updateReqVO); - leaveMapper.updateById(updateObj); + + final Task task = taskRuntime.task(updateReqVO.getTaskId()); + activitiTaskService.addComment(task.getId(), task.getProcessInstanceId(), updateReqVO.getComment()); + Map variables = updateReqVO.getVariables(); + + //如何得到部门领导人, 暂时写死 + variables.put("deptLeader", "admin"); + taskRuntime.complete(TaskPayloadBuilder.complete().withTaskId(task.getId()) + .withVariables(variables) + .build()); + final Object reApply = variables.get("reApply"); + if((reApply instanceof Boolean) && (Boolean)reApply){ + // 更新 表单 + OaLeaveDO updateObj = OaLeaveConvert.INSTANCE.convert(updateReqVO); + leaveMapper.updateById(updateObj); + } + + } @Override diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/workflow/TaskService.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/workflow/TaskService.java index ae0783b482..2f2aca24da 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/workflow/TaskService.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/workflow/TaskService.java @@ -20,4 +20,6 @@ public interface TaskService { TaskHandleVO getTaskSteps(TaskQueryReqVO taskQuery); List getHistorySteps(String processInstanceId); + + TodoTaskRespVO getTaskFormKey(TaskQueryReqVO taskQuery); } diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/workflow/impl/TaskServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/workflow/impl/TaskServiceImpl.java index aae12755b6..44003e660a 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/workflow/impl/TaskServiceImpl.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/workflow/impl/TaskServiceImpl.java @@ -117,14 +117,14 @@ public class TaskServiceImpl implements TaskService { .withVariables(taskReq.getVariables()) .build()); - if(variables.containsValue(Boolean.FALSE)){ - final String businessKey = task.getBusinessKey(); - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.eq("id", Long.valueOf(businessKey)); - OaLeaveDO updateDo = new OaLeaveDO(); - updateDo.setStatus(2); - leaveMapper.update(updateDo, updateWrapper); - } +// if(variables.containsValue(Boolean.FALSE)){ +// final String businessKey = task.getBusinessKey(); +// UpdateWrapper updateWrapper = new UpdateWrapper<>(); +// updateWrapper.eq("id", Long.valueOf(businessKey)); +// OaLeaveDO updateDo = new OaLeaveDO(); +// updateDo.setStatus(2); +// leaveMapper.update(updateDo, updateWrapper); +// } } @@ -152,19 +152,19 @@ public class TaskServiceImpl implements TaskService { public TaskHandleVO getTaskSteps(TaskQueryReqVO taskQuery) { TaskHandleVO handleVO = new TaskHandleVO(); - String processKey = taskQuery.getProcessKey(); - if ("leave".equals(processKey)) { - String businessKey = taskQuery.getBusinessKey(); - final OaLeaveDO leave = leaveMapper.selectById(Long.valueOf(businessKey)); - handleVO.setFormObject( OaLeaveConvert.INSTANCE.convert(leave)); - } +// String processKey = taskQuery.getProcessKey(); +// if ("leave".equals(processKey)) { +// String businessKey = taskQuery.getBusinessKey(); +// final OaLeaveDO leave = leaveMapper.selectById(Long.valueOf(businessKey)); +// handleVO.setFormObject( OaLeaveConvert.INSTANCE.convert(leave)); +// } +// +// final String taskDefKey = task.getTaskDefinitionKey(); +// final String variableName = Optional.ofNullable(taskVariable.get(taskDefKey)).orElse(""); +// handleVO.setTaskVariable(variableName); final Task task = taskRuntime.task(taskQuery.getTaskId()); - final String taskDefKey = task.getTaskDefinitionKey(); - final String variableName = Optional.ofNullable(taskVariable.get(taskDefKey)).orElse(""); - - handleVO.setTaskVariable(variableName); List steps = getTaskSteps(task.getProcessInstanceId()); handleVO.setHistoryTask(steps); @@ -189,6 +189,7 @@ public class TaskServiceImpl implements TaskService { step.setStartTime(instance.getStartTime()); step.setEndTime(instance.getEndTime()); step.setAssignee(instance.getAssignee()); + step.setStatus(1); final List comments = activitiTaskService.getTaskComments(instance.getTaskId()); if(comments.size()>0){ step.setComment(comments.get(0).getFullMessage()); @@ -204,15 +205,14 @@ public class TaskServiceImpl implements TaskService { .activityType("userTask") .unfinished().list(); - if(unfinished.size()>0) { - - final HistoricActivityInstance unFinishedActiviti = unfinished.get(0); + for (HistoricActivityInstance instance : unfinished) { TaskStepVO step = new TaskStepVO(); - step.setStepName(unFinishedActiviti.getActivityName()); - step.setStartTime(unFinishedActiviti.getStartTime()); - step.setEndTime(unFinishedActiviti.getEndTime()); - step.setAssignee(Optional.ofNullable(unFinishedActiviti.getAssignee()).orElse("")); + step.setStepName(instance.getActivityName()); + step.setStartTime(instance.getStartTime()); + step.setEndTime(instance.getEndTime()); + step.setAssignee(Optional.ofNullable(instance.getAssignee()).orElse("")); step.setComment(""); + step.setStatus(0); steps.add(step); } return steps; @@ -225,6 +225,15 @@ public class TaskServiceImpl implements TaskService { return getTaskSteps(processInstanceId); } + @Override + public TodoTaskRespVO getTaskFormKey(TaskQueryReqVO taskQuery) { + final Task task = taskRuntime.task(taskQuery.getTaskId()); + TodoTaskRespVO respVO = new TodoTaskRespVO(); + respVO.setFormKey(task.getFormKey()); + respVO.setBusinessKey(task.getBusinessKey()); + respVO.setId(task.getId()); + return respVO; + } // private List getHighLightedFlows(ProcessDefinitionEntity processDefinition, String processInstanceId) { diff --git a/yudao-admin-server/src/main/resources/processes/leave-formkey.bpmn b/yudao-admin-server/src/main/resources/processes/leave-formkey.bpmn new file mode 100644 index 0000000000..d14ce9ba32 --- /dev/null +++ b/yudao-admin-server/src/main/resources/processes/leave-formkey.bpmn @@ -0,0 +1,152 @@ + + + + 外置表单 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 请求被驳回后员工可以选择继续申请,或者取消本次申请 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/yudao-admin-server/src/main/resources/processes/leave.bpmn b/yudao-admin-server/src/main/resources/processes/leave.bpmn deleted file mode 100644 index 34eeea0a51..0000000000 --- a/yudao-admin-server/src/main/resources/processes/leave.bpmn +++ /dev/null @@ -1,130 +0,0 @@ - - - - 请假流程演示 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/yudao-admin-ui/src/api/oa/flow.js b/yudao-admin-ui/src/api/oa/flow.js new file mode 100644 index 0000000000..3c28cb4182 --- /dev/null +++ b/yudao-admin-ui/src/api/oa/flow.js @@ -0,0 +1,9 @@ +import request from '@/utils/request' + + +export function getStartForm(processKey) { + return request({ + url: '/workflow/process/definition/getStartForm?processKey='+processKey, + method: 'get' + }) +} diff --git a/yudao-admin-ui/src/api/oa/leave.js b/yudao-admin-ui/src/api/oa/leave.js index 3fb0f806ce..afb4e03d99 100644 --- a/yudao-admin-ui/src/api/oa/leave.js +++ b/yudao-admin-ui/src/api/oa/leave.js @@ -43,6 +43,14 @@ export function getLeavePage(query) { }) } +export function createFormKeyLeave(data) { + return request({ + url: '/oa/leave/form-key/create', + method: 'post', + data: data + }) +} + // 导出请假申请 Excel export function exportLeaveExcel(query) { return request({ diff --git a/yudao-admin-ui/src/api/oa/todo.js b/yudao-admin-ui/src/api/oa/todo.js index 35f857988e..1aed4b058c 100644 --- a/yudao-admin-ui/src/api/oa/todo.js +++ b/yudao-admin-ui/src/api/oa/todo.js @@ -67,6 +67,14 @@ export function taskSteps(data) { }) } +export function getTaskFormKey(data) { + return request({ + url: '/workflow/task/formKey', + method: 'post', + data: data + }) +} + export function processHistorySteps(id) { return request({ url: '/workflow/task/process/history-steps?id='+id, diff --git a/yudao-admin-ui/src/router/index.js b/yudao-admin-ui/src/router/index.js index 63f44544bf..5b24fa503e 100644 --- a/yudao-admin-ui/src/router/index.js +++ b/yudao-admin-ui/src/router/index.js @@ -123,6 +123,76 @@ export const constantRoutes = [ meta: { title: '修改生成配置' } } ] + }, + { + path: '/flow', + component: Layout, + hidden: true, + redirect: 'noredirect', + children: [ + { + path: 'leave/apply', + component: (resolve) => require(['@/views/oa/leave/apply/index'], resolve), + name: '请假表单', + meta: { title: '请假表单', icon: 'form' } + } + ] + }, + { + path: '/flow', + component: Layout, + hidden: true, + redirect: 'noredirect', + children: [ + { + path: 'leave/approve-leader', + component: (resolve) => require(['@/views/oa/leave/approve-leader/index'], resolve), + name: '请假表单-部门领导审批', + meta: { title: '请假表单-部门领导审批', icon: 'form' } + } + ] + }, + { + path: '/flow', + component: Layout, + hidden: true, + redirect: 'noredirect', + children: [ + { + path: 'leave/approve-hr', + component: (resolve) => require(['@/views/oa/leave/approve-hr/index'], resolve), + name: '请假表单-人事审批', + meta: { title: '请假表单-人事审批', icon: 'form' } + } + ] + }, + { + path: '/flow', + component: Layout, + hidden: true, + redirect: 'noredirect', + children: [ + { + path: 'leave/confirm', + component: (resolve) => require(['@/views/oa/leave/confirm/index'], resolve), + name: '请假表单-确认', + meta: { title: '请假表单-确认', icon: 'form' } + } + ] + }, + { + path: '/flow', + component: Layout, + hidden: true, + redirect: 'noredirect', + children: [ + { + path: 'leave/modify', + component: (resolve) => require(['@/views/oa/leave/modify/index'], resolve), + name: '请假表单-修改', + meta: { title: '请假表单-修改', icon: 'form' } + } + ] } ] diff --git a/yudao-admin-ui/src/views/oa/flow/index.vue b/yudao-admin-ui/src/views/oa/flow/index.vue new file mode 100644 index 0000000000..b0fb8f51e1 --- /dev/null +++ b/yudao-admin-ui/src/views/oa/flow/index.vue @@ -0,0 +1,36 @@ + + + diff --git a/yudao-admin-ui/src/views/oa/leave/apply/index.vue b/yudao-admin-ui/src/views/oa/leave/apply/index.vue new file mode 100644 index 0000000000..41a3bd93af --- /dev/null +++ b/yudao-admin-ui/src/views/oa/leave/apply/index.vue @@ -0,0 +1,93 @@ + + + diff --git a/yudao-admin-ui/src/views/oa/leave/approve-hr/index.vue b/yudao-admin-ui/src/views/oa/leave/approve-hr/index.vue new file mode 100644 index 0000000000..3016c96bef --- /dev/null +++ b/yudao-admin-ui/src/views/oa/leave/approve-hr/index.vue @@ -0,0 +1,190 @@ + + + diff --git a/yudao-admin-ui/src/views/oa/leave/approve-leader/index.vue b/yudao-admin-ui/src/views/oa/leave/approve-leader/index.vue new file mode 100644 index 0000000000..f47349c647 --- /dev/null +++ b/yudao-admin-ui/src/views/oa/leave/approve-leader/index.vue @@ -0,0 +1,190 @@ + + + diff --git a/yudao-admin-ui/src/views/oa/leave/confirm/index.vue b/yudao-admin-ui/src/views/oa/leave/confirm/index.vue new file mode 100644 index 0000000000..b0d4025658 --- /dev/null +++ b/yudao-admin-ui/src/views/oa/leave/confirm/index.vue @@ -0,0 +1,137 @@ + + + diff --git a/yudao-admin-ui/src/views/oa/leave/index.vue b/yudao-admin-ui/src/views/oa/leave/index.vue index d147063839..f0998a00a7 100644 --- a/yudao-admin-ui/src/views/oa/leave/index.vue +++ b/yudao-admin-ui/src/views/oa/leave/index.vue @@ -28,9 +28,9 @@ @@ -49,10 +49,6 @@ - - 新增 - @@ -71,7 +67,7 @@ {{ parseTime(scope.row.endTime) }} - + + + +
点击如下按钮,发起登陆的测试
+
+ +
+ + + From 8dbd6143bf60613c802fb79663f2c6f940244349 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sat, 30 Oct 2021 10:09:31 +0800 Subject: [PATCH 14/81] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=BE=AE=E4=BF=A1?= =?UTF-8?q?=E5=B0=8F=E7=A8=8B=E5=BA=8F=E7=9A=84=E7=99=BB=E9=99=86=E7=9A=84?= =?UTF-8?q?=E6=B5=8B=E8=AF=95=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mini-program-test/.eslintrc.js | 31 +++++++ mini-program-test/README.md | 1 + mini-program-test/app.js | 19 ++++ mini-program-test/app.json | 14 +++ mini-program-test/app.wxss | 10 ++ mini-program-test/pages/index/index.js | 91 +++++++++++++++++++ mini-program-test/pages/index/index.json | 3 + mini-program-test/pages/index/index.wxml | 29 ++++++ mini-program-test/pages/index/index.wxss | 19 ++++ mini-program-test/pages/logs/logs.js | 18 ++++ mini-program-test/pages/logs/logs.json | 4 + mini-program-test/pages/logs/logs.wxml | 6 ++ mini-program-test/pages/logs/logs.wxss | 8 ++ mini-program-test/project.config.json | 75 +++++++++++++++ mini-program-test/sitemap.json | 7 ++ mini-program-test/utils/common.js | 3 + mini-program-test/utils/util.js | 19 ++++ .../vo/auth/SysAuthSocialUnbindReqVO.java | 2 +- .../user/SysUserProfileController.java | 7 +- .../system/convert/user/SysUserConvert.java | 2 +- .../service/auth/SysAuthServiceImplTest.java | 2 +- .../service/social/SysSocialServiceTest.java | 21 +++-- .../service/social/SysSocialService.java | 2 +- .../social/impl/SysSocialServiceImpl.java | 2 +- .../src/main/resources/application-local.yaml | 5 +- 更新日志.md | 1 + 26 files changed, 381 insertions(+), 20 deletions(-) create mode 100755 mini-program-test/.eslintrc.js create mode 100644 mini-program-test/README.md create mode 100755 mini-program-test/app.js create mode 100755 mini-program-test/app.json create mode 100755 mini-program-test/app.wxss create mode 100755 mini-program-test/pages/index/index.js create mode 100755 mini-program-test/pages/index/index.json create mode 100755 mini-program-test/pages/index/index.wxml create mode 100755 mini-program-test/pages/index/index.wxss create mode 100755 mini-program-test/pages/logs/logs.js create mode 100755 mini-program-test/pages/logs/logs.json create mode 100755 mini-program-test/pages/logs/logs.wxml create mode 100755 mini-program-test/pages/logs/logs.wxss create mode 100755 mini-program-test/project.config.json create mode 100755 mini-program-test/sitemap.json create mode 100755 mini-program-test/utils/common.js create mode 100755 mini-program-test/utils/util.js diff --git a/mini-program-test/.eslintrc.js b/mini-program-test/.eslintrc.js new file mode 100755 index 0000000000..115cc02b04 --- /dev/null +++ b/mini-program-test/.eslintrc.js @@ -0,0 +1,31 @@ +/* + * Eslint config file + * Documentation: https://eslint.org/docs/user-guide/configuring/ + * Install the Eslint extension before using this feature. + */ +module.exports = { + env: { + es6: true, + browser: true, + node: true, + }, + ecmaFeatures: { + modules: true, + }, + parserOptions: { + ecmaVersion: 2018, + sourceType: 'module', + }, + globals: { + wx: true, + App: true, + Page: true, + getCurrentPages: true, + getApp: true, + Component: true, + requirePlugin: true, + requireMiniProgram: true, + }, + // extends: 'eslint:recommended', + rules: {}, +} diff --git a/mini-program-test/README.md b/mini-program-test/README.md new file mode 100644 index 0000000000..4e5737ccbc --- /dev/null +++ b/mini-program-test/README.md @@ -0,0 +1 @@ +临时项目,作为测试微信小程序登陆之用 diff --git a/mini-program-test/app.js b/mini-program-test/app.js new file mode 100755 index 0000000000..1ed57c47fc --- /dev/null +++ b/mini-program-test/app.js @@ -0,0 +1,19 @@ +// app.js +App({ + onLaunch() { + // 展示本地存储能力 + const logs = wx.getStorageSync('logs') || [] + logs.unshift(Date.now()) + wx.setStorageSync('logs', logs) + + // 登录 + wx.login({ + success: res => { + // 发送 res.code 到后台换取 openId, sessionKey, unionId + } + }) + }, + globalData: { + userInfo: null + } +}) diff --git a/mini-program-test/app.json b/mini-program-test/app.json new file mode 100755 index 0000000000..3d7616ff47 --- /dev/null +++ b/mini-program-test/app.json @@ -0,0 +1,14 @@ +{ + "pages":[ + "pages/index/index", + "pages/logs/logs" + ], + "window":{ + "backgroundTextStyle":"light", + "navigationBarBackgroundColor": "#fff", + "navigationBarTitleText": "Weixin", + "navigationBarTextStyle":"black" + }, + "style": "v2", + "sitemapLocation": "sitemap.json" +} diff --git a/mini-program-test/app.wxss b/mini-program-test/app.wxss new file mode 100755 index 0000000000..06c6fc9ce3 --- /dev/null +++ b/mini-program-test/app.wxss @@ -0,0 +1,10 @@ +/**app.wxss**/ +.container { + height: 100%; + display: flex; + flex-direction: column; + align-items: center; + justify-content: space-between; + padding: 200rpx 0; + box-sizing: border-box; +} diff --git a/mini-program-test/pages/index/index.js b/mini-program-test/pages/index/index.js new file mode 100755 index 0000000000..eadb684cfe --- /dev/null +++ b/mini-program-test/pages/index/index.js @@ -0,0 +1,91 @@ +// index.js + +const common=require('../../utils/common.js') +// 获取应用实例 +const app = getApp() + +Page({ + data: { + motto: 'Hello World', + userInfo: {}, + hasUserInfo: false, + canIUse: wx.canIUse('button.open-type.getUserInfo'), + canIUseGetUserProfile: false, + canIUseOpenData: wx.canIUse('open-data.type.userAvatarUrl') && wx.canIUse('open-data.type.userNickName'), // 如需尝试获取用户信息可改为false + holderText: 'to be auth' + }, + // 事件处理函数 + bindViewTap() { + wx.navigateTo({ + url: '../logs/logs' + }) + }, + onLoad() { + if (wx.getUserProfile) { + this.setData({ + canIUseGetUserProfile: true + }) + } + }, + getUserProfile(e) { + // 推荐使用wx.getUserProfile获取用户信息,开发者每次通过该接口获取用户个人信息均需用户确认,开发者妥善保管用户快速填写的头像昵称,避免重复弹窗 + wx.getUserProfile({ + desc: '展示用户信息', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写 + success: (res) => { + console.log(res) + this.setData({ + userInfo: res.userInfo, + hasUserInfo: true + }) + } + }) + }, + getUserInfo(e) { + // 不推荐使用getUserInfo获取用户信息,预计自2021年4月13日起,getUserInfo将不再弹出弹窗,并直接返回匿名的用户个人信息 + console.log(e) + this.setData({ + userInfo: e.detail.userInfo, + hasUserInfo: true + }) + }, + // 小程序登录 https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html + wxLogin(e){ + let page=this; + wx.login({ + success (res) { + console.log("res:") + console.log(res) + if (res.code) { + //发起网络请求 + console.log('发起网络请求'+common.baseurl) + wx.request({ + url: common.baseurl+'/api/social-login2', + method: "POST", + data: { + code: res.code, + state: 'empty', + type: 33, + username: '15601691300', + password: 'admin123' + }, + header: { + 'content-type': 'application/json' // 默认值 + }, + success: function(res) { + console.log(res.data) + let holder="auth success, token:"+res.data.data.token + page.setData({holderText: holder}) + }, + fail: function(data){ + console.error("请求出错"); + console.error(data) + } + + }) + } else { + console.log('登录失败!' + res.errMsg) + } + } + }) + } +}) diff --git a/mini-program-test/pages/index/index.json b/mini-program-test/pages/index/index.json new file mode 100755 index 0000000000..8835af0699 --- /dev/null +++ b/mini-program-test/pages/index/index.json @@ -0,0 +1,3 @@ +{ + "usingComponents": {} +} \ No newline at end of file diff --git a/mini-program-test/pages/index/index.wxml b/mini-program-test/pages/index/index.wxml new file mode 100755 index 0000000000..e3243c3e04 --- /dev/null +++ b/mini-program-test/pages/index/index.wxml @@ -0,0 +1,29 @@ + + + + + + + + + + + 请使用1.4.4及以上版本基础库 + + + + {{userInfo.nickName}} + + + + + + + + + 授权登录测试1024 + + + + {{holderText}} + diff --git a/mini-program-test/pages/index/index.wxss b/mini-program-test/pages/index/index.wxss new file mode 100755 index 0000000000..eb642035f7 --- /dev/null +++ b/mini-program-test/pages/index/index.wxss @@ -0,0 +1,19 @@ +/**index.wxss**/ +.userinfo { + display: flex; + flex-direction: column; + align-items: center; + color: #aaa; +} + +.userinfo-avatar { + overflow: hidden; + width: 128rpx; + height: 128rpx; + margin: 20rpx; + border-radius: 50%; +} + +.usermotto { + margin-top: 200px; +} \ No newline at end of file diff --git a/mini-program-test/pages/logs/logs.js b/mini-program-test/pages/logs/logs.js new file mode 100755 index 0000000000..85f6aac5ab --- /dev/null +++ b/mini-program-test/pages/logs/logs.js @@ -0,0 +1,18 @@ +// logs.js +const util = require('../../utils/util.js') + +Page({ + data: { + logs: [] + }, + onLoad() { + this.setData({ + logs: (wx.getStorageSync('logs') || []).map(log => { + return { + date: util.formatTime(new Date(log)), + timeStamp: log + } + }) + }) + } +}) diff --git a/mini-program-test/pages/logs/logs.json b/mini-program-test/pages/logs/logs.json new file mode 100755 index 0000000000..3ee76c183c --- /dev/null +++ b/mini-program-test/pages/logs/logs.json @@ -0,0 +1,4 @@ +{ + "navigationBarTitleText": "查看启动日志", + "usingComponents": {} +} \ No newline at end of file diff --git a/mini-program-test/pages/logs/logs.wxml b/mini-program-test/pages/logs/logs.wxml new file mode 100755 index 0000000000..0b6b6456f7 --- /dev/null +++ b/mini-program-test/pages/logs/logs.wxml @@ -0,0 +1,6 @@ + + + + {{index + 1}}. {{log.date}} + + diff --git a/mini-program-test/pages/logs/logs.wxss b/mini-program-test/pages/logs/logs.wxss new file mode 100755 index 0000000000..94d4b88a27 --- /dev/null +++ b/mini-program-test/pages/logs/logs.wxss @@ -0,0 +1,8 @@ +.log-list { + display: flex; + flex-direction: column; + padding: 40rpx; +} +.log-item { + margin: 10rpx; +} diff --git a/mini-program-test/project.config.json b/mini-program-test/project.config.json new file mode 100755 index 0000000000..2fbe955c6f --- /dev/null +++ b/mini-program-test/project.config.json @@ -0,0 +1,75 @@ +{ + "description": "项目配置文件", + "packOptions": { + "ignore": [ + { + "type": "file", + "value": ".eslintrc.js" + } + ] + }, + "setting": { + "bundle": false, + "userConfirmedBundleSwitch": false, + "urlCheck": true, + "scopeDataCheck": false, + "coverView": true, + "es6": true, + "postcss": true, + "compileHotReLoad": false, + "lazyloadPlaceholderEnable": false, + "preloadBackgroundData": false, + "minified": true, + "autoAudits": false, + "newFeature": false, + "uglifyFileName": false, + "uploadWithSourceMap": true, + "useIsolateContext": true, + "nodeModules": false, + "enhance": true, + "useMultiFrameRuntime": true, + "useApiHook": true, + "useApiHostProcess": true, + "showShadowRootInWxmlPanel": true, + "packNpmManually": false, + "enableEngineNative": false, + "packNpmRelationList": [], + "minifyWXSS": true, + "showES6CompileOption": false, + "minifyWXML": true + }, + "compileType": "miniprogram", + "libVersion": "2.19.4", + "appid": "wx44d047d87e6284d8", + "appid1": "wx63c280fe3248a3e7", + "projectname": "mini-program-test", + "debugOptions": { + "hidedInDevtools": [] + }, + "scripts": {}, + "staticServerOptions": { + "baseURL": "", + "servePath": "" + }, + "isGameTourist": false, + "condition": { + "search": { + "list": [] + }, + "conversation": { + "list": [] + }, + "game": { + "list": [] + }, + "plugin": { + "list": [] + }, + "gamePlugin": { + "list": [] + }, + "miniprogram": { + "list": [] + } + } +} \ No newline at end of file diff --git a/mini-program-test/sitemap.json b/mini-program-test/sitemap.json new file mode 100755 index 0000000000..ca02add20b --- /dev/null +++ b/mini-program-test/sitemap.json @@ -0,0 +1,7 @@ +{ + "desc": "关于本文件的更多信息,请参考文档 https://developers.weixin.qq.com/miniprogram/dev/framework/sitemap.html", + "rules": [{ + "action": "allow", + "page": "*" + }] +} \ No newline at end of file diff --git a/mini-program-test/utils/common.js b/mini-program-test/utils/common.js new file mode 100755 index 0000000000..a52d725204 --- /dev/null +++ b/mini-program-test/utils/common.js @@ -0,0 +1,3 @@ +module.exports = { + baseurl: "http://127.0.0.1:28080" +} diff --git a/mini-program-test/utils/util.js b/mini-program-test/utils/util.js new file mode 100755 index 0000000000..764bc2ce26 --- /dev/null +++ b/mini-program-test/utils/util.js @@ -0,0 +1,19 @@ +const formatTime = date => { + const year = date.getFullYear() + const month = date.getMonth() + 1 + const day = date.getDate() + const hour = date.getHours() + const minute = date.getMinutes() + const second = date.getSeconds() + + return `${[year, month, day].map(formatNumber).join('/')} ${[hour, minute, second].map(formatNumber).join(':')}` +} + +const formatNumber = n => { + n = n.toString() + return n[1] ? n : `0${n}` +} + +module.exports = { + formatTime +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/vo/auth/SysAuthSocialUnbindReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/vo/auth/SysAuthSocialUnbindReqVO.java index 71cdc6fbb6..096164ed70 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/vo/auth/SysAuthSocialUnbindReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/vo/auth/SysAuthSocialUnbindReqVO.java @@ -1,6 +1,6 @@ package cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.auth; -import cn.iocoder.yudao.adminserver.modules.system.enums.social.SysSocialTypeEnum; +import cn.iocoder.yudao.coreservice.modules.system.enums.social.SysSocialTypeEnum; import cn.iocoder.yudao.framework.common.validation.InEnum; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/SysUserProfileController.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/SysUserProfileController.java index 523359b086..48236a7abf 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/SysUserProfileController.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/SysUserProfileController.java @@ -8,15 +8,16 @@ import cn.iocoder.yudao.adminserver.modules.system.convert.user.SysUserConvert; import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept.SysDeptDO; import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept.SysPostDO; import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysRoleDO; -import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.social.SysSocialUserDO; import cn.iocoder.yudao.adminserver.modules.system.service.dept.SysDeptService; import cn.iocoder.yudao.adminserver.modules.system.service.dept.SysPostService; import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysPermissionService; import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysRoleService; -import cn.iocoder.yudao.adminserver.modules.system.service.social.SysSocialService; import cn.iocoder.yudao.adminserver.modules.system.service.user.SysUserService; +import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.social.SysSocialUserDO; import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO; +import cn.iocoder.yudao.coreservice.modules.system.service.social.SysSocialService; import cn.iocoder.yudao.coreservice.modules.system.service.user.SysUserCoreService; +import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import io.swagger.annotations.Api; @@ -77,7 +78,7 @@ public class SysUserProfileController { resp.setPosts(SysUserConvert.INSTANCE.convertList02(posts)); } // 获得社交用户信息 - List socialUsers = socialService.getSocialUserList(user.getId()); + List socialUsers = socialService.getSocialUserList(user.getId(), UserTypeEnum.ADMIN); resp.setSocialUsers(SysUserConvert.INSTANCE.convertList03(socialUsers)); return success(resp); } diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/user/SysUserConvert.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/user/SysUserConvert.java index dbe5b365fb..d25ce02add 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/user/SysUserConvert.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/user/SysUserConvert.java @@ -7,7 +7,7 @@ import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.user.*; import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept.SysDeptDO; import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept.SysPostDO; import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysRoleDO; -import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.social.SysSocialUserDO; +import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.social.SysSocialUserDO; import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; diff --git a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/SysAuthServiceImplTest.java b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/SysAuthServiceImplTest.java index 51e59dc0aa..c09a194aa8 100644 --- a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/SysAuthServiceImplTest.java +++ b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/SysAuthServiceImplTest.java @@ -7,11 +7,11 @@ import cn.iocoder.yudao.adminserver.modules.system.enums.logger.SysLoginResultEn import cn.iocoder.yudao.adminserver.modules.system.service.auth.impl.SysAuthServiceImpl; import cn.iocoder.yudao.adminserver.modules.system.service.common.SysCaptchaService; import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysPermissionService; -import cn.iocoder.yudao.adminserver.modules.system.service.social.SysSocialService; import cn.iocoder.yudao.adminserver.modules.system.service.user.SysUserService; import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO; import cn.iocoder.yudao.coreservice.modules.system.service.auth.SysUserSessionCoreService; import cn.iocoder.yudao.coreservice.modules.system.service.logger.SysLoginLogCoreService; +import cn.iocoder.yudao.coreservice.modules.system.service.social.SysSocialService; import cn.iocoder.yudao.coreservice.modules.system.service.user.SysUserCoreService; import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; import cn.iocoder.yudao.framework.security.core.LoginUser; diff --git a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/social/SysSocialServiceTest.java b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/social/SysSocialServiceTest.java index badaf0e760..cec84c1ed6 100644 --- a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/social/SysSocialServiceTest.java +++ b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/social/SysSocialServiceTest.java @@ -1,11 +1,11 @@ package cn.iocoder.yudao.adminserver.modules.system.service.social; import cn.iocoder.yudao.adminserver.BaseDbAndRedisUnitTest; -import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.social.SysSocialUserDO; -import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.social.SysSocialUserMapper; -import cn.iocoder.yudao.adminserver.modules.system.dal.redis.social.SysSocialAuthUserRedisDAO; -import cn.iocoder.yudao.adminserver.modules.system.enums.social.SysSocialTypeEnum; -import cn.iocoder.yudao.adminserver.modules.system.service.social.impl.SysSocialServiceImpl; +import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.social.SysSocialUserDO; +import cn.iocoder.yudao.coreservice.modules.system.dal.mysql.social.SysSocialUserMapper; +import cn.iocoder.yudao.coreservice.modules.system.dal.redis.social.SysSocialAuthUserRedisDAO; +import cn.iocoder.yudao.coreservice.modules.system.enums.social.SysSocialTypeEnum; +import cn.iocoder.yudao.coreservice.modules.system.service.social.impl.SysSocialServiceImpl; import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; import com.xkcoding.justauth.AuthRequestFactory; import me.zhyd.oauth.model.AuthUser; @@ -23,6 +23,7 @@ import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomLongId import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo; import static org.junit.jupiter.api.Assertions.assertEquals; +// TODO @timfruit:这个单元测试,挪到 yudao-core-service /** * {@link SysSocialServiceImpl} 的单元测试类 * @@ -53,7 +54,7 @@ public class SysSocialServiceTest extends BaseDbAndRedisUnitTest { // mock 方法 // 调用 - socialService.bindSocialUser(userId, type, authUser); + socialService.bindSocialUser(userId, type, authUser, UserTypeEnum.ADMIN); // 断言 List socialUsers = socialUserMapper.selectList("user_id", userId); assertEquals(1, socialUsers.size()); @@ -78,7 +79,7 @@ public class SysSocialServiceTest extends BaseDbAndRedisUnitTest { // mock 方法 // 调用 - socialService.bindSocialUser(userId, type, authUser); + socialService.bindSocialUser(userId, type, authUser, UserTypeEnum.ADMIN); // 断言 List socialUsers = socialUserMapper.selectList("user_id", userId); assertEquals(1, socialUsers.size()); @@ -103,7 +104,7 @@ public class SysSocialServiceTest extends BaseDbAndRedisUnitTest { // mock 方法 // 调用 - socialService.bindSocialUser(userId, type, authUser); + socialService.bindSocialUser(userId, type, authUser, UserTypeEnum.ADMIN); // 断言 List socialUsers = socialUserMapper.selectList("user_id", userId); assertEquals(1, socialUsers.size()); @@ -140,7 +141,7 @@ public class SysSocialServiceTest extends BaseDbAndRedisUnitTest { String newUnionId = oldSocialUser.getUnionId(); // 调用 - socialService.unbindOldSocialUser(userId, type, newUnionId); + socialService.unbindOldSocialUser(userId, type, newUnionId, UserTypeEnum.ADMIN); // 断言 assertEquals(1L, socialUserMapper.selectCount(null).longValue()); } @@ -163,7 +164,7 @@ public class SysSocialServiceTest extends BaseDbAndRedisUnitTest { String newUnionId = randomString(10); // 调用 - socialService.unbindOldSocialUser(userId, type, newUnionId); + socialService.unbindOldSocialUser(userId, type, newUnionId, UserTypeEnum.ADMIN); // 断言 assertEquals(0L, socialUserMapper.selectCount(null).longValue()); } diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/social/SysSocialService.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/social/SysSocialService.java index ad72a57805..8a8df27d65 100644 --- a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/social/SysSocialService.java +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/social/SysSocialService.java @@ -59,7 +59,7 @@ public interface SysSocialService { * @param userId 用户编号 * @return 社交用户列表 */ - List getSocialUserList(Long userId,UserTypeEnum userTypeEnum); + List getSocialUserList(Long userId, UserTypeEnum userTypeEnum); /** * 绑定社交用户 diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/social/impl/SysSocialServiceImpl.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/social/impl/SysSocialServiceImpl.java index d1419c44f8..bde40c3c4c 100644 --- a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/social/impl/SysSocialServiceImpl.java +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/social/impl/SysSocialServiceImpl.java @@ -87,7 +87,7 @@ public class SysSocialServiceImpl implements SysSocialService { @Override @Transactional - public void bindSocialUser(Long userId, Integer type, AuthUser authUser,UserTypeEnum userTypeEnum) { + public void bindSocialUser(Long userId, Integer type, AuthUser authUser, UserTypeEnum userTypeEnum) { // 获得 unionId 对应的 SysSocialUserDO 列表 String unionId = getAuthUserUnionId(authUser); List socialUsers = this.getAllSocialUserList(type, unionId, userTypeEnum); diff --git a/yudao-user-server/src/main/resources/application-local.yaml b/yudao-user-server/src/main/resources/application-local.yaml index 1e904c3ee8..c39a7cb1b5 100644 --- a/yudao-user-server/src/main/resources/application-local.yaml +++ b/yudao-user-server/src/main/resources/application-local.yaml @@ -156,7 +156,6 @@ yudao: pay-notify-url: http://niubi.natapp1.cc/api/pay/order/notify refund-notify-url: http://niubi.natapp1.cc/api/pay/refund/notify - justauth: enabled: true type: @@ -169,10 +168,12 @@ justauth: extend: enum-class: cn.iocoder.yudao.coreservice.modules.system.compent.justauth.AuthExtendSource config: - WECHAT_MINI_PROGRAM: # 微信小程序 扩展 + WECHAT_MINI_PROGRAM: # 微信小程序 https://www.yuque.com/docs/share/88e3d30a-6830-45fc-8c25-dae485aef3aa?#%20%E3%80%8A%E5%B0%8F%E7%A8%8B%E5%BA%8F%E6%8E%88%E6%9D%83%E7%99%BB%E5%BD%95%E3%80%8B request-class: cn.iocoder.yudao.coreservice.modules.system.compent.justauth.AuthWeChatMiniProgramRequest client-id: wx44d047d87e6284d8 client-secret: 21c3b7a8a51ee1b8f5cf875848ed4466 +# client-id: wx63c280fe3248a3e7 # TODO 芋艿:自己的测试,后续可以删除 +# client-secret: 6f270509224a7ae1296bbf1c8cb97aed ignore-check-redirect-uri: true ignore-check-state: true cache: diff --git a/更新日志.md b/更新日志.md index f66a804cda..cd0c940069 100644 --- a/更新日志.md +++ b/更新日志.md @@ -15,6 +15,7 @@ TODO * 支付 * 用户前台的社交登陆 +* 用户前台的修改手机、修改密码、忘记密码 ## [v1.1.0] 2021.10.25 From 742125ed9963e9c061e7b00645e3572e98f09486 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sat, 30 Oct 2021 13:46:39 +0800 Subject: [PATCH 15/81] =?UTF-8?q?code=20review=20=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E6=B5=81=E7=9A=84=E4=BB=A3=E7=A0=81=20=E5=90=88=E5=B9=B6?= =?UTF-8?q?=E6=9C=80=E6=96=B0=E7=9A=84=20SQL?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sql/quartz.sql | 73 +- sql/ruoyi-vue-pro.sql | 822 ++---------------- .../controller/oa/OaLeaveController.java | 50 +- .../controller/oa/vo/OaLeaveUpdateReqVO.java | 15 +- .../workflow/ProcessDefinitionController.java | 4 +- .../controller/workflow/TaskController.java | 12 +- .../modules/activiti/package-info.java | 2 + .../service/oa/ReportBackEndProcessor.java | 6 +- .../service/oa/impl/OaLeaveServiceImpl.java | 49 +- .../service/workflow/TaskService.java | 3 +- .../workflow/impl/TaskServiceImpl.java | 47 +- .../pom.xml | 1 + .../core/util/SecurityFrameworkUtils.java | 4 +- 13 files changed, 210 insertions(+), 878 deletions(-) create mode 100644 yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/package-info.java diff --git a/sql/quartz.sql b/sql/quartz.sql index 17e3fff676..6d7b6741b5 100644 --- a/sql/quartz.sql +++ b/sql/quartz.sql @@ -1,17 +1,17 @@ /* Navicat Premium Data Transfer - Source Server : local-mysql001 + Source Server : 127.0.0.1 Source Server Type : MySQL - Source Server Version : 50718 + Source Server Version : 80026 Source Host : localhost:3306 Source Schema : ruoyi-vue-pro Target Server Type : MySQL - Target Server Version : 50718 + Target Server Version : 80026 File Encoding : 65001 - Date: 03/05/2021 12:01:37 + Date: 30/10/2021 13:46:03 */ SET NAMES utf8mb4; @@ -29,7 +29,7 @@ CREATE TABLE `QRTZ_BLOB_TRIGGERS` ( PRIMARY KEY (`SCHED_NAME`,`TRIGGER_NAME`,`TRIGGER_GROUP`), KEY `SCHED_NAME` (`SCHED_NAME`,`TRIGGER_NAME`,`TRIGGER_GROUP`), CONSTRAINT `qrtz_blob_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `QRTZ_TRIGGERS` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -- ---------------------------- -- Records of QRTZ_BLOB_TRIGGERS @@ -46,7 +46,7 @@ CREATE TABLE `QRTZ_CALENDARS` ( `CALENDAR_NAME` varchar(190) NOT NULL, `CALENDAR` blob NOT NULL, PRIMARY KEY (`SCHED_NAME`,`CALENDAR_NAME`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -- ---------------------------- -- Records of QRTZ_CALENDARS @@ -66,12 +66,13 @@ CREATE TABLE `QRTZ_CRON_TRIGGERS` ( `TIME_ZONE_ID` varchar(80) DEFAULT NULL, PRIMARY KEY (`SCHED_NAME`,`TRIGGER_NAME`,`TRIGGER_GROUP`), CONSTRAINT `qrtz_cron_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `QRTZ_TRIGGERS` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -- ---------------------------- -- Records of QRTZ_CRON_TRIGGERS -- ---------------------------- BEGIN; +INSERT INTO `QRTZ_CRON_TRIGGERS` VALUES ('schedulerName', 'payNotifyJob', 'DEFAULT', '* * * * * ?', 'Asia/Shanghai'); INSERT INTO `QRTZ_CRON_TRIGGERS` VALUES ('schedulerName', 'sysUserSessionTimeoutJob', 'DEFAULT', '0 * * * * ? *', 'Asia/Shanghai'); COMMIT; @@ -85,9 +86,9 @@ CREATE TABLE `QRTZ_FIRED_TRIGGERS` ( `TRIGGER_NAME` varchar(190) NOT NULL, `TRIGGER_GROUP` varchar(190) NOT NULL, `INSTANCE_NAME` varchar(190) NOT NULL, - `FIRED_TIME` bigint(13) NOT NULL, - `SCHED_TIME` bigint(13) NOT NULL, - `PRIORITY` int(11) NOT NULL, + `FIRED_TIME` bigint NOT NULL, + `SCHED_TIME` bigint NOT NULL, + `PRIORITY` int NOT NULL, `STATE` varchar(16) NOT NULL, `JOB_NAME` varchar(190) DEFAULT NULL, `JOB_GROUP` varchar(190) DEFAULT NULL, @@ -100,7 +101,7 @@ CREATE TABLE `QRTZ_FIRED_TRIGGERS` ( KEY `IDX_QRTZ_FT_JG` (`SCHED_NAME`,`JOB_GROUP`), KEY `IDX_QRTZ_FT_T_G` (`SCHED_NAME`,`TRIGGER_NAME`,`TRIGGER_GROUP`), KEY `IDX_QRTZ_FT_TG` (`SCHED_NAME`,`TRIGGER_GROUP`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -- ---------------------------- -- Records of QRTZ_FIRED_TRIGGERS @@ -126,12 +127,13 @@ CREATE TABLE `QRTZ_JOB_DETAILS` ( PRIMARY KEY (`SCHED_NAME`,`JOB_NAME`,`JOB_GROUP`), KEY `IDX_QRTZ_J_REQ_RECOVERY` (`SCHED_NAME`,`REQUESTS_RECOVERY`), KEY `IDX_QRTZ_J_GRP` (`SCHED_NAME`,`JOB_GROUP`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -- ---------------------------- -- Records of QRTZ_JOB_DETAILS -- ---------------------------- BEGIN; +INSERT INTO `QRTZ_JOB_DETAILS` VALUES ('schedulerName', 'payNotifyJob', 'DEFAULT', NULL, 'cn.iocoder.yudao.framework.quartz.core.handler.JobHandlerInvoker', '0', '1', '1', '0', 0xACED0005737200156F72672E71756172747A2E4A6F62446174614D61709FB083E8BFA9B0CB020000787200266F72672E71756172747A2E7574696C732E537472696E674B65794469727479466C61674D61708208E8C3FBC55D280200015A0013616C6C6F77735472616E7369656E74446174617872001D6F72672E71756172747A2E7574696C732E4469727479466C61674D617013E62EAD28760ACE0200025A000564697274794C00036D617074000F4C6A6176612F7574696C2F4D61703B787001737200116A6176612E7574696C2E486173684D61700507DAC1C31660D103000246000A6C6F6164466163746F724900097468726573686F6C6478703F4000000000000C770800000010000000027400064A4F425F49447372000E6A6176612E6C616E672E4C6F6E673B8BE490CC8F23DF0200014A000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B020000787000000000000000057400104A4F425F48414E444C45525F4E414D4574000C7061794E6F746966794A6F627800); INSERT INTO `QRTZ_JOB_DETAILS` VALUES ('schedulerName', 'sysUserSessionTimeoutJob', 'DEFAULT', NULL, 'cn.iocoder.yudao.framework.quartz.core.handler.JobHandlerInvoker', '0', '1', '1', '0', 0xACED0005737200156F72672E71756172747A2E4A6F62446174614D61709FB083E8BFA9B0CB020000787200266F72672E71756172747A2E7574696C732E537472696E674B65794469727479466C61674D61708208E8C3FBC55D280200015A0013616C6C6F77735472616E7369656E74446174617872001D6F72672E71756172747A2E7574696C732E4469727479466C61674D617013E62EAD28760ACE0200025A000564697274794C00036D617074000F4C6A6176612F7574696C2F4D61703B787001737200116A6176612E7574696C2E486173684D61700507DAC1C31660D103000246000A6C6F6164466163746F724900097468726573686F6C6478703F4000000000000C770800000010000000027400064A4F425F49447372000E6A6176612E6C616E672E4C6F6E673B8BE490CC8F23DF0200014A000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B020000787000000000000000037400104A4F425F48414E444C45525F4E414D457400187379735573657253657373696F6E54696D656F75744A6F627800); COMMIT; @@ -143,7 +145,7 @@ CREATE TABLE `QRTZ_LOCKS` ( `SCHED_NAME` varchar(120) NOT NULL, `LOCK_NAME` varchar(40) NOT NULL, PRIMARY KEY (`SCHED_NAME`,`LOCK_NAME`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -- ---------------------------- -- Records of QRTZ_LOCKS @@ -161,7 +163,7 @@ CREATE TABLE `QRTZ_PAUSED_TRIGGER_GRPS` ( `SCHED_NAME` varchar(120) NOT NULL, `TRIGGER_GROUP` varchar(190) NOT NULL, PRIMARY KEY (`SCHED_NAME`,`TRIGGER_GROUP`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -- ---------------------------- -- Records of QRTZ_PAUSED_TRIGGER_GRPS @@ -176,16 +178,16 @@ DROP TABLE IF EXISTS `QRTZ_SCHEDULER_STATE`; CREATE TABLE `QRTZ_SCHEDULER_STATE` ( `SCHED_NAME` varchar(120) NOT NULL, `INSTANCE_NAME` varchar(190) NOT NULL, - `LAST_CHECKIN_TIME` bigint(13) NOT NULL, - `CHECKIN_INTERVAL` bigint(13) NOT NULL, + `LAST_CHECKIN_TIME` bigint NOT NULL, + `CHECKIN_INTERVAL` bigint NOT NULL, PRIMARY KEY (`SCHED_NAME`,`INSTANCE_NAME`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -- ---------------------------- -- Records of QRTZ_SCHEDULER_STATE -- ---------------------------- BEGIN; -INSERT INTO `QRTZ_SCHEDULER_STATE` VALUES ('schedulerName', 'Yunai1620010117445', 1620010210071, 15000); +INSERT INTO `QRTZ_SCHEDULER_STATE` VALUES ('schedulerName', 'Yunai.local1635571630493', 1635572537879, 15000); COMMIT; -- ---------------------------- @@ -196,12 +198,12 @@ CREATE TABLE `QRTZ_SIMPLE_TRIGGERS` ( `SCHED_NAME` varchar(120) NOT NULL, `TRIGGER_NAME` varchar(190) NOT NULL, `TRIGGER_GROUP` varchar(190) NOT NULL, - `REPEAT_COUNT` bigint(7) NOT NULL, - `REPEAT_INTERVAL` bigint(12) NOT NULL, - `TIMES_TRIGGERED` bigint(10) NOT NULL, + `REPEAT_COUNT` bigint NOT NULL, + `REPEAT_INTERVAL` bigint NOT NULL, + `TIMES_TRIGGERED` bigint NOT NULL, PRIMARY KEY (`SCHED_NAME`,`TRIGGER_NAME`,`TRIGGER_GROUP`), CONSTRAINT `qrtz_simple_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `QRTZ_TRIGGERS` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -- ---------------------------- -- Records of QRTZ_SIMPLE_TRIGGERS @@ -220,17 +222,17 @@ CREATE TABLE `QRTZ_SIMPROP_TRIGGERS` ( `STR_PROP_1` varchar(512) DEFAULT NULL, `STR_PROP_2` varchar(512) DEFAULT NULL, `STR_PROP_3` varchar(512) DEFAULT NULL, - `INT_PROP_1` int(11) DEFAULT NULL, - `INT_PROP_2` int(11) DEFAULT NULL, - `LONG_PROP_1` bigint(20) DEFAULT NULL, - `LONG_PROP_2` bigint(20) DEFAULT NULL, + `INT_PROP_1` int DEFAULT NULL, + `INT_PROP_2` int DEFAULT NULL, + `LONG_PROP_1` bigint DEFAULT NULL, + `LONG_PROP_2` bigint DEFAULT NULL, `DEC_PROP_1` decimal(13,4) DEFAULT NULL, `DEC_PROP_2` decimal(13,4) DEFAULT NULL, `BOOL_PROP_1` varchar(1) DEFAULT NULL, `BOOL_PROP_2` varchar(1) DEFAULT NULL, PRIMARY KEY (`SCHED_NAME`,`TRIGGER_NAME`,`TRIGGER_GROUP`), CONSTRAINT `qrtz_simprop_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `QRTZ_TRIGGERS` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -- ---------------------------- -- Records of QRTZ_SIMPROP_TRIGGERS @@ -249,15 +251,15 @@ CREATE TABLE `QRTZ_TRIGGERS` ( `JOB_NAME` varchar(190) NOT NULL, `JOB_GROUP` varchar(190) NOT NULL, `DESCRIPTION` varchar(250) DEFAULT NULL, - `NEXT_FIRE_TIME` bigint(13) DEFAULT NULL, - `PREV_FIRE_TIME` bigint(13) DEFAULT NULL, - `PRIORITY` int(11) DEFAULT NULL, + `NEXT_FIRE_TIME` bigint DEFAULT NULL, + `PREV_FIRE_TIME` bigint DEFAULT NULL, + `PRIORITY` int DEFAULT NULL, `TRIGGER_STATE` varchar(16) NOT NULL, `TRIGGER_TYPE` varchar(8) NOT NULL, - `START_TIME` bigint(13) NOT NULL, - `END_TIME` bigint(13) DEFAULT NULL, + `START_TIME` bigint NOT NULL, + `END_TIME` bigint DEFAULT NULL, `CALENDAR_NAME` varchar(190) DEFAULT NULL, - `MISFIRE_INSTR` smallint(2) DEFAULT NULL, + `MISFIRE_INSTR` smallint DEFAULT NULL, `JOB_DATA` blob, PRIMARY KEY (`SCHED_NAME`,`TRIGGER_NAME`,`TRIGGER_GROUP`), KEY `IDX_QRTZ_T_J` (`SCHED_NAME`,`JOB_NAME`,`JOB_GROUP`), @@ -273,13 +275,14 @@ CREATE TABLE `QRTZ_TRIGGERS` ( KEY `IDX_QRTZ_T_NFT_ST_MISFIRE` (`SCHED_NAME`,`MISFIRE_INSTR`,`NEXT_FIRE_TIME`,`TRIGGER_STATE`), KEY `IDX_QRTZ_T_NFT_ST_MISFIRE_GRP` (`SCHED_NAME`,`MISFIRE_INSTR`,`NEXT_FIRE_TIME`,`TRIGGER_GROUP`,`TRIGGER_STATE`), CONSTRAINT `qrtz_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`) REFERENCES `QRTZ_JOB_DETAILS` (`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -- ---------------------------- -- Records of QRTZ_TRIGGERS -- ---------------------------- BEGIN; -INSERT INTO `QRTZ_TRIGGERS` VALUES ('schedulerName', 'sysUserSessionTimeoutJob', 'DEFAULT', 'sysUserSessionTimeoutJob', 'DEFAULT', NULL, 1620010260000, 1620010200000, 5, 'WAITING', 'CRON', 1613649236000, 0, NULL, 0, 0xACED0005737200156F72672E71756172747A2E4A6F62446174614D61709FB083E8BFA9B0CB020000787200266F72672E71756172747A2E7574696C732E537472696E674B65794469727479466C61674D61708208E8C3FBC55D280200015A0013616C6C6F77735472616E7369656E74446174617872001D6F72672E71756172747A2E7574696C732E4469727479466C61674D617013E62EAD28760ACE0200025A000564697274794C00036D617074000F4C6A6176612F7574696C2F4D61703B787001737200116A6176612E7574696C2E486173684D61700507DAC1C31660D103000246000A6C6F6164466163746F724900097468726573686F6C6478703F4000000000000C770800000010000000037400114A4F425F48414E444C45525F504152414D707400124A4F425F52455452595F494E54455256414C737200116A6176612E6C616E672E496E746567657212E2A0A4F781873802000149000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B0200007870000007D074000F4A4F425F52455452595F434F554E547371007E0009000000037800); +INSERT INTO `QRTZ_TRIGGERS` VALUES ('schedulerName', 'payNotifyJob', 'DEFAULT', 'payNotifyJob', 'DEFAULT', NULL, 1635572540000, 1635572539000, 5, 'WAITING', 'CRON', 1635294882000, 0, NULL, 0, 0xACED0005737200156F72672E71756172747A2E4A6F62446174614D61709FB083E8BFA9B0CB020000787200266F72672E71756172747A2E7574696C732E537472696E674B65794469727479466C61674D61708208E8C3FBC55D280200015A0013616C6C6F77735472616E7369656E74446174617872001D6F72672E71756172747A2E7574696C732E4469727479466C61674D617013E62EAD28760ACE0200025A000564697274794C00036D617074000F4C6A6176612F7574696C2F4D61703B787001737200116A6176612E7574696C2E486173684D61700507DAC1C31660D103000246000A6C6F6164466163746F724900097468726573686F6C6478703F4000000000000C770800000010000000037400114A4F425F48414E444C45525F504152414D707400124A4F425F52455452595F494E54455256414C737200116A6176612E6C616E672E496E746567657212E2A0A4F781873802000149000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B02000078700000000074000F4A4F425F52455452595F434F554E5471007E000B7800); +INSERT INTO `QRTZ_TRIGGERS` VALUES ('schedulerName', 'sysUserSessionTimeoutJob', 'DEFAULT', 'sysUserSessionTimeoutJob', 'DEFAULT', NULL, 1635572580000, 1635572520000, 5, 'WAITING', 'CRON', 1613649236000, 0, NULL, 0, 0xACED0005737200156F72672E71756172747A2E4A6F62446174614D61709FB083E8BFA9B0CB020000787200266F72672E71756172747A2E7574696C732E537472696E674B65794469727479466C61674D61708208E8C3FBC55D280200015A0013616C6C6F77735472616E7369656E74446174617872001D6F72672E71756172747A2E7574696C732E4469727479466C61674D617013E62EAD28760ACE0200025A000564697274794C00036D617074000F4C6A6176612F7574696C2F4D61703B787001737200116A6176612E7574696C2E486173684D61700507DAC1C31660D103000246000A6C6F6164466163746F724900097468726573686F6C6478703F4000000000000C770800000010000000037400114A4F425F48414E444C45525F504152414D707400124A4F425F52455452595F494E54455256414C737200116A6176612E6C616E672E496E746567657212E2A0A4F781873802000149000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B0200007870000007D074000F4A4F425F52455452595F434F554E547371007E0009000000037800); COMMIT; SET FOREIGN_KEY_CHECKS = 1; diff --git a/sql/ruoyi-vue-pro.sql b/sql/ruoyi-vue-pro.sql index f6c74f0fba..9393823271 100644 --- a/sql/ruoyi-vue-pro.sql +++ b/sql/ruoyi-vue-pro.sql @@ -11,7 +11,7 @@ Target Server Version : 80026 File Encoding : 65001 - Date: 29/10/2021 08:21:35 + Date: 30/10/2021 13:45:16 */ SET NAMES utf8mb4; @@ -43,614 +43,12 @@ CREATE TABLE `inf_api_access_log` ( `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', PRIMARY KEY (`id`) USING BTREE -) ENGINE=InnoDB AUTO_INCREMENT=2173 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='API 访问日志表'; +) ENGINE=InnoDB AUTO_INCREMENT=2306 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='API 访问日志表'; -- ---------------------------- -- Records of inf_api_access_log -- ---------------------------- BEGIN; -INSERT INTO `inf_api_access_log` VALUES (1571, '', 0, 0, 'yudao-user-server', 'GET', '/api/wx/mp/get-jsapi-ticket', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Apache-HttpClient/4.5.13 (Java/11.0.11)', '2021-10-24 12:39:14', '2021-10-24 12:39:15', 562, 0, '', NULL, '2021-10-24 12:39:15', NULL, '2021-10-24 12:39:15', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1572, '', 0, 0, 'yudao-user-server', 'GET', '/api/wx/mp/get-jsapi-ticket', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Apache-HttpClient/4.5.13 (Java/11.0.11)', '2021-10-24 12:39:25', '2021-10-24 12:39:25', 10, 0, '', NULL, '2021-10-24 12:39:25', NULL, '2021-10-24 12:39:25', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1573, '', 0, 0, 'yudao-user-server', 'GET', '/api/wx/mp/get-jsapi-ticket', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Apache-HttpClient/4.5.13 (Java/11.0.11)', '2021-10-24 12:39:28', '2021-10-24 12:39:28', 8, 0, '', NULL, '2021-10-24 12:39:28', NULL, '2021-10-24 12:39:28', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1574, '', 0, 0, 'yudao-user-server', 'GET', '/api/pay/order/index', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 21:55:32', '2021-10-24 21:55:32', 66, 0, '', NULL, '2021-10-24 21:55:32', NULL, '2021-10-24 21:55:32', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1575, '', 0, 0, 'yudao-user-server', 'GET', '/api/demo/pay.html', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:00:40', '2021-10-24 22:00:40', 39, 0, '', NULL, '2021-10-24 22:00:40', NULL, '2021-10-24 22:00:40', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1576, '', 0, 0, 'yudao-user-server', 'GET', '/api/demo/pay.html', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:00:42', '2021-10-24 22:00:42', 11, 0, '', NULL, '2021-10-24 22:00:42', NULL, '2021-10-24 22:00:42', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1577, '', 0, 0, 'yudao-user-server', 'GET', '/api/demo/pay.html', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:00:42', '2021-10-24 22:00:42', 8, 0, '', NULL, '2021-10-24 22:00:42', NULL, '2021-10-24 22:00:42', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1578, '', 0, 0, 'yudao-user-server', 'GET', '/api/demo/pay', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:00:45', '2021-10-24 22:00:45', 7, 0, '', NULL, '2021-10-24 22:00:45', NULL, '2021-10-24 22:00:45', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1579, '', 0, 0, 'yudao-user-server', 'GET', '/api/demo/pay', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:01:01', '2021-10-24 22:01:01', 5, 0, '', NULL, '2021-10-24 22:01:01', NULL, '2021-10-24 22:01:01', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1580, '', 0, 0, 'yudao-user-server', 'GET', '/api/demo/pay', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:01:07', '2021-10-24 22:01:07', 5, 0, '', NULL, '2021-10-24 22:01:07', NULL, '2021-10-24 22:01:07', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1581, '', 0, 0, 'yudao-user-server', 'GET', '/api/demo/pay', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:01:08', '2021-10-24 22:01:08', 5, 0, '', NULL, '2021-10-24 22:01:08', NULL, '2021-10-24 22:01:08', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1582, '', 0, 0, 'yudao-user-server', 'GET', '/api/demo/pay', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:01:22', '2021-10-24 22:01:22', 4, 0, '', NULL, '2021-10-24 22:01:22', NULL, '2021-10-24 22:01:22', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1583, '', 0, 0, 'yudao-user-server', 'GET', '/api/demo/pay', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:01:22', '2021-10-24 22:01:22', 4, 0, '', NULL, '2021-10-24 22:01:22', NULL, '2021-10-24 22:01:22', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1584, '', 0, 0, 'yudao-user-server', 'GET', '/api/demo/pay', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:01:34', '2021-10-24 22:01:34', 3, 0, '', NULL, '2021-10-24 22:01:34', NULL, '2021-10-24 22:01:34', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1585, '', 0, 0, 'yudao-user-server', 'GET', '/api/demo/pay', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:01:34', '2021-10-24 22:01:34', 3, 0, '', NULL, '2021-10-24 22:01:34', NULL, '2021-10-24 22:01:34', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1586, '', 0, 0, 'yudao-user-server', 'GET', '/api/demo/pay', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:01:35', '2021-10-24 22:01:35', 4, 0, '', NULL, '2021-10-24 22:01:35', NULL, '2021-10-24 22:01:35', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1587, '', 0, 0, 'yudao-user-server', 'GET', '/api/demo/pay', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:01:35', '2021-10-24 22:01:35', 4, 0, '', NULL, '2021-10-24 22:01:35', NULL, '2021-10-24 22:01:35', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1588, '', 0, 0, 'yudao-user-server', 'GET', '/api/demo/pay', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:01:53', '2021-10-24 22:01:53', 3, 0, '', NULL, '2021-10-24 22:01:53', NULL, '2021-10-24 22:01:53', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1589, '', 0, 0, 'yudao-user-server', 'GET', '/api/wx/mp/get-jsapi-ticket', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Apache-HttpClient/4.5.13 (Java/11.0.11)', '2021-10-24 22:02:43', '2021-10-24 22:02:44', 904, 0, '', NULL, '2021-10-24 22:02:44', NULL, '2021-10-24 22:02:44', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1590, '', 0, 0, 'yudao-user-server', 'GET', '/api/', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:02:55', '2021-10-24 22:02:55', 4, 0, '', NULL, '2021-10-24 22:02:55', NULL, '2021-10-24 22:02:55', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1591, '', 0, 0, 'yudao-user-server', 'GET', '/api/', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:03:39', '2021-10-24 22:03:39', 58, 0, '', NULL, '2021-10-24 22:03:39', NULL, '2021-10-24 22:03:39', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1592, '', 0, 0, 'yudao-user-server', 'GET', '/api/demo/pay', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:03:44', '2021-10-24 22:03:44', 7, 0, '', NULL, '2021-10-24 22:03:44', NULL, '2021-10-24 22:03:44', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1593, '', 0, 0, 'yudao-user-server', 'GET', '/api/demo/pay', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:03:45', '2021-10-24 22:03:45', 6, 0, '', NULL, '2021-10-24 22:03:45', NULL, '2021-10-24 22:03:45', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1594, '', 0, 0, 'yudao-user-server', 'GET', '/api/demo/pay', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:03:52', '2021-10-24 22:03:52', 6, 0, '', NULL, '2021-10-24 22:03:52', NULL, '2021-10-24 22:03:52', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1595, '', 0, 0, 'yudao-user-server', 'GET', '/api/demo/pay', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:05:52', '2021-10-24 22:05:54', 2094, 0, '', NULL, '2021-10-24 22:05:54', NULL, '2021-10-24 22:05:54', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1596, '', 0, 0, 'yudao-user-server', 'GET', '/api/demo/pay', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:06:34', '2021-10-24 22:06:35', 203, 0, '', NULL, '2021-10-24 22:06:35', NULL, '2021-10-24 22:06:35', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1597, '', 0, 0, 'yudao-user-server', 'GET', '/api/demo/pay', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:06:54', '2021-10-24 22:06:54', 9, 0, '', NULL, '2021-10-24 22:06:54', NULL, '2021-10-24 22:06:54', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1598, '', 0, 0, 'yudao-user-server', 'GET', '/api/demo/pay', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:06:55', '2021-10-24 22:06:55', 6, 0, '', NULL, '2021-10-24 22:06:55', NULL, '2021-10-24 22:06:55', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1599, '', 0, 0, 'yudao-user-server', 'GET', '/api/demo/pay', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:06:57', '2021-10-24 22:06:57', 5, 0, '', NULL, '2021-10-24 22:06:57', NULL, '2021-10-24 22:06:57', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1600, '', 0, 0, 'yudao-user-server', 'GET', '/api/demo/pay', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:06:58', '2021-10-24 22:06:58', 4, 0, '', NULL, '2021-10-24 22:06:58', NULL, '2021-10-24 22:06:58', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1601, '', 0, 0, 'yudao-user-server', 'GET', '/api/demo/pay', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:07:20', '2021-10-24 22:07:20', 26, 0, '', NULL, '2021-10-24 22:07:20', NULL, '2021-10-24 22:07:20', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1602, '', 0, 0, 'yudao-user-server', 'GET', '/api/demo/pay', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:07:21', '2021-10-24 22:07:21', 7, 0, '', NULL, '2021-10-24 22:07:21', NULL, '2021-10-24 22:07:21', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1603, '', 0, 0, 'yudao-user-server', 'GET', '/api/wx/mp//get-jsapi-ticket', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:23:54', '2021-10-24 22:23:54', 6, 500, 'RequestRejectedException: The request was rejected because the URL contained a potentially malicious String \"//\"', NULL, '2021-10-24 22:23:54', NULL, '2021-10-24 22:23:54', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1604, '', 0, 0, 'yudao-user-server', 'GET', '/api/wx/mp//get-jsapi-ticket', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:24:07', '2021-10-24 22:24:07', 0, 500, 'RequestRejectedException: The request was rejected because the URL contained a potentially malicious String \"//\"', NULL, '2021-10-24 22:24:07', NULL, '2021-10-24 22:24:07', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1605, '', 0, 0, 'yudao-user-server', 'GET', '/api/wx/mp//get-jsapi-ticket', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:24:27', '2021-10-24 22:24:27', 0, 500, 'RequestRejectedException: The request was rejected because the URL contained a potentially malicious String \"//\"', NULL, '2021-10-24 22:24:27', NULL, '2021-10-24 22:24:27', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1606, '', 0, 0, 'yudao-user-server', 'GET', '/api/wx/mp/get-jsapi-ticket', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:24:47', '2021-10-24 22:24:47', 71, 0, '', NULL, '2021-10-24 22:24:47', NULL, '2021-10-24 22:24:47', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1607, '', 0, 0, 'yudao-user-server', 'GET', '/api/wx/mp/get-jsapi-ticket', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:25:54', '2021-10-24 22:25:54', 9, 0, '', NULL, '2021-10-24 22:25:54', NULL, '2021-10-24 22:25:54', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1608, '', 0, 0, 'yudao-user-server', 'GET', '/api/wx/mp/get-jsapi-ticket', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:32:58', '2021-10-24 22:32:58', 6, 0, '', NULL, '2021-10-24 22:32:58', NULL, '2021-10-24 22:32:58', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1609, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/get-jsapi-ticket', '{\"query\":{\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:44:14', '2021-10-24 22:44:14', 15, 0, '', NULL, '2021-10-24 22:44:14', NULL, '2021-10-24 22:44:14', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1610, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:44:52', '2021-10-24 22:44:53', 186, 0, '', NULL, '2021-10-24 22:44:53', NULL, '2021-10-24 22:44:53', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1611, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:45:32', '2021-10-24 22:45:32', 8, 0, '', NULL, '2021-10-24 22:45:32', NULL, '2021-10-24 22:45:32', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1612, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:47:48', '2021-10-24 22:47:48', 6, 0, '', NULL, '2021-10-24 22:47:48', NULL, '2021-10-24 22:47:48', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1613, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:48:00', '2021-10-24 22:48:00', 7, 0, '', NULL, '2021-10-24 22:48:00', NULL, '2021-10-24 22:48:00', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1614, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:48:04', '2021-10-24 22:48:04', 8, 0, '', NULL, '2021-10-24 22:48:04', NULL, '2021-10-24 22:48:04', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1615, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:48:06', '2021-10-24 22:48:06', 7, 0, '', NULL, '2021-10-24 22:48:06', NULL, '2021-10-24 22:48:06', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1616, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:48:18', '2021-10-24 22:48:18', 17, 0, '', NULL, '2021-10-24 22:48:18', NULL, '2021-10-24 22:48:18', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1617, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:48:22', '2021-10-24 22:48:22', 8, 0, '', NULL, '2021-10-24 22:48:22', NULL, '2021-10-24 22:48:22', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1618, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:50:13', '2021-10-24 22:50:13', 7, 0, '', NULL, '2021-10-24 22:50:13', NULL, '2021-10-24 22:50:13', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1619, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:50:14', '2021-10-24 22:50:14', 9, 0, '', NULL, '2021-10-24 22:50:14', NULL, '2021-10-24 22:50:14', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1620, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:50:15', '2021-10-24 22:50:15', 6, 0, '', NULL, '2021-10-24 22:50:15', NULL, '2021-10-24 22:50:15', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1621, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:50:16', '2021-10-24 22:50:16', 7, 0, '', NULL, '2021-10-24 22:50:16', NULL, '2021-10-24 22:50:16', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1622, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:50:16', '2021-10-24 22:50:16', 7, 0, '', NULL, '2021-10-24 22:50:16', NULL, '2021-10-24 22:50:16', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1623, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:50:16', '2021-10-24 22:50:16', 6, 0, '', NULL, '2021-10-24 22:50:16', NULL, '2021-10-24 22:50:16', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1624, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:50:16', '2021-10-24 22:50:16', 8, 0, '', NULL, '2021-10-24 22:50:16', NULL, '2021-10-24 22:50:16', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1625, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:50:17', '2021-10-24 22:50:17', 10, 0, '', NULL, '2021-10-24 22:50:17', NULL, '2021-10-24 22:50:17', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1626, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:50:17', '2021-10-24 22:50:18', 8, 0, '', NULL, '2021-10-24 22:50:18', NULL, '2021-10-24 22:50:18', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1627, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 22:53:23', '2021-10-24 22:53:23', 8, 0, '', NULL, '2021-10-24 22:53:23', NULL, '2021-10-24 22:53:23', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1628, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=ib9jd3p9ptgc8fglr7ern2ten4\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:53:32', '2021-10-24 22:53:32', 7, 0, '', NULL, '2021-10-24 22:53:32', NULL, '2021-10-24 22:53:32', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1629, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=ib9jd3p9ptgc8fglr7ern2ten4\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:53:38', '2021-10-24 22:53:38', 8, 0, '', NULL, '2021-10-24 22:53:38', NULL, '2021-10-24 22:53:38', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1630, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=ib9jd3p9ptgc8fglr7ern2ten4\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:53:44', '2021-10-24 22:53:44', 7, 0, '', NULL, '2021-10-24 22:53:44', NULL, '2021-10-24 22:53:44', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1631, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=ib9jd3p9ptgc8fglr7ern2ten4\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:53:51', '2021-10-24 22:53:51', 8, 0, '', NULL, '2021-10-24 22:53:51', NULL, '2021-10-24 22:53:51', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1632, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=ib9jd3p9ptgc8fglr7ern2ten4\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:53:52', '2021-10-24 22:53:52', 6, 0, '', NULL, '2021-10-24 22:53:52', NULL, '2021-10-24 22:53:52', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1633, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=ib9jd3p9ptgc8fglr7ern2ten4\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:54:15', '2021-10-24 22:54:15', 7, 0, '', NULL, '2021-10-24 22:54:15', NULL, '2021-10-24 22:54:15', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1634, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 22:54:33', '2021-10-24 22:54:33', 14, 0, '', NULL, '2021-10-24 22:54:33', NULL, '2021-10-24 22:54:33', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1635, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=ib9jd3p9ptgc8fglr7ern2ten4\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:54:33', '2021-10-24 22:54:33', 8, 0, '', NULL, '2021-10-24 22:54:33', NULL, '2021-10-24 22:54:33', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1636, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 22:54:40', '2021-10-24 22:54:40', 9, 0, '', NULL, '2021-10-24 22:54:40', NULL, '2021-10-24 22:54:40', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1637, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=ib9jd3p9ptgc8fglr7ern2ten4\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:54:41', '2021-10-24 22:54:41', 10, 0, '', NULL, '2021-10-24 22:54:41', NULL, '2021-10-24 22:54:41', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1638, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=ib9jd3p9ptgc8fglr7ern2ten4\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:54:42', '2021-10-24 22:54:42', 7, 0, '', NULL, '2021-10-24 22:54:42', NULL, '2021-10-24 22:54:42', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1639, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://127.0.0.1:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:58:43', '2021-10-24 22:58:43', 102, 0, '', NULL, '2021-10-24 22:58:43', NULL, '2021-10-24 22:58:43', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1640, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://127.0.0.1:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:58:44', '2021-10-24 22:58:44', 10, 0, '', NULL, '2021-10-24 22:58:44', NULL, '2021-10-24 22:58:44', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1641, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://127.0.0.1:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 Language/zh_CN webview/16350053756452272 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 22:58:54', '2021-10-24 22:58:54', 9, 0, '', NULL, '2021-10-24 22:58:54', NULL, '2021-10-24 22:58:54', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1642, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://127.0.0.1:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 Language/zh_CN webview/16350053756452272 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 22:58:59', '2021-10-24 22:58:59', 9, 0, '', NULL, '2021-10-24 22:58:59', NULL, '2021-10-24 22:58:59', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1643, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://127.0.0.1:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.1 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350053756452272 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 22:59:09', '2021-10-24 22:59:09', 9, 0, '', NULL, '2021-10-24 22:59:09', NULL, '2021-10-24 22:59:09', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1644, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 23:01:24', '2021-10-24 23:01:24', 12, 0, '', NULL, '2021-10-24 23:01:24', NULL, '2021-10-24 23:01:24', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1645, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 23:01:25', '2021-10-24 23:01:25', 10, 0, '', NULL, '2021-10-24 23:01:25', NULL, '2021-10-24 23:01:25', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1646, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.1 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350053756452272 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:01:33', '2021-10-24 23:01:33', 8, 0, '', NULL, '2021-10-24 23:01:33', NULL, '2021-10-24 23:01:33', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1647, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.1 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350053756452272 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:01:35', '2021-10-24 23:01:35', 10, 0, '', NULL, '2021-10-24 23:01:35', NULL, '2021-10-24 23:01:35', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1648, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/605.1.15 (KHTML, like Gecko) MicroMessenger/6.5.2.501 MiniProgramEnv/Mac MiniProgram wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 Language/zh_CN webview/16350053756452272 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:01:45', '2021-10-24 23:01:45', 9, 0, '', NULL, '2021-10-24 23:01:45', NULL, '2021-10-24 23:01:45', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1649, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/605.1.15 (KHTML, like Gecko) MicroMessenger/6.5.2.501 MiniProgramEnv/Mac MiniProgram wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 Language/zh_CN webview/16350053756452272 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:01:54', '2021-10-24 23:01:55', 14, 0, '', NULL, '2021-10-24 23:01:55', NULL, '2021-10-24 23:01:55', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1650, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350053756452272 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:02:00', '2021-10-24 23:02:00', 10, 0, '', NULL, '2021-10-24 23:02:00', NULL, '2021-10-24 23:02:00', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1651, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350053756452272 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:02:03', '2021-10-24 23:02:03', 9, 0, '', NULL, '2021-10-24 23:02:03', NULL, '2021-10-24 23:02:03', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1652, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350053756452272 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:08:23', '2021-10-24 23:08:23', 10, 0, '', NULL, '2021-10-24 23:08:23', NULL, '2021-10-24 23:08:23', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1653, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:09:42', '2021-10-24 23:09:42', 11, 0, '', NULL, '2021-10-24 23:09:42', NULL, '2021-10-24 23:09:42', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1654, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=ib9jd3p9ptgc8fglr7ern2ten4\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 23:09:42', '2021-10-24 23:09:42', 9, 0, '', NULL, '2021-10-24 23:09:42', NULL, '2021-10-24 23:09:42', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1655, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:11:02', '2021-10-24 23:11:02', 10, 0, '', NULL, '2021-10-24 23:11:02', NULL, '2021-10-24 23:11:02', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1656, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=ib9jd3p9ptgc8fglr7ern2ten4\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 23:11:03', '2021-10-24 23:11:03', 12, 0, '', NULL, '2021-10-24 23:11:03', NULL, '2021-10-24 23:11:03', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1657, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:12:05', '2021-10-24 23:12:05', 11, 0, '', NULL, '2021-10-24 23:12:05', NULL, '2021-10-24 23:12:05', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1658, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=ib9jd3p9ptgc8fglr7ern2ten4\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 23:12:06', '2021-10-24 23:12:06', 8, 0, '', NULL, '2021-10-24 23:12:06', NULL, '2021-10-24 23:12:06', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1659, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:12:17', '2021-10-24 23:12:17', 10, 0, '', NULL, '2021-10-24 23:12:17', NULL, '2021-10-24 23:12:17', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1660, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=ib9jd3p9ptgc8fglr7ern2ten4\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 23:12:18', '2021-10-24 23:12:18', 8, 0, '', NULL, '2021-10-24 23:12:18', NULL, '2021-10-24 23:12:18', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1661, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:13:08', '2021-10-24 23:13:08', 8, 0, '', NULL, '2021-10-24 23:13:08', NULL, '2021-10-24 23:13:08', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1662, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=ib9jd3p9ptgc8fglr7ern2ten4\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 23:13:08', '2021-10-24 23:13:08', 9, 0, '', NULL, '2021-10-24 23:13:08', NULL, '2021-10-24 23:13:08', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1663, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350053756452272 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:13:09', '2021-10-24 23:13:09', 9, 0, '', NULL, '2021-10-24 23:13:09', NULL, '2021-10-24 23:13:09', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1664, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:13:45', '2021-10-24 23:13:45', 16, 0, '', NULL, '2021-10-24 23:13:45', NULL, '2021-10-24 23:13:45', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1665, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=ib9jd3p9ptgc8fglr7ern2ten4\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 23:13:45', '2021-10-24 23:13:45', 9, 0, '', NULL, '2021-10-24 23:13:45', NULL, '2021-10-24 23:13:45', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1666, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350053756452272 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:13:45', '2021-10-24 23:13:45', 14, 0, '', NULL, '2021-10-24 23:13:45', NULL, '2021-10-24 23:13:45', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1667, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:14:38', '2021-10-24 23:14:38', 10, 0, '', NULL, '2021-10-24 23:14:38', NULL, '2021-10-24 23:14:38', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1668, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=ib9jd3p9ptgc8fglr7ern2ten4\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 23:14:38', '2021-10-24 23:14:38', 6, 0, '', NULL, '2021-10-24 23:14:38', NULL, '2021-10-24 23:14:38', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1669, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:17:01', '2021-10-24 23:17:01', 26, 0, '', NULL, '2021-10-24 23:17:01', NULL, '2021-10-24 23:17:01', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1670, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:17:01', '2021-10-24 23:17:01', 55, 400, '请求参数不正确', NULL, '2021-10-24 23:17:01', NULL, '2021-10-24 23:17:01', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1671, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 23:17:01', '2021-10-24 23:17:01', 8, 400, '请求参数不正确', NULL, '2021-10-24 23:17:01', NULL, '2021-10-24 23:17:01', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1672, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=ib9jd3p9ptgc8fglr7ern2ten4\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 23:17:01', '2021-10-24 23:17:01', 15, 0, '', NULL, '2021-10-24 23:17:01', NULL, '2021-10-24 23:17:01', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1673, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350886293937392 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:17:10', '2021-10-24 23:17:10', 6, 0, '', NULL, '2021-10-24 23:17:10', NULL, '2021-10-24 23:17:10', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1674, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350886293937392 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:17:18', '2021-10-24 23:17:18', 8, 0, '', NULL, '2021-10-24 23:17:18', NULL, '2021-10-24 23:17:18', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1675, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350886293937392 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:17:20', '2021-10-24 23:17:20', 7, 0, '', NULL, '2021-10-24 23:17:20', NULL, '2021-10-24 23:17:20', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1676, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350886293937392 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:17:22', '2021-10-24 23:17:22', 8, 0, '', NULL, '2021-10-24 23:17:22', NULL, '2021-10-24 23:17:22', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1677, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350886293937392 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:17:55', '2021-10-24 23:17:55', 65, 400, '请求参数不正确', NULL, '2021-10-24 23:17:55', NULL, '2021-10-24 23:17:55', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1678, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350886293937392 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:17:55', '2021-10-24 23:17:55', 123, 0, '', NULL, '2021-10-24 23:17:55', NULL, '2021-10-24 23:17:55', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1679, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350886293937392 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:17:59', '2021-10-24 23:17:59', 8, 400, '请求参数不正确', NULL, '2021-10-24 23:17:59', NULL, '2021-10-24 23:17:59', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1680, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350886293937392 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:17:59', '2021-10-24 23:17:59', 14, 0, '', NULL, '2021-10-24 23:17:59', NULL, '2021-10-24 23:17:59', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1681, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350886293937392 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:18:10', '2021-10-24 23:18:10', 12, 0, '', NULL, '2021-10-24 23:18:10', NULL, '2021-10-24 23:18:10', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1682, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350886293937392 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:18:10', '2021-10-24 23:18:10', 6, 400, '请求参数不正确', NULL, '2021-10-24 23:18:10', NULL, '2021-10-24 23:18:10', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1683, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350886293937392 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:18:48', '2021-10-24 23:18:52', 3525, 0, '', NULL, '2021-10-24 23:18:52', NULL, '2021-10-24 23:18:52', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1684, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350886293937392 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:18:48', '2021-10-24 23:19:02', 14069, 400, '请求参数不正确', NULL, '2021-10-24 23:19:02', NULL, '2021-10-24 23:19:02', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1685, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:19:56', '2021-10-24 23:19:58', 2565, 0, '', NULL, '2021-10-24 23:19:58', NULL, '2021-10-24 23:19:58', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1686, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:19:56', '2021-10-24 23:19:58', 2576, 0, '', NULL, '2021-10-24 23:19:58', NULL, '2021-10-24 23:19:58', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1687, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:20:29', '2021-10-24 23:20:29', 9, 0, '', NULL, '2021-10-24 23:20:29', NULL, '2021-10-24 23:20:29', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1688, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:20:29', '2021-10-24 23:20:29', 32, 0, '', NULL, '2021-10-24 23:20:29', NULL, '2021-10-24 23:20:29', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1689, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:22:14', '2021-10-24 23:22:14', 13, 0, '', NULL, '2021-10-24 23:22:14', NULL, '2021-10-24 23:22:14', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1690, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:22:14', '2021-10-24 23:22:14', 48, 0, '', NULL, '2021-10-24 23:22:14', NULL, '2021-10-24 23:22:14', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1691, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:22:17', '2021-10-24 23:22:17', 10, 0, '', NULL, '2021-10-24 23:22:17', NULL, '2021-10-24 23:22:17', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1692, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:22:17', '2021-10-24 23:22:17', 30, 0, '', NULL, '2021-10-24 23:22:17', NULL, '2021-10-24 23:22:17', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1693, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:22:24', '2021-10-24 23:22:24', 12, 0, '', NULL, '2021-10-24 23:22:24', NULL, '2021-10-24 23:22:24', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1694, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:22:24', '2021-10-24 23:22:24', 36, 0, '', NULL, '2021-10-24 23:22:24', NULL, '2021-10-24 23:22:24', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1695, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:22:56', '2021-10-24 23:22:56', 10, 0, '', NULL, '2021-10-24 23:22:56', NULL, '2021-10-24 23:22:56', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1696, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:22:56', '2021-10-24 23:22:56', 31, 0, '', NULL, '2021-10-24 23:22:56', NULL, '2021-10-24 23:22:56', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1697, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:23:00', '2021-10-24 23:23:00', 14, 0, '', NULL, '2021-10-24 23:23:00', NULL, '2021-10-24 23:23:00', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1698, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:23:00', '2021-10-24 23:23:00', 38, 0, '', NULL, '2021-10-24 23:23:00', NULL, '2021-10-24 23:23:00', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1699, '', 0, 0, 'yudao-user-server', 'POST', '/api//pay/order/submit', '{\"query\":{\"id\":\"17\",\"channelCode\":\"wx_pub\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:23:02', '2021-10-24 23:23:02', 2, 500, 'RequestRejectedException: The request was rejected because the URL contained a potentially malicious String \"//\"', NULL, '2021-10-24 23:23:02', NULL, '2021-10-24 23:23:02', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1700, '', 0, 0, 'yudao-user-server', 'POST', '/api//pay/order/submit', '{\"query\":{\"id\":\"17\",\"channelCode\":\"wx_pub\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:23:12', '2021-10-24 23:23:12', 1, 500, 'RequestRejectedException: The request was rejected because the URL contained a potentially malicious String \"//\"', NULL, '2021-10-24 23:23:12', NULL, '2021-10-24 23:23:12', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1701, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:23:43', '2021-10-24 23:23:43', 12, 0, '', NULL, '2021-10-24 23:23:43', NULL, '2021-10-24 23:23:43', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1702, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:23:43', '2021-10-24 23:23:43', 32, 0, '', NULL, '2021-10-24 23:23:43', NULL, '2021-10-24 23:23:43', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1703, '', 0, 0, 'yudao-user-server', 'POST', '/api//pay/order/submit', '{\"query\":{\"id\":\"17\",\"channelCode\":\"wx_pub\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:23:46', '2021-10-24 23:23:46', 0, 500, 'RequestRejectedException: The request was rejected because the URL contained a potentially malicious String \"//\"', NULL, '2021-10-24 23:23:46', NULL, '2021-10-24 23:23:46', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1704, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:23:49', '2021-10-24 23:23:49', 14, 0, '', NULL, '2021-10-24 23:23:49', NULL, '2021-10-24 23:23:49', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1705, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:23:49', '2021-10-24 23:23:49', 32, 0, '', NULL, '2021-10-24 23:23:49', NULL, '2021-10-24 23:23:49', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1706, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{\"id\":\"19\",\"channelCode\":\"wx_pub\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:23:54', '2021-10-24 23:23:54', 15, 500, '系统异常', NULL, '2021-10-24 23:23:54', NULL, '2021-10-24 23:23:54', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1707, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:25:25', '2021-10-24 23:25:25', 12, 0, '', NULL, '2021-10-24 23:25:25', NULL, '2021-10-24 23:25:25', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1708, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:25:25', '2021-10-24 23:25:25', 44, 0, '', NULL, '2021-10-24 23:25:25', NULL, '2021-10-24 23:25:25', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1709, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:25:34', '2021-10-24 23:25:34', 11, 0, '', NULL, '2021-10-24 23:25:34', NULL, '2021-10-24 23:25:34', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1710, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:25:34', '2021-10-24 23:25:34', 31, 0, '', NULL, '2021-10-24 23:25:34', NULL, '2021-10-24 23:25:34', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1711, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{\"id\":\"21\",\"channelCode\":\"wx_pub\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:25:37', '2021-10-24 23:25:37', 3, 500, '系统异常', NULL, '2021-10-24 23:25:37', NULL, '2021-10-24 23:25:37', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1712, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{\"id\":\"21\",\"channelCode\":\"wx_pub\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:25:48', '2021-10-24 23:25:48', 3, 500, '系统异常', NULL, '2021-10-24 23:25:48', NULL, '2021-10-24 23:25:48', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1713, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:26:00', '2021-10-24 23:26:00', 17, 0, '', NULL, '2021-10-24 23:26:00', NULL, '2021-10-24 23:26:00', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1714, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:26:00', '2021-10-24 23:26:00', 37, 0, '', NULL, '2021-10-24 23:26:00', NULL, '2021-10-24 23:26:00', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1715, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"id=22&channelCode=wx_pub\"}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:26:03', '2021-10-24 23:26:03', 11, 500, '系统异常', NULL, '2021-10-24 23:26:03', NULL, '2021-10-24 23:26:03', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1716, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:26:11', '2021-10-24 23:26:11', 9, 0, '', NULL, '2021-10-24 23:26:11', NULL, '2021-10-24 23:26:11', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1717, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:26:11', '2021-10-24 23:26:11', 29, 0, '', NULL, '2021-10-24 23:26:11', NULL, '2021-10-24 23:26:11', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1718, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:26:11', '2021-10-24 23:26:11', 16, 0, '', NULL, '2021-10-24 23:26:11', NULL, '2021-10-24 23:26:11', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1719, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:26:11', '2021-10-24 23:26:11', 39, 0, '', NULL, '2021-10-24 23:26:11', NULL, '2021-10-24 23:26:11', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1720, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:26:18', '2021-10-24 23:26:18', 17, 0, '', NULL, '2021-10-24 23:26:18', NULL, '2021-10-24 23:26:18', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1721, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:26:18', '2021-10-24 23:26:18', 42, 0, '', NULL, '2021-10-24 23:26:18', NULL, '2021-10-24 23:26:18', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1722, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:26:20', '2021-10-24 23:26:20', 12, 0, '', NULL, '2021-10-24 23:26:20', NULL, '2021-10-24 23:26:20', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1723, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:26:20', '2021-10-24 23:26:20', 38, 0, '', NULL, '2021-10-24 23:26:20', NULL, '2021-10-24 23:26:20', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1724, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:26:49', '2021-10-24 23:26:49', 8, 0, '', NULL, '2021-10-24 23:26:49', NULL, '2021-10-24 23:26:49', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1725, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:26:49', '2021-10-24 23:26:49', 29, 0, '', NULL, '2021-10-24 23:26:49', NULL, '2021-10-24 23:26:49', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1726, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:26:58', '2021-10-24 23:26:58', 11, 0, '', NULL, '2021-10-24 23:26:58', NULL, '2021-10-24 23:26:58', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1727, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:26:58', '2021-10-24 23:26:58', 32, 0, '', NULL, '2021-10-24 23:26:58', NULL, '2021-10-24 23:26:58', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1728, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{\"id\":\"28\",\"channelCode\":\"wx_pub\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:27:00', '2021-10-24 23:27:00', 4, 500, '系统异常', NULL, '2021-10-24 23:27:00', NULL, '2021-10-24 23:27:00', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1729, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:27:02', '2021-10-24 23:27:02', 14, 0, '', NULL, '2021-10-24 23:27:02', NULL, '2021-10-24 23:27:02', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1730, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:27:02', '2021-10-24 23:27:02', 32, 0, '', NULL, '2021-10-24 23:27:02', NULL, '2021-10-24 23:27:02', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1731, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{\"id\":\"29\",\"channelCode\":\"wx_pub\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:27:05', '2021-10-24 23:27:05', 3, 500, '系统异常', NULL, '2021-10-24 23:27:05', NULL, '2021-10-24 23:27:05', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1732, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:27:47', '2021-10-24 23:27:47', 142, 0, '', NULL, '2021-10-24 23:27:47', NULL, '2021-10-24 23:27:47', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1733, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:27:47', '2021-10-24 23:27:47', 129, 0, '', NULL, '2021-10-24 23:27:47', NULL, '2021-10-24 23:27:47', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1734, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:27:49', '2021-10-24 23:27:49', 14, 0, '', NULL, '2021-10-24 23:27:49', NULL, '2021-10-24 23:27:49', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1735, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:27:49', '2021-10-24 23:27:49', 67, 0, '', NULL, '2021-10-24 23:27:49', NULL, '2021-10-24 23:27:49', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1736, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{\"id\":\"31\",\"channelCode\":\"wx_pub\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:27:50', '2021-10-24 23:27:50', 15, 500, '系统异常', NULL, '2021-10-24 23:27:50', NULL, '2021-10-24 23:27:50', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1737, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:28:30', '2021-10-24 23:28:30', 8, 0, '', NULL, '2021-10-24 23:28:30', NULL, '2021-10-24 23:28:30', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1738, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:28:30', '2021-10-24 23:28:30', 35, 0, '', NULL, '2021-10-24 23:28:30', NULL, '2021-10-24 23:28:30', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1739, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:28:34', '2021-10-24 23:28:34', 23, 0, '', NULL, '2021-10-24 23:28:34', NULL, '2021-10-24 23:28:34', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1740, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:28:34', '2021-10-24 23:28:34', 41, 0, '', NULL, '2021-10-24 23:28:34', NULL, '2021-10-24 23:28:34', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1741, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"id=33&channelCode=wx_pub\"}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:28:36', '2021-10-24 23:28:36', 10, 500, '系统异常', NULL, '2021-10-24 23:28:36', NULL, '2021-10-24 23:28:36', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1742, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:28:46', '2021-10-24 23:28:46', 10, 0, '', NULL, '2021-10-24 23:28:46', NULL, '2021-10-24 23:28:46', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1743, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:28:46', '2021-10-24 23:28:46', 33, 0, '', NULL, '2021-10-24 23:28:46', NULL, '2021-10-24 23:28:46', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1744, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"id=34&channelCode=wx_pub\"}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:28:47', '2021-10-24 23:28:47', 4, 500, '系统异常', NULL, '2021-10-24 23:28:47', NULL, '2021-10-24 23:28:47', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1745, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:30:13', '2021-10-24 23:30:13', 10, 0, '', NULL, '2021-10-24 23:30:13', NULL, '2021-10-24 23:30:13', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1746, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:30:13', '2021-10-24 23:30:13', 39, 0, '', NULL, '2021-10-24 23:30:13', NULL, '2021-10-24 23:30:13', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1747, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:30:23', '2021-10-24 23:30:23', 12, 0, '', NULL, '2021-10-24 23:30:24', NULL, '2021-10-24 23:30:24', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1748, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:30:23', '2021-10-24 23:30:24', 34, 0, '', NULL, '2021-10-24 23:30:24', NULL, '2021-10-24 23:30:24', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1749, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:30:44', '2021-10-24 23:30:44', 15, 0, '', NULL, '2021-10-24 23:30:44', NULL, '2021-10-24 23:30:44', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1750, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:30:44', '2021-10-24 23:30:44', 38, 0, '', NULL, '2021-10-24 23:30:44', NULL, '2021-10-24 23:30:44', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1751, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:30:48', '2021-10-24 23:30:48', 19, 0, '', NULL, '2021-10-24 23:30:48', NULL, '2021-10-24 23:30:48', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1752, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:30:48', '2021-10-24 23:30:48', 46, 0, '', NULL, '2021-10-24 23:30:48', NULL, '2021-10-24 23:30:48', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1753, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{\"{\\\"id\\\":38,\\\"channelCode\\\":\\\"wx_pub\\\"}\":\"\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:30:50', '2021-10-24 23:30:50', 4, 500, '系统异常', NULL, '2021-10-24 23:30:50', NULL, '2021-10-24 23:30:50', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1754, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:32:37', '2021-10-24 23:32:37', 10, 0, '', NULL, '2021-10-24 23:32:37', NULL, '2021-10-24 23:32:37', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1755, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:32:37', '2021-10-24 23:32:37', 42, 0, '', NULL, '2021-10-24 23:32:37', NULL, '2021-10-24 23:32:37', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1756, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:32:41', '2021-10-24 23:32:41', 15, 0, '', NULL, '2021-10-24 23:32:41', NULL, '2021-10-24 23:32:41', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1757, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:32:41', '2021-10-24 23:32:41', 45, 0, '', NULL, '2021-10-24 23:32:41', NULL, '2021-10-24 23:32:41', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1758, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:32:44', '2021-10-24 23:32:44', 10, 0, '', NULL, '2021-10-24 23:32:44', NULL, '2021-10-24 23:32:44', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1759, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:32:44', '2021-10-24 23:32:44', 30, 0, '', NULL, '2021-10-24 23:32:44', NULL, '2021-10-24 23:32:44', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1760, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":41,\\\"channelCode\\\":\\\"wx_pub\\\"}\"}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:32:45', '2021-10-24 23:32:45', 626, 0, '', NULL, '2021-10-24 23:32:45', NULL, '2021-10-24 23:32:45', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1761, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:32:56', '2021-10-24 23:32:56', 13, 0, '', NULL, '2021-10-24 23:32:56', NULL, '2021-10-24 23:32:56', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1762, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:32:56', '2021-10-24 23:32:56', 30, 0, '', NULL, '2021-10-24 23:32:56', NULL, '2021-10-24 23:32:56', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1763, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":42,\\\"channelCode\\\":\\\"wx_pub\\\"}\"}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:33:03', '2021-10-24 23:33:03', 343, 0, '', NULL, '2021-10-24 23:33:03', NULL, '2021-10-24 23:33:03', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1764, '', 0, 0, 'yudao-user-server', 'GET', '/api/pay/order/submit', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 23:33:14', '2021-10-24 23:33:14', 4, 405, '请求方法不正确:Request method \'GET\' not supported', NULL, '2021-10-24 23:33:14', NULL, '2021-10-24 23:33:14', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1765, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":42,\\\"channelCode\\\":\\\"wx_pub\\\"}\"}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:33:33', '2021-10-24 23:33:33', 349, 0, '', NULL, '2021-10-24 23:33:33', NULL, '2021-10-24 23:33:33', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1766, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 23:37:14', '2021-10-24 23:37:14', 134, 0, '', NULL, '2021-10-24 23:37:14', NULL, '2021-10-24 23:37:14', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1767, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 23:37:14', '2021-10-24 23:37:14', 153, 0, '', NULL, '2021-10-24 23:37:14', NULL, '2021-10-24 23:37:14', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1768, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:37:45', '2021-10-24 23:37:45', 12, 0, '', NULL, '2021-10-24 23:37:45', NULL, '2021-10-24 23:37:45', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1769, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:37:45', '2021-10-24 23:37:45', 35, 0, '', NULL, '2021-10-24 23:37:45', NULL, '2021-10-24 23:37:45', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1770, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":44,\\\"channelCode\\\":\\\"wx_pub\\\"}\"}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:37:47', '2021-10-24 23:37:48', 566, 0, '', NULL, '2021-10-24 23:37:48', NULL, '2021-10-24 23:37:48', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1771, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":44,\\\"channelCode\\\":\\\"wx_pub\\\"}\"}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:38:13', '2021-10-24 23:38:13', 302, 0, '', NULL, '2021-10-24 23:38:14', NULL, '2021-10-24 23:38:14', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1772, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:39:07', '2021-10-24 23:39:07', 7, 0, '', NULL, '2021-10-24 23:39:07', NULL, '2021-10-24 23:39:07', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1773, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:39:07', '2021-10-24 23:39:07', 30, 0, '', NULL, '2021-10-24 23:39:07', NULL, '2021-10-24 23:39:07', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1774, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:39:10', '2021-10-24 23:39:10', 10, 0, '', NULL, '2021-10-24 23:39:10', NULL, '2021-10-24 23:39:10', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1775, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:39:10', '2021-10-24 23:39:10', 31, 0, '', NULL, '2021-10-24 23:39:10', NULL, '2021-10-24 23:39:10', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1776, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":46,\\\"channelCode\\\":\\\"wx_pub\\\"}\"}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:39:12', '2021-10-24 23:39:13', 348, 0, '', NULL, '2021-10-24 23:39:13', NULL, '2021-10-24 23:39:13', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1777, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:39:38', '2021-10-24 23:39:38', 9, 0, '', NULL, '2021-10-24 23:39:38', NULL, '2021-10-24 23:39:38', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1778, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:39:38', '2021-10-24 23:39:38', 30, 0, '', NULL, '2021-10-24 23:39:38', NULL, '2021-10-24 23:39:38', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1779, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:39:38', '2021-10-24 23:39:38', 8, 0, '', NULL, '2021-10-24 23:39:38', NULL, '2021-10-24 23:39:38', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1780, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:39:38', '2021-10-24 23:39:38', 31, 0, '', NULL, '2021-10-24 23:39:38', NULL, '2021-10-24 23:39:38', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1781, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:39:43', '2021-10-24 23:39:43', 9, 0, '', NULL, '2021-10-24 23:39:43', NULL, '2021-10-24 23:39:43', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1782, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:39:43', '2021-10-24 23:39:43', 28, 0, '', NULL, '2021-10-24 23:39:43', NULL, '2021-10-24 23:39:43', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1783, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":49,\\\"channelCode\\\":\\\"wx_pub\\\"}\"}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:39:45', '2021-10-24 23:39:45', 308, 0, '', NULL, '2021-10-24 23:39:45', NULL, '2021-10-24 23:39:45', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1784, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:41:24', '2021-10-24 23:41:24', 10, 0, '', NULL, '2021-10-24 23:41:24', NULL, '2021-10-24 23:41:24', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1785, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:41:24', '2021-10-24 23:41:25', 34, 0, '', NULL, '2021-10-24 23:41:25', NULL, '2021-10-24 23:41:25', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1786, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:42:19', '2021-10-24 23:42:19', 8, 0, '', NULL, '2021-10-24 23:42:19', NULL, '2021-10-24 23:42:19', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1787, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:42:19', '2021-10-24 23:42:19', 26, 0, '', NULL, '2021-10-24 23:42:19', NULL, '2021-10-24 23:42:19', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1788, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:42:33', '2021-10-24 23:42:33', 8, 0, '', NULL, '2021-10-24 23:42:33', NULL, '2021-10-24 23:42:33', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1789, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:42:33', '2021-10-24 23:42:33', 26, 0, '', NULL, '2021-10-24 23:42:33', NULL, '2021-10-24 23:42:33', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1790, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:42:39', '2021-10-24 23:42:39', 8, 0, '', NULL, '2021-10-24 23:42:39', NULL, '2021-10-24 23:42:39', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1791, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:42:39', '2021-10-24 23:42:39', 45, 0, '', NULL, '2021-10-24 23:42:39', NULL, '2021-10-24 23:42:39', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1792, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":53,\\\"channelCode\\\":\\\"wx_pub\\\"}\"}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:42:41', '2021-10-24 23:42:42', 508, 0, '', NULL, '2021-10-24 23:42:42', NULL, '2021-10-24 23:42:42', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1793, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/605.1.15 (KHTML, like Gecko) MicroMessenger/6.8.0(0x16080000) MacWechat/3.2.1(0x13020111) NetType/WIFI WindowsWechat', '2021-10-24 23:44:26', '2021-10-24 23:44:26', 8, 0, '', NULL, '2021-10-24 23:44:26', NULL, '2021-10-24 23:44:26', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1794, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/605.1.15 (KHTML, like Gecko) MicroMessenger/6.8.0(0x16080000) MacWechat/3.2.1(0x13020111) NetType/WIFI WindowsWechat', '2021-10-24 23:44:26', '2021-10-24 23:44:26', 25, 0, '', NULL, '2021-10-24 23:44:26', NULL, '2021-10-24 23:44:26', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1795, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":54,\\\"channelCode\\\":\\\"wx_pub\\\"}\"}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/605.1.15 (KHTML, like Gecko) MicroMessenger/6.8.0(0x16080000) MacWechat/3.2.1(0x13020111) NetType/WIFI WindowsWechat', '2021-10-24 23:44:28', '2021-10-24 23:44:28', 288, 0, '', NULL, '2021-10-24 23:44:28', NULL, '2021-10-24 23:44:28', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1796, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":54,\\\"channelCode\\\":\\\"wx_pub\\\"}\"}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/605.1.15 (KHTML, like Gecko) MicroMessenger/6.8.0(0x16080000) MacWechat/3.2.1(0x13020111) NetType/WIFI WindowsWechat', '2021-10-24 23:44:28', '2021-10-24 23:44:29', 307, 0, '', NULL, '2021-10-24 23:44:29', NULL, '2021-10-24 23:44:29', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1797, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":54,\\\"channelCode\\\":\\\"wx_pub\\\"}\"}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/605.1.15 (KHTML, like Gecko) MicroMessenger/6.8.0(0x16080000) MacWechat/3.2.1(0x13020111) NetType/WIFI WindowsWechat', '2021-10-24 23:44:29', '2021-10-24 23:44:30', 270, 0, '', NULL, '2021-10-24 23:44:30', NULL, '2021-10-24 23:44:30', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1798, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":54,\\\"channelCode\\\":\\\"wx_pub\\\"}\"}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/605.1.15 (KHTML, like Gecko) MicroMessenger/6.8.0(0x16080000) MacWechat/3.2.1(0x13020111) NetType/WIFI WindowsWechat', '2021-10-24 23:44:30', '2021-10-24 23:44:30', 298, 0, '', NULL, '2021-10-24 23:44:30', NULL, '2021-10-24 23:44:30', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1799, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":54,\\\"channelCode\\\":\\\"wx_pub\\\"}\"}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/605.1.15 (KHTML, like Gecko) MicroMessenger/6.8.0(0x16080000) MacWechat/3.2.1(0x13020111) NetType/WIFI WindowsWechat', '2021-10-24 23:44:30', '2021-10-24 23:44:30', 261, 0, '', NULL, '2021-10-24 23:44:30', NULL, '2021-10-24 23:44:30', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1800, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":54,\\\"channelCode\\\":\\\"wx_pub\\\"}\"}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/605.1.15 (KHTML, like Gecko) MicroMessenger/6.8.0(0x16080000) MacWechat/3.2.1(0x13020111) NetType/WIFI WindowsWechat', '2021-10-24 23:44:30', '2021-10-24 23:44:30', 259, 0, '', NULL, '2021-10-24 23:44:30', NULL, '2021-10-24 23:44:30', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1801, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":54,\\\"channelCode\\\":\\\"wx_pub\\\"}\"}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/605.1.15 (KHTML, like Gecko) MicroMessenger/6.8.0(0x16080000) MacWechat/3.2.1(0x13020111) NetType/WIFI WindowsWechat', '2021-10-24 23:44:30', '2021-10-24 23:44:31', 308, 0, '', NULL, '2021-10-24 23:44:31', NULL, '2021-10-24 23:44:31', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1802, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":54,\\\"channelCode\\\":\\\"wx_pub\\\"}\"}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/605.1.15 (KHTML, like Gecko) MicroMessenger/6.8.0(0x16080000) MacWechat/3.2.1(0x13020111) NetType/WIFI WindowsWechat', '2021-10-24 23:44:30', '2021-10-24 23:44:31', 242, 0, '', NULL, '2021-10-24 23:44:31', NULL, '2021-10-24 23:44:31', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1803, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":54,\\\"channelCode\\\":\\\"wx_pub\\\"}\"}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/605.1.15 (KHTML, like Gecko) MicroMessenger/6.8.0(0x16080000) MacWechat/3.2.1(0x13020111) NetType/WIFI WindowsWechat', '2021-10-24 23:44:31', '2021-10-24 23:44:31', 274, 0, '', NULL, '2021-10-24 23:44:31', NULL, '2021-10-24 23:44:31', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1804, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:44:45', '2021-10-24 23:44:45', 9, 0, '', NULL, '2021-10-24 23:44:45', NULL, '2021-10-24 23:44:45', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1805, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:44:45', '2021-10-24 23:44:45', 124, 0, '', NULL, '2021-10-24 23:44:45', NULL, '2021-10-24 23:44:45', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1806, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/605.1.15 (KHTML, like Gecko) MicroMessenger/6.8.0(0x16080000) MacWechat/3.2.1(0x13020111) NetType/WIFI WindowsWechat', '2021-10-24 23:44:47', '2021-10-24 23:44:47', 9, 0, '', NULL, '2021-10-24 23:44:47', NULL, '2021-10-24 23:44:47', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1807, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/605.1.15 (KHTML, like Gecko) MicroMessenger/6.8.0(0x16080000) MacWechat/3.2.1(0x13020111) NetType/WIFI WindowsWechat', '2021-10-24 23:44:47', '2021-10-24 23:44:47', 25, 0, '', NULL, '2021-10-24 23:44:47', NULL, '2021-10-24 23:44:47', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1808, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":56,\\\"channelCode\\\":\\\"wx_pub\\\"}\"}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/605.1.15 (KHTML, like Gecko) MicroMessenger/6.8.0(0x16080000) MacWechat/3.2.1(0x13020111) NetType/WIFI WindowsWechat', '2021-10-24 23:44:49', '2021-10-24 23:44:49', 251, 0, '', NULL, '2021-10-24 23:44:49', NULL, '2021-10-24 23:44:49', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1809, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":56,\\\"channelCode\\\":\\\"wx_pub\\\"}\"}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/605.1.15 (KHTML, like Gecko) MicroMessenger/6.8.0(0x16080000) MacWechat/3.2.1(0x13020111) NetType/WIFI WindowsWechat', '2021-10-24 23:44:54', '2021-10-24 23:44:54', 211, 0, '', NULL, '2021-10-24 23:44:54', NULL, '2021-10-24 23:44:54', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1810, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:45:59', '2021-10-24 23:45:59', 9, 0, '', NULL, '2021-10-24 23:45:59', NULL, '2021-10-24 23:45:59', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1811, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:45:59', '2021-10-24 23:45:59', 35, 0, '', NULL, '2021-10-24 23:45:59', NULL, '2021-10-24 23:45:59', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1812, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:46:06', '2021-10-24 23:46:06', 10, 0, '', NULL, '2021-10-24 23:46:06', NULL, '2021-10-24 23:46:06', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1813, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:46:06', '2021-10-24 23:46:06', 28, 0, '', NULL, '2021-10-24 23:46:06', NULL, '2021-10-24 23:46:06', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1814, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":58,\\\"channelCode\\\":\\\"wx_pub\\\"}\"}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:46:07', '2021-10-24 23:46:08', 459, 0, '', NULL, '2021-10-24 23:46:08', NULL, '2021-10-24 23:46:08', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1815, '', 0, 0, 'yudao-user-server', 'GET', '/api/MP_verify_DKOvVzFP7vPwwHx2.txt', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-25 08:31:12', '2021-10-25 08:31:12', 22, 0, '', NULL, '2021-10-25 08:31:12', NULL, '2021-10-25 08:31:12', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1816, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-25 08:38:17', '2021-10-25 08:38:17', 133, 0, '', NULL, '2021-10-25 08:38:17', NULL, '2021-10-25 08:38:17', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1817, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-25 08:38:17', '2021-10-25 08:38:18', 648, 500, '系统异常', NULL, '2021-10-25 08:38:18', NULL, '2021-10-25 08:38:18', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1818, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-25 08:38:41', '2021-10-25 08:38:41', 85, 500, '系统异常', NULL, '2021-10-25 08:38:41', NULL, '2021-10-25 08:38:41', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1819, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-25 08:38:50', '2021-10-25 08:38:50', 22, 0, '', NULL, '2021-10-25 08:38:50', NULL, '2021-10-25 08:38:50', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1820, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-25 08:39:19', '2021-10-25 08:39:19', 26, 0, '', NULL, '2021-10-25 08:39:19', NULL, '2021-10-25 08:39:19', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1821, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-25 08:39:19', '2021-10-25 08:39:28', 9146, 500, '系统异常', NULL, '2021-10-25 08:39:28', NULL, '2021-10-25 08:39:28', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1822, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-25 08:40:47', '2021-10-25 08:40:47', 27, 0, '', NULL, '2021-10-25 08:40:47', NULL, '2021-10-25 08:40:47', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1823, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-25 08:40:47', '2021-10-25 08:40:47', 890, 0, '', NULL, '2021-10-25 08:40:47', NULL, '2021-10-25 08:40:47', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1824, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-25 08:41:27', '2021-10-25 08:41:27', 9, 0, '', NULL, '2021-10-25 08:41:27', NULL, '2021-10-25 08:41:27', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1825, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-25 08:41:27', '2021-10-25 08:41:27', 25, 0, '', NULL, '2021-10-25 08:41:27', NULL, '2021-10-25 08:41:27', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1826, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-25 08:41:31', '2021-10-25 08:41:31', 9, 0, '', NULL, '2021-10-25 08:41:31', NULL, '2021-10-25 08:41:31', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1827, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-25 08:41:31', '2021-10-25 08:41:31', 21, 0, '', NULL, '2021-10-25 08:41:31', NULL, '2021-10-25 08:41:31', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1828, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-25 08:41:48', '2021-10-25 08:41:48', 7, 0, '', NULL, '2021-10-25 08:41:48', NULL, '2021-10-25 08:41:48', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1829, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-25 08:41:48', '2021-10-25 08:41:48', 24, 0, '', NULL, '2021-10-25 08:41:48', NULL, '2021-10-25 08:41:48', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1830, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":65,\\\"channelCode\\\":\\\"wx_pub\\\"}\"}', '101.82.138.223', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-25 08:41:52', '2021-10-25 08:41:53', 683, 0, '', NULL, '2021-10-25 08:41:53', NULL, '2021-10-25 08:41:53', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1831, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 08:42:18', '2021-10-25 08:42:18', 20, 0, '', NULL, '2021-10-25 08:42:18', NULL, '2021-10-25 08:42:18', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1832, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 08:42:18', '2021-10-25 08:42:18', 6, 0, '', NULL, '2021-10-25 08:42:18', NULL, '2021-10-25 08:42:18', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1833, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":66,\\\"channelCode\\\":\\\"wx_pub\\\"}\"}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 08:42:19', '2021-10-25 08:42:19', 452, 0, '', NULL, '2021-10-25 08:42:19', NULL, '2021-10-25 08:42:19', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1834, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":66,\\\"channelCode\\\":\\\"wx_pub\\\"}\"}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 08:42:24', '2021-10-25 08:42:25', 729, 0, '', NULL, '2021-10-25 08:42:25', NULL, '2021-10-25 08:42:25', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1835, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-25 08:45:00', '2021-10-25 08:45:00', 10, 0, '', NULL, '2021-10-25 08:45:00', NULL, '2021-10-25 08:45:00', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1836, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-25 08:45:00', '2021-10-25 08:45:00', 49, 0, '', NULL, '2021-10-25 08:45:00', NULL, '2021-10-25 08:45:00', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1837, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-25 08:45:39', '2021-10-25 08:45:39', 8, 0, '', NULL, '2021-10-25 08:45:39', NULL, '2021-10-25 08:45:39', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1838, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-25 08:45:39', '2021-10-25 08:45:39', 27, 0, '', NULL, '2021-10-25 08:45:39', NULL, '2021-10-25 08:45:39', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1839, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-25 08:45:44', '2021-10-25 08:45:44', 7, 0, '', NULL, '2021-10-25 08:45:44', NULL, '2021-10-25 08:45:44', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1840, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-25 08:45:44', '2021-10-25 08:45:44', 21, 0, '', NULL, '2021-10-25 08:45:44', NULL, '2021-10-25 08:45:44', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1841, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":69,\\\"channelCode\\\":\\\"wx_pub\\\"}\"}', '101.82.138.223', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-25 08:45:46', '2021-10-25 08:45:46', 681, 0, '', NULL, '2021-10-25 08:45:46', NULL, '2021-10-25 08:45:46', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1842, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":69,\\\"channelCode\\\":\\\"wx_pub\\\"}\"}', '101.82.138.223', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-25 08:45:47', '2021-10-25 08:45:49', 1459, 0, '', NULL, '2021-10-25 08:45:49', NULL, '2021-10-25 08:45:49', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1843, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-25 08:47:08', '2021-10-25 08:47:08', 22, 0, '', NULL, '2021-10-25 08:47:08', NULL, '2021-10-25 08:47:08', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1844, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-25 08:47:08', '2021-10-25 08:47:08', 7, 0, '', NULL, '2021-10-25 08:47:08', NULL, '2021-10-25 08:47:08', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1845, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-25 08:47:47', '2021-10-25 08:47:47', 19, 0, '', NULL, '2021-10-25 08:47:47', NULL, '2021-10-25 08:47:47', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1846, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-25 08:47:49', '2021-10-25 08:47:49', 7, 0, '', NULL, '2021-10-25 08:47:49', NULL, '2021-10-25 08:47:49', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1847, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-25 08:47:50', '2021-10-25 08:47:50', 6, 0, '', NULL, '2021-10-25 08:47:50', NULL, '2021-10-25 08:47:50', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1848, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-25 08:47:50', '2021-10-25 08:47:50', 17, 0, '', NULL, '2021-10-25 08:47:50', NULL, '2021-10-25 08:47:50', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1849, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-25 08:48:04', '2021-10-25 08:48:04', 9, 0, '', NULL, '2021-10-25 08:48:04', NULL, '2021-10-25 08:48:04', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1850, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-25 08:48:04', '2021-10-25 08:48:04', 23, 0, '', NULL, '2021-10-25 08:48:04', NULL, '2021-10-25 08:48:04', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1851, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-25 08:48:05', '2021-10-25 08:48:05', 7, 0, '', NULL, '2021-10-25 08:48:05', NULL, '2021-10-25 08:48:05', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1852, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-25 08:48:05', '2021-10-25 08:48:05', 21, 0, '', NULL, '2021-10-25 08:48:05', NULL, '2021-10-25 08:48:05', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1853, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-25 08:48:06', '2021-10-25 08:48:06', 6, 0, '', NULL, '2021-10-25 08:48:06', NULL, '2021-10-25 08:48:06', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1854, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-25 08:48:06', '2021-10-25 08:48:06', 20, 0, '', NULL, '2021-10-25 08:48:06', NULL, '2021-10-25 08:48:06', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1855, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-25 08:48:38', '2021-10-25 08:48:38', 6, 0, '', NULL, '2021-10-25 08:48:38', NULL, '2021-10-25 08:48:38', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1856, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-25 08:48:38', '2021-10-25 08:48:38', 24, 0, '', NULL, '2021-10-25 08:48:38', NULL, '2021-10-25 08:48:38', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1857, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 08:50:30', '2021-10-25 08:50:30', 21, 0, '', NULL, '2021-10-25 08:50:30', NULL, '2021-10-25 08:50:30', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1858, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 08:50:31', '2021-10-25 08:50:31', 6, 0, '', NULL, '2021-10-25 08:50:31', NULL, '2021-10-25 08:50:31', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1859, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":77,\\\"channelCode\\\":\\\"wx_pub\\\"}\"}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 08:50:31', '2021-10-25 08:51:04', 32995, 0, '', NULL, '2021-10-25 08:51:04', NULL, '2021-10-25 08:51:04', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1860, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-25 08:51:08', '2021-10-25 08:51:08', 6, 0, '', NULL, '2021-10-25 08:51:08', NULL, '2021-10-25 08:51:08', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1861, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-25 08:51:08', '2021-10-25 08:51:08', 19, 0, '', NULL, '2021-10-25 08:51:08', NULL, '2021-10-25 08:51:08', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1862, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 08:51:14', '2021-10-25 08:51:14', 6, 0, '', NULL, '2021-10-25 08:51:14', NULL, '2021-10-25 08:51:14', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1863, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 08:51:14', '2021-10-25 08:51:14', 18, 0, '', NULL, '2021-10-25 08:51:14', NULL, '2021-10-25 08:51:14', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1864, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":79,\\\"channelCode\\\":\\\"wx_pub\\\"}\"}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 08:51:14', '2021-10-25 08:51:19', 4428, 0, '', NULL, '2021-10-25 08:51:19', NULL, '2021-10-25 08:51:19', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1865, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":79,\\\"channelCode\\\":\\\"wx_pub\\\"}\"}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 08:53:07', '2021-10-25 08:53:08', 446, 0, '', NULL, '2021-10-25 08:53:08', NULL, '2021-10-25 08:53:08', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1866, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 08:53:15', '2021-10-25 08:53:15', 7, 0, '', NULL, '2021-10-25 08:53:15', NULL, '2021-10-25 08:53:15', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1867, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 08:53:15', '2021-10-25 08:53:15', 18, 0, '', NULL, '2021-10-25 08:53:15', NULL, '2021-10-25 08:53:15', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1868, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":80,\\\"channelCode\\\":\\\"wx_pub\\\"}\"}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 08:53:15', '2021-10-25 08:53:16', 399, 0, '', NULL, '2021-10-25 08:53:16', NULL, '2021-10-25 08:53:16', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1869, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-25 09:01:32', '2021-10-25 09:01:32', 26, 0, '', NULL, '2021-10-25 09:01:32', NULL, '2021-10-25 09:01:32', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1870, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-25 09:01:32', '2021-10-25 09:01:32', 6, 0, '', NULL, '2021-10-25 09:01:32', NULL, '2021-10-25 09:01:32', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1871, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-25 09:03:27', '2021-10-25 09:03:27', 7, 0, '', NULL, '2021-10-25 09:03:27', NULL, '2021-10-25 09:03:27', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1872, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-25 09:03:27', '2021-10-25 09:03:27', 18, 0, '', NULL, '2021-10-25 09:03:27', NULL, '2021-10-25 09:03:27', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1873, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-25 09:05:48', '2021-10-25 09:05:48', 7, 0, '', NULL, '2021-10-25 09:05:48', NULL, '2021-10-25 09:05:48', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1874, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-25 09:05:48', '2021-10-25 09:05:48', 20, 0, '', NULL, '2021-10-25 09:05:48', NULL, '2021-10-25 09:05:48', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1875, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-25 09:06:02', '2021-10-25 09:06:02', 5, 0, '', NULL, '2021-10-25 09:06:02', NULL, '2021-10-25 09:06:02', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1876, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-25 09:06:02', '2021-10-25 09:06:02', 17, 0, '', NULL, '2021-10-25 09:06:02', NULL, '2021-10-25 09:06:02', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1877, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-25 09:08:56', '2021-10-25 09:08:56', 8, 0, '', NULL, '2021-10-25 09:08:56', NULL, '2021-10-25 09:08:56', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1878, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-25 09:08:56', '2021-10-25 09:08:56', 30, 0, '', NULL, '2021-10-25 09:08:56', NULL, '2021-10-25 09:08:56', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1879, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-25 09:12:54', '2021-10-25 09:12:54', 93, 0, '', NULL, '2021-10-25 09:12:54', NULL, '2021-10-25 09:12:54', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1880, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-25 09:12:54', '2021-10-25 09:12:54', 104, 0, '', NULL, '2021-10-25 09:12:54', NULL, '2021-10-25 09:12:54', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1881, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 09:13:12', '2021-10-25 09:13:12', 7, 0, '', NULL, '2021-10-25 09:13:12', NULL, '2021-10-25 09:13:12', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1882, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 09:13:12', '2021-10-25 09:13:12', 22, 0, '', NULL, '2021-10-25 09:13:12', NULL, '2021-10-25 09:13:12', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1883, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":87,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 09:13:13', '2021-10-25 09:13:13', 86, 2002000999, 'IllegalArgumentException: 支付请求的 openid 不能为空!', NULL, '2021-10-25 09:13:13', NULL, '2021-10-25 09:13:13', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1884, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":87,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 09:13:22', '2021-10-25 09:13:23', 33, 2002000999, 'IllegalArgumentException: 支付请求的 openid 不能为空!', NULL, '2021-10-25 09:13:23', NULL, '2021-10-25 09:13:23', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1885, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":87,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 09:14:06', '2021-10-25 09:14:06', 165, 2002000999, 'IllegalArgumentException: 支付请求的 openid 不能为空!', NULL, '2021-10-25 09:14:06', NULL, '2021-10-25 09:14:06', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1886, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":87,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 09:14:24', '2021-10-25 09:14:51', 26325, 2002000999, 'IllegalArgumentException: 支付请求的 openid 不能为空!', NULL, '2021-10-25 09:14:51', NULL, '2021-10-25 09:14:51', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1887, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":87,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 09:14:53', '2021-10-25 09:15:38', 44820, 2002000999, 'IllegalArgumentException: 支付请求的 openid 不能为空!', NULL, '2021-10-25 09:15:38', NULL, '2021-10-25 09:15:38', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1888, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":87,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 09:16:52', '2021-10-25 09:16:57', 5794, 0, '', NULL, '2021-10-25 09:16:57', NULL, '2021-10-25 09:16:57', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1889, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify_wx', '{\"query\":{},\"body\":null}', '127.0.0.1', 'PostmanRuntime/6.4.1', '2021-10-25 09:28:07', '2021-10-25 09:28:07', 44, 500, '系统异常', NULL, '2021-10-25 09:28:07', NULL, '2021-10-25 09:28:07', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1890, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify_wx', '{\"query\":{},\"body\":\"{\\n}\"}', '127.0.0.1', 'PostmanRuntime/6.4.1', '2021-10-25 09:28:27', '2021-10-25 09:28:29', 1921, 0, '', NULL, '2021-10-25 09:28:29', NULL, '2021-10-25 09:28:29', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1891, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify_wx', '{\"query\":{},\"body\":\"{\\n}\"}', '101.82.138.223', 'PostmanRuntime/6.4.1', '2021-10-25 09:29:18', '2021-10-25 09:29:20', 2009, 0, '', NULL, '2021-10-25 09:29:20', NULL, '2021-10-25 09:29:20', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1892, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":87,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 09:31:53', '2021-10-25 09:31:55', 1374, 2002000000, '未知错误,需要解析', NULL, '2021-10-25 09:31:55', NULL, '2021-10-25 09:31:55', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1893, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 09:32:00', '2021-10-25 09:32:00', 53, 0, '', NULL, '2021-10-25 09:32:00', NULL, '2021-10-25 09:32:00', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1894, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 09:32:00', '2021-10-25 09:32:00', 47, 0, '', NULL, '2021-10-25 09:32:00', NULL, '2021-10-25 09:32:00', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1895, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":88,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 09:32:01', '2021-10-25 09:32:02', 829, 0, '', NULL, '2021-10-25 09:32:02', NULL, '2021-10-25 09:32:02', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1896, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify_wx', '{\"query\":{},\"body\":null}', '121.51.58.175', 'Mozilla/4.0', '2021-10-25 09:32:10', '2021-10-25 09:32:15', 4661, 0, '', NULL, '2021-10-25 09:32:15', NULL, '2021-10-25 09:32:15', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1897, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify_wx', '{\"query\":{},\"body\":null}', '121.51.58.170', 'Mozilla/4.0', '2021-10-25 09:32:15', '2021-10-25 09:32:16', 970, 0, '', NULL, '2021-10-25 09:32:16', NULL, '2021-10-25 09:32:16', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1898, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 09:54:07', '2021-10-25 09:54:07', 103, 0, '', NULL, '2021-10-25 09:54:07', NULL, '2021-10-25 09:54:07', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1899, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 09:54:07', '2021-10-25 09:54:07', 63, 0, '', NULL, '2021-10-25 09:54:07', NULL, '2021-10-25 09:54:07', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1900, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":89,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 09:54:08', '2021-10-25 09:54:12', 4084, 0, '', NULL, '2021-10-25 09:54:12', NULL, '2021-10-25 09:54:12', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1901, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":89,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 09:54:45', '2021-10-25 09:55:02', 16587, 2002000000, '未知错误,需要解析', NULL, '2021-10-25 09:55:02', NULL, '2021-10-25 09:55:02', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1902, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":89,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 09:55:08', '2021-10-25 09:55:21', 13246, 2002000000, '未知错误,需要解析', NULL, '2021-10-25 09:55:21', NULL, '2021-10-25 09:55:21', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1903, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":89,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 09:55:24', '2021-10-25 09:55:31', 7369, 2002000000, '未知错误,需要解析', NULL, '2021-10-25 09:55:31', NULL, '2021-10-25 09:55:31', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1904, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":89,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 09:55:30', '2021-10-25 09:55:31', 1089, 2002000000, '未知错误,需要解析', NULL, '2021-10-25 09:55:31', NULL, '2021-10-25 09:55:31', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1905, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 09:55:33', '2021-10-25 09:55:33', 8, 0, '', NULL, '2021-10-25 09:55:33', NULL, '2021-10-25 09:55:33', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1906, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 09:55:33', '2021-10-25 09:55:33', 21, 0, '', NULL, '2021-10-25 09:55:33', NULL, '2021-10-25 09:55:33', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1907, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":90,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 09:55:35', '2021-10-25 09:55:35', 394, 0, '', NULL, '2021-10-25 09:55:35', NULL, '2021-10-25 09:55:35', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1908, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub', '{\"query\":{},\"body\":null}', '121.51.58.175', 'Mozilla/4.0', '2021-10-25 09:55:41', '2021-10-25 09:55:43', 2013, 0, '', NULL, '2021-10-25 09:55:43', NULL, '2021-10-25 09:55:43', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1909, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub', '{\"query\":{},\"body\":null}', '121.51.58.175', 'Mozilla/4.0', '2021-10-25 09:55:46', '2021-10-25 09:55:54', 8156, 0, '', NULL, '2021-10-25 09:55:54', NULL, '2021-10-25 09:55:54', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1910, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub', '{\"query\":{},\"body\":null}', '121.51.58.175', 'Mozilla/4.0', '2021-10-25 09:55:57', '2021-10-25 09:55:57', 2, 0, '', NULL, '2021-10-25 09:55:57', NULL, '2021-10-25 09:55:57', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1911, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 10:03:48', '2021-10-25 10:03:48', 80, 0, '', NULL, '2021-10-25 10:03:48', NULL, '2021-10-25 10:03:48', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1912, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 10:03:49', '2021-10-25 10:03:49', 69, 0, '', NULL, '2021-10-25 10:03:49', NULL, '2021-10-25 10:03:49', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1913, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":91,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 10:03:49', '2021-10-25 10:03:53', 4224, 0, '', NULL, '2021-10-25 10:03:53', NULL, '2021-10-25 10:03:53', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1914, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.175', 'Mozilla/4.0', '2021-10-25 10:03:59', '2021-10-25 10:04:03', 3815, 0, '', NULL, '2021-10-25 10:04:03', NULL, '2021-10-25 10:04:03', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1915, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.168', 'Mozilla/4.0', '2021-10-25 10:04:04', '2021-10-25 10:04:04', 458, 0, '', NULL, '2021-10-25 10:04:04', NULL, '2021-10-25 10:04:04', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1916, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:20:45', '2021-10-26 09:20:46', 111, 0, '', NULL, '2021-10-26 09:20:46', NULL, '2021-10-26 09:20:46', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1917, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:20:45', '2021-10-26 09:20:46', 555, 500, '系统异常', NULL, '2021-10-26 09:20:46', NULL, '2021-10-26 09:20:46', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1918, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":92,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:20:58', '2021-10-26 09:20:59', 656, 0, '', NULL, '2021-10-26 09:20:59', NULL, '2021-10-26 09:20:59', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1919, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:21:10', '2021-10-26 09:21:10', 27, 0, '', NULL, '2021-10-26 09:21:10', NULL, '2021-10-26 09:21:10', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1920, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:21:10', '2021-10-26 09:21:33', 22624, 500, '系统异常', NULL, '2021-10-26 09:21:33', NULL, '2021-10-26 09:21:33', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1921, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:22:48', '2021-10-26 09:22:48', 24, 0, '', NULL, '2021-10-26 09:22:48', NULL, '2021-10-26 09:22:48', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1922, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:22:48', '2021-10-26 09:22:49', 611, 0, '', NULL, '2021-10-26 09:22:49', NULL, '2021-10-26 09:22:49', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1923, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":94,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:22:57', '2021-10-26 09:22:58', 700, 0, '', NULL, '2021-10-26 09:22:58', NULL, '2021-10-26 09:22:58', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1924, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.168', 'Mozilla/4.0', '2021-10-26 09:23:04', '2021-10-26 09:23:08', 4082, 0, '', NULL, '2021-10-26 09:23:08', NULL, '2021-10-26 09:23:08', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1925, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.168', 'Mozilla/4.0', '2021-10-26 09:23:09', '2021-10-26 09:23:12', 3057, 0, '', NULL, '2021-10-26 09:23:12', NULL, '2021-10-26 09:23:12', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1926, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:24:49', '2021-10-26 09:24:49', 80, 0, '', NULL, '2021-10-26 09:24:49', NULL, '2021-10-26 09:24:49', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1927, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:24:49', '2021-10-26 09:24:49', 70, 0, '', NULL, '2021-10-26 09:24:49', NULL, '2021-10-26 09:24:49', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1928, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":95,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:24:51', '2021-10-26 09:24:52', 738, 0, '', NULL, '2021-10-26 09:24:52', NULL, '2021-10-26 09:24:52', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1929, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.175', 'Mozilla/4.0', '2021-10-26 09:24:58', '2021-10-26 09:24:58', 40, 1007001000, '支付渠道的配置不存在', NULL, '2021-10-26 09:24:58', NULL, '2021-10-26 09:24:58', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1930, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '140.207.54.75', 'Mozilla/4.0', '2021-10-26 09:25:07', '2021-10-26 09:25:07', 23, 1007001000, '支付渠道的配置不存在', NULL, '2021-10-26 09:25:07', NULL, '2021-10-26 09:25:07', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1931, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.170', 'Mozilla/4.0', '2021-10-26 09:24:59', '2021-10-26 09:25:12', 12909, 1007001000, '支付渠道的配置不存在', NULL, '2021-10-26 09:25:12', NULL, '2021-10-26 09:25:12', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1932, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.168', 'Mozilla/4.0', '2021-10-26 09:25:20', '2021-10-26 09:25:22', 2186, 1007001000, '支付渠道的配置不存在', NULL, '2021-10-26 09:25:22', NULL, '2021-10-26 09:25:22', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1933, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.170', 'Mozilla/4.0', '2021-10-26 09:25:15', '2021-10-26 09:26:16', 60349, 1007001000, '支付渠道的配置不存在', NULL, '2021-10-26 09:26:16', NULL, '2021-10-26 09:26:16', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1934, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '140.207.54.78', 'Mozilla/4.0', '2021-10-26 09:26:16', '2021-10-26 09:26:16', 31, 1007001000, '支付渠道的配置不存在', NULL, '2021-10-26 09:26:16', NULL, '2021-10-26 09:26:16', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1935, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.169', 'Mozilla/4.0', '2021-10-26 09:26:16', '2021-10-26 09:26:16', 42, 1007001000, '支付渠道的配置不存在', NULL, '2021-10-26 09:26:16', NULL, '2021-10-26 09:26:16', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1936, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.168', 'Mozilla/4.0', '2021-10-26 09:26:16', '2021-10-26 09:26:16', 41, 1007001000, '支付渠道的配置不存在', NULL, '2021-10-26 09:26:16', NULL, '2021-10-26 09:26:16', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1937, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.169', 'Mozilla/4.0', '2021-10-26 09:29:05', '2021-10-26 09:29:38', 32943, 500, '系统异常', NULL, '2021-10-26 09:29:38', NULL, '2021-10-26 09:29:38', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1938, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:30:46', '2021-10-26 09:30:46', 100, 0, '', NULL, '2021-10-26 09:30:46', NULL, '2021-10-26 09:30:46', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1939, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:30:46', '2021-10-26 09:30:46', 64, 0, '', NULL, '2021-10-26 09:30:46', NULL, '2021-10-26 09:30:46', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1940, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":96,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:30:47', '2021-10-26 09:30:48', 715, 0, '', NULL, '2021-10-26 09:30:48', NULL, '2021-10-26 09:30:48', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1941, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.168', 'Mozilla/4.0', '2021-10-26 09:30:53', '2021-10-26 09:33:21', 147170, 1007003000, '支付交易拓展单不存在', NULL, '2021-10-26 09:33:21', NULL, '2021-10-26 09:33:21', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1942, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '183.3.234.61', 'Mozilla/4.0', '2021-10-26 09:30:59', '2021-10-26 09:33:21', 141982, 1007003000, '支付交易拓展单不存在', NULL, '2021-10-26 09:33:21', NULL, '2021-10-26 09:33:21', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1943, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '140.207.54.76', 'Mozilla/4.0', '2021-10-26 09:33:21', '2021-10-26 09:33:21', 45, 1007003000, '支付交易拓展单不存在', NULL, '2021-10-26 09:33:21', NULL, '2021-10-26 09:33:21', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1944, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.30.171', 'Mozilla/4.0', '2021-10-26 09:33:21', '2021-10-26 09:33:21', 41, 1007003000, '支付交易拓展单不存在', NULL, '2021-10-26 09:33:21', NULL, '2021-10-26 09:33:21', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1945, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.170', 'Mozilla/4.0', '2021-10-26 09:33:21', '2021-10-26 09:33:21', 41, 1007003000, '支付交易拓展单不存在', NULL, '2021-10-26 09:33:21', NULL, '2021-10-26 09:33:21', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1946, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.175', 'Mozilla/4.0', '2021-10-26 09:33:21', '2021-10-26 09:33:21', 42, 1007003000, '支付交易拓展单不存在', NULL, '2021-10-26 09:33:21', NULL, '2021-10-26 09:33:21', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1947, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.170', 'Mozilla/4.0', '2021-10-26 09:33:21', '2021-10-26 09:33:21', 47, 1007003000, '支付交易拓展单不存在', NULL, '2021-10-26 09:33:21', NULL, '2021-10-26 09:33:21', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1948, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":96,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:34:09', '2021-10-26 09:34:10', 1027, 2002000000, '未知错误,需要解析', NULL, '2021-10-26 09:34:10', NULL, '2021-10-26 09:34:10', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1949, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:34:23', '2021-10-26 09:34:23', 46, 0, '', NULL, '2021-10-26 09:34:23', NULL, '2021-10-26 09:34:23', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1950, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:34:24', '2021-10-26 09:34:24', 51, 0, '', NULL, '2021-10-26 09:34:24', NULL, '2021-10-26 09:34:24', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1951, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":97,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:34:25', '2021-10-26 09:34:26', 496, 0, '', NULL, '2021-10-26 09:34:26', NULL, '2021-10-26 09:34:26', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1952, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.170', 'Mozilla/4.0', '2021-10-26 09:34:31', '2021-10-26 09:35:28', 57124, 1007003000, '支付交易拓展单不存在', NULL, '2021-10-26 09:35:28', NULL, '2021-10-26 09:35:28', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1953, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '58.251.80.53', 'Mozilla/4.0', '2021-10-26 09:35:28', '2021-10-26 09:35:30', 1492, 1007003000, '支付交易拓展单不存在', NULL, '2021-10-26 09:35:30', NULL, '2021-10-26 09:35:30', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1954, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.168', 'Mozilla/4.0', '2021-10-26 09:35:28', '2021-10-26 09:35:30', 1493, 1007003000, '支付交易拓展单不存在', NULL, '2021-10-26 09:35:30', NULL, '2021-10-26 09:35:30', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1955, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '140.207.54.75', 'Mozilla/4.0', '2021-10-26 09:35:28', '2021-10-26 09:35:30', 1490, 1007003000, '支付交易拓展单不存在', NULL, '2021-10-26 09:35:30', NULL, '2021-10-26 09:35:30', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1956, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '140.207.54.76', 'Mozilla/4.0', '2021-10-26 09:35:28', '2021-10-26 09:35:30', 1490, 1007003000, '支付交易拓展单不存在', NULL, '2021-10-26 09:35:30', NULL, '2021-10-26 09:35:30', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1957, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.175', 'Mozilla/4.0', '2021-10-26 09:35:28', '2021-10-26 09:35:30', 1509, 1007003000, '支付交易拓展单不存在', NULL, '2021-10-26 09:35:30', NULL, '2021-10-26 09:35:30', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1958, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.170', 'Mozilla/4.0', '2021-10-26 09:35:28', '2021-10-26 09:35:30', 1519, 1007003000, '支付交易拓展单不存在', NULL, '2021-10-26 09:35:30', NULL, '2021-10-26 09:35:30', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1959, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.168', 'Mozilla/4.0', '2021-10-26 09:35:28', '2021-10-26 09:38:07', 158950, 1007003000, '支付交易拓展单不存在', NULL, '2021-10-26 09:38:07', NULL, '2021-10-26 09:38:07', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1960, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.175', 'Mozilla/4.0', '2021-10-26 09:38:07', '2021-10-26 09:38:07', 34, 1007003000, '支付交易拓展单不存在', NULL, '2021-10-26 09:38:07', NULL, '2021-10-26 09:38:07', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1961, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '140.207.54.75', 'Mozilla/4.0', '2021-10-26 09:38:07', '2021-10-26 09:38:07', 33, 1007003000, '支付交易拓展单不存在', NULL, '2021-10-26 09:38:07', NULL, '2021-10-26 09:38:07', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1962, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:38:35', '2021-10-26 09:38:36', 102, 0, '', NULL, '2021-10-26 09:38:36', NULL, '2021-10-26 09:38:36', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1963, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:38:36', '2021-10-26 09:38:36', 61, 0, '', NULL, '2021-10-26 09:38:36', NULL, '2021-10-26 09:38:36', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1964, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.175', 'Mozilla/4.0', '2021-10-26 09:39:11', '2021-10-26 09:39:14', 3226, 1007003000, '支付交易拓展单不存在', NULL, '2021-10-26 09:39:14', NULL, '2021-10-26 09:39:14', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1965, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.175', 'Mozilla/4.0', '2021-10-26 09:38:37', '2021-10-26 09:39:14', 37716, 1007003000, '支付交易拓展单不存在', NULL, '2021-10-26 09:39:14', NULL, '2021-10-26 09:39:14', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1966, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '183.3.234.61', 'Mozilla/4.0', '2021-10-26 09:39:11', '2021-10-26 09:39:14', 3225, 1007003000, '支付交易拓展单不存在', NULL, '2021-10-26 09:39:14', NULL, '2021-10-26 09:39:14', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1967, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":98,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:38:37', '2021-10-26 09:39:15', 38297, 0, '', NULL, '2021-10-26 09:39:15', NULL, '2021-10-26 09:39:15', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1968, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.168', 'Mozilla/4.0', '2021-10-26 09:39:21', '2021-10-26 09:39:26', 5385, 1007003000, '支付交易拓展单不存在', NULL, '2021-10-26 09:39:26', NULL, '2021-10-26 09:39:26', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1969, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.175', 'Mozilla/4.0', '2021-10-26 09:39:25', '2021-10-26 09:39:27', 1323, 1007003000, '支付交易拓展单不存在', NULL, '2021-10-26 09:39:27', NULL, '2021-10-26 09:39:27', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1970, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '140.207.54.75', 'Mozilla/4.0', '2021-10-26 09:39:27', '2021-10-26 09:39:28', 870, 1007003000, '支付交易拓展单不存在', NULL, '2021-10-26 09:39:28', NULL, '2021-10-26 09:39:28', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1971, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '140.207.54.78', 'Mozilla/4.0', '2021-10-26 09:39:29', '2021-10-26 09:39:34', 4938, 1007003000, '支付交易拓展单不存在', NULL, '2021-10-26 09:39:34', NULL, '2021-10-26 09:39:34', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1972, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:39:36', '2021-10-26 09:39:36', 7, 0, '', NULL, '2021-10-26 09:39:36', NULL, '2021-10-26 09:39:36', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1973, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:39:36', '2021-10-26 09:39:36', 16, 0, '', NULL, '2021-10-26 09:39:36', NULL, '2021-10-26 09:39:36', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1974, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.169', 'Mozilla/4.0', '2021-10-26 09:40:22', '2021-10-26 09:40:25', 2298, 1007003000, '支付交易拓展单不存在', NULL, '2021-10-26 09:40:25', NULL, '2021-10-26 09:40:25', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1975, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.30.177', 'Mozilla/4.0', '2021-10-26 09:40:22', '2021-10-26 09:40:25', 2298, 1007003000, '支付交易拓展单不存在', NULL, '2021-10-26 09:40:25', NULL, '2021-10-26 09:40:25', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1976, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.30.173', 'Mozilla/4.0', '2021-10-26 09:40:22', '2021-10-26 09:40:25', 2309, 1007003000, '支付交易拓展单不存在', NULL, '2021-10-26 09:40:25', NULL, '2021-10-26 09:40:25', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1977, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.175', 'Mozilla/4.0', '2021-10-26 09:40:22', '2021-10-26 09:40:25', 2313, 1007003000, '支付交易拓展单不存在', NULL, '2021-10-26 09:40:25', NULL, '2021-10-26 09:40:25', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1978, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '58.251.80.46', 'Mozilla/4.0', '2021-10-26 09:40:25', '2021-10-26 09:40:25', 18, 1007003000, '支付交易拓展单不存在', NULL, '2021-10-26 09:40:25', NULL, '2021-10-26 09:40:25', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1979, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:41:02', '2021-10-26 09:41:02', 97, 0, '', NULL, '2021-10-26 09:41:02', NULL, '2021-10-26 09:41:02', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1980, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:41:02', '2021-10-26 09:41:02', 115, 0, '', NULL, '2021-10-26 09:41:02', NULL, '2021-10-26 09:41:02', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1981, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":100,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:41:05', '2021-10-26 09:41:10', 5425, 0, '', NULL, '2021-10-26 09:41:10', NULL, '2021-10-26 09:41:10', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1982, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":100,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:41:09', '2021-10-26 09:41:10', 769, 0, '', NULL, '2021-10-26 09:41:10', NULL, '2021-10-26 09:41:10', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1983, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.168', 'Mozilla/4.0', '2021-10-26 09:41:21', '2021-10-26 09:41:22', 1022, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-26 09:41:22', NULL, '2021-10-26 09:41:22', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1984, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '58.251.80.46', 'Mozilla/4.0', '2021-10-26 09:41:16', '2021-10-26 09:41:36', 20362, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-26 09:41:36', NULL, '2021-10-26 09:41:36', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1985, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.175', 'Mozilla/4.0', '2021-10-26 09:41:36', '2021-10-26 09:41:38', 1578, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-26 09:41:38', NULL, '2021-10-26 09:41:38', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1986, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '101.226.103.16', 'Mozilla/4.0', '2021-10-26 09:41:36', '2021-10-26 09:41:38', 1578, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-26 09:41:38', NULL, '2021-10-26 09:41:38', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1987, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '101.226.103.15', 'Mozilla/4.0', '2021-10-26 09:41:39', '2021-10-26 09:41:40', 1298, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-26 09:41:40', NULL, '2021-10-26 09:41:40', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1988, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.175', 'Mozilla/4.0', '2021-10-26 09:41:48', '2021-10-26 09:41:54', 5416, 0, '', NULL, '2021-10-26 09:41:54', NULL, '2021-10-26 09:41:54', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1989, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.175', 'Mozilla/4.0', '2021-10-26 09:41:55', '2021-10-26 09:41:56', 1336, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-26 09:41:56', NULL, '2021-10-26 09:41:56', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1990, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:42:04', '2021-10-26 09:42:04', 8, 0, '', NULL, '2021-10-26 09:42:04', NULL, '2021-10-26 09:42:04', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1991, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:42:04', '2021-10-26 09:42:04', 19, 0, '', NULL, '2021-10-26 09:42:04', NULL, '2021-10-26 09:42:04', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1992, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":101,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:42:05', '2021-10-26 09:42:06', 693, 0, '', NULL, '2021-10-26 09:42:06', NULL, '2021-10-26 09:42:06', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1993, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.170', 'Mozilla/4.0', '2021-10-26 09:42:20', '2021-10-26 09:42:20', 422, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-26 09:42:20', NULL, '2021-10-26 09:42:20', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1994, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.175', 'Mozilla/4.0', '2021-10-26 09:42:26', '2021-10-26 09:42:28', 2077, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-26 09:42:28', NULL, '2021-10-26 09:42:28', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1995, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '101.226.103.16', 'Mozilla/4.0', '2021-10-26 09:42:16', '2021-10-26 09:42:33', 17112, 0, '', NULL, '2021-10-26 09:42:33', NULL, '2021-10-26 09:42:33', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1996, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.168', 'Mozilla/4.0', '2021-10-26 09:42:22', '2021-10-26 09:42:33', 11064, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-26 09:42:33', NULL, '2021-10-26 09:42:33', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1997, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.175', 'Mozilla/4.0', '2021-10-26 09:42:33', '2021-10-26 09:42:35', 1727, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-26 09:42:35', NULL, '2021-10-26 09:42:35', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1998, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.175', 'Mozilla/4.0', '2021-10-26 09:42:38', '2021-10-26 09:42:38', 21, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-26 09:42:38', NULL, '2021-10-26 09:42:38', b'0'); -INSERT INTO `inf_api_access_log` VALUES (1999, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":101,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:42:40', '2021-10-26 09:42:40', 19, 1007002001, '支付订单不处于待支付', NULL, '2021-10-26 09:42:40', NULL, '2021-10-26 09:42:40', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2000, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '183.3.234.61', 'Mozilla/4.0', '2021-10-26 09:42:49', '2021-10-26 09:42:49', 20, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-26 09:42:49', NULL, '2021-10-26 09:42:49', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2001, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '183.3.234.45', 'Mozilla/4.0', '2021-10-26 09:42:53', '2021-10-26 09:42:53', 19, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-26 09:42:53', NULL, '2021-10-26 09:42:53', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2002, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:42:57', '2021-10-26 09:42:57', 9, 0, '', NULL, '2021-10-26 09:42:57', NULL, '2021-10-26 09:42:57', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2003, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:42:57', '2021-10-26 09:42:57', 19, 0, '', NULL, '2021-10-26 09:42:57', NULL, '2021-10-26 09:42:57', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2004, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":102,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:42:57', '2021-10-26 09:42:58', 485, 0, '', NULL, '2021-10-26 09:42:58', NULL, '2021-10-26 09:42:58', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2005, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":102,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:43:03', '2021-10-26 09:43:03', 460, 0, '', NULL, '2021-10-26 09:43:03', NULL, '2021-10-26 09:43:03', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2006, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '183.3.234.56', 'Mozilla/4.0', '2021-10-26 09:43:17', '2021-10-26 09:43:17', 47, 0, '', NULL, '2021-10-26 09:43:17', NULL, '2021-10-26 09:43:17', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2007, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.168', 'Mozilla/4.0', '2021-10-26 09:43:20', '2021-10-26 09:43:20', 17, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-26 09:43:20', NULL, '2021-10-26 09:43:20', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2008, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.175', 'Mozilla/4.0', '2021-10-26 09:43:24', '2021-10-26 09:43:24', 20, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-26 09:43:24', NULL, '2021-10-26 09:43:24', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2009, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.175', 'Mozilla/4.0', '2021-10-26 09:43:26', '2021-10-26 09:43:26', 49, 1007003000, '支付交易拓展单不存在', NULL, '2021-10-26 09:43:26', NULL, '2021-10-26 09:43:26', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2010, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":102,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:43:29', '2021-10-26 09:43:29', 18, 1007002001, '支付订单不处于待支付', NULL, '2021-10-26 09:43:29', NULL, '2021-10-26 09:43:29', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2011, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.168', 'Mozilla/4.0', '2021-10-26 09:43:32', '2021-10-26 09:43:32', 18, 1007003000, '支付交易拓展单不存在', NULL, '2021-10-26 09:43:32', NULL, '2021-10-26 09:43:32', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2012, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.175', 'Mozilla/4.0', '2021-10-26 09:45:00', '2021-10-26 09:45:00', 23, 1007003000, '支付交易拓展单不存在', NULL, '2021-10-26 09:45:00', NULL, '2021-10-26 09:45:00', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2013, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.170', 'Mozilla/4.0', '2021-10-26 09:45:04', '2021-10-26 09:45:04', 15, 1007003000, '支付交易拓展单不存在', NULL, '2021-10-26 09:45:04', NULL, '2021-10-26 09:45:04', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2014, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.170', 'Mozilla/4.0', '2021-10-26 09:45:21', '2021-10-26 09:45:21', 17, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-26 09:45:21', NULL, '2021-10-26 09:45:21', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2015, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.169', 'Mozilla/4.0', '2021-10-26 09:45:27', '2021-10-26 09:45:27', 20, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-26 09:45:27', NULL, '2021-10-26 09:45:27', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2016, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.170', 'Mozilla/4.0', '2021-10-26 09:46:20', '2021-10-26 09:46:20', 18, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-26 09:46:20', NULL, '2021-10-26 09:46:20', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2017, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.169', 'Mozilla/4.0', '2021-10-26 09:46:26', '2021-10-26 09:46:26', 17, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-26 09:46:26', NULL, '2021-10-26 09:46:26', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2018, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.175', 'Mozilla/4.0', '2021-10-26 09:48:38', '2021-10-26 09:48:38', 201, 1007003000, '支付交易拓展单不存在', NULL, '2021-10-26 09:48:38', NULL, '2021-10-26 09:48:38', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2019, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.168', 'Mozilla/4.0', '2021-10-26 09:48:42', '2021-10-26 09:48:42', 22, 1007003000, '支付交易拓展单不存在', NULL, '2021-10-26 09:48:42', NULL, '2021-10-26 09:48:42', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2020, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:48:49', '2021-10-26 09:48:49', 52, 0, '', NULL, '2021-10-26 09:48:49', NULL, '2021-10-26 09:48:49', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2021, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:48:49', '2021-10-26 09:48:49', 49, 0, '', NULL, '2021-10-26 09:48:49', NULL, '2021-10-26 09:48:49', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2022, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":103,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:48:50', '2021-10-26 09:48:51', 707, 0, '', NULL, '2021-10-26 09:48:51', NULL, '2021-10-26 09:48:51', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2023, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.175', 'Mozilla/4.0', '2021-10-26 09:48:56', '2021-10-26 09:48:56', 67, 0, '', NULL, '2021-10-26 09:48:56', NULL, '2021-10-26 09:48:56', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2024, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/pay-notify', '{\"query\":{},\"body\":null}', '127.0.0.1', 'PostmanRuntime/6.4.1', '2021-10-27 08:24:29', '2021-10-27 08:24:29', 20, 0, '', NULL, '2021-10-27 08:24:29', NULL, '2021-10-27 08:24:29', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2025, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/pay-notify', '{\"query\":{},\"body\":null}', '127.0.0.1', 'PostmanRuntime/6.4.1', '2021-10-27 08:24:57', '2021-10-27 08:24:57', 49, 500, '系统异常', NULL, '2021-10-27 08:24:57', NULL, '2021-10-27 08:24:57', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2026, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/pay-notify', '{\"query\":{},\"body\":\"{\\n\\t\\n}\"}', '127.0.0.1', 'PostmanRuntime/6.4.1', '2021-10-27 08:25:10', '2021-10-27 08:25:10', 30, 400, '请求参数不正确:支付订单编号不能为空', NULL, '2021-10-27 08:25:10', NULL, '2021-10-27 08:25:10', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2027, '', 0, 0, 'yudao-admin-server', 'GET', '/api/get-permission-info', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-27 08:30:03', '2021-10-27 08:30:03', 43, 0, '', NULL, '2021-10-27 08:30:03', NULL, '2021-10-27 08:30:03', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2028, '', 0, 0, 'yudao-admin-server', 'GET', '/api/system/dict-data/list-all-simple', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-27 08:30:03', '2021-10-27 08:30:03', 43, 0, '', NULL, '2021-10-27 08:30:03', NULL, '2021-10-27 08:30:03', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2029, '', 0, 0, 'yudao-admin-server', 'POST', '/api/logout', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-27 08:30:03', '2021-10-27 08:30:03', 7, 0, '', NULL, '2021-10-27 08:30:03', NULL, '2021-10-27 08:30:03', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2030, '', 0, 0, 'yudao-admin-server', 'GET', '/api/system/captcha/get-image', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-27 08:30:04', '2021-10-27 08:30:06', 2264, 0, '', NULL, '2021-10-27 08:30:06', NULL, '2021-10-27 08:30:06', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2031, '', 0, 0, 'yudao-admin-server', 'POST', '/api/login', '{\"query\":{},\"body\":\"{\\\"username\\\":\\\"admin\\\",\\\"password\\\":\\\"admin123\\\",\\\"code\\\":\\\"18zk0\\\",\\\"uuid\\\":\\\"1a5b41e42f34443f90f1a8049c7c172b\\\"}\"}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-27 08:30:09', '2021-10-27 08:30:10', 264, 0, '', NULL, '2021-10-27 08:30:10', NULL, '2021-10-27 08:30:10', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2032, '', 1, 2, 'yudao-admin-server', 'GET', '/api/get-permission-info', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-27 08:30:10', '2021-10-27 08:30:10', 30, 0, '', NULL, '2021-10-27 08:30:10', NULL, '2021-10-27 08:30:10', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2033, '', 1, 2, 'yudao-admin-server', 'GET', '/api/system/dict-data/list-all-simple', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-27 08:30:10', '2021-10-27 08:30:10', 37, 0, '', NULL, '2021-10-27 08:30:10', NULL, '2021-10-27 08:30:10', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2034, '', 1, 2, 'yudao-admin-server', 'GET', '/api/list-menus', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-27 08:30:10', '2021-10-27 08:30:10', 13, 0, '', NULL, '2021-10-27 08:30:10', NULL, '2021-10-27 08:30:10', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2035, '', 0, 0, 'yudao-admin-server', 'GET', '/api/infra/file/get/7e7ed694-2242-46cf-9ac9-0709debcc22f', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-27 08:30:10', '2021-10-27 08:30:10', 34, 0, '', NULL, '2021-10-27 08:30:10', NULL, '2021-10-27 08:30:10', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2036, '', 1, 2, 'yudao-admin-server', 'GET', '/api/system/post/page', '{\"query\":{\"pageNo\":\"1\",\"pageSize\":\"10\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-27 08:32:15', '2021-10-27 08:32:15', 118, 0, '', NULL, '2021-10-27 08:32:15', NULL, '2021-10-27 08:32:15', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2037, '', 1, 2, 'yudao-admin-server', 'GET', '/api/infra/job/page', '{\"query\":{\"pageNo\":\"1\",\"pageSize\":\"10\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-27 08:32:21', '2021-10-27 08:32:21', 41, 0, '', NULL, '2021-10-27 08:32:21', NULL, '2021-10-27 08:32:21', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2038, '', 1, 2, 'yudao-admin-server', 'POST', '/api/infra/job/create', '{\"query\":{},\"body\":\"{\\\"name\\\":\\\"payNotifyJob\\\",\\\"handlerName\\\":\\\"支付通知 Job\\\",\\\"cronExpression\\\":\\\"* * * * * ?\\\",\\\"retryCount\\\":\\\"0\\\",\\\"retryInterval\\\":\\\"0\\\",\\\"monitorTimeout\\\":\\\"\\\"}\"}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-27 08:33:35', '2021-10-27 08:33:35', 68, 0, '', NULL, '2021-10-27 08:33:35', NULL, '2021-10-27 08:33:35', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2039, '', 1, 2, 'yudao-admin-server', 'GET', '/api/infra/job/page', '{\"query\":{\"pageNo\":\"1\",\"pageSize\":\"10\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-27 08:33:35', '2021-10-27 08:33:35', 18, 0, '', NULL, '2021-10-27 08:33:35', NULL, '2021-10-27 08:33:35', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2040, '', 1, 2, 'yudao-admin-server', 'PUT', '/api/infra/job/trigger', '{\"query\":{\"id\":\"3\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-27 08:33:59', '2021-10-27 08:33:59', 42, 0, '', NULL, '2021-10-27 08:33:59', NULL, '2021-10-27 08:33:59', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2041, '', 1, 2, 'yudao-admin-server', 'GET', '/api/infra/job/get', '{\"query\":{\"id\":\"4\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-27 08:34:08', '2021-10-27 08:34:08', 8, 0, '', NULL, '2021-10-27 08:34:08', NULL, '2021-10-27 08:34:08', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2042, '', 1, 2, 'yudao-admin-server', 'DELETE', '/api/infra/job/delete', '{\"query\":{\"id\":\"4\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-27 08:34:15', '2021-10-27 08:34:15', 56, 0, '', NULL, '2021-10-27 08:34:15', NULL, '2021-10-27 08:34:15', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2043, '', 1, 2, 'yudao-admin-server', 'GET', '/api/infra/job/page', '{\"query\":{\"pageNo\":\"1\",\"pageSize\":\"10\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-27 08:34:15', '2021-10-27 08:34:15', 23, 0, '', NULL, '2021-10-27 08:34:15', NULL, '2021-10-27 08:34:15', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2044, '', 1, 2, 'yudao-admin-server', 'POST', '/api/infra/job/create', '{\"query\":{},\"body\":\"{\\\"name\\\":\\\"支付通知 Job\\\",\\\"handlerName\\\":\\\"payNotifyJob\\\",\\\"cronExpression\\\":\\\"* * * * * ?\\\",\\\"retryCount\\\":\\\"0\\\",\\\"retryInterval\\\":\\\"0\\\"}\"}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-27 08:34:42', '2021-10-27 08:34:42', 58, 0, '', NULL, '2021-10-27 08:34:42', NULL, '2021-10-27 08:34:42', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2045, '', 1, 2, 'yudao-admin-server', 'GET', '/api/infra/job/page', '{\"query\":{\"pageNo\":\"1\",\"pageSize\":\"10\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-27 08:34:43', '2021-10-27 08:34:43', 16, 0, '', NULL, '2021-10-27 08:34:43', NULL, '2021-10-27 08:34:43', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2046, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/pay-notify', '{\"query\":{},\"body\":\"{\\n\\t\\n}\"}', '127.0.0.1', 'PostmanRuntime/6.4.1', '2021-10-27 08:36:17', '2021-10-27 08:36:17', 5, 400, '请求参数不正确:支付订单编号不能为空', NULL, '2021-10-27 08:36:18', NULL, '2021-10-27 08:36:18', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2047, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/pay-notify', '{\"query\":{},\"body\":\"{\\\"merchantOrderId\\\":\\\"1635212524100\\\",\\\"payOrderId\\\":101}\"}', '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36 Hutool', '2021-10-27 08:38:43', '2021-10-27 08:38:43', 24, 0, '', NULL, '2021-10-27 08:38:43', NULL, '2021-10-27 08:38:43', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2048, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/pay-notify', '{\"query\":{},\"body\":\"{\\\"merchantOrderId\\\":\\\"1635212929429\\\",\\\"payOrderId\\\":103}\"}', '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36 Hutool', '2021-10-27 08:38:43', '2021-10-27 08:38:43', 24, 0, '', NULL, '2021-10-27 08:38:43', NULL, '2021-10-27 08:38:43', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2049, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/pay-notify', '{\"query\":{},\"body\":\"{\\\"merchantOrderId\\\":\\\"1635212576678\\\",\\\"payOrderId\\\":102}\"}', '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36 Hutool', '2021-10-27 08:38:43', '2021-10-27 08:38:43', 24, 0, '', NULL, '2021-10-27 08:38:43', NULL, '2021-10-27 08:38:43', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2050, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/pay-notify', '{\"query\":{},\"body\":\"{\\\"merchantOrderId\\\":\\\"1635212461835\\\",\\\"payOrderId\\\":100}\"}', '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36 Hutool', '2021-10-27 08:38:43', '2021-10-27 08:38:43', 3, 0, '', NULL, '2021-10-27 08:38:43', NULL, '2021-10-27 08:38:43', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2051, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 08:49:30', '2021-10-27 08:49:30', 102, 0, '', NULL, '2021-10-27 08:49:30', NULL, '2021-10-27 08:49:30', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2052, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 08:49:29', '2021-10-27 08:49:30', 1081, 500, '系统异常', NULL, '2021-10-27 08:49:30', NULL, '2021-10-27 08:49:30', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2053, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 08:51:19', '2021-10-27 08:51:19', 26, 0, '', NULL, '2021-10-27 08:51:19', NULL, '2021-10-27 08:51:19', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2054, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 08:51:18', '2021-10-27 08:51:19', 596, 0, '', NULL, '2021-10-27 08:51:19', NULL, '2021-10-27 08:51:19', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2055, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":105,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 08:51:20', '2021-10-27 08:51:22', 2180, 0, '', NULL, '2021-10-27 08:51:22', NULL, '2021-10-27 08:51:22', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2056, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.30.171', 'Mozilla/4.0', '2021-10-27 08:51:32', '2021-10-27 08:53:03', 90973, 0, '', NULL, '2021-10-27 08:53:03', NULL, '2021-10-27 08:53:03', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2057, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '140.207.54.76', 'Mozilla/4.0', '2021-10-27 08:53:03', '2021-10-27 08:53:03', 60, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-27 08:53:03', NULL, '2021-10-27 08:53:03', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2058, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.30.173', 'Mozilla/4.0', '2021-10-27 08:51:47', '2021-10-27 08:53:03', 76425, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-27 08:53:03', NULL, '2021-10-27 08:53:03', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2059, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '140.207.54.76', 'Mozilla/4.0', '2021-10-27 08:53:03', '2021-10-27 08:53:03', 65, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-27 08:53:03', NULL, '2021-10-27 08:53:03', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2060, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '101.226.103.24', 'Mozilla/4.0', '2021-10-27 08:53:03', '2021-10-27 08:53:03', 65, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-27 08:53:03', NULL, '2021-10-27 08:53:03', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2061, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '58.251.80.62', 'Mozilla/4.0', '2021-10-27 08:53:03', '2021-10-27 08:53:04', 80, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-27 08:53:04', NULL, '2021-10-27 08:53:04', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2062, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/pay-notify', '{\"query\":{},\"body\":\"{\\\"merchantOrderId\\\":\\\"1635295878514\\\",\\\"payOrderId\\\":105}\"}', '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36 Hutool', '2021-10-27 08:53:04', '2021-10-27 08:53:04', 12, 0, '', NULL, '2021-10-27 08:53:04', NULL, '2021-10-27 08:53:04', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2063, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '58.251.80.62', 'Mozilla/4.0', '2021-10-27 08:53:03', '2021-10-27 08:53:04', 122, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-27 08:53:04', NULL, '2021-10-27 08:53:04', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2064, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '101.226.103.16', 'Mozilla/4.0', '2021-10-27 08:53:03', '2021-10-27 08:53:04', 123, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-27 08:53:04', NULL, '2021-10-27 08:53:04', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2065, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 09:08:03', '2021-10-27 09:08:03', 113, 0, '', NULL, '2021-10-27 09:08:03', NULL, '2021-10-27 09:08:03', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2066, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 09:08:03', '2021-10-27 09:08:03', 84, 0, '', NULL, '2021-10-27 09:08:03', NULL, '2021-10-27 09:08:03', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2067, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":106,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 09:08:04', '2021-10-27 09:08:07', 3016, 0, '', NULL, '2021-10-27 09:08:07', NULL, '2021-10-27 09:08:07', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2068, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.30.177', 'Mozilla/4.0', '2021-10-27 09:08:12', '2021-10-27 09:08:43', 30745, 0, '', NULL, '2021-10-27 09:08:43', NULL, '2021-10-27 09:08:43', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2069, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '183.3.234.45', 'Mozilla/4.0', '2021-10-27 09:08:43', '2021-10-27 09:08:44', 1419, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-27 09:08:44', NULL, '2021-10-27 09:08:44', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2070, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '140.207.54.78', 'Mozilla/4.0', '2021-10-27 09:08:43', '2021-10-27 09:08:44', 1418, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-27 09:08:44', NULL, '2021-10-27 09:08:44', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2071, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.169', 'Mozilla/4.0', '2021-10-27 09:08:43', '2021-10-27 09:08:44', 1421, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-27 09:08:44', NULL, '2021-10-27 09:08:44', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2072, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/pay-notify', '{\"query\":{},\"body\":\"{\\\"merchantOrderId\\\":\\\"1635296883074\\\",\\\"payOrderId\\\":106}\"}', '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36 Hutool', '2021-10-27 09:08:44', '2021-10-27 09:08:44', 8, 0, '', NULL, '2021-10-27 09:08:44', NULL, '2021-10-27 09:08:44', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2073, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 09:20:35', '2021-10-27 09:20:35', 135, 0, '', NULL, '2021-10-27 09:20:35', NULL, '2021-10-27 09:20:35', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2074, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 09:20:35', '2021-10-27 09:20:35', 146, 0, '', NULL, '2021-10-27 09:20:35', NULL, '2021-10-27 09:20:35', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2075, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":107,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 09:20:36', '2021-10-27 09:20:37', 979, 0, '', NULL, '2021-10-27 09:20:37', NULL, '2021-10-27 09:20:37', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2076, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.175', 'Mozilla/4.0', '2021-10-27 09:20:58', '2021-10-27 09:20:59', 118, 0, '', NULL, '2021-10-27 09:20:59', NULL, '2021-10-27 09:20:59', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2077, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 09:21:40', '2021-10-27 09:21:40', 9, 0, '', NULL, '2021-10-27 09:21:40', NULL, '2021-10-27 09:21:40', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2078, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 09:21:40', '2021-10-27 09:21:40', 21, 0, '', NULL, '2021-10-27 09:21:40', NULL, '2021-10-27 09:21:40', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2079, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":108,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 09:21:46', '2021-10-27 09:21:47', 668, 0, '', NULL, '2021-10-27 09:21:47', NULL, '2021-10-27 09:21:47', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2080, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.30.177', 'Mozilla/4.0', '2021-10-27 09:21:55', '2021-10-27 09:22:02', 6586, 0, '', NULL, '2021-10-27 09:25:52', NULL, '2021-10-27 09:25:52', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2081, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.30.177', 'Mozilla/4.0', '2021-10-27 09:22:01', '2021-10-27 09:25:52', 231851, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-27 09:25:52', NULL, '2021-10-27 09:25:52', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2082, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '58.251.80.53', 'Mozilla/4.0', '2021-10-27 09:25:52', '2021-10-27 09:25:52', 61, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-27 09:25:53', NULL, '2021-10-27 09:25:53', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2083, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '101.226.103.16', 'Mozilla/4.0', '2021-10-27 09:25:52', '2021-10-27 09:25:52', 60, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-27 09:25:53', NULL, '2021-10-27 09:25:53', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2084, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '58.251.80.46', 'Mozilla/4.0', '2021-10-27 09:25:52', '2021-10-27 09:25:53', 66, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-27 09:25:53', NULL, '2021-10-27 09:25:53', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2085, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.168', 'Mozilla/4.0', '2021-10-27 09:25:52', '2021-10-27 09:25:53', 68, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-27 09:25:53', NULL, '2021-10-27 09:25:53', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2086, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '101.226.103.15', 'Mozilla/4.0', '2021-10-27 09:25:52', '2021-10-27 09:25:53', 72, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-27 09:25:53', NULL, '2021-10-27 09:25:53', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2087, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 09:28:48', '2021-10-27 09:28:48', 127, 0, '', NULL, '2021-10-27 09:28:48', NULL, '2021-10-27 09:28:48', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2088, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 09:28:48', '2021-10-27 09:28:49', 92, 0, '', NULL, '2021-10-27 09:28:49', NULL, '2021-10-27 09:28:49', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2089, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":109,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 09:28:49', '2021-10-27 09:28:51', 1856, 0, '', NULL, '2021-10-27 09:28:51', NULL, '2021-10-27 09:28:51', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2090, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.169', 'Mozilla/4.0', '2021-10-27 09:28:57', '2021-10-27 09:29:18', 21289, 0, '', NULL, '2021-10-27 09:29:18', NULL, '2021-10-27 09:29:18', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2091, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.30.171', 'Mozilla/4.0', '2021-10-27 09:29:18', '2021-10-27 09:29:22', 3729, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-27 09:29:22', NULL, '2021-10-27 09:29:22', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2092, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.170', 'Mozilla/4.0', '2021-10-27 09:29:18', '2021-10-27 09:29:22', 3730, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-27 09:29:22', NULL, '2021-10-27 09:29:22', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2093, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '58.251.80.46', 'Mozilla/4.0', '2021-10-27 09:29:21', '2021-10-27 09:29:22', 565, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-27 09:29:22', NULL, '2021-10-27 09:29:22', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2094, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '58.251.80.62', 'Mozilla/4.0', '2021-10-27 09:29:29', '2021-10-27 09:29:29', 20, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-27 09:29:29', NULL, '2021-10-27 09:29:29', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2095, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 09:29:57', '2021-10-27 09:29:57', 8, 0, '', NULL, '2021-10-27 09:29:57', NULL, '2021-10-27 09:29:57', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2096, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 09:29:57', '2021-10-27 09:29:57', 25, 0, '', NULL, '2021-10-27 09:29:57', NULL, '2021-10-27 09:29:57', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2097, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":110,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 09:29:57', '2021-10-27 09:29:58', 516, 0, '', NULL, '2021-10-27 09:29:58', NULL, '2021-10-27 09:29:58', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2098, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '101.226.103.16', 'Mozilla/4.0', '2021-10-27 09:29:59', '2021-10-27 09:29:59', 21, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-27 09:29:59', NULL, '2021-10-27 09:29:59', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2099, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '101.226.103.16', 'Mozilla/4.0', '2021-10-27 09:30:05', '2021-10-27 09:30:05', 21, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-27 09:30:05', NULL, '2021-10-27 09:30:05', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2100, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '101.226.103.15', 'Mozilla/4.0', '2021-10-27 09:30:05', '2021-10-27 09:30:09', 4090, 0, '', NULL, '2021-10-27 09:34:15', NULL, '2021-10-27 09:34:15', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2101, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '101.226.103.15', 'Mozilla/4.0', '2021-10-27 09:34:14', '2021-10-27 09:34:15', 80, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-27 09:34:15', NULL, '2021-10-27 09:34:15', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2102, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '101.226.103.16', 'Mozilla/4.0', '2021-10-27 09:34:14', '2021-10-27 09:34:15', 80, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-27 09:34:15', NULL, '2021-10-27 09:34:15', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2103, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 09:35:42', '2021-10-27 09:35:42', 121, 0, '', NULL, '2021-10-27 09:35:42', NULL, '2021-10-27 09:35:42', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2104, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 09:35:42', '2021-10-27 09:35:42', 87, 0, '', NULL, '2021-10-27 09:35:42', NULL, '2021-10-27 09:35:42', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2105, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":111,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 09:35:43', '2021-10-27 09:35:44', 961, 0, '', NULL, '2021-10-27 09:35:44', NULL, '2021-10-27 09:35:44', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2106, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '183.3.234.61', 'Mozilla/4.0', '2021-10-27 09:35:49', '2021-10-27 09:35:52', 3265, 0, '', NULL, '2021-10-27 09:35:52', NULL, '2021-10-27 09:35:52', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2107, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 09:38:56', '2021-10-27 09:38:56', 141, 0, '', NULL, '2021-10-27 09:38:56', NULL, '2021-10-27 09:38:56', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2108, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 09:38:56', '2021-10-27 09:38:56', 99, 0, '', NULL, '2021-10-27 09:38:56', NULL, '2021-10-27 09:38:56', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2109, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":112,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 09:39:02', '2021-10-27 09:39:03', 805, 0, '', NULL, '2021-10-27 09:39:03', NULL, '2021-10-27 09:39:03', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2110, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":112,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 09:38:57', '2021-10-27 09:39:06', 8971, 0, '', NULL, '2021-10-27 09:39:06', NULL, '2021-10-27 09:39:06', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2111, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.30.173', 'Mozilla/4.0', '2021-10-27 09:39:08', '2021-10-27 09:39:11', 2682, 0, '', NULL, '2021-10-27 09:39:11', NULL, '2021-10-27 09:39:11', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2112, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '140.207.54.75', 'Mozilla/4.0', '2021-10-27 09:39:36', '2021-10-27 09:39:36', 38, 1007002001, '支付订单不处于待支付', NULL, '2021-10-27 09:39:36', NULL, '2021-10-27 09:39:36', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2113, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.30.171', 'Mozilla/4.0', '2021-10-27 09:39:38', '2021-10-27 09:39:38', 32, 1007002001, '支付订单不处于待支付', NULL, '2021-10-27 09:39:38', NULL, '2021-10-27 09:39:38', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2114, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.30.171', 'Mozilla/4.0', '2021-10-27 09:39:38', '2021-10-27 09:39:38', 34, 1007002001, '支付订单不处于待支付', NULL, '2021-10-27 09:39:38', NULL, '2021-10-27 09:39:38', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2115, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '140.207.54.78', 'Mozilla/4.0', '2021-10-27 09:39:39', '2021-10-27 09:39:39', 34, 1007002001, '支付订单不处于待支付', NULL, '2021-10-27 09:39:39', NULL, '2021-10-27 09:39:39', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2116, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '140.207.54.76', 'Mozilla/4.0', '2021-10-27 09:39:41', '2021-10-27 09:39:41', 34, 1007002001, '支付订单不处于待支付', NULL, '2021-10-27 09:39:41', NULL, '2021-10-27 09:39:41', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2117, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '140.207.54.76', 'Mozilla/4.0', '2021-10-27 09:39:42', '2021-10-27 09:39:42', 31, 1007002001, '支付订单不处于待支付', NULL, '2021-10-27 09:39:42', NULL, '2021-10-27 09:39:42', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2118, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '140.207.54.78', 'Mozilla/4.0', '2021-10-27 09:39:43', '2021-10-27 09:39:43', 29, 1007002001, '支付订单不处于待支付', NULL, '2021-10-27 09:39:43', NULL, '2021-10-27 09:39:43', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2119, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '140.207.54.75', 'Mozilla/4.0', '2021-10-27 09:39:53', '2021-10-27 09:39:53', 31, 1007002001, '支付订单不处于待支付', NULL, '2021-10-27 09:39:53', NULL, '2021-10-27 09:39:53', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2120, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 09:39:57', '2021-10-27 09:39:57', 8, 0, '', NULL, '2021-10-27 09:39:57', NULL, '2021-10-27 09:39:57', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2121, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 09:39:57', '2021-10-27 09:39:57', 58, 0, '', NULL, '2021-10-27 09:39:57', NULL, '2021-10-27 09:39:57', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2122, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '140.207.54.78', 'Mozilla/4.0', '2021-10-27 09:39:59', '2021-10-27 09:39:59', 34, 1007002001, '支付订单不处于待支付', NULL, '2021-10-27 09:39:59', NULL, '2021-10-27 09:39:59', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2123, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":113,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 09:40:03', '2021-10-27 09:40:06', 2605, 0, '', NULL, '2021-10-27 09:40:06', NULL, '2021-10-27 09:40:06', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2124, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '140.207.54.76', 'Mozilla/4.0', '2021-10-27 09:40:08', '2021-10-27 09:40:08', 26, 1007002001, '支付订单不处于待支付', NULL, '2021-10-27 09:40:08', NULL, '2021-10-27 09:40:08', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2125, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":113,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 09:40:11', '2021-10-27 09:40:11', 423, 0, '', NULL, '2021-10-27 09:40:11', NULL, '2021-10-27 09:40:11', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2126, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '140.207.54.76', 'Mozilla/4.0', '2021-10-27 09:40:14', '2021-10-27 09:40:14', 29, 1007002001, '支付订单不处于待支付', NULL, '2021-10-27 09:40:14', NULL, '2021-10-27 09:40:14', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2127, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '140.207.54.76', 'Mozilla/4.0', '2021-10-27 09:40:21', '2021-10-27 09:40:22', 1809, 0, '', NULL, '2021-10-27 09:40:22', NULL, '2021-10-27 09:40:22', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2128, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '58.251.80.46', 'Mozilla/4.0', '2021-10-27 09:43:09', '2021-10-27 09:43:09', 32, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-27 09:43:09', NULL, '2021-10-27 09:43:09', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2129, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '58.251.80.46', 'Mozilla/4.0', '2021-10-27 09:43:09', '2021-10-27 09:43:09', 33, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-27 09:43:09', NULL, '2021-10-27 09:43:09', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2130, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.30.173', 'Mozilla/4.0', '2021-10-27 09:43:09', '2021-10-27 09:43:09', 36, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-27 09:43:09', NULL, '2021-10-27 09:43:09', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2131, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '140.207.54.76', 'Mozilla/4.0', '2021-10-27 09:43:09', '2021-10-27 09:43:09', 51, 1007002001, '支付订单不处于待支付', NULL, '2021-10-27 09:43:09', NULL, '2021-10-27 09:43:09', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2132, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '140.207.54.76', 'Mozilla/4.0', '2021-10-27 09:43:09', '2021-10-27 09:43:09', 60, 1007002001, '支付订单不处于待支付', NULL, '2021-10-27 09:43:09', NULL, '2021-10-27 09:43:09', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2133, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 09:45:48', '2021-10-27 09:45:48', 124, 0, '', NULL, '2021-10-27 09:45:48', NULL, '2021-10-27 09:45:48', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2134, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 09:45:49', '2021-10-27 09:45:49', 87, 0, '', NULL, '2021-10-27 09:45:49', NULL, '2021-10-27 09:45:49', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2135, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":114,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 09:45:50', '2021-10-27 09:45:52', 2286, 0, '', NULL, '2021-10-27 09:45:52', NULL, '2021-10-27 09:45:52', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2136, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.169', 'Mozilla/4.0', '2021-10-27 09:45:57', '2021-10-27 09:46:39', 41995, 0, '', NULL, '2021-10-27 09:46:39', NULL, '2021-10-27 09:46:39', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2137, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.175', 'Mozilla/4.0', '2021-10-27 09:46:39', '2021-10-27 09:46:39', 64, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-27 09:46:39', NULL, '2021-10-27 09:46:39', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2138, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '140.207.54.76', 'Mozilla/4.0', '2021-10-27 09:46:39', '2021-10-27 09:46:39', 64, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-27 09:46:39', NULL, '2021-10-27 09:46:39', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2139, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.175', 'Mozilla/4.0', '2021-10-27 09:46:39', '2021-10-27 09:46:39', 63, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-27 09:46:39', NULL, '2021-10-27 09:46:39', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2140, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.169', 'Mozilla/4.0', '2021-10-27 09:46:39', '2021-10-27 09:46:39', 65, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-27 09:46:39', NULL, '2021-10-27 09:46:39', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2141, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '58.251.80.62', 'Mozilla/4.0', '2021-10-27 09:46:39', '2021-10-27 09:46:39', 64, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-27 09:46:39', NULL, '2021-10-27 09:46:39', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2142, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 10:04:21', '2021-10-27 10:04:21', 127, 0, '', NULL, '2021-10-27 10:04:21', NULL, '2021-10-27 10:04:21', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2143, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 10:04:21', '2021-10-27 10:04:21', 93, 0, '', NULL, '2021-10-27 10:04:21', NULL, '2021-10-27 10:04:21', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2144, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":115,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 10:04:22', '2021-10-27 10:04:23', 1164, 0, '', NULL, '2021-10-27 10:04:23', NULL, '2021-10-27 10:04:23', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2145, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.170', 'Mozilla/4.0', '2021-10-27 10:04:29', '2021-10-27 10:04:31', 2729, 0, '', NULL, '2021-10-27 10:04:31', NULL, '2021-10-27 10:04:31', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2146, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/pay-notify', '{\"query\":{},\"body\":\"{\\\"merchantOrderId\\\":\\\"1635300261266\\\",\\\"payOrderId\\\":115}\"}', '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36 Hutool', '2021-10-27 10:04:33', '2021-10-27 10:04:33', 10, 0, '', NULL, '2021-10-27 10:04:33', NULL, '2021-10-27 10:04:33', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2147, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.233.75', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 13:09:12', '2021-10-27 13:09:12', 138, 0, '', NULL, '2021-10-27 13:09:12', NULL, '2021-10-27 13:09:12', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2148, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.233.75', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 13:09:12', '2021-10-27 13:09:12', 677, 500, '系统异常', NULL, '2021-10-27 13:09:12', NULL, '2021-10-27 13:09:12', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2149, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.233.75', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 13:11:08', '2021-10-27 13:11:08', 33, 0, '', NULL, '2021-10-27 13:11:08', NULL, '2021-10-27 13:11:08', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2150, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.233.75', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 13:11:08', '2021-10-27 13:11:09', 560, 0, '', NULL, '2021-10-27 13:11:09', NULL, '2021-10-27 13:11:09', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2151, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":117,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.233.75', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 13:11:10', '2021-10-27 13:11:11', 771, 0, '', NULL, '2021-10-27 13:11:11', NULL, '2021-10-27 13:11:11', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2152, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.30.173', 'Mozilla/4.0', '2021-10-27 13:11:16', '2021-10-27 13:11:16', 121, 0, '', NULL, '2021-10-27 13:11:16', NULL, '2021-10-27 13:11:16', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2153, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/pay-notify', '{\"query\":{},\"body\":\"{\\\"merchantOrderId\\\":\\\"1635311468233\\\",\\\"payOrderId\\\":117}\"}', '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36 Hutool', '2021-10-27 13:11:17', '2021-10-27 13:11:17', 8, 0, '', NULL, '2021-10-27 13:11:17', NULL, '2021-10-27 13:11:17', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2154, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.233.75', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 13:17:03', '2021-10-27 13:17:03', 8, 0, '', NULL, '2021-10-27 13:17:03', NULL, '2021-10-27 13:17:03', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2155, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.233.75', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 13:17:03', '2021-10-27 13:17:03', 18, 0, '', NULL, '2021-10-27 13:17:03', NULL, '2021-10-27 13:17:03', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2156, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":118,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.233.75', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 13:17:04', '2021-10-27 13:17:04', 526, 0, '', NULL, '2021-10-27 13:17:04', NULL, '2021-10-27 13:17:04', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2157, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.175', 'Mozilla/4.0', '2021-10-27 13:17:09', '2021-10-27 13:17:09', 46, 0, '', NULL, '2021-10-27 13:17:09', NULL, '2021-10-27 13:17:09', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2158, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.233.75', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 13:18:01', '2021-10-27 13:18:02', 137, 0, '', NULL, '2021-10-27 13:18:02', NULL, '2021-10-27 13:18:02', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2159, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.233.75', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 13:18:01', '2021-10-27 13:18:02', 129, 0, '', NULL, '2021-10-27 13:18:02', NULL, '2021-10-27 13:18:02', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2160, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":119,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.233.75', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 13:18:02', '2021-10-27 13:18:03', 930, 0, '', NULL, '2021-10-27 13:18:03', NULL, '2021-10-27 13:18:03', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2161, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '58.251.80.53', 'Mozilla/4.0', '2021-10-27 13:18:11', '2021-10-27 13:18:11', 148, 0, '', NULL, '2021-10-27 13:18:11', NULL, '2021-10-27 13:18:11', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2162, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":119,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.233.75', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 13:19:00', '2021-10-27 13:19:00', 33, 1007002001, '支付订单不处于待支付', NULL, '2021-10-27 13:19:00', NULL, '2021-10-27 13:19:00', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2163, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.233.75', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 13:19:09', '2021-10-27 13:19:09', 8, 0, '', NULL, '2021-10-27 13:19:09', NULL, '2021-10-27 13:19:09', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2164, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.233.75', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 13:19:09', '2021-10-27 13:19:09', 25, 0, '', NULL, '2021-10-27 13:19:09', NULL, '2021-10-27 13:19:09', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2165, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":120,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.233.75', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 13:19:10', '2021-10-27 13:19:10', 530, 0, '', NULL, '2021-10-27 13:19:10', NULL, '2021-10-27 13:19:10', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2166, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '58.251.80.46', 'Mozilla/4.0', '2021-10-27 13:19:15', '2021-10-27 13:19:16', 109, 0, '', NULL, '2021-10-27 13:19:16', NULL, '2021-10-27 13:19:16', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2167, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/pay-notify', '{\"query\":{},\"body\":\"{\\\"merchantOrderId\\\":\\\"1635311949168\\\",\\\"payOrderId\\\":120}\"}', '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36 Hutool', '2021-10-27 13:19:40', '2021-10-27 13:19:40', 9, 0, '', NULL, '2021-10-27 13:19:40', NULL, '2021-10-27 13:19:40', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2168, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.233.75', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 13:22:05', '2021-10-27 13:22:05', 134, 0, '', NULL, '2021-10-27 13:22:05', NULL, '2021-10-27 13:22:05', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2169, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.233.75', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 13:22:05', '2021-10-27 13:22:05', 131, 0, '', NULL, '2021-10-27 13:22:05', NULL, '2021-10-27 13:22:05', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2170, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":121,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.233.75', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 13:22:06', '2021-10-27 13:22:06', 790, 0, '', NULL, '2021-10-27 13:22:06', NULL, '2021-10-27 13:22:06', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2171, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.170', 'Mozilla/4.0', '2021-10-27 13:22:16', '2021-10-27 13:22:16', 116, 0, '', NULL, '2021-10-27 13:22:16', NULL, '2021-10-27 13:22:16', b'0'); -INSERT INTO `inf_api_access_log` VALUES (2172, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/pay-notify', '{\"query\":{},\"body\":\"{\\\"merchantOrderId\\\":\\\"1635312124657\\\",\\\"payOrderId\\\":121}\"}', '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36 Hutool', '2021-10-27 13:22:21', '2021-10-27 13:22:21', 10, 0, '', NULL, '2021-10-27 13:22:21', NULL, '2021-10-27 13:22:21', b'0'); COMMIT; -- ---------------------------- @@ -686,29 +84,12 @@ CREATE TABLE `inf_api_error_log` ( `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', PRIMARY KEY (`id`) USING BTREE -) ENGINE=InnoDB AUTO_INCREMENT=70 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='系统异常日志'; +) ENGINE=InnoDB AUTO_INCREMENT=73 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='系统异常日志'; -- ---------------------------- -- Records of inf_api_error_log -- ---------------------------- BEGIN; -INSERT INTO `inf_api_error_log` VALUES (53, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{\"id\":\"19\",\"channelCode\":\"wx_pub\"},\"body\":\"\"}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:23:54', 'org.springframework.web.HttpMediaTypeNotSupportedException', 'HttpMediaTypeNotSupportedException: Content type \'application/x-www-form-urlencoded;charset=UTF-8\' not supported', 'HttpMediaTypeNotSupportedException: Content type \'application/x-www-form-urlencoded;charset=UTF-8\' not supported', 'org.springframework.web.HttpMediaTypeNotSupportedException: Content type \'application/x-www-form-urlencoded;charset=UTF-8\' not supported\n at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:207)\n at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:158)\n at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:131)\n at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:121)\n at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:170)\n at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137)\n at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106)\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:894)\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)\n at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\n at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1060)\n at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:962)\n at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\n at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:652)\n at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:113)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:124)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:327)\n at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115)\n at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119)\n at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126)\n at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:105)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at cn.iocoder.yudao.framework.security.core.filter.JWTAuthenticationTokenFilter.doFilterInternal(JWTAuthenticationTokenFilter.java:62)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103)\n at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90)\n at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110)\n at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:211)\n at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:183)\n at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358)\n at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:103)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.apilog.core.filter.ApiAccessLogFilter.doFilterInternal(ApiAccessLogFilter.java:59)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:103)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:93)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.tracer.core.filter.TraceFilter.doFilterInternal(TraceFilter.java:30)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)\n at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)\n at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)\n at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)\n at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\n at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)\n at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)\n at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)\n at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\n at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)\n at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1707)\n at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\n at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\n at java.lang.Thread.run(Thread.java:748)\n', 'org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver', 'AbstractMessageConverterMethodArgumentResolver.java', 'readWithMessageConverters', 207, 0, NULL, 0, NULL, '2021-10-24 23:23:54', NULL, '2021-10-24 23:23:54', b'0'); -INSERT INTO `inf_api_error_log` VALUES (54, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{\"id\":\"21\",\"channelCode\":\"wx_pub\"},\"body\":\"\"}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:25:37', 'org.springframework.web.HttpMediaTypeNotSupportedException', 'HttpMediaTypeNotSupportedException: Content type \'application/x-www-form-urlencoded;charset=UTF-8\' not supported', 'HttpMediaTypeNotSupportedException: Content type \'application/x-www-form-urlencoded;charset=UTF-8\' not supported', 'org.springframework.web.HttpMediaTypeNotSupportedException: Content type \'application/x-www-form-urlencoded;charset=UTF-8\' not supported\n at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:207)\n at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:158)\n at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:131)\n at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:121)\n at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:170)\n at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137)\n at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106)\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:894)\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)\n at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\n at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1060)\n at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:962)\n at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\n at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:652)\n at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:113)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:124)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:327)\n at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115)\n at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119)\n at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126)\n at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:105)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at cn.iocoder.yudao.framework.security.core.filter.JWTAuthenticationTokenFilter.doFilterInternal(JWTAuthenticationTokenFilter.java:62)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103)\n at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90)\n at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110)\n at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:211)\n at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:183)\n at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358)\n at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:103)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.apilog.core.filter.ApiAccessLogFilter.doFilterInternal(ApiAccessLogFilter.java:59)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:103)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:93)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.tracer.core.filter.TraceFilter.doFilterInternal(TraceFilter.java:30)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)\n at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)\n at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)\n at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)\n at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\n at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)\n at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)\n at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)\n at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\n at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)\n at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1707)\n at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\n at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\n at java.lang.Thread.run(Thread.java:748)\n', 'org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver', 'AbstractMessageConverterMethodArgumentResolver.java', 'readWithMessageConverters', 207, 0, NULL, 0, NULL, '2021-10-24 23:25:37', NULL, '2021-10-24 23:25:37', b'0'); -INSERT INTO `inf_api_error_log` VALUES (55, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{\"id\":\"21\",\"channelCode\":\"wx_pub\"},\"body\":\"\"}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:25:48', 'org.springframework.web.HttpMediaTypeNotSupportedException', 'HttpMediaTypeNotSupportedException: Content type \'application/x-www-form-urlencoded;charset=UTF-8\' not supported', 'HttpMediaTypeNotSupportedException: Content type \'application/x-www-form-urlencoded;charset=UTF-8\' not supported', 'org.springframework.web.HttpMediaTypeNotSupportedException: Content type \'application/x-www-form-urlencoded;charset=UTF-8\' not supported\n at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:207)\n at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:158)\n at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:131)\n at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:121)\n at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:170)\n at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137)\n at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106)\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:894)\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)\n at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\n at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1060)\n at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:962)\n at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\n at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:652)\n at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:113)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:124)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:327)\n at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115)\n at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119)\n at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126)\n at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:105)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at cn.iocoder.yudao.framework.security.core.filter.JWTAuthenticationTokenFilter.doFilterInternal(JWTAuthenticationTokenFilter.java:62)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103)\n at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90)\n at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110)\n at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:211)\n at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:183)\n at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358)\n at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:103)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.apilog.core.filter.ApiAccessLogFilter.doFilterInternal(ApiAccessLogFilter.java:59)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:103)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:93)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.tracer.core.filter.TraceFilter.doFilterInternal(TraceFilter.java:30)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)\n at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)\n at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)\n at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)\n at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\n at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)\n at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)\n at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)\n at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\n at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)\n at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1707)\n at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\n at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\n at java.lang.Thread.run(Thread.java:748)\n', 'org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver', 'AbstractMessageConverterMethodArgumentResolver.java', 'readWithMessageConverters', 207, 0, NULL, 0, NULL, '2021-10-24 23:25:48', NULL, '2021-10-24 23:25:48', b'0'); -INSERT INTO `inf_api_error_log` VALUES (56, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"id=22&channelCode=wx_pub\"}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:26:03', 'org.springframework.http.converter.HttpMessageNotReadableException', 'HttpMessageNotReadableException: JSON parse error: Unrecognized token \'id\': was expecting (JSON String, Number, Array, Object or token \'null\', \'true\' or \'false\'); nested exception is com.fasterxml.jackson.core.JsonParseException: Unrecognized token \'id\': was expecting (JSON String, Number, Array, Object or token \'null\', \'true\' or \'false\')\n at [Source: (PushbackInputStream); line: 1, column: 4]', 'JsonParseException: Unrecognized token \'id\': was expecting (JSON String, Number, Array, Object or token \'null\', \'true\' or \'false\')\n at [Source: (PushbackInputStream); line: 1, column: 4]', 'org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Unrecognized token \'id\': was expecting (JSON String, Number, Array, Object or token \'null\', \'true\' or \'false\'); nested exception is com.fasterxml.jackson.core.JsonParseException: Unrecognized token \'id\': was expecting (JSON String, Number, Array, Object or token \'null\', \'true\' or \'false\')\n at [Source: (PushbackInputStream); line: 1, column: 4]\n at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.readJavaType(AbstractJackson2HttpMessageConverter.java:389)\n at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.read(AbstractJackson2HttpMessageConverter.java:342)\n at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:186)\n at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:158)\n at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:131)\n at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:121)\n at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:170)\n at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137)\n at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106)\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:894)\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)\n at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\n at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1060)\n at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:962)\n at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\n at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:652)\n at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:113)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:124)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:327)\n at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115)\n at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119)\n at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126)\n at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:105)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at cn.iocoder.yudao.framework.security.core.filter.JWTAuthenticationTokenFilter.doFilterInternal(JWTAuthenticationTokenFilter.java:62)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103)\n at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90)\n at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110)\n at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:211)\n at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:183)\n at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358)\n at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:103)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.apilog.core.filter.ApiAccessLogFilter.doFilterInternal(ApiAccessLogFilter.java:59)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.web.core.filter.CacheRequestBodyFilter.doFilterInternal(CacheRequestBodyFilter.java:22)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:93)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.tracer.core.filter.TraceFilter.doFilterInternal(TraceFilter.java:30)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)\n at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)\n at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)\n at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)\n at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\n at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)\n at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)\n at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)\n at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\n at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)\n at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1707)\n at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\n at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\n at java.lang.Thread.run(Thread.java:748)\nCaused by: com.fasterxml.jackson.core.JsonParseException: Unrecognized token \'id\': was expecting (JSON String, Number, Array, Object or token \'null\', \'true\' or \'false\')\n at [Source: (PushbackInputStream); line: 1, column: 4]\n at com.fasterxml.jackson.core.JsonParser._constructError(JsonParser.java:1851)\n at com.fasterxml.jackson.core.base.ParserMinimalBase._reportError(ParserMinimalBase.java:717)\n at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._reportInvalidToken(UTF8StreamJsonParser.java:3588)\n at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._handleUnexpectedValue(UTF8StreamJsonParser.java:2683)\n at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._nextTokenNotInObject(UTF8StreamJsonParser.java:865)\n at com.fasterxml.jackson.core.json.UTF8StreamJsonParser.nextToken(UTF8StreamJsonParser.java:757)\n at com.fasterxml.jackson.databind.ObjectMapper._initForReading(ObjectMapper.java:4664)\n at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4513)\n at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3521)\n at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.readJavaType(AbstractJackson2HttpMessageConverter.java:378)\n ... 121 more\n', 'org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter', 'AbstractJackson2HttpMessageConverter.java', 'readJavaType', 389, 0, NULL, 0, NULL, '2021-10-24 23:26:03', NULL, '2021-10-24 23:26:03', b'0'); -INSERT INTO `inf_api_error_log` VALUES (57, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{\"id\":\"28\",\"channelCode\":\"wx_pub\"},\"body\":\"\"}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:27:00', 'org.springframework.web.HttpMediaTypeNotSupportedException', 'HttpMediaTypeNotSupportedException: Content type \'application/x-www-form-urlencoded;charset=UTF-8\' not supported', 'HttpMediaTypeNotSupportedException: Content type \'application/x-www-form-urlencoded;charset=UTF-8\' not supported', 'org.springframework.web.HttpMediaTypeNotSupportedException: Content type \'application/x-www-form-urlencoded;charset=UTF-8\' not supported\n at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:207)\n at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:158)\n at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:131)\n at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:121)\n at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:170)\n at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137)\n at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106)\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:894)\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)\n at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\n at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1060)\n at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:962)\n at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\n at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:652)\n at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:113)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:124)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:327)\n at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115)\n at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119)\n at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126)\n at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:105)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at cn.iocoder.yudao.framework.security.core.filter.JWTAuthenticationTokenFilter.doFilterInternal(JWTAuthenticationTokenFilter.java:62)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103)\n at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90)\n at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110)\n at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:211)\n at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:183)\n at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358)\n at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:103)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.apilog.core.filter.ApiAccessLogFilter.doFilterInternal(ApiAccessLogFilter.java:59)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:103)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:93)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.tracer.core.filter.TraceFilter.doFilterInternal(TraceFilter.java:30)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)\n at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)\n at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)\n at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)\n at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\n at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)\n at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)\n at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)\n at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\n at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)\n at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1707)\n at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\n at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\n at java.lang.Thread.run(Thread.java:748)\n', 'org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver', 'AbstractMessageConverterMethodArgumentResolver.java', 'readWithMessageConverters', 207, 0, NULL, 0, NULL, '2021-10-24 23:27:00', NULL, '2021-10-24 23:27:00', b'0'); -INSERT INTO `inf_api_error_log` VALUES (58, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{\"id\":\"29\",\"channelCode\":\"wx_pub\"},\"body\":\"\"}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:27:05', 'org.springframework.web.HttpMediaTypeNotSupportedException', 'HttpMediaTypeNotSupportedException: Content type \'application/x-www-form-urlencoded;charset=UTF-8\' not supported', 'HttpMediaTypeNotSupportedException: Content type \'application/x-www-form-urlencoded;charset=UTF-8\' not supported', 'org.springframework.web.HttpMediaTypeNotSupportedException: Content type \'application/x-www-form-urlencoded;charset=UTF-8\' not supported\n at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:207)\n at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:158)\n at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:131)\n at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:121)\n at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:170)\n at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137)\n at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106)\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:894)\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)\n at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\n at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1060)\n at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:962)\n at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\n at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:652)\n at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:113)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:124)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:327)\n at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115)\n at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119)\n at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126)\n at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:105)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at cn.iocoder.yudao.framework.security.core.filter.JWTAuthenticationTokenFilter.doFilterInternal(JWTAuthenticationTokenFilter.java:62)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103)\n at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90)\n at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110)\n at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:211)\n at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:183)\n at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358)\n at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:103)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.apilog.core.filter.ApiAccessLogFilter.doFilterInternal(ApiAccessLogFilter.java:59)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:103)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:93)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.tracer.core.filter.TraceFilter.doFilterInternal(TraceFilter.java:30)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)\n at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)\n at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)\n at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)\n at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\n at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)\n at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)\n at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)\n at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\n at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)\n at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1707)\n at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\n at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\n at java.lang.Thread.run(Thread.java:748)\n', 'org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver', 'AbstractMessageConverterMethodArgumentResolver.java', 'readWithMessageConverters', 207, 0, NULL, 0, NULL, '2021-10-24 23:27:05', NULL, '2021-10-24 23:27:05', b'0'); -INSERT INTO `inf_api_error_log` VALUES (59, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{\"id\":\"31\",\"channelCode\":\"wx_pub\"},\"body\":\"\"}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:27:50', 'org.springframework.web.HttpMediaTypeNotSupportedException', 'HttpMediaTypeNotSupportedException: Content type \'application/x-www-form-urlencoded;charset=UTF-8\' not supported', 'HttpMediaTypeNotSupportedException: Content type \'application/x-www-form-urlencoded;charset=UTF-8\' not supported', 'org.springframework.web.HttpMediaTypeNotSupportedException: Content type \'application/x-www-form-urlencoded;charset=UTF-8\' not supported\n at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:207)\n at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:158)\n at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:131)\n at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:121)\n at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:170)\n at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137)\n at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106)\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:894)\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)\n at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\n at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1060)\n at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:962)\n at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\n at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:652)\n at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:113)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:124)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:327)\n at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115)\n at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119)\n at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126)\n at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:105)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at cn.iocoder.yudao.framework.security.core.filter.JWTAuthenticationTokenFilter.doFilterInternal(JWTAuthenticationTokenFilter.java:62)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103)\n at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90)\n at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110)\n at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:211)\n at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:183)\n at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358)\n at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:103)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.apilog.core.filter.ApiAccessLogFilter.doFilterInternal(ApiAccessLogFilter.java:59)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:103)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:93)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.tracer.core.filter.TraceFilter.doFilterInternal(TraceFilter.java:30)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)\n at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)\n at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)\n at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)\n at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\n at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)\n at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)\n at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)\n at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\n at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)\n at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1707)\n at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\n at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\n at java.lang.Thread.run(Thread.java:748)\n', 'org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver', 'AbstractMessageConverterMethodArgumentResolver.java', 'readWithMessageConverters', 207, 0, NULL, 0, NULL, '2021-10-24 23:27:50', NULL, '2021-10-24 23:27:50', b'0'); -INSERT INTO `inf_api_error_log` VALUES (60, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"id=33&channelCode=wx_pub\"}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:28:36', 'org.springframework.http.converter.HttpMessageNotReadableException', 'HttpMessageNotReadableException: JSON parse error: Unrecognized token \'id\': was expecting (JSON String, Number, Array, Object or token \'null\', \'true\' or \'false\'); nested exception is com.fasterxml.jackson.core.JsonParseException: Unrecognized token \'id\': was expecting (JSON String, Number, Array, Object or token \'null\', \'true\' or \'false\')\n at [Source: (PushbackInputStream); line: 1, column: 4]', 'JsonParseException: Unrecognized token \'id\': was expecting (JSON String, Number, Array, Object or token \'null\', \'true\' or \'false\')\n at [Source: (PushbackInputStream); line: 1, column: 4]', 'org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Unrecognized token \'id\': was expecting (JSON String, Number, Array, Object or token \'null\', \'true\' or \'false\'); nested exception is com.fasterxml.jackson.core.JsonParseException: Unrecognized token \'id\': was expecting (JSON String, Number, Array, Object or token \'null\', \'true\' or \'false\')\n at [Source: (PushbackInputStream); line: 1, column: 4]\n at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.readJavaType(AbstractJackson2HttpMessageConverter.java:389)\n at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.read(AbstractJackson2HttpMessageConverter.java:342)\n at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:186)\n at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:158)\n at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:131)\n at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:121)\n at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:170)\n at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137)\n at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106)\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:894)\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)\n at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\n at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1060)\n at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:962)\n at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\n at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:652)\n at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:113)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:124)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:327)\n at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115)\n at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119)\n at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126)\n at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:105)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at cn.iocoder.yudao.framework.security.core.filter.JWTAuthenticationTokenFilter.doFilterInternal(JWTAuthenticationTokenFilter.java:62)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103)\n at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90)\n at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110)\n at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:211)\n at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:183)\n at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358)\n at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:103)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.apilog.core.filter.ApiAccessLogFilter.doFilterInternal(ApiAccessLogFilter.java:59)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.web.core.filter.CacheRequestBodyFilter.doFilterInternal(CacheRequestBodyFilter.java:22)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:93)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.tracer.core.filter.TraceFilter.doFilterInternal(TraceFilter.java:30)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)\n at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)\n at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)\n at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)\n at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\n at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)\n at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)\n at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)\n at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\n at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)\n at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1707)\n at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\n at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\n at java.lang.Thread.run(Thread.java:748)\nCaused by: com.fasterxml.jackson.core.JsonParseException: Unrecognized token \'id\': was expecting (JSON String, Number, Array, Object or token \'null\', \'true\' or \'false\')\n at [Source: (PushbackInputStream); line: 1, column: 4]\n at com.fasterxml.jackson.core.JsonParser._constructError(JsonParser.java:1851)\n at com.fasterxml.jackson.core.base.ParserMinimalBase._reportError(ParserMinimalBase.java:717)\n at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._reportInvalidToken(UTF8StreamJsonParser.java:3588)\n at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._handleUnexpectedValue(UTF8StreamJsonParser.java:2683)\n at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._nextTokenNotInObject(UTF8StreamJsonParser.java:865)\n at com.fasterxml.jackson.core.json.UTF8StreamJsonParser.nextToken(UTF8StreamJsonParser.java:757)\n at com.fasterxml.jackson.databind.ObjectMapper._initForReading(ObjectMapper.java:4664)\n at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4513)\n at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3521)\n at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.readJavaType(AbstractJackson2HttpMessageConverter.java:378)\n ... 121 more\n', 'org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter', 'AbstractJackson2HttpMessageConverter.java', 'readJavaType', 389, 0, NULL, 0, NULL, '2021-10-24 23:28:36', NULL, '2021-10-24 23:28:36', b'0'); -INSERT INTO `inf_api_error_log` VALUES (61, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"id=34&channelCode=wx_pub\"}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:28:47', 'org.springframework.http.converter.HttpMessageNotReadableException', 'HttpMessageNotReadableException: JSON parse error: Unrecognized token \'id\': was expecting (JSON String, Number, Array, Object or token \'null\', \'true\' or \'false\'); nested exception is com.fasterxml.jackson.core.JsonParseException: Unrecognized token \'id\': was expecting (JSON String, Number, Array, Object or token \'null\', \'true\' or \'false\')\n at [Source: (PushbackInputStream); line: 1, column: 4]', 'JsonParseException: Unrecognized token \'id\': was expecting (JSON String, Number, Array, Object or token \'null\', \'true\' or \'false\')\n at [Source: (PushbackInputStream); line: 1, column: 4]', 'org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Unrecognized token \'id\': was expecting (JSON String, Number, Array, Object or token \'null\', \'true\' or \'false\'); nested exception is com.fasterxml.jackson.core.JsonParseException: Unrecognized token \'id\': was expecting (JSON String, Number, Array, Object or token \'null\', \'true\' or \'false\')\n at [Source: (PushbackInputStream); line: 1, column: 4]\n at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.readJavaType(AbstractJackson2HttpMessageConverter.java:389)\n at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.read(AbstractJackson2HttpMessageConverter.java:342)\n at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:186)\n at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:158)\n at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:131)\n at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:121)\n at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:170)\n at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137)\n at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106)\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:894)\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)\n at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\n at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1060)\n at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:962)\n at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\n at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:652)\n at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:113)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:124)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:327)\n at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115)\n at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119)\n at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126)\n at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:105)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at cn.iocoder.yudao.framework.security.core.filter.JWTAuthenticationTokenFilter.doFilterInternal(JWTAuthenticationTokenFilter.java:62)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103)\n at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90)\n at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110)\n at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:211)\n at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:183)\n at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358)\n at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:103)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.apilog.core.filter.ApiAccessLogFilter.doFilterInternal(ApiAccessLogFilter.java:59)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.web.core.filter.CacheRequestBodyFilter.doFilterInternal(CacheRequestBodyFilter.java:22)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:93)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.tracer.core.filter.TraceFilter.doFilterInternal(TraceFilter.java:30)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)\n at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)\n at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)\n at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)\n at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\n at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)\n at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)\n at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)\n at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\n at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)\n at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1707)\n at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\n at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\n at java.lang.Thread.run(Thread.java:748)\nCaused by: com.fasterxml.jackson.core.JsonParseException: Unrecognized token \'id\': was expecting (JSON String, Number, Array, Object or token \'null\', \'true\' or \'false\')\n at [Source: (PushbackInputStream); line: 1, column: 4]\n at com.fasterxml.jackson.core.JsonParser._constructError(JsonParser.java:1851)\n at com.fasterxml.jackson.core.base.ParserMinimalBase._reportError(ParserMinimalBase.java:717)\n at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._reportInvalidToken(UTF8StreamJsonParser.java:3588)\n at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._handleUnexpectedValue(UTF8StreamJsonParser.java:2683)\n at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._nextTokenNotInObject(UTF8StreamJsonParser.java:865)\n at com.fasterxml.jackson.core.json.UTF8StreamJsonParser.nextToken(UTF8StreamJsonParser.java:757)\n at com.fasterxml.jackson.databind.ObjectMapper._initForReading(ObjectMapper.java:4664)\n at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4513)\n at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3521)\n at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.readJavaType(AbstractJackson2HttpMessageConverter.java:378)\n ... 121 more\n', 'org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter', 'AbstractJackson2HttpMessageConverter.java', 'readJavaType', 389, 0, NULL, 0, NULL, '2021-10-24 23:28:47', NULL, '2021-10-24 23:28:47', b'0'); -INSERT INTO `inf_api_error_log` VALUES (62, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{\"{\\\"id\\\":38,\\\"channelCode\\\":\\\"wx_pub\\\"}\":\"\"},\"body\":\"\"}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:30:50', 'org.springframework.web.HttpMediaTypeNotSupportedException', 'HttpMediaTypeNotSupportedException: Content type \'application/x-www-form-urlencoded;charset=UTF-8\' not supported', 'HttpMediaTypeNotSupportedException: Content type \'application/x-www-form-urlencoded;charset=UTF-8\' not supported', 'org.springframework.web.HttpMediaTypeNotSupportedException: Content type \'application/x-www-form-urlencoded;charset=UTF-8\' not supported\n at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:207)\n at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:158)\n at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:131)\n at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:121)\n at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:170)\n at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137)\n at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106)\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:894)\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)\n at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\n at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1060)\n at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:962)\n at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\n at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:652)\n at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:113)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:124)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:327)\n at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115)\n at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119)\n at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126)\n at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:105)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at cn.iocoder.yudao.framework.security.core.filter.JWTAuthenticationTokenFilter.doFilterInternal(JWTAuthenticationTokenFilter.java:62)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103)\n at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90)\n at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110)\n at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:211)\n at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:183)\n at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358)\n at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:103)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.apilog.core.filter.ApiAccessLogFilter.doFilterInternal(ApiAccessLogFilter.java:59)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:103)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:93)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.tracer.core.filter.TraceFilter.doFilterInternal(TraceFilter.java:30)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)\n at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)\n at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)\n at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)\n at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\n at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)\n at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)\n at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)\n at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\n at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)\n at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1707)\n at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\n at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\n at java.lang.Thread.run(Thread.java:748)\n', 'org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver', 'AbstractMessageConverterMethodArgumentResolver.java', 'readWithMessageConverters', 207, 0, NULL, 0, NULL, '2021-10-24 23:30:50', NULL, '2021-10-24 23:30:50', b'0'); -INSERT INTO `inf_api_error_log` VALUES (63, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":\"\"}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-25 08:38:18', 'me.chanjar.weixin.common.error.WxErrorException', 'WxErrorException: 错误代码:40164, 错误信息:invalid ip 101.82.138.223 ipv6 ::ffff:101.82.138.223, not in whitelist rid: 6175fc79-1be8d90d-6d4dd4b8,微信原始报文:{\"errcode\":40164,\"errmsg\":\"invalid ip 101.82.138.223 ipv6 ::ffff:101.82.138.223, not in whitelist rid: 6175fc79-1be8d90d-6d4dd4b8\"}', 'WxErrorException: 错误代码:40164, 错误信息:invalid ip 101.82.138.223 ipv6 ::ffff:101.82.138.223, not in whitelist rid: 6175fc79-1be8d90d-6d4dd4b8,微信原始报文:{\"errcode\":40164,\"errmsg\":\"invalid ip 101.82.138.223 ipv6 ::ffff:101.82.138.223, not in whitelist rid: 6175fc79-1be8d90d-6d4dd4b8\"}', 'me.chanjar.weixin.common.error.WxErrorException: 错误代码:40164, 错误信息:invalid ip 101.82.138.223 ipv6 ::ffff:101.82.138.223, not in whitelist rid: 6175fc79-1be8d90d-6d4dd4b8,微信原始报文:{\"errcode\":40164,\"errmsg\":\"invalid ip 101.82.138.223 ipv6 ::ffff:101.82.138.223, not in whitelist rid: 6175fc79-1be8d90d-6d4dd4b8\"}\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.extractAccessToken(BaseWxMpServiceImpl.java:454)\n at me.chanjar.weixin.mp.api.impl.WxMpServiceHttpClientImpl.getAccessToken(WxMpServiceHttpClientImpl.java:91)\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.executeInternal(BaseWxMpServiceImpl.java:399)\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.execute(BaseWxMpServiceImpl.java:363)\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.getTicket(BaseWxMpServiceImpl.java:200)\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.getJsapiTicket(BaseWxMpServiceImpl.java:222)\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.createJsapiSignature(BaseWxMpServiceImpl.java:229)\n at cn.iocoder.yudao.userserver.modules.weixin.controller.mp.WxMpController.createJsapiSignature(WxMpController.java:34)\n at cn.iocoder.yudao.userserver.modules.weixin.controller.mp.WxMpController$$FastClassBySpringCGLIB$$cde47d88.invoke()\n at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)\n at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:779)\n at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)\n at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:750)\n at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:123)\n at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)\n at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:750)\n at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:692)\n at cn.iocoder.yudao.userserver.modules.weixin.controller.mp.WxMpController$$EnhancerBySpringCGLIB$$3e195ba1.createJsapiSignature()\n at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n at java.lang.reflect.Method.invoke(Method.java:498)\n at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:197)\n at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:141)\n at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106)\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:894)\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)\n at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\n at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1060)\n at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:962)\n at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\n at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:652)\n at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:113)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:124)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:327)\n at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115)\n at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119)\n at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126)\n at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:105)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at cn.iocoder.yudao.framework.security.core.filter.JWTAuthenticationTokenFilter.doFilterInternal(JWTAuthenticationTokenFilter.java:62)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103)\n at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90)\n at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110)\n at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:211)\n at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:183)\n at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358)\n at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:103)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.apilog.core.filter.ApiAccessLogFilter.doFilterInternal(ApiAccessLogFilter.java:59)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:103)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:93)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.tracer.core.filter.TraceFilter.doFilterInternal(TraceFilter.java:30)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)\n at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)\n at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)\n at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)\n at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\n at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)\n at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)\n at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)\n at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\n at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)\n at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1707)\n at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\n at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\n at java.lang.Thread.run(Thread.java:748)\n', 'me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl', 'BaseWxMpServiceImpl.java', 'extractAccessToken', 454, 0, NULL, 0, NULL, '2021-10-25 08:38:18', NULL, '2021-10-25 08:38:18', b'0'); -INSERT INTO `inf_api_error_log` VALUES (64, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":\"\"}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-25 08:38:41', 'me.chanjar.weixin.common.error.WxErrorException', 'WxErrorException: 错误代码:40164, 错误信息:invalid ip 101.82.138.223 ipv6 ::ffff:101.82.138.223, not in whitelist rid: 6175fc91-6091fac7-62054871,微信原始报文:{\"errcode\":40164,\"errmsg\":\"invalid ip 101.82.138.223 ipv6 ::ffff:101.82.138.223, not in whitelist rid: 6175fc91-6091fac7-62054871\"}', 'WxErrorException: 错误代码:40164, 错误信息:invalid ip 101.82.138.223 ipv6 ::ffff:101.82.138.223, not in whitelist rid: 6175fc91-6091fac7-62054871,微信原始报文:{\"errcode\":40164,\"errmsg\":\"invalid ip 101.82.138.223 ipv6 ::ffff:101.82.138.223, not in whitelist rid: 6175fc91-6091fac7-62054871\"}', 'me.chanjar.weixin.common.error.WxErrorException: 错误代码:40164, 错误信息:invalid ip 101.82.138.223 ipv6 ::ffff:101.82.138.223, not in whitelist rid: 6175fc91-6091fac7-62054871,微信原始报文:{\"errcode\":40164,\"errmsg\":\"invalid ip 101.82.138.223 ipv6 ::ffff:101.82.138.223, not in whitelist rid: 6175fc91-6091fac7-62054871\"}\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.extractAccessToken(BaseWxMpServiceImpl.java:454)\n at me.chanjar.weixin.mp.api.impl.WxMpServiceHttpClientImpl.getAccessToken(WxMpServiceHttpClientImpl.java:91)\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.executeInternal(BaseWxMpServiceImpl.java:399)\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.execute(BaseWxMpServiceImpl.java:363)\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.getTicket(BaseWxMpServiceImpl.java:200)\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.getJsapiTicket(BaseWxMpServiceImpl.java:222)\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.createJsapiSignature(BaseWxMpServiceImpl.java:229)\n at cn.iocoder.yudao.userserver.modules.weixin.controller.mp.WxMpController.createJsapiSignature(WxMpController.java:34)\n at cn.iocoder.yudao.userserver.modules.weixin.controller.mp.WxMpController$$FastClassBySpringCGLIB$$cde47d88.invoke()\n at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)\n at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:779)\n at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)\n at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:750)\n at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:123)\n at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)\n at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:750)\n at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:692)\n at cn.iocoder.yudao.userserver.modules.weixin.controller.mp.WxMpController$$EnhancerBySpringCGLIB$$3e195ba1.createJsapiSignature()\n at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n at java.lang.reflect.Method.invoke(Method.java:498)\n at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:197)\n at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:141)\n at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106)\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:894)\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)\n at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\n at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1060)\n at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:962)\n at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\n at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:652)\n at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:113)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:124)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:327)\n at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115)\n at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119)\n at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126)\n at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:105)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at cn.iocoder.yudao.framework.security.core.filter.JWTAuthenticationTokenFilter.doFilterInternal(JWTAuthenticationTokenFilter.java:62)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103)\n at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90)\n at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110)\n at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:211)\n at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:183)\n at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358)\n at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:103)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.apilog.core.filter.ApiAccessLogFilter.doFilterInternal(ApiAccessLogFilter.java:59)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:103)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:93)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.tracer.core.filter.TraceFilter.doFilterInternal(TraceFilter.java:30)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)\n at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)\n at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)\n at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)\n at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\n at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)\n at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)\n at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)\n at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\n at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)\n at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1707)\n at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\n at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\n at java.lang.Thread.run(Thread.java:748)\n', 'me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl', 'BaseWxMpServiceImpl.java', 'extractAccessToken', 454, 0, NULL, 0, NULL, '2021-10-25 08:38:41', NULL, '2021-10-25 08:38:41', b'0'); -INSERT INTO `inf_api_error_log` VALUES (65, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":\"\"}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-25 08:39:28', 'me.chanjar.weixin.common.error.WxErrorException', 'WxErrorException: 错误代码:40164, 错误信息:invalid ip 101.82.138.223 ipv6 ::ffff:101.82.138.223, not in whitelist rid: 6175fcb6-74b26f29-48d42d07,微信原始报文:{\"errcode\":40164,\"errmsg\":\"invalid ip 101.82.138.223 ipv6 ::ffff:101.82.138.223, not in whitelist rid: 6175fcb6-74b26f29-48d42d07\"}', 'WxErrorException: 错误代码:40164, 错误信息:invalid ip 101.82.138.223 ipv6 ::ffff:101.82.138.223, not in whitelist rid: 6175fcb6-74b26f29-48d42d07,微信原始报文:{\"errcode\":40164,\"errmsg\":\"invalid ip 101.82.138.223 ipv6 ::ffff:101.82.138.223, not in whitelist rid: 6175fcb6-74b26f29-48d42d07\"}', 'me.chanjar.weixin.common.error.WxErrorException: 错误代码:40164, 错误信息:invalid ip 101.82.138.223 ipv6 ::ffff:101.82.138.223, not in whitelist rid: 6175fcb6-74b26f29-48d42d07,微信原始报文:{\"errcode\":40164,\"errmsg\":\"invalid ip 101.82.138.223 ipv6 ::ffff:101.82.138.223, not in whitelist rid: 6175fcb6-74b26f29-48d42d07\"}\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.extractAccessToken(BaseWxMpServiceImpl.java:454)\n at me.chanjar.weixin.mp.api.impl.WxMpServiceHttpClientImpl.getAccessToken(WxMpServiceHttpClientImpl.java:91)\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.executeInternal(BaseWxMpServiceImpl.java:399)\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.execute(BaseWxMpServiceImpl.java:363)\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.getTicket(BaseWxMpServiceImpl.java:200)\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.getJsapiTicket(BaseWxMpServiceImpl.java:222)\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.createJsapiSignature(BaseWxMpServiceImpl.java:229)\n at cn.iocoder.yudao.userserver.modules.weixin.controller.mp.WxMpController.createJsapiSignature(WxMpController.java:34)\n at cn.iocoder.yudao.userserver.modules.weixin.controller.mp.WxMpController$$FastClassBySpringCGLIB$$cde47d88.invoke()\n at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)\n at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:779)\n at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)\n at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:750)\n at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:123)\n at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)\n at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:750)\n at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:692)\n at cn.iocoder.yudao.userserver.modules.weixin.controller.mp.WxMpController$$EnhancerBySpringCGLIB$$3e195ba1.createJsapiSignature()\n at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n at java.lang.reflect.Method.invoke(Method.java:498)\n at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:197)\n at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:141)\n at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106)\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:894)\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)\n at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\n at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1060)\n at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:962)\n at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\n at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:652)\n at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:113)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:124)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:327)\n at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115)\n at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119)\n at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126)\n at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:105)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at cn.iocoder.yudao.framework.security.core.filter.JWTAuthenticationTokenFilter.doFilterInternal(JWTAuthenticationTokenFilter.java:62)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103)\n at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90)\n at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110)\n at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:211)\n at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:183)\n at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358)\n at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:103)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.apilog.core.filter.ApiAccessLogFilter.doFilterInternal(ApiAccessLogFilter.java:59)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:103)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:93)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.tracer.core.filter.TraceFilter.doFilterInternal(TraceFilter.java:30)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)\n at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)\n at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)\n at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)\n at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\n at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)\n at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)\n at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)\n at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\n at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)\n at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1707)\n at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\n at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\n at java.lang.Thread.run(Thread.java:748)\n', 'me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl', 'BaseWxMpServiceImpl.java', 'extractAccessToken', 454, 0, NULL, 0, NULL, '2021-10-25 08:39:28', NULL, '2021-10-25 08:39:28', b'0'); -INSERT INTO `inf_api_error_log` VALUES (66, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":\"\"}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:20:46', 'me.chanjar.weixin.common.error.WxErrorException', 'WxErrorException: 错误代码:40164, 错误信息:invalid ip 101.82.98.72 ipv6 ::ffff:101.82.98.72, not in whitelist rid: 617757ed-43dccf61-7189bd00,微信原始报文:{\"errcode\":40164,\"errmsg\":\"invalid ip 101.82.98.72 ipv6 ::ffff:101.82.98.72, not in whitelist rid: 617757ed-43dccf61-7189bd00\"}', 'WxErrorException: 错误代码:40164, 错误信息:invalid ip 101.82.98.72 ipv6 ::ffff:101.82.98.72, not in whitelist rid: 617757ed-43dccf61-7189bd00,微信原始报文:{\"errcode\":40164,\"errmsg\":\"invalid ip 101.82.98.72 ipv6 ::ffff:101.82.98.72, not in whitelist rid: 617757ed-43dccf61-7189bd00\"}', 'me.chanjar.weixin.common.error.WxErrorException: 错误代码:40164, 错误信息:invalid ip 101.82.98.72 ipv6 ::ffff:101.82.98.72, not in whitelist rid: 617757ed-43dccf61-7189bd00,微信原始报文:{\"errcode\":40164,\"errmsg\":\"invalid ip 101.82.98.72 ipv6 ::ffff:101.82.98.72, not in whitelist rid: 617757ed-43dccf61-7189bd00\"}\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.extractAccessToken(BaseWxMpServiceImpl.java:454)\n at me.chanjar.weixin.mp.api.impl.WxMpServiceHttpClientImpl.getAccessToken(WxMpServiceHttpClientImpl.java:91)\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.executeInternal(BaseWxMpServiceImpl.java:399)\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.execute(BaseWxMpServiceImpl.java:363)\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.getTicket(BaseWxMpServiceImpl.java:200)\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.getJsapiTicket(BaseWxMpServiceImpl.java:222)\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.createJsapiSignature(BaseWxMpServiceImpl.java:229)\n at cn.iocoder.yudao.userserver.modules.weixin.controller.mp.WxMpController.createJsapiSignature(WxMpController.java:34)\n at cn.iocoder.yudao.userserver.modules.weixin.controller.mp.WxMpController$$FastClassBySpringCGLIB$$cde47d88.invoke()\n at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)\n at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:779)\n at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)\n at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:750)\n at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:123)\n at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)\n at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:750)\n at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:692)\n at cn.iocoder.yudao.userserver.modules.weixin.controller.mp.WxMpController$$EnhancerBySpringCGLIB$$109d0847.createJsapiSignature()\n at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n at java.lang.reflect.Method.invoke(Method.java:498)\n at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:197)\n at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:141)\n at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106)\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:894)\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)\n at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\n at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1060)\n at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:962)\n at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\n at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:652)\n at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:113)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:124)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:327)\n at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115)\n at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119)\n at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126)\n at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:105)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at cn.iocoder.yudao.framework.security.core.filter.JWTAuthenticationTokenFilter.doFilterInternal(JWTAuthenticationTokenFilter.java:62)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103)\n at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90)\n at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110)\n at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:211)\n at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:183)\n at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358)\n at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:103)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.apilog.core.filter.ApiAccessLogFilter.doFilterInternal(ApiAccessLogFilter.java:59)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:103)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:93)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.tracer.core.filter.TraceFilter.doFilterInternal(TraceFilter.java:30)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)\n at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)\n at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)\n at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)\n at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\n at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)\n at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)\n at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)\n at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\n at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)\n at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1707)\n at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\n at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\n at java.lang.Thread.run(Thread.java:748)\n', 'me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl', 'BaseWxMpServiceImpl.java', 'extractAccessToken', 454, 0, NULL, 0, NULL, '2021-10-26 09:20:46', NULL, '2021-10-26 09:20:46', b'0'); -INSERT INTO `inf_api_error_log` VALUES (67, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":\"\"}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:21:33', 'me.chanjar.weixin.common.error.WxErrorException', 'WxErrorException: 错误代码:40164, 错误信息:invalid ip 101.82.98.72 ipv6 ::ffff:101.82.98.72, not in whitelist rid: 61775806-508b6477-3686e7cc,微信原始报文:{\"errcode\":40164,\"errmsg\":\"invalid ip 101.82.98.72 ipv6 ::ffff:101.82.98.72, not in whitelist rid: 61775806-508b6477-3686e7cc\"}', 'WxErrorException: 错误代码:40164, 错误信息:invalid ip 101.82.98.72 ipv6 ::ffff:101.82.98.72, not in whitelist rid: 61775806-508b6477-3686e7cc,微信原始报文:{\"errcode\":40164,\"errmsg\":\"invalid ip 101.82.98.72 ipv6 ::ffff:101.82.98.72, not in whitelist rid: 61775806-508b6477-3686e7cc\"}', 'me.chanjar.weixin.common.error.WxErrorException: 错误代码:40164, 错误信息:invalid ip 101.82.98.72 ipv6 ::ffff:101.82.98.72, not in whitelist rid: 61775806-508b6477-3686e7cc,微信原始报文:{\"errcode\":40164,\"errmsg\":\"invalid ip 101.82.98.72 ipv6 ::ffff:101.82.98.72, not in whitelist rid: 61775806-508b6477-3686e7cc\"}\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.extractAccessToken(BaseWxMpServiceImpl.java:454)\n at me.chanjar.weixin.mp.api.impl.WxMpServiceHttpClientImpl.getAccessToken(WxMpServiceHttpClientImpl.java:91)\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.executeInternal(BaseWxMpServiceImpl.java:399)\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.execute(BaseWxMpServiceImpl.java:363)\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.getTicket(BaseWxMpServiceImpl.java:200)\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.getJsapiTicket(BaseWxMpServiceImpl.java:222)\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.createJsapiSignature(BaseWxMpServiceImpl.java:229)\n at cn.iocoder.yudao.userserver.modules.weixin.controller.mp.WxMpController.createJsapiSignature(WxMpController.java:34)\n at cn.iocoder.yudao.userserver.modules.weixin.controller.mp.WxMpController$$FastClassBySpringCGLIB$$cde47d88.invoke()\n at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)\n at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:779)\n at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)\n at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:750)\n at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:123)\n at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)\n at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:750)\n at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:692)\n at cn.iocoder.yudao.userserver.modules.weixin.controller.mp.WxMpController$$EnhancerBySpringCGLIB$$109d0847.createJsapiSignature()\n at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n at java.lang.reflect.Method.invoke(Method.java:498)\n at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:197)\n at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:141)\n at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106)\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:894)\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)\n at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\n at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1060)\n at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:962)\n at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\n at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:652)\n at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:113)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:124)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:327)\n at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115)\n at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119)\n at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126)\n at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:105)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at cn.iocoder.yudao.framework.security.core.filter.JWTAuthenticationTokenFilter.doFilterInternal(JWTAuthenticationTokenFilter.java:62)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103)\n at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90)\n at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110)\n at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:211)\n at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:183)\n at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358)\n at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:103)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.apilog.core.filter.ApiAccessLogFilter.doFilterInternal(ApiAccessLogFilter.java:59)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:103)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:93)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.tracer.core.filter.TraceFilter.doFilterInternal(TraceFilter.java:30)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)\n at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)\n at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)\n at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)\n at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\n at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)\n at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)\n at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)\n at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\n at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)\n at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1707)\n at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\n at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\n at java.lang.Thread.run(Thread.java:748)\n', 'me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl', 'BaseWxMpServiceImpl.java', 'extractAccessToken', 454, 0, NULL, 0, NULL, '2021-10-26 09:21:33', NULL, '2021-10-26 09:21:33', b'0'); -INSERT INTO `inf_api_error_log` VALUES (68, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":\"\"}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 08:49:30', 'me.chanjar.weixin.common.error.WxErrorException', 'WxErrorException: 错误代码:40164, 错误信息:invalid ip 101.82.181.148 ipv6 ::ffff:101.82.181.148, not in whitelist rid: 6178a21a-5556e976-7358e3e3,微信原始报文:{\"errcode\":40164,\"errmsg\":\"invalid ip 101.82.181.148 ipv6 ::ffff:101.82.181.148, not in whitelist rid: 6178a21a-5556e976-7358e3e3\"}', 'WxErrorException: 错误代码:40164, 错误信息:invalid ip 101.82.181.148 ipv6 ::ffff:101.82.181.148, not in whitelist rid: 6178a21a-5556e976-7358e3e3,微信原始报文:{\"errcode\":40164,\"errmsg\":\"invalid ip 101.82.181.148 ipv6 ::ffff:101.82.181.148, not in whitelist rid: 6178a21a-5556e976-7358e3e3\"}', 'me.chanjar.weixin.common.error.WxErrorException: 错误代码:40164, 错误信息:invalid ip 101.82.181.148 ipv6 ::ffff:101.82.181.148, not in whitelist rid: 6178a21a-5556e976-7358e3e3,微信原始报文:{\"errcode\":40164,\"errmsg\":\"invalid ip 101.82.181.148 ipv6 ::ffff:101.82.181.148, not in whitelist rid: 6178a21a-5556e976-7358e3e3\"}\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.extractAccessToken(BaseWxMpServiceImpl.java:454)\n at me.chanjar.weixin.mp.api.impl.WxMpServiceHttpClientImpl.getAccessToken(WxMpServiceHttpClientImpl.java:91)\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.executeInternal(BaseWxMpServiceImpl.java:399)\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.execute(BaseWxMpServiceImpl.java:363)\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.getTicket(BaseWxMpServiceImpl.java:200)\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.getJsapiTicket(BaseWxMpServiceImpl.java:222)\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.createJsapiSignature(BaseWxMpServiceImpl.java:229)\n at cn.iocoder.yudao.userserver.modules.weixin.controller.mp.WxMpController.createJsapiSignature(WxMpController.java:34)\n at cn.iocoder.yudao.userserver.modules.weixin.controller.mp.WxMpController$$FastClassBySpringCGLIB$$cde47d88.invoke()\n at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)\n at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:779)\n at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)\n at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:750)\n at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:123)\n at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)\n at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:750)\n at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:692)\n at cn.iocoder.yudao.userserver.modules.weixin.controller.mp.WxMpController$$EnhancerBySpringCGLIB$$ae5f34e3.createJsapiSignature()\n at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n at java.lang.reflect.Method.invoke(Method.java:498)\n at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:197)\n at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:141)\n at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106)\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:894)\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)\n at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\n at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1060)\n at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:962)\n at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\n at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:652)\n at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:113)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:124)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:327)\n at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115)\n at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119)\n at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126)\n at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:105)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at cn.iocoder.yudao.framework.security.core.filter.JWTAuthenticationTokenFilter.doFilterInternal(JWTAuthenticationTokenFilter.java:62)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103)\n at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90)\n at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110)\n at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:211)\n at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:183)\n at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358)\n at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:103)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.apilog.core.filter.ApiAccessLogFilter.doFilterInternal(ApiAccessLogFilter.java:59)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:103)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:93)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.tracer.core.filter.TraceFilter.doFilterInternal(TraceFilter.java:30)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)\n at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)\n at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)\n at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)\n at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\n at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)\n at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)\n at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)\n at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\n at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)\n at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1707)\n at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\n at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\n at java.lang.Thread.run(Thread.java:748)\n', 'me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl', 'BaseWxMpServiceImpl.java', 'extractAccessToken', 454, 0, NULL, 0, NULL, '2021-10-27 08:49:30', NULL, '2021-10-27 08:49:30', b'0'); -INSERT INTO `inf_api_error_log` VALUES (69, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":\"\"}', '101.82.233.75', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 13:09:12', 'me.chanjar.weixin.common.error.WxErrorException', 'WxErrorException: 错误代码:40164, 错误信息:invalid ip 101.82.233.75 ipv6 ::ffff:101.82.233.75, not in whitelist rid: 6178def8-13461660-0d019127,微信原始报文:{\"errcode\":40164,\"errmsg\":\"invalid ip 101.82.233.75 ipv6 ::ffff:101.82.233.75, not in whitelist rid: 6178def8-13461660-0d019127\"}', 'WxErrorException: 错误代码:40164, 错误信息:invalid ip 101.82.233.75 ipv6 ::ffff:101.82.233.75, not in whitelist rid: 6178def8-13461660-0d019127,微信原始报文:{\"errcode\":40164,\"errmsg\":\"invalid ip 101.82.233.75 ipv6 ::ffff:101.82.233.75, not in whitelist rid: 6178def8-13461660-0d019127\"}', 'me.chanjar.weixin.common.error.WxErrorException: 错误代码:40164, 错误信息:invalid ip 101.82.233.75 ipv6 ::ffff:101.82.233.75, not in whitelist rid: 6178def8-13461660-0d019127,微信原始报文:{\"errcode\":40164,\"errmsg\":\"invalid ip 101.82.233.75 ipv6 ::ffff:101.82.233.75, not in whitelist rid: 6178def8-13461660-0d019127\"}\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.extractAccessToken(BaseWxMpServiceImpl.java:454)\n at me.chanjar.weixin.mp.api.impl.WxMpServiceHttpClientImpl.getAccessToken(WxMpServiceHttpClientImpl.java:91)\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.executeInternal(BaseWxMpServiceImpl.java:399)\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.execute(BaseWxMpServiceImpl.java:363)\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.getTicket(BaseWxMpServiceImpl.java:200)\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.getJsapiTicket(BaseWxMpServiceImpl.java:222)\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.createJsapiSignature(BaseWxMpServiceImpl.java:229)\n at cn.iocoder.yudao.userserver.modules.weixin.controller.mp.WxMpController.createJsapiSignature(WxMpController.java:34)\n at cn.iocoder.yudao.userserver.modules.weixin.controller.mp.WxMpController$$FastClassBySpringCGLIB$$cde47d88.invoke()\n at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)\n at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:779)\n at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)\n at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:750)\n at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:123)\n at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)\n at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:750)\n at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:692)\n at cn.iocoder.yudao.userserver.modules.weixin.controller.mp.WxMpController$$EnhancerBySpringCGLIB$$31cb4ab8.createJsapiSignature()\n at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n at java.lang.reflect.Method.invoke(Method.java:498)\n at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:197)\n at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:141)\n at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106)\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:894)\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)\n at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\n at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1060)\n at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:962)\n at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\n at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:652)\n at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:113)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:124)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:327)\n at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115)\n at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119)\n at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126)\n at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:105)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at cn.iocoder.yudao.framework.security.core.filter.JWTAuthenticationTokenFilter.doFilterInternal(JWTAuthenticationTokenFilter.java:62)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103)\n at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90)\n at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110)\n at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:211)\n at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:183)\n at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358)\n at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:103)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.apilog.core.filter.ApiAccessLogFilter.doFilterInternal(ApiAccessLogFilter.java:59)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:103)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:93)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.tracer.core.filter.TraceFilter.doFilterInternal(TraceFilter.java:30)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)\n at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)\n at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)\n at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)\n at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\n at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)\n at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)\n at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)\n at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\n at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)\n at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1707)\n at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\n at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\n at java.lang.Thread.run(Thread.java:748)\n', 'me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl', 'BaseWxMpServiceImpl.java', 'extractAccessToken', 454, 0, NULL, 0, NULL, '2021-10-27 13:09:12', NULL, '2021-10-27 13:09:12', b'0'); COMMIT; -- ---------------------------- @@ -827,75 +208,12 @@ CREATE TABLE `inf_job_log` ( `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', PRIMARY KEY (`id`) USING BTREE -) ENGINE=InnoDB AUTO_INCREMENT=2163 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='定时任务日志表'; +) ENGINE=InnoDB AUTO_INCREMENT=3067 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='定时任务日志表'; -- ---------------------------- -- Records of inf_job_log -- ---------------------------- BEGIN; -INSERT INTO `inf_job_log` VALUES (2100, 3, 'sysUserSessionTimeoutJob', NULL, 1, '2021-10-27 08:29:49', '2021-10-27 08:29:49', 489, 1, '移除在线会话数量为 1 个', NULL, '2021-10-27 08:29:49', NULL, '2021-10-27 08:29:49', b'0'); -INSERT INTO `inf_job_log` VALUES (2101, 3, 'sysUserSessionTimeoutJob', NULL, 1, '2021-10-27 08:30:00', '2021-10-27 08:30:00', 21, 1, '移除在线会话数量为 0 个', NULL, '2021-10-27 08:30:00', NULL, '2021-10-27 08:30:00', b'0'); -INSERT INTO `inf_job_log` VALUES (2102, 3, 'sysUserSessionTimeoutJob', NULL, 1, '2021-10-27 08:31:00', '2021-10-27 08:31:00', 13, 1, '移除在线会话数量为 0 个', NULL, '2021-10-27 08:31:00', NULL, '2021-10-27 08:31:00', b'0'); -INSERT INTO `inf_job_log` VALUES (2103, 3, 'sysUserSessionTimeoutJob', NULL, 1, '2021-10-27 08:32:00', '2021-10-27 08:32:00', 13, 1, '移除在线会话数量为 0 个', NULL, '2021-10-27 08:32:00', NULL, '2021-10-27 08:32:00', b'0'); -INSERT INTO `inf_job_log` VALUES (2104, 3, 'sysUserSessionTimeoutJob', NULL, 1, '2021-10-27 08:33:00', '2021-10-27 08:33:00', 14, 1, '移除在线会话数量为 0 个', NULL, '2021-10-27 08:33:00', NULL, '2021-10-27 08:33:00', b'0'); -INSERT INTO `inf_job_log` VALUES (2105, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:33:59', '2021-10-27 08:33:59', 14, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:33:59', NULL, '2021-10-27 08:33:59', b'0'); -INSERT INTO `inf_job_log` VALUES (2106, 3, 'sysUserSessionTimeoutJob', NULL, 1, '2021-10-27 08:33:59', '2021-10-27 08:33:59', 23, 1, '移除在线会话数量为 0 个', NULL, '2021-10-27 08:33:59', NULL, '2021-10-27 08:33:59', b'0'); -INSERT INTO `inf_job_log` VALUES (2107, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:33:59', '2021-10-27 08:33:59', 10, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:33:59', NULL, '2021-10-27 08:33:59', b'0'); -INSERT INTO `inf_job_log` VALUES (2108, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:00', '2021-10-27 08:34:00', 13, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:00', NULL, '2021-10-27 08:34:00', b'0'); -INSERT INTO `inf_job_log` VALUES (2109, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:00', '2021-10-27 08:34:00', 9, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:00', NULL, '2021-10-27 08:34:00', b'0'); -INSERT INTO `inf_job_log` VALUES (2110, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:00', '2021-10-27 08:34:00', 8, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:00', NULL, '2021-10-27 08:34:00', b'0'); -INSERT INTO `inf_job_log` VALUES (2111, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:00', '2021-10-27 08:34:00', 15, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:00', NULL, '2021-10-27 08:34:00', b'0'); -INSERT INTO `inf_job_log` VALUES (2112, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:00', '2021-10-27 08:34:00', 11, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:00', NULL, '2021-10-27 08:34:00', b'0'); -INSERT INTO `inf_job_log` VALUES (2113, 3, 'sysUserSessionTimeoutJob', NULL, 1, '2021-10-27 08:34:00', '2021-10-27 08:34:00', 14, 1, '移除在线会话数量为 0 个', NULL, '2021-10-27 08:34:00', NULL, '2021-10-27 08:34:00', b'0'); -INSERT INTO `inf_job_log` VALUES (2114, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:00', '2021-10-27 08:34:00', 7, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:00', NULL, '2021-10-27 08:34:00', b'0'); -INSERT INTO `inf_job_log` VALUES (2115, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:00', '2021-10-27 08:34:00', 11, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:00', NULL, '2021-10-27 08:34:00', b'0'); -INSERT INTO `inf_job_log` VALUES (2116, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:00', '2021-10-27 08:34:00', 18, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:00', NULL, '2021-10-27 08:34:00', b'0'); -INSERT INTO `inf_job_log` VALUES (2117, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:00', '2021-10-27 08:34:00', 8, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:00', NULL, '2021-10-27 08:34:00', b'0'); -INSERT INTO `inf_job_log` VALUES (2118, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:01', '2021-10-27 08:34:01', 9, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:01', NULL, '2021-10-27 08:34:01', b'0'); -INSERT INTO `inf_job_log` VALUES (2119, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:01', '2021-10-27 08:34:01', 12, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:01', NULL, '2021-10-27 08:34:01', b'0'); -INSERT INTO `inf_job_log` VALUES (2120, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:01', '2021-10-27 08:34:01', 10, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:01', NULL, '2021-10-27 08:34:01', b'0'); -INSERT INTO `inf_job_log` VALUES (2121, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:01', '2021-10-27 08:34:01', 9, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:01', NULL, '2021-10-27 08:34:01', b'0'); -INSERT INTO `inf_job_log` VALUES (2122, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:01', '2021-10-27 08:34:01', 10, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:01', NULL, '2021-10-27 08:34:01', b'0'); -INSERT INTO `inf_job_log` VALUES (2123, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:01', '2021-10-27 08:34:01', 11, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:01', NULL, '2021-10-27 08:34:01', b'0'); -INSERT INTO `inf_job_log` VALUES (2124, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:01', '2021-10-27 08:34:01', 7, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:01', NULL, '2021-10-27 08:34:01', b'0'); -INSERT INTO `inf_job_log` VALUES (2125, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:01', '2021-10-27 08:34:01', 9, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:01', NULL, '2021-10-27 08:34:01', b'0'); -INSERT INTO `inf_job_log` VALUES (2126, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:01', '2021-10-27 08:34:01', 9, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:01', NULL, '2021-10-27 08:34:01', b'0'); -INSERT INTO `inf_job_log` VALUES (2127, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:01', '2021-10-27 08:34:01', 8, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:01', NULL, '2021-10-27 08:34:01', b'0'); -INSERT INTO `inf_job_log` VALUES (2128, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:01', '2021-10-27 08:34:01', 11, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:01', NULL, '2021-10-27 08:34:01', b'0'); -INSERT INTO `inf_job_log` VALUES (2129, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:01', '2021-10-27 08:34:01', 8, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:01', NULL, '2021-10-27 08:34:01', b'0'); -INSERT INTO `inf_job_log` VALUES (2130, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:02', '2021-10-27 08:34:02', 8, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:02', NULL, '2021-10-27 08:34:02', b'0'); -INSERT INTO `inf_job_log` VALUES (2131, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:02', '2021-10-27 08:34:02', 6, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:02', NULL, '2021-10-27 08:34:02', b'0'); -INSERT INTO `inf_job_log` VALUES (2132, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:02', '2021-10-27 08:34:02', 7, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:02', NULL, '2021-10-27 08:34:02', b'0'); -INSERT INTO `inf_job_log` VALUES (2133, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:02', '2021-10-27 08:34:02', 8, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:02', NULL, '2021-10-27 08:34:02', b'0'); -INSERT INTO `inf_job_log` VALUES (2134, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:02', '2021-10-27 08:34:02', 8, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:02', NULL, '2021-10-27 08:34:02', b'0'); -INSERT INTO `inf_job_log` VALUES (2135, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:03', '2021-10-27 08:34:03', 10, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:03', NULL, '2021-10-27 08:34:03', b'0'); -INSERT INTO `inf_job_log` VALUES (2136, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:04', '2021-10-27 08:34:04', 9, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:04', NULL, '2021-10-27 08:34:04', b'0'); -INSERT INTO `inf_job_log` VALUES (2137, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:05', '2021-10-27 08:34:05', 13, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:05', NULL, '2021-10-27 08:34:05', b'0'); -INSERT INTO `inf_job_log` VALUES (2138, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:06', '2021-10-27 08:34:06', 10, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:06', NULL, '2021-10-27 08:34:06', b'0'); -INSERT INTO `inf_job_log` VALUES (2139, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:07', '2021-10-27 08:34:07', 9, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:07', NULL, '2021-10-27 08:34:07', b'0'); -INSERT INTO `inf_job_log` VALUES (2140, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:08', '2021-10-27 08:34:08', 9, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:08', NULL, '2021-10-27 08:34:08', b'0'); -INSERT INTO `inf_job_log` VALUES (2141, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:09', '2021-10-27 08:34:09', 9, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:09', NULL, '2021-10-27 08:34:09', b'0'); -INSERT INTO `inf_job_log` VALUES (2142, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:10', '2021-10-27 08:34:10', 9, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:10', NULL, '2021-10-27 08:34:10', b'0'); -INSERT INTO `inf_job_log` VALUES (2143, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:11', '2021-10-27 08:34:11', 8, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:11', NULL, '2021-10-27 08:34:11', b'0'); -INSERT INTO `inf_job_log` VALUES (2144, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:12', '2021-10-27 08:34:12', 9, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:12', NULL, '2021-10-27 08:34:12', b'0'); -INSERT INTO `inf_job_log` VALUES (2145, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:13', '2021-10-27 08:34:13', 9, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:13', NULL, '2021-10-27 08:34:13', b'0'); -INSERT INTO `inf_job_log` VALUES (2146, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:14', '2021-10-27 08:34:14', 9, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:14', NULL, '2021-10-27 08:34:14', b'0'); -INSERT INTO `inf_job_log` VALUES (2147, 5, 'payNotifyJob', NULL, 1, '2021-10-27 08:34:43', '2021-10-27 08:35:30', 47031, 2, 'SQLException: Incorrect DATETIME value: \'NOW()\'', NULL, '2021-10-27 08:34:43', NULL, '2021-10-27 08:35:30', b'0'); -INSERT INTO `inf_job_log` VALUES (2148, 3, 'sysUserSessionTimeoutJob', NULL, 1, '2021-10-27 08:35:30', '2021-10-27 08:35:30', 14, 1, '移除在线会话数量为 0 个', NULL, '2021-10-27 08:35:30', NULL, '2021-10-27 08:35:30', b'0'); -INSERT INTO `inf_job_log` VALUES (2149, 5, 'payNotifyJob', NULL, 1, '2021-10-27 08:35:30', '2021-10-27 08:35:30', 17, 2, 'SQLException: Incorrect DATETIME value: \'NOW()\'', NULL, '2021-10-27 08:35:30', NULL, '2021-10-27 08:35:30', b'0'); -INSERT INTO `inf_job_log` VALUES (2150, 3, 'sysUserSessionTimeoutJob', NULL, 1, '2021-10-27 08:36:18', '2021-10-27 08:36:18', 52, 1, '移除在线会话数量为 0 个', NULL, '2021-10-27 08:36:18', NULL, '2021-10-27 08:36:18', b'0'); -INSERT INTO `inf_job_log` VALUES (2151, 5, 'payNotifyJob', NULL, 1, '2021-10-27 08:36:18', '2021-10-27 08:36:23', 4716, 1, '执行支付通知 0 个', NULL, '2021-10-27 08:36:18', NULL, '2021-10-27 08:36:23', b'0'); -INSERT INTO `inf_job_log` VALUES (2152, 5, 'payNotifyJob', NULL, 1, '2021-10-27 08:36:23', '2021-10-27 08:36:46', 23191, 1, '执行支付通知 0 个', NULL, '2021-10-27 08:36:23', NULL, '2021-10-27 08:36:46', b'0'); -INSERT INTO `inf_job_log` VALUES (2153, 5, 'payNotifyJob', NULL, 1, '2021-10-27 08:36:46', '2021-10-27 08:36:48', 1376, 1, '执行支付通知 0 个', NULL, '2021-10-27 08:36:46', NULL, '2021-10-27 08:36:48', b'0'); -INSERT INTO `inf_job_log` VALUES (2154, 5, 'payNotifyJob', NULL, 1, '2021-10-27 08:36:48', '2021-10-27 08:37:14', 25787, 1, '执行支付通知 0 个', NULL, '2021-10-27 08:36:48', NULL, '2021-10-27 08:37:14', b'0'); -INSERT INTO `inf_job_log` VALUES (2155, 3, 'sysUserSessionTimeoutJob', NULL, 1, '2021-10-27 08:37:14', '2021-10-27 08:37:14', 22, 1, '移除在线会话数量为 0 个', NULL, '2021-10-27 08:37:14', NULL, '2021-10-27 08:37:14', b'0'); -INSERT INTO `inf_job_log` VALUES (2156, 5, 'payNotifyJob', NULL, 1, '2021-10-27 08:37:14', '2021-10-27 08:37:15', 1016, 1, '执行支付通知 0 个', NULL, '2021-10-27 08:37:14', NULL, '2021-10-27 08:37:15', b'0'); -INSERT INTO `inf_job_log` VALUES (2157, 5, 'payNotifyJob', NULL, 1, '2021-10-27 08:37:15', '2021-10-27 08:37:15', 23, 1, '执行支付通知 0 个', NULL, '2021-10-27 08:37:15', NULL, '2021-10-27 08:37:15', b'0'); -INSERT INTO `inf_job_log` VALUES (2158, 5, 'payNotifyJob', NULL, 1, '2021-10-27 08:37:48', '2021-10-27 08:38:07', 19457, 1, '执行支付通知 4 个', NULL, '2021-10-27 08:37:48', NULL, '2021-10-27 08:38:07', b'0'); -INSERT INTO `inf_job_log` VALUES (2159, 3, 'sysUserSessionTimeoutJob', NULL, 1, '2021-10-27 08:38:02', '2021-10-27 08:38:03', 776, 1, '移除在线会话数量为 0 个', NULL, '2021-10-27 08:38:02', NULL, '2021-10-27 08:38:03', b'0'); -INSERT INTO `inf_job_log` VALUES (2160, 5, 'payNotifyJob', NULL, 1, '2021-10-27 08:38:08', '2021-10-27 08:38:40', 32324, 1, '执行支付通知 4 个', NULL, '2021-10-27 08:38:08', NULL, '2021-10-27 08:38:40', b'0'); -INSERT INTO `inf_job_log` VALUES (2161, 5, 'payNotifyJob', NULL, 1, '2021-10-27 08:38:40', '2021-10-27 08:38:59', 18496, 1, '执行支付通知 4 个', NULL, '2021-10-27 08:38:40', NULL, '2021-10-27 08:38:59', b'0'); -INSERT INTO `inf_job_log` VALUES (2162, 3, 'sysUserSessionTimeoutJob', NULL, 1, '2021-10-27 08:39:00', '2021-10-27 08:39:00', 16, 1, '移除在线会话数量为 0 个', NULL, '2021-10-27 08:39:00', NULL, '2021-10-27 08:39:00', b'0'); COMMIT; -- ---------------------------- @@ -925,10 +243,39 @@ CREATE TABLE `mbr_user` ( -- Records of mbr_user -- ---------------------------- BEGIN; -INSERT INTO `mbr_user` VALUES (245, '芋艿', 'http://www.baidu.com', 0, '15601691300', '$2a$10$0acJOIk2D25/oC87nyclE..0lzeu9DtQ/n3geP4fkun/zIVRhHJIO', '127.0.0.1', '127.0.0.1', '2021-10-10 22:34:03', '', '2021-10-10 08:51:38', NULL, '2021-10-10 14:35:10', b'0'); +INSERT INTO `mbr_user` VALUES (245, '芋艿', 'http://www.baidu.com', 0, '15601691300', '$2a$10$0acJOIk2D25/oC87nyclE..0lzeu9DtQ/n3geP4fkun/zIVRhHJIO', '127.0.0.1', '127.0.0.1', '2021-10-30 10:08:42', '', '2021-10-10 08:51:38', NULL, '2021-10-30 10:08:42', b'0'); INSERT INTO `mbr_user` VALUES (246, '', '', 0, '15601691301', '$2a$10$KLvmwoU.bvjU2u/MeWa1iOX2GDRJ2P9YqaCad10bYQCiyOaPexGwW', '127.0.0.1', '127.0.0.1', '2021-10-10 22:36:27', NULL, '2021-10-10 22:36:27', NULL, '2021-10-10 22:36:27', b'0'); COMMIT; +-- ---------------------------- +-- Table structure for oa_leave +-- ---------------------------- +DROP TABLE IF EXISTS `oa_leave`; +CREATE TABLE `oa_leave` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '请假表单主键', + `process_instance_id` varchar(64) DEFAULT NULL COMMENT '流程id', + `status` tinyint NOT NULL COMMENT '状态', + `user_id` varchar(20) NOT NULL COMMENT '申请人id', + `start_time` datetime NOT NULL COMMENT '开始时间', + `end_time` datetime NOT NULL COMMENT '结束时间', + `leave_type` varchar(20) DEFAULT NULL COMMENT '请假类型', + `reason` varchar(2000) DEFAULT NULL COMMENT '原因', + `apply_time` datetime NOT NULL COMMENT '申请时间', + `creator` varchar(64) DEFAULT '' COMMENT '创建者', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `updater` varchar(64) DEFAULT '' COMMENT '更新者', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='请假申请表'; + +-- ---------------------------- +-- Records of oa_leave +-- ---------------------------- +BEGIN; +INSERT INTO `oa_leave` VALUES (1, '659d1c4f-3943-11ec-854f-3e6e3d9df205', 2, 'admin', '2021-10-01 00:00:00', '2021-10-30 00:00:00', '1', NULL, '2021-10-12 00:00:00', '1', '2021-10-30 13:36:57', '1', '2021-10-30 13:41:53', b'0'); +COMMIT; + -- ---------------------------- -- Table structure for pay_app -- ---------------------------- @@ -1026,13 +373,12 @@ CREATE TABLE `pay_notify_log` ( `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', PRIMARY KEY (`id`) USING BTREE -) ENGINE=InnoDB AUTO_INCREMENT=93 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='支付通知 App 的日志'; +) ENGINE=InnoDB AUTO_INCREMENT=14301 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='支付通知 App 的日志'; -- ---------------------------- -- Records of pay_notify_log -- ---------------------------- BEGIN; -INSERT INTO `pay_notify_log` VALUES (92, 111, 1, '{\"code\":0,\"data\":true,\"msg\":\"\"}', 2, NULL, '2021-10-27 13:22:21', NULL, '2021-10-27 13:22:21', b'0'); COMMIT; -- ---------------------------- @@ -1412,7 +758,7 @@ CREATE TABLE `sys_dict_data` ( `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', PRIMARY KEY (`id`) USING BTREE -) ENGINE=InnoDB AUTO_INCREMENT=86 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='字典数据表'; +) ENGINE=InnoDB AUTO_INCREMENT=92 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='字典数据表'; -- ---------------------------- -- Records of sys_dict_data @@ -1493,12 +839,12 @@ INSERT INTO `sys_dict_data` VALUES (82, 102, 'Mock 登录', '102', 'sys_login_ty INSERT INTO `sys_dict_data` VALUES (83, 200, '主动登出', '200', 'sys_login_type', 0, '主动登出', '1', '2021-10-06 00:52:58', '1', '2021-10-06 00:52:58', b'0'); INSERT INTO `sys_dict_data` VALUES (84, 201, '超时登出', '201', 'sys_login_type', 0, '超时登出', '1', '2021-10-06 00:53:17', '1', '2021-10-06 00:53:17', b'0'); INSERT INTO `sys_dict_data` VALUES (85, 202, '强制登出', '202', 'sys_login_type', 0, '强制退出', '1', '2021-10-06 00:53:41', '1', '2021-10-06 00:53:41', b'0'); -INSERT INTO `sys_dict_data` VALUES (86,0,'病假','1','oa_leave_type',0,NULL,'1','2021-09-21 22:35:28','1','2021-09-21 14:59:27',0x00); -INSERT INTO `sys_dict_data` VALUES (87,1,'事假','2','oa_leave_type',0,NULL,'1','2021-09-21 22:36:11','1','2021-09-21 14:59:27',0x00); -INSERT INTO `sys_dict_data` VALUES (88,2,'婚假','3','oa_leave_type',0,NULL,'1','2021-09-21 22:36:38','1','2021-09-21 14:59:27',0x00); -INSERT INTO `sys_dict_data` VALUES (89,0,'处理中','1','oa_leave_status',0,NULL,'1','2021-09-21 22:46:46','1','2021-10-12 22:12:20',0x00); -INSERT INTO `sys_dict_data` VALUES (90,1,'流程结束','2','oa_leave_status',0,NULL,'1','2021-09-21 22:47:03','1','2021-10-12 22:12:58',0x00); -INSERT INTO `sys_dict_data` VALUES (91,2,'完成','3','oa_leave_status',0,NULL,'1','2021-09-21 22:47:25','1','2021-10-12 14:13:06',0x01); +INSERT INTO `sys_dict_data` VALUES (86, 0, '病假', '1', 'oa_leave_type', 0, NULL, '1', '2021-09-21 22:35:28', '1', '2021-09-21 14:59:27', b'0'); +INSERT INTO `sys_dict_data` VALUES (87, 1, '事假', '2', 'oa_leave_type', 0, NULL, '1', '2021-09-21 22:36:11', '1', '2021-09-21 14:59:27', b'0'); +INSERT INTO `sys_dict_data` VALUES (88, 2, '婚假', '3', 'oa_leave_type', 0, NULL, '1', '2021-09-21 22:36:38', '1', '2021-09-21 14:59:27', b'0'); +INSERT INTO `sys_dict_data` VALUES (89, 0, '处理中', '1', 'oa_leave_status', 0, NULL, '1', '2021-09-21 22:46:46', '1', '2021-10-12 22:12:20', b'0'); +INSERT INTO `sys_dict_data` VALUES (90, 1, '流程结束', '2', 'oa_leave_status', 0, NULL, '1', '2021-09-21 22:47:03', '1', '2021-10-12 22:12:58', b'0'); +INSERT INTO `sys_dict_data` VALUES (91, 2, '完成', '3', 'oa_leave_status', 0, NULL, '1', '2021-09-21 22:47:25', '1', '2021-10-12 14:13:06', b'1'); COMMIT; -- ---------------------------- @@ -1518,7 +864,7 @@ CREATE TABLE `sys_dict_type` ( `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', PRIMARY KEY (`id`) USING BTREE, UNIQUE KEY `dict_type` (`type`) -) ENGINE=InnoDB AUTO_INCREMENT=117 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='字典类型表'; +) ENGINE=InnoDB AUTO_INCREMENT=119 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='字典类型表'; -- ---------------------------- -- Records of sys_dict_type @@ -1546,9 +892,9 @@ INSERT INTO `sys_dict_type` VALUES (112, '短信模板的类型', 'sys_sms_templ INSERT INTO `sys_dict_type` VALUES (113, '短信发送状态', 'sys_sms_send_status', 0, NULL, '1', '2021-04-11 20:18:03', '1', '2021-04-11 09:30:02', b'0'); INSERT INTO `sys_dict_type` VALUES (114, '短信接收状态', 'sys_sms_receive_status', 0, NULL, '1', '2021-04-11 20:27:14', '1', '2021-04-11 20:27:14', b'0'); INSERT INTO `sys_dict_type` VALUES (115, '错误码的类型', 'sys_error_code_type', 0, NULL, '1', '2021-04-21 00:06:30', '1', '2021-04-13 22:07:12', b'0'); -INSERT INTO `sys_dict_type` VALUES (116,'请假类型','oa_leave_type',0,NULL,'1','2021-09-21 22:34:33','1','2021-09-21 15:00:38',0x00); -INSERT INTO `sys_dict_type` VALUES (117,'请假流程状态','oa_leave_status',0,NULL,'1','2021-09-21 22:46:04','1','2021-09-21 15:00:38',0x00); -INSERT INTO `sys_dict_type` VALUES (118, '登陆日志的类型', 'sys_login_type', 0, '登陆日志的类型', '1', '2021-10-06 00:50:46', '1', '2021-10-06 00:50:46', b'0'); +INSERT INTO `sys_dict_type` VALUES (116, '登陆日志的类型', 'sys_login_type', 0, '登陆日志的类型', '1', '2021-10-06 00:50:46', '1', '2021-10-06 00:50:46', b'0'); +INSERT INTO `sys_dict_type` VALUES (117, '请假类型', 'oa_leave_type', 0, NULL, '1', '2021-09-21 22:34:33', '1', '2021-09-21 15:00:38', b'0'); +INSERT INTO `sys_dict_type` VALUES (118, '请假流程状态', 'oa_leave_status', 0, NULL, '1', '2021-09-21 22:46:04', '1', '2021-09-21 15:00:38', b'0'); COMMIT; -- ---------------------------- @@ -1677,14 +1023,12 @@ CREATE TABLE `sys_login_log` ( `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', PRIMARY KEY (`id`) USING BTREE -) ENGINE=InnoDB AUTO_INCREMENT=150 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='系统访问记录'; +) ENGINE=InnoDB AUTO_INCREMENT=167 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='系统访问记录'; -- ---------------------------- -- Records of sys_login_log -- ---------------------------- BEGIN; -INSERT INTO `sys_login_log` VALUES (148, 201, '', 1, 2, 'admin', 0, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36', NULL, '2021-10-27 08:29:49', NULL, '2021-10-27 08:29:49', b'0'); -INSERT INTO `sys_login_log` VALUES (149, 100, '', 1, 2, 'admin', 0, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', NULL, '2021-10-27 08:30:10', NULL, '2021-10-27 08:30:10', b'0'); COMMIT; -- ---------------------------- @@ -1708,7 +1052,7 @@ CREATE TABLE `sys_menu` ( `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', PRIMARY KEY (`id`) USING BTREE -) ENGINE=InnoDB AUTO_INCREMENT=1117 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='菜单权限表'; +) ENGINE=InnoDB AUTO_INCREMENT=1126 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='菜单权限表'; -- ---------------------------- -- Records of sys_menu @@ -1718,7 +1062,7 @@ INSERT INTO `sys_menu` VALUES (1, '系统管理', '', 1, 1, 0, '/system', 'syste INSERT INTO `sys_menu` VALUES (2, '基础设施', '', 1, 2, 0, '/infra', 'monitor', NULL, 0, 'admin', '2021-01-05 17:03:48', '', '2021-01-20 14:18:35', b'0'); INSERT INTO `sys_menu` VALUES (3, '研发工具', '', 1, 3, 0, '/tool', 'tool', NULL, 0, 'admin', '2021-01-05 17:03:48', '', '2021-02-06 12:44:42', b'0'); INSERT INTO `sys_menu` VALUES (4, '若依官网', '', 1, 4, 0, 'http://ruoyi.vip', 'guide', NULL, 0, 'admin', '2021-01-05 17:03:48', '', '2021-01-20 21:54:28', b'1'); -INSERT INTO `sys_menu` VALUES (5,'OA 办公','',1,4,0,'/oa','people',NULL,0,'admin','2021-09-20 16:26:19','1','2021-09-20 13:55:54',0x00); +INSERT INTO `sys_menu` VALUES (5, 'OA 办公', '', 1, 4, 0, '/oa', 'people', NULL, 0, 'admin', '2021-09-20 16:26:19', '1', '2021-09-20 13:55:54', b'0'); INSERT INTO `sys_menu` VALUES (100, '用户管理', 'system:user:list', 2, 1, 1, 'user', 'user', 'system/user/index', 0, 'admin', '2021-01-05 17:03:48', '', '2021-01-05 22:36:45', b'0'); INSERT INTO `sys_menu` VALUES (101, '角色管理', '', 2, 2, 1, 'role', 'peoples', 'system/role/index', 0, 'admin', '2021-01-05 17:03:48', '1', '2021-03-14 22:04:49', b'0'); INSERT INTO `sys_menu` VALUES (102, '菜单管理', '', 2, 3, 1, 'menu', 'tree-table', 'system/menu/index', 0, 'admin', '2021-01-05 17:03:48', '1', '2021-03-14 22:04:28', b'0'); @@ -1847,15 +1191,14 @@ INSERT INTO `sys_menu` VALUES (1113, '错误码更新', 'system:error-code:updat INSERT INTO `sys_menu` VALUES (1114, '错误码删除', 'system:error-code:delete', 3, 4, 1110, '', '', '', 0, '', '2021-04-13 21:46:42', '', '2021-04-13 22:09:51', b'0'); INSERT INTO `sys_menu` VALUES (1115, '错误码导出', 'system:error-code:export', 3, 5, 1110, '', '', '', 0, '', '2021-04-13 21:46:42', '', '2021-04-13 22:09:55', b'0'); INSERT INTO `sys_menu` VALUES (1116, '日志中心', '', 2, 8, 2, 'log-center', 'log', 'infra/skywalking/log', 0, '1', '2021-04-26 22:35:45', '1', '2021-04-26 22:37:25', b'0'); -INSERT INTO `sys_menu` VALUES (1118,'请假查询','',2,0,5,'oa/leave','user','oa/leave/index',0,'','2021-09-20 08:51:03','1','2021-10-12 22:19:02',0x00); -INSERT INTO `sys_menu` VALUES (1119,'请假申请查询','oa:leave:query',3,1,1118,'','','',0,'','2021-09-20 08:51:03','','2021-09-20 08:51:03',0x00); -INSERT INTO `sys_menu` VALUES (1120,'请假申请创建','oa:leave:create',3,2,1118,'','','',0,'','2021-09-20 08:51:03','','2021-09-20 08:51:03',0x00); -INSERT INTO `sys_menu` VALUES (1121,'请假申请更新','oa:leave:update',3,3,1118,'','','',0,'','2021-09-20 08:51:03','','2021-09-20 08:51:03',0x00); -INSERT INTO `sys_menu` VALUES (1122,'请假申请删除','oa:leave:delete',3,4,1118,'','','',0,'','2021-09-20 08:51:03','','2021-09-20 08:51:03',0x00); -INSERT INTO `sys_menu` VALUES (1123,'请假申请导出','oa:leave:export',3,5,1118,'','','',0,'','2021-09-20 08:51:03','','2021-09-20 08:51:03',0x00); -INSERT INTO `sys_menu` VALUES (1124,'待办任务','',2,2,5,'todo','edit','oa/todo/index',0,'1','2021-09-20 22:10:09','1','2021-09-21 23:17:12',0x00); -INSERT INTO `sys_menu` VALUES (1125,'流程申请','',2,3,5,'flow','form','oa/flow/index',0,'1','2021-10-23 22:10:09','1','2021-10-23 23:17:12',0x00); - +INSERT INTO `sys_menu` VALUES (1118, '请假查询', '', 2, 0, 5, 'oa/leave', 'user', 'oa/leave/index', 0, '', '2021-09-20 08:51:03', '1', '2021-10-12 22:19:02', b'0'); +INSERT INTO `sys_menu` VALUES (1119, '请假申请查询', 'oa:leave:query', 3, 1, 1118, '', '', '', 0, '', '2021-09-20 08:51:03', '', '2021-09-20 08:51:03', b'0'); +INSERT INTO `sys_menu` VALUES (1120, '请假申请创建', 'oa:leave:create', 3, 2, 1118, '', '', '', 0, '', '2021-09-20 08:51:03', '', '2021-09-20 08:51:03', b'0'); +INSERT INTO `sys_menu` VALUES (1121, '请假申请更新', 'oa:leave:update', 3, 3, 1118, '', '', '', 0, '', '2021-09-20 08:51:03', '', '2021-09-20 08:51:03', b'0'); +INSERT INTO `sys_menu` VALUES (1122, '请假申请删除', 'oa:leave:delete', 3, 4, 1118, '', '', '', 0, '', '2021-09-20 08:51:03', '', '2021-09-20 08:51:03', b'0'); +INSERT INTO `sys_menu` VALUES (1123, '请假申请导出', 'oa:leave:export', 3, 5, 1118, '', '', '', 0, '', '2021-09-20 08:51:03', '', '2021-09-20 08:51:03', b'0'); +INSERT INTO `sys_menu` VALUES (1124, '待办任务', '', 2, 2, 5, 'todo', 'edit', 'oa/todo/index', 0, '1', '2021-09-20 22:10:09', '1', '2021-09-21 23:17:12', b'0'); +INSERT INTO `sys_menu` VALUES (1125, '流程申请', '', 2, 3, 5, 'flow', 'form', 'oa/flow/index', 0, '1', '2021-10-23 22:10:09', '1', '2021-10-23 23:17:12', b'0'); COMMIT; -- ---------------------------- @@ -1915,16 +1258,12 @@ CREATE TABLE `sys_operate_log` ( `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', PRIMARY KEY (`id`) USING BTREE -) ENGINE=InnoDB AUTO_INCREMENT=62 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='操作日志记录'; +) ENGINE=InnoDB AUTO_INCREMENT=64 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='操作日志记录'; -- ---------------------------- -- Records of sys_operate_log -- ---------------------------- BEGIN; -INSERT INTO `sys_operate_log` VALUES (58, '', 1, '定时任务', '创建定时任务', 2, '', '', 'POST', '/api/infra/job/create', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', 'CommonResult cn.iocoder.yudao.adminserver.modules.infra.controller.job.InfJobController.createJob(InfJobCreateReqVO)', '{\"createReqVO\":{\"name\":\"payNotifyJob\",\"handlerParam\":null,\"cronExpression\":\"* * * * * ?\",\"retryCount\":0,\"retryInterval\":0,\"monitorTimeout\":null,\"handlerName\":\"支付通知 Job\"}}', '2021-10-27 08:33:35', 57, 0, '', '4', NULL, '2021-10-27 08:33:35', NULL, '2021-10-27 08:33:35', b'0'); -INSERT INTO `sys_operate_log` VALUES (59, '', 1, '定时任务', '触发定时任务', 3, '', '', 'PUT', '/api/infra/job/trigger', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', 'CommonResult cn.iocoder.yudao.adminserver.modules.infra.controller.job.InfJobController.triggerJob(Long)', '{\"id\":3}', '2021-10-27 08:33:59', 35, 0, '', 'true', NULL, '2021-10-27 08:33:59', NULL, '2021-10-27 08:33:59', b'0'); -INSERT INTO `sys_operate_log` VALUES (60, '', 1, '定时任务', '删除定时任务', 4, '', '', 'DELETE', '/api/infra/job/delete', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', 'CommonResult cn.iocoder.yudao.adminserver.modules.infra.controller.job.InfJobController.deleteJob(Long)', '{\"id\":4}', '2021-10-27 08:34:15', 50, 0, '', 'true', NULL, '2021-10-27 08:34:15', NULL, '2021-10-27 08:34:15', b'0'); -INSERT INTO `sys_operate_log` VALUES (61, '', 1, '定时任务', '创建定时任务', 2, '', '', 'POST', '/api/infra/job/create', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', 'CommonResult cn.iocoder.yudao.adminserver.modules.infra.controller.job.InfJobController.createJob(InfJobCreateReqVO)', '{\"createReqVO\":{\"name\":\"支付通知 Job\",\"handlerParam\":null,\"cronExpression\":\"* * * * * ?\",\"retryCount\":0,\"retryInterval\":0,\"monitorTimeout\":null,\"handlerName\":\"payNotifyJob\"}}', '2021-10-27 08:34:42', 51, 0, '', '5', NULL, '2021-10-27 08:34:42', NULL, '2021-10-27 08:34:42', b'0'); COMMIT; -- ---------------------------- @@ -2334,13 +1673,14 @@ CREATE TABLE `sys_social_user` ( `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', PRIMARY KEY (`id`) USING BTREE -) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC COMMENT='社交用户'; +) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC COMMENT='社交用户'; -- ---------------------------- -- Records of sys_social_user -- ---------------------------- BEGIN; INSERT INTO `sys_social_user` VALUES (4, 1, 2, 20, 'IPRmJ0wvBptiPIlGEZiPewGwiEiE', NULL, 'IPRmJ0wvBptiPIlGEZiPewGwiEiE', '{\"accessToken\":null,\"expireIn\":0,\"refreshToken\":null,\"refreshTokenExpireIn\":0,\"uid\":null,\"openId\":\"0TvabQWZs9g6UedEWZKSegiEiE\",\"accessCode\":null,\"unionId\":\"IPRmJ0wvBptiPIlGEZiPewGwiEiE\",\"scope\":null,\"tokenType\":null,\"idToken\":null,\"macAlgorithm\":null,\"macKey\":null,\"code\":null,\"oauthToken\":null,\"oauthTokenSecret\":null,\"userId\":null,\"screenName\":null,\"oauthCallbackConfirmed\":null}', '王文斌(芋艿)(正在输出)', NULL, '{\"nick\":\"王文斌(芋艿)(正在输出)\",\"unionid\":\"IPRmJ0wvBptiPIlGEZiPewGwiEiE\",\"dingId\":\"$:LWCP_v1:$r28ct/waSBPp5Gk7a6kDXA==\",\"openid\":\"0TvabQWZs9g6UedEWZKSegiEiE\",\"main_org_auth_high_level\":false}', NULL, '2021-10-06 00:43:17', NULL, '2021-10-06 00:43:34', b'0'); +INSERT INTO `sys_social_user` VALUES (5, 245, 1, 33, 'osFZg6JVT_mbOOXfeCSxmRv-Cs_4', NULL, 'osFZg6JVT_mbOOXfeCSxmRv-Cs_4', '{\"accessToken\":null,\"expireIn\":0,\"refreshToken\":null,\"refreshTokenExpireIn\":0,\"uid\":null,\"openId\":\"osFZg6JVT_mbOOXfeCSxmRv-Cs_4\",\"accessCode\":null,\"unionId\":null,\"scope\":null,\"tokenType\":null,\"idToken\":null,\"macAlgorithm\":null,\"macKey\":null,\"code\":null,\"oauthToken\":null,\"oauthTokenSecret\":null,\"userId\":null,\"screenName\":null,\"oauthCallbackConfirmed\":null,\"miniSessionKey\":\"7BK7xtyJleOWEXTHhW6eDg==\"}', '', '', 'null', NULL, '2021-10-30 10:08:42', NULL, '2021-10-30 10:08:42', b'0'); COMMIT; -- ---------------------------- @@ -2374,12 +1714,12 @@ CREATE TABLE `sys_user` ( -- Records of sys_user -- ---------------------------- BEGIN; -INSERT INTO `sys_user` VALUES (1, 'admin', '$2a$10$0acJOIk2D25/oC87nyclE..0lzeu9DtQ/n3geP4fkun/zIVRhHJIO', '芋道源码', '管理员', 103, '[1]', 'aoteman@126.com', '15612345678', 1, 'http://127.0.0.1:48080/api/infra/file/get/7e7ed694-2242-46cf-9ac9-0709debcc22f', 0, '127.0.0.1', '2021-10-27 08:30:10', 'admin', '2021-01-05 17:03:47', NULL, '2021-10-27 08:30:10', b'0'); +INSERT INTO `sys_user` VALUES (1, 'admin', '$2a$10$0acJOIk2D25/oC87nyclE..0lzeu9DtQ/n3geP4fkun/zIVRhHJIO', '芋道源码', '管理员', 103, '[1]', 'aoteman@126.com', '15612345678', 1, 'http://127.0.0.1:48080/api/infra/file/get/7e7ed694-2242-46cf-9ac9-0709debcc22f', 0, '127.0.0.1', '2021-10-30 13:41:37', 'admin', '2021-01-05 17:03:47', NULL, '2021-10-30 13:41:37', b'0'); INSERT INTO `sys_user` VALUES (2, 'ry', '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', '若依', '测试员', 105, '[2]', 'ry@qq.com', '15666666666', 1, '', 0, '127.0.0.1', '2021-01-05 17:03:47', 'admin', '2021-01-05 17:03:47', '', '2021-04-01 04:50:36', b'1'); INSERT INTO `sys_user` VALUES (100, 'yudao', '$2a$10$11U48RhyJ5pSBYWSn12AD./ld671.ycSzJHbyrtpeoMeYiw31eo8a', '芋道', '不要吓我', 100, '[1]', 'yudao@iocoder.cn', '15601691300', 1, '', 1, '', NULL, '', '2021-01-07 09:07:17', '1', '2021-03-14 22:35:17', b'0'); INSERT INTO `sys_user` VALUES (103, 'yuanma', '', '源码', NULL, 100, NULL, 'yuanma@iocoder.cn', '15601701300', 0, '', 0, '', NULL, '', '2021-01-13 23:50:35', '', '2021-01-13 23:50:35', b'0'); INSERT INTO `sys_user` VALUES (104, 'test', '$2a$10$.TOFpaIiI3PzEwkGrNq0Eu6Cc3rOqJMxTb1DqeSEM8StxaGPBRKoi', '测试号', NULL, 100, '[]', '', '15601691200', 1, '', 0, '', NULL, '', '2021-01-21 02:13:53', '1', '2021-03-14 22:36:38', b'0'); -INSERT INTO `sys_user` VALUES (105,'hradmin','$2a$10$JEhJOL25X1eMnFfR3PILo.MoAljf29YukpL2w6H9GvVGjmqOCuh.O','hr-mgr','hr 管理员',100,'[3]','','',1,'',0,'',NULL,'1','2021-09-25 16:50:41','1','2021-09-25 01:14:09',0x00); +INSERT INTO `sys_user` VALUES (105, 'hradmin', '$2a$10$JEhJOL25X1eMnFfR3PILo.MoAljf29YukpL2w6H9GvVGjmqOCuh.O', 'hr-mgr', 'hr 管理员', 100, '[3]', '', '', 1, '', 0, '127.0.0.1', '2021-10-30 13:41:04', '1', '2021-09-25 16:50:41', NULL, '2021-10-30 13:41:04', b'0'); INSERT INTO `sys_user` VALUES (106, 'zhijiantianya', '$2a$10$Y0hSfV2udA8quqMeWukhTuHEoKpQ5tDhclG8WUWSOH7o/MGw185Ti', '芋道源码', '', NULL, NULL, '', '', 3, 'https://portrait.gitee.com/uploads/avatars/user/0/176_zhijiantianya_1578913741.png', 0, '', NULL, NULL, '2021-09-28 09:40:59', NULL, '2021-09-28 09:40:59', b'0'); COMMIT; @@ -2397,7 +1737,7 @@ CREATE TABLE `sys_user_role` ( `update_time` datetime DEFAULT NULL COMMENT '更新时间', `deleted` bit(1) DEFAULT b'0' COMMENT '是否删除', PRIMARY KEY (`id`) USING BTREE -) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='用户和角色关联表'; +) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='用户和角色关联表'; -- ---------------------------- -- Records of sys_user_role @@ -2410,8 +1750,8 @@ INSERT INTO `sys_user_role` VALUES (4, 100, 101, '', NULL, '', NULL, b'0'); INSERT INTO `sys_user_role` VALUES (5, 100, 1, '', NULL, '', NULL, b'0'); INSERT INTO `sys_user_role` VALUES (6, 100, 2, '', NULL, '', NULL, b'0'); INSERT INTO `sys_user_role` VALUES (7, 104, 101, '', NULL, '', NULL, b'0'); -INSERT INTO `sys_user_role` VALUES (8,105,1,'1','2021-09-25 16:51:44','1','2021-09-25 16:51:44',0x00); -INSERT INTO `sys_user_role` VALUES (9, 106, 1, NULL, '2021-09-28 09:40:59', NULL, '2021-09-28 09:40:59', b'0'); +INSERT INTO `sys_user_role` VALUES (8, 106, 1, NULL, '2021-09-28 09:40:59', NULL, '2021-09-28 09:40:59', b'0'); +INSERT INTO `sys_user_role` VALUES (9, 105, 1, '1', '2021-10-30 13:40:48', '1', '2021-10-30 13:40:48', b'0'); COMMIT; -- ---------------------------- @@ -2440,16 +1780,23 @@ CREATE TABLE `sys_user_session` ( BEGIN; INSERT INTO `sys_user_session` VALUES ('02f40128d6ae47caae7ebe1eac9300b6', 245, 1, '2021-10-10 18:50:20', '15601691300', '127.0.0.1', 'Apache-HttpClient/4.5.13 (Java/11.0.11)', NULL, '2021-10-10 18:20:20', NULL, '2021-10-10 14:47:27', b'1'); INSERT INTO `sys_user_session` VALUES ('112ac5cf97a34607b13ad0a5831df9af', 1, 2, '2021-10-12 09:34:24', 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36', NULL, '2021-10-12 08:20:37', NULL, '2021-10-12 01:37:21', b'1'); +INSERT INTO `sys_user_session` VALUES ('2308c190eb504bafadac3b322df759dc', 1, 2, '2021-10-30 14:10:10', 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', NULL, '2021-10-30 13:40:10', NULL, '2021-10-30 05:40:52', b'1'); INSERT INTO `sys_user_session` VALUES ('549f940264cc4edf8ed78a9a0bafd7db', 245, 1, '2021-10-10 17:25:06', '15601691300', '127.0.0.1', 'Apache-HttpClient/4.5.13 (Java/11.0.11)', NULL, '2021-10-10 16:55:06', NULL, '2021-10-10 10:17:26', b'1'); INSERT INTO `sys_user_session` VALUES ('5c8f2bb378aa4f8b92ef5b52a6ab282b', 245, 1, '2021-10-10 18:50:07', '15601691300', '127.0.0.1', 'Apache-HttpClient/4.5.13 (Java/11.0.11)', NULL, '2021-10-10 18:20:07', NULL, '2021-10-10 14:47:27', b'1'); -INSERT INTO `sys_user_session` VALUES ('5efe7272e0414d38be45f26228be6dfd', 1, 2, '2021-10-27 09:00:10', 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', NULL, '2021-10-27 08:30:10', NULL, '2021-10-27 08:30:10', b'0'); +INSERT INTO `sys_user_session` VALUES ('5efe7272e0414d38be45f26228be6dfd', 1, 2, '2021-10-27 09:00:10', 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', NULL, '2021-10-27 08:30:10', NULL, '2021-10-30 05:27:40', b'1'); INSERT INTO `sys_user_session` VALUES ('78c34a300fe449e391d8187a61164b6e', 1, 2, '2021-10-11 08:35:34', 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36', NULL, '2021-10-11 07:55:00', NULL, '2021-10-12 00:19:28', b'1'); +INSERT INTO `sys_user_session` VALUES ('793ee411b8ba409d8f35c6c521e3b75d', 105, 2, '2021-10-30 14:11:04', 'hradmin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', NULL, '2021-10-30 13:41:04', NULL, '2021-10-30 05:41:30', b'1'); INSERT INTO `sys_user_session` VALUES ('8f4d894746394901bcf7dcf6d4321868', 245, 1, '2021-10-10 23:04:03', '15601691300', '127.0.0.1', 'Apache-HttpClient/4.5.13 (Java/11.0.11)', NULL, '2021-10-10 22:34:03', NULL, '2021-10-10 23:50:42', b'1'); +INSERT INTO `sys_user_session` VALUES ('99f61b1508a74ea2b895aeb65d3f381f', 105, 2, '2021-10-30 14:08:10', 'hradmin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', NULL, '2021-10-30 13:38:10', NULL, '2021-10-30 05:38:19', b'1'); INSERT INTO `sys_user_session` VALUES ('9ddb53d391f9413cbd460ec2461ceeb0', 1, 2, '2021-10-12 10:07:20', 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36', NULL, '2021-10-12 09:22:43', NULL, '2021-10-27 00:29:48', b'1'); +INSERT INTO `sys_user_session` VALUES ('b3f0a1aa486343788305243bd222a22d', 1, 2, '2021-10-30 14:04:52', 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', NULL, '2021-10-30 13:34:52', NULL, '2021-10-30 05:37:30', b'1'); +INSERT INTO `sys_user_session` VALUES ('b5849f33630144a6911854c86c19e6f1', 245, 1, '2021-10-30 10:38:42', '15601691300', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E217 MicroMessenger/6.8.0(0x16080000) NetType/WIFI Language/en Branch/Br_trunk MiniProgramEnv/Mac', NULL, '2021-10-30 10:08:42', NULL, '2021-10-30 05:27:40', b'1'); INSERT INTO `sys_user_session` VALUES ('c1b76bdaf2c146c581caa4d7fd81ee66', 246, 1, '2021-10-10 23:06:27', '15601691301', '127.0.0.1', 'Apache-HttpClient/4.5.13 (Java/11.0.11)', NULL, '2021-10-10 22:36:27', NULL, '2021-10-10 14:50:05', b'1'); +INSERT INTO `sys_user_session` VALUES ('d6b4180a11a547b28d57e44a7fcf0dda', 1, 2, '2021-10-30 14:11:37', 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', NULL, '2021-10-30 13:41:37', NULL, '2021-10-30 13:41:37', b'0'); INSERT INTO `sys_user_session` VALUES ('dcb1de2e2ef14e37bca3e64f5bbb603f', 245, 1, '2021-10-10 18:55:16', '15601691300', '127.0.0.1', 'Apache-HttpClient/4.5.13 (Java/11.0.11)', NULL, '2021-10-10 18:25:16', NULL, '2021-10-10 14:47:27', b'1'); INSERT INTO `sys_user_session` VALUES ('e206ac2498054d0c822392e599f6151a', 1, 2, '2021-10-10 00:17:31', 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36', NULL, '2021-10-09 23:47:31', NULL, '2021-10-10 10:17:26', b'1'); INSERT INTO `sys_user_session` VALUES ('e24b67872cfb4c698aa727006820eafc', 245, 1, '2021-10-10 18:49:55', '15601691300', '127.0.0.1', 'Apache-HttpClient/4.5.13 (Java/11.0.11)', NULL, '2021-10-10 18:19:55', NULL, '2021-10-10 14:47:27', b'1'); +INSERT INTO `sys_user_session` VALUES ('ea1fdc1e14444b59989f0d80acbfe0a7', 105, 2, '2021-10-30 14:09:50', 'hradmin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', NULL, '2021-10-30 13:39:50', NULL, '2021-10-30 05:39:56', b'1'); COMMIT; -- ---------------------------- @@ -2764,27 +2111,4 @@ INSERT INTO `tool_test_demo` VALUES (106, '老五1', 0, 1, 1, '牛逼哈2', '', INSERT INTO `tool_test_demo` VALUES (107, '哈哈哈哈', 1, 0, 1, 'biubiubui', '', '2021-02-06 14:00:54', '', '2021-02-06 14:00:54', b'0'); COMMIT; - -DROP TABLE IF EXISTS `oa_leave`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `oa_leave` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '请假表单主键', - `process_instance_id` varchar(64) DEFAULT NULL COMMENT '流程id', - `status` tinyint(4) NOT NULL COMMENT '状态', - `user_id` varchar(20) NOT NULL COMMENT '申请人id', - `start_time` datetime NOT NULL COMMENT '开始时间', - `end_time` datetime NOT NULL COMMENT '结束时间', - `leave_type` varchar(20) DEFAULT NULL COMMENT '请假类型', - `reason` varchar(2000) DEFAULT NULL COMMENT '原因', - `apply_time` datetime NOT NULL COMMENT '申请时间', - `creator` varchar(64) DEFAULT '' COMMENT '创建者', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `updater` varchar(64) DEFAULT '' COMMENT '更新者', - `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', - PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='请假申请表'; -/*!40101 SET character_set_client = @saved_cs_client */; - SET FOREIGN_KEY_CHECKS = 1; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/oa/OaLeaveController.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/oa/OaLeaveController.java index 679c667da4..9331ec17ce 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/oa/OaLeaveController.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/oa/OaLeaveController.java @@ -1,33 +1,32 @@ package cn.iocoder.yudao.adminserver.modules.activiti.controller.oa; -import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; -import org.springframework.web.bind.annotation.*; -import javax.annotation.Resource; -import org.springframework.validation.annotation.Validated; -import org.springframework.security.access.prepost.PreAuthorize; - -import io.swagger.annotations.*; - -import javax.validation.constraints.*; -import javax.validation.*; -import javax.servlet.http.*; -import java.util.*; -import java.io.IOException; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.pojo.CommonResult; -import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; - -import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; - -import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; -import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.*; - import cn.iocoder.yudao.adminserver.modules.activiti.controller.oa.vo.*; -import cn.iocoder.yudao.adminserver.modules.activiti.dal.dataobject.oa.OaLeaveDO; import cn.iocoder.yudao.adminserver.modules.activiti.convert.oa.OaLeaveConvert; +import cn.iocoder.yudao.adminserver.modules.activiti.dal.dataobject.oa.OaLeaveDO; import cn.iocoder.yudao.adminserver.modules.activiti.service.oa.OaLeaveService; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; +import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; +import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; +import java.io.IOException; +import java.util.Collection; +import java.util.List; + +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; +import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; + +// TODO @jason:Oa=》OA 会不会好点,名词缩写哈 @Api(tags = "请假申请") @RestController @RequestMapping("/oa/leave") @@ -41,6 +40,7 @@ public class OaLeaveController { @ApiOperation("创建请假申请") @PreAuthorize("@ss.hasPermission('oa:leave:create')") public CommonResult createLeave(@Valid @RequestBody OaLeaveCreateReqVO createReqVO) { + // TODO @芋艿:processKey 自己去理解下。不过得把 leave 变成枚举 createReqVO.setProcessKey("leave"); return success(leaveService.createLeave(createReqVO)); } @@ -48,6 +48,7 @@ public class OaLeaveController { @PostMapping("/form-key/create") @ApiOperation("创建外置请假申请") public CommonResult createFormKeyLeave(@Valid @RequestBody OaLeaveCreateReqVO createReqVO) { + // TODO @芋艿:processKey 自己去理解下。不过得把 formkey 变成枚举 createReqVO.setProcessKey("leave-formkey"); return success(leaveService.createLeave(createReqVO)); } @@ -92,6 +93,7 @@ public class OaLeaveController { @PreAuthorize("@ss.hasPermission('oa:leave:query')") public CommonResult> getLeavePage(@Valid OaLeavePageReqVO pageVO) { //值查询自己申请请假 + // TODO @芋艿:这里的传值,到底前端搞,还是后端搞。 pageVO.setUserId(SecurityFrameworkUtils.getLoginUser().getUsername()); PageResult pageResult = leaveService.getLeavePage(pageVO); return success(OaLeaveConvert.INSTANCE.convertPage(pageResult)); diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/oa/vo/OaLeaveUpdateReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/oa/vo/OaLeaveUpdateReqVO.java index 17a229d5fd..eb02b3ca2a 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/oa/vo/OaLeaveUpdateReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/oa/vo/OaLeaveUpdateReqVO.java @@ -1,9 +1,13 @@ package cn.iocoder.yudao.adminserver.modules.activiti.controller.oa.vo; -import lombok.*; -import java.util.*; -import io.swagger.annotations.*; -import javax.validation.constraints.*; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import javax.validation.constraints.NotNull; +import java.util.Map; @ApiModel("请假申请更新 Request VO") @Data @@ -15,6 +19,7 @@ public class OaLeaveUpdateReqVO extends OaLeaveBaseVO { @NotNull(message = "请假表单主键不能为空") private Long id; + // TODO @json:swagger 和 validator 的注解要加哈。 private String taskId; @@ -22,4 +27,6 @@ public class OaLeaveUpdateReqVO extends OaLeaveBaseVO { private Map variables; + // TODO @芋艿:variables 的作用是啥。 + } diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/workflow/ProcessDefinitionController.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/workflow/ProcessDefinitionController.java index d5241263c2..a47867c49e 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/workflow/ProcessDefinitionController.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/workflow/ProcessDefinitionController.java @@ -3,8 +3,6 @@ package cn.iocoder.yudao.adminserver.modules.activiti.controller.workflow; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import org.activiti.api.process.runtime.ProcessRuntime; import org.activiti.engine.RepositoryService; -import org.activiti.engine.repository.ProcessDefinition; -import org.activiti.engine.repository.ProcessDefinitionQuery; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; @@ -12,6 +10,7 @@ import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; +// TODO @json:swagger 和 validation 的注解,后续要补全下哈。可以等 workflow 基本写的差不多之后 @RestController @RequestMapping("/workflow/process/definition") public class ProcessDefinitionController { @@ -31,4 +30,5 @@ public class ProcessDefinitionController { // processRuntime.processDefinition(processDefinition.getId()).getFormKey(); return CommonResult.success("/flow/leave/apply"); } + } diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/workflow/TaskController.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/workflow/TaskController.java index 9309cca9e3..62ef504142 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/workflow/TaskController.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/workflow/TaskController.java @@ -14,6 +14,7 @@ import java.util.List; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; +// TODO @json:swagger 和 validation 的注解,后续要补全下哈。可以等 workflow 基本写的差不多之后 @Api(tags = "工作流待办任务") @RestController @RequestMapping("/workflow/task") @@ -22,8 +23,6 @@ public class TaskController { @Resource private TaskService taskService; - - @GetMapping("/todo/page") @ApiOperation("获取待办任务分页") public CommonResult> getTodoTaskPage(@Valid TodoTaskPageReqVO pageVO) { @@ -37,15 +36,14 @@ public class TaskController { return success(true); } - @PostMapping("/task-steps") public CommonResult getTaskSteps(@RequestBody TaskQueryReqVO taskQuery) { - return success( taskService.getTaskSteps(taskQuery)); + return success(taskService.getTaskSteps(taskQuery)); } @PostMapping("/formKey") public CommonResult getTaskFormKey(@RequestBody TaskQueryReqVO taskQuery) { - return success( taskService.getTaskFormKey(taskQuery)); + return success(taskService.getTaskFormKey(taskQuery)); } @PostMapping("/complete") @@ -54,9 +52,9 @@ public class TaskController { return success(true); } - @GetMapping("/process/history-steps") public CommonResult> getHistorySteps(@RequestParam("id") String processInstanceId) { - return success( taskService.getHistorySteps(processInstanceId)); + return success(taskService.getHistorySteps(processInstanceId)); } + } diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/package-info.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/package-info.java new file mode 100644 index 0000000000..94828f5a79 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/package-info.java @@ -0,0 +1,2 @@ +// TODO @芋艿:思考下 activiti、oa 的定位,边界,模块的拆分 +package cn.iocoder.yudao.adminserver.modules.activiti; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/oa/ReportBackEndProcessor.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/oa/ReportBackEndProcessor.java index 44991ec8ca..c27ba23253 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/oa/ReportBackEndProcessor.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/oa/ReportBackEndProcessor.java @@ -4,9 +4,7 @@ import cn.iocoder.yudao.adminserver.modules.activiti.dal.dataobject.oa.OaLeaveDO import cn.iocoder.yudao.adminserver.modules.activiti.dal.mysql.oa.OaLeaveMapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import org.activiti.engine.delegate.DelegateExecution; -import org.activiti.engine.delegate.DelegateTask; import org.activiti.engine.delegate.ExecutionListener; -import org.activiti.engine.delegate.TaskListener; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; @@ -34,10 +32,12 @@ public class ReportBackEndProcessor implements ExecutionListener { @Transactional(rollbackFor = Exception.class) public void notify(DelegateExecution delegateExecution) { final String businessKey = delegateExecution.getProcessInstanceBusinessKey(); + // TODO @json:service 不要出现 dao 的元素,例如说 UpdateWrapper。这里,我们可以调用 updateById 方法 UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id", Long.valueOf(businessKey)); OaLeaveDO updateDo = new OaLeaveDO(); - updateDo.setStatus(2); + updateDo.setStatus(2); // TODO @json:status 要枚举起来,不要出现 magic number leaveMapper.update(updateDo, updateWrapper); } + } diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/oa/impl/OaLeaveServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/oa/impl/OaLeaveServiceImpl.java index 0e78ef2b43..27446a9479 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/oa/impl/OaLeaveServiceImpl.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/oa/impl/OaLeaveServiceImpl.java @@ -1,5 +1,14 @@ package cn.iocoder.yudao.adminserver.modules.activiti.service.oa.impl; +import cn.iocoder.yudao.adminserver.modules.activiti.controller.oa.vo.OaLeaveCreateReqVO; +import cn.iocoder.yudao.adminserver.modules.activiti.controller.oa.vo.OaLeaveExportReqVO; +import cn.iocoder.yudao.adminserver.modules.activiti.controller.oa.vo.OaLeavePageReqVO; +import cn.iocoder.yudao.adminserver.modules.activiti.controller.oa.vo.OaLeaveUpdateReqVO; +import cn.iocoder.yudao.adminserver.modules.activiti.convert.oa.OaLeaveConvert; +import cn.iocoder.yudao.adminserver.modules.activiti.dal.dataobject.oa.OaLeaveDO; +import cn.iocoder.yudao.adminserver.modules.activiti.dal.mysql.oa.OaLeaveMapper; +import cn.iocoder.yudao.adminserver.modules.activiti.service.oa.OaLeaveService; +import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import org.activiti.api.task.model.Task; @@ -7,24 +16,18 @@ import org.activiti.api.task.model.builders.TaskPayloadBuilder; import org.activiti.api.task.runtime.TaskRuntime; import org.activiti.engine.RuntimeService; import org.activiti.engine.runtime.ProcessInstance; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import javax.annotation.Resource; - import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; -import java.util.*; -import cn.iocoder.yudao.adminserver.modules.activiti.controller.oa.vo.*; -import cn.iocoder.yudao.adminserver.modules.activiti.dal.dataobject.oa.OaLeaveDO; -import cn.iocoder.yudao.framework.common.pojo.PageResult; - -import cn.iocoder.yudao.adminserver.modules.activiti.convert.oa.OaLeaveConvert; -import cn.iocoder.yudao.adminserver.modules.activiti.dal.mysql.oa.OaLeaveMapper; -import cn.iocoder.yudao.adminserver.modules.activiti.service.oa.OaLeaveService; +import javax.annotation.Resource; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import static cn.iocoder.yudao.adminserver.modules.activiti.enums.OaErrorCodeConstants.LEAVE_NOT_EXISTS; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.iocoder.yudao.adminserver.modules.activiti.enums.OaErrorCodeConstants.*; /** * 请假申请 Service 实现类 @@ -50,35 +53,34 @@ public class OaLeaveServiceImpl implements OaLeaveService { @Override @Transactional(rollbackFor = Exception.class) public Long createLeave(OaLeaveCreateReqVO createReqVO) { - // 插入 + // 插入 OA 请假单 OaLeaveDO leave = OaLeaveConvert.INSTANCE.convert(createReqVO); leave.setStatus(1); leave.setUserId(SecurityFrameworkUtils.getLoginUser().getUsername()); leaveMapper.insert(leave); + // 创建工作流 Map variables = new HashMap<>(); - //如何得到部门领导人, 暂时写死 - variables.put("deptLeader", "admin"); - final Long id = leave.getId(); + // 如何得到部门领导人,暂时写死 + variables.put("deptLeader", "admin"); // TODO @芋艿:需要部门的负责人 + Long id = leave.getId(); String businessKey = String.valueOf(id); ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(createReqVO.getProcessKey(), businessKey, variables); + String processInstanceId = processInstance.getProcessInstanceId(); - final String processInstanceId = processInstance.getProcessInstanceId(); - - + // TODO @json:service 不要出现 dao 的元素,例如说 UpdateWrapper。这里,我们可以调用 updateById 方法 + // 将工作流的编号,更新到 OA 请假单中 UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id", id); OaLeaveDO updateDo = new OaLeaveDO(); updateDo.setProcessInstanceId(processInstanceId); leaveMapper.update(updateDo, updateWrapper); - // 返回 return id; } @Override @Transactional(rollbackFor = Exception.class) public void updateLeave(OaLeaveUpdateReqVO updateReqVO) { - // 校验存在 this.validateLeaveExists(updateReqVO.getId()); @@ -91,14 +93,14 @@ public class OaLeaveServiceImpl implements OaLeaveService { taskRuntime.complete(TaskPayloadBuilder.complete().withTaskId(task.getId()) .withVariables(variables) .build()); + // TODO @jason:不需要加 final 哈。虽然是不变,但是代码比较少这么去写 final Object reApply = variables.get("reApply"); + // TODO @jason:直接使用 Objects.equals(reApply, true) 就可以 if((reApply instanceof Boolean) && (Boolean)reApply){ // 更新 表单 OaLeaveDO updateObj = OaLeaveConvert.INSTANCE.convert(updateReqVO); leaveMapper.updateById(updateObj); } - - } @Override @@ -107,6 +109,7 @@ public class OaLeaveServiceImpl implements OaLeaveService { this.validateLeaveExists(id); // 删除 leaveMapper.deleteById(id); + // TODO @jason:需要调用 runtimeService 的 delete 方法,删除??? } private void validateLeaveExists(Long id) { diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/workflow/TaskService.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/workflow/TaskService.java index 2f2aca24da..d03186416c 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/workflow/TaskService.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/workflow/TaskService.java @@ -3,9 +3,9 @@ package cn.iocoder.yudao.adminserver.modules.activiti.service.workflow; import cn.iocoder.yudao.adminserver.modules.activiti.controller.workflow.vo.*; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import javax.servlet.http.HttpServletResponse; import java.util.List; +// TODO @芋艿:前缀,注释 public interface TaskService { PageResult getTodoTaskPage(TodoTaskPageReqVO pageReqVO); @@ -22,4 +22,5 @@ public interface TaskService { List getHistorySteps(String processInstanceId); TodoTaskRespVO getTaskFormKey(TaskQueryReqVO taskQuery); + } diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/workflow/impl/TaskServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/workflow/impl/TaskServiceImpl.java index 44003e660a..a12447e748 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/workflow/impl/TaskServiceImpl.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/workflow/impl/TaskServiceImpl.java @@ -1,39 +1,28 @@ package cn.iocoder.yudao.adminserver.modules.activiti.service.workflow.impl; import cn.iocoder.yudao.adminserver.modules.activiti.controller.workflow.vo.*; -import cn.iocoder.yudao.adminserver.modules.activiti.convert.oa.OaLeaveConvert; -import cn.iocoder.yudao.adminserver.modules.activiti.dal.dataobject.oa.OaLeaveDO; import cn.iocoder.yudao.adminserver.modules.activiti.dal.mysql.oa.OaLeaveMapper; -import cn.iocoder.yudao.adminserver.modules.activiti.service.oa.OaLeaveService; import cn.iocoder.yudao.adminserver.modules.activiti.service.workflow.TaskService; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.security.core.LoginUser; import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; -import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.google.common.collect.ImmutableMap; -import org.activiti.api.process.runtime.ProcessRuntime; import org.activiti.api.runtime.shared.query.Page; import org.activiti.api.runtime.shared.query.Pageable; import org.activiti.api.task.model.Task; import org.activiti.api.task.model.builders.ClaimTaskPayloadBuilder; -import org.activiti.api.task.model.builders.GetTasksPayloadBuilder; import org.activiti.api.task.model.builders.TaskPayloadBuilder; import org.activiti.api.task.runtime.TaskRuntime; -import org.activiti.bpmn.model.BpmnModel; -import org.activiti.bpmn.model.Process; import org.activiti.engine.HistoryService; import org.activiti.engine.RepositoryService; import org.activiti.engine.history.HistoricActivityInstance; import org.activiti.engine.history.HistoricProcessInstance; -import org.activiti.engine.history.HistoricVariableInstance; -import org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity; import org.activiti.engine.repository.ProcessDefinition; import org.activiti.engine.task.Comment; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; -import javax.servlet.http.HttpServletResponse; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -70,8 +59,10 @@ public class TaskServiceImpl implements TaskService { @Override public PageResult getTodoTaskPage(TodoTaskPageReqVO pageReqVO) { final LoginUser loginUser = SecurityFrameworkUtils.getLoginUser(); + // TODO @jason:封装一个方法,用于转换成 activiti 的分页对象 final Pageable pageable = Pageable.of((pageReqVO.getPageNo() - 1) * pageReqVO.getPageSize(), pageReqVO.getPageSize()); Page pageTasks = taskRuntime.tasks(pageable); + // TODO @jason:convert 里转换 List tasks = pageTasks.getContent(); int totalItems = pageTasks.getTotalItems(); final List respVOList = tasks.stream().map(task -> { @@ -84,7 +75,8 @@ public class TaskServiceImpl implements TaskService { respVO.setStatus(task.getAssignee() == null ? 1 : 2); return respVO; }).collect(Collectors.toList()); - return new PageResult(respVOList, Long.valueOf(totalItems)); + // TODO @jason:要注意泛型哈。 + return new PageResult(respVOList, Long.valueOf(totalItems)); // TODO @jason:(long) 转换即可 } @@ -98,12 +90,11 @@ public class TaskServiceImpl implements TaskService { @Override public void getTaskHistory(String taskId) { - final List list = historyService.createHistoricProcessInstanceQuery(). processInstanceId("8e2801fc-1a38-11ec-98ce-74867a13730f").list(); - } + // TODO @jason:一个方法里,会有多个方法的调用,最好写下对应的注释。这样容易理解 @Override @Transactional public void completeTask(TaskReqVO taskReq) { @@ -173,38 +164,40 @@ public class TaskServiceImpl implements TaskService { private List getTaskSteps(String processInstanceId) { - - List steps = new ArrayList<>(); - - List finished = historyService - .createHistoricActivityInstanceQuery() + // 获得已完成的活动 + List finished = historyService.createHistoricActivityInstanceQuery() .processInstanceId(processInstanceId) .activityType("userTask") .finished() .orderByHistoricActivityInstanceStartTime().asc().list(); - - finished.forEach(instance->{ + // 获得对应的步骤 + List steps = new ArrayList<>(); + finished.forEach(instance -> { + // TODO @jason:放到 convert 里 TaskStepVO step = new TaskStepVO(); step.setStepName(instance.getActivityName()); step.setStartTime(instance.getStartTime()); step.setEndTime(instance.getEndTime()); step.setAssignee(instance.getAssignee()); step.setStatus(1); - final List comments = activitiTaskService.getTaskComments(instance.getTaskId()); - if(comments.size()>0){ + // TODO @jason:一般判数组为空,使用 CollUtil.isEmpty 会好点哈。另外,null 时候,不用填写 "" 的哈 + List comments = activitiTaskService.getTaskComments(instance.getTaskId()); + if (comments.size() > 0) { step.setComment(comments.get(0).getFullMessage()); - }else{ + } else { step.setComment(""); } steps.add(step); }); + // 获得未完成的活动 List unfinished = historyService .createHistoricActivityInstanceQuery() .processInstanceId(processInstanceId) .activityType("userTask") .unfinished().list(); - + // 获得对应的步骤 + // TODO @json:其实已完成和未完成,它们的 convert 的逻辑,是一致的 for (HistoricActivityInstance instance : unfinished) { TaskStepVO step = new TaskStepVO(); step.setStepName(instance.getActivityName()); @@ -221,13 +214,13 @@ public class TaskServiceImpl implements TaskService { @Override public List getHistorySteps(String processInstanceId) { - return getTaskSteps(processInstanceId); } @Override public TodoTaskRespVO getTaskFormKey(TaskQueryReqVO taskQuery) { final Task task = taskRuntime.task(taskQuery.getTaskId()); + // 转换结果 TodoTaskRespVO respVO = new TodoTaskRespVO(); respVO.setFormKey(task.getFormKey()); respVO.setBusinessKey(task.getBusinessKey()); @@ -235,7 +228,6 @@ public class TaskServiceImpl implements TaskService { return respVO; } - // private List getHighLightedFlows(ProcessDefinitionEntity processDefinition, String processInstanceId) { // // List highLightedFlows = new ArrayList(); @@ -270,4 +262,5 @@ public class TaskServiceImpl implements TaskService { // } // return highLightedFlows; // } + } diff --git a/yudao-framework/yudao-spring-boot-starter-security/pom.xml b/yudao-framework/yudao-spring-boot-starter-security/pom.xml index 41ae8ef2da..b36b62bc05 100644 --- a/yudao-framework/yudao-spring-boot-starter-security/pom.xml +++ b/yudao-framework/yudao-spring-boot-starter-security/pom.xml @@ -44,6 +44,7 @@ spring-boot-starter-security + org.activiti activiti-engine diff --git a/yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/core/util/SecurityFrameworkUtils.java b/yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/core/util/SecurityFrameworkUtils.java index 3f5904ddf7..ba81dca341 100644 --- a/yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/core/util/SecurityFrameworkUtils.java +++ b/yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/core/util/SecurityFrameworkUtils.java @@ -99,10 +99,8 @@ public class SecurityFrameworkUtils { // 原因是,Spring Security 的 Filter 在 ApiAccessLogFilter 后面,在它记录访问日志时,线上上下文已经没有用户编号等信息 WebFrameworkUtils.setLoginUserId(request, loginUser.getId()); WebFrameworkUtils.setLoginUserType(request, loginUser.getUserType()); - + // TODO @jason:使用 userId 会不会更合适哈? org.activiti.engine.impl.identity.Authentication.setAuthenticatedUserId(loginUser.getUsername()); - - } } From 83ce39f700e8fda353f76b82060622aaaac3430e Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sun, 31 Oct 2021 11:06:27 +0800 Subject: [PATCH 16/81] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=20.gitattributes=20?= =?UTF-8?q?=E6=96=87=E4=BB=B6=EF=BC=8C=E9=81=BF=E5=85=8D=E8=AF=86=E5=88=AB?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E7=B1=BB=E5=9E=8B=E5=87=BA=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitattributes | 1 + 1 file changed, 1 insertion(+) create mode 100644 .gitattributes diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000000..3c200cd4a9 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +*.sql linguist-language=java From 8aa45406fdaaaf4b8c1604d31b65c020d8ff8a0d Mon Sep 17 00:00:00 2001 From: timfruit Date: Sun, 31 Oct 2021 13:09:55 +0800 Subject: [PATCH 17/81] =?UTF-8?q?=E6=8B=93=E5=B1=95=E6=8E=88=E6=9D=83?= =?UTF-8?q?=E7=99=BB=E5=BD=95=E6=8A=BD=E5=8F=96=E6=88=90=E5=8D=95=E7=8B=AC?= =?UTF-8?q?=E7=9A=84starter,=E6=8B=93=E5=B1=95=E9=85=8D=E7=BD=AE=E5=92=8C?= =?UTF-8?q?=E9=BB=98=E8=AE=A4=E9=85=8D=E7=BD=AE=E9=BD=90=E5=B9=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/auth/SysAuthController.java | 4 +- .../user/SysUserProfileController.java | 4 +- .../service/auth/impl/SysAuthServiceImpl.java | 17 ++- .../service/auth/SysAuthServiceImplTest.java | 4 +- yudao-core-service/pom.xml | 10 +- ...pper.java => SysSocialUserCoreMapper.java} | 3 +- .../social/SysSocialAuthUserRedisDAO.java | 3 +- ...Service.java => SysSocialCoreService.java} | 10 +- ...mpl.java => SysSocialCoreServiceImpl.java} | 16 +-- .../social/SysSocialCoreServiceTest.java | 19 ++- yudao-dependencies/pom.xml | 6 + yudao-framework/pom.xml | 1 + .../pom.xml | 50 ++++++++ .../config/YudaoSocialAutoConfiguration.java | 29 +++++ .../social/core/YudaoAuthRequestFactory.java | 108 ++++++++++++++++++ .../social/core/enums}/AuthExtendSource.java | 2 +- .../social/core/model}/AuthExtendToken.java | 5 +- .../AuthWeChatMiniProgramRequest.java | 34 +++--- .../main/resources/META-INF/spring.factories | 2 + .../controller/auth/SysAuthController.java | 4 +- .../service/auth/impl/SysAuthServiceImpl.java | 16 +-- .../src/main/resources/application-dev.yaml | 22 ++-- .../src/main/resources/application-local.yaml | 18 ++- 23 files changed, 288 insertions(+), 99 deletions(-) rename yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/dal/mysql/social/{SysSocialUserMapper.java => SysSocialUserCoreMapper.java} (89%) rename yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/social/{SysSocialService.java => SysSocialCoreService.java} (91%) rename yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/social/impl/{SysSocialServiceImpl.java => SysSocialCoreServiceImpl.java} (93%) rename yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/social/SysSocialServiceTest.java => yudao-core-service/src/test/java/cn/iocoder/yudao/coreservice/modules/system/service/social/SysSocialCoreServiceTest.java (92%) create mode 100644 yudao-framework/yudao-spring-boot-starter-biz-social/pom.xml create mode 100644 yudao-framework/yudao-spring-boot-starter-biz-social/src/main/java/cn/iocoder/yudao/framework/social/config/YudaoSocialAutoConfiguration.java create mode 100644 yudao-framework/yudao-spring-boot-starter-biz-social/src/main/java/cn/iocoder/yudao/framework/social/core/YudaoAuthRequestFactory.java rename {yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/compent/justauth => yudao-framework/yudao-spring-boot-starter-biz-social/src/main/java/cn/iocoder/yudao/framework/social/core/enums}/AuthExtendSource.java (91%) rename {yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/compent/justauth => yudao-framework/yudao-spring-boot-starter-biz-social/src/main/java/cn/iocoder/yudao/framework/social/core/model}/AuthExtendToken.java (71%) rename {yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/compent/justauth => yudao-framework/yudao-spring-boot-starter-biz-social/src/main/java/cn/iocoder/yudao/framework/social/core/request}/AuthWeChatMiniProgramRequest.java (67%) create mode 100644 yudao-framework/yudao-spring-boot-starter-biz-social/src/main/resources/META-INF/spring.factories diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/SysAuthController.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/SysAuthController.java index 16130e17ea..c557b789ae 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/SysAuthController.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/SysAuthController.java @@ -9,7 +9,7 @@ import cn.iocoder.yudao.adminserver.modules.system.service.auth.SysAuthService; import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysPermissionService; import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysRoleService; import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO; -import cn.iocoder.yudao.coreservice.modules.system.service.social.SysSocialService; +import cn.iocoder.yudao.coreservice.modules.system.service.social.SysSocialCoreService; import cn.iocoder.yudao.coreservice.modules.system.service.user.SysUserCoreService; import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; @@ -50,7 +50,7 @@ public class SysAuthController { @Resource private SysPermissionService permissionService; @Resource - private SysSocialService socialService; + private SysSocialCoreService socialService; @PostMapping("/login") @ApiOperation("使用账号密码登录") diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/SysUserProfileController.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/SysUserProfileController.java index 48236a7abf..0b85016c16 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/SysUserProfileController.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/SysUserProfileController.java @@ -15,7 +15,7 @@ import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysRoleSer import cn.iocoder.yudao.adminserver.modules.system.service.user.SysUserService; import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.social.SysSocialUserDO; import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO; -import cn.iocoder.yudao.coreservice.modules.system.service.social.SysSocialService; +import cn.iocoder.yudao.coreservice.modules.system.service.social.SysSocialCoreService; import cn.iocoder.yudao.coreservice.modules.system.service.user.SysUserCoreService; import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil; @@ -56,7 +56,7 @@ public class SysUserProfileController { @Resource private SysRoleService roleService; @Resource - private SysSocialService socialService; + private SysSocialCoreService socialService; @GetMapping("/get") @ApiOperation("获得登录用户信息") diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/impl/SysAuthServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/impl/SysAuthServiceImpl.java index 558967c2e6..abb6a3dca2 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/impl/SysAuthServiceImpl.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/impl/SysAuthServiceImpl.java @@ -17,7 +17,7 @@ import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO import cn.iocoder.yudao.coreservice.modules.system.service.auth.SysUserSessionCoreService; import cn.iocoder.yudao.coreservice.modules.system.service.logger.SysLoginLogCoreService; import cn.iocoder.yudao.coreservice.modules.system.service.logger.dto.SysLoginLogCreateReqDTO; -import cn.iocoder.yudao.coreservice.modules.system.service.social.SysSocialService; +import cn.iocoder.yudao.coreservice.modules.system.service.social.SysSocialCoreService; import cn.iocoder.yudao.coreservice.modules.system.service.user.SysUserCoreService; import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; @@ -73,10 +73,9 @@ public class SysAuthServiceImpl implements SysAuthService { @Resource private SysUserSessionCoreService userSessionCoreService; @Resource - private SysSocialService socialService; + private SysSocialCoreService socialService; - // TODO @timfruit:静态枚举类,需要都大写,例如说 USER_TYPE_ENUM;静态变量,放在普通变量前面;这个实践不错哈。 - private static final UserTypeEnum userTypeEnum = UserTypeEnum.ADMIN; + private static final UserTypeEnum USER_TYPE_ENUM = UserTypeEnum.ADMIN; @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { @@ -201,7 +200,7 @@ public class SysAuthServiceImpl implements SysAuthService { // 如果未绑定 SysSocialUserDO 用户,则无法自动登录,进行报错 String unionId = socialService.getAuthUserUnionId(authUser); - List socialUsers = socialService.getAllSocialUserList(reqVO.getType(), unionId, userTypeEnum); + List socialUsers = socialService.getAllSocialUserList(reqVO.getType(), unionId, USER_TYPE_ENUM); if (CollUtil.isEmpty(socialUsers)) { throw exception(AUTH_THIRD_LOGIN_NOT_BIND); } @@ -218,7 +217,7 @@ public class SysAuthServiceImpl implements SysAuthService { loginUser.setRoleIds(this.getUserRoleIds(loginUser.getId())); // 获取用户角色列表 // 绑定社交用户(更新) - socialService.bindSocialUser(loginUser.getId(), reqVO.getType(), authUser, userTypeEnum); + socialService.bindSocialUser(loginUser.getId(), reqVO.getType(), authUser, USER_TYPE_ENUM); // 缓存登录用户到 Redis 中,返回 sessionId 编号 return userSessionCoreService.createUserSession(loginUser, userIp, userAgent); @@ -235,7 +234,7 @@ public class SysAuthServiceImpl implements SysAuthService { loginUser.setRoleIds(this.getUserRoleIds(loginUser.getId())); // 获取用户角色列表 // 绑定社交用户(新增) - socialService.bindSocialUser(loginUser.getId(), reqVO.getType(), authUser, userTypeEnum); + socialService.bindSocialUser(loginUser.getId(), reqVO.getType(), authUser, USER_TYPE_ENUM); // 缓存登录用户到 Redis 中,返回 sessionId 编号 return userSessionCoreService.createUserSession(loginUser, userIp, userAgent); @@ -248,7 +247,7 @@ public class SysAuthServiceImpl implements SysAuthService { Assert.notNull(authUser, "授权用户不为空"); // 绑定社交用户(新增) - socialService.bindSocialUser(userId, reqVO.getType(), authUser, userTypeEnum); + socialService.bindSocialUser(userId, reqVO.getType(), authUser, USER_TYPE_ENUM); } @Override @@ -269,7 +268,7 @@ public class SysAuthServiceImpl implements SysAuthService { reqDTO.setLogType(SysLoginLogTypeEnum.LOGOUT_SELF.getType()); reqDTO.setTraceId(TracerUtils.getTraceId()); reqDTO.setUserId(userId); - reqDTO.setUserType(userTypeEnum.getValue()); + reqDTO.setUserType(USER_TYPE_ENUM.getValue()); reqDTO.setUsername(username); reqDTO.setUserAgent(ServletUtils.getUserAgent()); reqDTO.setUserIp(ServletUtils.getClientIP()); diff --git a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/SysAuthServiceImplTest.java b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/SysAuthServiceImplTest.java index c09a194aa8..d8fbec5b20 100644 --- a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/SysAuthServiceImplTest.java +++ b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/SysAuthServiceImplTest.java @@ -11,7 +11,7 @@ import cn.iocoder.yudao.adminserver.modules.system.service.user.SysUserService; import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO; import cn.iocoder.yudao.coreservice.modules.system.service.auth.SysUserSessionCoreService; import cn.iocoder.yudao.coreservice.modules.system.service.logger.SysLoginLogCoreService; -import cn.iocoder.yudao.coreservice.modules.system.service.social.SysSocialService; +import cn.iocoder.yudao.coreservice.modules.system.service.social.SysSocialCoreService; import cn.iocoder.yudao.coreservice.modules.system.service.user.SysUserCoreService; import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; import cn.iocoder.yudao.framework.security.core.LoginUser; @@ -66,7 +66,7 @@ public class SysAuthServiceImplTest extends BaseDbUnitTest { @MockBean private SysUserSessionCoreService userSessionCoreService; @MockBean - private SysSocialService socialService; + private SysSocialCoreService socialService; @Test public void testLoadUserByUsername_success() { diff --git a/yudao-core-service/pom.xml b/yudao-core-service/pom.xml index 4fd85c0aac..c4e79d7a38 100644 --- a/yudao-core-service/pom.xml +++ b/yudao-core-service/pom.xml @@ -36,6 +36,10 @@ cn.iocoder.boot yudao-spring-boot-starter-biz-pay + + cn.iocoder.boot + yudao-spring-boot-starter-biz-social + @@ -96,12 +100,6 @@ guava - - - com.xkcoding.justauth - justauth-spring-boot-starter - - diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/dal/mysql/social/SysSocialUserMapper.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/dal/mysql/social/SysSocialUserCoreMapper.java similarity index 89% rename from yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/dal/mysql/social/SysSocialUserMapper.java rename to yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/dal/mysql/social/SysSocialUserCoreMapper.java index ee8db4eac4..727c38e678 100644 --- a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/dal/mysql/social/SysSocialUserMapper.java +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/dal/mysql/social/SysSocialUserCoreMapper.java @@ -8,9 +8,8 @@ import org.apache.ibatis.annotations.Mapper; import java.util.Collection; import java.util.List; -// TODO @timfruit:SysSocialUserCoreMapper 改名,方便区分 @Mapper -public interface SysSocialUserMapper extends BaseMapperX { +public interface SysSocialUserCoreMapper extends BaseMapperX { default List selectListByTypeAndUnionId(Integer userType, Collection types, String unionId) { return selectList(new QueryWrapper().eq("user_type", userType) diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/dal/redis/social/SysSocialAuthUserRedisDAO.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/dal/redis/social/SysSocialAuthUserRedisDAO.java index 5142810717..0c033f89e2 100644 --- a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/dal/redis/social/SysSocialAuthUserRedisDAO.java +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/dal/redis/social/SysSocialAuthUserRedisDAO.java @@ -10,9 +10,8 @@ import javax.annotation.Resource; import static cn.iocoder.yudao.coreservice.modules.system.dal.redis.SysRedisKeyCoreConstants.SOCIAL_AUTH_USER; -// TODO @timfruit,这里的 AuthUser 还是保留全路径,主要想体现出来,不是自己定义的 /** - * 社交 {@link AuthUser} 的 RedisDAO + * 社交 {@link me.zhyd.oauth.model.AuthUser} 的 RedisDAO * * @author 芋道源码 */ diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/social/SysSocialService.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/social/SysSocialCoreService.java similarity index 91% rename from yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/social/SysSocialService.java rename to yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/social/SysSocialCoreService.java index 8a8df27d65..17634b320a 100644 --- a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/social/SysSocialService.java +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/social/SysSocialCoreService.java @@ -15,8 +15,7 @@ import java.util.List; * * @author 芋道源码 */ -// TODO @timfruit:SysSocialCoreService 改名,方便区分 -public interface SysSocialService { +public interface SysSocialCoreService { /** * 获得社交平台的授权 URL @@ -50,6 +49,7 @@ public interface SysSocialService { * @param type 社交平台的类型 {@link SysSocialTypeEnum} * @param unionId 社交平台的 unionId * @return 社交用户列表 + * @param userTypeEnum 全局用户类型 */ List getAllSocialUserList(Integer type, String unionId, UserTypeEnum userTypeEnum); @@ -58,6 +58,7 @@ public interface SysSocialService { * * @param userId 用户编号 * @return 社交用户列表 + * @param userTypeEnum 全局用户类型 */ List getSocialUserList(Long userId, UserTypeEnum userTypeEnum); @@ -67,6 +68,7 @@ public interface SysSocialService { * @param userId 用户编号 * @param type 社交平台的类型 {@link SysSocialTypeEnum} * @param authUser 授权用户 + * @param userTypeEnum 全局用户类型 */ void bindSocialUser(Long userId, Integer type, AuthUser authUser, UserTypeEnum userTypeEnum); @@ -76,8 +78,8 @@ public interface SysSocialService { * @param userId 用户编号 * @param type 社交平台的类型 {@link SysSocialTypeEnum} * @param unionId 社交平台的 unionId + * @param userTypeEnum 全局用户类型 */ - void unbindSocialUser(Long userId, Integer type, String unionId,UserTypeEnum userTypeEnum); - // TODO @timfruit:逗号后面要有空格;缺少了 @userTypeEnum 的注释,都补充下哈。 + void unbindSocialUser(Long userId, Integer type, String unionId, UserTypeEnum userTypeEnum); } diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/social/impl/SysSocialServiceImpl.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/social/impl/SysSocialCoreServiceImpl.java similarity index 93% rename from yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/social/impl/SysSocialServiceImpl.java rename to yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/social/impl/SysSocialCoreServiceImpl.java index bde40c3c4c..0c3bcca9a3 100644 --- a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/social/impl/SysSocialServiceImpl.java +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/social/impl/SysSocialCoreServiceImpl.java @@ -2,15 +2,15 @@ package cn.iocoder.yudao.coreservice.modules.system.service.social.impl; import cn.hutool.core.collection.CollUtil; import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.social.SysSocialUserDO; -import cn.iocoder.yudao.coreservice.modules.system.dal.mysql.social.SysSocialUserMapper; +import cn.iocoder.yudao.coreservice.modules.system.dal.mysql.social.SysSocialUserCoreMapper; import cn.iocoder.yudao.coreservice.modules.system.dal.redis.social.SysSocialAuthUserRedisDAO; import cn.iocoder.yudao.coreservice.modules.system.enums.social.SysSocialTypeEnum; -import cn.iocoder.yudao.coreservice.modules.system.service.social.SysSocialService; +import cn.iocoder.yudao.coreservice.modules.system.service.social.SysSocialCoreService; import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; import cn.iocoder.yudao.framework.common.util.http.HttpUtils; +import cn.iocoder.yudao.framework.social.core.YudaoAuthRequestFactory; import com.google.common.annotations.VisibleForTesting; -import com.xkcoding.justauth.AuthRequestFactory; import lombok.extern.slf4j.Slf4j; import me.zhyd.oauth.model.AuthCallback; import me.zhyd.oauth.model.AuthResponse; @@ -38,21 +38,21 @@ import static cn.iocoder.yudao.framework.common.util.json.JsonUtils.toJsonString @Service @Validated @Slf4j -public class SysSocialServiceImpl implements SysSocialService { +public class SysSocialCoreServiceImpl implements SysSocialCoreService { @Resource - private AuthRequestFactory authRequestFactory; + private YudaoAuthRequestFactory yudaoAuthRequestFactory; @Resource private SysSocialAuthUserRedisDAO authSocialUserRedisDAO; @Resource - private SysSocialUserMapper socialUserMapper; + private SysSocialUserCoreMapper socialUserMapper; @Override public String getAuthorizeUrl(Integer type, String redirectUri) { // 获得对应的 AuthRequest 实现 - AuthRequest authRequest = authRequestFactory.get(SysSocialTypeEnum.valueOfType(type).getSource()); + AuthRequest authRequest = yudaoAuthRequestFactory.get(SysSocialTypeEnum.valueOfType(type).getSource()); // 生成跳转地址 String authorizeUri = authRequest.authorize(AuthStateUtils.createState()); return HttpUtils.replaceUrlQuery(authorizeUri, "redirect_uri", redirectUri); @@ -161,7 +161,7 @@ public class SysSocialServiceImpl implements SysSocialService { * @return 授权的用户 */ private AuthUser getAuthUser0(Integer type, AuthCallback authCallback) { - AuthRequest authRequest = authRequestFactory.get(SysSocialTypeEnum.valueOfType(type).getSource()); + AuthRequest authRequest = yudaoAuthRequestFactory.get(SysSocialTypeEnum.valueOfType(type).getSource()); AuthResponse authResponse = authRequest.login(authCallback); log.info("[getAuthUser0][请求社交平台 type({}) request({}) response({})]", type, toJsonString(authCallback), toJsonString(authResponse)); diff --git a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/social/SysSocialServiceTest.java b/yudao-core-service/src/test/java/cn/iocoder/yudao/coreservice/modules/system/service/social/SysSocialCoreServiceTest.java similarity index 92% rename from yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/social/SysSocialServiceTest.java rename to yudao-core-service/src/test/java/cn/iocoder/yudao/coreservice/modules/system/service/social/SysSocialCoreServiceTest.java index cec84c1ed6..2a33dd869e 100644 --- a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/social/SysSocialServiceTest.java +++ b/yudao-core-service/src/test/java/cn/iocoder/yudao/coreservice/modules/system/service/social/SysSocialCoreServiceTest.java @@ -1,11 +1,11 @@ -package cn.iocoder.yudao.adminserver.modules.system.service.social; +package cn.iocoder.yudao.coreservice.modules.system.service.social; -import cn.iocoder.yudao.adminserver.BaseDbAndRedisUnitTest; +import cn.iocoder.yudao.coreservice.BaseDbAndRedisUnitTest; import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.social.SysSocialUserDO; -import cn.iocoder.yudao.coreservice.modules.system.dal.mysql.social.SysSocialUserMapper; +import cn.iocoder.yudao.coreservice.modules.system.dal.mysql.social.SysSocialUserCoreMapper; import cn.iocoder.yudao.coreservice.modules.system.dal.redis.social.SysSocialAuthUserRedisDAO; import cn.iocoder.yudao.coreservice.modules.system.enums.social.SysSocialTypeEnum; -import cn.iocoder.yudao.coreservice.modules.system.service.social.impl.SysSocialServiceImpl; +import cn.iocoder.yudao.coreservice.modules.system.service.social.impl.SysSocialCoreServiceImpl; import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; import com.xkcoding.justauth.AuthRequestFactory; import me.zhyd.oauth.model.AuthUser; @@ -23,20 +23,19 @@ import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomLongId import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo; import static org.junit.jupiter.api.Assertions.assertEquals; -// TODO @timfruit:这个单元测试,挪到 yudao-core-service /** - * {@link SysSocialServiceImpl} 的单元测试类 + * {@link SysSocialCoreServiceImpl} 的单元测试类 * * @author 芋道源码 */ -@Import({SysSocialServiceImpl.class, SysSocialAuthUserRedisDAO.class}) -public class SysSocialServiceTest extends BaseDbAndRedisUnitTest { +@Import({SysSocialCoreServiceImpl.class, SysSocialAuthUserRedisDAO.class}) +public class SysSocialCoreServiceTest extends BaseDbAndRedisUnitTest { @Resource - private SysSocialServiceImpl socialService; + private SysSocialCoreServiceImpl socialService; @Resource - private SysSocialUserMapper socialUserMapper; + private SysSocialUserCoreMapper socialUserMapper; @MockBean private AuthRequestFactory authRequestFactory; diff --git a/yudao-dependencies/pom.xml b/yudao-dependencies/pom.xml index fba3941500..b5028e9090 100644 --- a/yudao-dependencies/pom.xml +++ b/yudao-dependencies/pom.xml @@ -350,6 +350,12 @@ ${revision} + + cn.iocoder.boot + yudao-spring-boot-starter-biz-social + ${revision} + + org.projectlombok lombok diff --git a/yudao-framework/pom.xml b/yudao-framework/pom.xml index f3927b3a39..21eb1eabe4 100644 --- a/yudao-framework/pom.xml +++ b/yudao-framework/pom.xml @@ -31,6 +31,7 @@ yudao-spring-boot-starter-biz-pay yudao-spring-boot-starter-biz-weixin yudao-spring-boot-starter-extension + yudao-spring-boot-starter-biz-social yudao-framework diff --git a/yudao-framework/yudao-spring-boot-starter-biz-social/pom.xml b/yudao-framework/yudao-spring-boot-starter-biz-social/pom.xml new file mode 100644 index 0000000000..7588af0c35 --- /dev/null +++ b/yudao-framework/yudao-spring-boot-starter-biz-social/pom.xml @@ -0,0 +1,50 @@ + + + + cn.iocoder.boot + yudao-framework + ${revision} + + jar + 4.0.0 + + yudao-spring-boot-starter-biz-social + ${artifactId} + + + + cn.iocoder.boot + yudao-common + + + + org.springframework.boot + spring-boot-starter-aop + + + + cn.iocoder.boot + yudao-spring-boot-starter-web + + + + org.springframework.boot + spring-boot-configuration-processor + true + + + + com.xkcoding.justauth + justauth-spring-boot-starter + + + cn.iocoder.boot + yudao-spring-boot-starter-redis + + + + + + \ No newline at end of file diff --git a/yudao-framework/yudao-spring-boot-starter-biz-social/src/main/java/cn/iocoder/yudao/framework/social/config/YudaoSocialAutoConfiguration.java b/yudao-framework/yudao-spring-boot-starter-biz-social/src/main/java/cn/iocoder/yudao/framework/social/config/YudaoSocialAutoConfiguration.java new file mode 100644 index 0000000000..a6c468af50 --- /dev/null +++ b/yudao-framework/yudao-spring-boot-starter-biz-social/src/main/java/cn/iocoder/yudao/framework/social/config/YudaoSocialAutoConfiguration.java @@ -0,0 +1,29 @@ +package cn.iocoder.yudao.framework.social.config; + +import cn.iocoder.yudao.framework.social.core.YudaoAuthRequestFactory; +import com.xkcoding.justauth.autoconfigure.JustAuthProperties; +import lombok.extern.slf4j.Slf4j; +import me.zhyd.oauth.cache.AuthStateCache; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * 社交自动装配类 + * + * @author timfruit + * @date 2021-10-30 + */ +@Slf4j +@Configuration +@EnableConfigurationProperties(JustAuthProperties.class) +public class YudaoSocialAutoConfiguration { + + @Bean + @ConditionalOnProperty(prefix = "justauth", value = "enabled", havingValue = "true", matchIfMissing = true) + public YudaoAuthRequestFactory yudaoAuthRequestFactory(JustAuthProperties properties, AuthStateCache authStateCache) { + return new YudaoAuthRequestFactory(properties, authStateCache); + } + +} diff --git a/yudao-framework/yudao-spring-boot-starter-biz-social/src/main/java/cn/iocoder/yudao/framework/social/core/YudaoAuthRequestFactory.java b/yudao-framework/yudao-spring-boot-starter-biz-social/src/main/java/cn/iocoder/yudao/framework/social/core/YudaoAuthRequestFactory.java new file mode 100644 index 0000000000..998c70a12e --- /dev/null +++ b/yudao-framework/yudao-spring-boot-starter-biz-social/src/main/java/cn/iocoder/yudao/framework/social/core/YudaoAuthRequestFactory.java @@ -0,0 +1,108 @@ +package cn.iocoder.yudao.framework.social.core; + +import cn.hutool.core.util.EnumUtil; +import cn.hutool.core.util.StrUtil; +import cn.iocoder.yudao.framework.social.core.enums.AuthExtendSource; +import cn.iocoder.yudao.framework.social.core.request.AuthWeChatMiniProgramRequest; +import com.xkcoding.http.config.HttpConfig; +import com.xkcoding.justauth.AuthRequestFactory; +import com.xkcoding.justauth.autoconfigure.JustAuthProperties; +import me.zhyd.oauth.cache.AuthStateCache; +import me.zhyd.oauth.config.AuthConfig; +import me.zhyd.oauth.config.AuthSource; +import me.zhyd.oauth.request.AuthRequest; +import org.springframework.util.CollectionUtils; + +import java.net.InetSocketAddress; +import java.net.Proxy; +import java.util.Map; + +/** + * 第三方授权拓展request工厂类 + * + * @author timfruit + * @date 2021-10-31 + */ +public class YudaoAuthRequestFactory extends AuthRequestFactory { + protected JustAuthProperties properties; + protected AuthStateCache authStateCache; + + public YudaoAuthRequestFactory(JustAuthProperties properties, AuthStateCache authStateCache) { + super(properties, authStateCache); + this.properties = properties; + this.authStateCache = authStateCache; + } + + /** + * 返回AuthRequest对象 + * + * @param source {@link AuthSource} + * @return {@link AuthRequest} + */ + public AuthRequest get(String source) { + //先尝试获取自定义扩展的 + AuthRequest authRequest = getExtendRequest(source); + + if (authRequest == null) { + authRequest = super.get(source); + } + + return authRequest; + } + + + protected AuthRequest getExtendRequest(String source) { + AuthExtendSource authExtendSource; + + try { + authExtendSource = EnumUtil.fromString(AuthExtendSource.class, source.toUpperCase()); + } catch (IllegalArgumentException e) { + // 无自定义匹配 + return null; + } + + // 拓展配置和默认配置齐平,properties放在一起 + AuthConfig config = properties.getType().get(authExtendSource.name()); + // 找不到对应关系,直接返回空 + if (config == null) { + return null; + } + + // 配置 http config + configureHttpConfig(authExtendSource.name(), config, properties.getHttpConfig()); + + switch (authExtendSource) { + case WECHAT_MINI_PROGRAM: + return new AuthWeChatMiniProgramRequest(config, authStateCache); + default: + return null; + } + } + + /** + * 配置 http 相关的配置 + * + * @param authSource {@link AuthSource} + * @param authConfig {@link AuthConfig} + */ + protected void configureHttpConfig(String authSource, AuthConfig authConfig, JustAuthProperties.JustAuthHttpConfig httpConfig) { + if (null == httpConfig) { + return; + } + Map proxyConfigMap = httpConfig.getProxy(); + if (CollectionUtils.isEmpty(proxyConfigMap)) { + return; + } + JustAuthProperties.JustAuthProxyConfig proxyConfig = proxyConfigMap.get(authSource); + + if (null == proxyConfig) { + return; + } + + authConfig.setHttpConfig(HttpConfig.builder() + .timeout(httpConfig.getTimeout()) + .proxy(new Proxy(Proxy.Type.valueOf(proxyConfig.getType()), new InetSocketAddress(proxyConfig.getHostname(), proxyConfig.getPort()))) + .build()); + } + +} diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/compent/justauth/AuthExtendSource.java b/yudao-framework/yudao-spring-boot-starter-biz-social/src/main/java/cn/iocoder/yudao/framework/social/core/enums/AuthExtendSource.java similarity index 91% rename from yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/compent/justauth/AuthExtendSource.java rename to yudao-framework/yudao-spring-boot-starter-biz-social/src/main/java/cn/iocoder/yudao/framework/social/core/enums/AuthExtendSource.java index e005114ac4..bd19b8d060 100644 --- a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/compent/justauth/AuthExtendSource.java +++ b/yudao-framework/yudao-spring-boot-starter-biz-social/src/main/java/cn/iocoder/yudao/framework/social/core/enums/AuthExtendSource.java @@ -1,4 +1,4 @@ -package cn.iocoder.yudao.coreservice.modules.system.compent.justauth; +package cn.iocoder.yudao.framework.social.core.enums; import me.zhyd.oauth.config.AuthSource; diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/compent/justauth/AuthExtendToken.java b/yudao-framework/yudao-spring-boot-starter-biz-social/src/main/java/cn/iocoder/yudao/framework/social/core/model/AuthExtendToken.java similarity index 71% rename from yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/compent/justauth/AuthExtendToken.java rename to yudao-framework/yudao-spring-boot-starter-biz-social/src/main/java/cn/iocoder/yudao/framework/social/core/model/AuthExtendToken.java index 2ecb0d4616..3397a49762 100644 --- a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/compent/justauth/AuthExtendToken.java +++ b/yudao-framework/yudao-spring-boot-starter-biz-social/src/main/java/cn/iocoder/yudao/framework/social/core/model/AuthExtendToken.java @@ -1,10 +1,11 @@ -package cn.iocoder.yudao.coreservice.modules.system.compent.justauth; +package cn.iocoder.yudao.framework.social.core.model; import lombok.*; import me.zhyd.oauth.model.AuthToken; /** - * TODO @timfruit:类注释 + * 授权所需的token 拓展类 + * * @author timfruit * @date 2021-10-29 */ diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/compent/justauth/AuthWeChatMiniProgramRequest.java b/yudao-framework/yudao-spring-boot-starter-biz-social/src/main/java/cn/iocoder/yudao/framework/social/core/request/AuthWeChatMiniProgramRequest.java similarity index 67% rename from yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/compent/justauth/AuthWeChatMiniProgramRequest.java rename to yudao-framework/yudao-spring-boot-starter-biz-social/src/main/java/cn/iocoder/yudao/framework/social/core/request/AuthWeChatMiniProgramRequest.java index 664f9157f1..a875c3b6ec 100644 --- a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/compent/justauth/AuthWeChatMiniProgramRequest.java +++ b/yudao-framework/yudao-spring-boot-starter-biz-social/src/main/java/cn/iocoder/yudao/framework/social/core/request/AuthWeChatMiniProgramRequest.java @@ -1,6 +1,9 @@ -package cn.iocoder.yudao.coreservice.modules.system.compent.justauth; +package cn.iocoder.yudao.framework.social.core.request; -import com.alibaba.fastjson.JSONObject; +import cn.iocoder.yudao.framework.common.util.json.JsonUtils; +import cn.iocoder.yudao.framework.social.core.enums.AuthExtendSource; +import cn.iocoder.yudao.framework.social.core.model.AuthExtendToken; +import lombok.Data; import me.zhyd.oauth.cache.AuthStateCache; import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.exception.AuthException; @@ -11,9 +14,6 @@ import me.zhyd.oauth.request.AuthDefaultRequest; import me.zhyd.oauth.utils.HttpUtils; import me.zhyd.oauth.utils.UrlBuilder; -// TODO @timfruit:新建一个 yudao-spring-boot-starter-biz-social 包,把这个拓展拿进去哈。另外,可以思考下。 -// 1. application-local.yaml 的配置里,justauth.extend.enum-class 能否不配置,而是自动配置好 -// 2. application-local.yaml 的配置里,justauth.extend.extend.config.WECHAT_MINI_PROGRAM 有办法和 justauth.type.WECHAT_MP 持平 /** * 微信小程序登陆 * @@ -34,14 +34,14 @@ public class AuthWeChatMiniProgramRequest extends AuthDefaultRequest { protected AuthToken getAccessToken(AuthCallback authCallback) { // https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/login/auth.code2Session.html String response = new HttpUtils(config.getHttpConfig()).get(accessTokenUrl(authCallback.getCode())); - JSONObject accessTokenObject = JSONObject.parseObject(response); // TODO @timfruit:使用 JsonUtils,项目尽量避免直接使用某个 json 库 + CodeSessionResponse accessTokenObject = JsonUtils.parseObject(response, CodeSessionResponse.class); this.checkResponse(accessTokenObject); AuthExtendToken token = new AuthExtendToken(); - token.setMiniSessionKey(accessTokenObject.getString("session_key")); - token.setOpenId(accessTokenObject.getString("openid")); - token.setUnionId(accessTokenObject.getString("unionid")); + token.setMiniSessionKey(accessTokenObject.session_key); + token.setOpenId(accessTokenObject.openid); + token.setUnionId(accessTokenObject.unionid); return token; } @@ -64,10 +64,9 @@ public class AuthWeChatMiniProgramRequest extends AuthDefaultRequest { * * @param object 请求响应内容 */ - private void checkResponse(JSONObject object) { - int code = object.getIntValue("errcode"); - if(code != 0){ // TODO @timfruit:if (code != 0) { ,注意空格 - throw new AuthException(object.getIntValue("errcode"), object.getString("errmsg")); + private void checkResponse(CodeSessionResponse object) { + if (object.errcode != 0) { + throw new AuthException(object.errcode, object.errmsg); } } @@ -87,4 +86,13 @@ public class AuthWeChatMiniProgramRequest extends AuthDefaultRequest { .build(); } + @Data + private static class CodeSessionResponse { + private int errcode; + private String errmsg; + private String session_key; + private String openid; + private String unionid; + } + } diff --git a/yudao-framework/yudao-spring-boot-starter-biz-social/src/main/resources/META-INF/spring.factories b/yudao-framework/yudao-spring-boot-starter-biz-social/src/main/resources/META-INF/spring.factories new file mode 100644 index 0000000000..dcd4dcf713 --- /dev/null +++ b/yudao-framework/yudao-spring-boot-starter-biz-social/src/main/resources/META-INF/spring.factories @@ -0,0 +1,2 @@ +org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ + cn.iocoder.yudao.framework.social.config.YudaoSocialAutoConfiguration diff --git a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/controller/auth/SysAuthController.java b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/controller/auth/SysAuthController.java index 6d18d53be9..fbca500f7e 100644 --- a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/controller/auth/SysAuthController.java +++ b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/controller/auth/SysAuthController.java @@ -1,6 +1,6 @@ package cn.iocoder.yudao.userserver.modules.system.controller.auth; -import cn.iocoder.yudao.coreservice.modules.system.service.social.SysSocialService; +import cn.iocoder.yudao.coreservice.modules.system.service.social.SysSocialCoreService; import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.userserver.modules.system.controller.auth.vo.*; @@ -36,7 +36,7 @@ public class SysAuthController { @Resource private SysSmsCodeService smsCodeService; @Resource - private SysSocialService socialService; + private SysSocialCoreService socialService; @PostMapping("/login") diff --git a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/service/auth/impl/SysAuthServiceImpl.java b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/service/auth/impl/SysAuthServiceImpl.java index 2394cd03af..e4b938861a 100644 --- a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/service/auth/impl/SysAuthServiceImpl.java +++ b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/service/auth/impl/SysAuthServiceImpl.java @@ -9,7 +9,7 @@ import cn.iocoder.yudao.coreservice.modules.system.enums.logger.SysLoginResultEn import cn.iocoder.yudao.coreservice.modules.system.service.auth.SysUserSessionCoreService; import cn.iocoder.yudao.coreservice.modules.system.service.logger.SysLoginLogCoreService; import cn.iocoder.yudao.coreservice.modules.system.service.logger.dto.SysLoginLogCreateReqDTO; -import cn.iocoder.yudao.coreservice.modules.system.service.social.SysSocialService; +import cn.iocoder.yudao.coreservice.modules.system.service.social.SysSocialCoreService; import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; import cn.iocoder.yudao.framework.common.util.monitor.TracerUtils; @@ -64,8 +64,8 @@ public class SysAuthServiceImpl implements SysAuthService { @Resource private SysUserSessionCoreService userSessionCoreService; @Resource - private SysSocialService socialService; - private static final UserTypeEnum userTypeEnum = UserTypeEnum.MEMBER; + private SysSocialCoreService socialService; + private static final UserTypeEnum USER_TYPE_ENUM = UserTypeEnum.MEMBER; @Override public UserDetails loadUserByUsername(String mobile) throws UsernameNotFoundException { @@ -114,7 +114,7 @@ public class SysAuthServiceImpl implements SysAuthService { // 如果未绑定 SysSocialUserDO 用户,则无法自动登录,进行报错 String unionId = socialService.getAuthUserUnionId(authUser); - List socialUsers = socialService.getAllSocialUserList(reqVO.getType(), unionId, userTypeEnum); + List socialUsers = socialService.getAllSocialUserList(reqVO.getType(), unionId, USER_TYPE_ENUM); if (CollUtil.isEmpty(socialUsers)) { throw exception(AUTH_THIRD_LOGIN_NOT_BIND); } @@ -130,7 +130,7 @@ public class SysAuthServiceImpl implements SysAuthService { LoginUser loginUser = SysAuthConvert.INSTANCE.convert(user); // 绑定社交用户(更新) - socialService.bindSocialUser(loginUser.getId(), reqVO.getType(), authUser, userTypeEnum); + socialService.bindSocialUser(loginUser.getId(), reqVO.getType(), authUser, USER_TYPE_ENUM); // 缓存登录用户到 Redis 中,返回 sessionId 编号 return userSessionCoreService.createUserSession(loginUser, userIp, userAgent); @@ -147,7 +147,7 @@ public class SysAuthServiceImpl implements SysAuthService { // loginUser.setRoleIds(this.getUserRoleIds(loginUser.getId())); // 获取用户角色列表 // 绑定社交用户(新增) - socialService.bindSocialUser(loginUser.getId(), reqVO.getType(), authUser, userTypeEnum); + socialService.bindSocialUser(loginUser.getId(), reqVO.getType(), authUser, USER_TYPE_ENUM); // 缓存登录用户到 Redis 中,返回 sessionId 编号 return userSessionCoreService.createUserSession(loginUser, userIp, userAgent); @@ -160,7 +160,7 @@ public class SysAuthServiceImpl implements SysAuthService { org.springframework.util.Assert.notNull(authUser, "授权用户不为空"); // 绑定社交用户(新增) - socialService.bindSocialUser(userId, reqVO.getType(), authUser, userTypeEnum); + socialService.bindSocialUser(userId, reqVO.getType(), authUser, USER_TYPE_ENUM); } private LoginUser login0(String username, String password) { @@ -271,7 +271,7 @@ public class SysAuthServiceImpl implements SysAuthService { reqDTO.setLogType(SysLoginLogTypeEnum.LOGOUT_SELF.getType()); reqDTO.setTraceId(TracerUtils.getTraceId()); reqDTO.setUserId(userId); - reqDTO.setUserType(userTypeEnum.getValue()); + reqDTO.setUserType(USER_TYPE_ENUM.getValue()); reqDTO.setUsername(username); reqDTO.setUserAgent(ServletUtils.getUserAgent()); reqDTO.setUserIp(ServletUtils.getClientIP()); diff --git a/yudao-user-server/src/main/resources/application-dev.yaml b/yudao-user-server/src/main/resources/application-dev.yaml index 858e97739c..20e0056b11 100644 --- a/yudao-user-server/src/main/resources/application-dev.yaml +++ b/yudao-user-server/src/main/resources/application-dev.yaml @@ -145,24 +145,16 @@ yudao: justauth: enabled: true - type: # TODO @timfruit:GITEE、DINGTALK、WECHAT_ENTERPRISE 这个几个,对于用户端是不需要的哈,可以删除噢 - GITEE: # Gitee - client-id: ee61f0374a4c6c404a8717094caa7a410d76950e45ff60348015830c519ba5c1 - client-secret: 7c044a5671be3b051414db0cf2cec6ad702dd298d2416ba24ceaf608e6fa26f9 - ignore-check-redirect-uri: true - DINGTALK: # 钉钉 - client-id: dingvrnreaje3yqvzhxg - client-secret: i8E6iZyDvZj51JIb0tYsYfVQYOks9Cq1lgryEjFRqC79P3iJcrxEwT6Qk2QvLrLI - ignore-check-redirect-uri: true - WECHAT_ENTERPRISE: # 企业微信 - client-id: wwd411c69a39ad2e54 - client-secret: 1wTb7hYxnpT2TUbIeHGXGo7T0odav1ic10mLdyyATOw - agent-id: 1000004 - ignore-check-redirect-uri: true - WECHAT_MP: # 微信公众平台 - H5 https://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo&t=sandbox/index + type: + WECHAT_MP: # 微信公众平台 - 移动端 H5 https://www.yuque.com/docs/share/a795bef6-ee8a-494a-8dc4-2ef41927743b?#%20%E3%80%8A%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7%E6%B5%8B%E8%AF%95%E3%80%8B client-id: wxa5a05b85ac361f96 client-secret: 247073c7cebb67f27f0e769195c2a57e ignore-check-redirect-uri: true + WECHAT_MINI_PROGRAM: # 微信小程序 https://www.yuque.com/docs/share/88e3d30a-6830-45fc-8c25-dae485aef3aa?#%20%E3%80%8A%E5%B0%8F%E7%A8%8B%E5%BA%8F%E6%8E%88%E6%9D%83%E7%99%BB%E5%BD%95%E3%80%8B + client-id: wx44d047d87e6284d8 + client-secret: 21c3b7a8a51ee1b8f5cf875848ed4466 + ignore-check-redirect-uri: true + ignore-check-state: true cache: type: REDIS prefix: 'social_auth_state:' # 缓存前缀,目前只对 Redis 缓存生效,默认 JUSTAUTH::STATE:: diff --git a/yudao-user-server/src/main/resources/application-local.yaml b/yudao-user-server/src/main/resources/application-local.yaml index c39a7cb1b5..3fc985282a 100644 --- a/yudao-user-server/src/main/resources/application-local.yaml +++ b/yudao-user-server/src/main/resources/application-local.yaml @@ -165,17 +165,13 @@ justauth: # client-id: wx5b23ba7a5589ecbb # TODO 芋艿:自己的测试,后续可以删除 # client-secret: 2a7b3b20c537e52e74afd395eb85f61f ignore-check-redirect-uri: true - extend: - enum-class: cn.iocoder.yudao.coreservice.modules.system.compent.justauth.AuthExtendSource - config: - WECHAT_MINI_PROGRAM: # 微信小程序 https://www.yuque.com/docs/share/88e3d30a-6830-45fc-8c25-dae485aef3aa?#%20%E3%80%8A%E5%B0%8F%E7%A8%8B%E5%BA%8F%E6%8E%88%E6%9D%83%E7%99%BB%E5%BD%95%E3%80%8B - request-class: cn.iocoder.yudao.coreservice.modules.system.compent.justauth.AuthWeChatMiniProgramRequest - client-id: wx44d047d87e6284d8 - client-secret: 21c3b7a8a51ee1b8f5cf875848ed4466 -# client-id: wx63c280fe3248a3e7 # TODO 芋艿:自己的测试,后续可以删除 -# client-secret: 6f270509224a7ae1296bbf1c8cb97aed - ignore-check-redirect-uri: true - ignore-check-state: true + WECHAT_MINI_PROGRAM: # 微信小程序 https://www.yuque.com/docs/share/88e3d30a-6830-45fc-8c25-dae485aef3aa?#%20%E3%80%8A%E5%B0%8F%E7%A8%8B%E5%BA%8F%E6%8E%88%E6%9D%83%E7%99%BB%E5%BD%95%E3%80%8B + client-id: wx44d047d87e6284d8 + client-secret: 21c3b7a8a51ee1b8f5cf875848ed4466 + # client-id: wx63c280fe3248a3e7 # TODO 芋艿:自己的测试,后续可以删除 + # client-secret: 6f270509224a7ae1296bbf1c8cb97aed + ignore-check-redirect-uri: true + ignore-check-state: true cache: type: REDIS prefix: 'social_auth_state:' # 缓存前缀,目前只对 Redis 缓存生效,默认 JUSTAUTH::STATE:: From a4948d27d28f31390390fa7ac92d3f0c9b6aa91d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8A=8B=E9=81=93=E6=BA=90=E7=A0=81?= Date: Mon, 1 Nov 2021 02:04:26 +0000 Subject: [PATCH 18/81] update yudao-admin-server/src/main/resources/application-local.yaml. --- yudao-admin-server/src/main/resources/application-local.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/yudao-admin-server/src/main/resources/application-local.yaml b/yudao-admin-server/src/main/resources/application-local.yaml index b34664b10f..d7880547fd 100644 --- a/yudao-admin-server/src/main/resources/application-local.yaml +++ b/yudao-admin-server/src/main/resources/application-local.yaml @@ -47,13 +47,13 @@ spring: url: jdbc:mysql://127.0.0.1:3306/${spring.datasource.dynamic.datasource.master.name}?useSSL=false&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=CTT driver-class-name: com.mysql.jdbc.Driver username: root - password: root + password: 123456 slave: # 模拟从库,可根据自己需要修改 name: ruoyi-vue-pro url: jdbc:mysql://127.0.0.1:3306/${spring.datasource.dynamic.datasource.slave.name}?useSSL=false&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=CTT driver-class-name: com.mysql.jdbc.Driver username: root - password: root + password: 123456 activiti: From 65abc667b03086fe321fe13f0149fad61058a994 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Tue, 2 Nov 2021 08:12:37 +0800 Subject: [PATCH 19/81] =?UTF-8?q?code=20review=20=E7=A4=BE=E4=BA=A4?= =?UTF-8?q?=E7=99=BB=E9=99=86=E7=9B=B8=E5=85=B3=E7=9A=84=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/system/controller/auth/SysAuthController.java | 6 +++--- .../framework/social/core/YudaoAuthRequestFactory.java | 8 +++++--- .../framework/social/core/enums/AuthExtendSource.java | 3 +-- .../framework/social/core/model/AuthExtendToken.java | 4 ++-- .../social/core/request/AuthWeChatMiniProgramRequest.java | 1 + .../system/service/auth/impl/SysAuthServiceImpl.java | 2 +- 6 files changed, 13 insertions(+), 11 deletions(-) diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/SysAuthController.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/SysAuthController.java index c557b789ae..aef8cc40ac 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/SysAuthController.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/SysAuthController.java @@ -50,7 +50,7 @@ public class SysAuthController { @Resource private SysPermissionService permissionService; @Resource - private SysSocialCoreService socialService; + private SysSocialCoreService socialCoreService; @PostMapping("/login") @ApiOperation("使用账号密码登录") @@ -102,7 +102,7 @@ public class SysAuthController { }) public CommonResult socialAuthRedirect(@RequestParam("type") Integer type, @RequestParam("redirectUri") String redirectUri) { - return CommonResult.success(socialService.getAuthorizeUrl(type, redirectUri)); + return CommonResult.success(socialCoreService.getAuthorizeUrl(type, redirectUri)); } @PostMapping("/social-login") @@ -133,7 +133,7 @@ public class SysAuthController { @DeleteMapping("/social-unbind") @ApiOperation("取消社交绑定") public CommonResult socialUnbind(@RequestBody SysAuthSocialUnbindReqVO reqVO) { - socialService.unbindSocialUser(getLoginUserId(), reqVO.getType(), reqVO.getUnionId(), UserTypeEnum.ADMIN); + socialCoreService.unbindSocialUser(getLoginUserId(), reqVO.getType(), reqVO.getUnionId(), UserTypeEnum.ADMIN); return CommonResult.success(true); } diff --git a/yudao-framework/yudao-spring-boot-starter-biz-social/src/main/java/cn/iocoder/yudao/framework/social/core/YudaoAuthRequestFactory.java b/yudao-framework/yudao-spring-boot-starter-biz-social/src/main/java/cn/iocoder/yudao/framework/social/core/YudaoAuthRequestFactory.java index 998c70a12e..17c36b6831 100644 --- a/yudao-framework/yudao-spring-boot-starter-biz-social/src/main/java/cn/iocoder/yudao/framework/social/core/YudaoAuthRequestFactory.java +++ b/yudao-framework/yudao-spring-boot-starter-biz-social/src/main/java/cn/iocoder/yudao/framework/social/core/YudaoAuthRequestFactory.java @@ -1,7 +1,6 @@ package cn.iocoder.yudao.framework.social.core; import cn.hutool.core.util.EnumUtil; -import cn.hutool.core.util.StrUtil; import cn.iocoder.yudao.framework.social.core.enums.AuthExtendSource; import cn.iocoder.yudao.framework.social.core.request.AuthWeChatMiniProgramRequest; import com.xkcoding.http.config.HttpConfig; @@ -18,12 +17,14 @@ import java.net.Proxy; import java.util.Map; /** - * 第三方授权拓展request工厂类 + * 第三方授权拓展 request 工厂类 + * TODO @timfruit 可以说明下,为啥有了 AuthRequestFactory 类,咱还需要自定义 * * @author timfruit * @date 2021-10-31 */ public class YudaoAuthRequestFactory extends AuthRequestFactory { + protected JustAuthProperties properties; protected AuthStateCache authStateCache; @@ -34,7 +35,7 @@ public class YudaoAuthRequestFactory extends AuthRequestFactory { } /** - * 返回AuthRequest对象 + * 返回 AuthRequest 对象 * * @param source {@link AuthSource} * @return {@link AuthRequest} @@ -86,6 +87,7 @@ public class YudaoAuthRequestFactory extends AuthRequestFactory { * @param authConfig {@link AuthConfig} */ protected void configureHttpConfig(String authSource, AuthConfig authConfig, JustAuthProperties.JustAuthHttpConfig httpConfig) { + // TODO @timfruit:可以改成反射调用父类的方法。可能有一定的损耗,但是可以忽略不计的 if (null == httpConfig) { return; } diff --git a/yudao-framework/yudao-spring-boot-starter-biz-social/src/main/java/cn/iocoder/yudao/framework/social/core/enums/AuthExtendSource.java b/yudao-framework/yudao-spring-boot-starter-biz-social/src/main/java/cn/iocoder/yudao/framework/social/core/enums/AuthExtendSource.java index bd19b8d060..fd6bb9cb9c 100644 --- a/yudao-framework/yudao-spring-boot-starter-biz-social/src/main/java/cn/iocoder/yudao/framework/social/core/enums/AuthExtendSource.java +++ b/yudao-framework/yudao-spring-boot-starter-biz-social/src/main/java/cn/iocoder/yudao/framework/social/core/enums/AuthExtendSource.java @@ -2,6 +2,7 @@ package cn.iocoder.yudao.framework.social.core.enums; import me.zhyd.oauth.config.AuthSource; +// TODO @timfruit:类注释 public enum AuthExtendSource implements AuthSource { /** @@ -28,6 +29,4 @@ public enum AuthExtendSource implements AuthSource { } } - ; - } diff --git a/yudao-framework/yudao-spring-boot-starter-biz-social/src/main/java/cn/iocoder/yudao/framework/social/core/model/AuthExtendToken.java b/yudao-framework/yudao-spring-boot-starter-biz-social/src/main/java/cn/iocoder/yudao/framework/social/core/model/AuthExtendToken.java index 3397a49762..2c0f4f4031 100644 --- a/yudao-framework/yudao-spring-boot-starter-biz-social/src/main/java/cn/iocoder/yudao/framework/social/core/model/AuthExtendToken.java +++ b/yudao-framework/yudao-spring-boot-starter-biz-social/src/main/java/cn/iocoder/yudao/framework/social/core/model/AuthExtendToken.java @@ -4,7 +4,7 @@ import lombok.*; import me.zhyd.oauth.model.AuthToken; /** - * 授权所需的token 拓展类 + * 授权所需的 token 拓展类 * * @author timfruit * @date 2021-10-29 @@ -16,7 +16,7 @@ import me.zhyd.oauth.model.AuthToken; public class AuthExtendToken extends AuthToken { /** - * 微信小程序 会话密钥 + * 微信小程序 - 会话密钥 */ private String miniSessionKey; diff --git a/yudao-framework/yudao-spring-boot-starter-biz-social/src/main/java/cn/iocoder/yudao/framework/social/core/request/AuthWeChatMiniProgramRequest.java b/yudao-framework/yudao-spring-boot-starter-biz-social/src/main/java/cn/iocoder/yudao/framework/social/core/request/AuthWeChatMiniProgramRequest.java index a875c3b6ec..ae9a8e1ecd 100644 --- a/yudao-framework/yudao-spring-boot-starter-biz-social/src/main/java/cn/iocoder/yudao/framework/social/core/request/AuthWeChatMiniProgramRequest.java +++ b/yudao-framework/yudao-spring-boot-starter-biz-social/src/main/java/cn/iocoder/yudao/framework/social/core/request/AuthWeChatMiniProgramRequest.java @@ -86,6 +86,7 @@ public class AuthWeChatMiniProgramRequest extends AuthDefaultRequest { .build(); } + // TODO @timfruit:我们要采用驼峰的命名方式。不匹配的,可以通过 jackson 的自定义注解映射 @Data private static class CodeSessionResponse { private int errcode; diff --git a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/service/auth/impl/SysAuthServiceImpl.java b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/service/auth/impl/SysAuthServiceImpl.java index e4b938861a..6ce2051073 100644 --- a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/service/auth/impl/SysAuthServiceImpl.java +++ b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/service/auth/impl/SysAuthServiceImpl.java @@ -65,7 +65,7 @@ public class SysAuthServiceImpl implements SysAuthService { private SysUserSessionCoreService userSessionCoreService; @Resource private SysSocialCoreService socialService; - private static final UserTypeEnum USER_TYPE_ENUM = UserTypeEnum.MEMBER; + private static final UserTypeEnum USER_TYPE_ENUM = UserTypeEnum.MEMBER; // TODO @timfruit 挪到类的最前面。一般是 静态变量,到成员变量的顺序。 @Override public UserDetails loadUserByUsername(String mobile) throws UsernameNotFoundException { From 4cfa959d9869e72257f276232d1763688fc4a21a Mon Sep 17 00:00:00 2001 From: yex Date: Tue, 2 Nov 2021 12:25:41 +0800 Subject: [PATCH 20/81] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E9=80=9A?= =?UTF-8?q?=E7=9F=A5=E5=92=8C=E5=AD=97=E5=85=B8=E6=9F=A5=E8=AF=A2=E6=9D=83?= =?UTF-8?q?=E9=99=90bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/controller/dict/SysDictTypeController.java | 6 +++--- .../system/controller/notice/SysNoticeController.java | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/SysDictTypeController.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/SysDictTypeController.java index 9ab36610d4..4057f8a3f7 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/SysDictTypeController.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/SysDictTypeController.java @@ -60,7 +60,7 @@ public class SysDictTypeController { @ApiOperation("/获得字典类型的分页列表") @GetMapping("/page") - @PreAuthorize("@ss.hasPermission('system:dict:quey')") + @PreAuthorize("@ss.hasPermission('system:dict:query')") public CommonResult> pageDictTypes(@Valid SysDictTypePageReqVO reqVO) { return success(SysDictTypeConvert.INSTANCE.convertPage(dictTypeService.getDictTypePage(reqVO))); } @@ -68,7 +68,7 @@ public class SysDictTypeController { @ApiOperation("/查询字典类型详细") @ApiImplicitParam(name = "id", value = "编号", required = true, example = "1024", dataTypeClass = Long.class) @GetMapping(value = "/get") - @PreAuthorize("@ss.hasPermission('system:dict:quey')") + @PreAuthorize("@ss.hasPermission('system:dict:query')") public CommonResult getDictType(@RequestParam("id") Long id) { return success(SysDictTypeConvert.INSTANCE.convert(dictTypeService.getDictType(id))); } @@ -83,7 +83,7 @@ public class SysDictTypeController { @ApiOperation("导出数据类型") @GetMapping("/export") - @PreAuthorize("@ss.hasPermission('system:dict:quey')") + @PreAuthorize("@ss.hasPermission('system:dict:query')") @OperateLog(type = EXPORT) public void export(HttpServletResponse response, @Valid SysDictTypeExportReqVO reqVO) throws IOException { List list = dictTypeService.getDictTypeList(reqVO); diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/notice/SysNoticeController.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/notice/SysNoticeController.java index f004c953e6..5ab1944ab5 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/notice/SysNoticeController.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/notice/SysNoticeController.java @@ -56,7 +56,7 @@ public class SysNoticeController { @GetMapping("/page") @ApiOperation("获取通知公告列表") - @PreAuthorize("@ss.hasPermission('system:notice:quey')") + @PreAuthorize("@ss.hasPermission('system:notice:query')") public CommonResult> pageNotices(@Validated SysNoticePageReqVO reqVO) { return success(SysNoticeConvert.INSTANCE.convertPage(noticeService.pageNotices(reqVO))); } @@ -64,7 +64,7 @@ public class SysNoticeController { @GetMapping("/get") @ApiOperation("获得通知公告") @ApiImplicitParam(name = "id", value = "编号", required = true, example = "1024", dataTypeClass = Long.class) - @PreAuthorize("@ss.hasPermission('system:notice:quey')") + @PreAuthorize("@ss.hasPermission('system:notice:query')") public CommonResult getNotice(@RequestParam("id") Long id) { return success(SysNoticeConvert.INSTANCE.convert(noticeService.getNotice(id))); } From 9d8cdb2670c64be4ffe1c324edb8be10138760e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A8=8A=E5=AE=87?= <970895810@qq.com> Date: Wed, 3 Nov 2021 10:26:01 +0800 Subject: [PATCH 21/81] =?UTF-8?q?=E5=8A=A8=E6=80=81=E8=A1=A8=E5=8D=95=20?= =?UTF-8?q?=E5=90=8E=E7=AB=AF=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/form/OsFormController.java | 96 +++++++++++++++++++ .../controller/form/vo/OsFormBaseVO.java | 28 ++++++ .../controller/form/vo/OsFormCreateReqVO.java | 12 +++ .../controller/form/vo/OsFormExcelVO.java | 34 +++++++ .../controller/form/vo/OsFormExportReqVO.java | 33 +++++++ .../controller/form/vo/OsFormPageReqVO.java | 36 +++++++ .../controller/form/vo/OsFormRespVO.java | 19 ++++ .../controller/form/vo/OsFormUpdateReqVO.java | 17 ++++ .../activiti/convert/form/OsFormConvert.java | 36 +++++++ .../dal/dataobject/form/OsFormDO.java | 44 +++++++++ .../activiti/dal/mysql/form/OsFormMapper.java | 43 +++++++++ .../enums/form/FormErrorCodeConstants.java | 14 +++ .../activiti/service/form/OsFormService.java | 75 +++++++++++++++ .../service/form/impl/OsFormServiceImpl.java | 85 ++++++++++++++++ 14 files changed, 572 insertions(+) create mode 100644 yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/OsFormController.java create mode 100644 yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/OsFormBaseVO.java create mode 100644 yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/OsFormCreateReqVO.java create mode 100644 yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/OsFormExcelVO.java create mode 100644 yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/OsFormExportReqVO.java create mode 100644 yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/OsFormPageReqVO.java create mode 100644 yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/OsFormRespVO.java create mode 100644 yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/OsFormUpdateReqVO.java create mode 100644 yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/convert/form/OsFormConvert.java create mode 100644 yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/dal/dataobject/form/OsFormDO.java create mode 100644 yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/dal/mysql/form/OsFormMapper.java create mode 100644 yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/enums/form/FormErrorCodeConstants.java create mode 100644 yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/form/OsFormService.java create mode 100644 yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/form/impl/OsFormServiceImpl.java diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/OsFormController.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/OsFormController.java new file mode 100644 index 0000000000..847ef9f200 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/OsFormController.java @@ -0,0 +1,96 @@ +package cn.iocoder.yudao.adminserver.modules.activiti.controller.form; + +import cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo.*; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.adminserver.modules.activiti.convert.form.OsFormConvert; +import cn.iocoder.yudao.adminserver.modules.activiti.dal.dataobject.form.OsFormDO; +import cn.iocoder.yudao.adminserver.modules.activiti.service.form.OsFormService; +import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import io.swagger.annotations.*; +import javax.validation.*; +import javax.servlet.http.*; +import java.util.*; +import java.io.IOException; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; +import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; +import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.*; + + + +@Api(tags = "动态表单") +@RestController +@RequestMapping("/os/form") +@Validated +public class OsFormController { + + @Resource + private OsFormService formService; + + @PostMapping("/create") + @ApiOperation("创建动态表单") + @PreAuthorize("@ss.hasPermission('os:form:create')") + public CommonResult createForm(@Valid @RequestBody OsFormCreateReqVO createReqVO) { + return success(formService.createForm(createReqVO)); + } + + @PutMapping("/update") + @ApiOperation("更新动态表单") + @PreAuthorize("@ss.hasPermission('os:form:update')") + public CommonResult updateForm(@Valid @RequestBody OsFormUpdateReqVO updateReqVO) { + formService.updateForm(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @ApiOperation("删除动态表单") + @ApiImplicitParam(name = "id", value = "编号", required = true) + @PreAuthorize("@ss.hasPermission('os:form:delete')") + public CommonResult deleteForm(@RequestParam("id") Long id) { + formService.deleteForm(id); + return success(true); + } + + @GetMapping("/get") + @ApiOperation("获得动态表单") + @ApiImplicitParam(name = "id", value = "编号", required = true, example = "1024", dataTypeClass = Long.class) + @PreAuthorize("@ss.hasPermission('os:form:query')") + public CommonResult getForm(@RequestParam("id") Long id) { + OsFormDO form = formService.getForm(id); + return success(OsFormConvert.INSTANCE.convert(form)); + } + + @GetMapping("/list") + @ApiOperation("获得动态表单列表") + @ApiImplicitParam(name = "ids", value = "编号列表", required = true, example = "1024,2048", dataTypeClass = List.class) + @PreAuthorize("@ss.hasPermission('os:form:query')") + public CommonResult> getFormList(@RequestParam("ids") Collection ids) { + List list = formService.getFormList(ids); + return success(OsFormConvert.INSTANCE.convertList(list)); + } + + @GetMapping("/page") + @ApiOperation("获得动态表单分页") + @PreAuthorize("@ss.hasPermission('os:form:query')") + public CommonResult> getFormPage(@Valid OsFormPageReqVO pageVO) { + PageResult pageResult = formService.getFormPage(pageVO); + return success(OsFormConvert.INSTANCE.convertPage(pageResult)); + } + + @GetMapping("/export-excel") + @ApiOperation("导出动态表单 Excel") + @PreAuthorize("@ss.hasPermission('os:form:export')") + @OperateLog(type = EXPORT) + public void exportFormExcel(@Valid OsFormExportReqVO exportReqVO, + HttpServletResponse response) throws IOException { + List list = formService.getFormList(exportReqVO); + // 导出 Excel + List datas = OsFormConvert.INSTANCE.convertList02(list); + ExcelUtils.write(response, "动态表单.xls", "数据", OsFormExcelVO.class, datas); + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/OsFormBaseVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/OsFormBaseVO.java new file mode 100644 index 0000000000..7868be836a --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/OsFormBaseVO.java @@ -0,0 +1,28 @@ +package cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo; + +import lombok.*; +import io.swagger.annotations.*; +import javax.validation.constraints.*; + +/** +* 动态表单 Base VO,提供给添加、修改、详细的子 VO 使用 +* 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 +*/ +@Data +public class OsFormBaseVO { + + @ApiModelProperty(value = "表单名称", required = true) + @NotNull(message = "表单名称不能为空") + private String name; + + @ApiModelProperty(value = "商户状态", required = true) + @NotNull(message = "商户状态不能为空") + private Integer status; + + @ApiModelProperty(value = "表单JSON") + private String formJson; + + @ApiModelProperty(value = "备注") + private String remark; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/OsFormCreateReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/OsFormCreateReqVO.java new file mode 100644 index 0000000000..bd58aacf18 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/OsFormCreateReqVO.java @@ -0,0 +1,12 @@ +package cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo; + +import lombok.*; +import io.swagger.annotations.*; + +@ApiModel("动态表单创建 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class OsFormCreateReqVO extends OsFormBaseVO { + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/OsFormExcelVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/OsFormExcelVO.java new file mode 100644 index 0000000000..0d2147c96d --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/OsFormExcelVO.java @@ -0,0 +1,34 @@ +package cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo; + +import lombok.*; +import java.util.*; + +import com.alibaba.excel.annotation.ExcelProperty; + +/** + * 动态表单 Excel VO + * + * @author 芋艿 + */ +@Data +public class OsFormExcelVO { + + @ExcelProperty("表单编号") + private Long id; + + @ExcelProperty("表单名称") + private String name; + + @ExcelProperty("商户状态") + private Integer status; + + @ExcelProperty("表单JSON") + private String formJson; + + @ExcelProperty("备注") + private String remark; + + @ExcelProperty("创建时间") + private Date createTime; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/OsFormExportReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/OsFormExportReqVO.java new file mode 100644 index 0000000000..bd68cd884d --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/OsFormExportReqVO.java @@ -0,0 +1,33 @@ +package cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo; + +import lombok.*; +import java.util.*; +import io.swagger.annotations.*; +import org.springframework.format.annotation.DateTimeFormat; +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@ApiModel(value = "动态表单 Excel 导出 Request VO", description = "参数和 OsFormPageReqVO 是一致的") +@Data +public class OsFormExportReqVO { + + @ApiModelProperty(value = "表单名称") + private String name; + + @ApiModelProperty(value = "商户状态") + private Integer status; + + @ApiModelProperty(value = "表单JSON") + private String formJson; + + @ApiModelProperty(value = "备注") + private String remark; + + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + @ApiModelProperty(value = "开始创建时间") + private Date beginCreateTime; + + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + @ApiModelProperty(value = "结束创建时间") + private Date endCreateTime; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/OsFormPageReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/OsFormPageReqVO.java new file mode 100644 index 0000000000..0c9167bc0d --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/OsFormPageReqVO.java @@ -0,0 +1,36 @@ +package cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo; + +import lombok.*; +import java.util.*; +import io.swagger.annotations.*; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@ApiModel("动态表单分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class OsFormPageReqVO extends PageParam { + + @ApiModelProperty(value = "表单名称") + private String name; + + @ApiModelProperty(value = "商户状态") + private Integer status; + + @ApiModelProperty(value = "表单JSON") + private String formJson; + + @ApiModelProperty(value = "备注") + private String remark; + + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + @ApiModelProperty(value = "开始创建时间") + private Date beginCreateTime; + + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + @ApiModelProperty(value = "结束创建时间") + private Date endCreateTime; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/OsFormRespVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/OsFormRespVO.java new file mode 100644 index 0000000000..adc63d31b1 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/OsFormRespVO.java @@ -0,0 +1,19 @@ +package cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo; + +import lombok.*; +import java.util.*; +import io.swagger.annotations.*; + +@ApiModel("动态表单 Response VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class OsFormRespVO extends OsFormBaseVO { + + @ApiModelProperty(value = "表单编号", required = true) + private Long id; + + @ApiModelProperty(value = "创建时间", required = true) + private Date createTime; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/OsFormUpdateReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/OsFormUpdateReqVO.java new file mode 100644 index 0000000000..daba1d922d --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/OsFormUpdateReqVO.java @@ -0,0 +1,17 @@ +package cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo; + +import lombok.*; +import io.swagger.annotations.*; +import javax.validation.constraints.*; + +@ApiModel("动态表单更新 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class OsFormUpdateReqVO extends OsFormBaseVO { + + @ApiModelProperty(value = "表单编号", required = true) + @NotNull(message = "表单编号不能为空") + private Long id; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/convert/form/OsFormConvert.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/convert/form/OsFormConvert.java new file mode 100644 index 0000000000..96bff877cf --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/convert/form/OsFormConvert.java @@ -0,0 +1,36 @@ +package cn.iocoder.yudao.adminserver.modules.activiti.convert.form; + +import cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo.OsFormCreateReqVO; +import cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo.OsFormExcelVO; +import cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo.OsFormRespVO; +import cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo.OsFormUpdateReqVO; +import cn.iocoder.yudao.adminserver.modules.activiti.dal.dataobject.form.OsFormDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; + +/** + * 动态表单 Convert + * + * @author 芋艿 + */ +@Mapper +public interface OsFormConvert { + + OsFormConvert INSTANCE = Mappers.getMapper(OsFormConvert.class); + + OsFormDO convert(OsFormCreateReqVO bean); + + OsFormDO convert(OsFormUpdateReqVO bean); + + OsFormRespVO convert(OsFormDO bean); + + List convertList(List list); + + PageResult convertPage(PageResult page); + + List convertList02(List list); + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/dal/dataobject/form/OsFormDO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/dal/dataobject/form/OsFormDO.java new file mode 100644 index 0000000000..8b6296da7c --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/dal/dataobject/form/OsFormDO.java @@ -0,0 +1,44 @@ +package cn.iocoder.yudao.adminserver.modules.activiti.dal.dataobject.form; + +import lombok.*; +import java.util.*; +import com.baomidou.mybatisplus.annotation.*; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; + +/** + * 动态表单 DO + * + * @author 芋艿 + */ +@TableName("os_form") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class OsFormDO extends BaseDO { + + /** + * 表单编号 + */ + @TableId + private Long id; + /** + * 表单名称 + */ + private String name; + /** + * 商户状态 + */ + private Integer status; + /** + * 表单JSON + */ + private String formJson; + /** + * 备注 + */ + private String remark; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/dal/mysql/form/OsFormMapper.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/dal/mysql/form/OsFormMapper.java new file mode 100644 index 0000000000..19acff2155 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/dal/mysql/form/OsFormMapper.java @@ -0,0 +1,43 @@ +package cn.iocoder.yudao.adminserver.modules.activiti.dal.mysql.form; + + + +import cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo.OsFormExportReqVO; +import cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo.OsFormPageReqVO; +import cn.iocoder.yudao.adminserver.modules.activiti.dal.dataobject.form.OsFormDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * 动态表单 Mapper + * + * @author 芋艿 + */ +@Mapper +public interface OsFormMapper extends BaseMapperX { + + default PageResult selectPage(OsFormPageReqVO reqVO) { + return selectPage(reqVO, new QueryWrapperX() + .likeIfPresent("name", reqVO.getName()) + .eqIfPresent("status", reqVO.getStatus()) + .eqIfPresent("form_json", reqVO.getFormJson()) + .eqIfPresent("remark", reqVO.getRemark()) + .betweenIfPresent("create_time", reqVO.getBeginCreateTime(), reqVO.getEndCreateTime()) + .orderByDesc("id") ); + } + + default List selectList(OsFormExportReqVO reqVO) { + return selectList(new QueryWrapperX() + .likeIfPresent("name", reqVO.getName()) + .eqIfPresent("status", reqVO.getStatus()) + .eqIfPresent("form_json", reqVO.getFormJson()) + .eqIfPresent("remark", reqVO.getRemark()) + .betweenIfPresent("create_time", reqVO.getBeginCreateTime(), reqVO.getEndCreateTime()) + .orderByDesc("id") ); + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/enums/form/FormErrorCodeConstants.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/enums/form/FormErrorCodeConstants.java new file mode 100644 index 0000000000..e0b961c00d --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/enums/form/FormErrorCodeConstants.java @@ -0,0 +1,14 @@ +package cn.iocoder.yudao.adminserver.modules.activiti.enums.form; + +import cn.iocoder.yudao.framework.common.exception.ErrorCode; + +/** + * activiti 系统 错误码枚举类 + * + * 003 activiti + * 001 oa + * activiti 系统,使用 1-003-000-000 段 + */ +public interface FormErrorCodeConstants { + ErrorCode FORM_NOT_EXISTS = new ErrorCode(1003001002, "动态表单不存在"); +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/form/OsFormService.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/form/OsFormService.java new file mode 100644 index 0000000000..1691d412da --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/form/OsFormService.java @@ -0,0 +1,75 @@ +package cn.iocoder.yudao.adminserver.modules.activiti.service.form; + +import cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo.OsFormCreateReqVO; +import cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo.OsFormExportReqVO; +import cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo.OsFormPageReqVO; +import cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo.OsFormUpdateReqVO; +import cn.iocoder.yudao.adminserver.modules.activiti.dal.dataobject.form.OsFormDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; + +import java.util.*; +import javax.validation.*; + + +/** + * 动态表单 Service 接口 + * + * @author 芋艿 + */ +public interface OsFormService { + + /** + * 创建动态表单 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createForm(@Valid OsFormCreateReqVO createReqVO); + + /** + * 更新动态表单 + * + * @param updateReqVO 更新信息 + */ + void updateForm(@Valid OsFormUpdateReqVO updateReqVO); + + /** + * 删除动态表单 + * + * @param id 编号 + */ + void deleteForm(Long id); + + /** + * 获得动态表单 + * + * @param id 编号 + * @return 动态表单 + */ + OsFormDO getForm(Long id); + + /** + * 获得动态表单列表 + * + * @param ids 编号 + * @return 动态表单列表 + */ + List getFormList(Collection ids); + + /** + * 获得动态表单分页 + * + * @param pageReqVO 分页查询 + * @return 动态表单分页 + */ + PageResult getFormPage(OsFormPageReqVO pageReqVO); + + /** + * 获得动态表单列表, 用于 Excel 导出 + * + * @param exportReqVO 查询条件 + * @return 动态表单列表 + */ + List getFormList(OsFormExportReqVO exportReqVO); + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/form/impl/OsFormServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/form/impl/OsFormServiceImpl.java new file mode 100644 index 0000000000..ed2f030468 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/form/impl/OsFormServiceImpl.java @@ -0,0 +1,85 @@ +package cn.iocoder.yudao.adminserver.modules.activiti.service.form.impl; + +import cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo.OsFormCreateReqVO; +import cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo.OsFormExportReqVO; +import cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo.OsFormPageReqVO; +import cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo.OsFormUpdateReqVO; +import cn.iocoder.yudao.adminserver.modules.activiti.convert.form.OsFormConvert; +import cn.iocoder.yudao.adminserver.modules.activiti.dal.dataobject.form.OsFormDO; +import cn.iocoder.yudao.adminserver.modules.activiti.dal.mysql.form.OsFormMapper; +import cn.iocoder.yudao.adminserver.modules.activiti.service.form.OsFormService; +import cn.iocoder.yudao.framework.common.pojo.PageResult; + +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import java.util.*; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.adminserver.modules.activiti.enums.form.FormErrorCodeConstants.FORM_NOT_EXISTS; + +/** + * 动态表单 Service 实现类 + * + * @author 芋艿 + */ +@Service +@Validated +public class OsFormServiceImpl implements OsFormService { + + @Resource + private OsFormMapper formMapper; + + @Override + public Long createForm(OsFormCreateReqVO createReqVO) { + // 插入 + OsFormDO form = OsFormConvert.INSTANCE.convert(createReqVO); + formMapper.insert(form); + // 返回 + return form.getId(); + } + + @Override + public void updateForm(OsFormUpdateReqVO updateReqVO) { + // 校验存在 + this.validateFormExists(updateReqVO.getId()); + // 更新 + OsFormDO updateObj = OsFormConvert.INSTANCE.convert(updateReqVO); + formMapper.updateById(updateObj); + } + + @Override + public void deleteForm(Long id) { + // 校验存在 + this.validateFormExists(id); + // 删除 + formMapper.deleteById(id); + } + + private void validateFormExists(Long id) { + if (formMapper.selectById(id) == null) { + throw exception(FORM_NOT_EXISTS); + } + } + + @Override + public OsFormDO getForm(Long id) { + return formMapper.selectById(id); + } + + @Override + public List getFormList(Collection ids) { + return formMapper.selectBatchIds(ids); + } + + @Override + public PageResult getFormPage(OsFormPageReqVO pageReqVO) { + return formMapper.selectPage(pageReqVO); + } + + @Override + public List getFormList(OsFormExportReqVO exportReqVO) { + return formMapper.selectList(exportReqVO); + } + +} From 592f706cd849a37ae08cb90e96bd6f9ffb7fbf8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8A=8B=E9=81=93=E6=BA=90=E7=A0=81?= Date: Thu, 4 Nov 2021 00:54:27 +0000 Subject: [PATCH 22/81] =?UTF-8?q?update=20=E6=9B=B4=E6=96=B0=E6=97=A5?= =?UTF-8?q?=E5=BF=97.md.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 更新日志.md | 1 + 1 file changed, 1 insertion(+) diff --git a/更新日志.md b/更新日志.md index 0121077298..748a6d2d94 100644 --- a/更新日志.md +++ b/更新日志.md @@ -21,6 +21,7 @@ ## [v1.2.0] 进行中 * 新增用户前台的昵称、头像的修改 +* 修复通知和字典查询权限 Bug TODO From b7a90c2c128550e0cd8290dd7fa342db1f28351f Mon Sep 17 00:00:00 2001 From: YunaiV Date: Thu, 4 Nov 2021 09:03:05 +0800 Subject: [PATCH 23/81] =?UTF-8?q?code=20review=20=E5=8A=A8=E6=80=81?= =?UTF-8?q?=E8=A1=A8=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/form/OsFormController.java | 28 +++++++++++-------- .../dal/dataobject/form/OsFormDO.java | 7 +++-- .../service/form/impl/OsFormServiceImpl.java | 11 ++++---- 3 files changed, 26 insertions(+), 20 deletions(-) diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/OsFormController.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/OsFormController.java index 847ef9f200..3e61a86325 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/OsFormController.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/OsFormController.java @@ -1,27 +1,31 @@ package cn.iocoder.yudao.adminserver.modules.activiti.controller.form; import cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo.*; -import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.adminserver.modules.activiti.convert.form.OsFormConvert; import cn.iocoder.yudao.adminserver.modules.activiti.dal.dataobject.form.OsFormDO; import cn.iocoder.yudao.adminserver.modules.activiti.service.form.OsFormService; -import org.springframework.web.bind.annotation.*; -import javax.annotation.Resource; -import org.springframework.validation.annotation.Validated; -import org.springframework.security.access.prepost.PreAuthorize; -import io.swagger.annotations.*; -import javax.validation.*; -import javax.servlet.http.*; -import java.util.*; -import java.io.IOException; import cn.iocoder.yudao.framework.common.pojo.CommonResult; -import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; +import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; -import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.*; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; +import java.io.IOException; +import java.util.Collection; +import java.util.List; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; +import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; +// TODO @风里雾里: Os=》Wf,/os 改成 /wl 开头。目前这个模块,咱先定位成给工作流用的 @Api(tags = "动态表单") @RestController @RequestMapping("/os/form") diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/dal/dataobject/form/OsFormDO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/dal/dataobject/form/OsFormDO.java index 8b6296da7c..bb0e3b2375 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/dal/dataobject/form/OsFormDO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/dal/dataobject/form/OsFormDO.java @@ -1,10 +1,11 @@ package cn.iocoder.yudao.adminserver.modules.activiti.dal.dataobject.form; -import lombok.*; -import java.util.*; -import com.baomidou.mybatisplus.annotation.*; import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.*; +// TODO @风里雾里:切到 https://gitee.com/zhijiantianya/ruoyi-vue-pro/blob/feature/activiti/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/workflow/dal/dataobject/form/WfForm.java 。status 添加进去哈。 /** * 动态表单 DO * diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/form/impl/OsFormServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/form/impl/OsFormServiceImpl.java index ed2f030468..b0ab903b88 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/form/impl/OsFormServiceImpl.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/form/impl/OsFormServiceImpl.java @@ -9,19 +9,20 @@ import cn.iocoder.yudao.adminserver.modules.activiti.dal.dataobject.form.OsFormD import cn.iocoder.yudao.adminserver.modules.activiti.dal.mysql.form.OsFormMapper; import cn.iocoder.yudao.adminserver.modules.activiti.service.form.OsFormService; import cn.iocoder.yudao.framework.common.pojo.PageResult; - import org.springframework.stereotype.Service; -import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; -import java.util.*; -import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import javax.annotation.Resource; +import java.util.Collection; +import java.util.List; + import static cn.iocoder.yudao.adminserver.modules.activiti.enums.form.FormErrorCodeConstants.FORM_NOT_EXISTS; +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; /** * 动态表单 Service 实现类 * - * @author 芋艿 + * @author 芋艿 // TODO @风里雾里:作者改成你自己哈 */ @Service @Validated From b369b363b686d1681fd17ecc7de425428aa46800 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A8=8A=E5=AE=87?= <970895810@qq.com> Date: Thu, 4 Nov 2021 17:35:01 +0800 Subject: [PATCH 24/81] =?UTF-8?q?=E5=8A=A8=E6=80=81=E8=A1=A8=E5=8D=95=20?= =?UTF-8?q?=E5=91=BD=E5=90=8D=E8=A7=84=E8=8C=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...mController.java => WlFormController.java} | 42 +++++++------- .../{OsFormBaseVO.java => WfFormBaseVO.java} | 2 +- ...reateReqVO.java => WfFormCreateReqVO.java} | 2 +- ...{OsFormExcelVO.java => WfFormExcelVO.java} | 2 +- ...xportReqVO.java => WfFormExportReqVO.java} | 2 +- ...ormPageReqVO.java => WfFormPageReqVO.java} | 2 +- .../{OsFormRespVO.java => WfFormRespVO.java} | 2 +- ...pdateReqVO.java => WfFormUpdateReqVO.java} | 2 +- ...{OsFormConvert.java => WfFormConvert.java} | 26 ++++----- .../dal/dataobject/form/OsFormDO.java | 45 --------------- .../activiti/dal/dataobject/form/WfForm.java | 57 +++++++++++++++++++ .../dal/dataobject/form/WfFormData.java | 55 ++++++++++++++++++ .../{OsFormMapper.java => WfFormMapper.java} | 18 +++--- ...nts.java => WfFormErrorCodeConstants.java} | 2 +- ...{OsFormService.java => WfFormService.java} | 26 ++++----- ...erviceImpl.java => WfFormServiceImpl.java} | 40 ++++++------- 16 files changed, 196 insertions(+), 129 deletions(-) rename yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/{OsFormController.java => WlFormController.java} (75%) rename yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/{OsFormBaseVO.java => WfFormBaseVO.java} (96%) rename yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/{OsFormCreateReqVO.java => WfFormCreateReqVO.java} (81%) rename yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/{OsFormExcelVO.java => WfFormExcelVO.java} (95%) rename yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/{OsFormExportReqVO.java => WfFormExportReqVO.java} (96%) rename yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/{OsFormPageReqVO.java => WfFormPageReqVO.java} (95%) rename yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/{OsFormRespVO.java => WfFormRespVO.java} (89%) rename yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/{OsFormUpdateReqVO.java => WfFormUpdateReqVO.java} (88%) rename yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/convert/form/{OsFormConvert.java => WfFormConvert.java} (53%) delete mode 100644 yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/dal/dataobject/form/OsFormDO.java create mode 100644 yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/dal/dataobject/form/WfForm.java create mode 100644 yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/dal/dataobject/form/WfFormData.java rename yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/dal/mysql/form/{OsFormMapper.java => WfFormMapper.java} (77%) rename yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/enums/form/{FormErrorCodeConstants.java => WfFormErrorCodeConstants.java} (88%) rename yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/form/{OsFormService.java => WfFormService.java} (72%) rename yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/form/impl/{OsFormServiceImpl.java => WfFormServiceImpl.java} (68%) diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/OsFormController.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/WlFormController.java similarity index 75% rename from yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/OsFormController.java rename to yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/WlFormController.java index 3e61a86325..f2e795c644 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/OsFormController.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/WlFormController.java @@ -1,9 +1,9 @@ package cn.iocoder.yudao.adminserver.modules.activiti.controller.form; import cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo.*; -import cn.iocoder.yudao.adminserver.modules.activiti.convert.form.OsFormConvert; -import cn.iocoder.yudao.adminserver.modules.activiti.dal.dataobject.form.OsFormDO; -import cn.iocoder.yudao.adminserver.modules.activiti.service.form.OsFormService; +import cn.iocoder.yudao.adminserver.modules.activiti.convert.form.WfFormConvert; +import cn.iocoder.yudao.adminserver.modules.activiti.dal.dataobject.form.WfForm; +import cn.iocoder.yudao.adminserver.modules.activiti.service.form.WfFormService; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; @@ -28,24 +28,24 @@ import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.E // TODO @风里雾里: Os=》Wf,/os 改成 /wl 开头。目前这个模块,咱先定位成给工作流用的 @Api(tags = "动态表单") @RestController -@RequestMapping("/os/form") +@RequestMapping("/wl/form") @Validated -public class OsFormController { +public class WlFormController { @Resource - private OsFormService formService; + private WfFormService formService; @PostMapping("/create") @ApiOperation("创建动态表单") @PreAuthorize("@ss.hasPermission('os:form:create')") - public CommonResult createForm(@Valid @RequestBody OsFormCreateReqVO createReqVO) { + public CommonResult createForm(@Valid @RequestBody WfFormCreateReqVO createReqVO) { return success(formService.createForm(createReqVO)); } @PutMapping("/update") @ApiOperation("更新动态表单") @PreAuthorize("@ss.hasPermission('os:form:update')") - public CommonResult updateForm(@Valid @RequestBody OsFormUpdateReqVO updateReqVO) { + public CommonResult updateForm(@Valid @RequestBody WfFormUpdateReqVO updateReqVO) { formService.updateForm(updateReqVO); return success(true); } @@ -63,38 +63,38 @@ public class OsFormController { @ApiOperation("获得动态表单") @ApiImplicitParam(name = "id", value = "编号", required = true, example = "1024", dataTypeClass = Long.class) @PreAuthorize("@ss.hasPermission('os:form:query')") - public CommonResult getForm(@RequestParam("id") Long id) { - OsFormDO form = formService.getForm(id); - return success(OsFormConvert.INSTANCE.convert(form)); + public CommonResult getForm(@RequestParam("id") Long id) { + WfForm form = formService.getForm(id); + return success(WfFormConvert.INSTANCE.convert(form)); } @GetMapping("/list") @ApiOperation("获得动态表单列表") @ApiImplicitParam(name = "ids", value = "编号列表", required = true, example = "1024,2048", dataTypeClass = List.class) @PreAuthorize("@ss.hasPermission('os:form:query')") - public CommonResult> getFormList(@RequestParam("ids") Collection ids) { - List list = formService.getFormList(ids); - return success(OsFormConvert.INSTANCE.convertList(list)); + public CommonResult> getFormList(@RequestParam("ids") Collection ids) { + List list = formService.getFormList(ids); + return success(WfFormConvert.INSTANCE.convertList(list)); } @GetMapping("/page") @ApiOperation("获得动态表单分页") @PreAuthorize("@ss.hasPermission('os:form:query')") - public CommonResult> getFormPage(@Valid OsFormPageReqVO pageVO) { - PageResult pageResult = formService.getFormPage(pageVO); - return success(OsFormConvert.INSTANCE.convertPage(pageResult)); + public CommonResult> getFormPage(@Valid WfFormPageReqVO pageVO) { + PageResult pageResult = formService.getFormPage(pageVO); + return success(WfFormConvert.INSTANCE.convertPage(pageResult)); } @GetMapping("/export-excel") @ApiOperation("导出动态表单 Excel") @PreAuthorize("@ss.hasPermission('os:form:export')") @OperateLog(type = EXPORT) - public void exportFormExcel(@Valid OsFormExportReqVO exportReqVO, + public void exportFormExcel(@Valid WfFormExportReqVO exportReqVO, HttpServletResponse response) throws IOException { - List list = formService.getFormList(exportReqVO); + List list = formService.getFormList(exportReqVO); // 导出 Excel - List datas = OsFormConvert.INSTANCE.convertList02(list); - ExcelUtils.write(response, "动态表单.xls", "数据", OsFormExcelVO.class, datas); + List datas = WfFormConvert.INSTANCE.convertList02(list); + ExcelUtils.write(response, "动态表单.xls", "数据", WfFormExcelVO.class, datas); } } diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/OsFormBaseVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/WfFormBaseVO.java similarity index 96% rename from yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/OsFormBaseVO.java rename to yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/WfFormBaseVO.java index 7868be836a..b3fe5d871f 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/OsFormBaseVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/WfFormBaseVO.java @@ -9,7 +9,7 @@ import javax.validation.constraints.*; * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 */ @Data -public class OsFormBaseVO { +public class WfFormBaseVO { @ApiModelProperty(value = "表单名称", required = true) @NotNull(message = "表单名称不能为空") diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/OsFormCreateReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/WfFormCreateReqVO.java similarity index 81% rename from yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/OsFormCreateReqVO.java rename to yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/WfFormCreateReqVO.java index bd58aacf18..7f989a33cd 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/OsFormCreateReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/WfFormCreateReqVO.java @@ -7,6 +7,6 @@ import io.swagger.annotations.*; @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) -public class OsFormCreateReqVO extends OsFormBaseVO { +public class WfFormCreateReqVO extends WfFormBaseVO { } diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/OsFormExcelVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/WfFormExcelVO.java similarity index 95% rename from yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/OsFormExcelVO.java rename to yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/WfFormExcelVO.java index 0d2147c96d..111c19e1e8 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/OsFormExcelVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/WfFormExcelVO.java @@ -11,7 +11,7 @@ import com.alibaba.excel.annotation.ExcelProperty; * @author 芋艿 */ @Data -public class OsFormExcelVO { +public class WfFormExcelVO { @ExcelProperty("表单编号") private Long id; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/OsFormExportReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/WfFormExportReqVO.java similarity index 96% rename from yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/OsFormExportReqVO.java rename to yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/WfFormExportReqVO.java index bd68cd884d..358a38821c 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/OsFormExportReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/WfFormExportReqVO.java @@ -8,7 +8,7 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_ @ApiModel(value = "动态表单 Excel 导出 Request VO", description = "参数和 OsFormPageReqVO 是一致的") @Data -public class OsFormExportReqVO { +public class WfFormExportReqVO { @ApiModelProperty(value = "表单名称") private String name; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/OsFormPageReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/WfFormPageReqVO.java similarity index 95% rename from yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/OsFormPageReqVO.java rename to yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/WfFormPageReqVO.java index 0c9167bc0d..8cbdc077fa 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/OsFormPageReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/WfFormPageReqVO.java @@ -11,7 +11,7 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_ @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) -public class OsFormPageReqVO extends PageParam { +public class WfFormPageReqVO extends PageParam { @ApiModelProperty(value = "表单名称") private String name; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/OsFormRespVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/WfFormRespVO.java similarity index 89% rename from yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/OsFormRespVO.java rename to yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/WfFormRespVO.java index adc63d31b1..779284be53 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/OsFormRespVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/WfFormRespVO.java @@ -8,7 +8,7 @@ import io.swagger.annotations.*; @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) -public class OsFormRespVO extends OsFormBaseVO { +public class WfFormRespVO extends WfFormBaseVO { @ApiModelProperty(value = "表单编号", required = true) private Long id; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/OsFormUpdateReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/WfFormUpdateReqVO.java similarity index 88% rename from yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/OsFormUpdateReqVO.java rename to yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/WfFormUpdateReqVO.java index daba1d922d..4a3bf4e2dd 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/OsFormUpdateReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/WfFormUpdateReqVO.java @@ -8,7 +8,7 @@ import javax.validation.constraints.*; @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) -public class OsFormUpdateReqVO extends OsFormBaseVO { +public class WfFormUpdateReqVO extends WfFormBaseVO { @ApiModelProperty(value = "表单编号", required = true) @NotNull(message = "表单编号不能为空") diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/convert/form/OsFormConvert.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/convert/form/WfFormConvert.java similarity index 53% rename from yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/convert/form/OsFormConvert.java rename to yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/convert/form/WfFormConvert.java index 96bff877cf..ad07fafe89 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/convert/form/OsFormConvert.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/convert/form/WfFormConvert.java @@ -1,10 +1,10 @@ package cn.iocoder.yudao.adminserver.modules.activiti.convert.form; -import cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo.OsFormCreateReqVO; -import cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo.OsFormExcelVO; -import cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo.OsFormRespVO; -import cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo.OsFormUpdateReqVO; -import cn.iocoder.yudao.adminserver.modules.activiti.dal.dataobject.form.OsFormDO; +import cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo.WfFormCreateReqVO; +import cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo.WfFormExcelVO; +import cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo.WfFormRespVO; +import cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo.WfFormUpdateReqVO; +import cn.iocoder.yudao.adminserver.modules.activiti.dal.dataobject.form.WfForm; import cn.iocoder.yudao.framework.common.pojo.PageResult; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; @@ -17,20 +17,20 @@ import java.util.List; * @author 芋艿 */ @Mapper -public interface OsFormConvert { +public interface WfFormConvert { - OsFormConvert INSTANCE = Mappers.getMapper(OsFormConvert.class); + WfFormConvert INSTANCE = Mappers.getMapper(WfFormConvert.class); - OsFormDO convert(OsFormCreateReqVO bean); + WfForm convert(WfFormCreateReqVO bean); - OsFormDO convert(OsFormUpdateReqVO bean); + WfForm convert(WfFormUpdateReqVO bean); - OsFormRespVO convert(OsFormDO bean); + WfFormRespVO convert(WfForm bean); - List convertList(List list); + List convertList(List list); - PageResult convertPage(PageResult page); + PageResult convertPage(PageResult page); - List convertList02(List list); + List convertList02(List list); } diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/dal/dataobject/form/OsFormDO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/dal/dataobject/form/OsFormDO.java deleted file mode 100644 index bb0e3b2375..0000000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/dal/dataobject/form/OsFormDO.java +++ /dev/null @@ -1,45 +0,0 @@ -package cn.iocoder.yudao.adminserver.modules.activiti.dal.dataobject.form; - -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.*; - -// TODO @风里雾里:切到 https://gitee.com/zhijiantianya/ruoyi-vue-pro/blob/feature/activiti/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/workflow/dal/dataobject/form/WfForm.java 。status 添加进去哈。 -/** - * 动态表单 DO - * - * @author 芋艿 - */ -@TableName("os_form") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class OsFormDO extends BaseDO { - - /** - * 表单编号 - */ - @TableId - private Long id; - /** - * 表单名称 - */ - private String name; - /** - * 商户状态 - */ - private Integer status; - /** - * 表单JSON - */ - private String formJson; - /** - * 备注 - */ - private String remark; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/dal/dataobject/form/WfForm.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/dal/dataobject/form/WfForm.java new file mode 100644 index 0000000000..0fa276d76f --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/dal/dataobject/form/WfForm.java @@ -0,0 +1,57 @@ +package cn.iocoder.yudao.adminserver.modules.activiti.dal.dataobject.form; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; +import lombok.*; + +import java.util.List; + +/** + * 工作流的表单定义 + * 用于工作流的申请表单,需要动态配置的场景 + * + * @author 芋道源码 + */ +@TableName(value = "wf_form", autoResultMap = true) +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class WfForm extends BaseDO { + + /** + * 编号 + */ + @TableId + private Long id; + /** + * 表单名 + */ + private String name; + /** + * 状态 + */ + private Integer status; + /** + * 表单JSON + */ + private String formJson; + /** + * 表单配置 + * + * 目前直接将 https://github.com/JakHuang/form-generator 生成的 JSON 串,直接保存 + * 定义:https://github.com/JakHuang/form-generator/issues/46 + */ + @TableField(typeHandler = JacksonTypeHandler.class) + private List fields; + /** + * 备注 + */ + private String remark; + +} \ No newline at end of file diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/dal/dataobject/form/WfFormData.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/dal/dataobject/form/WfFormData.java new file mode 100644 index 0000000000..507a26ec63 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/dal/dataobject/form/WfFormData.java @@ -0,0 +1,55 @@ +package cn.iocoder.yudao.adminserver.modules.activiti.dal.dataobject.form; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; +import lombok.*; + +import java.util.List; +import java.util.Map; + +/** + * 工作流的表单结果 + * 用户每次填写工作流的申请表单时,会保存一条记录到该表】 + * + * @author 芋道源码 + */ +@TableName(value = "wf_form", autoResultMap = true) +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class WfFormData extends BaseDO { + + /** + * 编号 + */ + private Long id; + /** + * 表单编号 + * + * 关联 {@link WfForm#getId()} + */ + private Long formId; + /** + * 状态 + */ + private Integer status; + /** + * 表单配置 + * + * 冗余 {@link WfForm#getFields()} + * 主要考虑,表单是可以修改的 + */ + @TableField(typeHandler = JacksonTypeHandler.class) + private List fields; + /** + * 表单值 + */ + @TableField(typeHandler = JacksonTypeHandler.class) + private Map values; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/dal/mysql/form/OsFormMapper.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/dal/mysql/form/WfFormMapper.java similarity index 77% rename from yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/dal/mysql/form/OsFormMapper.java rename to yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/dal/mysql/form/WfFormMapper.java index 19acff2155..99bb312fc1 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/dal/mysql/form/OsFormMapper.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/dal/mysql/form/WfFormMapper.java @@ -2,9 +2,9 @@ package cn.iocoder.yudao.adminserver.modules.activiti.dal.mysql.form; -import cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo.OsFormExportReqVO; -import cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo.OsFormPageReqVO; -import cn.iocoder.yudao.adminserver.modules.activiti.dal.dataobject.form.OsFormDO; +import cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo.WfFormExportReqVO; +import cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo.WfFormPageReqVO; +import cn.iocoder.yudao.adminserver.modules.activiti.dal.dataobject.form.WfForm; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; @@ -15,13 +15,13 @@ import java.util.List; /** * 动态表单 Mapper * - * @author 芋艿 + * @author 风里雾里 */ @Mapper -public interface OsFormMapper extends BaseMapperX { +public interface WfFormMapper extends BaseMapperX { - default PageResult selectPage(OsFormPageReqVO reqVO) { - return selectPage(reqVO, new QueryWrapperX() + default PageResult selectPage(WfFormPageReqVO reqVO) { + return selectPage(reqVO, new QueryWrapperX() .likeIfPresent("name", reqVO.getName()) .eqIfPresent("status", reqVO.getStatus()) .eqIfPresent("form_json", reqVO.getFormJson()) @@ -30,8 +30,8 @@ public interface OsFormMapper extends BaseMapperX { .orderByDesc("id") ); } - default List selectList(OsFormExportReqVO reqVO) { - return selectList(new QueryWrapperX() + default List selectList(WfFormExportReqVO reqVO) { + return selectList(new QueryWrapperX() .likeIfPresent("name", reqVO.getName()) .eqIfPresent("status", reqVO.getStatus()) .eqIfPresent("form_json", reqVO.getFormJson()) diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/enums/form/FormErrorCodeConstants.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/enums/form/WfFormErrorCodeConstants.java similarity index 88% rename from yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/enums/form/FormErrorCodeConstants.java rename to yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/enums/form/WfFormErrorCodeConstants.java index e0b961c00d..a771441d10 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/enums/form/FormErrorCodeConstants.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/enums/form/WfFormErrorCodeConstants.java @@ -9,6 +9,6 @@ import cn.iocoder.yudao.framework.common.exception.ErrorCode; * 001 oa * activiti 系统,使用 1-003-000-000 段 */ -public interface FormErrorCodeConstants { +public interface WfFormErrorCodeConstants { ErrorCode FORM_NOT_EXISTS = new ErrorCode(1003001002, "动态表单不存在"); } diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/form/OsFormService.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/form/WfFormService.java similarity index 72% rename from yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/form/OsFormService.java rename to yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/form/WfFormService.java index 1691d412da..80f60631aa 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/form/OsFormService.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/form/WfFormService.java @@ -1,10 +1,10 @@ package cn.iocoder.yudao.adminserver.modules.activiti.service.form; -import cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo.OsFormCreateReqVO; -import cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo.OsFormExportReqVO; -import cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo.OsFormPageReqVO; -import cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo.OsFormUpdateReqVO; -import cn.iocoder.yudao.adminserver.modules.activiti.dal.dataobject.form.OsFormDO; +import cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo.WfFormCreateReqVO; +import cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo.WfFormExportReqVO; +import cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo.WfFormPageReqVO; +import cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo.WfFormUpdateReqVO; +import cn.iocoder.yudao.adminserver.modules.activiti.dal.dataobject.form.WfForm; import cn.iocoder.yudao.framework.common.pojo.PageResult; import java.util.*; @@ -14,9 +14,9 @@ import javax.validation.*; /** * 动态表单 Service 接口 * - * @author 芋艿 + * TODO @风里雾里 */ -public interface OsFormService { +public interface WfFormService { /** * 创建动态表单 @@ -24,14 +24,14 @@ public interface OsFormService { * @param createReqVO 创建信息 * @return 编号 */ - Long createForm(@Valid OsFormCreateReqVO createReqVO); + Long createForm(@Valid WfFormCreateReqVO createReqVO); /** * 更新动态表单 * * @param updateReqVO 更新信息 */ - void updateForm(@Valid OsFormUpdateReqVO updateReqVO); + void updateForm(@Valid WfFormUpdateReqVO updateReqVO); /** * 删除动态表单 @@ -46,7 +46,7 @@ public interface OsFormService { * @param id 编号 * @return 动态表单 */ - OsFormDO getForm(Long id); + WfForm getForm(Long id); /** * 获得动态表单列表 @@ -54,7 +54,7 @@ public interface OsFormService { * @param ids 编号 * @return 动态表单列表 */ - List getFormList(Collection ids); + List getFormList(Collection ids); /** * 获得动态表单分页 @@ -62,7 +62,7 @@ public interface OsFormService { * @param pageReqVO 分页查询 * @return 动态表单分页 */ - PageResult getFormPage(OsFormPageReqVO pageReqVO); + PageResult getFormPage(WfFormPageReqVO pageReqVO); /** * 获得动态表单列表, 用于 Excel 导出 @@ -70,6 +70,6 @@ public interface OsFormService { * @param exportReqVO 查询条件 * @return 动态表单列表 */ - List getFormList(OsFormExportReqVO exportReqVO); + List getFormList(WfFormExportReqVO exportReqVO); } diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/form/impl/OsFormServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/form/impl/WfFormServiceImpl.java similarity index 68% rename from yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/form/impl/OsFormServiceImpl.java rename to yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/form/impl/WfFormServiceImpl.java index b0ab903b88..84f3350503 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/form/impl/OsFormServiceImpl.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/form/impl/WfFormServiceImpl.java @@ -1,13 +1,13 @@ package cn.iocoder.yudao.adminserver.modules.activiti.service.form.impl; -import cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo.OsFormCreateReqVO; -import cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo.OsFormExportReqVO; -import cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo.OsFormPageReqVO; -import cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo.OsFormUpdateReqVO; -import cn.iocoder.yudao.adminserver.modules.activiti.convert.form.OsFormConvert; -import cn.iocoder.yudao.adminserver.modules.activiti.dal.dataobject.form.OsFormDO; -import cn.iocoder.yudao.adminserver.modules.activiti.dal.mysql.form.OsFormMapper; -import cn.iocoder.yudao.adminserver.modules.activiti.service.form.OsFormService; +import cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo.WfFormCreateReqVO; +import cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo.WfFormExportReqVO; +import cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo.WfFormPageReqVO; +import cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo.WfFormUpdateReqVO; +import cn.iocoder.yudao.adminserver.modules.activiti.convert.form.WfFormConvert; +import cn.iocoder.yudao.adminserver.modules.activiti.dal.dataobject.form.WfForm; +import cn.iocoder.yudao.adminserver.modules.activiti.dal.mysql.form.WfFormMapper; +import cn.iocoder.yudao.adminserver.modules.activiti.service.form.WfFormService; import cn.iocoder.yudao.framework.common.pojo.PageResult; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; @@ -16,36 +16,36 @@ import javax.annotation.Resource; import java.util.Collection; import java.util.List; -import static cn.iocoder.yudao.adminserver.modules.activiti.enums.form.FormErrorCodeConstants.FORM_NOT_EXISTS; +import static cn.iocoder.yudao.adminserver.modules.activiti.enums.form.WfFormErrorCodeConstants.FORM_NOT_EXISTS; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; /** * 动态表单 Service 实现类 * - * @author 芋艿 // TODO @风里雾里:作者改成你自己哈 + * TODO @风里雾里 */ @Service @Validated -public class OsFormServiceImpl implements OsFormService { +public class WfFormServiceImpl implements WfFormService { @Resource - private OsFormMapper formMapper; + private WfFormMapper formMapper; @Override - public Long createForm(OsFormCreateReqVO createReqVO) { + public Long createForm(WfFormCreateReqVO createReqVO) { // 插入 - OsFormDO form = OsFormConvert.INSTANCE.convert(createReqVO); + WfForm form = WfFormConvert.INSTANCE.convert(createReqVO); formMapper.insert(form); // 返回 return form.getId(); } @Override - public void updateForm(OsFormUpdateReqVO updateReqVO) { + public void updateForm(WfFormUpdateReqVO updateReqVO) { // 校验存在 this.validateFormExists(updateReqVO.getId()); // 更新 - OsFormDO updateObj = OsFormConvert.INSTANCE.convert(updateReqVO); + WfForm updateObj = WfFormConvert.INSTANCE.convert(updateReqVO); formMapper.updateById(updateObj); } @@ -64,22 +64,22 @@ public class OsFormServiceImpl implements OsFormService { } @Override - public OsFormDO getForm(Long id) { + public WfForm getForm(Long id) { return formMapper.selectById(id); } @Override - public List getFormList(Collection ids) { + public List getFormList(Collection ids) { return formMapper.selectBatchIds(ids); } @Override - public PageResult getFormPage(OsFormPageReqVO pageReqVO) { + public PageResult getFormPage(WfFormPageReqVO pageReqVO) { return formMapper.selectPage(pageReqVO); } @Override - public List getFormList(OsFormExportReqVO exportReqVO) { + public List getFormList(WfFormExportReqVO exportReqVO) { return formMapper.selectList(exportReqVO); } From 13a94050822b0862eca917ccb981a997e10fca57 Mon Sep 17 00:00:00 2001 From: timfruit Date: Fri, 5 Nov 2021 23:14:51 +0800 Subject: [PATCH 25/81] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=B3=A8=E9=87=8A?= =?UTF-8?q?=EF=BC=8C=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/auth/impl/SysAuthServiceImpl.java | 3 +- .../social/core/YudaoAuthRequestFactory.java | 41 ++++--------------- .../social/core/enums/AuthExtendSource.java | 6 ++- .../request/AuthWeChatMiniProgramRequest.java | 7 ++-- .../service/auth/impl/SysAuthServiceImpl.java | 4 +- 5 files changed, 21 insertions(+), 40 deletions(-) diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/impl/SysAuthServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/impl/SysAuthServiceImpl.java index abb6a3dca2..3552dd9a4f 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/impl/SysAuthServiceImpl.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/impl/SysAuthServiceImpl.java @@ -56,6 +56,8 @@ import static java.util.Collections.singleton; @Slf4j public class SysAuthServiceImpl implements SysAuthService { + private static final UserTypeEnum USER_TYPE_ENUM = UserTypeEnum.ADMIN; + @Resource @Lazy // 延迟加载,因为存在相互依赖的问题 private AuthenticationManager authenticationManager; @@ -75,7 +77,6 @@ public class SysAuthServiceImpl implements SysAuthService { @Resource private SysSocialCoreService socialService; - private static final UserTypeEnum USER_TYPE_ENUM = UserTypeEnum.ADMIN; @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { diff --git a/yudao-framework/yudao-spring-boot-starter-biz-social/src/main/java/cn/iocoder/yudao/framework/social/core/YudaoAuthRequestFactory.java b/yudao-framework/yudao-spring-boot-starter-biz-social/src/main/java/cn/iocoder/yudao/framework/social/core/YudaoAuthRequestFactory.java index 17c36b6831..26e23b9d77 100644 --- a/yudao-framework/yudao-spring-boot-starter-biz-social/src/main/java/cn/iocoder/yudao/framework/social/core/YudaoAuthRequestFactory.java +++ b/yudao-framework/yudao-spring-boot-starter-biz-social/src/main/java/cn/iocoder/yudao/framework/social/core/YudaoAuthRequestFactory.java @@ -1,24 +1,21 @@ package cn.iocoder.yudao.framework.social.core; import cn.hutool.core.util.EnumUtil; +import cn.hutool.core.util.ReflectUtil; import cn.iocoder.yudao.framework.social.core.enums.AuthExtendSource; import cn.iocoder.yudao.framework.social.core.request.AuthWeChatMiniProgramRequest; -import com.xkcoding.http.config.HttpConfig; import com.xkcoding.justauth.AuthRequestFactory; import com.xkcoding.justauth.autoconfigure.JustAuthProperties; import me.zhyd.oauth.cache.AuthStateCache; import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthSource; import me.zhyd.oauth.request.AuthRequest; -import org.springframework.util.CollectionUtils; -import java.net.InetSocketAddress; -import java.net.Proxy; -import java.util.Map; +import java.lang.reflect.Method; /** * 第三方授权拓展 request 工厂类 - * TODO @timfruit 可以说明下,为啥有了 AuthRequestFactory 类,咱还需要自定义 + * (为使得拓展配置和默认配置齐平,自定义本工厂类) * * @author timfruit * @date 2021-10-31 @@ -70,7 +67,10 @@ public class YudaoAuthRequestFactory extends AuthRequestFactory { } // 配置 http config - configureHttpConfig(authExtendSource.name(), config, properties.getHttpConfig()); + Method method = ReflectUtil.getMethod(AuthRequestFactory.class, "configureHttpConfig", + String.class, AuthConfig.class, JustAuthProperties.JustAuthHttpConfig.class); + ReflectUtil.invoke(this, method, + authExtendSource.name(), config, properties.getHttpConfig()); switch (authExtendSource) { case WECHAT_MINI_PROGRAM: @@ -80,31 +80,4 @@ public class YudaoAuthRequestFactory extends AuthRequestFactory { } } - /** - * 配置 http 相关的配置 - * - * @param authSource {@link AuthSource} - * @param authConfig {@link AuthConfig} - */ - protected void configureHttpConfig(String authSource, AuthConfig authConfig, JustAuthProperties.JustAuthHttpConfig httpConfig) { - // TODO @timfruit:可以改成反射调用父类的方法。可能有一定的损耗,但是可以忽略不计的 - if (null == httpConfig) { - return; - } - Map proxyConfigMap = httpConfig.getProxy(); - if (CollectionUtils.isEmpty(proxyConfigMap)) { - return; - } - JustAuthProperties.JustAuthProxyConfig proxyConfig = proxyConfigMap.get(authSource); - - if (null == proxyConfig) { - return; - } - - authConfig.setHttpConfig(HttpConfig.builder() - .timeout(httpConfig.getTimeout()) - .proxy(new Proxy(Proxy.Type.valueOf(proxyConfig.getType()), new InetSocketAddress(proxyConfig.getHostname(), proxyConfig.getPort()))) - .build()); - } - } diff --git a/yudao-framework/yudao-spring-boot-starter-biz-social/src/main/java/cn/iocoder/yudao/framework/social/core/enums/AuthExtendSource.java b/yudao-framework/yudao-spring-boot-starter-biz-social/src/main/java/cn/iocoder/yudao/framework/social/core/enums/AuthExtendSource.java index fd6bb9cb9c..16049419f2 100644 --- a/yudao-framework/yudao-spring-boot-starter-biz-social/src/main/java/cn/iocoder/yudao/framework/social/core/enums/AuthExtendSource.java +++ b/yudao-framework/yudao-spring-boot-starter-biz-social/src/main/java/cn/iocoder/yudao/framework/social/core/enums/AuthExtendSource.java @@ -2,7 +2,11 @@ package cn.iocoder.yudao.framework.social.core.enums; import me.zhyd.oauth.config.AuthSource; -// TODO @timfruit:类注释 +/** + * 拓展JustAuth各api需要的url, 用枚举类分平台类型管理
+ * + * 默认配置{@link me.zhyd.oauth.config.AuthDefaultSource} + */ public enum AuthExtendSource implements AuthSource { /** diff --git a/yudao-framework/yudao-spring-boot-starter-biz-social/src/main/java/cn/iocoder/yudao/framework/social/core/request/AuthWeChatMiniProgramRequest.java b/yudao-framework/yudao-spring-boot-starter-biz-social/src/main/java/cn/iocoder/yudao/framework/social/core/request/AuthWeChatMiniProgramRequest.java index ae9a8e1ecd..e5bbfcaadb 100644 --- a/yudao-framework/yudao-spring-boot-starter-biz-social/src/main/java/cn/iocoder/yudao/framework/social/core/request/AuthWeChatMiniProgramRequest.java +++ b/yudao-framework/yudao-spring-boot-starter-biz-social/src/main/java/cn/iocoder/yudao/framework/social/core/request/AuthWeChatMiniProgramRequest.java @@ -3,6 +3,7 @@ package cn.iocoder.yudao.framework.social.core.request; import cn.iocoder.yudao.framework.common.util.json.JsonUtils; import cn.iocoder.yudao.framework.social.core.enums.AuthExtendSource; import cn.iocoder.yudao.framework.social.core.model.AuthExtendToken; +import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; import me.zhyd.oauth.cache.AuthStateCache; import me.zhyd.oauth.config.AuthConfig; @@ -39,7 +40,7 @@ public class AuthWeChatMiniProgramRequest extends AuthDefaultRequest { this.checkResponse(accessTokenObject); AuthExtendToken token = new AuthExtendToken(); - token.setMiniSessionKey(accessTokenObject.session_key); + token.setMiniSessionKey(accessTokenObject.sessionKey); token.setOpenId(accessTokenObject.openid); token.setUnionId(accessTokenObject.unionid); return token; @@ -86,12 +87,12 @@ public class AuthWeChatMiniProgramRequest extends AuthDefaultRequest { .build(); } - // TODO @timfruit:我们要采用驼峰的命名方式。不匹配的,可以通过 jackson 的自定义注解映射 @Data private static class CodeSessionResponse { private int errcode; private String errmsg; - private String session_key; + @JsonProperty("session_key") + private String sessionKey; private String openid; private String unionid; } diff --git a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/service/auth/impl/SysAuthServiceImpl.java b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/service/auth/impl/SysAuthServiceImpl.java index 6ce2051073..c5c512890f 100644 --- a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/service/auth/impl/SysAuthServiceImpl.java +++ b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/service/auth/impl/SysAuthServiceImpl.java @@ -51,6 +51,8 @@ import static cn.iocoder.yudao.userserver.modules.system.enums.SysErrorCodeConst @Slf4j public class SysAuthServiceImpl implements SysAuthService { + private static final UserTypeEnum USER_TYPE_ENUM = UserTypeEnum.MEMBER; + @Resource @Lazy // 延迟加载,因为存在相互依赖的问题 private AuthenticationManager authenticationManager; @@ -65,7 +67,7 @@ public class SysAuthServiceImpl implements SysAuthService { private SysUserSessionCoreService userSessionCoreService; @Resource private SysSocialCoreService socialService; - private static final UserTypeEnum USER_TYPE_ENUM = UserTypeEnum.MEMBER; // TODO @timfruit 挪到类的最前面。一般是 静态变量,到成员变量的顺序。 + @Override public UserDetails loadUserByUsername(String mobile) throws UsernameNotFoundException { From 2fc1ef519dfd4ef3c9f6208258882ad50ec1faf3 Mon Sep 17 00:00:00 2001 From: liu xm Date: Mon, 8 Nov 2021 13:27:34 +0800 Subject: [PATCH 26/81] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=9F=BA=E4=BA=8E?= =?UTF-8?q?=E5=BB=BA=E8=A1=A8SQL=E7=94=9F=E6=88=90=E4=BB=A3=E7=A0=81=20?= =?UTF-8?q?=E5=88=97=E5=90=8D=E6=B2=A1=E6=9C=89COMMENT=E6=B3=A8=E9=87=8A?= =?UTF-8?q?=E6=8A=A5=E9=94=99=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tool/service/codegen/impl/ToolCodegenSQLParser.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/service/codegen/impl/ToolCodegenSQLParser.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/service/codegen/impl/ToolCodegenSQLParser.java index 7a79f05d24..bb664a1d55 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/service/codegen/impl/ToolCodegenSQLParser.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/service/codegen/impl/ToolCodegenSQLParser.java @@ -16,6 +16,7 @@ import org.apache.commons.collections4.keyvalue.DefaultKeyValue; import java.util.ArrayList; import java.util.List; +import java.util.Objects; import static com.alibaba.druid.sql.SQLUtils.normalize; @@ -97,7 +98,8 @@ public class ToolCodegenSQLParser { columns.add(ToolSchemaColumnDO.builder() .columnName(normalize(definition.getColumnName())) .columnType(definition.getDataType().toString()) - .columnComment(normalize(definition.getComment().toString())) + .columnComment(Objects.isNull(definition.getComment()) ? "" + : normalize(definition.getComment().toString())) .nullable(!text.contains(" NOT NULL")) .primaryKey(false) .autoIncrement(text.contains("AUTO_INCREMENT")) From 8e0569ee544b26cc6944c7eab6bb92d82bca57f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AE=8B=E5=A4=A9?= <2982176321@qq.com> Date: Wed, 17 Nov 2021 10:15:22 +0800 Subject: [PATCH 27/81] =?UTF-8?q?update=20=E6=96=B0=E5=A2=9E=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=EF=BC=9A=E4=BF=AE=E6=94=B9=E6=89=8B=E6=9C=BA=EF=BC=8C?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=AF=86=E7=A0=81=EF=BC=8C=E5=BF=98=E8=AE=B0?= =?UTF-8?q?=E5=AF=86=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yudao-user-server/pom.xml | 7 + .../user/SysUserProfileController.java | 20 +++ .../user/vo/MbrUserUpdateMobileReqVO.java | 35 +++++ .../member/service/user/MbrUserService.java | 8 ++ .../service/user/impl/MbrUserServiceImpl.java | 16 +++ .../controller/auth/SysAuthController.java | 39 ++++- .../auth/vo/MbrAuthResetPasswordReqVO.java | 23 ++- .../system/enums/SysErrorCodeConstants.java | 3 + .../system/enums/sms/SysSmsSceneEnum.java | 4 +- .../system/service/auth/SysAuthService.java | 19 +++ .../service/auth/impl/SysAuthServiceImpl.java | 79 ++++++++++- .../system/service/sms/SysSmsCodeService.java | 12 ++ .../sms/impl/SysSmsCodeServiceImpl.java | 43 ++++++ .../userserver/BaseDbAndRedisUnitTest.java | 48 +++++++ .../config/RedisTestConfiguration.java | 30 ++++ .../SysUserProfileControllerTest.java | 59 ++++++++ .../service/MbrUserServiceImplTest.java | 60 ++++++-- .../controller/SysAuthControllerTest.java | 75 ++++++++++ .../system/service/SysAuthServiceTest.java | 134 ++++++++++++++++++ 19 files changed, 696 insertions(+), 18 deletions(-) create mode 100644 yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/member/controller/user/vo/MbrUserUpdateMobileReqVO.java create mode 100644 yudao-user-server/src/test/java/cn/iocoder/yudao/userserver/BaseDbAndRedisUnitTest.java create mode 100644 yudao-user-server/src/test/java/cn/iocoder/yudao/userserver/config/RedisTestConfiguration.java create mode 100644 yudao-user-server/src/test/java/cn/iocoder/yudao/userserver/modules/member/controller/SysUserProfileControllerTest.java create mode 100644 yudao-user-server/src/test/java/cn/iocoder/yudao/userserver/modules/system/controller/SysAuthControllerTest.java create mode 100644 yudao-user-server/src/test/java/cn/iocoder/yudao/userserver/modules/system/service/SysAuthServiceTest.java diff --git a/yudao-user-server/pom.xml b/yudao-user-server/pom.xml index e7b1cd82da..b4c2cf8a53 100644 --- a/yudao-user-server/pom.xml +++ b/yudao-user-server/pom.xml @@ -91,6 +91,13 @@ test
+ + + junit + junit + test + + diff --git a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/member/controller/user/SysUserProfileController.java b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/member/controller/user/SysUserProfileController.java index 870d337187..39c3d88f31 100644 --- a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/member/controller/user/SysUserProfileController.java +++ b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/member/controller/user/SysUserProfileController.java @@ -5,6 +5,9 @@ import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.security.core.annotations.PreAuthenticated; import cn.iocoder.yudao.userserver.modules.member.service.user.MbrUserService; +import cn.iocoder.yudao.userserver.modules.member.controller.user.vo.MbrUserUpdateMobileReqVO; +import cn.iocoder.yudao.userserver.modules.system.enums.sms.SysSmsSceneEnum; +import cn.iocoder.yudao.userserver.modules.system.service.sms.SysSmsCodeService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; @@ -13,10 +16,12 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; +import javax.validation.Valid; import java.io.IOException; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; +import static cn.iocoder.yudao.framework.common.util.servlet.ServletUtils.getClientIP; import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; import static cn.iocoder.yudao.userserver.modules.member.enums.MbrErrorCodeConstants.FILE_IS_EMPTY; @@ -30,6 +35,9 @@ public class SysUserProfileController { @Resource private MbrUserService userService; + @Resource + private SysSmsCodeService smsCodeService; + @PutMapping("/update-nickname") @ApiOperation("修改用户昵称") @PreAuthenticated @@ -56,5 +64,17 @@ public class SysUserProfileController { return success(userService.getUserInfo(getLoginUserId())); } + + @PostMapping("/update-mobile") + @ApiOperation(value = "修改用户手机") + @PreAuthenticated + public CommonResult updateMobile(@RequestBody @Valid MbrUserUpdateMobileReqVO reqVO) { + // 校验验证码 + smsCodeService.useSmsCode(reqVO.getMobile(),SysSmsSceneEnum.CHANGE_MOBILE_BY_SMS.getScene(), reqVO.getCode(),getClientIP()); + + userService.updateMobile(getLoginUserId(), reqVO); + return success(true); + } + } diff --git a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/member/controller/user/vo/MbrUserUpdateMobileReqVO.java b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/member/controller/user/vo/MbrUserUpdateMobileReqVO.java new file mode 100644 index 0000000000..0e5499bc71 --- /dev/null +++ b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/member/controller/user/vo/MbrUserUpdateMobileReqVO.java @@ -0,0 +1,35 @@ +package cn.iocoder.yudao.userserver.modules.member.controller.user.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.Pattern; + +@ApiModel("修改手机 Request VO") +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class MbrUserUpdateMobileReqVO { + + @ApiModelProperty(value = "手机验证码", required = true, example = "1024") + @NotEmpty(message = "手机验证码不能为空") + @Length(min = 4, max = 6, message = "手机验证码长度为 4-6 位") + @Pattern(regexp = "^[0-9]+$", message = "手机验证码必须都是数字") + private String code; + + + @ApiModelProperty(value = "手机号",required = true,example = "15823654487") + @NotBlank(message = "手机号不能为空") + @Length(min = 8, max = 11, message = "手机号码长度为 8-11 位") + @Pattern(regexp = "^1[3-9]\\d{9}$", message = "手机号格式错误") + private String mobile; + +} diff --git a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/member/service/user/MbrUserService.java b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/member/service/user/MbrUserService.java index 6b6a36a8e5..e45763dd35 100644 --- a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/member/service/user/MbrUserService.java +++ b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/member/service/user/MbrUserService.java @@ -3,6 +3,7 @@ package cn.iocoder.yudao.userserver.modules.member.service.user; import cn.iocoder.yudao.coreservice.modules.member.dal.dataobject.user.MbrUserDO; import cn.iocoder.yudao.userserver.modules.member.controller.user.vo.MbrUserInfoRespVO; import cn.iocoder.yudao.framework.common.validation.Mobile; +import cn.iocoder.yudao.userserver.modules.member.controller.user.vo.MbrUserUpdateMobileReqVO; import java.io.InputStream; @@ -69,4 +70,11 @@ public interface MbrUserService { */ MbrUserInfoRespVO getUserInfo(Long userId); + /** + * 修改手机 + * @param userId 用户id + * @param reqVO 请求实体 + */ + void updateMobile(Long userId, MbrUserUpdateMobileReqVO reqVO); + } diff --git a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/member/service/user/impl/MbrUserServiceImpl.java b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/member/service/user/impl/MbrUserServiceImpl.java index f340c5fe9d..76b4501eb3 100644 --- a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/member/service/user/impl/MbrUserServiceImpl.java +++ b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/member/service/user/impl/MbrUserServiceImpl.java @@ -6,8 +6,10 @@ import cn.iocoder.yudao.coreservice.modules.infra.service.file.InfFileCoreServic import cn.iocoder.yudao.coreservice.modules.member.dal.dataobject.user.MbrUserDO; import cn.iocoder.yudao.userserver.modules.member.controller.user.vo.MbrUserInfoRespVO; import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; +import cn.iocoder.yudao.userserver.modules.member.controller.user.vo.MbrUserUpdateMobileReqVO; import cn.iocoder.yudao.userserver.modules.member.dal.mysql.user.MbrUserMapper; import cn.iocoder.yudao.userserver.modules.member.service.user.MbrUserService; +import cn.iocoder.yudao.userserver.modules.system.service.auth.SysAuthService; import com.google.common.annotations.VisibleForTesting; import lombok.extern.slf4j.Slf4j; import org.springframework.security.crypto.password.PasswordEncoder; @@ -40,6 +42,9 @@ public class MbrUserServiceImpl implements MbrUserService { @Resource private PasswordEncoder passwordEncoder; + @Resource + private SysAuthService sysAuthService; + @Override public MbrUserDO getUserByMobile(String mobile) { return userMapper.selectByMobile(mobile); @@ -116,6 +121,17 @@ public class MbrUserServiceImpl implements MbrUserService { return userResp; } + @Override + public void updateMobile(Long userId, MbrUserUpdateMobileReqVO reqVO) { + // 检测用户是否存在 + MbrUserDO userDO = checkUserExists(userId); + // 检测手机与验证码是否匹配 + sysAuthService.checkIfMobileMatchCodeAndDeleteCode(userDO.getMobile(),reqVO.getCode()); + // 更新用户手机 + userDO.setMobile(reqVO.getMobile()); + userMapper.updateById(userDO); + } + @VisibleForTesting public MbrUserDO checkUserExists(Long id) { if (id == null) { diff --git a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/controller/auth/SysAuthController.java b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/controller/auth/SysAuthController.java index 6d18d53be9..a4a4efb871 100644 --- a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/controller/auth/SysAuthController.java +++ b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/controller/auth/SysAuthController.java @@ -3,7 +3,9 @@ package cn.iocoder.yudao.userserver.modules.system.controller.auth; import cn.iocoder.yudao.coreservice.modules.system.service.social.SysSocialService; import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.security.core.annotations.PreAuthenticated; import cn.iocoder.yudao.userserver.modules.system.controller.auth.vo.*; +import cn.iocoder.yudao.userserver.modules.system.enums.sms.SysSmsSceneEnum; import cn.iocoder.yudao.userserver.modules.system.service.auth.SysAuthService; import cn.iocoder.yudao.userserver.modules.system.service.sms.SysSmsCodeService; import com.alibaba.fastjson.JSON; @@ -56,16 +58,47 @@ public class SysAuthController { } @PostMapping("/send-sms-code") - @ApiOperation("发送手机验证码") + @ApiOperation(value = "发送手机验证码",notes = "不检测该手机号是否已被注册") public CommonResult sendSmsCode(@RequestBody @Valid SysAuthSendSmsReqVO reqVO) { smsCodeService.sendSmsCode(reqVO.getMobile(), reqVO.getScene(), getClientIP()); return success(true); } + @PostMapping("/send-sms-new-code") + @ApiOperation(value = "发送手机验证码",notes = "检测该手机号是否已被注册,用于修改手机时使用") + public CommonResult sendSmsNewCode(@RequestBody @Valid SysAuthSendSmsReqVO reqVO) { + smsCodeService.sendSmsNewCode(reqVO); + return success(true); + } + + @GetMapping("/send-sms-code-login") + @ApiOperation(value = "向已登录用户发送验证码",notes = "修改手机时验证原手机号使用") + public CommonResult sendSmsCodeLogin() { + smsCodeService.sendSmsCodeLogin(getLoginUserId()); + return success(true); + } + @PostMapping("/reset-password") @ApiOperation(value = "重置密码", notes = "用户忘记密码时使用") - public CommonResult resetPassword(@RequestBody @Valid MbrAuthResetPasswordReqVO reqVO) { - return null; + public CommonResult resetPassword(@RequestBody @Validated(MbrAuthResetPasswordReqVO.resetPasswordValidView.class) MbrAuthResetPasswordReqVO reqVO) { + authService.resetPassword(reqVO); + return success(true); + } + + @PostMapping("/update-password") + @ApiOperation(value = "修改用户密码",notes = "用户修改密码时使用") + @PreAuthenticated + public CommonResult updatePassword(@RequestBody @Validated(MbrAuthResetPasswordReqVO.updatePasswordValidView.class) MbrAuthResetPasswordReqVO reqVO) { + authService.updatePassword(getLoginUserId(), reqVO); + return success(true); + } + + @PostMapping("/check-sms-code") + @ApiOperation(value = "校验验证码是否正确") + @PreAuthenticated + public CommonResult checkSmsCode(@RequestBody @Valid SysAuthSmsLoginReqVO reqVO) { + smsCodeService.useSmsCode(reqVO.getMobile(),SysSmsSceneEnum.CHECK_CODE_BY_SMS.getScene(),reqVO.getCode(),getClientIP()); + return success(true); } // ========== 社交登录相关 ========== diff --git a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/controller/auth/vo/MbrAuthResetPasswordReqVO.java b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/controller/auth/vo/MbrAuthResetPasswordReqVO.java index 3b3556fdb0..f092eaf48c 100644 --- a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/controller/auth/vo/MbrAuthResetPasswordReqVO.java +++ b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/controller/auth/vo/MbrAuthResetPasswordReqVO.java @@ -8,6 +8,7 @@ import lombok.Data; import lombok.NoArgsConstructor; import org.hibernate.validator.constraints.Length; +import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotEmpty; import javax.validation.constraints.Pattern; @@ -18,15 +19,31 @@ import javax.validation.constraints.Pattern; @Builder public class MbrAuthResetPasswordReqVO { + /** + * 修改密码校验规则 + */ + public interface updatePasswordValidView { + } + + /** + * 忘记密码校验规则 + */ + public interface resetPasswordValidView { + } + + @ApiModelProperty(value = "用户旧密码", required = true, example = "123456") + @NotBlank(message = "旧密码不能为空",groups = updatePasswordValidView.class) + @Length(min = 4, max = 16, message = "密码长度为 4-16 位") + private String oldPassword; + @ApiModelProperty(value = "新密码", required = true, example = "buzhidao") - @NotEmpty(message = "新密码不能为空") + @NotEmpty(message = "新密码不能为空",groups = {updatePasswordValidView.class,resetPasswordValidView.class}) @Length(min = 4, max = 16, message = "密码长度为 4-16 位") private String password; @ApiModelProperty(value = "手机验证码", required = true, example = "1024") - @NotEmpty(message = "手机验证码不能为空") + @NotEmpty(message = "手机验证码不能为空",groups = resetPasswordValidView.class) @Length(min = 4, max = 6, message = "手机验证码长度为 4-6 位") @Pattern(regexp = "^[0-9]+$", message = "手机验证码必须都是数字") private String code; - } diff --git a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/enums/SysErrorCodeConstants.java b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/enums/SysErrorCodeConstants.java index f24be9cc60..e7c104afbb 100644 --- a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/enums/SysErrorCodeConstants.java +++ b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/enums/SysErrorCodeConstants.java @@ -23,7 +23,10 @@ public interface SysErrorCodeConstants { ErrorCode USER_SMS_CODE_NOT_CORRECT = new ErrorCode(1005001003, "验证码不正确"); ErrorCode USER_SMS_CODE_EXCEED_SEND_MAXIMUM_QUANTITY_PER_DAY = new ErrorCode(1005001004, "超过每日短信发送数量"); ErrorCode USER_SMS_CODE_SEND_TOO_FAST = new ErrorCode(1005001005, "短信发送过于频率"); + ErrorCode USER_SMS_CODE_IS_EXISTS = new ErrorCode(1005001006, "手机号已被使用"); // ========== 用户模块 1005002000 ========== ErrorCode USER_NOT_EXISTS = new ErrorCode(1005002001, "用户不存在"); + ErrorCode USER_CODE_FAILED = new ErrorCode(1005002002, "验证码不匹配"); + ErrorCode USER_PASSWORD_FAILED = new ErrorCode(1005002003, "密码校验失败"); } diff --git a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/enums/sms/SysSmsSceneEnum.java b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/enums/sms/SysSmsSceneEnum.java index 6f5ce3daa1..c2156d218e 100644 --- a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/enums/sms/SysSmsSceneEnum.java +++ b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/enums/sms/SysSmsSceneEnum.java @@ -17,7 +17,9 @@ public enum SysSmsSceneEnum implements IntArrayValuable { LOGIN_BY_SMS(1, "手机号登陆"), CHANGE_MOBILE_BY_SMS(2, "更换手机号"), - ; + FORGET_MOBILE_BY_SMS(3, "忘记密码"), + CHECK_CODE_BY_SMS(4, "审核验证码"), + ; public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(SysSmsSceneEnum::getScene).toArray(); diff --git a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/service/auth/SysAuthService.java b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/service/auth/SysAuthService.java index 628f95c80b..d84d175588 100644 --- a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/service/auth/SysAuthService.java +++ b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/service/auth/SysAuthService.java @@ -63,4 +63,23 @@ public interface SysAuthService extends SecurityAuthFrameworkService { */ void socialBind(Long userId, @Valid MbrAuthSocialBindReqVO reqVO); + /** + * 修改用户密码 + * @param userId 用户id + * @param userReqVO 用户请求实体类 + */ + void updatePassword(Long userId, MbrAuthResetPasswordReqVO userReqVO); + + /** + * 忘记密码 + * @param userReqVO 用户请求实体类 + */ + void resetPassword(MbrAuthResetPasswordReqVO userReqVO); + + /** + * 检测手机与验证码是否匹配 + * @param phone 手机号 + * @param code 验证码 + */ + void checkIfMobileMatchCodeAndDeleteCode(String phone,String code); } diff --git a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/service/auth/impl/SysAuthServiceImpl.java b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/service/auth/impl/SysAuthServiceImpl.java index 2394cd03af..bd8b571982 100644 --- a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/service/auth/impl/SysAuthServiceImpl.java +++ b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/service/auth/impl/SysAuthServiceImpl.java @@ -15,15 +15,19 @@ import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; import cn.iocoder.yudao.framework.common.util.monitor.TracerUtils; import cn.iocoder.yudao.framework.common.util.servlet.ServletUtils; import cn.iocoder.yudao.framework.security.core.LoginUser; +import cn.iocoder.yudao.userserver.modules.member.dal.mysql.user.MbrUserMapper; import cn.iocoder.yudao.userserver.modules.member.service.user.MbrUserService; import cn.iocoder.yudao.userserver.modules.system.controller.auth.vo.*; import cn.iocoder.yudao.userserver.modules.system.convert.auth.SysAuthConvert; import cn.iocoder.yudao.userserver.modules.system.enums.sms.SysSmsSceneEnum; import cn.iocoder.yudao.userserver.modules.system.service.auth.SysAuthService; import cn.iocoder.yudao.userserver.modules.system.service.sms.SysSmsCodeService; +import com.google.common.annotations.VisibleForTesting; import lombok.extern.slf4j.Slf4j; import me.zhyd.oauth.model.AuthUser; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; +import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.authentication.BadCredentialsException; import org.springframework.security.authentication.DisabledException; @@ -32,6 +36,7 @@ import org.springframework.security.core.Authentication; import org.springframework.security.core.AuthenticationException; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UsernameNotFoundException; +import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -40,6 +45,7 @@ import java.util.List; import java.util.Objects; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.framework.common.util.servlet.ServletUtils.getClientIP; import static cn.iocoder.yudao.userserver.modules.system.enums.SysErrorCodeConstants.*; /** @@ -65,6 +71,13 @@ public class SysAuthServiceImpl implements SysAuthService { private SysUserSessionCoreService userSessionCoreService; @Resource private SysSocialService socialService; + @Resource + private StringRedisTemplate stringRedisTemplate; + @Resource + private PasswordEncoder passwordEncoder; + @Resource + private MbrUserMapper userMapper; + private static final UserTypeEnum userTypeEnum = UserTypeEnum.MEMBER; @Override @@ -200,12 +213,12 @@ public class SysAuthServiceImpl implements SysAuthService { } reqDTO.setUsername(mobile); reqDTO.setUserAgent(ServletUtils.getUserAgent()); - reqDTO.setUserIp(ServletUtils.getClientIP()); + reqDTO.setUserIp(getClientIP()); reqDTO.setResult(loginResult.getResult()); loginLogCoreService.createLoginLog(reqDTO); // 更新最后登录时间 if (user != null && Objects.equals(SysLoginResultEnum.SUCCESS.getResult(), loginResult.getResult())) { - userService.updateUserLogin(user.getId(), ServletUtils.getClientIP()); + userService.updateUserLogin(user.getId(), getClientIP()); } } @@ -266,6 +279,66 @@ public class SysAuthServiceImpl implements SysAuthService { this.createLogoutLog(loginUser.getId(), loginUser.getUsername()); } + @Override + public void updatePassword(Long userId, MbrAuthResetPasswordReqVO reqVO) { + // 检验旧密码 + MbrUserDO userDO = checkOldPassword(userId, reqVO.getOldPassword()); + + // 更新用户密码 + userDO.setPassword(passwordEncoder.encode(reqVO.getPassword())); + userMapper.updateById(userDO); + } + + @Override + public void resetPassword(MbrAuthResetPasswordReqVO reqVO) { + // 根据验证码取出手机号,并查询用户 + String mobile = stringRedisTemplate.opsForValue().get(reqVO.getCode()); + MbrUserDO userDO = userMapper.selectByMobile(mobile); + if (userDO == null){ + throw exception(USER_NOT_EXISTS); + } + // TODO @芋艿 这一步没必要检验验证码与手机是否匹配,因为是根据验证码去redis中查找手机号,然后根据手机号查询用户 + // 也就是说 即便黑客以其他方式将验证码发送到自己手机上,最终还是会根据手机号查询用户然后进行重置密码的操作,不存在安全问题 + + // 校验验证码 + smsCodeService.useSmsCode(userDO.getMobile(), SysSmsSceneEnum.FORGET_MOBILE_BY_SMS.getScene(), reqVO.getCode(),getClientIP()); + + // 更新密码 + userDO.setPassword(passwordEncoder.encode(reqVO.getPassword())); + userMapper.updateById(userDO); + } + + @Override + public void checkIfMobileMatchCodeAndDeleteCode(String phone, String code) { + // 检验用户手机与验证码是否匹配 + String mobile = stringRedisTemplate.opsForValue().get(code); + if (!phone.equals(mobile)){ + throw exception(USER_CODE_FAILED); + } + // 销毁redis中此验证码 + stringRedisTemplate.delete(code); + } + + /** + * 校验旧密码 + * + * @param id 用户 id + * @param oldPassword 旧密码 + * @return MbrUserDO 用户实体 + */ + @VisibleForTesting + public MbrUserDO checkOldPassword(Long id, String oldPassword) { + MbrUserDO user = userMapper.selectById(id); + if (user == null) { + throw exception(USER_NOT_EXISTS); + } + // 参数:未加密密码,编码后的密码 + if (!passwordEncoder.matches(oldPassword,user.getPassword())) { + throw exception(USER_PASSWORD_FAILED); + } + return user; + } + private void createLogoutLog(Long userId, String username) { SysLoginLogCreateReqDTO reqDTO = new SysLoginLogCreateReqDTO(); reqDTO.setLogType(SysLoginLogTypeEnum.LOGOUT_SELF.getType()); @@ -274,7 +347,7 @@ public class SysAuthServiceImpl implements SysAuthService { reqDTO.setUserType(userTypeEnum.getValue()); reqDTO.setUsername(username); reqDTO.setUserAgent(ServletUtils.getUserAgent()); - reqDTO.setUserIp(ServletUtils.getClientIP()); + reqDTO.setUserIp(getClientIP()); reqDTO.setResult(SysLoginResultEnum.SUCCESS.getResult()); loginLogCoreService.createLoginLog(reqDTO); } diff --git a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/service/sms/SysSmsCodeService.java b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/service/sms/SysSmsCodeService.java index 5ee81b67cf..6e9c3c7b37 100644 --- a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/service/sms/SysSmsCodeService.java +++ b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/service/sms/SysSmsCodeService.java @@ -2,6 +2,7 @@ package cn.iocoder.yudao.userserver.modules.system.service.sms; import cn.iocoder.yudao.framework.common.exception.ServiceException; import cn.iocoder.yudao.framework.common.validation.Mobile; +import cn.iocoder.yudao.userserver.modules.system.controller.auth.vo.SysAuthSendSmsReqVO; import cn.iocoder.yudao.userserver.modules.system.enums.sms.SysSmsSceneEnum; /** @@ -20,6 +21,12 @@ public interface SysSmsCodeService { */ void sendSmsCode(@Mobile String mobile, Integer scene, String createIp); + /** + * 发送短信验证码,并检测手机号是否已被注册 + * @param reqVO 请求实体 + */ + void sendSmsNewCode(SysAuthSendSmsReqVO reqVO); + /** * 验证短信验证码,并进行使用 * 如果正确,则将验证码标记成已使用 @@ -32,4 +39,9 @@ public interface SysSmsCodeService { */ void useSmsCode(@Mobile String mobile, Integer scene, String code, String usedIp); + /** + * 根据用户id发送验证码 + * @param userId 用户id + */ + void sendSmsCodeLogin(Long userId); } diff --git a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/service/sms/impl/SysSmsCodeServiceImpl.java b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/service/sms/impl/SysSmsCodeServiceImpl.java index 6ad132aa5b..d9a3d68f11 100644 --- a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/service/sms/impl/SysSmsCodeServiceImpl.java +++ b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/service/sms/impl/SysSmsCodeServiceImpl.java @@ -1,20 +1,27 @@ package cn.iocoder.yudao.userserver.modules.system.service.sms.impl; import cn.hutool.core.map.MapUtil; +import cn.iocoder.yudao.coreservice.modules.member.dal.dataobject.user.MbrUserDO; import cn.iocoder.yudao.coreservice.modules.system.service.sms.SysSmsCoreService; +import cn.iocoder.yudao.userserver.modules.member.service.user.MbrUserService; +import cn.iocoder.yudao.userserver.modules.system.controller.auth.vo.SysAuthSendSmsReqVO; import cn.iocoder.yudao.userserver.modules.system.dal.dataobject.sms.SysSmsCodeDO; import cn.iocoder.yudao.userserver.modules.system.dal.mysql.sms.SysSmsCodeMapper; +import cn.iocoder.yudao.userserver.modules.system.enums.sms.SysSmsSceneEnum; import cn.iocoder.yudao.userserver.modules.system.enums.sms.SysSmsTemplateCodeConstants; import cn.iocoder.yudao.userserver.modules.system.framework.sms.SmsCodeProperties; import cn.iocoder.yudao.userserver.modules.system.service.sms.SysSmsCodeService; +import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; import java.util.Date; +import java.util.concurrent.TimeUnit; import static cn.hutool.core.util.RandomUtil.randomInt; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.framework.common.util.servlet.ServletUtils.getClientIP; import static cn.iocoder.yudao.userserver.modules.system.enums.SysErrorCodeConstants.*; /** @@ -26,15 +33,26 @@ import static cn.iocoder.yudao.userserver.modules.system.enums.SysErrorCodeConst @Validated public class SysSmsCodeServiceImpl implements SysSmsCodeService { + /** + * 验证码 + 手机 在redis中存储的有效时间,单位:分钟 + */ + private static final Long CODE_TIME = 10L; + @Resource private SmsCodeProperties smsCodeProperties; @Resource private SysSmsCodeMapper smsCodeMapper; + @Resource + private MbrUserService mbrUserService; + @Resource private SysSmsCoreService smsCoreService; + @Resource + private StringRedisTemplate stringRedisTemplate; + @Override public void sendSmsCode(String mobile, Integer scene, String createIp) { // 创建验证码 @@ -42,6 +60,21 @@ public class SysSmsCodeServiceImpl implements SysSmsCodeService { // 发送验证码 smsCoreService.sendSingleSmsToMember(mobile, null, SysSmsTemplateCodeConstants.USER_SMS_LOGIN, MapUtil.of("code", code)); + + // 存储手机号与验证码到redis,用于标记 + stringRedisTemplate.opsForValue().set(code,mobile,CODE_TIME, TimeUnit.MINUTES); + } + + @Override + public void sendSmsNewCode(SysAuthSendSmsReqVO reqVO) { + // 检测手机号是否已被使用 + MbrUserDO userByMobile = mbrUserService.getUserByMobile(reqVO.getMobile()); + if (userByMobile != null){ + throw exception(USER_SMS_CODE_IS_EXISTS); + } + + // 发送短信 + this.sendSmsCode(reqVO.getMobile(),reqVO.getScene(),getClientIP()); } private String createSmsCode(String mobile, Integer scene, String ip) { @@ -91,4 +124,14 @@ public class SysSmsCodeServiceImpl implements SysSmsCodeService { .used(true).usedTime(new Date()).usedIp(usedIp).build()); } + @Override + public void sendSmsCodeLogin(Long userId) { + MbrUserDO user = mbrUserService.getUser(userId); + if (user == null){ + throw exception(USER_NOT_EXISTS); + } + // 发送验证码 + this.sendSmsCode(user.getMobile(),SysSmsSceneEnum.CHANGE_MOBILE_BY_SMS.getScene(), getClientIP()); + } + } diff --git a/yudao-user-server/src/test/java/cn/iocoder/yudao/userserver/BaseDbAndRedisUnitTest.java b/yudao-user-server/src/test/java/cn/iocoder/yudao/userserver/BaseDbAndRedisUnitTest.java new file mode 100644 index 0000000000..2669ef49c9 --- /dev/null +++ b/yudao-user-server/src/test/java/cn/iocoder/yudao/userserver/BaseDbAndRedisUnitTest.java @@ -0,0 +1,48 @@ +package cn.iocoder.yudao.userserver; + +import cn.iocoder.yudao.framework.datasource.config.YudaoDataSourceAutoConfiguration; +import cn.iocoder.yudao.framework.mybatis.config.YudaoMybatisAutoConfiguration; +import cn.iocoder.yudao.framework.redis.config.YudaoRedisAutoConfiguration; +import cn.iocoder.yudao.userserver.config.RedisTestConfiguration; +import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure; +import com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration; +import org.redisson.spring.starter.RedissonAutoConfiguration; +import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration; +import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; +import org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.context.annotation.Import; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.jdbc.Sql; + +/** + * 依赖内存 DB + Redis 的单元测试 + * + * 相比 {@link BaseDbUnitTest} 来说,额外增加了内存 Redis + * + * @author 芋道源码 + */ +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE, classes = BaseDbAndRedisUnitTest.Application.class) +@ActiveProfiles("unit-test") // 设置使用 application-unit-test 配置文件 +@Sql(scripts = "/sql/clean.sql", executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD) // 每个单元测试结束后,清理 DB +public class BaseDbAndRedisUnitTest { + + @Import({ + // DB 配置类 + YudaoDataSourceAutoConfiguration.class, // 自己的 DB 配置类 + DataSourceAutoConfiguration.class, // Spring DB 自动配置类 + DataSourceTransactionManagerAutoConfiguration.class, // Spring 事务自动配置类 + DruidDataSourceAutoConfigure.class, // Druid 自动配置类 + // MyBatis 配置类 + YudaoMybatisAutoConfiguration.class, // 自己的 MyBatis 配置类 + MybatisPlusAutoConfiguration.class, // MyBatis 的自动配置类 + // Redis 配置类 + RedisTestConfiguration.class, // Redis 测试配置类,用于启动 RedisServer + RedisAutoConfiguration.class, // Spring Redis 自动配置类 + YudaoRedisAutoConfiguration.class, // 自己的 Redis 配置类 + RedissonAutoConfiguration.class, // Redisson 自动高配置类 + }) + public static class Application { + } + +} diff --git a/yudao-user-server/src/test/java/cn/iocoder/yudao/userserver/config/RedisTestConfiguration.java b/yudao-user-server/src/test/java/cn/iocoder/yudao/userserver/config/RedisTestConfiguration.java new file mode 100644 index 0000000000..7164efd874 --- /dev/null +++ b/yudao-user-server/src/test/java/cn/iocoder/yudao/userserver/config/RedisTestConfiguration.java @@ -0,0 +1,30 @@ +package cn.iocoder.yudao.userserver.config; + +import com.github.fppt.jedismock.RedisServer; +import org.springframework.boot.autoconfigure.data.redis.RedisProperties; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Lazy; + +import java.io.IOException; + +@Configuration(proxyBeanMethods = false) +@Lazy(false) // 禁止延迟加载 +@EnableConfigurationProperties(RedisProperties.class) +public class RedisTestConfiguration { + + /** + * 创建模拟的 Redis Server 服务器 + */ + @Bean + public RedisServer redisServer(RedisProperties properties) throws IOException { + RedisServer redisServer = new RedisServer(properties.getPort()); + // TODO 芋艿:一次执行多个单元测试时,貌似创建多个 spring 容器,导致不进行 stop。这样,就导致端口被占用,无法启动。。。 + try { + redisServer.start(); + } catch (Exception ignore) {} + return redisServer; + } + +} diff --git a/yudao-user-server/src/test/java/cn/iocoder/yudao/userserver/modules/member/controller/SysUserProfileControllerTest.java b/yudao-user-server/src/test/java/cn/iocoder/yudao/userserver/modules/member/controller/SysUserProfileControllerTest.java new file mode 100644 index 0000000000..d8b8e7f71d --- /dev/null +++ b/yudao-user-server/src/test/java/cn/iocoder/yudao/userserver/modules/member/controller/SysUserProfileControllerTest.java @@ -0,0 +1,59 @@ +package cn.iocoder.yudao.userserver.modules.member.controller; + +import cn.iocoder.yudao.userserver.modules.member.controller.user.SysUserProfileController; +import cn.iocoder.yudao.userserver.modules.member.service.user.MbrUserService; +import cn.iocoder.yudao.userserver.modules.system.service.sms.SysSmsCodeService; +import org.junit.Before; +import org.junit.Test; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.springframework.http.MediaType; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.result.MockMvcResultHandlers; +import org.springframework.test.web.servlet.setup.MockMvcBuilders; + + +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +/** + * {@link SysUserProfileController} 的单元测试类 + * + * @author 宋天 + */ +public class SysUserProfileControllerTest { + + private MockMvc mockMvc; + + @InjectMocks + private SysUserProfileController sysUserProfileController; + + @Mock + private MbrUserService userService; + + @Mock + private SysSmsCodeService smsCodeService; + + @Before + public void setup() { + // 初始化 + MockitoAnnotations.openMocks(this); + + // 构建mvc环境 + mockMvc = MockMvcBuilders.standaloneSetup(sysUserProfileController).build(); + } + + @Test + public void testUpdateMobile_success() throws Exception { + //模拟接口调用 + this.mockMvc.perform(post("/system/user/profile/update-mobile") + .contentType(MediaType.APPLICATION_JSON_VALUE) + .content("{\"mobile\":\"15819844280\",\"code\":\"123456\"}}")) + .andExpect(status().isOk()) + .andDo(MockMvcResultHandlers.print()); + + } + + +} diff --git a/yudao-user-server/src/test/java/cn/iocoder/yudao/userserver/modules/member/service/MbrUserServiceImplTest.java b/yudao-user-server/src/test/java/cn/iocoder/yudao/userserver/modules/member/service/MbrUserServiceImplTest.java index 3639c25db3..dadb27f7d1 100644 --- a/yudao-user-server/src/test/java/cn/iocoder/yudao/userserver/modules/member/service/MbrUserServiceImplTest.java +++ b/yudao-user-server/src/test/java/cn/iocoder/yudao/userserver/modules/member/service/MbrUserServiceImplTest.java @@ -2,28 +2,32 @@ package cn.iocoder.yudao.userserver.modules.member.service; import cn.iocoder.yudao.coreservice.modules.infra.service.file.InfFileCoreService; import cn.iocoder.yudao.coreservice.modules.member.dal.dataobject.user.MbrUserDO; -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO; import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; import cn.iocoder.yudao.framework.common.util.collection.ArrayUtils; +import cn.iocoder.yudao.framework.redis.config.YudaoRedisAutoConfiguration; +import cn.iocoder.yudao.userserver.BaseDbAndRedisUnitTest; import cn.iocoder.yudao.userserver.BaseDbUnitTest; import cn.iocoder.yudao.userserver.modules.member.controller.user.vo.MbrUserInfoRespVO; +import cn.iocoder.yudao.userserver.modules.member.controller.user.vo.MbrUserUpdateMobileReqVO; import cn.iocoder.yudao.userserver.modules.member.dal.mysql.user.MbrUserMapper; import cn.iocoder.yudao.userserver.modules.member.service.user.impl.MbrUserServiceImpl; +import cn.iocoder.yudao.userserver.modules.system.controller.auth.vo.SysAuthSendSmsReqVO; +import cn.iocoder.yudao.userserver.modules.system.enums.sms.SysSmsSceneEnum; +import cn.iocoder.yudao.userserver.modules.system.service.auth.impl.SysAuthServiceImpl; +import cn.iocoder.yudao.userserver.modules.system.service.sms.SysSmsCodeService; +import cn.iocoder.yudao.userserver.modules.system.service.sms.impl.SysSmsCodeServiceImpl; import org.junit.jupiter.api.Test; import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.context.annotation.Import; -import org.springframework.http.MediaType; -import org.springframework.mock.web.MockMultipartFile; +import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.security.crypto.password.PasswordEncoder; -import org.springframework.util.Assert; import javax.annotation.Resource; import java.io.*; import java.util.function.Consumer; -import static cn.hutool.core.util.RandomUtil.randomBytes; +import static cn.hutool.core.util.RandomUtil.*; import static org.junit.jupiter.api.Assertions.assertEquals; -import static cn.hutool.core.util.RandomUtil.randomEle; import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo; import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomString; import static org.mockito.Mockito.*; @@ -32,21 +36,30 @@ import static org.mockito.Mockito.*; * * @author 宋天 */ -@Import(MbrUserServiceImpl.class) -public class MbrUserServiceImplTest extends BaseDbUnitTest { +@Import({MbrUserServiceImpl.class, YudaoRedisAutoConfiguration.class}) +public class MbrUserServiceImplTest extends BaseDbAndRedisUnitTest { @Resource private MbrUserServiceImpl mbrUserService; + @Resource + private StringRedisTemplate stringRedisTemplate; + @Resource private MbrUserMapper userMapper; + @MockBean + private SysAuthServiceImpl authService; + @MockBean private InfFileCoreService fileCoreService; @MockBean private PasswordEncoder passwordEncoder; + @MockBean + private SysSmsCodeService sysSmsCodeService; + @Test public void testUpdateNickName_success(){ // mock 数据 @@ -94,6 +107,37 @@ public class MbrUserServiceImplTest extends BaseDbUnitTest { assertEquals(avatar, str); } + @Test + public void updateMobile_success(){ + // mock数据 + String oldMobile = randomNumbers(11); + MbrUserDO userDO = randomMbrUserDO(); + userDO.setMobile(oldMobile); + userMapper.insert(userDO); + + // 验证旧手机 + sysSmsCodeService.sendSmsCodeLogin(userDO.getId()); + + // 验证旧手机验证码是否正确 + sysSmsCodeService.useSmsCode(oldMobile,SysSmsSceneEnum.CHANGE_MOBILE_BY_SMS.getScene(),"123","1.1.1.1"); + + // 验证新手机 + SysAuthSendSmsReqVO smsReqVO = new SysAuthSendSmsReqVO(); + smsReqVO.setMobile(oldMobile); + smsReqVO.setScene(SysSmsSceneEnum.CHANGE_MOBILE_BY_SMS.getScene()); + sysSmsCodeService.sendSmsNewCode(smsReqVO); + + // 更新手机号 + String newMobile = randomNumbers(11); + String code = randomNumbers(4); + MbrUserUpdateMobileReqVO reqVO = new MbrUserUpdateMobileReqVO(); + reqVO.setMobile(newMobile); + reqVO.setCode(code); + mbrUserService.updateMobile(userDO.getId(),reqVO); + + assertEquals(mbrUserService.getUser(userDO.getId()).getMobile(),newMobile); + } + // ========== 随机对象 ========== @SafeVarargs diff --git a/yudao-user-server/src/test/java/cn/iocoder/yudao/userserver/modules/system/controller/SysAuthControllerTest.java b/yudao-user-server/src/test/java/cn/iocoder/yudao/userserver/modules/system/controller/SysAuthControllerTest.java new file mode 100644 index 0000000000..599ebaab6a --- /dev/null +++ b/yudao-user-server/src/test/java/cn/iocoder/yudao/userserver/modules/system/controller/SysAuthControllerTest.java @@ -0,0 +1,75 @@ +package cn.iocoder.yudao.userserver.modules.system.controller; + +import cn.iocoder.yudao.coreservice.modules.system.service.social.SysSocialService; +import cn.iocoder.yudao.userserver.modules.system.controller.auth.SysAuthController; +import cn.iocoder.yudao.userserver.modules.system.service.auth.SysAuthService; +import cn.iocoder.yudao.userserver.modules.system.service.sms.SysSmsCodeService; +import org.junit.Before; +import org.junit.Test; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.springframework.http.MediaType; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.result.MockMvcResultHandlers; +import org.springframework.test.web.servlet.setup.MockMvcBuilders; + +import static org.springframework.http.HttpHeaders.AUTHORIZATION; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +/** + * {@link SysAuthController} 的单元测试类 + * + * @author 宋天 + */ +public class SysAuthControllerTest { + + private MockMvc mockMvc; + + @InjectMocks + private SysAuthController sysAuthController; + + @Mock + private SysAuthService authService; + @Mock + private SysSmsCodeService smsCodeService; + @Mock + private SysSocialService socialService; + + + @Before + public void setup() { + // 初始化 + MockitoAnnotations.openMocks(this); + + // 构建mvc环境 + mockMvc = MockMvcBuilders.standaloneSetup(sysAuthController).build(); + } + + @Test + public void testResetPassword_success() throws Exception { + //模拟接口调用 + this.mockMvc.perform(post("/reset-password") + .contentType(MediaType.APPLICATION_JSON) + .content("{\"password\":\"1123\",\"code\":\"123456\"}}")) + .andExpect(status().isOk()) + .andDo(MockMvcResultHandlers.print()); + + } + + @Test + public void testUpdatePassword_success() throws Exception { + //模拟接口调用 + this.mockMvc.perform(post("/update-password") + .contentType(MediaType.APPLICATION_JSON) + .content("{\"password\":\"1123\",\"code\":\"123456\",\"oldPassword\":\"1123\"}}")) + .andExpect(status().isOk()) + .andDo(MockMvcResultHandlers.print()); + + } + + + +} diff --git a/yudao-user-server/src/test/java/cn/iocoder/yudao/userserver/modules/system/service/SysAuthServiceTest.java b/yudao-user-server/src/test/java/cn/iocoder/yudao/userserver/modules/system/service/SysAuthServiceTest.java new file mode 100644 index 0000000000..2c2d73c76d --- /dev/null +++ b/yudao-user-server/src/test/java/cn/iocoder/yudao/userserver/modules/system/service/SysAuthServiceTest.java @@ -0,0 +1,134 @@ +package cn.iocoder.yudao.userserver.modules.system.service; + +import cn.hutool.core.util.ArrayUtil; +import cn.iocoder.yudao.coreservice.modules.member.dal.dataobject.user.MbrUserDO; +import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO; +import cn.iocoder.yudao.coreservice.modules.system.service.auth.SysUserSessionCoreService; +import cn.iocoder.yudao.coreservice.modules.system.service.logger.SysLoginLogCoreService; +import cn.iocoder.yudao.coreservice.modules.system.service.social.SysSocialService; +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; +import cn.iocoder.yudao.framework.common.util.collection.ArrayUtils; +import cn.iocoder.yudao.framework.redis.config.YudaoRedisAutoConfiguration; +import cn.iocoder.yudao.userserver.BaseDbAndRedisUnitTest; +import cn.iocoder.yudao.userserver.BaseDbUnitTest; +import cn.iocoder.yudao.userserver.config.RedisTestConfiguration; +import cn.iocoder.yudao.userserver.modules.member.dal.mysql.user.MbrUserMapper; +import cn.iocoder.yudao.userserver.modules.member.service.user.MbrUserService; +import cn.iocoder.yudao.userserver.modules.member.service.user.impl.MbrUserServiceImpl; +import cn.iocoder.yudao.userserver.modules.system.controller.auth.vo.MbrAuthResetPasswordReqVO; +import cn.iocoder.yudao.userserver.modules.system.service.auth.SysAuthService; +import cn.iocoder.yudao.userserver.modules.system.service.auth.impl.SysAuthServiceImpl; +import cn.iocoder.yudao.userserver.modules.system.service.sms.SysSmsCodeService; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.context.annotation.Import; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.security.authentication.AuthenticationManager; +import org.springframework.security.crypto.password.PasswordEncoder; + +import javax.annotation.Resource; + +import java.util.concurrent.TimeUnit; +import java.util.function.Consumer; + +import static cn.hutool.core.util.RandomUtil.randomEle; +import static cn.hutool.core.util.RandomUtil.randomNumbers; +import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.Mockito.*; + + +/** + * {@link SysAuthService} 的单元测试类 + * + * @author 宋天 + */ +@Import({SysAuthServiceImpl.class, YudaoRedisAutoConfiguration.class}) +public class SysAuthServiceTest extends BaseDbAndRedisUnitTest { + + @MockBean + private AuthenticationManager authenticationManager; + @MockBean + private MbrUserService userService; + @MockBean + private SysSmsCodeService smsCodeService; + @MockBean + private SysLoginLogCoreService loginLogCoreService; + @MockBean + private SysUserSessionCoreService userSessionCoreService; + @MockBean + private SysSocialService socialService; + @Resource + private StringRedisTemplate stringRedisTemplate; + @MockBean + private PasswordEncoder passwordEncoder; + @Resource + private MbrUserMapper mbrUserMapper; + @Resource + private SysAuthServiceImpl authService; + + + @Test + public void testUpdatePassword_success(){ + // 准备参数 + MbrUserDO userDO = randomMbrUserDO(); + mbrUserMapper.insert(userDO); + + // 新密码 + String newPassword = randomString(); + + // 请求实体 + MbrAuthResetPasswordReqVO reqVO = new MbrAuthResetPasswordReqVO(); + reqVO.setOldPassword(userDO.getPassword()); + reqVO.setPassword(newPassword); + + // 测试桩 + // 这两个相等是为了返回ture这个结果 + when(passwordEncoder.matches(reqVO.getOldPassword(),reqVO.getOldPassword())).thenReturn(true); + when(passwordEncoder.encode(newPassword)).thenReturn(newPassword); + + // 更新用户密码 + authService.updatePassword(userDO.getId(),reqVO); + assertEquals(mbrUserMapper.selectById(userDO.getId()).getPassword(),newPassword); + } + + @Test + public void testResetPassword_success(){ + // 准备参数 + MbrUserDO userDO = randomMbrUserDO(); + mbrUserMapper.insert(userDO); + + // 随机密码 + String password = randomNumbers(11); + // 随机验证码 + String code = randomNumbers(4); + + MbrAuthResetPasswordReqVO reqVO = new MbrAuthResetPasswordReqVO(); + reqVO.setPassword(password); + reqVO.setCode(code); + + // 放入code+手机号 + stringRedisTemplate.opsForValue().set(code,userDO.getMobile(),10, TimeUnit.MINUTES); + + // mock + when(passwordEncoder.encode(password)).thenReturn(password); + + // 更新用户密码 + authService.resetPassword(reqVO); + assertEquals(mbrUserMapper.selectById(userDO.getId()).getPassword(),password); + } + + + // ========== 随机对象 ========== + + @SafeVarargs + private static MbrUserDO randomMbrUserDO(Consumer... consumers) { + Consumer consumer = (o) -> { + o.setStatus(randomEle(CommonStatusEnum.values()).getStatus()); // 保证 status 的范围 + o.setPassword(randomString()); + }; + return randomPojo(MbrUserDO.class, ArrayUtils.append(consumer, consumers)); + } + + +} From 6a7761313e21182d91096fc1fbe7953c976644a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AE=8B=E5=A4=A9?= <2982176321@qq.com> Date: Wed, 17 Nov 2021 15:12:59 +0800 Subject: [PATCH 28/81] =?UTF-8?q?[updaate]=20=E6=8B=86=E5=88=86=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E5=AF=86=E7=A0=81=E4=B8=8E=E9=87=8D=E7=BD=AE=E5=AF=86?= =?UTF-8?q?=E7=A0=81=E8=AF=B7=E6=B1=82=E5=AE=9E=E4=BD=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/auth/SysAuthController.java | 5 ++-- .../auth/vo/MbrAuthResetPasswordReqVO.java | 21 ++----------- .../auth/vo/MbrAuthUpdatePasswordReqVO.java | 30 +++++++++++++++++++ .../system/service/auth/SysAuthService.java | 2 +- .../service/auth/impl/SysAuthServiceImpl.java | 4 +-- .../service/MbrUserServiceImplTest.java | 1 - .../system/service/SysAuthServiceTest.java | 16 +++++----- 7 files changed, 47 insertions(+), 32 deletions(-) create mode 100644 yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/controller/auth/vo/MbrAuthUpdatePasswordReqVO.java diff --git a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/controller/auth/SysAuthController.java b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/controller/auth/SysAuthController.java index a4a4efb871..eb6e142ee5 100644 --- a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/controller/auth/SysAuthController.java +++ b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/controller/auth/SysAuthController.java @@ -80,7 +80,8 @@ public class SysAuthController { @PostMapping("/reset-password") @ApiOperation(value = "重置密码", notes = "用户忘记密码时使用") - public CommonResult resetPassword(@RequestBody @Validated(MbrAuthResetPasswordReqVO.resetPasswordValidView.class) MbrAuthResetPasswordReqVO reqVO) { + @PreAuthenticated + public CommonResult resetPassword(@RequestBody @Valid MbrAuthResetPasswordReqVO reqVO) { authService.resetPassword(reqVO); return success(true); } @@ -88,7 +89,7 @@ public class SysAuthController { @PostMapping("/update-password") @ApiOperation(value = "修改用户密码",notes = "用户修改密码时使用") @PreAuthenticated - public CommonResult updatePassword(@RequestBody @Validated(MbrAuthResetPasswordReqVO.updatePasswordValidView.class) MbrAuthResetPasswordReqVO reqVO) { + public CommonResult updatePassword(@RequestBody @Valid MbrAuthUpdatePasswordReqVO reqVO) { authService.updatePassword(getLoginUserId(), reqVO); return success(true); } diff --git a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/controller/auth/vo/MbrAuthResetPasswordReqVO.java b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/controller/auth/vo/MbrAuthResetPasswordReqVO.java index f092eaf48c..92fd8445f5 100644 --- a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/controller/auth/vo/MbrAuthResetPasswordReqVO.java +++ b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/controller/auth/vo/MbrAuthResetPasswordReqVO.java @@ -19,30 +19,13 @@ import javax.validation.constraints.Pattern; @Builder public class MbrAuthResetPasswordReqVO { - /** - * 修改密码校验规则 - */ - public interface updatePasswordValidView { - } - - /** - * 忘记密码校验规则 - */ - public interface resetPasswordValidView { - } - - @ApiModelProperty(value = "用户旧密码", required = true, example = "123456") - @NotBlank(message = "旧密码不能为空",groups = updatePasswordValidView.class) - @Length(min = 4, max = 16, message = "密码长度为 4-16 位") - private String oldPassword; - @ApiModelProperty(value = "新密码", required = true, example = "buzhidao") - @NotEmpty(message = "新密码不能为空",groups = {updatePasswordValidView.class,resetPasswordValidView.class}) + @NotEmpty(message = "新密码不能为空") @Length(min = 4, max = 16, message = "密码长度为 4-16 位") private String password; @ApiModelProperty(value = "手机验证码", required = true, example = "1024") - @NotEmpty(message = "手机验证码不能为空",groups = resetPasswordValidView.class) + @NotEmpty(message = "手机验证码不能为空") @Length(min = 4, max = 6, message = "手机验证码长度为 4-6 位") @Pattern(regexp = "^[0-9]+$", message = "手机验证码必须都是数字") private String code; diff --git a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/controller/auth/vo/MbrAuthUpdatePasswordReqVO.java b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/controller/auth/vo/MbrAuthUpdatePasswordReqVO.java new file mode 100644 index 0000000000..b5cc0c7850 --- /dev/null +++ b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/controller/auth/vo/MbrAuthUpdatePasswordReqVO.java @@ -0,0 +1,30 @@ +package cn.iocoder.yudao.userserver.modules.system.controller.auth.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; + +@ApiModel("修改密码 Request VO") +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class MbrAuthUpdatePasswordReqVO { + + @ApiModelProperty(value = "用户旧密码", required = true, example = "123456") + @NotBlank(message = "旧密码不能为空") + @Length(min = 4, max = 16, message = "密码长度为 4-16 位") + private String oldPassword; + + @ApiModelProperty(value = "新密码", required = true, example = "buzhidao") + @NotEmpty(message = "新密码不能为空") + @Length(min = 4, max = 16, message = "密码长度为 4-16 位") + private String password; +} diff --git a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/service/auth/SysAuthService.java b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/service/auth/SysAuthService.java index d84d175588..33664d3511 100644 --- a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/service/auth/SysAuthService.java +++ b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/service/auth/SysAuthService.java @@ -68,7 +68,7 @@ public interface SysAuthService extends SecurityAuthFrameworkService { * @param userId 用户id * @param userReqVO 用户请求实体类 */ - void updatePassword(Long userId, MbrAuthResetPasswordReqVO userReqVO); + void updatePassword(Long userId, @Valid MbrAuthUpdatePasswordReqVO userReqVO); /** * 忘记密码 diff --git a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/service/auth/impl/SysAuthServiceImpl.java b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/service/auth/impl/SysAuthServiceImpl.java index bd8b571982..eb05f70867 100644 --- a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/service/auth/impl/SysAuthServiceImpl.java +++ b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/service/auth/impl/SysAuthServiceImpl.java @@ -25,7 +25,6 @@ import cn.iocoder.yudao.userserver.modules.system.service.sms.SysSmsCodeService; import com.google.common.annotations.VisibleForTesting; import lombok.extern.slf4j.Slf4j; import me.zhyd.oauth.model.AuthUser; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.security.authentication.AuthenticationManager; @@ -41,6 +40,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import javax.validation.Valid; import java.util.List; import java.util.Objects; @@ -280,7 +280,7 @@ public class SysAuthServiceImpl implements SysAuthService { } @Override - public void updatePassword(Long userId, MbrAuthResetPasswordReqVO reqVO) { + public void updatePassword(Long userId, @Valid MbrAuthUpdatePasswordReqVO reqVO) { // 检验旧密码 MbrUserDO userDO = checkOldPassword(userId, reqVO.getOldPassword()); diff --git a/yudao-user-server/src/test/java/cn/iocoder/yudao/userserver/modules/member/service/MbrUserServiceImplTest.java b/yudao-user-server/src/test/java/cn/iocoder/yudao/userserver/modules/member/service/MbrUserServiceImplTest.java index dadb27f7d1..0ed1e77e65 100644 --- a/yudao-user-server/src/test/java/cn/iocoder/yudao/userserver/modules/member/service/MbrUserServiceImplTest.java +++ b/yudao-user-server/src/test/java/cn/iocoder/yudao/userserver/modules/member/service/MbrUserServiceImplTest.java @@ -120,7 +120,6 @@ public class MbrUserServiceImplTest extends BaseDbAndRedisUnitTest { // 验证旧手机验证码是否正确 sysSmsCodeService.useSmsCode(oldMobile,SysSmsSceneEnum.CHANGE_MOBILE_BY_SMS.getScene(),"123","1.1.1.1"); - // 验证新手机 SysAuthSendSmsReqVO smsReqVO = new SysAuthSendSmsReqVO(); smsReqVO.setMobile(oldMobile); diff --git a/yudao-user-server/src/test/java/cn/iocoder/yudao/userserver/modules/system/service/SysAuthServiceTest.java b/yudao-user-server/src/test/java/cn/iocoder/yudao/userserver/modules/system/service/SysAuthServiceTest.java index 2c2d73c76d..65fe3031cf 100644 --- a/yudao-user-server/src/test/java/cn/iocoder/yudao/userserver/modules/system/service/SysAuthServiceTest.java +++ b/yudao-user-server/src/test/java/cn/iocoder/yudao/userserver/modules/system/service/SysAuthServiceTest.java @@ -16,6 +16,7 @@ import cn.iocoder.yudao.userserver.modules.member.dal.mysql.user.MbrUserMapper; import cn.iocoder.yudao.userserver.modules.member.service.user.MbrUserService; import cn.iocoder.yudao.userserver.modules.member.service.user.impl.MbrUserServiceImpl; import cn.iocoder.yudao.userserver.modules.system.controller.auth.vo.MbrAuthResetPasswordReqVO; +import cn.iocoder.yudao.userserver.modules.system.controller.auth.vo.MbrAuthUpdatePasswordReqVO; import cn.iocoder.yudao.userserver.modules.system.service.auth.SysAuthService; import cn.iocoder.yudao.userserver.modules.system.service.auth.impl.SysAuthServiceImpl; import cn.iocoder.yudao.userserver.modules.system.service.sms.SysSmsCodeService; @@ -78,9 +79,10 @@ public class SysAuthServiceTest extends BaseDbAndRedisUnitTest { String newPassword = randomString(); // 请求实体 - MbrAuthResetPasswordReqVO reqVO = new MbrAuthResetPasswordReqVO(); - reqVO.setOldPassword(userDO.getPassword()); - reqVO.setPassword(newPassword); + MbrAuthUpdatePasswordReqVO reqVO = MbrAuthUpdatePasswordReqVO.builder() + .oldPassword(userDO.getPassword()) + .password(newPassword) + .build(); // 测试桩 // 这两个相等是为了返回ture这个结果 @@ -103,10 +105,10 @@ public class SysAuthServiceTest extends BaseDbAndRedisUnitTest { // 随机验证码 String code = randomNumbers(4); - MbrAuthResetPasswordReqVO reqVO = new MbrAuthResetPasswordReqVO(); - reqVO.setPassword(password); - reqVO.setCode(code); - + MbrAuthResetPasswordReqVO reqVO = MbrAuthResetPasswordReqVO.builder() + .password(password) + .code(code) + .build(); // 放入code+手机号 stringRedisTemplate.opsForValue().set(code,userDO.getMobile(),10, TimeUnit.MINUTES); From d405f4df25a0a9b693b223fb2010166716dace1e Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sun, 21 Nov 2021 11:12:47 +0800 Subject: [PATCH 29/81] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=8D=95=E5=85=83?= =?UTF-8?q?=E6=B5=8B=E8=AF=95=E6=8A=A5=E9=94=99=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/auth/impl/SysAuthServiceImpl.java | 25 ++++++++----------- .../service/file/InfFileServiceTest.java | 4 +-- .../service/auth/SysAuthServiceImplTest.java | 3 +++ .../framework/security/core/LoginUser.java | 2 ++ 4 files changed, 17 insertions(+), 17 deletions(-) diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/impl/SysAuthServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/impl/SysAuthServiceImpl.java index caf1fb2175..762649d9d2 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/impl/SysAuthServiceImpl.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/impl/SysAuthServiceImpl.java @@ -1,21 +1,17 @@ package cn.iocoder.yudao.adminserver.modules.system.service.auth.impl; -import cn.iocoder.yudao.adminserver.modules.system.service.auth.SysUserSessionService; -import cn.iocoder.yudao.adminserver.modules.system.service.dept.SysPostService; -import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; -import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil; -import cn.iocoder.yudao.framework.security.core.LoginUser; -import cn.iocoder.yudao.framework.common.util.monitor.TracerUtils; import cn.hutool.core.collection.CollUtil; import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.auth.SysAuthLoginReqVO; import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.auth.SysAuthSocialBindReqVO; import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.auth.SysAuthSocialLogin2ReqVO; import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.auth.SysAuthSocialLoginReqVO; import cn.iocoder.yudao.adminserver.modules.system.convert.auth.SysAuthConvert; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept.SysPostDO; import cn.iocoder.yudao.adminserver.modules.system.enums.logger.SysLoginLogTypeEnum; import cn.iocoder.yudao.adminserver.modules.system.enums.logger.SysLoginResultEnum; import cn.iocoder.yudao.adminserver.modules.system.service.auth.SysAuthService; import cn.iocoder.yudao.adminserver.modules.system.service.common.SysCaptchaService; +import cn.iocoder.yudao.adminserver.modules.system.service.dept.SysPostService; import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysPermissionService; import cn.iocoder.yudao.adminserver.modules.system.service.user.SysUserService; import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.social.SysSocialUserDO; @@ -45,16 +41,14 @@ import org.springframework.stereotype.Service; import org.springframework.util.Assert; import javax.annotation.Resource; +import java.util.Collections; import java.util.List; -import java.util.Optional; import java.util.Objects; import java.util.Set; -import java.util.stream.Collectors; import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.*; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.*; -import static java.util.Collections.EMPTY_LIST; +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; import static java.util.Collections.singleton; /** @@ -83,7 +77,8 @@ public class SysAuthServiceImpl implements SysAuthService { @Resource private SysUserSessionCoreService userSessionCoreService; @Resource - private SysPostService sysPostService; + private SysPostService postService; + @Resource private SysSocialService socialService; // TODO @timfruit:静态枚举类,需要都大写,例如说 USER_TYPE_ENUM;静态变量,放在普通变量前面;这个实践不错哈。 @@ -130,11 +125,11 @@ public class SysAuthServiceImpl implements SysAuthService { return userSessionCoreService.createUserSession(loginUser, userIp, userAgent); } - private List getUserPosts(Set postIds) { - return Optional.ofNullable(postIds).map(ids-> - sysPostService.getPosts(ids).stream().map(post -> post.getCode()).collect(Collectors.toList()) - ).orElse(EMPTY_LIST); + if (CollUtil.isEmpty(postIds)) { + return Collections.emptyList(); + } + return convertList(postService.getPosts(postIds), SysPostDO::getCode); } private void verifyCaptcha(String username, String captchaUUID, String captchaCode) { diff --git a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/infra/service/file/InfFileServiceTest.java b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/infra/service/file/InfFileServiceTest.java index 6a41c94205..98ec86c816 100644 --- a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/infra/service/file/InfFileServiceTest.java +++ b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/infra/service/file/InfFileServiceTest.java @@ -2,10 +2,10 @@ package cn.iocoder.yudao.adminserver.modules.infra.service.file; import cn.iocoder.yudao.adminserver.BaseDbUnitTest; import cn.iocoder.yudao.adminserver.modules.infra.controller.file.vo.InfFilePageReqVO; +import cn.iocoder.yudao.adminserver.modules.infra.service.file.impl.InfFileServiceImpl; import cn.iocoder.yudao.coreservice.modules.infra.dal.dataobject.file.InfFileDO; import cn.iocoder.yudao.coreservice.modules.infra.dal.mysql.file.InfFileCoreMapper; import cn.iocoder.yudao.coreservice.modules.infra.framework.file.config.FileProperties; -import cn.iocoder.yudao.coreservice.modules.infra.service.file.impl.InfFileCoreServiceImpl; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; import org.junit.jupiter.api.Test; @@ -19,7 +19,7 @@ import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEq import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo; import static org.junit.jupiter.api.Assertions.assertEquals; -@Import({InfFileCoreServiceImpl.class, FileProperties.class}) +@Import({InfFileServiceImpl.class, FileProperties.class}) public class InfFileServiceTest extends BaseDbUnitTest { @Resource diff --git a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/SysAuthServiceImplTest.java b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/SysAuthServiceImplTest.java index c09a194aa8..59be978091 100644 --- a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/SysAuthServiceImplTest.java +++ b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/SysAuthServiceImplTest.java @@ -6,6 +6,7 @@ import cn.iocoder.yudao.adminserver.modules.system.enums.logger.SysLoginLogTypeE import cn.iocoder.yudao.adminserver.modules.system.enums.logger.SysLoginResultEnum; import cn.iocoder.yudao.adminserver.modules.system.service.auth.impl.SysAuthServiceImpl; import cn.iocoder.yudao.adminserver.modules.system.service.common.SysCaptchaService; +import cn.iocoder.yudao.adminserver.modules.system.service.dept.SysPostService; import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysPermissionService; import cn.iocoder.yudao.adminserver.modules.system.service.user.SysUserService; import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO; @@ -67,6 +68,8 @@ public class SysAuthServiceImplTest extends BaseDbUnitTest { private SysUserSessionCoreService userSessionCoreService; @MockBean private SysSocialService socialService; + @MockBean + private SysPostService postService; @Test public void testLoadUserByUsername_success() { diff --git a/yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/core/LoginUser.java b/yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/core/LoginUser.java index e8d6012546..0090e66330 100644 --- a/yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/core/LoginUser.java +++ b/yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/core/LoginUser.java @@ -63,6 +63,7 @@ public class LoginUser implements UserDetails { /** * group 目前指岗位代替 */ + // TODO jason:这个字段,改成 postCodes 明确更好哈 private List groups; @@ -89,6 +90,7 @@ public class LoginUser implements UserDetails { @JsonIgnore// 避免序列化 public Collection getAuthorities() { List list = new ArrayList<>(1); + // TODO @芋艿:看看有没更优化的方案 list.add(new SimpleGrantedAuthority("ROLE_ACTIVITI_USER")); return list; } From e2b76ee0e5f4d9f5edc57c5f22d9dc736daf1fd0 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sun, 21 Nov 2021 12:05:34 +0800 Subject: [PATCH 30/81] =?UTF-8?q?code=20review=20=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E5=AF=86=E7=A0=81=E7=AD=89=E7=9A=84=E5=8D=95=E5=85=83=E6=B5=8B?= =?UTF-8?q?=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yudao-admin-server/pom.xml | 2 -- yudao-user-server/pom.xml | 1 + .../controller/user/SysUserProfileController.java | 1 + .../user/vo/MbrUserUpdateMobileReqVO.java | 2 +- .../service/user/impl/MbrUserServiceImpl.java | 2 ++ .../system/controller/auth/SysAuthController.java | 1 + .../auth/vo/MbrAuthResetPasswordReqVO.java | 2 +- .../service/auth/impl/SysAuthServiceImpl.java | 3 +++ .../service/sms/impl/SysSmsCodeServiceImpl.java | 4 ++++ .../controller/SysUserProfileControllerTest.java | 5 +++-- .../member/service/MbrUserServiceImplTest.java | 8 ++++---- .../modules/system/service/SysAuthServiceTest.java | 14 ++++---------- 12 files changed, 25 insertions(+), 20 deletions(-) diff --git a/yudao-admin-server/pom.xml b/yudao-admin-server/pom.xml index 5cdf857122..4314e0fed9 100644 --- a/yudao-admin-server/pom.xml +++ b/yudao-admin-server/pom.xml @@ -117,8 +117,6 @@ yudao-spring-boot-starter-excel - - org.apache.velocity velocity-engine-core diff --git a/yudao-user-server/pom.xml b/yudao-user-server/pom.xml index b4c2cf8a53..03dbfd699d 100644 --- a/yudao-user-server/pom.xml +++ b/yudao-user-server/pom.xml @@ -91,6 +91,7 @@ test + junit diff --git a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/member/controller/user/SysUserProfileController.java b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/member/controller/user/SysUserProfileController.java index 39c3d88f31..b2afbc78bd 100644 --- a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/member/controller/user/SysUserProfileController.java +++ b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/member/controller/user/SysUserProfileController.java @@ -70,6 +70,7 @@ public class SysUserProfileController { @PreAuthenticated public CommonResult updateMobile(@RequestBody @Valid MbrUserUpdateMobileReqVO reqVO) { // 校验验证码 + // TODO @宋天:统一到 userService.updateMobile 方法里 smsCodeService.useSmsCode(reqVO.getMobile(),SysSmsSceneEnum.CHANGE_MOBILE_BY_SMS.getScene(), reqVO.getCode(),getClientIP()); userService.updateMobile(getLoginUserId(), reqVO); diff --git a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/member/controller/user/vo/MbrUserUpdateMobileReqVO.java b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/member/controller/user/vo/MbrUserUpdateMobileReqVO.java index 0e5499bc71..df1980b89e 100644 --- a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/member/controller/user/vo/MbrUserUpdateMobileReqVO.java +++ b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/member/controller/user/vo/MbrUserUpdateMobileReqVO.java @@ -25,9 +25,9 @@ public class MbrUserUpdateMobileReqVO { @Pattern(regexp = "^[0-9]+$", message = "手机验证码必须都是数字") private String code; - @ApiModelProperty(value = "手机号",required = true,example = "15823654487") @NotBlank(message = "手机号不能为空") + // TODO @宋天:手机校验,直接使用 @Mobile 哈 @Length(min = 8, max = 11, message = "手机号码长度为 8-11 位") @Pattern(regexp = "^1[3-9]\\d{9}$", message = "手机号格式错误") private String mobile; diff --git a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/member/service/user/impl/MbrUserServiceImpl.java b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/member/service/user/impl/MbrUserServiceImpl.java index 76b4501eb3..f45ad257b9 100644 --- a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/member/service/user/impl/MbrUserServiceImpl.java +++ b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/member/service/user/impl/MbrUserServiceImpl.java @@ -126,8 +126,10 @@ public class MbrUserServiceImpl implements MbrUserService { // 检测用户是否存在 MbrUserDO userDO = checkUserExists(userId); // 检测手机与验证码是否匹配 + // TODO @宋天:修改手机的时候。应该要校验,老手机 + 老手机 code;新手机 + 新手机 code sysAuthService.checkIfMobileMatchCodeAndDeleteCode(userDO.getMobile(),reqVO.getCode()); // 更新用户手机 + // TODO @宋天:更新的时候,单独创建对象。直接全量更新,会可能导致属性覆盖。可以看看打印出来的 SQL 哈 userDO.setMobile(reqVO.getMobile()); userMapper.updateById(userDO); } diff --git a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/controller/auth/SysAuthController.java b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/controller/auth/SysAuthController.java index eb6e142ee5..4dfdb7a8c5 100644 --- a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/controller/auth/SysAuthController.java +++ b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/controller/auth/SysAuthController.java @@ -98,6 +98,7 @@ public class SysAuthController { @ApiOperation(value = "校验验证码是否正确") @PreAuthenticated public CommonResult checkSmsCode(@RequestBody @Valid SysAuthSmsLoginReqVO reqVO) { + // TODO @宋天:check 的时候,不应该使用 useSmsCode 哈,这样验证码就直接被使用了。另外,check 开头的方法,更多是校验的逻辑,不会有 update 数据的动作。这点,在方法命名上,也是要注意的 smsCodeService.useSmsCode(reqVO.getMobile(),SysSmsSceneEnum.CHECK_CODE_BY_SMS.getScene(),reqVO.getCode(),getClientIP()); return success(true); } diff --git a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/controller/auth/vo/MbrAuthResetPasswordReqVO.java b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/controller/auth/vo/MbrAuthResetPasswordReqVO.java index 92fd8445f5..3b3556fdb0 100644 --- a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/controller/auth/vo/MbrAuthResetPasswordReqVO.java +++ b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/controller/auth/vo/MbrAuthResetPasswordReqVO.java @@ -8,7 +8,6 @@ import lombok.Data; import lombok.NoArgsConstructor; import org.hibernate.validator.constraints.Length; -import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotEmpty; import javax.validation.constraints.Pattern; @@ -29,4 +28,5 @@ public class MbrAuthResetPasswordReqVO { @Length(min = 4, max = 6, message = "手机验证码长度为 4-6 位") @Pattern(regexp = "^[0-9]+$", message = "手机验证码必须都是数字") private String code; + } diff --git a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/service/auth/impl/SysAuthServiceImpl.java b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/service/auth/impl/SysAuthServiceImpl.java index eb05f70867..f4193b35b6 100644 --- a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/service/auth/impl/SysAuthServiceImpl.java +++ b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/service/auth/impl/SysAuthServiceImpl.java @@ -285,6 +285,7 @@ public class SysAuthServiceImpl implements SysAuthService { MbrUserDO userDO = checkOldPassword(userId, reqVO.getOldPassword()); // 更新用户密码 + // TODO @宋天:不要更新整个对象哈 userDO.setPassword(passwordEncoder.encode(reqVO.getPassword())); userMapper.updateById(userDO); } @@ -300,6 +301,8 @@ public class SysAuthServiceImpl implements SysAuthService { // TODO @芋艿 这一步没必要检验验证码与手机是否匹配,因为是根据验证码去redis中查找手机号,然后根据手机号查询用户 // 也就是说 即便黑客以其他方式将验证码发送到自己手机上,最终还是会根据手机号查询用户然后进行重置密码的操作,不存在安全问题 + // TODO @宋天:这块微信在讨论下哈~~~ + // 校验验证码 smsCodeService.useSmsCode(userDO.getMobile(), SysSmsSceneEnum.FORGET_MOBILE_BY_SMS.getScene(), reqVO.getCode(),getClientIP()); diff --git a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/service/sms/impl/SysSmsCodeServiceImpl.java b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/service/sms/impl/SysSmsCodeServiceImpl.java index d9a3d68f11..a5796c6fc7 100644 --- a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/service/sms/impl/SysSmsCodeServiceImpl.java +++ b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/service/sms/impl/SysSmsCodeServiceImpl.java @@ -58,10 +58,14 @@ public class SysSmsCodeServiceImpl implements SysSmsCodeService { // 创建验证码 String code = this.createSmsCode(mobile, scene, createIp); // 发送验证码 + // TODO @宋天:这里可以拓展下 SysSmsSceneEnum,支持设置对应的短信模板编号(不同场景的短信文案是不同的)、是否要校验手机号已经注册。这样 Controller 就可以收口成一个接口了。相当于说,不同场景,不同策略 smsCoreService.sendSingleSmsToMember(mobile, null, SysSmsTemplateCodeConstants.USER_SMS_LOGIN, MapUtil.of("code", code)); // 存储手机号与验证码到redis,用于标记 + // TODO @宋天:SysSmsCodeDO 表应该足够,无需增加额外的 redis 存储哇 + // TODO @宋天:Redis 相关的操作,不要散落到业务层,而是写一个它对应的 RedisDAO。这样,实现业务与技术的解耦 + // TODO @宋天:直接使用 code 作为 key,会存在 2 个问题:1)code 可能会冲突,多个手机号之间;2)缺少前缀。例如说 sms_code_${code} stringRedisTemplate.opsForValue().set(code,mobile,CODE_TIME, TimeUnit.MINUTES); } diff --git a/yudao-user-server/src/test/java/cn/iocoder/yudao/userserver/modules/member/controller/SysUserProfileControllerTest.java b/yudao-user-server/src/test/java/cn/iocoder/yudao/userserver/modules/member/controller/SysUserProfileControllerTest.java index d8b8e7f71d..3f32cc82c5 100644 --- a/yudao-user-server/src/test/java/cn/iocoder/yudao/userserver/modules/member/controller/SysUserProfileControllerTest.java +++ b/yudao-user-server/src/test/java/cn/iocoder/yudao/userserver/modules/member/controller/SysUserProfileControllerTest.java @@ -22,6 +22,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers. * * @author 宋天 */ +// TODO @宋天:controller 的单测可以不写哈,因为收益太低了。未来我们做 qa 自动化测试 public class SysUserProfileControllerTest { private MockMvc mockMvc; @@ -35,7 +36,7 @@ public class SysUserProfileControllerTest { @Mock private SysSmsCodeService smsCodeService; - @Before + @Before // TODO @宋天:使用 junit5 哈 public void setup() { // 初始化 MockitoAnnotations.openMocks(this); @@ -52,7 +53,7 @@ public class SysUserProfileControllerTest { .content("{\"mobile\":\"15819844280\",\"code\":\"123456\"}}")) .andExpect(status().isOk()) .andDo(MockMvcResultHandlers.print()); - +// TODO @宋天:方法的结尾,不用空行哈 } diff --git a/yudao-user-server/src/test/java/cn/iocoder/yudao/userserver/modules/member/service/MbrUserServiceImplTest.java b/yudao-user-server/src/test/java/cn/iocoder/yudao/userserver/modules/member/service/MbrUserServiceImplTest.java index 0ed1e77e65..05571ba2ea 100644 --- a/yudao-user-server/src/test/java/cn/iocoder/yudao/userserver/modules/member/service/MbrUserServiceImplTest.java +++ b/yudao-user-server/src/test/java/cn/iocoder/yudao/userserver/modules/member/service/MbrUserServiceImplTest.java @@ -6,7 +6,6 @@ import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; import cn.iocoder.yudao.framework.common.util.collection.ArrayUtils; import cn.iocoder.yudao.framework.redis.config.YudaoRedisAutoConfiguration; import cn.iocoder.yudao.userserver.BaseDbAndRedisUnitTest; -import cn.iocoder.yudao.userserver.BaseDbUnitTest; import cn.iocoder.yudao.userserver.modules.member.controller.user.vo.MbrUserInfoRespVO; import cn.iocoder.yudao.userserver.modules.member.controller.user.vo.MbrUserUpdateMobileReqVO; import cn.iocoder.yudao.userserver.modules.member.dal.mysql.user.MbrUserMapper; @@ -15,7 +14,6 @@ import cn.iocoder.yudao.userserver.modules.system.controller.auth.vo.SysAuthSend import cn.iocoder.yudao.userserver.modules.system.enums.sms.SysSmsSceneEnum; import cn.iocoder.yudao.userserver.modules.system.service.auth.impl.SysAuthServiceImpl; import cn.iocoder.yudao.userserver.modules.system.service.sms.SysSmsCodeService; -import cn.iocoder.yudao.userserver.modules.system.service.sms.impl.SysSmsCodeServiceImpl; import org.junit.jupiter.api.Test; import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.context.annotation.Import; @@ -23,14 +21,16 @@ import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.security.crypto.password.PasswordEncoder; import javax.annotation.Resource; -import java.io.*; +import java.io.ByteArrayInputStream; import java.util.function.Consumer; import static cn.hutool.core.util.RandomUtil.*; -import static org.junit.jupiter.api.Assertions.assertEquals; import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo; import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomString; +import static org.junit.jupiter.api.Assertions.assertEquals; import static org.mockito.Mockito.*; + +// TODO @芋艿:单测的 review,等逻辑都达成一致后 /** * {@link MbrUserServiceImpl} 的单元测试类 * diff --git a/yudao-user-server/src/test/java/cn/iocoder/yudao/userserver/modules/system/service/SysAuthServiceTest.java b/yudao-user-server/src/test/java/cn/iocoder/yudao/userserver/modules/system/service/SysAuthServiceTest.java index 65fe3031cf..c96425bda7 100644 --- a/yudao-user-server/src/test/java/cn/iocoder/yudao/userserver/modules/system/service/SysAuthServiceTest.java +++ b/yudao-user-server/src/test/java/cn/iocoder/yudao/userserver/modules/system/service/SysAuthServiceTest.java @@ -1,8 +1,6 @@ package cn.iocoder.yudao.userserver.modules.system.service; -import cn.hutool.core.util.ArrayUtil; import cn.iocoder.yudao.coreservice.modules.member.dal.dataobject.user.MbrUserDO; -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO; import cn.iocoder.yudao.coreservice.modules.system.service.auth.SysUserSessionCoreService; import cn.iocoder.yudao.coreservice.modules.system.service.logger.SysLoginLogCoreService; import cn.iocoder.yudao.coreservice.modules.system.service.social.SysSocialService; @@ -10,11 +8,8 @@ import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; import cn.iocoder.yudao.framework.common.util.collection.ArrayUtils; import cn.iocoder.yudao.framework.redis.config.YudaoRedisAutoConfiguration; import cn.iocoder.yudao.userserver.BaseDbAndRedisUnitTest; -import cn.iocoder.yudao.userserver.BaseDbUnitTest; -import cn.iocoder.yudao.userserver.config.RedisTestConfiguration; import cn.iocoder.yudao.userserver.modules.member.dal.mysql.user.MbrUserMapper; import cn.iocoder.yudao.userserver.modules.member.service.user.MbrUserService; -import cn.iocoder.yudao.userserver.modules.member.service.user.impl.MbrUserServiceImpl; import cn.iocoder.yudao.userserver.modules.system.controller.auth.vo.MbrAuthResetPasswordReqVO; import cn.iocoder.yudao.userserver.modules.system.controller.auth.vo.MbrAuthUpdatePasswordReqVO; import cn.iocoder.yudao.userserver.modules.system.service.auth.SysAuthService; @@ -28,17 +23,17 @@ import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.crypto.password.PasswordEncoder; import javax.annotation.Resource; - import java.util.concurrent.TimeUnit; import java.util.function.Consumer; import static cn.hutool.core.util.RandomUtil.randomEle; import static cn.hutool.core.util.RandomUtil.randomNumbers; -import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*; +import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo; +import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomString; import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.mockito.Mockito.*; - +import static org.mockito.Mockito.when; +// TODO @芋艿:单测的 review,等逻辑都达成一致后 /** * {@link SysAuthService} 的单元测试类 * @@ -68,7 +63,6 @@ public class SysAuthServiceTest extends BaseDbAndRedisUnitTest { @Resource private SysAuthServiceImpl authService; - @Test public void testUpdatePassword_success(){ // 准备参数 From 7991d6858650800e4775bd063c34c83f965cd145 Mon Sep 17 00:00:00 2001 From: chaocloud <840558273@qq.com> Date: Wed, 24 Nov 2021 15:05:04 +0800 Subject: [PATCH 31/81] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E7=94=9F=E6=88=90=E5=B7=A5=E5=85=B7java=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E8=B7=AF=E5=BE=84=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/tool/service/codegen/impl/ToolCodegenEngine.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/service/codegen/impl/ToolCodegenEngine.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/service/codegen/impl/ToolCodegenEngine.java index 94b114f947..44c95603fc 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/service/codegen/impl/ToolCodegenEngine.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/service/codegen/impl/ToolCodegenEngine.java @@ -191,7 +191,7 @@ public class ToolCodegenEngine { } private static String javaFilePath(String path) { - return "java/${basePackage}/${table.moduleName}/" + path + ".java"; + return "java/${basePackage}/modules/${table.moduleName}/" + path + ".java"; } private static String vueTemplatePath(String path) { From b66d84535490824a27a75875218c5f678f177a78 Mon Sep 17 00:00:00 2001 From: chaocloud <840558273@qq.com> Date: Wed, 24 Nov 2021 15:08:01 +0800 Subject: [PATCH 32/81] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E7=94=9F=E6=88=90=E5=B7=A5=E5=85=B7=EF=BC=8C=E5=BD=93=E8=A1=A8?= =?UTF-8?q?=E6=B3=A8=E9=87=8A=E4=B8=BA=E7=A9=BA=E6=97=B6=EF=BC=8C=E6=A0=B9?= =?UTF-8?q?=E6=8D=AESQL=E5=AF=BC=E5=85=A5=E5=A4=B1=E8=B4=A5=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tool/service/codegen/impl/ToolCodegenSQLParser.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/service/codegen/impl/ToolCodegenSQLParser.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/service/codegen/impl/ToolCodegenSQLParser.java index bb664a1d55..d9f2538812 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/service/codegen/impl/ToolCodegenSQLParser.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/service/codegen/impl/ToolCodegenSQLParser.java @@ -64,10 +64,17 @@ public class ToolCodegenSQLParser { private static ToolSchemaTableDO parseTable(SQLCreateTableStatement statement) { return ToolSchemaTableDO.builder() .tableName(statement.getTableSource().getTableName(true)) - .tableComment(((SQLCharExpr) statement.getComment()).getText()) + .tableComment(getCommentText(statement)) .build(); } + private static String getCommentText(SQLCreateTableStatement statement) { + if (statement == null || statement.getComment() == null) { + return ""; + } + return ((SQLCharExpr) statement.getComment()).getText(); + } + private static List parseColumns(SQLCreateTableStatement statement) { List columns = new ArrayList<>(); statement.getTableElementList().forEach(element -> parseColumn(columns, element)); From 6c4908e70e1cd5dd2afaae57ea17de8844f5957f Mon Sep 17 00:00:00 2001 From: YunaiV Date: Wed, 24 Nov 2021 23:33:06 +0800 Subject: [PATCH 33/81] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=20uniapp=20?= =?UTF-8?q?=E5=B0=8F=E7=A8=8B=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yudao-vue-ui/.hbuilderx/launch.json | 16 + yudao-vue-ui/App.vue | 19 + yudao-vue-ui/common/css/common.css | 182 ++ yudao-vue-ui/common/css/icon.css | 271 +++ .../components/jyf-parser/jyf-parser.vue | 630 ++++++ .../components/jyf-parser/libs/CssHandler.js | 97 + .../jyf-parser/libs/MpHtmlParser.js | 534 +++++ .../components/jyf-parser/libs/config.js | 93 + .../components/jyf-parser/libs/handler.wxs | 22 + .../components/jyf-parser/libs/trees.vue | 500 +++++ .../mescroll-uni/components/mescroll-down.css | 55 + .../mescroll-uni/components/mescroll-down.vue | 47 + .../components/mescroll-empty.vue | 27 + .../components/mescroll-empty1.vue | 95 + .../mescroll-uni/components/mescroll-top.vue | 83 + .../mescroll-uni/components/mescroll-up.css | 47 + .../mescroll-uni/components/mescroll-up.vue | 39 + .../components/mescroll-uni/mescroll-body.css | 14 + .../components/mescroll-uni/mescroll-body.vue | 344 ++++ .../mescroll-uni/mescroll-mixins.js | 65 + .../mescroll-uni/mescroll-uni-option.js | 33 + .../components/mescroll-uni/mescroll-uni.css | 36 + .../components/mescroll-uni/mescroll-uni.js | 788 +++++++ .../components/mescroll-uni/mescroll-uni.vue | 408 ++++ .../mescroll-uni/mixins/mescroll-comp.js | 23 + .../mescroll-uni/mixins/mescroll-more-item.js | 51 + .../mescroll-uni/mixins/mescroll-more.js | 56 + .../components/mescroll-uni/wxs/bounce.js | 23 + .../components/mescroll-uni/wxs/mixins.js | 102 + .../components/mescroll-uni/wxs/renderjs.js | 92 + .../components/mescroll-uni/wxs/wxs.wxs | 267 +++ .../mix-action-sheet/mix-action-sheet.vue | 82 + .../components/mix-button/mix-button.vue | 154 ++ yudao-vue-ui/components/mix-code/mix-code.vue | 113 + .../components/mix-empty/mix-empty.vue | 209 ++ .../mix-icon-loading/mix-icon-loading.vue | 66 + .../mix-list-cell/mix-list-cell.vue | 117 ++ .../mix-load-more/mix-load-more.vue | 60 + .../components/mix-loading/mix-loading.vue | 114 ++ .../components/mix-modal/mix-modal.vue | 105 + .../components/mix-nav-bar/mix-nav-bar.vue | 139 ++ .../mix-number-box/mix-number-box.vue | 180 ++ .../mix-price-view/mix-price-view.vue | 53 + .../components/mix-timeline/mix-timeline.vue | 137 ++ .../mix-upload-image/mix-upload-image.vue | 200 ++ .../number-keyboard/number-keyboard.vue | 186 ++ .../pay-password-keyboard.vue | 97 + yudao-vue-ui/components/uni-popup/popup.js | 25 + .../components/uni-popup/uni-popup.vue | 302 +++ .../uni-swipe-action-item/bindingx.js | 245 +++ .../uni-swipe-action-item/index.wxs | 204 ++ .../uni-swipe-action-item/mpalipay.js | 160 ++ .../uni-swipe-action-item/mpother.js | 158 ++ .../components/uni-swipe-action-item/mpwxs.js | 97 + .../uni-swipe-action-item.vue | 270 +++ .../uni-swipe-action/uni-swipe-action.vue | 58 + .../uni-transition/uni-transition.vue | 290 +++ .../version-update/base-cloud-mobile.scss | 1250 ++++++++++++ .../version-update/static/airship.png | Bin 0 -> 8640 bytes .../version-update/static/cloudLeft.png | Bin 0 -> 14663 bytes .../version-update/static/cloudRight.png | Bin 0 -> 11364 bytes .../version-update/static/login-wave.png | Bin 0 -> 4419 bytes .../version-update/static/shipAir.png | Bin 0 -> 1420 bytes .../version-update/static/shipGas.png | Bin 0 -> 3601 bytes .../version-update/static/smallCloud.png | Bin 0 -> 1249 bytes .../components/version-update/static/star.png | Bin 0 -> 1324 bytes .../version-update/version-update.vue | 1811 +++++++++++++++++ yudao-vue-ui/index.html | 14 + yudao-vue-ui/main.js | 21 + yudao-vue-ui/manifest.json | 72 + yudao-vue-ui/pages.json | 43 + yudao-vue-ui/pages/index/index.vue | 52 + yudao-vue-ui/pages/tabbar/user.vue | 257 +++ yudao-vue-ui/static/backgroud/user.jpg | Bin 0 -> 8756 bytes yudao-vue-ui/static/icon/arc.png | Bin 0 -> 8014 bytes yudao-vue-ui/static/icon/default-avatar.png | Bin 0 -> 7974 bytes yudao-vue-ui/static/logo.png | Bin 0 -> 4023 bytes yudao-vue-ui/static/tarbar/index-active.png | Bin 0 -> 2415 bytes yudao-vue-ui/static/tarbar/index.png | Bin 0 -> 1867 bytes yudao-vue-ui/static/tarbar/logo.png | Bin 0 -> 4023 bytes yudao-vue-ui/static/tarbar/product-active.png | Bin 0 -> 1562 bytes yudao-vue-ui/static/tarbar/product.png | Bin 0 -> 1981 bytes yudao-vue-ui/static/tarbar/ucenter-active.png | Bin 0 -> 2073 bytes yudao-vue-ui/static/tarbar/ucenter.png | Bin 0 -> 1672 bytes yudao-vue-ui/uni.scss | 78 + 85 files changed, 12478 insertions(+) create mode 100644 yudao-vue-ui/.hbuilderx/launch.json create mode 100644 yudao-vue-ui/App.vue create mode 100644 yudao-vue-ui/common/css/common.css create mode 100644 yudao-vue-ui/common/css/icon.css create mode 100644 yudao-vue-ui/components/jyf-parser/jyf-parser.vue create mode 100644 yudao-vue-ui/components/jyf-parser/libs/CssHandler.js create mode 100644 yudao-vue-ui/components/jyf-parser/libs/MpHtmlParser.js create mode 100644 yudao-vue-ui/components/jyf-parser/libs/config.js create mode 100644 yudao-vue-ui/components/jyf-parser/libs/handler.wxs create mode 100644 yudao-vue-ui/components/jyf-parser/libs/trees.vue create mode 100644 yudao-vue-ui/components/mescroll-uni/components/mescroll-down.css create mode 100644 yudao-vue-ui/components/mescroll-uni/components/mescroll-down.vue create mode 100644 yudao-vue-ui/components/mescroll-uni/components/mescroll-empty.vue create mode 100644 yudao-vue-ui/components/mescroll-uni/components/mescroll-empty1.vue create mode 100644 yudao-vue-ui/components/mescroll-uni/components/mescroll-top.vue create mode 100644 yudao-vue-ui/components/mescroll-uni/components/mescroll-up.css create mode 100644 yudao-vue-ui/components/mescroll-uni/components/mescroll-up.vue create mode 100644 yudao-vue-ui/components/mescroll-uni/mescroll-body.css create mode 100644 yudao-vue-ui/components/mescroll-uni/mescroll-body.vue create mode 100644 yudao-vue-ui/components/mescroll-uni/mescroll-mixins.js create mode 100644 yudao-vue-ui/components/mescroll-uni/mescroll-uni-option.js create mode 100644 yudao-vue-ui/components/mescroll-uni/mescroll-uni.css create mode 100644 yudao-vue-ui/components/mescroll-uni/mescroll-uni.js create mode 100644 yudao-vue-ui/components/mescroll-uni/mescroll-uni.vue create mode 100644 yudao-vue-ui/components/mescroll-uni/mixins/mescroll-comp.js create mode 100644 yudao-vue-ui/components/mescroll-uni/mixins/mescroll-more-item.js create mode 100644 yudao-vue-ui/components/mescroll-uni/mixins/mescroll-more.js create mode 100644 yudao-vue-ui/components/mescroll-uni/wxs/bounce.js create mode 100644 yudao-vue-ui/components/mescroll-uni/wxs/mixins.js create mode 100644 yudao-vue-ui/components/mescroll-uni/wxs/renderjs.js create mode 100644 yudao-vue-ui/components/mescroll-uni/wxs/wxs.wxs create mode 100644 yudao-vue-ui/components/mix-action-sheet/mix-action-sheet.vue create mode 100644 yudao-vue-ui/components/mix-button/mix-button.vue create mode 100644 yudao-vue-ui/components/mix-code/mix-code.vue create mode 100644 yudao-vue-ui/components/mix-empty/mix-empty.vue create mode 100644 yudao-vue-ui/components/mix-icon-loading/mix-icon-loading.vue create mode 100644 yudao-vue-ui/components/mix-list-cell/mix-list-cell.vue create mode 100644 yudao-vue-ui/components/mix-load-more/mix-load-more.vue create mode 100644 yudao-vue-ui/components/mix-loading/mix-loading.vue create mode 100644 yudao-vue-ui/components/mix-modal/mix-modal.vue create mode 100644 yudao-vue-ui/components/mix-nav-bar/mix-nav-bar.vue create mode 100644 yudao-vue-ui/components/mix-number-box/mix-number-box.vue create mode 100644 yudao-vue-ui/components/mix-price-view/mix-price-view.vue create mode 100644 yudao-vue-ui/components/mix-timeline/mix-timeline.vue create mode 100644 yudao-vue-ui/components/mix-upload-image/mix-upload-image.vue create mode 100644 yudao-vue-ui/components/number-keyboard/number-keyboard.vue create mode 100644 yudao-vue-ui/components/pay-password-keyboard/pay-password-keyboard.vue create mode 100644 yudao-vue-ui/components/uni-popup/popup.js create mode 100644 yudao-vue-ui/components/uni-popup/uni-popup.vue create mode 100644 yudao-vue-ui/components/uni-swipe-action-item/bindingx.js create mode 100644 yudao-vue-ui/components/uni-swipe-action-item/index.wxs create mode 100644 yudao-vue-ui/components/uni-swipe-action-item/mpalipay.js create mode 100644 yudao-vue-ui/components/uni-swipe-action-item/mpother.js create mode 100644 yudao-vue-ui/components/uni-swipe-action-item/mpwxs.js create mode 100644 yudao-vue-ui/components/uni-swipe-action-item/uni-swipe-action-item.vue create mode 100644 yudao-vue-ui/components/uni-swipe-action/uni-swipe-action.vue create mode 100644 yudao-vue-ui/components/uni-transition/uni-transition.vue create mode 100644 yudao-vue-ui/components/version-update/base-cloud-mobile.scss create mode 100644 yudao-vue-ui/components/version-update/static/airship.png create mode 100644 yudao-vue-ui/components/version-update/static/cloudLeft.png create mode 100644 yudao-vue-ui/components/version-update/static/cloudRight.png create mode 100644 yudao-vue-ui/components/version-update/static/login-wave.png create mode 100644 yudao-vue-ui/components/version-update/static/shipAir.png create mode 100644 yudao-vue-ui/components/version-update/static/shipGas.png create mode 100644 yudao-vue-ui/components/version-update/static/smallCloud.png create mode 100644 yudao-vue-ui/components/version-update/static/star.png create mode 100644 yudao-vue-ui/components/version-update/version-update.vue create mode 100644 yudao-vue-ui/index.html create mode 100644 yudao-vue-ui/main.js create mode 100644 yudao-vue-ui/manifest.json create mode 100644 yudao-vue-ui/pages.json create mode 100644 yudao-vue-ui/pages/index/index.vue create mode 100644 yudao-vue-ui/pages/tabbar/user.vue create mode 100644 yudao-vue-ui/static/backgroud/user.jpg create mode 100644 yudao-vue-ui/static/icon/arc.png create mode 100644 yudao-vue-ui/static/icon/default-avatar.png create mode 100644 yudao-vue-ui/static/logo.png create mode 100644 yudao-vue-ui/static/tarbar/index-active.png create mode 100644 yudao-vue-ui/static/tarbar/index.png create mode 100644 yudao-vue-ui/static/tarbar/logo.png create mode 100644 yudao-vue-ui/static/tarbar/product-active.png create mode 100644 yudao-vue-ui/static/tarbar/product.png create mode 100644 yudao-vue-ui/static/tarbar/ucenter-active.png create mode 100644 yudao-vue-ui/static/tarbar/ucenter.png create mode 100644 yudao-vue-ui/uni.scss diff --git a/yudao-vue-ui/.hbuilderx/launch.json b/yudao-vue-ui/.hbuilderx/launch.json new file mode 100644 index 0000000000..07c1d5fa59 --- /dev/null +++ b/yudao-vue-ui/.hbuilderx/launch.json @@ -0,0 +1,16 @@ +{ // launch.json 配置了启动调试时相关设置,configurations下节点名称可为 app-plus/h5/mp-weixin/mp-baidu/mp-alipay/mp-qq/mp-toutiao/mp-360/ + // launchtype项可配置值为local或remote, local代表前端连本地云函数,remote代表前端连云端云函数 + "version": "0.0", + "configurations": [{ + "default" : + { + "launchtype" : "local" + }, + "h5" : + { + "launchtype" : "local" + }, + "type" : "uniCloud" + } + ] +} diff --git a/yudao-vue-ui/App.vue b/yudao-vue-ui/App.vue new file mode 100644 index 0000000000..6b658ecf37 --- /dev/null +++ b/yudao-vue-ui/App.vue @@ -0,0 +1,19 @@ + + + \ No newline at end of file diff --git a/yudao-vue-ui/common/css/common.css b/yudao-vue-ui/common/css/common.css new file mode 100644 index 0000000000..2f22c237ef --- /dev/null +++ b/yudao-vue-ui/common/css/common.css @@ -0,0 +1,182 @@ +/* #ifndef APP-PLUS-NVUE */ +view, +scroll-view, +swiper, +swiper-item, +cover-view, +cover-image, +icon, +text, +rich-text, +progress, +button, +checkbox, +form, +input, +label, +radio, +slider, +switch, +textarea, +navigator, +audio, +camera, +image, +video { + box-sizing: border-box; +} +image{ + display: block; +} +text{ + line-height: 1; + /* font-family: Helvetica Neue, Helvetica, sans-serif; */ +} +button{ + padding: 0; + margin: 0; + background-color: rgba(0,0,0,0) !important; +} +button:after{ + border: 0; +} +.bottom-fill{ + height: constant(safe-area-inset-bottom); + height: env(safe-area-inset-bottom); +} +.fix-bot{ + box-sizing: content-box; + padding-bottom: constant(safe-area-inset-bottom); + padding-bottom: env(safe-area-inset-bottom); +} + +/* 边框 */ +.round{ + position: relative; + border-radius: 100rpx; +} +.round:after{ + content: ''; + position: absolute; + left: 0; + top: 0; + width: 200%; + height: 200%; + transform: scale(.5) translate(-50%,-50%); + border: 1px solid #878787; + border-radius: 100rpx; + box-sizing: border-box; +} +.b-b:after{ + position: absolute; + z-index: 3; + left: 0; + top: auto; + bottom: 0; + right: 0; + height: 0; + content: ''; + transform: scaleY(.5); + border-bottom: 1px solid #e0e0e0; +} +.b-t:before{ + position: absolute; + z-index: 3; + left: 0; + top: 0; + right: 0; + height: 0; + content: ''; + transform: scaleY(.5); + border-bottom: 1px solid #e5e5e5; +} +.b-r:after{ + position: absolute; + z-index: 3; + right: 0; + top: 0; + bottom: 0; + width: 0; + content: ''; + transform: scaleX(.5); + border-right: 1px solid #e5e5e5; +} +.b-l:before{ + position: absolute; + z-index: 3; + left: 0; + top: 0; + bottom: 0; + width: 0; + content: ''; + transform: scaleX(.5); + border-left: 1px solid #e5e5e5; +} +.b-b, .b-t, .b-l, .b-r{ + position: relative; +} +/* 点击态 */ +.hover-gray { + background: #fafafa !important; +} +.hover-dark { + background: #f0f0f0 !important; +} + +.hover-opacity { + opacity: 0.7; +} + +/* #endif */ + +.clamp { + /* #ifdef APP-PLUS-NVUE */ + lines: 1; + /* #endif */ + /* #ifndef APP-PLUS-NVUE */ + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + display: block; + /* #endif */ +} +.clamp2 { + /* #ifdef APP-PLUS-NVUE */ + lines: 2; + /* #endif */ + /* #ifndef APP-PLUS-NVUE */ + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 2; + overflow: hidden; + /* #endif */ +} + +/* 布局 */ +.row{ + /* #ifndef APP-PLUS-NVUE */ + display:flex; + /* #endif */ + flex-direction:row; + align-items: center; +} +.column{ + /* #ifndef APP-PLUS-NVUE */ + display:flex; + /* #endif */ + flex-direction: column; +} +.center{ + /* #ifndef APP-PLUS-NVUE */ + display:flex; + /* #endif */ + align-items: center; + justify-content: center; +} +.fill{ + flex: 1; +} +/* input */ +.placeholder{ + color: #999 !important; +} \ No newline at end of file diff --git a/yudao-vue-ui/common/css/icon.css b/yudao-vue-ui/common/css/icon.css new file mode 100644 index 0000000000..15a177608e --- /dev/null +++ b/yudao-vue-ui/common/css/icon.css @@ -0,0 +1,271 @@ +@font-face { + font-family: "mix-icon"; + font-weight: normal; + font-style: normal; + src: url('https://at.alicdn.com/t/font_1913318_2ui3nitf38x.ttf') format('truetype'); +} + +.mix-icon { + font-family: "mix-icon" !important; + font-size: 16px; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.icon-fanhui:before { + content: "\e7d5"; +} + +.icon-shoujihaoma:before { + content: "\e7ec"; +} + +.icon-close:before { + content: "\e60f"; +} + +.icon-xingbie-nv:before { + content: "\e60e"; +} + +.icon-wuliuyunshu:before { + content: "\e7ed"; +} + +.icon-jingpin:before { + content: "\e608"; +} + +.icon-zhangdanmingxi01:before { + content: "\e637"; +} + +.icon-tixian1:before { + content: "\e625"; +} + +.icon-chongzhi:before { + content: "\e605"; +} + +.icon-wodezhanghu_zijinjilu:before { + content: "\e615"; +} + +.icon-tixian:before { + content: "\e6ab"; +} + +.icon-qianbao:before { + content: "\e6c4"; +} + +.icon-guanbi1:before { + content: "\e61a"; +} + +.icon-daipingjia:before { + content: "\e604"; +} + +.icon-daifahuo:before { + content: "\e6bd"; +} + +.icon-yue:before { + content: "\e600"; +} + +.icon-wxpay:before { + content: "\e602"; +} + +.icon-alipay:before { + content: "\e603"; +} + +.icon-tishi:before { + content: "\e662"; +} + +.icon-shoucang-1:before { + content: "\e607"; +} + +.icon-gouwuche:before { + content: "\e657"; +} + +.icon-shoucang:before { + content: "\e645"; +} + +.icon-home:before { + content: "\e60c"; +} + +.icon-bangzhu1:before { + content: "\e63d"; +} + +.icon-xingxing:before { + content: "\e70b"; +} + +.icon-shuxiangliebiao:before { + content: "\e635"; +} + +.icon-hengxiangliebiao:before { + content: "\e636"; +} + +.icon-guanbi2:before { + content: "\e7be"; +} + +.icon-down:before { + content: "\e65c"; +} + +.icon-arrow-top:before { + content: "\e63e"; +} + +.icon-xiaoxi:before { + content: "\e634"; +} + +.icon-saoma:before { + content: "\e655"; +} + +.icon-dizhi1:before { + content: "\e618"; +} + +.icon-ditu-copy:before { + content: "\e609"; +} + +.icon-lajitong:before { + content: "\e682"; +} + +.icon-bianji:before { + content: "\e60d"; +} + +.icon-yanzhengma1:before { + content: "\e613"; +} + +.icon-yanjing:before { + content: "\e65b"; +} + +.icon-mima:before { + content: "\e628"; +} + +.icon-biyan:before { + content: "\e633"; +} + +.icon-iconfontweixin:before { + content: "\e611"; +} + +.icon-shouye:before { + content: "\e626"; +} + +.icon-daifukuan:before { + content: "\e68f"; +} + +.icon-pinglun-copy:before { + content: "\e612"; +} + +.icon-lishijilu:before { + content: "\e6b9"; +} + +.icon-shoucang_xuanzhongzhuangtai:before { + content: "\e6a9"; +} + +.icon-share:before { + content: "\e656"; +} + +.icon-shezhi1:before { + content: "\e61d"; +} + +.icon-shouhoutuikuan:before { + content: "\e631"; +} + +.icon-dizhi:before { + content: "\e614"; +} + +.icon-yishouhuo:before { + content: "\e71a"; +} + +.icon-xuanzhong:before { + content: "\e632"; +} + +.icon-xiangzuo:before { + content: "\e653"; +} + +.icon-iconfontxingxing:before { + content: "\e6b0"; +} + +.icon-jia2:before { + content: "\e60a"; +} + +.icon-sousuo:before { + content: "\e7ce"; +} + +.icon-xiala:before { + content: "\e644"; +} + +.icon-xia:before { + content: "\e62d"; +} + +.icon--jianhao:before { + content: "\e60b"; +} + +.icon-you:before { + content: "\e606"; +} + +.icon-yk_yuanquan:before { + content: "\e601"; +} + +.icon-xing:before { + content: "\e627"; +} + +.icon-guanbi:before { + content: "\e71d"; +} + +.icon-loading:before { + content: "\e646"; +} + diff --git a/yudao-vue-ui/components/jyf-parser/jyf-parser.vue b/yudao-vue-ui/components/jyf-parser/jyf-parser.vue new file mode 100644 index 0000000000..01484f9d26 --- /dev/null +++ b/yudao-vue-ui/components/jyf-parser/jyf-parser.vue @@ -0,0 +1,630 @@ + + + + + diff --git a/yudao-vue-ui/components/jyf-parser/libs/CssHandler.js b/yudao-vue-ui/components/jyf-parser/libs/CssHandler.js new file mode 100644 index 0000000000..8000377d11 --- /dev/null +++ b/yudao-vue-ui/components/jyf-parser/libs/CssHandler.js @@ -0,0 +1,97 @@ +const cfg = require('./config.js'), + isLetter = c => (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'); + +function CssHandler(tagStyle) { + var styles = Object.assign(Object.create(null), cfg.userAgentStyles); + for (var item in tagStyle) + styles[item] = (styles[item] ? styles[item] + ';' : '') + tagStyle[item]; + this.styles = styles; +} +CssHandler.prototype.getStyle = function(data) { + this.styles = new parser(data, this.styles).parse(); +} +CssHandler.prototype.match = function(name, attrs) { + var tmp, matched = (tmp = this.styles[name]) ? tmp + ';' : ''; + if (attrs.class) { + var items = attrs.class.split(' '); + for (var i = 0, item; item = items[i]; i++) + if (tmp = this.styles['.' + item]) + matched += tmp + ';'; + } + if (tmp = this.styles['#' + attrs.id]) + matched += tmp + ';'; + return matched; +} +module.exports = CssHandler; + +function parser(data, init) { + this.data = data; + this.floor = 0; + this.i = 0; + this.list = []; + this.res = init; + this.state = this.Space; +} +parser.prototype.parse = function() { + for (var c; c = this.data[this.i]; this.i++) + this.state(c); + return this.res; +} +parser.prototype.section = function() { + return this.data.substring(this.start, this.i); +} +// 状态机 +parser.prototype.Space = function(c) { + if (c == '.' || c == '#' || isLetter(c)) { + this.start = this.i; + this.state = this.Name; + } else if (c == '/' && this.data[this.i + 1] == '*') + this.Comment(); + else if (!cfg.blankChar[c] && c != ';') + this.state = this.Ignore; +} +parser.prototype.Comment = function() { + this.i = this.data.indexOf('*/', this.i) + 1; + if (!this.i) this.i = this.data.length; + this.state = this.Space; +} +parser.prototype.Ignore = function(c) { + if (c == '{') this.floor++; + else if (c == '}' && !--this.floor) this.state = this.Space; +} +parser.prototype.Name = function(c) { + if (cfg.blankChar[c]) { + this.list.push(this.section()); + this.state = this.NameSpace; + } else if (c == '{') { + this.list.push(this.section()); + this.Content(); + } else if (c == ',') { + this.list.push(this.section()); + this.Comma(); + } else if (!isLetter(c) && (c < '0' || c > '9') && c != '-' && c != '_') + this.state = this.Ignore; +} +parser.prototype.NameSpace = function(c) { + if (c == '{') this.Content(); + else if (c == ',') this.Comma(); + else if (!cfg.blankChar[c]) this.state = this.Ignore; +} +parser.prototype.Comma = function() { + while (cfg.blankChar[this.data[++this.i]]); + if (this.data[this.i] == '{') this.Content(); + else { + this.start = this.i--; + this.state = this.Name; + } +} +parser.prototype.Content = function() { + this.start = ++this.i; + if ((this.i = this.data.indexOf('}', this.i)) == -1) this.i = this.data.length; + var content = this.section(); + for (var i = 0, item; item = this.list[i++];) + if (this.res[item]) this.res[item] += ';' + content; + else this.res[item] = content; + this.list = []; + this.state = this.Space; +} diff --git a/yudao-vue-ui/components/jyf-parser/libs/MpHtmlParser.js b/yudao-vue-ui/components/jyf-parser/libs/MpHtmlParser.js new file mode 100644 index 0000000000..8911e36d3e --- /dev/null +++ b/yudao-vue-ui/components/jyf-parser/libs/MpHtmlParser.js @@ -0,0 +1,534 @@ +/** + * html 解析器 + * @tutorial https://github.com/jin-yufeng/Parser + * @version 20200719 + * @author JinYufeng + * @listens MIT + */ +const cfg = require('./config.js'), + blankChar = cfg.blankChar, + CssHandler = require('./CssHandler.js'), + windowWidth = uni.getSystemInfoSync().windowWidth; +var emoji; + +function MpHtmlParser(data, options = {}) { + this.attrs = {}; + this.CssHandler = new CssHandler(options.tagStyle, windowWidth); + this.data = data; + this.domain = options.domain; + this.DOM = []; + this.i = this.start = this.audioNum = this.imgNum = this.videoNum = 0; + options.prot = (this.domain || '').includes('://') ? this.domain.split('://')[0] : 'http'; + this.options = options; + this.state = this.Text; + this.STACK = []; + // 工具函数 + this.bubble = () => { + for (var i = this.STACK.length, item; item = this.STACK[--i];) { + if (cfg.richOnlyTags[item.name]) { + if (item.name == 'table' && !Object.hasOwnProperty.call(item, 'c')) item.c = 1; + return false; + } + item.c = 1; + } + return true; + } + this.decode = (val, amp) => { + var i = -1, + j, en; + while (1) { + if ((i = val.indexOf('&', i + 1)) == -1) break; + if ((j = val.indexOf(';', i + 2)) == -1) break; + if (val[i + 1] == '#') { + en = parseInt((val[i + 2] == 'x' ? '0' : '') + val.substring(i + 2, j)); + if (!isNaN(en)) val = val.substr(0, i) + String.fromCharCode(en) + val.substr(j + 1); + } else { + en = val.substring(i + 1, j); + if (cfg.entities[en] || en == amp) + val = val.substr(0, i) + (cfg.entities[en] || '&') + val.substr(j + 1); + } + } + return val; + } + this.getUrl = url => { + if (url[0] == '/') { + if (url[1] == '/') url = this.options.prot + ':' + url; + else if (this.domain) url = this.domain + url; + } else if (this.domain && url.indexOf('data:') != 0 && !url.includes('://')) + url = this.domain + '/' + url; + return url; + } + this.isClose = () => this.data[this.i] == '>' || (this.data[this.i] == '/' && this.data[this.i + 1] == '>'); + this.section = () => this.data.substring(this.start, this.i); + this.parent = () => this.STACK[this.STACK.length - 1]; + this.siblings = () => this.STACK.length ? this.parent().children : this.DOM; +} +MpHtmlParser.prototype.parse = function() { + if (emoji) this.data = emoji.parseEmoji(this.data); + for (var c; c = this.data[this.i]; this.i++) + this.state(c); + if (this.state == this.Text) this.setText(); + while (this.STACK.length) this.popNode(this.STACK.pop()); + return this.DOM; +} +// 设置属性 +MpHtmlParser.prototype.setAttr = function() { + var name = this.attrName.toLowerCase(), + val = this.attrVal; + if (cfg.boolAttrs[name]) this.attrs[name] = 'T'; + else if (val) { + if (name == 'src' || (name == 'data-src' && !this.attrs.src)) this.attrs.src = this.getUrl(this.decode(val, 'amp')); + else if (name == 'href' || name == 'style') this.attrs[name] = this.decode(val, 'amp'); + else if (name.substr(0, 5) != 'data-') this.attrs[name] = val; + } + this.attrVal = ''; + while (blankChar[this.data[this.i]]) this.i++; + if (this.isClose()) this.setNode(); + else { + this.start = this.i; + this.state = this.AttrName; + } +} +// 设置文本节点 +MpHtmlParser.prototype.setText = function() { + var back, text = this.section(); + if (!text) return; + text = (cfg.onText && cfg.onText(text, () => back = true)) || text; + if (back) { + this.data = this.data.substr(0, this.start) + text + this.data.substr(this.i); + let j = this.start + text.length; + for (this.i = this.start; this.i < j; this.i++) this.state(this.data[this.i]); + return; + } + if (!this.pre) { + // 合并空白符 + var tmp = []; + for (let i = text.length, c; c = text[--i];) + if (!blankChar[c] || (!blankChar[tmp[0]] && (c = ' '))) tmp.unshift(c); + text = tmp.join(''); + } + this.siblings().push({ + type: 'text', + text: this.decode(text) + }); +} +// 设置元素节点 +MpHtmlParser.prototype.setNode = function() { + var node = { + name: this.tagName.toLowerCase(), + attrs: this.attrs + }, + close = cfg.selfClosingTags[node.name]; + this.attrs = {}; + if (!cfg.ignoreTags[node.name]) { + // 处理属性 + var attrs = node.attrs, + style = this.CssHandler.match(node.name, attrs, node) + (attrs.style || ''), + styleObj = {}; + if (attrs.id) { + if (this.options.compress & 1) attrs.id = void 0; + else if (this.options.useAnchor) this.bubble(); + } + if ((this.options.compress & 2) && attrs.class) attrs.class = void 0; + switch (node.name) { + case 'a': + case 'ad': // #ifdef APP-PLUS + case 'iframe': + // #endif + this.bubble(); + break; + case 'font': + if (attrs.color) { + styleObj['color'] = attrs.color; + attrs.color = void 0; + } + if (attrs.face) { + styleObj['font-family'] = attrs.face; + attrs.face = void 0; + } + if (attrs.size) { + var size = parseInt(attrs.size); + if (size < 1) size = 1; + else if (size > 7) size = 7; + var map = ['xx-small', 'x-small', 'small', 'medium', 'large', 'x-large', 'xx-large']; + styleObj['font-size'] = map[size - 1]; + attrs.size = void 0; + } + break; + case 'embed': + // #ifndef APP-PLUS + var src = node.attrs.src || '', + type = node.attrs.type || ''; + if (type.includes('video') || src.includes('.mp4') || src.includes('.3gp') || src.includes('.m3u8')) + node.name = 'video'; + else if (type.includes('audio') || src.includes('.m4a') || src.includes('.wav') || src.includes('.mp3') || src.includes( + '.aac')) + node.name = 'audio'; + else break; + if (node.attrs.autostart) + node.attrs.autoplay = 'T'; + node.attrs.controls = 'T'; + // #endif + // #ifdef APP-PLUS + this.bubble(); + break; + // #endif + case 'video': + case 'audio': + if (!attrs.id) attrs.id = node.name + (++this[`${node.name}Num`]); + else this[`${node.name}Num`]++; + if (node.name == 'video') { + if (this.videoNum > 3) + node.lazyLoad = 1; + if (attrs.width) { + styleObj.width = parseFloat(attrs.width) + (attrs.width.includes('%') ? '%' : 'px'); + attrs.width = void 0; + } + if (attrs.height) { + styleObj.height = parseFloat(attrs.height) + (attrs.height.includes('%') ? '%' : 'px'); + attrs.height = void 0; + } + } + attrs.source = []; + if (attrs.src) { + attrs.source.push(attrs.src); + attrs.src = void 0; + } + this.bubble(); + break; + case 'td': + case 'th': + if (attrs.colspan || attrs.rowspan) + for (var k = this.STACK.length, item; item = this.STACK[--k];) + if (item.name == 'table') { + item.c = void 0; + break; + } + } + if (attrs.align) { + styleObj['text-align'] = attrs.align; + attrs.align = void 0; + } + // 压缩 style + var styles = style.split(';'); + style = ''; + for (var i = 0, len = styles.length; i < len; i++) { + var info = styles[i].split(':'); + if (info.length < 2) continue; + let key = info[0].trim().toLowerCase(), + value = info.slice(1).join(':').trim(); + if (value.includes('-webkit') || value.includes('-moz') || value.includes('-ms') || value.includes('-o') || value.includes( + 'safe')) + style += `;${key}:${value}`; + else if (!styleObj[key] || value.includes('import') || !styleObj[key].includes('import')) + styleObj[key] = value; + } + if (node.name == 'img') { + if (attrs.src && !attrs.ignore) { + if (this.bubble()) + attrs.i = (this.imgNum++).toString(); + else attrs.ignore = 'T'; + } + if (attrs.ignore) { + style += ';-webkit-touch-callout:none'; + styleObj['max-width'] = '100%'; + } + var width; + if (styleObj.width) width = styleObj.width; + else if (attrs.width) width = attrs.width.includes('%') ? attrs.width : attrs.width + 'px'; + if (width) { + styleObj.width = width; + attrs.width = '100%'; + if (parseInt(width) > windowWidth) { + styleObj.height = ''; + if (attrs.height) attrs.height = void 0; + } + } + if (styleObj.height) { + attrs.height = styleObj.height; + styleObj.height = ''; + } else if (attrs.height && !attrs.height.includes('%')) + attrs.height += 'px'; + } + for (var key in styleObj) { + var value = styleObj[key]; + if (!value) continue; + if (key.includes('flex') || key == 'order' || key == 'self-align') node.c = 1; + // 填充链接 + if (value.includes('url')) { + var j = value.indexOf('('); + if (j++ != -1) { + while (value[j] == '"' || value[j] == "'" || blankChar[value[j]]) j++; + value = value.substr(0, j) + this.getUrl(value.substr(j)); + } + } + // 转换 rpx + else if (value.includes('rpx')) + value = value.replace(/[0-9.]+\s*rpx/g, $ => parseFloat($) * windowWidth / 750 + 'px'); + else if (key == 'white-space' && value.includes('pre') && !close) + this.pre = node.pre = true; + style += `;${key}:${value}`; + } + style = style.substr(1); + if (style) attrs.style = style; + if (!close) { + node.children = []; + if (node.name == 'pre' && cfg.highlight) { + this.remove(node); + this.pre = node.pre = true; + } + this.siblings().push(node); + this.STACK.push(node); + } else if (!cfg.filter || cfg.filter(node, this) != false) + this.siblings().push(node); + } else { + if (!close) this.remove(node); + else if (node.name == 'source') { + var parent = this.parent(); + if (parent && (parent.name == 'video' || parent.name == 'audio') && node.attrs.src) + parent.attrs.source.push(node.attrs.src); + } else if (node.name == 'base' && !this.domain) this.domain = node.attrs.href; + } + if (this.data[this.i] == '/') this.i++; + this.start = this.i + 1; + this.state = this.Text; +} +// 移除标签 +MpHtmlParser.prototype.remove = function(node) { + var name = node.name, + j = this.i; + // 处理 svg + var handleSvg = () => { + var src = this.data.substring(j, this.i + 1); + if (!node.attrs.xmlns) src = ' xmlns="http://www.w3.org/2000/svg"' + src; + var i = j; + while (this.data[j] != '<') j--; + src = this.data.substring(j, i).replace("viewbox", "viewBox") + src; + var parent = this.parent(); + if (node.attrs.width == '100%' && parent && (parent.attrs.style || '').includes('inline')) + parent.attrs.style = 'width:300px;max-width:100%;' + parent.attrs.style; + this.siblings().push({ + name: 'img', + attrs: { + src: 'data:image/svg+xml;utf8,' + src.replace(/#/g, '%23'), + style: (/vertical[^;]+/.exec(node.attrs.style) || []).shift(), + ignore: 'T' + } + }) + } + if (node.name == 'svg' && this.data[j] == '/') return handleSvg(this.i++); + while (1) { + if ((this.i = this.data.indexOf('', this.i)) == -1) this.i = this.data.length; + if (name == 'svg') handleSvg(); + return; + } + } +} +// 节点出栈处理 +MpHtmlParser.prototype.popNode = function(node) { + // 空白符处理 + if (node.pre) { + node.pre = this.pre = void 0; + for (let i = this.STACK.length; i--;) + if (this.STACK[i].pre) + this.pre = true; + } + var siblings = this.siblings(), + len = siblings.length, + childs = node.children; + if (node.name == 'head' || (cfg.filter && cfg.filter(node, this) == false)) + return siblings.pop(); + var attrs = node.attrs; + // 替换一些标签名 + if (cfg.blockTags[node.name]) node.name = 'div'; + else if (!cfg.trustTags[node.name]) node.name = 'span'; + // 去除块标签前后空串 + if (node.name == 'div' || node.name == 'p' || node.name[0] == 't') { + if (len > 1 && siblings[len - 2].text == ' ') + siblings.splice(--len - 1, 1); + if (childs.length && childs[childs.length - 1].text == ' ') + childs.pop(); + } + // 处理列表 + if (node.c && (node.name == 'ul' || node.name == 'ol')) { + if ((node.attrs.style || '').includes('list-style:none')) { + for (let i = 0, child; child = childs[i++];) + if (child.name == 'li') + child.name = 'div'; + } else if (node.name == 'ul') { + var floor = 1; + for (let i = this.STACK.length; i--;) + if (this.STACK[i].name == 'ul') floor++; + if (floor != 1) + for (let i = childs.length; i--;) + childs[i].floor = floor; + } else { + for (let i = 0, num = 1, child; child = childs[i++];) + if (child.name == 'li') { + child.type = 'ol'; + child.num = ((num, type) => { + if (type == 'a') return String.fromCharCode(97 + (num - 1) % 26); + if (type == 'A') return String.fromCharCode(65 + (num - 1) % 26); + if (type == 'i' || type == 'I') { + num = (num - 1) % 99 + 1; + var one = ['I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX'], + ten = ['X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC'], + res = (ten[Math.floor(num / 10) - 1] || '') + (one[num % 10 - 1] || ''); + if (type == 'i') return res.toLowerCase(); + return res; + } + return num; + })(num++, attrs.type) + '.'; + } + } + } + // 处理表格的边框 + if (node.name == 'table') { + var padding = attrs.cellpadding, + spacing = attrs.cellspacing, + border = attrs.border; + if (node.c) { + this.bubble(); + attrs.style = (attrs.style || '') + ';display:table'; + if (!padding) padding = 2; + if (!spacing) spacing = 2; + } + if (border) attrs.style = `border:${border}px solid gray;${attrs.style || ''}`; + if (spacing) attrs.style = `border-spacing:${spacing}px;${attrs.style || ''}`; + if (border || padding || node.c) + (function f(ns) { + for (var i = 0, n; n = ns[i]; i++) { + if (n.type == 'text') continue; + var style = n.attrs.style || ''; + if (node.c && n.name[0] == 't') { + n.c = 1; + style += ';display:table-' + (n.name == 'th' || n.name == 'td' ? 'cell' : (n.name == 'tr' ? 'row' : 'row-group')); + } + if (n.name == 'th' || n.name == 'td') { + if (border) style = `border:${border}px solid gray;${style}`; + if (padding) style = `padding:${padding}px;${style}`; + } else f(n.children || []); + if (style) n.attrs.style = style; + } + })(childs) + if (this.options.autoscroll) { + var table = Object.assign({}, node); + node.name = 'div'; + node.attrs = { + style: 'overflow:scroll' + } + node.children = [table]; + } + } + this.CssHandler.pop && this.CssHandler.pop(node); + // 自动压缩 + if (node.name == 'div' && !Object.keys(attrs).length && childs.length == 1 && childs[0].name == 'div') + siblings[len - 1] = childs[0]; +} +// 状态机 +MpHtmlParser.prototype.Text = function(c) { + if (c == '<') { + var next = this.data[this.i + 1], + isLetter = c => (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'); + if (isLetter(next)) { + this.setText(); + this.start = this.i + 1; + this.state = this.TagName; + } else if (next == '/') { + this.setText(); + if (isLetter(this.data[++this.i + 1])) { + this.start = this.i + 1; + this.state = this.EndTag; + } else this.Comment(); + } else if (next == '!' || next == '?') { + this.setText(); + this.Comment(); + } + } +} +MpHtmlParser.prototype.Comment = function() { + var key; + if (this.data.substring(this.i + 2, this.i + 4) == '--') key = '-->'; + else if (this.data.substring(this.i + 2, this.i + 9) == '[CDATA[') key = ']]>'; + else key = '>'; + if ((this.i = this.data.indexOf(key, this.i + 2)) == -1) this.i = this.data.length; + else this.i += key.length - 1; + this.start = this.i + 1; + this.state = this.Text; +} +MpHtmlParser.prototype.TagName = function(c) { + if (blankChar[c]) { + this.tagName = this.section(); + while (blankChar[this.data[this.i]]) this.i++; + if (this.isClose()) this.setNode(); + else { + this.start = this.i; + this.state = this.AttrName; + } + } else if (this.isClose()) { + this.tagName = this.section(); + this.setNode(); + } +} +MpHtmlParser.prototype.AttrName = function(c) { + if (c == '=' || blankChar[c] || this.isClose()) { + this.attrName = this.section(); + if (blankChar[c]) + while (blankChar[this.data[++this.i]]); + if (this.data[this.i] == '=') { + while (blankChar[this.data[++this.i]]); + this.start = this.i--; + this.state = this.AttrValue; + } else this.setAttr(); + } +} +MpHtmlParser.prototype.AttrValue = function(c) { + if (c == '"' || c == "'") { + this.start++; + if ((this.i = this.data.indexOf(c, this.i + 1)) == -1) return this.i = this.data.length; + this.attrVal = this.section(); + this.i++; + } else { + for (; !blankChar[this.data[this.i]] && !this.isClose(); this.i++); + this.attrVal = this.section(); + } + this.setAttr(); +} +MpHtmlParser.prototype.EndTag = function(c) { + if (blankChar[c] || c == '>' || c == '/') { + var name = this.section().toLowerCase(); + for (var i = this.STACK.length; i--;) + if (this.STACK[i].name == name) break; + if (i != -1) { + var node; + while ((node = this.STACK.pop()).name != name) this.popNode(node); + this.popNode(node); + } else if (name == 'p' || name == 'br') + this.siblings().push({ + name, + attrs: {} + }); + this.i = this.data.indexOf('>', this.i); + this.start = this.i + 1; + if (this.i == -1) this.i = this.data.length; + else this.state = this.Text; + } +} +module.exports = MpHtmlParser; diff --git a/yudao-vue-ui/components/jyf-parser/libs/config.js b/yudao-vue-ui/components/jyf-parser/libs/config.js new file mode 100644 index 0000000000..1cfc111b54 --- /dev/null +++ b/yudao-vue-ui/components/jyf-parser/libs/config.js @@ -0,0 +1,93 @@ +/* 配置文件 */ +// #ifdef MP-WEIXIN +const canIUse = wx.canIUse('editor'); // 高基础库标识,用于兼容 +// #endif +module.exports = { + // 出错占位图 + errorImg: null, + // 过滤器函数 + filter: null, + // 代码高亮函数 + highlight: null, + // 文本处理函数 + onText: null, + // 实体编码列表 + entities: { + quot: '"', + apos: "'", + semi: ';', + nbsp: '\xA0', + ensp: '\u2002', + emsp: '\u2003', + ndash: '–', + mdash: '—', + middot: '·', + lsquo: '‘', + rsquo: '’', + ldquo: '“', + rdquo: '”', + bull: '•', + hellip: '…' + }, + blankChar: makeMap(' ,\xA0,\t,\r,\n,\f'), + boolAttrs: makeMap('allowfullscreen,autoplay,autostart,controls,ignore,loop,muted'), + // 块级标签,将被转为 div + blockTags: makeMap('address,article,aside,body,caption,center,cite,footer,header,html,nav,section' + ( + // #ifdef MP-WEIXIN + canIUse ? '' : + // #endif + ',pre')), + // 将被移除的标签 + ignoreTags: makeMap( + 'area,base,canvas,frame,input,link,map,meta,param,script,source,style,svg,textarea,title,track,wbr' + // #ifdef MP-WEIXIN + + (canIUse ? ',rp' : '') + // #endif + // #ifndef APP-PLUS + + ',iframe' + // #endif + ), + // 只能被 rich-text 显示的标签 + richOnlyTags: makeMap('a,colgroup,fieldset,legend,table' + // #ifdef MP-WEIXIN + + (canIUse ? ',bdi,bdo,caption,rt,ruby' : '') + // #endif + ), + // 自闭合的标签 + selfClosingTags: makeMap( + 'area,base,br,col,circle,ellipse,embed,frame,hr,img,input,line,link,meta,param,path,polygon,rect,source,track,use,wbr' + ), + // 信任的标签 + trustTags: makeMap( + 'a,abbr,ad,audio,b,blockquote,br,code,col,colgroup,dd,del,dl,dt,div,em,fieldset,h1,h2,h3,h4,h5,h6,hr,i,img,ins,label,legend,li,ol,p,q,source,span,strong,sub,sup,table,tbody,td,tfoot,th,thead,tr,title,ul,video' + // #ifdef MP-WEIXIN + + (canIUse ? ',bdi,bdo,caption,pre,rt,ruby' : '') + // #endif + // #ifdef APP-PLUS + + ',embed,iframe' + // #endif + ), + // 默认的标签样式 + userAgentStyles: { + address: 'font-style:italic', + big: 'display:inline;font-size:1.2em', + blockquote: 'background-color:#f6f6f6;border-left:3px solid #dbdbdb;color:#6c6c6c;padding:5px 0 5px 10px', + caption: 'display:table-caption;text-align:center', + center: 'text-align:center', + cite: 'font-style:italic', + dd: 'margin-left:40px', + mark: 'background-color:yellow', + pre: 'font-family:monospace;white-space:pre;overflow:scroll', + s: 'text-decoration:line-through', + small: 'display:inline;font-size:0.8em', + u: 'text-decoration:underline' + } +} + +function makeMap(str) { + var map = Object.create(null), + list = str.split(','); + for (var i = list.length; i--;) + map[list[i]] = true; + return map; +} diff --git a/yudao-vue-ui/components/jyf-parser/libs/handler.wxs b/yudao-vue-ui/components/jyf-parser/libs/handler.wxs new file mode 100644 index 0000000000..d3b1aaabec --- /dev/null +++ b/yudao-vue-ui/components/jyf-parser/libs/handler.wxs @@ -0,0 +1,22 @@ +var inline = { + abbr: 1, + b: 1, + big: 1, + code: 1, + del: 1, + em: 1, + i: 1, + ins: 1, + label: 1, + q: 1, + small: 1, + span: 1, + strong: 1, + sub: 1, + sup: 1 +} +module.exports = { + use: function(item) { + return !item.c && !inline[item.name] && (item.attrs.style || '').indexOf('display:inline') == -1 + } +} diff --git a/yudao-vue-ui/components/jyf-parser/libs/trees.vue b/yudao-vue-ui/components/jyf-parser/libs/trees.vue new file mode 100644 index 0000000000..8232aac141 --- /dev/null +++ b/yudao-vue-ui/components/jyf-parser/libs/trees.vue @@ -0,0 +1,500 @@ +