|
|
@@ -0,0 +1,150 @@
|
|
|
+package com.nb.web.service.bus.service;
|
|
|
+
|
|
|
+import cn.hutool.core.util.ObjectUtil;
|
|
|
+import com.nb.common.crud.BaseService;
|
|
|
+import com.nb.web.service.bus.YiXinQian.UserInfoData;
|
|
|
+import com.nb.web.service.bus.YiXinQian.UserInfoQueryParam;
|
|
|
+import com.nb.web.service.bus.YiXinQian.YixinqianService;
|
|
|
+import com.nb.web.service.bus.entity.BusUserCertInfo;
|
|
|
+import com.nb.web.service.bus.mapper.BusUserCertInfoMapper;
|
|
|
+import lombok.AllArgsConstructor;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import java.text.ParseException;
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
+import java.util.Date;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @author lifang
|
|
|
+ * @version 1.0.0
|
|
|
+ * @ClassName LocalAppArticleService.java
|
|
|
+ * @Description app宣教文章
|
|
|
+ * @createTime 2022年03月19日 09:27:00
|
|
|
+ */
|
|
|
+@Service
|
|
|
+@Slf4j
|
|
|
+@AllArgsConstructor
|
|
|
+public class LocalBusUserCertInfoService extends BaseService<BusUserCertInfoMapper, BusUserCertInfo,String> {
|
|
|
+ private final YixinqianService yixinqianService;
|
|
|
+ @Override
|
|
|
+ public void validateBeforeSave(BusUserCertInfo entity) {
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void validateBeforeUpdate(BusUserCertInfo entity) {
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void validateBeforeDelete(String id) {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ public String queryUserBase64Info(UserInfoQueryParam query){
|
|
|
+ String userId = query.getUserId();
|
|
|
+ BusUserCertInfo busUserCertInfo = baseMapper.selectById(userId);
|
|
|
+
|
|
|
+ // 判断证书是否过期
|
|
|
+ if (ObjectUtil.isNull(busUserCertInfo) || isCertificateExpired(busUserCertInfo)) {
|
|
|
+ // 如果记录不存在或证书已过期,删除旧记录(如果存在)
|
|
|
+ if (!ObjectUtil.isNull(busUserCertInfo)) {
|
|
|
+ baseMapper.deleteById(userId);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 从接口重新查询
|
|
|
+ UserInfoData userInfoData = yixinqianService.queryUserInfo(query);
|
|
|
+ busUserCertInfo = convertToBusUserCertInfo(userInfoData);
|
|
|
+ baseMapper.insert(busUserCertInfo);
|
|
|
+ }
|
|
|
+ return busUserCertInfo.getSignCert();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 判断证书是否过期
|
|
|
+ * @param certInfo 证书信息
|
|
|
+ * @return true表示已过期,false表示未过期
|
|
|
+ */
|
|
|
+ private boolean isCertificateExpired(BusUserCertInfo certInfo) {
|
|
|
+ if (certInfo.getCertEndTime() == null) {
|
|
|
+ return true; // 如果结束时间为空,认为已过期
|
|
|
+ }
|
|
|
+
|
|
|
+ // 比较证书结束时间和当前时间
|
|
|
+ return certInfo.getCertEndTime().before(new Date());
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 将 UserInfoData 对象转换为 BusUserCertInfo 对象
|
|
|
+ * @param userInfoData 源数据对象
|
|
|
+ * @return 转换后的 BusUserCertInfo 对象
|
|
|
+ */
|
|
|
+ public static BusUserCertInfo convertToBusUserCertInfo(UserInfoData userInfoData) {
|
|
|
+ if (userInfoData == null) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ BusUserCertInfo certInfo = new BusUserCertInfo();
|
|
|
+
|
|
|
+ // 基础信息转换
|
|
|
+ certInfo.setUserType(userInfoData.getUserType());
|
|
|
+ certInfo.setOrgId(userInfoData.getOrgId());
|
|
|
+ certInfo.setUserId(userInfoData.getUserId());
|
|
|
+ certInfo.setUserName(userInfoData.getUserName());
|
|
|
+ certInfo.setUserIdcard(userInfoData.getUserIdcard());
|
|
|
+ certInfo.setUserPhone(userInfoData.getUserPhone());
|
|
|
+ certInfo.setUserEmail(userInfoData.getUserEmail());
|
|
|
+ certInfo.setRealNameStatus(userInfoData.getRealNameStatus());
|
|
|
+ certInfo.setWechatOpenId(userInfoData.getWechatOpenId());
|
|
|
+
|
|
|
+ // 证书信息转换
|
|
|
+ certInfo.setCertSn(userInfoData.getCertSN());
|
|
|
+ certInfo.setCertDn(userInfoData.getCertDN());
|
|
|
+ certInfo.setCertIssuer(userInfoData.getCertIssuer());
|
|
|
+ certInfo.setSignatureImg(userInfoData.getSignatureImg());
|
|
|
+ certInfo.setDepName(userInfoData.getDepName());
|
|
|
+ certInfo.setIsAuthValid(userInfoData.getIsAuthValid());
|
|
|
+ certInfo.setSignCert(userInfoData.getSignCert());
|
|
|
+
|
|
|
+ // 日期转换 (字符串转Date)
|
|
|
+ if (userInfoData.getCertStartTime() != null && !userInfoData.getCertStartTime().isEmpty()) {
|
|
|
+ // 注意:这里需要根据实际的日期格式进行解析
|
|
|
+ // 假设格式为 "yyyy-MM-dd HH:mm:ss"
|
|
|
+ try {
|
|
|
+ certInfo.setCertStartTime(parseDate(userInfoData.getCertStartTime()));
|
|
|
+ } catch (Exception e) {
|
|
|
+ // 处理日期解析异常
|
|
|
+ certInfo.setCertStartTime(null);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (userInfoData.getCertEndTime() != null && !userInfoData.getCertEndTime().isEmpty()) {
|
|
|
+ try {
|
|
|
+ certInfo.setCertEndTime(parseDate(userInfoData.getCertEndTime()));
|
|
|
+ } catch (Exception e) {
|
|
|
+ certInfo.setCertEndTime(null);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (userInfoData.getImageUpdateTime() != null && !userInfoData.getImageUpdateTime().isEmpty()) {
|
|
|
+ try {
|
|
|
+ certInfo.setImageUpdateTime(parseDate(userInfoData.getImageUpdateTime()));
|
|
|
+ } catch (Exception e) {
|
|
|
+ certInfo.setImageUpdateTime(null);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return certInfo;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 日期字符串解析方法(根据实际格式调整)
|
|
|
+ * @param dateStr 日期字符串
|
|
|
+ * @return Date 对象
|
|
|
+ * @throws ParseException 解析异常
|
|
|
+ */
|
|
|
+ private static Date parseDate(String dateStr) throws ParseException {
|
|
|
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
+ return sdf.parse(dateStr);
|
|
|
+ }
|
|
|
+
|
|
|
+}
|