package com.taoke.autopay;
|
|
import com.taoke.autopay.dao.KeyOrderMapper;
|
import com.taoke.autopay.entity.KeyOrder;
|
import com.taoke.autopay.utils.Constant;
|
import com.taoke.autopay.utils.TimeUtil;
|
import net.sf.json.JSONObject;
|
import org.junit.jupiter.api.Test;
|
import org.springframework.boot.test.context.SpringBootTest;
|
import org.yeshi.utils.StringUtil;
|
|
import javax.annotation.Resource;
|
import java.io.FileInputStream;
|
import java.io.FileNotFoundException;
|
import java.math.BigDecimal;
|
import java.util.*;
|
|
/**
|
* @author hxh
|
* @title: LogTest
|
* @description: TODO
|
* @date 2024/7/19 12:15
|
*/
|
@SpringBootTest
|
public class LogTest {
|
|
|
@Resource
|
private KeyOrderMapper keyOrderMapper;
|
|
@Test
|
public void parseLog() throws FileNotFoundException {
|
|
String[] days = new String[]{"2024-07-15","2024-07-16","2024-07-17","2024-07-18"};
|
for(String day:days) {
|
Scanner scanner = new Scanner(new FileInputStream("D:\\文件传输\\交易\\日志文件\\xcp\\pay.log.gz."+day));
|
while (scanner.hasNextLine()) {
|
String line = scanner.nextLine();
|
if (!line.contains("setOrderNo:")) {
|
continue;
|
}
|
String[] sts = line.split("setOrderNo:")[1].split("-");
|
String id = sts[0].trim();
|
String money = sts[sts.length - 1].replace("¥", "");
|
System.out.println(id + ":" + money);
|
KeyOrder order = keyOrderMapper.selectById(id);
|
if(order!=null){
|
KeyOrder update=new KeyOrder();
|
update.setId(id);
|
update.setOrderMoney(new BigDecimal(money));
|
keyOrderMapper.updateByPrimaryKeySelective(update);
|
}
|
}
|
scanner.close();
|
|
}
|
|
}
|
|
@Test
|
public void parseLogForChannel() throws FileNotFoundException {
|
|
String[] days = new String[]{"2024-07-15","2024-07-16","2024-07-17","2024-07-18"};
|
|
for(String day:days) {
|
Set<String> bps=new HashSet<>();
|
Set<String> cyx=new HashSet<>();
|
Scanner scanner = new Scanner(new FileInputStream("D:\\文件传输\\交易\\日志文件\\xcp\\info.log.gz."+day));
|
while (scanner.hasNextLine()) {
|
String line = scanner.nextLine();
|
if (!line.contains("抖音订单查询")) {
|
continue;
|
}
|
line = line.split("dyorderApiLogger -")[1];
|
int startIndex = line.indexOf(":");
|
String tag = line.substring(0,startIndex).trim();
|
String id = line.substring(startIndex + 1,line.indexOf("-")).trim();
|
String data = line.substring(line.indexOf("-")+1);
|
if(tag.contains("(1)")){
|
cyx.add(id);
|
}else if(tag.contains("(2)")){
|
bps.add(id);
|
}
|
}
|
|
Set<String> totalOrderNos=new HashSet<>();
|
totalOrderNos.addAll(bps);
|
totalOrderNos.addAll(cyx);
|
Map<String,String> orderChannelMap = new HashMap<>();
|
// 交集里面的订单不属于任何一个渠道
|
Set<String> intersection = new HashSet<>(bps);
|
intersection.retainAll(cyx);
|
for(String r:intersection){
|
orderChannelMap.put(r,null);
|
}
|
// 差集属于bps
|
Set<String> difference = new HashSet<>(cyx);
|
difference.removeAll(bps);
|
for(String r:difference){
|
orderChannelMap.put(r,Constant.ORDER_CHANNEL_BPS);
|
}
|
|
// 当天订单与totalOrderNos的所有差集属于cyx
|
Date minCreateTime =new Date(TimeUtil.convertToTimeTemp(day,"yyyy-MM-dd"));
|
Date maxCreateTime =TimeUtil.getNextDay(1,new Date(TimeUtil.convertToTimeTemp(day,"yyyy-MM-dd")).getTime());
|
KeyOrderMapper.DaoQuery query=new KeyOrderMapper.DaoQuery();
|
query.minCreateTime =minCreateTime;
|
query.maxCreateTime =maxCreateTime;
|
query.start = 0;
|
query.count =10000;
|
query.state = KeyOrder.STATE_PAY;
|
List<KeyOrder> orders = keyOrderMapper.list(query);
|
Set<String> dayOrderNos=new HashSet<>();
|
for(KeyOrder o:orders){
|
if(!StringUtil.isNullOrEmpty(o.getOrderNo())) {
|
dayOrderNos.add(o.getOrderNo());
|
}
|
}
|
dayOrderNos.removeAll(totalOrderNos);
|
for(String r:dayOrderNos){
|
orderChannelMap.put(r,Constant.ORDER_CHANNEL_CYX);
|
}
|
for(Iterator<String> its= orderChannelMap.keySet().iterator();its.hasNext();){
|
String orderNo = its.next();
|
query=new KeyOrderMapper.DaoQuery();
|
query.orderNo = orderNo;
|
query.start=0;
|
query.count =100;
|
orders = keyOrderMapper.list(query);
|
for(KeyOrder order:orders){
|
if(order.getState()== KeyOrder.STATE_PAY){
|
String channel = orderChannelMap.get(orderNo);
|
if(channel!=null){
|
KeyOrder update=new KeyOrder();
|
update.setId(order.getId());
|
update.setOrderChannel(channel);
|
update.setUpdateTime(new Date());
|
keyOrderMapper.updateByPrimaryKeySelective(update);
|
}
|
}
|
}
|
}
|
scanner.close();
|
}
|
|
|
|
}
|
|
}
|