fix:十二分接口逻辑完善
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user