fix:十二分接口逻辑完善

This commit is contained in:
wangff
2025-11-20 14:31:12 +08:00
parent 13c44053c2
commit 4e5c228974
12 changed files with 79 additions and 70 deletions

View File

@@ -1,5 +1,6 @@
package com.cool.store.service.tp;
import com.cool.store.entity.tp.TpApplyFormDO;
import com.cool.store.request.tp.*;
import com.cool.store.response.AuditInfoResponse;
import com.cool.store.vo.tp.*;
@@ -160,4 +161,10 @@ public interface TpApplyService {
* @return 是否成功
*/
Boolean completePayment(Long applyId);
/**
* 积分变动
* @param formDO 申请单DO
*/
void scoreChange(TpApplyFormDO formDO);
}

View File

@@ -68,7 +68,7 @@ public class TpApplyServiceImpl implements TpApplyService {
if (!isDraft && tpApplyFormDAO.existPassRewardForm(request.getStoreId(), request.getRuleId())) {
throw new ServiceException(ErrorCodeEnum.TP_MONTH_EXIST_APPLY);
}
if (!isDraft && tpApplyFormDAO.existsPendingApply(request.getStoreId(), request.getRuleId(), true)) {
if (!isDraft && tpApplyFormDAO.existsPendingApply(request.getStoreId(), request.getRuleId(), Collections.singletonList(TpFormTypeEnum.REWARD.getType()))) {
throw new ServiceException(ErrorCodeEnum.TP_EXISTS_PENDING_APPLY);
}
BigDecimal score = storeDao.getStoreScore(request.getStoreId());
@@ -122,13 +122,11 @@ public class TpApplyServiceImpl implements TpApplyService {
TpApplyFormDO formDO = BeanUtil.toBean(request, TpApplyFormDO.class);
// 如果存在审批中的申请,则不允许再次提交
boolean isDraft = CommonConstants.INDEX_ONE.equals(request.getIsDraft());
if (!isDraft && tpApplyFormDAO.existsPendingApply(request.getStoreId(), request.getRuleId(), false)) {
if (!isDraft && tpApplyFormDAO.existsPendingApply(request.getStoreId(), request.getRuleId(), Arrays.asList(TpFormTypeEnum.PENALTY.getType(), TpFormTypeEnum.WARNING.getType()))) {
throw new ServiceException(ErrorCodeEnum.TP_EXISTS_PENDING_APPLY);
}
boolean isInsert = Objects.isNull(request.getId());
formDO.setType(isInsert ? TpFormTypeEnum.PENALTY.getType() : null);
formDO.setApplyNo(isInsert ? TpHelper.generateApplyNo(formDO.getType()) : null);
fillRuleFields(formDO);
formDO.setApplyNo(Objects.isNull(request.getId()) ? TpHelper.generateApplyNo(formDO.getType()) : null);
tpApplyFormDAO.insertOrUpdate(formDO);
// 第一次提交后添加审批记录
if (!isDraft) {
@@ -218,8 +216,7 @@ public class TpApplyServiceImpl implements TpApplyService {
throw new ServiceException(ErrorCodeEnum.TP_PENALTY_APPLY_EFFECTIVE);
}
}
boolean isInsert = Objects.isNull(request.getId());
formDO.setApplyNo(isInsert ? TpHelper.generateAppealNo() : null);
formDO.setApplyNo(Objects.isNull(request.getId()) ? TpHelper.generateAppealNo() : null);
formDO.setRuleId(penaltyFormDO.getRuleId());
formDO.setType(TpFormTypeEnum.APPEAL.getType());
formDO.setStoreId(penaltyFormDO.getStoreId());
@@ -337,6 +334,7 @@ public class TpApplyServiceImpl implements TpApplyService {
}
@Override
@Transactional
public Boolean acceptPenalty(Long applyId) {
// 校验申请单状态是否为审批通过
TpApplyFormDO formDO = tpApplyFormDAO.getEffectiveById(applyId);
@@ -348,6 +346,7 @@ public class TpApplyServiceImpl implements TpApplyService {
throw new ServiceException(ErrorCodeEnum.TP_PENALTY_APPLY_UNABLE_ACCEPT);
}
tpApplyFormDAO.updateStatus(applyId, TpFormStatusEnum.EFFECTIVE);
scoreChange(formDO);
return true;
}
@@ -381,8 +380,8 @@ public class TpApplyServiceImpl implements TpApplyService {
tpAuditRecordDAO.auditPendingRecordByApplyId(request.getApplyId(), formDO.getType(), user.getUserId(), user.getName(), request.getAuditStatus(), request.getRemark(), now);
if (TpFormTypeEnum.APPEAL.getType().equals(formDO.getType())) {
appealPassResolve(formDO);
} else {
// 审批通过后门店积分变动
} else if (TpFormTypeEnum.REWARD.getType().equals(formDO.getType())) {
// 加分审批通过后门店积分变动
scoreChange(formDO);
}
}
@@ -400,7 +399,8 @@ public class TpApplyServiceImpl implements TpApplyService {
/**
* 门店积分变动
*/
private void scoreChange(TpApplyFormDO formDO) {
@Override
public void scoreChange(TpApplyFormDO formDO) {
if (TpFormStatusEnum.PASS.getStatus().equals(formDO.getStatus())) {
BigDecimal occurBeforeScore = storeDao.getStoreScore(formDO.getStoreId());
BigDecimal occurAfterScore = null;
@@ -421,13 +421,13 @@ public class TpApplyServiceImpl implements TpApplyService {
// 修改门店积分
if (Objects.nonNull(occurAfterScore)) {
storeDao.updateStoreScore(formDO.getStoreId(), occurAfterScore);
StoreDO storeDO = storeDao.getEffectiveByStoreId(formDO.getStoreId());
if (Objects.isNull(storeDO)) {
throw new ServiceException(ErrorCodeEnum.STORE_NOT_FIND);
}
// 添加积分流水
tpScoreJournalDAO.insertSelective(new TpScoreJournalDO(storeDO, formDO, occurScore, occurBeforeScore, occurAfterScore));
}
StoreDO storeDO = storeDao.getEffectiveByStoreId(formDO.getStoreId());
if (Objects.isNull(storeDO)) {
throw new ServiceException(ErrorCodeEnum.STORE_NOT_FIND);
}
// 添加积分流水
tpScoreJournalDAO.insertSelective(new TpScoreJournalDO(storeDO, formDO, occurScore, occurBeforeScore, occurAfterScore));
}
}
@@ -455,17 +455,19 @@ public class TpApplyServiceImpl implements TpApplyService {
if (Objects.isNull(formDO.getAppealEndDate())) {
formDO.setAppealEndDate(CoolDateUtils.localDate2Date(LocalDate.now().plusDays(ruleDO.getAppealDeadline())));
}
// 超过警告次数的为处罚单,否则警告单
int penaltyCount = tpApplyFormDAO.getPenaltyCount(formDO.getStoreId(), formDO.getRuleId());
Integer type = ruleDO.getWarningLimit().compareTo(penaltyCount) <= 0 ? TpFormTypeEnum.PENALTY.getType() : TpFormTypeEnum.WARNING.getType();
formDO.setType(type);
if (TpFormTypeEnum.WARNING.getType().equals(type)) {
formDO.setAmount(null);
formDO.setScore(null);
if (Objects.isNull(formDO.getType())) {
// 超过警告次数的为处罚单,否则警告单
int penaltyCount = tpApplyFormDAO.getPenaltyCount(formDO.getStoreId(), formDO.getRuleId());
Integer type = ruleDO.getWarningLimit().compareTo(penaltyCount) <= 0 ? TpFormTypeEnum.PENALTY.getType() : TpFormTypeEnum.WARNING.getType();
formDO.setType(type);
if (TpFormTypeEnum.WARNING.getType().equals(type)) {
formDO.setAmount(null);
formDO.setScore(null);
}
}
// 是否缴费
formDO.setPayStatus(Objects.nonNull(ruleDO.getAmount()) && BigDecimal.ZERO.compareTo(ruleDO.getAmount()) < 0 ? TpPayStatusEnum.UNPAID.getStatus() : TpPayStatusEnum.NO_NEED_PAY.getStatus());
}
// 是否缴费
formDO.setPayStatus(Objects.nonNull(ruleDO.getAmount()) && BigDecimal.ZERO.compareTo(ruleDO.getAmount()) < 0 ? TpPayStatusEnum.UNPAID.getStatus() : TpPayStatusEnum.NO_NEED_PAY.getStatus());
}
/**