Commit 626fec15 by 牟邦恺

添加驾驶证图片接口

parent 92b90256
......@@ -64,6 +64,7 @@
<artifactId>redisson-spring-boot-starter</artifactId>
<version>3.9.1</version>
</dependency>
</dependencies>
<build>
......
package com.hikcreate.edl.pub.web.mobile.api.controller;
import com.alibaba.fastjson.JSONObject;
import com.hikcreate.common.sdk.response.apiparam.Response;
import com.hikcreate.common.sdk.response.apiparam.ResponseGenerator;
import com.hikcreate.common.sdk.response.statuscode.StatusCode;
import com.hikcreate.edl.common.image.builder.domain.DlImageDO;
import com.hikcreate.edl.pub.web.mobile.domain.CredentialsImageService;
import com.hikcreate.edl.pub.web.mobile.infra.core.annotatiion.HeaderDecryptAnnotation;
import com.hikcreate.edl.pub.web.mobile.infra.core.configbean.FastDfsConfigBean;
import com.hikcreate.edl.pub.web.mobile.infra.data.feign.edl_pvt_service_drivinglicense.DrivingLicenseFeign;
import com.hikcreate.edl.pub.web.mobile.infra.data.feign.edl_pvt_service_drivinglicense.request.CreditIdCardMicReq;
import com.hikcreate.edl.pub.web.mobile.infra.data.feign.edl_pvt_service_drivinglicense.response.DrivingLicenseMicRes;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletResponse;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
/**
* 驾驶证图片接口
*
* @author MOUBK
* @menu
* @create 2020/7/20 17:44
**/
@RestController
@RequestMapping("/drivingLicense")
@Slf4j
public class DrivingLicenseController {
@Autowired
private CredentialsImageService credentialsImageService;
@Autowired
private DrivingLicenseFeign drivingLicenseFeign;
@Autowired
private FastDfsConfigBean fastDfsConfigBean;
@GetMapping("/image")
@HeaderDecryptAnnotation
public void image(@RequestParam("idCard") String idCard, HttpServletResponse response) {
DrivingLicenseMicRes drivingLicenseMicRes = drivingLicenseFeign.getByIdCard(new CreditIdCardMicReq().setIdCard(idCard)).fallback().getData();
DlImageDO dlImageDO = new DlImageDO();
dlImageDO.setAddress(drivingLicenseMicRes.getAddress());
dlImageDO.setBelowLicenseNumber(drivingLicenseMicRes.getIdCard());
dlImageDO.setAvatarFullUrl(fastDfsConfigBean.genBigDataInnerUrl(drivingLicenseMicRes.getAvatar()));
dlImageDO.setBirthday(drivingLicenseMicRes.getBirthday());
dlImageDO.setLicenseNumber(drivingLicenseMicRes.getIdCard());
dlImageDO.setInitLicenseDate(drivingLicenseMicRes.getIssueDate());
dlImageDO.setName(drivingLicenseMicRes.getRealName());
dlImageDO.setBelowName(drivingLicenseMicRes.getRealName());
dlImageDO.setModel(drivingLicenseMicRes.getLicenseType());
dlImageDO.setNationality(drivingLicenseMicRes.getNationality());
dlImageDO.setSex(drivingLicenseMicRes.getGender());
dlImageDO.setValidityPeriod(drivingLicenseMicRes.getEffectiveDate() + "至" + drivingLicenseMicRes.getExpiryDate());
dlImageDO.setRecord("");
dlImageDO.setFileNumber(drivingLicenseMicRes.getFileNum());
ByteArrayOutputStream outputStream = (ByteArrayOutputStream) credentialsImageService.genDlImage(dlImageDO);
try {
setHeader(response, drivingLicenseMicRes.getIdCard() + ".jpg");
response.getOutputStream().write(outputStream.toByteArray());
} catch (Exception e) {
log.error("Get dl img E, idCard={}, msg={}", idCard, e);
getResException(response, "获取驾照图片异常");
} finally {
try {
if (null != outputStream) {
outputStream.close();
}
} catch (Exception e) {
log.error("Get dl img IOE, msg={}", e);
}
}
}
private void getResException(HttpServletResponse response, String msg) {
try {
Response<Void> res = ResponseGenerator.fail(StatusCode.SYSTEM_ERROR, msg);
response.setContentType("application/json;charset=UTF-8");
response.getWriter().write(JSONObject.toJSONString(res));
} catch (IOException e) {
log.error("Get dl header IOE, msg={}", e);
}
}
private void setHeader(HttpServletResponse resposne, String fileName) {
resposne.setDateHeader("Expires", 0L);
resposne.setHeader("Cache-Control", "no-store, no-cache, must-revalidate");
resposne.addHeader("Cache-Control", "post-check=0, pre-check=0");
resposne.setHeader("Pragma", "no-cache");
resposne.setContentType("image/jpeg");
resposne.setHeader("Content-Disposition", "attachment;filename=" + fileName);
}
}
......@@ -32,6 +32,10 @@
<artifactId>distributed-lock-starter</artifactId>
<version>${parent.version}</version>
</dependency>
<dependency>
<groupId>com.hikcreate.edl.common</groupId>
<artifactId>image-builder</artifactId>
</dependency>
</dependencies>
</project>
package com.hikcreate.edl.pub.web.mobile.domain;
import com.hikcreate.edl.common.image.builder.domain.DlImageDO;
import java.io.OutputStream;
/**
* @author MOUBK
* @create 2020/7/20 17:52
*/
public interface CredentialsImageService {
/**
* 生成驾驶证图片.包含主副页
*
* @param params 参数
* @return
*/
OutputStream genDlImage(DlImageDO params);
}
......@@ -26,7 +26,7 @@ import com.hikcreate.edl.pub.web.mobile.infra.data.feign.dcp_service_vehicle.par
import com.hikcreate.edl.pub.web.mobile.infra.data.feign.dcp_service_vehicle.param.response.VehicleRes;
import com.hikcreate.edl.pub.web.mobile.infra.data.feign.edl_pub_service_sms.SmsFeign;
import com.hikcreate.edl.pub.web.mobile.infra.data.feign.edl_pub_service_sms.param.request.CheckVerifyCodeMicReq;
import com.hikcreate.edl.pub.web.mobile.infra.data.feign.edl_pvt_service_drivinglicense.DrivingLicenseQrFeign;
import com.hikcreate.edl.pub.web.mobile.infra.data.feign.edl_pvt_service_drivinglicense.DrivingLicenseFeign;
import com.hikcreate.edl.pub.web.mobile.infra.data.feign.edl_pvt_service_drivinglicense.request.IdCardMicReq;
import com.hikcreate.edl.pub.web.mobile.infra.data.feign.edl_pvt_service_drivinglicense.response.DlQrRes;
import com.hikcreate.edl.pub.web.mobile.infra.data.feign.pvt_service_traffic.parm.request.ViolationListByTimeReq;
......@@ -40,7 +40,6 @@ import com.hikcreate.edl.pub.web.mobile.infra.model.param.request.BindSmsValidRe
import com.hikcreate.edl.pub.web.mobile.infra.model.param.request.H5BindInfoQuery;
import com.hikcreate.edl.pub.web.mobile.infra.model.param.request.UnBindReq;
import com.hikcreate.edl.pub.web.mobile.infra.model.param.response.BindInfoQueryRes;
import com.hikcreate.edl.pub.web.mobile.infra.model.param.response.BindInfoRes;
import com.hikcreate.edl.pub.web.mobile.infra.model.param.response.DrivingLicenseInfoRes;
import com.hikcreate.edl.pub.web.mobile.infra.model.param.response.InsuranceInfoRes;
import com.hikcreate.edl.pub.web.mobile.infra.model.param.response.ResultList;
......@@ -86,7 +85,7 @@ public class BindServiceImpl extends ServiceImpl<BindInfoMapper, ParkBindInfo> i
@Autowired
private UnqIdUtil unqIdUtil;
@Autowired
private DrivingLicenseQrFeign drivingLicenseQrFeign;
private DrivingLicenseFeign drivingLicenseFeign;
@Autowired
private SmsFeign smsFeign;
......@@ -437,7 +436,7 @@ public class BindServiceImpl extends ServiceImpl<BindInfoMapper, ParkBindInfo> i
/**
* 获取二维码信息
*/
Response<DlQrRes> qrInfo = drivingLicenseQrFeign.getQrInfo(new IdCardMicReq().setIdCard(byPlateNumAndType.getSfzmhm()));
Response<DlQrRes> qrInfo = drivingLicenseFeign.getQrInfo(new IdCardMicReq().setIdCard(byPlateNumAndType.getSfzmhm()));
if (!qrInfo.isSuccess() || qrInfo.getData() == null) {
return ResultGenerator.fail(ResultCode.DRIVING_LICENSE_UNKNOWN);
}
......
package com.hikcreate.edl.pub.web.mobile.domain.impl;
import com.alibaba.fastjson.JSONObject;
import com.hikcreate.common.sdk.exception.BusinessException;
import com.hikcreate.edl.common.image.builder.domain.DlImageDO;
import com.hikcreate.edl.common.image.builder.refactor.DrawDispatcher;
import com.hikcreate.edl.pub.web.mobile.domain.CredentialsImageService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.io.OutputStream;
/**
* @author MOUBK
* @create 2020/7/20 17:53
*/
@Slf4j
@Service
public class CredentialsImageServiceImpl implements CredentialsImageService {
@Autowired
private DrawDispatcher drawDispatcher;
@Override
public OutputStream genDlImage(DlImageDO params) {
OutputStream outputStream;
try {
outputStream = drawDispatcher.drawDl(params);
} catch (Exception e) {
log.error("Gen DrivingLicense Image Error, param={}, msg={}", JSONObject.toJSONString(params), e);
throw new BusinessException("获取驾驶证图片失败");
}
return outputStream;
}
}
package com.hikcreate.edl.pub.web.mobile.infra.core.configbean;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
/**
* @author zhangfubing
* @create 2019/4/28 15:28
*/
@Component
@ConfigurationProperties("biz.fastdfs")
@Data
public class FastDfsConfigBean {
/**
* FastDfs地址
*/
private String bigDataInnerUrl;
/**
* 大数据fastUrl
*
* @param suffix
* @return
*/
public String genBigDataInnerUrl(String suffix) {
return bigDataInnerUrl + suffix;
}
}
\ No newline at end of file
package com.hikcreate.edl.pub.web.mobile.infra.data.feign.dcp_service_vehicle.param.request;
import lombok.Data;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank;
......@@ -9,6 +10,7 @@ package com.hikcreate.edl.pub.web.mobile.infra.data.feign.dcp_service_vehicle.pa
* @create 2019/7/5 14:56
*/
@Data
@Accessors(chain = true)
public class IdCardQueryReq {
@NotBlank(message = "IdCard is not blank")
......
package com.hikcreate.edl.pub.web.mobile.infra.data.feign.edl_pvt_service_drivinglicense;
import com.hikcreate.common.sdk.response.apiparam.Response;
import com.hikcreate.edl.pub.web.mobile.infra.data.feign.edl_pvt_service_drivinglicense.request.CreditIdCardMicReq;
import com.hikcreate.edl.pub.web.mobile.infra.data.feign.edl_pvt_service_drivinglicense.request.IdCardMicReq;
import com.hikcreate.edl.pub.web.mobile.infra.data.feign.edl_pvt_service_drivinglicense.response.DlQrRes;
import com.hikcreate.edl.pub.web.mobile.infra.data.feign.edl_pvt_service_drivinglicense.response.DrivingLicenseMicRes;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
/**
* 驾照调用
*
* @author MOUBK
* @create 2019/4/9 19:49
*/
@FeignClient(value = "edl-pvt-service-dl", path = "drivingLicense")
public interface DrivingLicenseFeign {
@PostMapping("getByIdCard")
Response<DrivingLicenseMicRes> getByIdCard(@RequestBody CreditIdCardMicReq req);
@PostMapping("/qr/getQrInfo")
Response<DlQrRes> getQrInfo(@RequestBody @Validated IdCardMicReq req);
}
package com.hikcreate.edl.pub.web.mobile.infra.data.feign.edl_pvt_service_drivinglicense;
import com.hikcreate.common.sdk.response.apiparam.Response;
import com.hikcreate.edl.pub.web.mobile.infra.data.feign.edl_pvt_service_drivinglicense.request.IdCardMicReq;
import com.hikcreate.edl.pub.web.mobile.infra.data.feign.edl_pvt_service_drivinglicense.response.DlQrRes;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
/**
*
*/
@FeignClient(value = "edl-pvt-service-dl", path = "drivingLicense/qr")
//@FeignClient(value = "edl-pvt-service-dl", path = "drivingLicense/qr")
public interface DrivingLicenseQrFeign {
@PostMapping("getQrInfo")
Response<DlQrRes> getQrInfo(@RequestBody @Validated IdCardMicReq req);
// @PostMapping("getQrInfo")
// Response<DlQrRes> getQrInfo(@RequestBody @Validated IdCardMicReq req);
}
package com.hikcreate.edl.pub.web.mobile.infra.data.feign.edl_pvt_service_drivinglicense.request;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import static com.hikcreate.edl.common.constant.ValidateConstant.ID_CARD_CONSTRAINT_REGEXP;
/**
* @author MOUBK
* @create 2019/4/8 19:43
*/
@Data
@NoArgsConstructor
@Accessors(chain = true)
public class CreditIdCardMicReq {
@Pattern(regexp = ID_CARD_CONSTRAINT_REGEXP, message = "身份证号不正确")
@NotNull
private String idCard;
}
package com.hikcreate.edl.pub.web.mobile.infra.data.feign.edl_pvt_service_drivinglicense.response;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.util.List;
/**
* @author MOUBK
* @create 2019/4/9 17:49
*/
@Data
@NoArgsConstructor
@Accessors(chain = true)
public class DrivingLicenseMicRes {
// 驾照ID
private Long id;
// 驾驶证头像
private String avatar;
// 清分日期
private String clearDate;
// 出身年月日
private String birthday;
// 剩余计分
private Integer residualScore;
// 累计计分
private Integer cumulativeScore;
// 生效开始日期
private String effectiveDate;
// 有效期止
private String expiryDate;
// 下一审验日期
private String verifyDate;
// 姓名
private String realName;
// 身份证号
private String idCard;
// 档案号
private String fileNum;
// 准驾车型
private String licenseType;
// 发证机关
private String certDepart;
// 发证日期
private String issueDate;
// 国籍
private String nationality;
// 地址
private String address;
// 性别
private String gender;
// 驾驶证状态
private String licenseStatus;
// 联系电话
private String phone;
// 地址区划
private String residenceZone;
// 是否锁定
private Boolean isLock;
// 准驾车型列表
private List<String> licenseTypes;
}
......@@ -73,6 +73,11 @@
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.hikcreate.edl.common</groupId>
<artifactId>image-builder</artifactId>
<version>1.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.hikcreate.edl.pub.web.mobile</groupId>
<artifactId>api</artifactId>
<version>${version}</version>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment