|
|
@@ -225,36 +225,43 @@ public class StoreServiceFeeRuleServiceImpl implements StoreServiceFeeRuleServic
|
|
|
if (existing == null) {
|
|
|
return R.fail("服务费规则不存在");
|
|
|
}
|
|
|
- String checkMsg = validateAndCheckConflict(dto, dto.getId());
|
|
|
+ // 仅编辑当前这一条:限定校验到“当前桌台 + 首个时段”
|
|
|
+ StoreServiceFeeRuleSlotDto slotForEdit;
|
|
|
+ if (dto.getSlots() != null && !dto.getSlots().isEmpty()) {
|
|
|
+ slotForEdit = dto.getSlots().get(0);
|
|
|
+ } else {
|
|
|
+ StoreServiceFeeRuleSlotDto s = new StoreServiceFeeRuleSlotDto();
|
|
|
+ s.setWeekdayMask(existing.getWeekdayMask());
|
|
|
+ s.setStartTime(existing.getStartTime() != null ? existing.getStartTime().format(TIME_FORMATTER) : null);
|
|
|
+ s.setEndTime(existing.getEndTime() != null ? existing.getEndTime().format(TIME_FORMATTER) : null);
|
|
|
+ slotForEdit = s;
|
|
|
+ }
|
|
|
+ StoreServiceFeeRuleSaveDto dtoForCheck = new StoreServiceFeeRuleSaveDto();
|
|
|
+ dtoForCheck.setId(dto.getId());
|
|
|
+ dtoForCheck.setStoreId(dto.getStoreId());
|
|
|
+ dtoForCheck.setFeeName(dto.getFeeName());
|
|
|
+ dtoForCheck.setFeeType(dto.getFeeType());
|
|
|
+ dtoForCheck.setFeeValue(dto.getFeeValue());
|
|
|
+ dtoForCheck.setStatus(dto.getStatus());
|
|
|
+ dtoForCheck.setEffectiveMode(dto.getEffectiveMode());
|
|
|
+ dtoForCheck.setStartDate(dto.getStartDate());
|
|
|
+ dtoForCheck.setEndDate(dto.getEndDate());
|
|
|
+ dtoForCheck.setTableIds(Collections.singletonList(existing.getTableId()));
|
|
|
+ dtoForCheck.setSlots(Collections.singletonList(slotForEdit));
|
|
|
+ String checkMsg = validateAndCheckConflict(dtoForCheck, dto.getId());
|
|
|
if (checkMsg != null) {
|
|
|
return R.fail(checkMsg);
|
|
|
}
|
|
|
|
|
|
- // 删除同组旧记录并重建
|
|
|
- List<StoreServiceFeeRule> sameGroup = ruleMapper.selectList(new LambdaQueryWrapper<StoreServiceFeeRule>()
|
|
|
- .eq(StoreServiceFeeRule::getStoreId, existing.getStoreId())
|
|
|
- .eq(StoreServiceFeeRule::getFeeName, existing.getFeeName())
|
|
|
- .eq(StoreServiceFeeRule::getFeeType, existing.getFeeType())
|
|
|
- .eq(StoreServiceFeeRule::getFeeValue, existing.getFeeValue())
|
|
|
- .eq(StoreServiceFeeRule::getStatus, existing.getStatus())
|
|
|
- .eq(StoreServiceFeeRule::getEffectiveMode, existing.getEffectiveMode())
|
|
|
- .eq(StoreServiceFeeRule::getStartDate, existing.getStartDate())
|
|
|
- .eq(StoreServiceFeeRule::getEndDate, existing.getEndDate()));
|
|
|
- for (StoreServiceFeeRule r : sameGroup) {
|
|
|
- ruleMapper.deleteById(r.getId());
|
|
|
- }
|
|
|
Integer userId = getCurrentUserId();
|
|
|
- for (Integer tableId : dto.getTableIds()) {
|
|
|
- for (StoreServiceFeeRuleSlotDto slotDto : dto.getSlots()) {
|
|
|
- StoreServiceFeeRule rule = new StoreServiceFeeRule();
|
|
|
- fillRuleFromDto(rule, dto, userId, true);
|
|
|
- rule.setTableId(tableId);
|
|
|
- rule.setWeekdayMask(slotDto.getWeekdayMask());
|
|
|
- rule.setStartTime(LocalTime.parse(slotDto.getStartTime(), TIME_FORMATTER));
|
|
|
- rule.setEndTime(LocalTime.parse(slotDto.getEndTime(), TIME_FORMATTER));
|
|
|
- ruleMapper.insert(rule);
|
|
|
- }
|
|
|
- }
|
|
|
+ StoreServiceFeeRule update = new StoreServiceFeeRule();
|
|
|
+ update.setId(existing.getId());
|
|
|
+ fillRuleFromDto(update, dto, userId, true);
|
|
|
+ update.setTableId(existing.getTableId());
|
|
|
+ update.setWeekdayMask(slotForEdit.getWeekdayMask());
|
|
|
+ update.setStartTime(slotForEdit.getStartTime() != null ? LocalTime.parse(slotForEdit.getStartTime(), TIME_FORMATTER) : existing.getStartTime());
|
|
|
+ update.setEndTime(slotForEdit.getEndTime() != null ? LocalTime.parse(slotForEdit.getEndTime(), TIME_FORMATTER) : existing.getEndTime());
|
|
|
+ ruleMapper.updateById(update);
|
|
|
return R.data(true);
|
|
|
}
|
|
|
|