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 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 codeResolve(String image, String templateImage) { HashMap 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 response = JSON.parseObject(resp, new TypeReference>() { }); 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 baseCodeResolve(Integer type, String image, String extra) { HashMap 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>() { }); } }