Browse Source

fix: 企业承接终止回收积分值问题

lixuesong 1 year ago
parent
commit
bb0fbfddae

+ 27 - 18
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmScorePackageServiceImpl.java

@@ -3044,8 +3044,7 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
 			throw new RuntimeException("积分包已终止");
 		}
 		// 可分配积分值
-		int recoveryScore = scorePackage.getKfpjf();
-		if (recoveryScore <= 0) {
+		if (scorePackage.getKfpjf() <= 0) {
 			throw new RuntimeException("积分包已全部分派");
 		}
 
@@ -3087,23 +3086,33 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
 			updateEntity.setUpdateUser(userId);
 			log.info("更新积分包参数:{}", updateEntity);
 			this.updateById(updateEntity);
+		}
 
-			// 如果关联了大包 回收整包的积分值到大包的可分配积分值。如果没有关联大包,回收整包积分值到该企业的余额
-			boolean relatedScoreId = StrUtil.isNotBlank(scorePackage.getRelationScoreId()) && Integer.parseInt(scorePackage.getRelationScoreId()) > 0;
-			if (relatedScoreId) {
-				WmScorePackage parentPackage = this.getById(scorePackage.getRelationScoreId());
-				// 更新父级积分包
-				WmScorePackage updateParentPackage = new WmScorePackage();
-				updateParentPackage.setId(scorePackage.getRelationScoreId());
-				updateParentPackage.setKfpjf(parentPackage.getKfpjf() + recoveryScore);
-				updateParentPackage.setUpdateTime(now);
-				updateParentPackage.setUpdateUser(userId);
-				log.info("回收整包的积分值到大包的参数:{}", updateParentPackage);
-				this.updateById(updateParentPackage);
-			} else {
-				// 更新积分余额信息
-				this.updateDeptRecharge(packageId, recoveryScore);
-			}
+		// 回收积分值
+		int recoveryScore = 0;
+		if (UpmsType.TerminatePackageType.ALL.equals(terminatePackageType) || assignedScore <= 0) {
+			// 回收整包积分值
+			recoveryScore = scorePackage.getScore();
+		} else {
+			// 回收剩余积分值
+			recoveryScore = scorePackage.getScore() - assignedScore;
+		}
+
+		// 如果关联了大包 回收整包的积分值到大包的可分配积分值。如果没有关联大包,回收整包积分值到该企业的余额
+		boolean relatedScoreId = StrUtil.isNotBlank(scorePackage.getRelationScoreId()) && Integer.parseInt(scorePackage.getRelationScoreId()) > 0;
+		if (relatedScoreId) {
+			WmScorePackage parentPackage = this.getById(scorePackage.getRelationScoreId());
+			// 更新父级积分包
+			WmScorePackage updateParentPackage = new WmScorePackage();
+			updateParentPackage.setId(scorePackage.getRelationScoreId());
+			updateParentPackage.setKfpjf(parentPackage.getKfpjf() + recoveryScore);
+			updateParentPackage.setUpdateTime(now);
+			updateParentPackage.setUpdateUser(userId);
+			log.info("回收整包的积分值到大包的参数:{}", updateParentPackage);
+			this.updateById(updateParentPackage);
+		} else {
+			// 更新积分余额信息
+			this.updateDeptRecharge(packageId, recoveryScore);
 		}
 
 		return Boolean.TRUE;