Browse Source

feat: 中智结算回调

李学松 2 years ago
parent
commit
af828b9372

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

@@ -15,12 +15,14 @@ import com.qunzhixinxi.hnqz.admin.entity.OladingInputRecord;
 import com.qunzhixinxi.hnqz.admin.entity.SysDeptSub;
 import com.qunzhixinxi.hnqz.admin.entity.XinbadaInputRecord;
 import com.qunzhixinxi.hnqz.admin.entity.ZhongyiyunInputRecord;
+import com.qunzhixinxi.hnqz.admin.entity.ZhongzhiInputRecord;
 import com.qunzhixinxi.hnqz.admin.enums.SubjectLocation;
 import com.qunzhixinxi.hnqz.admin.service.HuiqiyunInputRecordService;
 import com.qunzhixinxi.hnqz.admin.service.LingcaiaiInputRecordService;
 import com.qunzhixinxi.hnqz.admin.service.SysDeptSubService;
 import com.qunzhixinxi.hnqz.admin.service.XinbadaInputRecordService;
 import com.qunzhixinxi.hnqz.admin.service.ZhongyiyunInputRecordService;
+import com.qunzhixinxi.hnqz.admin.service.ZhongzhiInputRecordService;
 import com.qunzhixinxi.hnqz.admin.service.gig.GigThirdApiService;
 import com.qunzhixinxi.hnqz.admin.service.gig.OladingInputRecordService;
 import com.qunzhixinxi.hnqz.admin.util.ZhongyiyunUtils;
