package com.tcm.training.admin.points.service;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.tcm.training.admin.points.dto.PointsConfigSaveRequest;
|
import com.tcm.training.admin.points.entity.PointsConfig;
|
import com.tcm.training.admin.points.mapper.PointsConfigMapper;
|
import com.tcm.training.admin.points.vo.PointsConfigVO;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import java.time.LocalDateTime;
|
|
@Service
|
public class PointsSettingsAppService {
|
|
private final PointsConfigMapper pointsConfigMapper;
|
|
public PointsSettingsAppService(PointsConfigMapper pointsConfigMapper) {
|
this.pointsConfigMapper = pointsConfigMapper;
|
}
|
|
public PointsConfigVO current() {
|
PointsConfig config = pointsConfigMapper.selectOne(new LambdaQueryWrapper<PointsConfig>()
|
.eq(PointsConfig::getDeleted, 0)
|
.orderByDesc(PointsConfig::getId)
|
.last("limit 1"));
|
return toVO(config);
|
}
|
|
@Transactional
|
public PointsConfigVO saveCurrent(PointsConfigSaveRequest request) {
|
validateRequest(request);
|
PointsConfig currentPending = pointsConfigMapper.selectOne(new LambdaQueryWrapper<PointsConfig>()
|
.eq(PointsConfig::getDeleted, 0)
|
.eq(PointsConfig::getSettlementStatus, 0)
|
.orderByDesc(PointsConfig::getId)
|
.last("limit 1"));
|
|
if (currentPending == null) {
|
currentPending = new PointsConfig();
|
currentPending.setSettlementStatus(0);
|
currentPending.setSettledAt(null);
|
fillConfig(currentPending, request);
|
pointsConfigMapper.insert(currentPending);
|
} else {
|
fillConfig(currentPending, request);
|
currentPending.setSettlementStatus(0);
|
currentPending.setSettledAt(null);
|
pointsConfigMapper.updateById(currentPending);
|
}
|
return toVO(currentPending);
|
}
|
|
private void validateRequest(PointsConfigSaveRequest request) {
|
if (!request.getActivityEndAt().isAfter(request.getActivityStartAt())) {
|
throw new IllegalArgumentException("活动结束时间必须晚于活动开始时间");
|
}
|
}
|
|
private void fillConfig(PointsConfig config, PointsConfigSaveRequest request) {
|
config.setActivityStartAt(request.getActivityStartAt());
|
config.setActivityEndAt(request.getActivityEndAt());
|
config.setGiftCover(request.getGiftCover().trim());
|
config.setGiftName(request.getGiftName().trim());
|
config.setRequiredPoints(request.getRequiredPoints());
|
}
|
|
private PointsConfigVO toVO(PointsConfig config) {
|
if (config == null) {
|
return null;
|
}
|
PointsConfigVO vo = new PointsConfigVO();
|
vo.setId(config.getId());
|
vo.setActivityStartAt(config.getActivityStartAt());
|
vo.setActivityEndAt(config.getActivityEndAt());
|
vo.setGiftCover(config.getGiftCover());
|
vo.setGiftName(config.getGiftName());
|
vo.setRequiredPoints(config.getRequiredPoints());
|
vo.setSettlementStatus(config.getSettlementStatus());
|
vo.setSettledAt(config.getSettledAt());
|
return vo;
|
}
|
}
|