浏览代码

Merge branch 'master' into feature-settleexport-210712

lixuesong 4 年之前
父节点
当前提交
d1d52e1ac1

+ 4 - 3
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/ApiController.java

@@ -3015,6 +3015,7 @@ public class ApiController {
 		int score = 0;
 		WmWkAlbum wmWkAlbum = null;
 		WmWkArticle wmWkArticle = null;
+		WmScorePackageStatus scorePackageStatus = null;
 
 		if (StringUtils.isEmpty(id) || StringUtils.isEmpty(packageId)) {
 			return R.ok();
@@ -3094,7 +3095,7 @@ public class ApiController {
 					return R.failed("获取积分包异常,任务保存失败");
 				}
 
-				WmScorePackageStatus scorePackageStatus = statusList.get(0);
+				scorePackageStatus = statusList.get(0);
 
 				WmWkArticleShare wmWkArticleShare = new WmWkArticleShare();
 				wmWkArticleShare.setShareUserid(userVO.getUserId() + "");
@@ -3211,11 +3212,11 @@ public class ApiController {
 
 
 				// 判断是否保存前最后校验一遍文章分享和文章阅读以及产品分享和产品分享阅读所做的积分值是否在比例范围之内(初始设定为30%)
-				if (needToCheckLimit) {
+				if (needToCheckLimit && null != scorePackageStatus) {
 					String value = sysPublicParamService.getSysPublicParamKeyToValue("SHARE_READ_TASK_SCORE_UPPER_LIMIT_RATIO");
 					value = StringUtils.isEmpty(value) ? "0.3" : value;
 					log.warn("系统当前分享类及分享阅读类积分上限:【{}】", value);
-					int limit = (int) (tWmScorePackage.getScore() * Double.parseDouble(value));
+					int limit = (int) (Integer.parseInt(scorePackageStatus.getUserScore()) * Double.parseDouble(value));
 					List<WmTask> taskList = wmTaskService.list(Wrappers.<WmTask>lambdaQuery()
 							// 两对分享阅读任务
 							.in(WmTask::getTaskTypeId, Arrays.asList("8", "9", "10", "11"))

+ 54 - 1
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/WmTaxHelperController.java

@@ -733,6 +733,59 @@ public class WmTaxHelperController {
 		return R.failed("该结算主体信息不全,不支持税邦云操作");
 	}
 
+	/**
+	 * 结算回调操作
+	 *
+	 * @param userId  用户id
+	 * @param body    回调内容(加密)
+	 * @return 回调结果
+	 */
+	@Inner(value = false)
+	@PostMapping(value = "/{user_id}/settlementNotify")
+	public TaxHelperResponse taxHelperSettlementNotify(@PathVariable(value = "user_id") String userId,
+													   @RequestBody String body) {
+		try {
+			// 获取税邦云账号
+			SysSocialDetails condition = new SysSocialDetails();
+			condition.setType(LoginTypeEnum.TAX_HELPER.getType());
+			SysSocialDetails socialDetails = sysSocialDetailsMapper.selectOne(new QueryWrapper<>(condition));
+			String randomKey = socialDetails.getRandomKey();
+
+			//解密回调信息
+			String resInfo = taxHelperService.decryptResp(body, randomKey);
+			JSONObject jsonObject = JSONUtil.parseObj(resInfo);
+			String code = jsonObject.getStr("code");
+
+			// 回调成功操作
+			if ("2000".equals(code)) {
+				String streamId = jsonObject.getStr("streamId");
+
+				if (StringUtils.isEmpty(streamId)) {
+					log.info("streamId获取失败,{}", userId);
+				} else {
+					// 判断当前用户是否已经存在回调操作,避免多次回调
+					String cacheKey = CacheConstants.TAX_HELPER_SETTLEMENT_NOTIFY_KEY + userId;
+
+					boolean absent = redisTemplate.opsForValue().setIfAbsent(cacheKey, userId, 3, TimeUnit.SECONDS);
+
+					if (!absent) {
+						log.error("当前用户:{},正在处理结算回调操作。", userId);
+						return new TaxHelperResponse("4000", "结算通知回调重复");
+					}
+
+					settleNoteService.settleNotify(streamId, true);
+				}
+				return new TaxHelperResponse("2000", "结算通知回调成功");
+			} else {
+				return new TaxHelperResponse("4000", "结算通知回调失败");
+			}
+
+		} catch (Exception e) {
+			log.error("税邦云解密失败");
+			return new TaxHelperResponse("4000", "回调信息解密失败");
+		}
+	}
+
 
 	/**
 	 * 结算回调操作
@@ -744,7 +797,7 @@ public class WmTaxHelperController {
 	 */
 	@Inner(value = false)
 	@PostMapping(value = "/{user_id}/{version}/settlementNotify")
-	public TaxHelperResponse taxHelperSettlementNotify(@PathVariable(value = "user_id") String userId,
+	public TaxHelperResponse taxHelperSettlementNotifyV2(@PathVariable(value = "user_id") String userId,
 													   @PathVariable(value = "version") String version,
 													   @RequestBody String body) {