Kaynağa Gözat

fix: MAH结算加限制

lixuesong 1 yıl önce
ebeveyn
işleme
dfa807819e

+ 31 - 9
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmPayOffServiceImpl.java

@@ -22,6 +22,7 @@ import com.qunzhixinxi.hnqz.admin.entity.input.SettleNoteStatusOutput;
 import com.qunzhixinxi.hnqz.admin.entity.input.WmScorePackageSettleInput;
 import com.qunzhixinxi.hnqz.admin.entity.input.WmScorePackageSettleOutput;
 import com.qunzhixinxi.hnqz.admin.api.model.WmScorePackageSettleExcelModel;
+import com.qunzhixinxi.hnqz.admin.enums.DelEnum;
 import com.qunzhixinxi.hnqz.admin.enums.PackageFinishStatusEnum;
 import com.qunzhixinxi.hnqz.admin.enums.PackageTypeEnum;
 import com.qunzhixinxi.hnqz.admin.enums.ScorePackageStatusEnum;
@@ -31,6 +32,7 @@ import com.qunzhixinxi.hnqz.admin.enums.SubjectTypeEnum;
 import com.qunzhixinxi.hnqz.admin.mapper.SysDictItemMapper;
 import com.qunzhixinxi.hnqz.admin.mapper.SysUserMapper;
 import com.qunzhixinxi.hnqz.admin.mapper.SysUserSubMapper;
+import com.qunzhixinxi.hnqz.admin.mapper.WmDaAgentMapper;
 import com.qunzhixinxi.hnqz.admin.mapper.WmPayOffMapper;
 import com.qunzhixinxi.hnqz.admin.service.*;
 import com.qunzhixinxi.hnqz.common.core.constant.CommonConstants;
@@ -92,6 +94,7 @@ public class WmPayOffServiceImpl extends ServiceImpl<WmPayOffMapper, WmPayOff> i
 	private final WmTaskService wmTaskService;
 	private final WmScorePackageStatusService wmScorePackageStatusService;
 	private final WmScorePackageSettleNoteService noteService;
+	private final WmDaAgentMapper wmDaAgentMapper;
 	private final SysDeptService sysDeptService;
 	private final SysDeptSubService sysDeptSubService;
 	private final SysDictItemMapper sysDictItemMapper;
@@ -390,6 +393,19 @@ public class WmPayOffServiceImpl extends ServiceImpl<WmPayOffMapper, WmPayOff> i
 		SubjectLocation location = input.getSubjectLocation();
 
 		Integer deptId = SecurityUtils.getUser().getDeptId();
+
+		// 查询当前企业是否为代理商,并且是否配置了MAH权限
+		WmDaAgent agent = wmDaAgentMapper.selectOne(Wrappers.<WmDaAgent>lambdaQuery()
+				.eq(WmDaAgent::getDeptId, deptId)
+				.eq(WmDaAgent::getDelFlag, DelEnum.NOT_DEL.val()));
+
+		boolean mahConfiged = agent != null && agent.getMahSettleDeptId() != null;
+
+		if (SubjectLocation.MAH_SETTLE.equals(input.getSubjectLocation()) && !mahConfiged) {
+			// MAH配置和传参不匹配时,返回异常提示
+			throw new BizException("没有配置MAH结算权限");
+		}
+
 		if (SubjectLocation.MAH_SETTLE.equals(input.getSubjectLocation())) {
 			// 默认在当前企业,取一个结算渠道
 			SysDeptSub condition = new SysDeptSub();
@@ -397,19 +413,25 @@ public class WmPayOffServiceImpl extends ServiceImpl<WmPayOffMapper, WmPayOff> i
 			condition.setEnableFlag(SubjectTypeEnum.ENABLE_FLAG_TRUE.getCode());
 			List<SysDeptSub> deptSubs = sysDeptSubService.list(Wrappers.query(condition));
 			if (CollUtil.isEmpty(deptSubs)) {
-				return R.failed("结算渠道不存在");
+				throw new BizException("结算渠道不存在");
 			}
 			location = deptSubs.get(0).getSubjectLocation();
 		}
 
-		// 校验是否配置了结算限制
-		SysDeptSub queryDeptSub = sysDeptSubService.getOne(Wrappers.<SysDeptSub>lambdaQuery()
-				.eq(SysDeptSub::getDeptId, SecurityUtils.getUser().getDeptId())
-				.eq(SysDeptSub::getSubjectLocation, location)
-				.eq(SysDeptSub::getEnableFlag, SubjectTypeEnum.ENABLE_FLAG_TRUE.getCode()));
-		if (!queryDeptSub.getSettleEnable()) {
-			log.info("{}企业配置了结算限制", deptId);
-			throw new RuntimeException("系统维护中,请联系管理员");
+		// MAH结算跳过此校验
+		if (!mahConfiged) {
+			// 校验是否配置了结算限制, 有结算限制则不允许结算(即)
+			SysDeptSub queryDeptSub = sysDeptSubService.getOne(Wrappers.<SysDeptSub>lambdaQuery()
+					.eq(SysDeptSub::getDeptId, deptId)
+					.eq(SysDeptSub::getSubjectLocation, location)
+					.eq(SysDeptSub::getEnableFlag, SubjectTypeEnum.ENABLE_FLAG_TRUE.getCode()));
+			if (queryDeptSub == null) {
+				throw new BizException("结算渠道不存在");
+			}
+			if (!queryDeptSub.getSettleEnable()) {
+				log.info("{}企业配置了结算限制", deptId);
+				throw new BizException("系统维护中,请联系管理员");
+			}
 		}
 
 		// 校验人员信息