From f085e14d10a11c730b9831902962b72c818ae1bf Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期五, 13 二月 2026 14:51:28 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpOpenCityServiceImpl.java |   68 ++++++++++++++++++++++++++++++++-
 1 files changed, 65 insertions(+), 3 deletions(-)

diff --git a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpOpenCityServiceImpl.java b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpOpenCityServiceImpl.java
index 1d284c0..1ceef23 100644
--- a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpOpenCityServiceImpl.java
+++ b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpOpenCityServiceImpl.java
@@ -1,11 +1,19 @@
 package com.xiaopeng.operation.service.impl;
 
 
+import cn.hutool.core.bean.BeanUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.xiaopeng.common.redis.service.RedisService;
-import com.xiaopeng.operation.mapper.XpOpenCityMapper;
 import com.xiaopeng.api.model.operation.XpOpenCity;
+import com.xiaopeng.common.core.exception.ServiceException;
+import com.xiaopeng.common.core.web.page.PageInfo;
+import com.xiaopeng.common.security.utils.SecurityUtils;
+import com.xiaopeng.operation.constant.I18nKeyConstant;
+import com.xiaopeng.operation.dto.OpenCityAddDTO;
+import com.xiaopeng.operation.dto.OpenCityEditDTO;
+import com.xiaopeng.operation.mapper.XpOpenCityMapper;
+import com.xiaopeng.operation.query.OpenCityPageQuery;
 import com.xiaopeng.operation.service.XpOpenCityService;
 import com.xiaopeng.operation.vo.OpenCityListVO;
 import com.xiaopeng.operation.vo.XpOpenCityNextVo;
@@ -13,9 +21,9 @@
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 
-import javax.annotation.Resource;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Objects;
 import java.util.stream.Collectors;
 
 /**
@@ -80,4 +88,58 @@
                 })
                 .collect(Collectors.toList());
     }
+
+    @Override
+    public PageInfo<XpOpenCity> getPageList(OpenCityPageQuery query) {
+        Page<XpOpenCity> page = lambdaQuery().like(StringUtils.isNotBlank(query.getCityName()), XpOpenCity::getCityName, query.getCityName())
+                .eq(Objects.nonNull(query.getStatus()), XpOpenCity::getStatus, query.getStatus())
+                .orderByDesc(XpOpenCity::getCreateTime)
+                .page(new Page<>(query.getPageNum(), query.getPageSize()));
+        PageInfo<XpOpenCity> pageInfo = new PageInfo<>();
+        pageInfo.setRecords(page.getRecords());
+        page.setTotal(page.getTotal());
+        return pageInfo;
+    }
+
+    @Override
+    public void add(OpenCityAddDTO dto) {
+        checkIfExist(dto, null);
+        XpOpenCity xpOpenCity = BeanUtil.copyProperties(dto, XpOpenCity.class);
+        xpOpenCity.setCreateBy(SecurityUtils.getLoginUser().getSysUser().getNickName());
+        save(xpOpenCity);
+    }
+
+    /**
+     * 校验开通城市是否已添加
+     * @param dto
+     * @param excludeOpenCityId
+     */
+    private void checkIfExist(OpenCityAddDTO dto, Long excludeOpenCityId) {
+        Long count = lambdaQuery().eq(XpOpenCity::getProvinceCode, dto.getProvinceCode())
+                .eq(XpOpenCity::getCityCode, dto.getCityCode())
+                .eq(StringUtils.isNotBlank(dto.getDistrictCode()), XpOpenCity::getDistrictCode, dto.getDistrictCode())
+                .ne(Objects.nonNull(excludeOpenCityId), XpOpenCity::getId, excludeOpenCityId)
+                .count();
+        if (count > 0) {
+            throw new ServiceException("该城市已存在", I18nKeyConstant.OPEN_CITY_EXISTS);
+        }
+    }
+
+    @Override
+    public void edit(OpenCityEditDTO dto) {
+        checkIfExist(dto, dto.getId());
+        XpOpenCity xpOpenCity = BeanUtil.copyProperties(dto, XpOpenCity.class);
+        xpOpenCity.setUpdateBy(SecurityUtils.getLoginUser().getSysUser().getNickName());
+        updateById(xpOpenCity);
+    }
+
+    @Override
+    public void deleteById(Long id) {
+        removeById(id);
+    }
+
+    @Override
+    public void upDown(Long id, Integer status) {
+        lambdaUpdate().eq(XpOpenCity::getId, id).set(XpOpenCity::getStatus, status).update();
+    }
 }

--
Gitblit v1.7.1