Эх сурвалжийг харах

feat: 企业承接积分包终止

lixuesong 1 жил өмнө
parent
commit
b4cfe47231

+ 17 - 103
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/WmScorePackageController.java

@@ -2062,7 +2062,7 @@ public class WmScorePackageController {
 	}
 
 	/**
-	 * 终止
+	 * 终止积分包(大包)
 	 *
 	 * @param wmScorePackage
 	 * @return
@@ -2071,106 +2071,12 @@ public class WmScorePackageController {
 	@PostMapping("/stopWmScorePackage")
 	@Transactional(rollbackFor = Exception.class)
 	public R stopWmScorePackage(@RequestBody WmScorePackage wmScorePackage) {
-		if (StringUtils.isEmpty(wmScorePackage.getId())) {
-			return R.failed("参数异常");
-		}
-		wmScorePackage = wmScorePackageService.getById(wmScorePackage.getId());
-
-		if (wmScorePackage.getScore() <= 0) {
-			return R.failed("积分包分值必须大于0");
-		}
-
-		WmScorePackage query = new WmScorePackage();
-		query.setRelationScoreId(wmScorePackage.getId());
-		query.setDelFlag("0");
-		List<WmScorePackage> rePacks = wmScorePackageService.list(Wrappers.query(query).lambda().
-				in(WmScorePackage::getTypeid, "0", "1", "2"));
-
-		if (CollectionUtils.isNotEmpty(rePacks)) {
-			for (WmScorePackage rePack : rePacks) {
-				if ("0".equals(rePack.getEnableFlag())) {
-					return R.failed("积分包已被分派,请联系下属CSO终止关联积分包");
-				}
-			}
-		}
-
-		WmScorePackage updateEntity = new WmScorePackage();
-
-		updateEntity.setId(wmScorePackage.getId());
-		updateEntity.setPackageFinishStatus("2");
-		updateEntity.setEnableType("1");
-		updateEntity.setEnableFlag("1");
-		updateEntity.setScorePackageStatus("6");
-		wmScorePackageService.updateById(updateEntity);
-
-		// 暂定为 回收可分配积分值
-		int recoveryScore = wmScorePackage.getKfpjf();
-		Integer userId = SecurityUtils.getUser().getId();
-		Integer deptId = SecurityUtils.getUser().getDeptId();
-		// 如果是通过积分充值的积分发的包,则回收积分
-		SysDeptRechargeRecord rechargeRecord = sysDeptRechargeRecordMapper.selectOne(Wrappers.<SysDeptRechargeRecord>lambdaQuery()
-				.eq(SysDeptRechargeRecord::getPackageId, wmScorePackage.getId())
-				.in(SysDeptRechargeRecord::getType, RechargeRecordType.SEND_PACKAGE_DEPT, RechargeRecordType.SEND_PACKAGE_PERSONAL));
-		if (rechargeRecord != null) {
-			log.info("终止积分包,更新积分配置信息");
-			SysDeptRecharge deptRecharge = sysDeptRechargeMapper.selectById(rechargeRecord.getRechargeId());
-			int currentScore = deptRecharge.getScore() + recoveryScore;
-			// 更新企业配置的积分信息
-			int update = sysDeptRechargeMapper.update(null, Wrappers.<SysDeptRecharge>lambdaUpdate()
-					.eq(SysDeptRecharge::getId, rechargeRecord.getRechargeId())
-					.eq(SysDeptRecharge::getVersion, deptRecharge.getVersion())
-					.set(SysDeptRecharge::getScore, currentScore)
-					.set(SysDeptRecharge::getVersion, deptRecharge.getVersion() + 1)
-					.set(SysDeptRecharge::getUpdateUser, userId)
-					.set(SysDeptRecharge::getUpdateTime, LocalDateTime.now()));
-			if (update <= 0) {
-				throw new RuntimeException("更新失败");
-			}
-			// 新增积分记录
-			SysDeptRechargeRecord newRechargeRecord = new SysDeptRechargeRecord();
-			newRechargeRecord.setRechargeId(deptRecharge.getId());
-			newRechargeRecord.setChangeScore(recoveryScore);
-			newRechargeRecord.setCurrentScore(currentScore);
-			newRechargeRecord.setType(RechargeRecordType.RECOVERY);
-			newRechargeRecord.setDeptId(deptRecharge.getDeptId());
-			newRechargeRecord.setRelationDeptId(rechargeRecord.getRelationDeptId());
-			newRechargeRecord.setPackageId(wmScorePackage.getId());
-			newRechargeRecord.setCreateUser(userId);
-			sysDeptRechargeRecordMapper.insert(newRechargeRecord);
-		} else {
-			// 数据历史处理:如果是源头包,则回收积分包到积分充值余额
-			boolean relatedScoreId = StrUtil.isNotBlank(wmScorePackage.getRelationScoreId()) && Integer.parseInt(wmScorePackage.getRelationScoreId()) > 0;
-			if (!relatedScoreId) {
-				log.info("终止积分包,更新积分配置信息(历史积分包处理)");
-				SysDeptRecharge deptRecharge = sysDeptRechargeMapper.selectOne(Wrappers.<SysDeptRecharge>lambdaQuery()
-						.eq(SysDeptRecharge::getDeptId, deptId));
-				int currentScore = deptRecharge.getScore() + recoveryScore;
-				// 更新企业配置的积分信息
-				int update = sysDeptRechargeMapper.update(null, Wrappers.<SysDeptRecharge>lambdaUpdate()
-						.eq(SysDeptRecharge::getId, deptRecharge.getId())
-						.eq(SysDeptRecharge::getVersion, deptRecharge.getVersion())
-						.set(SysDeptRecharge::getScore, currentScore)
-						.set(SysDeptRecharge::getVersion, deptRecharge.getVersion() + 1)
-						.set(SysDeptRecharge::getUpdateUser, userId)
-						.set(SysDeptRecharge::getUpdateTime, LocalDateTime.now()));
-				if (update <= 0) {
-					throw new RuntimeException("更新失败");
-				}
-				// 新增积分记录
-				SysDeptRechargeRecord newRechargeRecord = new SysDeptRechargeRecord();
-				newRechargeRecord.setRechargeId(deptRecharge.getId());
-				newRechargeRecord.setChangeScore(recoveryScore);
-				newRechargeRecord.setCurrentScore(currentScore);
-				newRechargeRecord.setType(RechargeRecordType.RECOVERY);
-				newRechargeRecord.setDeptId(deptRecharge.getDeptId());
-				newRechargeRecord.setPackageId(wmScorePackage.getId());
-				newRechargeRecord.setCreateUser(userId);
-				sysDeptRechargeRecordMapper.insert(newRechargeRecord);
-			}
-
+		if (StrUtil.isBlank(wmScorePackage.getId()) || StrUtil.isBlank(wmScorePackage.getEnableType())) {
+			return R.failed("必填参数为空");
 		}
 
-		return R.ok();
+		return R.ok(wmScorePackageService.terminatePackageForDept(wmScorePackage.getId(),
+				UpmsType.TerminatePackageType.getByEnableType(wmScorePackage.getEnableType())));
 	}
 
 
@@ -3165,14 +3071,22 @@ public class WmScorePackageController {
 	@ApiOperation(value = "终止积分包", notes = "终止积分包")
 	@SysLog("终止积分包(个人包)")
 	@GetMapping("/updateEnable")
-	public R updateEnable(WmScorePackage wmScorePackage) {
+	public R terminatePackageForPersonal(WmScorePackage wmScorePackage) {
 		if (StrUtil.isBlank(wmScorePackage.getEnableType()) || StrUtil.isBlank(wmScorePackage.getId())) {
 			return R.failed("必填参数为空");
 		}
 
-		return R.ok(wmScorePackageService.terminatePackageForPersonal(wmScorePackage.getId(),
-				UpmsType.TerminatePackageType.getByEnableType(wmScorePackage.getEnableType())));
-//		return wmScorePackageService.updateEnable(wmScorePackage);
+		// 查询积分包
+		WmScorePackage scorePackage = wmScorePackageService.getById(wmScorePackage.getId());
+
+		// 只有个人承接/多人承接积分包走这个逻辑, 其他的包走原有逻辑
+		if (PackageTypeEnum.TYPE1_SCOTE_PACKAGE.val().equals(scorePackage.getPackageType1())
+				|| PackageTypeEnum.TYPE1_SCORE_AND_TASK_PACKAGE.val().equals(scorePackage.getPackageType1())) {
+			return R.ok(wmScorePackageService.terminatePackageForPersonal(wmScorePackage.getId(),
+					UpmsType.TerminatePackageType.getByEnableType(wmScorePackage.getEnableType())));
+		}
+
+		return wmScorePackageService.updateEnable(scorePackage);
 	}
 
 	/**

+ 11 - 2
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/WmScorePackageService.java

@@ -198,9 +198,18 @@ public interface WmScorePackageService extends IService<WmScorePackage> {
 	/**
 	 * 终止积分包(个人)
 	 *
-	 * @param pacakgeId            积分包id
+	 * @param packageId            积分包id
 	 * @param terminatePackageType 终止积分包类型
 	 * @return {@link Boolean} 结果
 	 */
