feat:zlb接口
This commit is contained in:
@@ -10,7 +10,6 @@ import com.xiang.service.module.jntyzx.zlb.service.ZlbService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.Date;
|
||||
|
||||
@Component
|
||||
@@ -44,9 +43,9 @@ public class ZlbSiteTask extends BaseScheduleTaskTemplate {
|
||||
|
||||
TaskResult taskResult = new TaskResult();
|
||||
//获取当前时间的后一天
|
||||
Date date1 = DateUtils.addDate(new Date(), 2);
|
||||
Date date2 = DateUtils.addDate(new Date(), 3);
|
||||
Date date3 = DateUtils.addDate(new Date(), 4);
|
||||
Date date1 = DateUtils.addDate(new Date(), 0);
|
||||
Date date2 = DateUtils.addDate(new Date(), 1);
|
||||
Date date3 = DateUtils.addDate(new Date(), 2);
|
||||
String day1 = DateUtils.format(date1, DateUtils.ENUM_FORMAT_YMD);
|
||||
String day2 = DateUtils.format(date2, DateUtils.ENUM_FORMAT_YMD);
|
||||
String day3 = DateUtils.format(date3, DateUtils.ENUM_FORMAT_YMD);
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package com.xiang.service.module.jntyzx.zlb.service;
|
||||
|
||||
import cn.hutool.http.HttpRequest;
|
||||
import com.alibaba.fastjson.serializer.SerializerFeature;
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.alibaba.fastjson2.JSONArray;
|
||||
@@ -11,21 +10,39 @@ import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.xiang.common.factory.JntyzxDingTalkFactory;
|
||||
import com.xiang.common.pojo.jntyzx.zlb.*;
|
||||
import com.xiang.common.pojo.TrackPoint;
|
||||
import com.xiang.common.pojo.jntyzx.zlb.ZlbCaptchaResp;
|
||||
import com.xiang.common.pojo.jntyzx.zlb.ZlbOrderInfo;
|
||||
import com.xiang.common.pojo.jntyzx.zlb.ZlbOrderJson;
|
||||
import com.xiang.common.pojo.jntyzx.zlb.ZlbOrderWqInfo;
|
||||
import com.xiang.common.pojo.jntyzx.zlb.ZlbOrderWqJson;
|
||||
import com.xiang.common.pojo.jntyzx.zlb.ZlbSiteInfo;
|
||||
import com.xiang.common.pojo.jntyzx.zlb.ZlbSiteRequest;
|
||||
import com.xiang.common.pojo.jntyzx.zlb.ZlbTokenInfo;
|
||||
import com.xiang.common.pojo.jntyzx.zlb.ZlbUserInfo;
|
||||
import com.xiang.common.service.ICodeService;
|
||||
import com.xiang.common.utils.AESECBUtils;
|
||||
import com.xiang.common.utils.Base64ImageScaler;
|
||||
import com.xiang.common.utils.DateUtils;
|
||||
import com.xiang.common.utils.OkHttpUtil;
|
||||
import com.xiang.common.utils.TrajectoryUtil;
|
||||
import com.xiang.service.module.jntyzx.zlb.constants.ZlbUrlConstants;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.checkerframework.checker.nullness.qual.Nullable;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.redis.core.RedisTemplate;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.io.IOException;
|
||||
import java.util.*;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@@ -35,6 +52,7 @@ import java.util.stream.Collectors;
|
||||
public class ZlbServiceImpl implements ZlbService {
|
||||
|
||||
|
||||
public static volatile boolean running = true;
|
||||
@Resource
|
||||
private ZlbSiteInfoService zlbSiteInfoService;
|
||||
@Resource
|
||||
@@ -48,7 +66,6 @@ public class ZlbServiceImpl implements ZlbService {
|
||||
@Autowired
|
||||
private ICodeService codeService;
|
||||
|
||||
|
||||
@Override
|
||||
public void queryZLbSiteInfo(String ymdDate, Integer type) throws Exception {
|
||||
log.info("开始查询场地信息");
|
||||
@@ -361,23 +378,38 @@ public class ZlbServiceImpl implements ZlbService {
|
||||
|
||||
@Override
|
||||
public String buildNewOrder(String siteOrderDetailsStr, OkHttpUtil client) throws IOException {
|
||||
LocalDateTime startTime = LocalDateTime.now();
|
||||
|
||||
//获取图片验证码
|
||||
String s = client.postJson(ZlbUrlConstants.captchaUrl, null, "{}");
|
||||
JSONObject jsonObject = JSON.parseObject(s);
|
||||
String id = (String) jsonObject.get("id");
|
||||
String captcha = JSON.toJSONString(jsonObject.get("captcha"));
|
||||
String backgroundImage = JSON.toJSONString(JSON.parseObject(captcha).get("backgroundImage"));
|
||||
String templateImage = JSON.toJSONString(JSON.parseObject(captcha).get("templateImage"));
|
||||
try {
|
||||
Thread.sleep(2000);
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
ZlbCaptchaResp zlbCaptchaResp = JSON.parseObject(s, ZlbCaptchaResp.class);
|
||||
if (Objects.isNull(zlbCaptchaResp)) {
|
||||
return null;
|
||||
}
|
||||
if (Objects.isNull(zlbCaptchaResp.getCaptcha())) {
|
||||
return null;
|
||||
}
|
||||
String id = zlbCaptchaResp.getId();
|
||||
String backgroundImage = zlbCaptchaResp.getCaptcha().getBackgroundImage();
|
||||
String templateImage = zlbCaptchaResp.getCaptcha().getTemplateImage();
|
||||
|
||||
backgroundImage = Base64ImageScaler.scaleToHalf(backgroundImage);
|
||||
List<String> trackList = codeService.codeResolve(backgroundImage, templateImage);
|
||||
|
||||
ZlbOrderInfo orderInfo = new ZlbOrderInfo();
|
||||
orderInfo.setId(id);
|
||||
//获取验证码轨迹
|
||||
List<ZlbOrderInfo.ZlbData.TrackList> trackListList = convert(trackList);
|
||||
ZlbOrderInfo.ZlbData data = new ZlbOrderInfo.ZlbData();
|
||||
// data.setBgImageWidth();
|
||||
// data.setBgImageHeight();
|
||||
// data.setStartTime();
|
||||
// data.setStopTime();
|
||||
data.setBgImageWidth(zlbCaptchaResp.getCaptcha().getBackgroundImageWidth() / 2);
|
||||
data.setBgImageHeight(zlbCaptchaResp.getCaptcha().getBackgroundImageHeight() / 2);
|
||||
data.setStartTime(startTime.toString());
|
||||
data.setStopTime(LocalDateTime.now().toString());
|
||||
data.setTrackList(trackListList);
|
||||
|
||||
orderInfo.setData(data);
|
||||
@@ -388,27 +420,44 @@ public class ZlbServiceImpl implements ZlbService {
|
||||
}
|
||||
|
||||
private List<ZlbOrderInfo.ZlbData.TrackList> convert(List<String> trackList) {
|
||||
int t = 0;
|
||||
List<ZlbOrderInfo.ZlbData.TrackList> result = Lists.newArrayList();
|
||||
|
||||
for (String track : trackList) {
|
||||
String[] split = track.split(",");
|
||||
String x = split[0];
|
||||
String y = split[1];
|
||||
ZlbOrderInfo.ZlbData.TrackList data = new ZlbOrderInfo.ZlbData.TrackList();
|
||||
data.setX(Integer.valueOf(x));
|
||||
data.setY(Integer.valueOf(y));
|
||||
data.setT(1);
|
||||
data.setType("click");
|
||||
result.add(data);
|
||||
|
||||
ZlbOrderInfo.ZlbData.TrackList move = new ZlbOrderInfo.ZlbData.TrackList();
|
||||
move.setX(Integer.valueOf(x));
|
||||
move.setY(Integer.valueOf(y));
|
||||
move.setT(1);
|
||||
move.setType("move");
|
||||
|
||||
for (int i = 0; i < trackList.size(); i++) {
|
||||
String currentTrack = trackList.get(i);
|
||||
String nextTrack = null;
|
||||
if (i != trackList.size() - 1) {
|
||||
nextTrack = trackList.get(i + 1);
|
||||
}
|
||||
t += 100;
|
||||
Integer currentX = Integer.parseInt(currentTrack.split(",")[0]);
|
||||
Integer currentY = Integer.parseInt(currentTrack.split(",")[1]);
|
||||
List<TrackPoint> trackPoints = TrajectoryUtil.generateClick(currentX, currentY, t);
|
||||
for (TrackPoint trackPoint : trackPoints) {
|
||||
if (StringUtils.equals(trackPoint.getType(), "click")) {
|
||||
ZlbOrderInfo.ZlbData.TrackList data = new ZlbOrderInfo.ZlbData.TrackList();
|
||||
data.setX(trackPoint.getX());
|
||||
data.setY(trackPoint.getY());
|
||||
data.setT(trackPoint.getT());
|
||||
data.setType(trackPoint.getType());
|
||||
result.add(data);
|
||||
}
|
||||
}
|
||||
t += 500;
|
||||
if (StringUtils.isNotBlank(nextTrack)) {
|
||||
Integer nextX = Integer.parseInt(nextTrack.split(",")[0]);
|
||||
Integer nextY = Integer.parseInt(nextTrack.split(",")[1]);
|
||||
List<TrackPoint> nextTrackPoints = TrajectoryUtil.generateMove(currentX, currentY, nextX, nextY, t, 1200, 10);
|
||||
TrackPoint trackPoint = nextTrackPoints.get(i + 1);
|
||||
ZlbOrderInfo.ZlbData.TrackList data = new ZlbOrderInfo.ZlbData.TrackList();
|
||||
data.setX(trackPoint.getX());
|
||||
data.setY(trackPoint.getY());
|
||||
data.setT(trackPoint.getT());
|
||||
data.setType(trackPoint.getType());
|
||||
result.add(data);
|
||||
}
|
||||
}
|
||||
|
||||
log.info("生成的轨迹点结果:{}", JSON.toJSONString(result));
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -431,8 +480,6 @@ public class ZlbServiceImpl implements ZlbService {
|
||||
redisTemplate.expire(redisKey, 1234, TimeUnit.SECONDS);
|
||||
}
|
||||
|
||||
public static volatile boolean running = true;
|
||||
|
||||
@Override
|
||||
public void jianlou(String name, String day, long time) throws Exception {
|
||||
jntyzxDingTalkFactory.sendMsg(name + "自定义捡漏开始捡漏时间:" + day + " 捡漏人:" + name + " 捡漏间隔:" + time + "ms");
|
||||
|
||||
Reference in New Issue
Block a user