| | |
| | | import com.xiaopeng.operation.service.IXpGeoQueryEntityService; |
| | | import com.xiaopeng.operation.service.XpPointService; |
| | | import com.xiaopeng.operation.service.XpPricingService; |
| | | import com.xiaopeng.operation.job.base.QuartzManager; |
| | | import com.xiaopeng.operation.job.base.TimeJobType; |
| | | import com.xiaopeng.operation.job.jobs.DynamicPricingCheckJob; |
| | | import com.xiaopeng.operation.utils.XpPricingUtil; |
| | | import com.xiaopeng.operation.utils.holiday.HolidayUtil; |
| | | import com.xiaopeng.operation.utils.map.FastDistanceCalculator; |
| | | import com.xiaopeng.operation.vo.PricingPageListVO; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.data.mongodb.core.geo.GeoJsonPoint; |
| | | import org.springframework.stereotype.Service; |
| | |
| | | * @author liu |
| | | * @since 2026-02-03 |
| | | */ |
| | | @Slf4j |
| | | @Service |
| | | public class XpPricingServiceImpl extends ServiceImpl<XpPricingMapper, XpPricing> implements XpPricingService { |
| | | |
| | |
| | | update.setDynamicPricingJson(dto.getDynamicPricingJson()); |
| | | update.setIsDynamicPrice(dto.getIsDynamicPrice()); |
| | | this.updateById(update); |
| | | |
| | | // 动态调价 Quartz 任务调度 |
| | | String jobName = DynamicPricingCheckJob.JOB_PREFIX + dto.getId(); |
| | | if (Integer.valueOf(1).equals(dto.getIsDynamicPrice()) |
| | | && StringUtils.isNotBlank(dto.getDynamicPricingJson())) { |
| | | JSONObject dynamicJson = JSONObject.parseObject(dto.getDynamicPricingJson()); |
| | | Integer periodMinutes = dynamicJson.getInteger("num1"); |
| | | if (periodMinutes != null && periodMinutes > 0) { |
| | | // 先移除可能存在的旧任务,再注册新任务(num1 分钟后首次执行) |
| | | QuartzManager.removeJob(jobName, TimeJobType.DYNAMIC_PRICING_CHECK); |
| | | Date triggerTime = new Date(System.currentTimeMillis() + periodMinutes * 60_000L); |
| | | Map<String, Object> jobData = new HashMap<>(); |
| | | jobData.put("pricingId", dto.getId()); |
| | | QuartzManager.addJob(DynamicPricingCheckJob.class, jobName, |
| | | TimeJobType.DYNAMIC_PRICING_CHECK, triggerTime, jobData); |
| | | log.info("动态调价任务已注册 pricingId={}, 供需计算周期={}分钟", dto.getId(), periodMinutes); |
| | | } |
| | | } else { |
| | | // 关闭动态调价时,移除已存在的任务 |
| | | QuartzManager.removeJob(jobName, TimeJobType.DYNAMIC_PRICING_CHECK); |
| | | log.info("动态调价任务已移除 pricingId={}", dto.getId()); |
| | | } |
| | | } |
| | | |
| | | @Override |