package com.cdzy.ebikeoperate.controller; import com.alibaba.fastjson2.JSONArray; import com.cdzy.common.model.JsonResult; import com.cdzy.ebikeoperate.model.dto.request.ReqEbikeSysRcostsetDto; import com.cdzy.ebikeoperate.model.dto.request.ReqEbikeSysRcostsetTimePeriodDto; import com.cdzy.ebikeoperate.model.dto.request.ReqEbikeSysRcostsetUpdateDto; import com.cdzy.ebikeoperate.model.dto.request.ReqEbikeSysRcostsetWeekDto; import com.cdzy.ebikeoperate.model.dto.response.ResEbikeSysRcostsetDto; import com.cdzy.ebikeoperate.model.dto.response.ResEbikeSysRcostsetTimePeriodDto; import com.cdzy.ebikeoperate.model.dto.response.ResEbikeSysRcostsetWeekDto; import com.cdzy.ebikeoperate.model.pojo.EbikeSysRcostset; import com.cdzy.ebikeoperate.model.pojo.EbikeSysRcostsetTimePeriod; import com.cdzy.ebikeoperate.model.pojo.EbikeSysRcostsetWeek; import com.cdzy.ebikeoperate.service.EbikeSysRcostsetService; import com.cdzy.ebikeoperate.service.EbikeSysRcostsetTimePeriodService; import com.cdzy.ebikeoperate.service.EbikeSysRcostsetWeekService; import com.mybatisflex.core.keygen.impl.SnowFlakeIDKeyGenerator; import com.mybatisflex.core.query.QueryWrapper; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import static com.cdzy.ebikeoperate.model.pojo.table.EbikeSysRcostsetTableDef.EBIKE_SYS_RCOSTSET; import static com.cdzy.ebikeoperate.model.pojo.table.EbikeSysRcostsetTimePeriodTableDef.EBIKE_SYS_RCOSTSET_TIME_PERIOD; import static com.cdzy.ebikeoperate.model.pojo.table.EbikeSysRcostsetWeekTableDef.EBIKE_SYS_RCOSTSET_WEEK; /** * 区域费用配置控制层 * * @author:Ding * @ClassName:EbikeSysRcostsetController * @Package:com.cdzy.ebikeoperate.controller.EbikeSysRcostsetController * @Description:区域费用配置控制层 * @CreateDate:2025年04月08日 * @Version:V1.0 **/ @Slf4j @RestController @RequestMapping("/ebikesysrcostset") public class EbikeSysRcostsetController { @Autowired private EbikeSysRcostsetService ebikeSysRcostsetService; @Autowired private EbikeSysRcostsetTimePeriodService ebikeSysRcostsetTimePeriodService; @Autowired private EbikeSysRcostsetWeekService ebikeSysRcostsetWeekService; /** * 区域费用配置新增 * * @param reqEbikeSysRcostsetDto 区域费用配置实体 * @return */ @PostMapping("regionFeeConfigAdds") public JsonResult regionFeeConfigAdd(@RequestBody ReqEbikeSysRcostsetDto reqEbikeSysRcostsetDto) { try { EbikeSysRcostset ebikeSysRcostset = new EbikeSysRcostset(); BeanUtils.copyProperties(reqEbikeSysRcostsetDto, ebikeSysRcostset); boolean save = ebikeSysRcostsetService.save(ebikeSysRcostset); if (save) { if (ebikeSysRcostset.getTimeDivisionCharging() == '2') { List reqEbikeSysRcostsetTimePeriodDto = reqEbikeSysRcostsetDto.getEbikeSysRcostsetTimePeriodDtos(); if (!reqEbikeSysRcostsetTimePeriodDto.isEmpty()) { List ebikeSysRcostsetTimePeriods = new ArrayList<>(); reqEbikeSysRcostsetTimePeriodDto.forEach(item -> { EbikeSysRcostsetTimePeriod ebikeSysRcostsetTimePeriod = new EbikeSysRcostsetTimePeriod(); BeanUtils.copyProperties(item, ebikeSysRcostsetTimePeriod); ebikeSysRcostsetTimePeriod.setCostConfigId(ebikeSysRcostset.getCostConfigId()); ebikeSysRcostsetTimePeriods.add(ebikeSysRcostsetTimePeriod); }); ebikeSysRcostsetTimePeriodService.saveBatch(ebikeSysRcostsetTimePeriods); } } else if (ebikeSysRcostset.getTimeDivisionCharging() == '3') { List reqEbikeSysRcostsetWeekDto = reqEbikeSysRcostsetDto.getEbikeSysRcostsetWeekDtos(); if (!reqEbikeSysRcostsetWeekDto.isEmpty()) { List ebikeSysRcostsetWeeks = new ArrayList<>(); reqEbikeSysRcostsetWeekDto.forEach(item -> { EbikeSysRcostsetWeek ebikeSysRcostsetWeek = new EbikeSysRcostsetWeek(); BeanUtils.copyProperties(item, ebikeSysRcostsetWeek); ebikeSysRcostsetWeek.setWeek(item.getWeek().toJSONString()); ebikeSysRcostsetWeek.setCostConfigId(ebikeSysRcostset.getCostConfigId()); ebikeSysRcostsetWeeks.add(ebikeSysRcostsetWeek); }); ebikeSysRcostsetWeekService.saveBatch(ebikeSysRcostsetWeeks); } } return JsonResult.success("保存成功"); } return JsonResult.failed("保存失败"); } catch (Exception e) { log.error("regionFeeConfigAdd===>" + e.getMessage() + Arrays.toString(e.getStackTrace())); return JsonResult.failed("保存失败"); } } /** * 根据区域id获取配置信息 * * @param operationRegionId 区域id * @return */ @RequestMapping("getRegionFeeConfigById") public JsonResult getRegionFeeConfigById(@RequestParam(value = "operationRegionId") String operationRegionId) { try { ResEbikeSysRcostsetDto resEbikeSysRcostsetDto = new ResEbikeSysRcostsetDto(); QueryWrapper query = QueryWrapper.create(); query.eq(EBIKE_SYS_RCOSTSET.OPERATION_REGION_ID.getName(), operationRegionId); EbikeSysRcostset ebikeSysRcostset = ebikeSysRcostsetService.getOne(query); if (ebikeSysRcostset == null) { return JsonResult.success(null); } BeanUtils.copyProperties(ebikeSysRcostset, resEbikeSysRcostsetDto); resEbikeSysRcostsetDto.setEbikeSysRcostsetWeekDtos(new ArrayList<>()); resEbikeSysRcostsetDto.setEbikeSysRcostsetTimePeriodDtos(new ArrayList<>()); if (ebikeSysRcostset.getTimeDivisionCharging() == '2') { query.clear(); query.eq(EBIKE_SYS_RCOSTSET_TIME_PERIOD.COST_CONFIG_ID.getName(), ebikeSysRcostset.getCostConfigId()); List resEbikeSysRcostsetTimePeriodDtos = ebikeSysRcostsetTimePeriodService.listAs(query, ResEbikeSysRcostsetTimePeriodDto.class); resEbikeSysRcostsetDto.setEbikeSysRcostsetTimePeriodDtos( resEbikeSysRcostsetTimePeriodDtos == null ? new ArrayList<>() : resEbikeSysRcostsetTimePeriodDtos); } else if (ebikeSysRcostset.getTimeDivisionCharging() == '3') { query.clear(); query.eq(EBIKE_SYS_RCOSTSET_WEEK.COST_CONFIG_ID.getName(), ebikeSysRcostset.getCostConfigId()); List list = ebikeSysRcostsetWeekService.list(query); List reqEbikeSysRcostsetWeekDtos = new ArrayList<>(); list.forEach(item -> { ResEbikeSysRcostsetWeekDto resEbikeSysRcostsetWeekDto = new ResEbikeSysRcostsetWeekDto(); BeanUtils.copyProperties(item, resEbikeSysRcostsetWeekDto); resEbikeSysRcostsetWeekDto.setWeek(JSONArray.parseArray(item.getWeek())); reqEbikeSysRcostsetWeekDtos.add(resEbikeSysRcostsetWeekDto); }); resEbikeSysRcostsetDto.setEbikeSysRcostsetWeekDtos(reqEbikeSysRcostsetWeekDtos); } return JsonResult.success(resEbikeSysRcostsetDto); } catch (Exception e) { log.error("getRegionFeeConfigById===>" + e.getMessage() + Arrays.toString(e.getStackTrace())); return JsonResult.failed("获取失败"); } } /** * 更新区域费用配置信息 * * @param reqEbikeSysRcostsetUpdateDto 区域费用配置实体 * @return */ @PostMapping("updateRegionFeeConfig") public JsonResult updateRegionFeeConfig(@RequestBody ReqEbikeSysRcostsetUpdateDto reqEbikeSysRcostsetUpdateDto) { try { EbikeSysRcostset ebikeSysRcostset = new EbikeSysRcostset(); BeanUtils.copyProperties(reqEbikeSysRcostsetUpdateDto, ebikeSysRcostset); ebikeSysRcostset.setUpdatedAt(LocalDateTime.now()); boolean b = ebikeSysRcostsetService.updateById(ebikeSysRcostset); if (b) { QueryWrapper query = QueryWrapper.create(); query.eq(EBIKE_SYS_RCOSTSET_TIME_PERIOD.COST_CONFIG_ID.getName(), ebikeSysRcostset.getCostConfigId()); ebikeSysRcostsetTimePeriodService.remove(query); query.clear(); query.eq(EBIKE_SYS_RCOSTSET_WEEK.COST_CONFIG_ID.getName(), ebikeSysRcostset.getCostConfigId()); ebikeSysRcostsetWeekService.remove(query); if (ebikeSysRcostset.getTimeDivisionCharging() == '2') { List reqEbikeSysRcostsetTimePeriodDto = reqEbikeSysRcostsetUpdateDto.getEbikeSysRcostsetTimePeriodDtos(); if (!reqEbikeSysRcostsetTimePeriodDto.isEmpty()) { List ebikeSysRcostsetTimePeriods = new ArrayList<>(); reqEbikeSysRcostsetTimePeriodDto.forEach(item -> { EbikeSysRcostsetTimePeriod ebikeSysRcostsetTimePeriod = new EbikeSysRcostsetTimePeriod(); BeanUtils.copyProperties(item, ebikeSysRcostsetTimePeriod); ebikeSysRcostsetTimePeriod.setCostConfigId(ebikeSysRcostset.getCostConfigId()); ebikeSysRcostsetTimePeriods.add(ebikeSysRcostsetTimePeriod); }); ebikeSysRcostsetTimePeriodService.saveBatch(ebikeSysRcostsetTimePeriods); } } else if (ebikeSysRcostset.getTimeDivisionCharging() == '3') { List reqEbikeSysRcostsetWeekDto = reqEbikeSysRcostsetUpdateDto.getEbikeSysRcostsetWeekDtos(); if (!reqEbikeSysRcostsetWeekDto.isEmpty()) { List ebikeSysRcostsetWeeks = new ArrayList<>(); reqEbikeSysRcostsetWeekDto.forEach(item -> { EbikeSysRcostsetWeek ebikeSysRcostsetWeek = new EbikeSysRcostsetWeek(); BeanUtils.copyProperties(item, ebikeSysRcostsetWeek); ebikeSysRcostsetWeek.setWeek(item.getWeek().toJSONString()); ebikeSysRcostsetWeek.setCostConfigId(ebikeSysRcostset.getCostConfigId()); ebikeSysRcostsetWeeks.add(ebikeSysRcostsetWeek); }); ebikeSysRcostsetWeekService.saveBatch(ebikeSysRcostsetWeeks); } } return JsonResult.success("更新成功"); } return JsonResult.failed("更新失败"); } catch (Exception e) { log.error("updateRegionFeeConfig===>" + e.getMessage() + Arrays.toString(e.getStackTrace())); return JsonResult.failed("更新失败"); } } /** * 生成一个雪花id * * @return */ @RequestMapping("createSnowflakeId") public JsonResult createSnowflakeId() { SnowFlakeIDKeyGenerator snowFlakeIDKeyGenerator = new SnowFlakeIDKeyGenerator(); long dataCenterId = snowFlakeIDKeyGenerator.nextId(); return JsonResult.success(dataCenterId); } }