lixuesong 3 жил өмнө
parent
commit
4d8c3fcd0b

+ 50 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/GigThirdApiController.java

@@ -0,0 +1,50 @@
+package com.qunzhixinxi.hnqz.admin.controller;
+
+import cn.hutool.json.JSONUtil;
+import com.qunzhixinxi.hnqz.admin.entity.model.GigOladingSignUpRequest;
+import com.qunzhixinxi.hnqz.admin.service.gig.GigThirdApiService;
+import com.qunzhixinxi.hnqz.common.core.util.R;
+import com.qunzhixinxi.hnqz.common.log.annotation.SysLog;
+import com.qunzhixinxi.hnqz.common.security.annotation.Inner;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.validation.Valid;
+
+/**
+ * 第三方零工接口
+ *
+ * @author lixuesong
+ * @date 2022年04月17日 11:31
+ */
+@Slf4j
+@RestController
+@AllArgsConstructor
+@RequestMapping("/gig-third-api")
+public class GigThirdApiController {
+
+	private final GigThirdApiService gigThirdApiService;
+
+	/**
+	 * 自由职家签约结果回调
+	 *
+	 * @param request
+	 * @return
+	 */
+	@Inner(value = false)
+	@SysLog("自由职家签约结果回调")
+	@PostMapping("/olading-sign-up-notify")
+	public R<?> oladingSignUpNotify(@Valid @RequestBody GigOladingSignUpRequest signUpRequest, HttpServletRequest request) {
+		log.info("自由职家签约结果回调 客户ip:{}", request.getRemoteAddr());
+		log.info("自由职家签约结果回调 参数:{}", JSONUtil.toJsonStr(signUpRequest));
+
+		gigThirdApiService.oladingSignUpNotify(signUpRequest.getRequestId(), signUpRequest.getStatus());
+
+		return R.ok();
+	}
+}

+ 10 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/SysUserSignCertController.java

