江体小程序和zlb接口开发 #1
@@ -8,7 +8,8 @@ import lombok.Getter;
|
||||
public enum YcCodeTypeEnum {
|
||||
|
||||
YC_10118(10118, "中文字符 1~4位 plus 其他类型准确率不满足 可使用本类型"),
|
||||
YC_6246(30100, "通用中文点选1")
|
||||
YC_6246(30100, "通用中文点选1"),
|
||||
YC_310700(310700, "适合Zlb使用的word click")
|
||||
|
||||
;
|
||||
private final Integer type;
|
||||
|
||||
@@ -9,7 +9,7 @@ import lombok.NoArgsConstructor;
|
||||
@NoArgsConstructor
|
||||
public class YcCodeRequest {
|
||||
/**
|
||||
* 图片
|
||||
* 图片 base64
|
||||
*/
|
||||
private String image;
|
||||
/**
|
||||
@@ -21,4 +21,9 @@ public class YcCodeRequest {
|
||||
*/
|
||||
private Integer type;
|
||||
private String extra;
|
||||
|
||||
/**
|
||||
* 模板图片 base64
|
||||
*/
|
||||
private String labelImage;
|
||||
}
|
||||
|
||||
@@ -9,10 +9,13 @@ import com.xiang.common.pojo.code.YcCodeDataResp;
|
||||
import com.xiang.common.pojo.code.YcCodeRequest;
|
||||
import com.xiang.common.utils.HttpService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.checkerframework.checker.nullness.qual.Nullable;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
@Service
|
||||
@@ -42,14 +45,34 @@ public class CodeServiceImpl implements ICodeService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String codeResolve(String image, String extra) {
|
||||
YcCodeBaseResponse<YcCodeDataResp> resp = baseCodeResolve(YcCodeTypeEnum.YC_6246.getType(), image, extra);
|
||||
if (Objects.isNull(resp)) {
|
||||
public List<String> codeResolve(String image, String templateImage) {
|
||||
HashMap<String, String> header = Maps.newHashMap();
|
||||
header.put("Content-Type", "application/json");
|
||||
YcCodeRequest ycCodeRequest = new YcCodeRequest();
|
||||
ycCodeRequest.setImage(image);
|
||||
ycCodeRequest.setToken("9LQ1ATKVEeO8Arhq-HavXzpHvkzdZz_r7ydmqlYhp9c");
|
||||
ycCodeRequest.setLabelImage(templateImage);
|
||||
|
||||
String resp = HttpService.doPost(YUN_CODE_API_URL, header, JSON.toJSONString(ycCodeRequest));
|
||||
YcCodeBaseResponse<YcCodeDataResp> response = JSON.parseObject(resp, new TypeReference<YcCodeBaseResponse<YcCodeDataResp>>() {
|
||||
});
|
||||
if (Objects.isNull(response)) {
|
||||
return null;
|
||||
}
|
||||
Integer code = resp.getCode();
|
||||
if (200 == code) {
|
||||
return resp.getData().getData();
|
||||
Integer code = response.getCode();
|
||||
if (10000 == code) {
|
||||
YcCodeDataResp data = response.getData();
|
||||
if (Objects.isNull(data)) {
|
||||
return null;
|
||||
}
|
||||
Integer dataCode = data.getCode();
|
||||
if (0 == dataCode) {
|
||||
String dataData = data.getData();
|
||||
if (StringUtils.isNotBlank(dataData)) {
|
||||
String[] split = dataData.split("\\|");
|
||||
return Arrays.asList(split);
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -4,11 +4,13 @@ import com.xiang.common.pojo.code.YcCodeBaseResponse;
|
||||
import com.xiang.common.pojo.code.YcCodeDataResp;
|
||||
import com.xiang.common.pojo.code.YcCodeRequest;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface ICodeService {
|
||||
|
||||
String templateCodeResolve(String image);
|
||||
|
||||
String codeResolve(String image, String extra);
|
||||
List<String> codeResolve(String image, String extra);
|
||||
|
||||
YcCodeBaseResponse<YcCodeDataResp> baseCodeResolve(Integer type, String image, String extra);
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
||||
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.service.ICodeService;
|
||||
@@ -17,6 +18,7 @@ import com.xiang.common.utils.DateUtils;
|
||||
import com.xiang.common.utils.OkHttpUtil;
|
||||
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;
|
||||
@@ -362,19 +364,54 @@ public class ZlbServiceImpl implements ZlbService {
|
||||
//获取图片验证码
|
||||
String s = client.postJson(ZlbUrlConstants.captchaUrl, null, "{}");
|
||||
JSONObject jsonObject = JSON.parseObject(s);
|
||||
String templateImage = JSON.toJSONString(jsonObject.get("templateImage"));
|
||||
String templeCode = codeService.templateCodeResolve(templateImage);
|
||||
String id = (String) jsonObject.get("id");
|
||||
String captcha = JSON.toJSONString(jsonObject.get("captcha"));
|
||||
String backgroundImage = JSON.toJSONString(JSON.parseObject(captcha).get("backgroundImage"));
|
||||
String track = codeService.codeResolve(backgroundImage, templeCode);
|
||||
String templateImage = JSON.toJSONString(JSON.parseObject(captcha).get("templateImage"));
|
||||
List<String> trackList = codeService.codeResolve(backgroundImage, templateImage);
|
||||
ZlbOrderInfo orderInfo = new ZlbOrderInfo();
|
||||
orderInfo.setId(id);
|
||||
//获取验证码轨迹
|
||||
ZlbOrderInfo zlbOrderInfo = JSONObject.parseObject(track, ZlbOrderInfo.class);
|
||||
zlbOrderInfo.setSiteOrderDetailsStr(siteOrderDetailsStr);
|
||||
String jsonString = JSON.toJSONString(zlbOrderInfo);
|
||||
List<ZlbOrderInfo.ZlbData.TrackList> trackListList = convert(trackList);
|
||||
ZlbOrderInfo.ZlbData data = new ZlbOrderInfo.ZlbData();
|
||||
// data.setBgImageWidth();
|
||||
// data.setBgImageHeight();
|
||||
// data.setStartTime();
|
||||
// data.setStopTime();
|
||||
data.setTrackList(trackListList);
|
||||
|
||||
orderInfo.setData(data);
|
||||
orderInfo.setSiteOrderDetailsStr(siteOrderDetailsStr);
|
||||
String jsonString = JSON.toJSONString(orderInfo);
|
||||
log.info("json:\n {}", jsonString);
|
||||
return jsonString;
|
||||
}
|
||||
|
||||
private List<ZlbOrderInfo.ZlbData.TrackList> convert(List<String> trackList) {
|
||||
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");
|
||||
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteRedis(String name) {
|
||||
// 定义模糊匹配模式
|
||||
|
||||
Reference in New Issue
Block a user