Files
script/src/main/java/com/xiang/common/service/CodeServiceImpl.java
2026-05-07 16:38:59 +08:00

97 lines
3.5 KiB
Java

package com.xiang.common.service;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.google.common.collect.Maps;
import com.xiang.common.enums.YcCodeTypeEnum;
import com.xiang.common.pojo.code.YcCodeBaseResponse;
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.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Objects;
@Service
@Slf4j
public class CodeServiceImpl implements ICodeService {
// 云码平台接口api
private static final String YUN_CODE_API_URL = "http://api.jfbym.com/api/YmServer/customApi";
@Override
public String templateCodeResolve(String image) {
YcCodeBaseResponse<YcCodeDataResp> resp = baseCodeResolve(YcCodeTypeEnum.YC_10118.getType(), image, null);
if (Objects.isNull(resp)) {
return null;
}
Integer code = resp.getCode();
if (200 == code) {
String data = resp.getData().getData();
StringBuilder result = new StringBuilder();
for (int i = 0; i < data.length(); i++) {
result.append(data.charAt(i)).append(",");
}
return result.substring(0, result.length() - 1);
}
return null;
}
@Override
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);
ycCodeRequest.setType(YcCodeTypeEnum.YC_310700.getType());
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 = 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;
}
@Override
public YcCodeBaseResponse<YcCodeDataResp> baseCodeResolve(Integer type, String image, String extra) {
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.setType(type);
ycCodeRequest.setExtra(extra);
String resp = HttpService.doPost(YUN_CODE_API_URL, header, JSON.toJSONString(ycCodeRequest));
return JSON.parseObject(resp, new TypeReference<YcCodeBaseResponse<YcCodeDataResp>>() {
});
}
}