@@ -127,6 +127,7 @@ public class SysUserSignCertController {
 	@SysLog("用户签约认证")
 	@PostMapping("/batch-channel-cert")
 	public R<?> batchChannelCert(@RequestBody UserSignCertDTO userSignCertDTO) {
+		// TODO
 		if (userSignCertDTO.getUserId() == null) {
 			return R.failed("userId不能为空");
 		}
@@ -137,6 +138,15 @@ public class SysUserSignCertController {
 		if (CollUtil.isEmpty(userSubList)) {
 			return R.failed("数据异常");
 		}
+		for (SysUserSub userSub : userSubList) {
+			if (StrUtil.isBlank(userSub.getAgreementUrl())) {
+				return R.failed("协议不能为空");
+			}
+			if (!StrUtil.isAllNotBlank(userSub.getIdCardBackUrl(), userSub.getIdCardFrontUrl(),
+					userSub.getCertVideo1Url(), userSub.getCertVideo2Url())) {
+				return R.failed("身份证或视频信息不能为空");
+			}
+		}
 		sysUserSignCertService.batchChannelCert(userSignCertDTO);
 
 		return R.ok();

+ 5 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/entity/SysUserSub.java

@@ -103,6 +103,11 @@ public class SysUserSub extends Model<SysUserSub> {
 	 */
 	private String agreementUrl;
 
+	/**
+	 * 请求流水号
+	 */
+	private String requestId;
+
 	/**
 	 * 创建时间
 	 */

+ 5 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/entity/model/GigBaseInfoModel.java

@@ -41,4 +41,9 @@ public class GigBaseInfoModel implements Serializable {
 	 * 通知url
 	 */
 	private String notifyUrl;
+
+	/**
+	 * 请求流水号
+	 */
+	private String requestId;
 }

+ 45 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/entity/model/GigOladingSignUpRequest.java

@@ -0,0 +1,45 @@
+package com.qunzhixinxi.hnqz.admin.entity.model;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.Getter;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+/**
+ * 自由职家回调参数
+ *
+ * @author lixuesong
+ * @date 2022年04月17日 11:38
+ */
+@Data
+public class GigOladingSignUpRequest {
+
+	/**
+	 * 请求流水号,由商户保持唯一
+	 */
+	@NotBlank(message = "request_id必填")
+	private String requestId;
+
+	/**
+	 * 签约状态;包括已签约、未签约
+	 */
+	@NotNull(message = "status必填")
+	private CertStatus status;
+
+	/**
+	 * 签约状态;包括已签约、未签约
+	 */
+	@Getter
+	@AllArgsConstructor
+	public enum CertStatus {
+
+		UN_SIGNED(0, "未签约"),
+		SIGNED(1, "已签约");
+
+		private final Integer code;
+
+		private final String message;
+	}
+}

+ 42 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/enums/OladingCertStatus.java

@@ -0,0 +1,42 @@
+package com.qunzhixinxi.hnqz.admin.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * {@code CertStatus}
+ * <p>
+ * 易联数科签约状态枚举
+ *
+ * @author Hengchen.Sun
+ * @author lixuesong
+ * @version 1.0.0
+ * @date 2022/03/09 22:21
+ */
+@Getter
+@AllArgsConstructor
+public enum OladingCertStatus {
+
+    UN_SIGNED("0", "未签约"),
+    SIGNED("1", "已签约");
+
+    private final String code;
+
+    private final String message;
+
+    /**
+     * 根据枚举编码获取枚举对象
+     *
+     * @param code 枚举编码
+     * @return 如果存在返回枚举,否则返回 {@code null}
+     */
+    public static OladingCertStatus resolve(final String code) {
+        for (OladingCertStatus yeeCertStatus : OladingCertStatus.values()) {
+            if (yeeCertStatus.getCode().equals(code)) {
+                return yeeCertStatus;
+            }
+        }
+        return UN_SIGNED;
+
+    }
+}

+ 20 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/gig/GigThirdApiService.java

@@ -0,0 +1,20 @@
+package com.qunzhixinxi.hnqz.admin.service.gig;
+
+import com.qunzhixinxi.hnqz.admin.entity.model.GigOladingSignUpRequest;
+
+/**
+ * 第三方零工接口处理
+ *
+ * @author lixuesong
+ * @date 2022年04月17日 11:54
+ */
+public interface GigThirdApiService {
+
+	/**
+	 * 自由职家签约结果回调
+	 *
+	 * @param requestId
+	 * @param status
+	 */
+	void oladingSignUpNotify(String requestId, GigOladingSignUpRequest.CertStatus status);
+}

+ 51 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/gig/impl/GigThirdApiServiceImpl.java

@@ -0,0 +1,51 @@
+package com.qunzhixinxi.hnqz.admin.service.gig.impl;
+
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.qunzhixinxi.hnqz.admin.entity.SysUserSub;
+import com.qunzhixinxi.hnqz.admin.entity.model.GigOladingSignUpRequest;
+import com.qunzhixinxi.hnqz.admin.enums.GigTypeEnum;
+import com.qunzhixinxi.hnqz.admin.service.SysUserSubService;
+import com.qunzhixinxi.hnqz.admin.service.gig.GigThirdApiService;
+import com.qunzhixinxi.hnqz.common.core.exception.ValidateCodeException;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * @author lixuesong
+ * @date 2022年04月17日 11:55
+ */
+@Slf4j
+@Service
+@AllArgsConstructor
+public class GigThirdApiServiceImpl implements GigThirdApiService {
+
+	private final SysUserSubService sysUserSubService;
+
+	/**
+	 * 自由职家签约结果回调
+	 *
+	 * @param requestId
+	 * @param status
+	 */
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void oladingSignUpNotify(String requestId, GigOladingSignUpRequest.CertStatus status) {
+		try {
+			// 先查询requestId是否存在
+			SysUserSub userSub = sysUserSubService.getOne(Wrappers.<SysUserSub>lambdaQuery()
+					.eq(SysUserSub::getGigType, GigTypeEnum.OLADING)
+					.eq(SysUserSub::getRequestId, requestId));
+			if (userSub == null) {
+				throw new ValidateCodeException("requestId不存在");
+			}
+			// 更新状态
+			userSub.setCertStatus(status.getCode());
+			sysUserSubService.updateById(userSub);
+		} catch (Exception e) {
+			log.error("自由职家签约结果回调异常", e);
+			throw new ValidateCodeException("业务处理异常");
+		}
+	}
+}

+ 13 - 6
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/gig/impl/SysUserSignCertServiceImpl.java

@@ -2,6 +2,7 @@ package com.qunzhixinxi.hnqz.admin.service.gig.impl;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.IdUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -25,6 +26,7 @@ import com.qunzhixinxi.hnqz.admin.enums.GigChannelEnum;
 import com.qunzhixinxi.hnqz.admin.enums.GigTypeEnum;
 import com.qunzhixinxi.hnqz.admin.enums.MemberIDCardType;
 import com.qunzhixinxi.hnqz.admin.enums.MemberType;
+import com.qunzhixinxi.hnqz.admin.enums.OladingCertStatus;
 import com.qunzhixinxi.hnqz.admin.enums.PayChannel;
 import com.qunzhixinxi.hnqz.admin.enums.RenlijiaCertStatus;
 import com.qunzhixinxi.hnqz.admin.enums.SubjectTypeEnum;
@@ -152,6 +154,9 @@ public class SysUserSignCertServiceImpl implements SysUserSignCertService {
 	public void saveBaseInfo(UserSignCertDTO userSignCertDTO) {
 		HnqzUser user = SecurityUtils.getUser();
 		Integer operateUserId = user.getId();
+		// 查询user
+		SysUser queryUser = sysUserService.getById(userSignCertDTO.getUserId());
+
 		if (StrUtil.isNotBlank(userSignCertDTO.getIdCardNumber())) {
 			// 更新用户信息
 			SysUser updateUser = new SysUser();
@@ -171,7 +176,7 @@ public class SysUserSignCertServiceImpl implements SysUserSignCertService {
 					&& YeeCertStatus.SIGNED.getCode().equals(String.valueOf(sysUserSub.getCertStatus()))) {
 				return true;
 			} else if (GigTypeEnum.OLADING.equals(sysUserSub.getGigType())
-					&& YeeCertStatus.SIGNED.getCode().equals(String.valueOf(sysUserSub.getCertStatus()))) {
+					&& OladingCertStatus.SIGNED.getCode().equals(String.valueOf(sysUserSub.getCertStatus()))) {
 				return true;
 			} else if (GigTypeEnum.REN_LI_JIA.equals(sysUserSub.getGigType())
 					&& RenlijiaCertStatus.CER_STATUS_1.getCode() == sysUserSub.getCertStatus()) {
@@ -185,7 +190,7 @@ public class SysUserSignCertServiceImpl implements SysUserSignCertService {
 		}
 		// 更新用户签约认证主体信息
 		final SysUserSub finalCopyUserSub = copyUserSub;
-		userSignCertDTO.getGigTypeList().forEach(gigType -> { // TODO
+		userSignCertDTO.getGigTypeList().forEach(gigType -> {
 			SysUserSub userSub = new SysUserSub();
 			userSub.setUserId(userSignCertDTO.getUserId());
 			userSub.setDeptId(user.getDeptId());
@@ -217,7 +222,7 @@ public class SysUserSignCertServiceImpl implements SysUserSignCertService {
 				queryUserSub.setBankCardNumber(userSignCertDTO.getBankCardNumber());
 				queryUserSub.setUpdateTime(LocalDateTime.now());
 				queryUserSub.setUpdateUser(operateUserId);
-				if (finalCopyUserSub != null && StrUtil.isAllBlank(queryUserSub.getIdCardBackUrl(),
+				if (finalCopyUserSub != null && StrUtil.isAllBlank(queryUserSub.getAgreementUrl(), queryUserSub.getIdCardBackUrl(),
 						queryUserSub.getIdCardFrontUrl(), queryUserSub.getCertVideo1Url(), queryUserSub.getCertVideo2Url())) {
 					queryUserSub.setIdCardFrontUrl(finalCopyUserSub.getIdCardFrontUrl());
 					queryUserSub.setIdCardBackUrl(finalCopyUserSub.getIdCardBackUrl());
@@ -227,6 +232,7 @@ public class SysUserSignCertServiceImpl implements SysUserSignCertService {
 				sysUserSubService.updateById(queryUserSub);
 			} else {
 				if (finalCopyUserSub != null) {
+					userSub.setAgreementUrl(finalCopyUserSub.getAgreementUrl());
 					userSub.setIdCardFrontUrl(finalCopyUserSub.getIdCardFrontUrl());
 					userSub.setIdCardBackUrl(finalCopyUserSub.getIdCardBackUrl());
 					userSub.setCertVideo1Url(finalCopyUserSub.getCertVideo1Url());
@@ -287,6 +293,7 @@ public class SysUserSignCertServiceImpl implements SysUserSignCertService {
 	 * @return
 	 */
 	@Override
+	@Transactional(rollbackFor = Exception.class)
 	public boolean batchChannelCert(UserSignCertDTO userSignCertDTO) {
 		Integer userId = userSignCertDTO.getUserId();
 		// 根据用户id查询用户信息、认证信息
@@ -326,6 +333,7 @@ public class SysUserSignCertServiceImpl implements SysUserSignCertService {
 					}).forEach(userSub -> {
 				// 基础信息
 				GigBaseInfoModel baseInfoModel = new GigBaseInfoModel();
+				baseInfoModel.setRequestId(IdUtil.fastSimpleUUID());
 				baseInfoModel.setGigType(userSub.getGigType());
 				baseInfoModel.setGigChannel(userSub.getGigChannel());
 				// 用户信息
@@ -338,7 +346,7 @@ public class SysUserSignCertServiceImpl implements SysUserSignCertService {
 				userInfoModel.setIdCard(sysUser.getIdCardNumber());
 				userInfoModel.setIdCardType(MemberIDCardType.ID_CARD);
 				userInfoModel.setMemberType(MemberType.YAOYI_EXCLUSIVE_PERSONNEL);
-				userInfoModel.setEmail("gig_service@yaoyi.net");
+				userInfoModel.setEmail("gig_service@yaoyi.net"); // TODO
 				userInfoModel.setAddress("北京市-房山区-长阳镇");
 				userInfoModel.setPayChannel(PayChannel.BANK_CARD);
 				userInfoModel.setBankPhone(userSub.getBankPhone());
@@ -453,7 +461,6 @@ public class SysUserSignCertServiceImpl implements SysUserSignCertService {
 				gigInfo.put(userSub.getGigType().name(),
 						this.buildYeeBindCardConfirmModel(sysUser, userSub, dept.getTaxCode(), userSignCertDTO.getBankCardNumber()));
 			} else if (GigTypeEnum.OLADING.equals(userSub.getGigType())) {
-				// TODO
 				gigInfo.put(userSub.getGigType().name(),
 						this.buildOladingBindCardConfirmModel(sysUser, userSub, dept.getTaxCode(), userSignCertDTO.getBankCardNumber()));
 			}
@@ -560,7 +567,7 @@ public class SysUserSignCertServiceImpl implements SysUserSignCertService {
 		userInfoModel.setBankPhone(userSub.getBankPhone());
 		userInfoModel.setBankCard(userSub.getBankCardNumber());
 		userInfoModel.setNewBankCard(newBankCard);
-		userInfoModel.setAddress("北京市-房山区-长阳镇");
+		userInfoModel.setAddress("北京市-房山区-长阳镇"); // TODO
 
 		GigInfoModel infoModel = new GigInfoModel();
 		infoModel.setBaseInfo(baseInfoModel);