提交 d8bc1387 authored 作者: liuhaiquan's avatar liuhaiquan

Merge remote-tracking branch 'origin/test' into test

...@@ -27,4 +27,5 @@ mvnw.cmd ...@@ -27,4 +27,5 @@ mvnw.cmd
/nbbuild/ /nbbuild/
/dist/ /dist/
/nbdist/ /nbdist/
/.nb-gradle/ /.nb-gradle/
\ No newline at end of file /nbsdk/
...@@ -64,8 +64,8 @@ public class IntegralTruckVO { ...@@ -64,8 +64,8 @@ public class IntegralTruckVO {
return Arrays.asList( return Arrays.asList(
new IntegralItem("运单完成积分", orderChildCompleteIntegral), new IntegralItem("运单完成积分", orderChildCompleteIntegral),
new IntegralItem("平台补偿积分", platformCompensationIntegral), new IntegralItem("平台补偿积分", platformCompensationIntegral),
new IntegralItem("运单取消积分", orderChildCancelIntegral), new IntegralItem("运单取消扣减", orderChildCancelIntegral),
new IntegralItem("运单超时积分", orderChildTimeoutIntegral), new IntegralItem("运单超时扣减", orderChildTimeoutIntegral),
new IntegralItem("信息上报积分", reportIntegral) new IntegralItem("信息上报积分", reportIntegral)
); );
} }
......
...@@ -240,11 +240,31 @@ ...@@ -240,11 +240,31 @@
<artifactId>log-spring-boot-starter</artifactId> <artifactId>log-spring-boot-starter</artifactId>
</dependency> </dependency>
<!-- <dependency>-->
<!-- <groupId>com.nbcb.cz</groupId>-->
<!-- <artifactId>openBasicSDK</artifactId>-->
<!-- <version>2.1.230630</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>com.nbcb.cz</groupId>-->
<!-- <artifactId>openBasicSDK</artifactId>-->
<!-- <version>2.1.230630</version>-->
<!-- <scope>system</scope>-->
<!-- <systemPath>${pom.basedir}/libs/openBasicSDK-2.1.230630.jar</systemPath>-->
<!-- </dependency>-->
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId> <artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency> </dependency>
<dependency>
<groupId>com.nbopen</groupId>
<artifactId>openBasicSDK</artifactId>
<version>1.7.0</version>
<scope>system</scope>
<systemPath>${pom.basedir}/libs/openBasicSDK-1.7.0.jar</systemPath>
</dependency>
</dependencies> </dependencies>
......
//package com.clx.performance.controller.temp;
//
//import com.alibaba.fastjson.JSON;
//import com.clx.performance.service.TempService;
//import com.clx.performance.vo.pc.child.OrderChildLineStatisticsVO;
//import com.msl.common.result.Result;
//import com.nbcb.bouncycastle.util.encoders.Base64;
//import com.nbcb.sdk.OpenSDK;
//import com.nbcb.sdk.file.FileUploadRequest;
//import io.swagger.annotations.ApiOperation;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.data.repository.init.ResourceReader;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.RequestMethod;
//import org.springframework.web.bind.annotation.RestController;
//
//import java.io.FileOutputStream;
//import java.io.IOException;
//import java.io.InputStream;
//import java.math.BigDecimal;
//import java.util.HashMap;
//
//
///**
// * @Author: aiqingguo
// * @Description: 临时接口
// * @Date: 2023-8-21 12:10:16
// * @Version: 1.0
// */
//@Slf4j
//@RestController
//@RequestMapping(value="/temp/bank")
//public class TempBankController {
//
// @Autowired
// private TempService tempService;
//
// @ApiOperation(value = "test", notes = "<br>By:艾庆国")
// @RequestMapping(value = "/test", method = RequestMethod.POST)
// public Result<OrderChildLineStatisticsVO> test() throws Exception {
//
// bankTest();
//
//
// return Result.ok();
// }
//
// static void bankTest() throws Exception {
// String priKey = "MIGTAgEAMBMGByqGSM49AgEGCCqBHM9VAYItBHkwdwIBAQQgTt6OadouxxxSDg/0SZdOIBqtnFGKrpwmL+quEUf+hfSgCgYIKoEcz1UBgi2hRANCAAQGHNN2NO7btp+w1248yk98E0asGC8sG0bmIzdom4M0xp3vc4IfXjmZ8omUz4oVcjzAuyMSSpJM6uPLcU1SH4HZ";
//
// InputStream inputStream = TempBankController.class.getClassLoader().getResourceAsStream("config.properties");
// if (inputStream != null) {
// log.info("存在");
//
// OpenSDK.init(inputStream, priKey);
//
//// singleTransfer();
////
//// querySingleTransferResult();
//
//
// unionPayDirectOrder();
//
// }
// else{
// log.info("文件不存在");
// }
//
// }
//
// static String singleTransfer() throws Exception {
//
// HashMap<String, Object> map = new HashMap();
// HashMap<String, Object> data = new HashMap();
// map.put("Data", data);
//
// data.put("custId", "0000112058"); //客户号 必填
// data.put("serialNo", "2023112300000002"); //交易流水号 必填
// data.put("corpCode", "1000"); //单位代码 必填
// data.put("payAcc", "40010122000156763"); //付款账号 必填
// data.put("rcvAcc", "6223160014441539"); //收款账号 必填
//// data.put("rcvBankName", ""); //收款方行名
//// data.put("rcvBankNo", ""); //收款方联行号
// data.put("rcvName", "石佛寺"); //收款户名 必填
// data.put("purpose", "001-支付货款"); //用途 必填
//// data.put("remark", ""); //备注
//// data.put("isSubscribe", "0"); //是否预约支付
//// data.put("difBank", "1"); //是否同行转账
//// data.put("areaSign", "1"); //同城异地标识
// data.put("amt", new BigDecimal("100")); //金额 必填
//// data.put("wishPayTime", ""); //预约转账时间
//// data.put("isTellRcv", "0"); //是否短信通知收款人
//// data.put("rcvMobile", ""); //收款方手机号
//// data.put("isForIndividual", "0"); //对公对私标识
//// data.put("subaAccountSerial", ""); //统计编号
//// data.put("itemCode", ""); //预算科目代码
//// data.put("budgetMoney", ""); //预算执行金额
//// data.put("subjectName", ""); //智能财报科目
//// data.put("payType", "0"); //支付方式
//// data.put("remarkAcc", ""); //代理/联动账号
//// data.put("erpRemark1", ""); //ERP 备注 1
//// data.put("erpRemark2", ""); //ERP 备注 1
//// data.put("erpRemark3", ""); //ERP 备注 1
//// data.put("erpRemark4", ""); //ERP 备注 1
//
// String res1 = OpenSDK.send("tmsSettle", "singleTransfer", JSON.toJSONString(map));
// log.info("单笔转账接口:{}" , res1);
//
// return res1;
// }
//
// static String querySingleTransferResult() throws Exception {
// HashMap<String, Object> map = new HashMap();
// HashMap<String, Object> data = new HashMap();
// map.put("Data", data);
//
// data.put("custId", "0000112058"); //客户号 必填
// data.put("serialNo", "2023112300000002"); //交易流水号 必填
//
// String res1 = OpenSDK.send("tmsSettle", "querySingleTransferResult", JSON.toJSONString(map));
// log.info("单笔查证接口:{}" , res1);
//
// return res1;
// }
//
//
// /**
// * 易付通
// */
// static String unionPayDirectOrder() throws Exception {
//
// HashMap<String, Object> map = new HashMap();
// HashMap<String, Object> data = new HashMap();
// map.put("Data", data);
//
// data.put("transId", "IP01"); //交易识别码 必填
// data.put("merId", "2023112300000002"); //商户号 必填
// data.put("merSeqNo", "2023112300000001"); //商户流水 必填
// data.put("merDtTm", "2023-11-24 11:00:00"); //商户时间 必填
// data.put("trxAmt", "1.23"); //订单金额 必填
// data.put("orderDesc", "采购"); //订单详情 必填
// data.put("productNam", "小黄鱼"); //商品名称 必填
// data.put("productId", "001"); //商品编号 必填
// data.put("productNum", "1"); //商品数量 必填
//
// data.put("payAcctNo", "6223161100110442"); //付款账号 必填
// data.put("payAcctNm", "刘晓琴"); //付款户名 必填
// data.put("bankType", "00"); //账户类型 必填
// data.put("payAcctOpenBankId", "313332082914"); //开户行号 必填
//// data.put("mobilePhone", "13000000000"); //手机号
//
// String res1 = OpenSDK.send("YFT", "unionPayDirectOrder", JSON.toJSONString(map));
// log.info("银联订单支付收款模式接口:{}" , res1);
//
// return res1;
// }
//
//
// public static void main(String[] args) throws Exception {
//
// bankTest();
//
//// try {
//// callBySepJson();
//// //demo.callByBean();
//// } catch (Exception e) {
//// e.printStackTrace();
//// }
// }
//
// /**
// * @throws Exception
// */
// public static void callBySepJson() throws Exception {
// String priKey = "MIGTAgEAMBMGByqGSM49AgEGCCqBHM9VAYItBHkwdwIBAQQgTt6OadouxxxSDg/0SZdOIBqtnFGKrpwmL+quEUf+hfSgCgYIKoEcz1UBgi2hRANCAAQGHNN2NO7btp+w1248yk98E0asGC8sG0bmIzdom4M0xp3vc4IfXjmZ8omUz4oVcjzAuyMSSpJM6uPLcU1SH4HZ";
//
// System.out.println(TempBankController.class.getClassLoader().getResource("").getPath());
//
// OpenSDK.init(TempBankController.class.getClassLoader().getResource("config.properties").getPath(), priKey);
//
//
// /*
// * dataJson 是放置具体交易请求业务报文,dataJson报文结构如下: {"Data":{"app_name":"1"}}
// */
//// String dataJson="";
//// // 发送请求并获取响应(第一个填入productId,第二个填入serviceId)
//// String res = OpenSDK.send("", "", dataJson);
//// if (log.isDebugEnabled()) {
//// log.debug("res: " + res);
//// }
//
// //上传文件
// String res1 = OpenSDK.sendFile("", "open-filegateway",TempBankController.class.getClassLoader().getResource("bank.txt").getPath());
//
// System.out.println(res1);
// //下载文件
//// String res = OpenSDK.sendFileDownload( "productId","fcd47917-bc9c-4c11-b217-f7095f5384fe","D:\\ab\\test");
// }
//
// /**
// * JavaBean方式(通过产品SDK提供的JavaBean)
// *
// * @throws Exception
// */
// public void callByBean() throws Exception {
//
// }
//
//}
package com.clx.performance.controller.temp;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.clx.performance.service.TempService;
import com.clx.performance.utils.LocalDateTimeUtils;
import com.clx.performance.vo.pc.child.OrderChildLineStatisticsVO;
import com.msl.common.result.Result;
import com.nbopen.api.*;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.ClassPathResource;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import java.io.IOException;
import java.io.InputStream;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.HashMap;
/**
* @Author: aiqingguo
* @Description: 临时接口
* @Date: 2023-8-21 12:10:16
* @Version: 1.0
*/
@Slf4j
@RestController
@RequestMapping(value="/temp/yftbank")
public class TempYftBankController {
@Autowired
private TempService tempService;
@ApiOperation(value = "test", notes = "<br>By:艾庆国")
@RequestMapping(value = "/test", method = RequestMethod.POST)
public Result<OrderChildLineStatisticsVO> test() throws Exception {
bankTest();
return Result.ok();
}
@ApiOperation(value = "test1", notes = "<br>By:艾庆国")
@RequestMapping(value = "/test1", method = RequestMethod.POST)
public Result<OrderChildLineStatisticsVO> test1() throws Exception {
bankTest1();
return Result.ok();
}
@ApiOperation(value = "queryOrder", notes = "<br>By:艾庆国")
@RequestMapping(value = "/queryOrderTest", method = RequestMethod.POST)
public Result queryOrderTest(String merSeqNo) throws Exception {
queryOrder(merSeqNo);
return Result.ok();
}
/**
* 订单支付模式
*/
public static void bankTest() throws Exception {
ClassPathResource classPathResource = new ClassPathResource("bank/config-nbbank.json");
InputStream inputStream = null;
try {
inputStream = classPathResource.getInputStream();
boolean initResult = NBOpenSDK.init(inputStream);
log.info("NBSDK初始化状态:{}", initResult);
log.info("sdk版本信息:{}", NBOpenSDK.getVersionInfo());
} catch (IOException e) {
e.printStackTrace();
}
unionPayDirectOrder();
}
/**
* 订单支付收款模式
* 商户号:EFT33021200556315
* 银行转账:86041110000075918(户名:客户客户)
* 订单支付:结算账号(86041110000075926(户名:客户客户))
* 响应结果:
* {
* "data": {
* "errorCode": "000000",
* "errorMsg": "成功",
* "frontUrl": "",
* "merId": "EFT33021200556315",
* "merSeqNo": "20231129133913",
* "signData": "",
* "transSeqNo": "2023112913391406547689VYvNioNz"
* },
* "head": {
* "rqsJrnlNo": "14414965925389704",
* "rspCode": "000000",
* "rspDate": "2023-11-29",
* "rspMsg": "交易成功",
* "rspTime": "13:39:16:035"
* }
* }
*/
private static void unionPayDirectOrder() {
try {
JSONObject jsonObject = new JSONObject();
jsonObject.put("transId", "IP01"); //交易识别码 必填
jsonObject.put("merId", "EFT33021200556315"); //商户号 必填
jsonObject.put("merSeqNo", LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); //商户流水 必填
jsonObject.put("merDtTm", LocalDateTimeUtils.formatTime()); //商户时间 必填
jsonObject.put("trxAmt", "1.23"); //订单金额 必填
jsonObject.put("orderDesc", "采购"); //订单详情 必填
jsonObject.put("productName", "小黄鱼"); //商品名称 必填
jsonObject.put("productId", "001"); //商品编号 必填
jsonObject.put("productNum", "1"); //商品数量 必填
jsonObject.put("payAcctNo", "86041110000075926"); //付款账号 必填
jsonObject.put("payAcctNm", "客户客户"); //付款户名 必填
jsonObject.put("bankType", "00"); //账户类型 必填
jsonObject.put("payAcctOpenBankId", "313332082914"); //开户行号 必填
// jsonObject.put("mobilePhone", "13000000000"); //手机号
HashMap<String,String> httpHeader = new HashMap<>();
RequestApiData requestApiData = new RequestApiData();
requestApiData.setAppkey("77667c76_3503_4c04_95f7_fc10938c7942");
requestApiData.setData(jsonObject);
requestApiData.setProductId("YFT");
requestApiData.setServiceId("unionPayDirectOrder");
requestApiData.setHttpHeader(httpHeader);
RequestHead requestHead = new RequestHead();
requestHead.setRqsJrnlNo(NBOpenSDK.getRandom());
SDKRequest request = new SDKRequest();
request.setData(requestApiData);
request.setHead(requestHead);
log.info("SDK请求内容unionPayDirectOrder: "+ JSON.toJSONString(request));
SDKResponse result = NBOpenSDK.send(request);
log.info("SDK响应结果unionPayDirectOrder: "+JSON.toJSONString(result));
// queryOrder(JSON.parseObject(JSON.toJSONString(result)).getJSONObject("data").getString("merSeqNo"));
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 结果查询
* 商户号:EFT33021200556315
* 返回结果: 90:交易不存在
* {
* "data": {
* "chargesAmt": "",
* "chargesType": "",
* "clearDate": "",
* "errorCode": "000000",
* "errorMsg": "成功",
* "merId": "EFT33021200556315",
* "merSeqNo": "20231129135754",
* "payeeAcctBankName": "",
* "payeeAcctBankNo": "",
* "payeeAcctName": "",
* "payeeAcctNo": "",
* "payMethod": "",
* "pyerInfList": [
* {
* "customerId": "",
* "pyerAcctBankName": "",
* "pyerAcctName": "",
* "pyerAcctNo": "",
* "signNo": "",
* "transAmt": "",
* "transDtTm": ""
* }
* ],
* "realTrxAmt": "",
* "transSeqNo": "",
* "transStatus": "90",
* "trxAmt": ""
* },
* "head": {
* "rqsJrnlNo": "15541586367762936",
* "rspCode": "000000",
* "rspDate": "2023-11-29",
* "rspMsg": "交易成功",
* "rspTime": "13:57:54:343"
* }
* }
* 返回结果: 02:交易已受理
* {
* "data": {
* "chargesAmt": "",
* "chargesType": "",
* "clearDate": "20231129",
* "errorCode": "000000",
* "errorMsg": "成功",
* "merId": "EFT33021200556315",
* "merSeqNo": "20231129142845",
* "payeeAcctBankName": "宁波银行股份有限公司",
* "payeeAcctBankNo": "313332082914",
* "payeeAcctName": "客户客户",
* "payeeAcctNo": "860411100000759182976409",
* "payMethod": "4",
* "pyerInfList": [
* {
* "customerId": "",
* "pyerAcctBankName": "",
* "pyerAcctName": "",
* "pyerAcctNo": "",
* "signNo": "",
* "transAmt": "",
* "transDtTm": ""
* }
* ],
* "realTrxAmt": "0",
* "transSeqNo": "20231129142846065496766yDTQtg2",
* "transStatus": "02",
* "trxAmt": "1.23"
* },
* "head": {
* "rqsJrnlNo": "15543431902274569",
* "rspCode": "000000",
* "rspDate": "2023-11-29",
* "rspMsg": "交易成功",
* "rspTime": "14:28:51:431"
* }
* }
*
* transStatus:
* 00:交易成功
* 01:交易失败
* 02:交易已受理
* 80:订单初始状态
* 90:交易不存在
* 99:交易超时,须发起交易结果查询
*/
private static void queryOrder(String merSeqNo) {
try {
JSONObject jsonObject = new JSONObject();
jsonObject.put("transId", "IP01"); //交易识别码 必填
jsonObject.put("merId", "EFT33021200556315"); //商户号 必填
jsonObject.put("merSeqNo", merSeqNo); //商户流水 必填
HashMap<String,String> httpHeader = new HashMap<>();
RequestApiData requestApiData = new RequestApiData();
requestApiData.setAppkey("77667c76_3503_4c04_95f7_fc10938c7942");
requestApiData.setData(jsonObject);
requestApiData.setProductId("YFT");
requestApiData.setServiceId("queryOrder");
requestApiData.setHttpHeader(httpHeader);
RequestHead requestHead = new RequestHead();
requestHead.setRqsJrnlNo(NBOpenSDK.getRandom());
SDKRequest request = new SDKRequest();
request.setData(requestApiData);
request.setHead(requestHead);
log.info("SDK请求内容queryOrder: "+ JSON.toJSONString(request));
SDKResponse result = NBOpenSDK.send(request);
log.info("SDK响应结果queryOrder: "+JSON.toJSONString(result));
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 转账直连下单
*/
public static void bankTest1() throws Exception {
ClassPathResource classPathResource = new ClassPathResource("bank/config-nbbank.json");
InputStream inputStream = null;
try {
inputStream = classPathResource.getInputStream();
boolean initResult = NBOpenSDK.init(inputStream);
log.info("NBSDK初始化状态:{}", initResult);
log.info("sdk版本信息:{}", NBOpenSDK.getVersionInfo());
} catch (IOException e) {
e.printStackTrace();
}
directBankTransferOrder();
}
/**
* 下单
* 商户号:EFT33021200556315
* 银行转账:86041110000075918(户名:客户客户)
* 订单支付:结算账号(86041110000075926(户名:客户客户))
* 响应结果:
*{
* "data": {
* "acctNm": "客户客户",
* "acctOpenBankNm": "宁波银行股份有限公司",
* "bankId": "313332082914",
* "cardNo": "86041110000075918",
* "errorCode": "000000",
* "errorMsg": "成功",
* "signNo": "2976409",
* "transSeqNo": "20231129142846065496766yDTQtg2",
* "virtualDays": "2024-05-26"
* },
* "head": {
* "rqsJrnlNo": "15543427719351510",
* "rspCode": "000000",
* "rspDate": "2023-11-29",
* "rspMsg": "交易成功",
* "rspTime": "14:28:49:600"
* }
* }
*/
private static void directBankTransferOrder() {
try {
JSONObject jsonObject = new JSONObject();
jsonObject.put("transId", "IP01"); //交易识别码 必填
jsonObject.put("merId", "EFT33021200556315"); //商户号 必填
jsonObject.put("merSeqNo", LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); //商户流水 必填
jsonObject.put("merDtTm", LocalDateTimeUtils.formatTime()); //商户时间 必填
jsonObject.put("trxAmt", "1.23"); //订单金额 必填
jsonObject.put("orderDesc", "采购"); //订单详情 必填
jsonObject.put("productName", "小黄鱼"); //商品名称 必填
jsonObject.put("productId", "001"); //商品编号 必填
jsonObject.put("productNum", "1"); //商品数量 必填
// jsonObject.put("closeDtTm", "2023-11-29 13:39:16"); //关单时间
// jsonObject.put("mobilePhone", "13000000000"); //手机号
HashMap<String,String> httpHeader = new HashMap<>();
RequestApiData requestApiData = new RequestApiData();
requestApiData.setAppkey("77667c76_3503_4c04_95f7_fc10938c7942");
requestApiData.setData(jsonObject);
requestApiData.setProductId("YFT");
requestApiData.setServiceId("directBankTransferOrder");
requestApiData.setHttpHeader(httpHeader);
RequestHead requestHead = new RequestHead();
requestHead.setRqsJrnlNo(NBOpenSDK.getRandom());
SDKRequest request = new SDKRequest();
request.setData(requestApiData);
request.setHead(requestHead);
log.info("SDK请求内容directBankTransferOrder: "+ JSON.toJSONString(request));
SDKResponse result = NBOpenSDK.send(request);
log.info("SDK响应结果directBankTransferOrder: "+JSON.toJSONString(result));
// queryOrder(jsonObject.getString("merSeqNo"));
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 结果查询
* 商户号:EFT33021200556315
* 返回结果:
* {
* "data": {
* "chargesAmt": "",
* "chargesType": "",
* "clearDate": "",
* "errorCode": "000000",
* "errorMsg": "成功",
* "merId": "EFT33021200556315",
* "merSeqNo": "20231129135754",
* "payeeAcctBankName": "",
* "payeeAcctBankNo": "",
* "payeeAcctName": "",
* "payeeAcctNo": "",
* "payMethod": "",
* "pyerInfList": [
* {
* "customerId": "",
* "pyerAcctBankName": "",
* "pyerAcctName": "",
* "pyerAcctNo": "",
* "signNo": "",
* "transAmt": "",
* "transDtTm": ""
* }
* ],
* "realTrxAmt": "",
* "transSeqNo": "",
* "transStatus": "90",
* "trxAmt": ""
* },
* "head": {
* "rqsJrnlNo": "15541586367762936",
* "rspCode": "000000",
* "rspDate": "2023-11-29",
* "rspMsg": "交易成功",
* "rspTime": "13:57:54:343"
* }
* }
* transStatus:
* 00:交易成功
* 01:交易失败
* 02:交易已受理
* 80:订单初始状态
* 90:交易不存在
* 99:交易超时,须发起交易结果查询
*/
private static void queryOrder1(String merSeqNo) {
try {
JSONObject jsonObject = new JSONObject();
jsonObject.put("transId", "IP01"); //交易识别码 必填
jsonObject.put("merId", "EFT33021200556315"); //商户号 必填
jsonObject.put("merSeqNo", merSeqNo); //商户流水 必填
HashMap<String,String> httpHeader = new HashMap<>();
RequestApiData requestApiData = new RequestApiData();
requestApiData.setAppkey("77667c76_3503_4c04_95f7_fc10938c7942");
requestApiData.setData(jsonObject);
requestApiData.setProductId("YFT");
requestApiData.setServiceId("queryOrder");
requestApiData.setHttpHeader(httpHeader);
RequestHead requestHead = new RequestHead();
requestHead.setRqsJrnlNo(NBOpenSDK.getRandom());
SDKRequest request = new SDKRequest();
request.setData(requestApiData);
request.setHead(requestHead);
log.info("SDK请求内容queryOrder: "+ JSON.toJSONString(request));
SDKResponse result = NBOpenSDK.send(request);
log.info("SDK响应结果queryOrder: "+JSON.toJSONString(result));
} catch (Exception e) {
e.printStackTrace();
}
}
private static void testAPI1() {
try {
JSONObject jsonObject = new JSONObject();
jsonObject.put("qryType","3");
jsonObject.put("idNo","330125197810053747");
jsonObject.put("idType","1");
RequestApiData requestApiData = new RequestApiData();
requestApiData.setAppkey("77667c76_3503_4c04_95f7_fc10938c7942");
requestApiData.setData(jsonObject);
requestApiData.setProductId("");
requestApiData.setServiceId("commontest");
HashMap<String,String> httpHeader = new HashMap<>();
requestApiData.setHttpHeader(httpHeader);
SDKRequest request = new SDKRequest();
RequestHead requestHead = new RequestHead();
requestHead.setRqsJrnlNo(NBOpenSDK.getRandom());
request.setHead(requestHead);
request.setData(requestApiData);
System.out.println("SDK请求内容: "+ JSON.toJSONString(request));
SDKResponse result = NBOpenSDK.send(request);
System.out.println("SDK响应结果: "+JSON.toJSONString(result));
} catch (Exception e) {
e.printStackTrace();
}
}
//
// //文件上传测试接口
// private static void testUploadFile(String localFileName,String remoteFileName,String tranCode) throws Exception {
// try{
// SDKRequest request = new SDKRequest();
// RequestHead head = new RequestHead();
// head.setRqsJrnlNo(NBOpenSDK.getRandom());
// request.setHead(head);
// RequestFileData fileData = new RequestFileData();
// fileData.setLocalFilePath("C:\\Users\\k6118\\Downloads\\11.json");
// fileData.setRemoteFileName("11.json");
// fileData.setTranCode("merFileUploadApply");
// fileData.setUid("YITANG");
// request.setData(fileData);
// System.out.println("---SDK请求报文: "+ JSON.toJSONString(request, SerializerFeature.WriteMapNullValue));
// SDKResponse response = NBOpenSDK.putFile(request);
// System.out.println( "---SDK响应结果: "+ JSON.toJSONString(response,SerializerFeature.WriteMapNullValue));
// } catch (Exception e){
// e.printStackTrace();
// }
// }
//
// //文件下载测试接口
// private static void testDownloadFile(String localFileName,String remoteFileName,String tranCode) throws Exception {
// try{
// SDKRequest request = new SDKRequest();
// RequestHead head = new RequestHead();
// head.setRqsJrnlNo(NBOpenSDK.getRandom());
// request.setHead(head);
// RequestFileData fileData = new RequestFileData();
// fileData.setLocalFilePath("C:\\Users\\k6118\\Downloads\\12.json");
// fileData.setRemoteFileName("8374eb1718cf4083a74430ebd9af058f/11.json");
// fileData.setTranCode("merFileDownloadApply");
// fileData.setUid("YITANG");
// request.setData(fileData);
// System.out.println("---SDK请求报文: "+ JSON.toJSONString(request, SerializerFeature.WriteMapNullValue));
// SDKResponse response = NBOpenSDK.getFile(request);
// System.out.println( "---SDK响应结果: "+ JSON.toJSONString(response,SerializerFeature.WriteMapNullValue));
// } catch (Exception e){
// e.printStackTrace();
// }
// }
//
// /**
// * 易付通
// */
// static String unionPayDirectOrder() throws Exception {
//
// HashMap<String, Object> map = new HashMap();
// HashMap<String, Object> data = new HashMap();
// map.put("Data", data);
//
// data.put("transId", "IP01"); //交易识别码 必填
// data.put("merId", "2023112300000002"); //商户号 必填
// data.put("merSeqNo", "2023112300000001"); //商户流水 必填
// data.put("merDtTm", "2023-11-24 11:00:00"); //商户时间 必填
// data.put("trxAmt", "1.23"); //订单金额 必填
// data.put("orderDesc", "采购"); //订单详情 必填
// data.put("productNam", "小黄鱼"); //商品名称 必填
// data.put("productId", "001"); //商品编号 必填
// data.put("productNum", "1"); //商品数量 必填
//
// data.put("payAcctNo", "6223161100110442"); //付款账号 必填
// data.put("payAcctNm", "刘晓琴"); //付款户名 必填
// data.put("bankType", "00"); //账户类型 必填
// data.put("payAcctOpenBankId", "313332082914"); //开户行号 必填
//// data.put("mobilePhone", "13000000000"); //手机号
//
// String res1 = NBOpenSDK.send("YFT", "unionPayDirectOrder", JSON.toJSONString(map));
// log.info("银联订单支付收款模式接口:{}" , res1);
//
// return res1;
// }
//
//
public static void main(String[] args) throws Exception {
bankTest();
}
}
package com.clx.performance.controller.thirdparty;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.nbopen.api.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
@Slf4j
@RestController
@RequestMapping(value="/nbbank")
@Api(tags = "宁波银行回调")
public class NbBankController {
@ApiOperation(value = "notify", notes = "<br>By:艾庆国")
@RequestMapping(value = "/notify", method = RequestMethod.POST)
public SDKResponse bankNotify(String message) throws Exception {
log.info("宁波银行回调, data:{}", message);
RequestApiData requestApiData = new RequestApiData();
requestApiData.setAppkey("77667c76_3503_4c04_95f7_fc10938c7942");
requestApiData.setData(message);
RequestHead requestHead = new RequestHead();
requestHead.setRqsJrnlNo(NBOpenSDK.getRandom());
SDKRequest request = new SDKRequest();
request.setData(requestApiData);
request.setHead(requestHead);
System.out.println("SDK请求内容: "+ JSON.toJSONString(request));
SDKResponse result = NBOpenSDK.decryptMessage(request);
System.out.println("SDK响应结果: "+JSON.toJSONString(result));
return null;
}
private SDKResponse getResult() throws Exception {
JSONObject jsonObject = new JSONObject();
jsonObject.put("errorCode", "000000");
jsonObject.put("errorMsg", "响应成功");
RequestApiData requestApiData = new RequestApiData();
requestApiData.setAppkey("77667c76_3503_4c04_95f7_fc10938c7942");
requestApiData.setData(jsonObject);
RequestHead requestHead = new RequestHead();
requestHead.setRqsJrnlNo(NBOpenSDK.getRandom());
SDKRequest request = new SDKRequest();
request.setData(requestApiData);
request.setHead(requestHead);
log.info("加密前: "+ JSON.toJSONString(request));
SDKResponse result = NBOpenSDK.encryptMessage(request);
log.info("加密后: "+JSON.toJSONString(result));
return result;
}
}
...@@ -177,9 +177,11 @@ public class IntegralTruckServiceImpl implements IntegralTruckService { ...@@ -177,9 +177,11 @@ public class IntegralTruckServiceImpl implements IntegralTruckService {
if (!truckNoList.isEmpty()) { if (!truckNoList.isEmpty()) {
List<IntegralStatistics> statisticsList = integralStatisticsDao.selectListByStatisticsDateAndTruckNoList(time, truckNoList); List<IntegralStatistics> statisticsList = integralStatisticsDao.selectListByStatisticsDateAndTruckNoList(time, truckNoList);
Map<String, Integer> rankMap = statisticsList.stream().collect(Collectors.toMap(item -> item.getTruckNo(), item -> item.getRank())); Map<String, Integer> rankMap = statisticsList.stream().collect(Collectors.toMap(item -> item.getTruckNo(), item -> item.getRank()));
Map<String, Integer> integralMap = statisticsList.stream().collect(Collectors.toMap(item -> item.getTruckNo(), item -> item.getIntegral()));
for (IntegralTruckVO item : page.getRecords()) { for (IntegralTruckVO item : page.getRecords()) {
item.setRank(rankMap.get(item.getTruckNo())); item.setRank(rankMap.get(item.getTruckNo()));
item.setIntegral(integralMap.get(item.getTruckNo()));
} }
Map<String, IntegralTruckVO> truckMap = page.getRecords().stream().collect(Collectors.toMap(item -> item.getTruckNo(), item -> item)); Map<String, IntegralTruckVO> truckMap = page.getRecords().stream().collect(Collectors.toMap(item -> item.getTruckNo(), item -> item));
......
...@@ -381,7 +381,7 @@ public class TruckServiceImpl implements TruckService { ...@@ -381,7 +381,7 @@ public class TruckServiceImpl implements TruckService {
} }
long seconds = Duration.between(beginTime, endTime).getSeconds(); long seconds = Duration.between(beginTime, endTime).getSeconds();
if(seconds > 129600){ if(seconds > 259200){
throw new ServiceSystemException(ResultEnum.PARAM_ERROR,"开始时间和结束时间不能相差超于3天"); throw new ServiceSystemException(ResultEnum.PARAM_ERROR,"开始时间和结束时间不能相差超于3天");
} }
List<TruckTraceDTO> truckTrace = zjxlGpsService.getTruckTrace(param.getTruckNo(), param.getBeginTime(), List<TruckTraceDTO> truckTrace = zjxlGpsService.getTruckTrace(param.getTruckNo(), param.getBeginTime(),
......
{
"api": [
{
"appKey": "77667c76_3503_4c04_95f7_fc10938c7942",
"publicUrl": "https://open-test.nbcb.com.cn/sit/nbcb/api",
"platfromPublicKeyPath": "/app/clx-performance/nbbank/bankPubKey-test.cer",
"merchantPrivateKeyPath":"/app/clx-performance/nbbank/77667c76_3503_4c04_95f7_fc10938c7942.sm2",
"merchantPrivateKeyPwd":"cfca",
"connectTimeout": 10000,
"readTimeout": 30000,
"merchantName":"",
"subMerchantName":"",
"subMerchantId":"",
"isProxy":false,
"proxyIp":"",
"proxyPort":80
}
],
"file": [
{
"uid":"TEST",
"publicFileUrl":"https://file-test.nbcb.com.cn/sit",
"clientIp":"127.0.0.1",
"passwd":"nbcb123456",
"apiVersion":"201809101526",
"isProxy":false,
"proxyIp":"",
"proxyPort":80
}
]
}
\ No newline at end of file
APP_KEY=54b3e05c-7983-4e6c-8920-f9ab8a0004a6
PUBLIC_URL=http://cz-test.nbcb.com.cn:7070/nbcb/api
PUBLIC_KEY=MFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAEXAt6fxeKlpREIyXoT3jDwGU7L6JkKrzdOKP1cMB14rtNwwlyaUGLrtuHVoArAHP3x7XN2rUw0GxSngYQwOAsjQ==
CONNECT_TIMEOUT=10000
READ_TIMEOUT=20000
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<configuration> <configuration>
<!--
说明:
1、日志级别及文件
日志记录采用分级记录,级别与日志文件名相对应,不同级别的日志信息记录到不同的日志文件中
例如:error级别记录到log_error_xxx.log或log_error.log(该文件为当前记录的日志文件),而log_error_xxx.log为归档日志,
日志文件按日期记录,同一天内,若日志文件大小等于或大于2M,则按0、1、2...顺序分别命名
例如log-level-2013-12-21.0.log
其它级别的日志也是如此。
2、文件路径
若开发、测试用,在Eclipse中运行项目,则到Eclipse的安装路径查找logs文件夹,以相对路径../logs。
若部署到Tomcat下,则在Tomcat下的logs文件中
3、Appender
FILEERROR对应error级别,文件名以log-error-xxx.log形式命名
FILEWARN对应warn级别,文件名以log-warn-xxx.log形式命名
FILEINFO对应info级别,文件名以log-info-xxx.log形式命名
FILEDEBUG对应debug级别,文件名以log-debug-xxx.log形式命名
stdout将日志信息输出到控制上,为方便开发测试使用
-->
<!-- 彩色日志 --> <!-- 彩色日志 -->
<!-- 彩色日志依赖的渲染类 --> <!-- 彩色日志依赖的渲染类 -->
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" /> <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
<conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" /> <conversionRule conversionWord="wex"
<conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" /> converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
<conversionRule conversionWord="wEx"
converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
<!-- 彩色日志格式 --> <!-- 彩色日志格式 -->
<property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}" /> <property name="CONSOLE_LOG_PATTERN"
value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} [%tid] %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
<contextName>order-service</contextName> <property name="FILE_LOG_PATTERN"
<property name="LOG_PATH" value="/logs" /> value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%tid] [%thread] %-5level %logger Line:%-3L - %msg%n"/>
<!--设置系统日志目录-->
<property name="APPDIR" value="clx-performance" />
<!-- 日志记录器,日期滚动记录 --> <!-- 日志根目录 -->
<appender name="FILEERROR" class="ch.qos.logback.core.rolling.RollingFileAppender"> <property name="LOG_PATH" value="./logs"/>
<!-- 正在记录的日志文件的路径及文件名 --> <!-- 服务名 -->
<file>${LOG_PATH}/${APPDIR}/log_error.log</file> <property name="APP_DIR" value="clx-performance"/>
<!-- 日志记录器的滚动策略,按日期,按大小记录 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 归档的日志文件的路径,例如今天是2013-12-21日志,当前写的日志文件路径为file节点指定,可以将此文件与file指定文件路径设置为不同路径,从而将当前日志文件或归档日志文件置不同的目录。
而2013-12-21的日志文件在由fileNamePattern指定。%d{yyyy-MM-dd}指定日期格式,%i指定索引 -->
<fileNamePattern>${LOG_PATH}/${APPDIR}/error/log-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- 除按日志记录之外,还配置了日志文件不能超过20M,若超过20M,日志文件会以索引0开始,
命名日志文件,例如log-error-2013-12-21.0.log -->
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>20MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<!-- 追加方式记录日志 -->
<append>true</append>
<!-- 日志文件的格式 -->
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>===%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger Line:%-3L - %msg%n</pattern>
<charset>utf-8</charset>
</encoder>
<!-- 此日志文件只记录info级别的 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>error</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- 日志记录器,日期滚动记录 --> <!-- 日志记录器,日期滚动记录 -->
<appender name="FILEWARN" class="ch.qos.logback.core.rolling.RollingFileAppender"> <appender name="FILE_INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 正在记录的日志文件的路径及文件名 --> <!-- 正在记录的日志文件的路径及文件名 -->
<file>${LOG_PATH}/${APPDIR}/log_warn.log</file> <file>${LOG_PATH}/${APP_DIR}/log_info.log</file>
<!-- 日志记录器的滚动策略,按日期,按大小记录 --> <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 归档的日志文件的路径,例如今天是2013-12-21日志,当前写的日志文件路径为file节点指定,可以将此文件与file指定文件路径设置为不同路径,从而将当前日志文件或归档日志文件置不同的目录。 <!-- 归档的日志文件的路径,例如今天是2013-12-21日志,当前写的日志文件路径为file节点指定,可以将此文件与file指定文件路径设置为不同路径,从而将当前日志文件或归档日志文件置不同的目录。
而2013-12-21的日志文件在由fileNamePattern指定。%d{yyyy-MM-dd}指定日期格式,%i指定索引 --> 而2013-12-21的日志文件在由fileNamePattern指定。%d{yyyy-MM-dd}指定日期格式,%i指定索引 -->
<fileNamePattern>${LOG_PATH}/${APPDIR}/warn/log-warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern> <fileNamePattern>${LOG_PATH}/${APP_DIR}/info/log-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- 除按日志记录之外,还配置了日志文件不能超过20M,若超过20M,日志文件会以索引0开始, <!--最大日志天数-->
命名日志文件,例如log-error-2013-12-21.0.log --> <maxHistory>5</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <!--单个日志文件最大大小-->
<maxFileSize>20MB</maxFileSize> <maxFileSize>20MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy> <!--总日志大小-->
<totalSizeCap>1GB</totalSizeCap>
</rollingPolicy> </rollingPolicy>
<!-- 追加方式记录日志 --> <!-- 追加方式记录日志 -->
<append>true</append> <append>true</append>
<!-- 日志文件的格式 --> <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
<pattern>===%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger Line:%-3L - %msg%n</pattern> <Pattern>${FILE_LOG_PATTERN}</Pattern>
</layout>
<charset>utf-8</charset> <charset>utf-8</charset>
</encoder> </encoder>
<!-- 此日志文件只记录info级别的 --> <!-- 阈值过滤器,记录info及以上级别的日志 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter"> <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>warn</level> <level>info</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter> </filter>
</appender> </appender>
<!-- 日志记录器,日期滚动记录 --> <!-- 日志记录器,日期滚动记录 -->
<appender name="FILEINFO" class="ch.qos.logback.core.rolling.RollingFileAppender"> <appender name="FILE_ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 正在记录的日志文件的路径及文件名 --> <!-- 正在记录的日志文件的路径及文件名 -->
<file>${LOG_PATH}/${APPDIR}/log_info.log</file> <file>${LOG_PATH}/${APP_DIR}/log_error.log</file>
<!-- 日志记录器的滚动策略,按日期,按大小记录 --> <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 归档的日志文件的路径,例如今天是2013-12-21日志,当前写的日志文件路径为file节点指定,可以将此文件与file指定文件路径设置为不同路径,从而将当前日志文件或归档日志文件置不同的目录。 <!-- 归档的日志文件的路径,例如今天是2013-12-21日志,当前写的日志文件路径为file节点指定,可以将此文件与file指定文件路径设置为不同路径,从而将当前日志文件或归档日志文件置不同的目录。
而2013-12-21的日志文件在由fileNamePattern指定。%d{yyyy-MM-dd}指定日期格式,%i指定索引 --> 而2013-12-21的日志文件在由fileNamePattern指定。%d{yyyy-MM-dd}指定日期格式,%i指定索引 -->
<fileNamePattern>${LOG_PATH}/${APPDIR}/info/log-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern> <fileNamePattern>${LOG_PATH}/${APP_DIR}/error/log-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- 除按日志记录之外,还配置了日志文件不能超过20M,若超过20M,日志文件会以索引0开始, <!--最大日志天数-->
命名日志文件,例如log-error-2013-12-21.0.log --> <maxHistory>5</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <!--单个日志文件最大大小-->
<maxFileSize>20MB</maxFileSize> <maxFileSize>20MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy> <!--总日志大小-->
<totalSizeCap>1GB</totalSizeCap>
</rollingPolicy> </rollingPolicy>
<!-- 追加方式记录日志 --> <!-- 追加方式记录日志 -->
<append>true</append> <append>true</append>
<!-- 日志文件的格式 --> <!-- 日志文件的格式 -->
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<pattern>===%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger Line:%-3L - %msg%n</pattern> <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
<Pattern>${FILE_LOG_PATTERN}</Pattern>
</layout>
<charset>utf-8</charset> <charset>utf-8</charset>
</encoder> </encoder>
<!-- 此日志文件只记录info级别的 --> <!-- 级别过滤器,只记录error级别的日志 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter"> <filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>info</level> <level>error</level>
<onMatch>ACCEPT</onMatch> <onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch> <onMismatch>DENY</onMismatch>
</filter> </filter>
...@@ -123,26 +85,43 @@ ...@@ -123,26 +85,43 @@
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!--encoder 默认配置为PatternLayoutEncoder--> <!--encoder 默认配置为PatternLayoutEncoder-->
<encoder>
<pattern>${CONSOLE_LOG_PATTERN}</pattern> <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
<Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
</layout>
<charset>utf-8</charset> <charset>utf-8</charset>
</encoder> </encoder>
<!--此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息--> <!--此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息-->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level> <level>debug</level>
</filter> </filter>
</appender> </appender>
<!-- <logger name="org.springframework" level="WARN" /> --> <!--skywalking收集日志-->
<!-- <logger name="org.hibernate" level="WARN" /> --> <appender name="GRPC_LOG" class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.log.GRPCLogClientAppender">
<encoder>
<Pattern>${FILE_LOG_PATTERN}</Pattern>
</encoder>
</appender>
<!--异步日志-->
<!--<appender name="ASYNC-GRPC" class="ch.qos.logback.classic.AsyncAppender">
&lt;!&ndash; 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 &ndash;&gt;
<discardingThreshold>0</discardingThreshold>
&lt;!&ndash; 更改默认的队列的深度,该值会影响性能.默认值为256 &ndash;&gt;
<queueSize>256</queueSize>
&lt;!&ndash; 添加附加的appender,最多只能添加一个 &ndash;&gt;
<appender-ref ref="GRPC_LOG"/>
</appender>-->
<!-- 生产环境下,将此级别配置为适合的级别,以免日志文件太多或影响程序性能 --> <!-- 生产环境下,将此级别配置为适合的级别,以免日志文件太多或影响程序性能 -->
<root level="INFO"> <root level="INFO">
<appender-ref ref="FILEERROR" /> <appender-ref ref="FILE_INFO"/>
<appender-ref ref="FILEWARN" /> <appender-ref ref="FILE_ERROR"/>
<appender-ref ref="FILEINFO" /> <appender-ref ref="GRPC_LOG"/>
<!--控制台-->
生产环境将请stdout,testfile去掉 <appender-ref ref="STDOUT"/>
<appender-ref ref="STDOUT" />
</root> </root>
</configuration> </configuration>
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论