-	Boolean terminatePackageForPersonal(String pacakgeId, UpmsType.TerminatePackageType terminatePackageType);
+	Boolean terminatePackageForPersonal(String packageId, UpmsType.TerminatePackageType terminatePackageType);
+
+	/**
+	 * 终止积分包(企业大包)
+	 *
+	 * @param packageId            积分包id
+	 * @param terminatePackageType 终止积分包类型
+	 * @return {@link Boolean} 结果
+	 */
+	Boolean terminatePackageForDept(String packageId, UpmsType.TerminatePackageType terminatePackageType);
 }

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

@@ -22,7 +22,6 @@ import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.DesensitizedUtil;
 import cn.hutool.core.util.RandomUtil;
 import cn.hutool.core.util.StrUtil;
-import cn.hutool.json.JSONUtil;
 import com.alibaba.csp.sentinel.util.StringUtil;
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -3075,4 +3074,113 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
 
 		return Boolean.TRUE;
 	}
+
+	/**
+	 * 终止积分包(企业大包)
+	 *
+	 * @param packageId            积分包id
+	 * @param terminatePackageType 终止积分包类型
+	 * @return {@link Boolean} 结果
+	 */
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public Boolean terminatePackageForDept(String packageId, UpmsType.TerminatePackageType terminatePackageType) {
+		WmScorePackage scorePackage = this.getById(packageId);
+		if (!StrUtil.equalsAny(scorePackage.getTypeid(), "0", "1", "2")) {
+			throw new RuntimeException("请选择企业承接的大包");
+		}
+
+		int relatedPackageCount = this.count(Wrappers.<WmScorePackage>lambdaQuery()
+				.eq(WmScorePackage::getRelationScoreId, packageId)
+				.ne(WmScorePackage::getScorePackageStatus, ScorePackageStatusEnum.TERMINATED.val()));
+		if (relatedPackageCount > 0 || !scorePackage.getScore().equals(scorePackage.getKfpjf())) {
+			throw new RuntimeException("积分包已被分派,请联系下属CSO终止关联积分包后再进行次操作");
+		}
+
+		// 更新积分包状态
+		WmScorePackage updateEntity = new WmScorePackage();
+		updateEntity.setId(packageId);
+		updateEntity.setPackageFinishStatus("2");
+		updateEntity.setEnableType(terminatePackageType.getEnableType());
+		updateEntity.setEnableFlag(EnableEnum.DISABLE.val());
+		updateEntity.setScorePackageStatus(ScorePackageStatusEnum.TERMINATED.val());
+		updateEntity.setUpdateTime(LocalDateTime.now());
+		updateEntity.setUpdateUser(SecurityUtils.getUser().getId());
+		log.info("更新积分包参数:{}", updateEntity);
+		this.updateById(updateEntity);
+
+		// 回收可分配积分值
+		int recoveryScore = scorePackage.getKfpjf();
+		Integer userId = SecurityUtils.getUser().getId();
+		Integer deptId = SecurityUtils.getUser().getDeptId();
+		LocalDateTime now = LocalDateTime.now();
+		// 如果是通过积分充值的积分发的包,则回收积分
+		SysDeptRecharge deptRecharge = sysDeptRechargeMapper.selectOne(Wrappers.<SysDeptRecharge>lambdaQuery()
+				.eq(SysDeptRecharge::getDeptId, deptId));
+		if (deptRecharge == null) {
+			throw new RuntimeException("没有配置企业余额信息");
+		}
+
+		SysDeptRechargeRecord rechargeRecord = sysDeptRechargeRecordMapper.selectOne(Wrappers.<SysDeptRechargeRecord>lambdaQuery()
+				.eq(SysDeptRechargeRecord::getPackageId, packageId)
+				.in(SysDeptRechargeRecord::getType, RechargeRecordType.SEND_PACKAGE_DEPT, RechargeRecordType.SEND_PACKAGE_PERSONAL));
+		if (rechargeRecord != null) {
+			int currentScore = deptRecharge.getScore() + recoveryScore;
+			// 更新企业配置的积分信息
+			log.info("终止积分包,更新积分配置信息:id={},score={}", rechargeRecord.getRechargeId(), currentScore);
+			int update = sysDeptRechargeMapper.update(null, Wrappers.<SysDeptRecharge>lambdaUpdate()
+					.eq(SysDeptRecharge::getId, rechargeRecord.getRechargeId())
+					.eq(SysDeptRecharge::getVersion, deptRecharge.getVersion())
+					.set(SysDeptRecharge::getScore, currentScore)
+					.set(SysDeptRecharge::getVersion, deptRecharge.getVersion() + 1)
+					.set(SysDeptRecharge::getUpdateUser, userId)
+					.set(SysDeptRecharge::getUpdateTime, now));
+			if (update <= 0) {
+				throw new RuntimeException("更新余额失败");
+			}
+			// 新增积分记录
+			SysDeptRechargeRecord newRechargeRecord = new SysDeptRechargeRecord();
+			newRechargeRecord.setRechargeId(deptRecharge.getId());
+			newRechargeRecord.setChangeScore(recoveryScore);
+			newRechargeRecord.setCurrentScore(currentScore);
+			newRechargeRecord.setType(RechargeRecordType.RECOVERY);
+			newRechargeRecord.setDeptId(deptRecharge.getDeptId());
+			newRechargeRecord.setRelationDeptId(rechargeRecord.getRelationDeptId());
+			newRechargeRecord.setPackageId(packageId);
+			newRechargeRecord.setCreateUser(userId);
+			newRechargeRecord.setCreateTime(now);
+			sysDeptRechargeRecordMapper.insert(newRechargeRecord);
+		} else {
+			// 数据历史处理:如果是源头包,则回收积分包到积分充值余额
+			boolean relatedScoreId = StrUtil.isNotBlank(scorePackage.getRelationScoreId()) && Integer.parseInt(scorePackage.getRelationScoreId()) > 0;
+			if (!relatedScoreId) {
+				int currentScore = deptRecharge.getScore() + recoveryScore;
+				// 更新企业配置的积分信息
+				log.info("终止积分包,更新积分配置信息(历史积分包处理):id={},score={}", deptRecharge.getId(), currentScore);
+				int update = sysDeptRechargeMapper.update(null, Wrappers.<SysDeptRecharge>lambdaUpdate()
+						.eq(SysDeptRecharge::getId, deptRecharge.getId())
+						.eq(SysDeptRecharge::getVersion, deptRecharge.getVersion())
+						.set(SysDeptRecharge::getScore, currentScore)
+						.set(SysDeptRecharge::getVersion, deptRecharge.getVersion() + 1)
+						.set(SysDeptRecharge::getUpdateUser, userId)
+						.set(SysDeptRecharge::getUpdateTime, now));
+				if (update <= 0) {
+					throw new RuntimeException("更新余额失败");
+				}
+				// 新增积分记录
+				SysDeptRechargeRecord newRechargeRecord = new SysDeptRechargeRecord();
+				newRechargeRecord.setRechargeId(deptRecharge.getId());
+				newRechargeRecord.setChangeScore(recoveryScore);
+				newRechargeRecord.setCurrentScore(currentScore);
+				newRechargeRecord.setType(RechargeRecordType.RECOVERY);
+				newRechargeRecord.setDeptId(deptRecharge.getDeptId());
+				newRechargeRecord.setPackageId(packageId);
+				newRechargeRecord.setCreateUser(userId);
+				newRechargeRecord.setCreateTime(now);
+				sysDeptRechargeRecordMapper.insert(newRechargeRecord);
+			}
+		}
+
+		return Boolean.TRUE;
+	}
 }