@@ -69,10 +71,56 @@ public class GigThirdApiController {
 
 	private final ZhongyiyunInputRecordService zhongyiyunInputRecordService;
 
+	private final ZhongzhiInputRecordService zhongzhiInputRecordService;
+
 	private final SysDeptSubService sysDeptSubService;
 
 	private final RedisTemplate redisTemplate;
 
+	/**
+	 * 中智回调异步通知记录
+	 *
+	 * @param body
+	 * @param headers
+	 * @return
+	 */
+	@PostMapping("/zhongzhi/pay-notify")
+	public Map<String, Object> zhongZhiSettleNotify(@RequestBody String body, @RequestHeader HttpHeaders headers) {
+		log.info("中智结算请求方法参数:body={}, headers={}", body, headers);
+
+		// 请求body json
+		JSONObject bodyJson = JSONUtil.parseObj(body);
+
+		// 平台任务编号
+		String orderNo = bodyJson.getStr("orderNo");
+
+		Map<String, Object> result = new HashMap<>();
+
+		String redisKey = String.format("%s_%s", CacheConstants.ZHONG_YI_YUN_SETTLE_NOTIFY_KEY, orderNo);
+		Boolean absent = redisTemplate.opsForValue().setIfAbsent(redisKey, orderNo, 30, TimeUnit.MINUTES);
+		if (Boolean.FALSE.equals(absent)) {
+			log.warn("存在在途操作orderNo={}", orderNo);
+			result.put("code", "00000400");
+			result.put("msg", "成功");
+			return result;
+		}
+
+		// 请求记录到数据库
+		ZhongzhiInputRecord inputRecord = new ZhongzhiInputRecord();
+		inputRecord.setOrderNo(orderNo);
+		inputRecord.setReqType(ZhongzhiInputRecord.ReqType.SETTLE_NOTIFY.getType());
+		inputRecord.setReqBody(body);
+		zhongzhiInputRecordService.save(inputRecord);
+
+		// 业务处理
+		gigThirdApiService.zhongzhiSettleNotify(bodyJson);
+
+		result.put("code", "00000200");
+		result.put("msg", "成功");
+
+		return result;
+	}
+
 	/**
 	 * 众蚁云结算异步通知回调
 	 *

+ 68 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/entity/ZhongzhiInputRecord.java

@@ -0,0 +1,68 @@
+package com.qunzhixinxi.hnqz.admin.entity;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.Getter;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * 中智回调异步通知记录
+ * @TableName zhongzhi_input_record
+ */
+@TableName(value ="zhongzhi_input_record")
+@Data
+public class ZhongzhiInputRecord implements Serializable {
+
+	private static final long serialVersionUID = 2315253613947884869L;
+
+	/**
+     * 主键id
+     */
+    @TableId(type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 请求业务类型
+     */
+    private String reqType;
+
+    /**
+     * 平台任务编号
+     */
+    private String orderNo;
+
+    /**
+     * 请求body
+     */
+    private String reqBody;
+
+    /**
+     * 创建时间
+     */
+    private LocalDateTime createTime;
+
+	@Getter
+	@AllArgsConstructor
+	public enum ReqType {
+//		SIGN_NOTIFY("SIGN_NOTIFY", "签约回调"),
+		SETTLE_NOTIFY("SETTLE_NOTIFY", "结算回调");
+
+		/**
+		 * 请求类型
+		 */
+		@EnumValue
+		private final String type;
+
+		/**
+		 * 描述
+		 */
+		private final String desc;
+	}
+
+}

+ 18 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/mapper/ZhongzhiInputRecordMapper.java

@@ -0,0 +1,18 @@
+package com.qunzhixinxi.hnqz.admin.mapper;
+
+import com.qunzhixinxi.hnqz.admin.entity.ZhongzhiInputRecord;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+* @author snows
+* @description 针对表【zhongzhi_input_record(中智回调异步通知记录)】的数据库操作Mapper
+* @createDate 2023-04-10 15:09:13
+* @Entity com.qunzhixinxi.hnqz.admin.entity.ZhongzhiInputRecord
+*/
+public interface ZhongzhiInputRecordMapper extends BaseMapper<ZhongzhiInputRecord> {
+
+}
+
+
+
+

+ 13 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/ZhongzhiInputRecordService.java

@@ -0,0 +1,13 @@
+package com.qunzhixinxi.hnqz.admin.service;
+
+import com.qunzhixinxi.hnqz.admin.entity.ZhongzhiInputRecord;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+* @author snows
+* @description 针对表【zhongzhi_input_record(中智回调异步通知记录)】的数据库操作Service
+* @createDate 2023-04-10 15:09:13
+*/
+public interface ZhongzhiInputRecordService extends IService<ZhongzhiInputRecord> {
+
+}

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

@@ -14,6 +14,14 @@ import java.util.List;
  */
 public interface GigThirdApiService {
 
+	/**
+	 * 中智结算回调业务处理
+	 *
+	 * @param bodyJson 请求数据
+	 * @return 是否成功
+	 */
+	boolean zhongzhiSettleNotify(JSONObject bodyJson);
+
 	/**
 	 * 众蚁云结算回调业务处理
 	 *

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

@@ -87,6 +87,74 @@ public class GigThirdApiServiceImpl implements GigThirdApiService {
 
 	private final HuiqiyunInputRecordService huiqiyunInputRecordService;
 
+	/**
+	 * 中智结算回调业务处理
+	 *
+	 * @param bodyJson 请求数据
+	 * @return 是否成功
+	 */
+	@Override
+	public boolean zhongzhiSettleNotify(JSONObject bodyJson) {
+		// 平台任务编号
+		String orderNo = bodyJson.getStr("orderNo");
+		// 支付结果,SUCCESS成功,FAIL失败
+		String payResult = bodyJson.getStr("payResult");
+
+		// 根据orderNo查询结算单
+		List<WmScorePackageSettleNote> settleNoteList = scorePackageSettleNoteService.list(Wrappers.<WmScorePackageSettleNote>lambdaQuery()
+				.eq(WmScorePackageSettleNote::getStreamId, orderNo));
+		if (CollUtil.isEmpty(settleNoteList)) {
+			log.warn("订单orderNo={}对应结算单不存在", orderNo);
+			return false;
+		}
+
+		WmScorePackageSettleNote tmp = settleNoteList.get(0);
+
+		int yaoyiStatus = 0;
+		if ("SUCCESS".equals(payResult)) {
+			// 对应要易结算成功状态
+			yaoyiStatus = 1;
+		} else if ("FAIL".equals(payResult)) {
+			yaoyiStatus = 2;
+		} else {
+			log.warn("当前结算payResult不处理");
+			redisTemplate.delete(CacheConstants.SETTLE_PACKAGE_KEY + tmp.getId());
+			return false;
+		}
+
+		// 修改结算状态
+		final int finalYaoyiStatus = yaoyiStatus;
+		List<WmScorePackageSettleNote> updateList = settleNoteList.stream().map(note -> {
+			WmScorePackageSettleNote updateEntity = new WmScorePackageSettleNote();
+			updateEntity.setId(note.getId());
+			updateEntity.setSettleNoteStatus(finalYaoyiStatus);
+			if (finalYaoyiStatus == 1){
+				updateEntity.setNotifyTime(LocalDateTime.now());
+			}
+			updateEntity.setUpdateTime(LocalDateTime.now());
+			return updateEntity;
+		}).collect(Collectors.toList());
+
+		scorePackageSettleNoteService.updateBatchById(updateList);
+
+		WmScorePackage scorePackage = scorePackageService.getById(tmp.getPackageId());
+
+		// 遥领不修改
+		if (!"1611890566".equals(scorePackage.getSendPackageDeptId())) {
+			// 更新积分包状态
+			log.info("更新积分包状态:{}", tmp);
+			WmScorePackage wmScorePackage = new WmScorePackage();
+			wmScorePackage.setId(tmp.getPackageId());
+			wmScorePackage.setSettleStatus(yaoyiStatus);
+			wmScorePackage.setUpdateTime(LocalDateTime.now());
+			scorePackageService.updateById(wmScorePackage);
+		}
+
+		redisTemplate.delete(CacheConstants.SETTLE_PACKAGE_KEY + tmp.getId());
+
+		return true;
+	}
+
 	/**
 	 * 众蚁云结算回调业务处理
 	 *

+ 22 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/ZhongzhiInputRecordServiceImpl.java

@@ -0,0 +1,22 @@
+package com.qunzhixinxi.hnqz.admin.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qunzhixinxi.hnqz.admin.entity.ZhongzhiInputRecord;
+import com.qunzhixinxi.hnqz.admin.service.ZhongzhiInputRecordService;
+import com.qunzhixinxi.hnqz.admin.mapper.ZhongzhiInputRecordMapper;
+import org.springframework.stereotype.Service;
+
+/**
+* @author snows
+* @description 针对表【zhongzhi_input_record(中智回调异步通知记录)】的数据库操作Service实现
+* @createDate 2023-04-10 15:09:13
+*/
+@Service
+public class ZhongzhiInputRecordServiceImpl extends ServiceImpl<ZhongzhiInputRecordMapper, ZhongzhiInputRecord>
+    implements ZhongzhiInputRecordService{
+
+}
+
+
+
+