From 6fadd0aed93894c0545192c24c99af448146ad81 Mon Sep 17 00:00:00 2001 From: 19173159168 Date: Tue, 12 Aug 2025 21:25:07 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=93=81=E7=89=8C=E7=AE=A1?= =?UTF-8?q?=E7=90=86=EF=BC=8C=E5=93=81=E7=89=8C=E5=8A=A8=E6=80=81=E9=80=89?= =?UTF-8?q?=E6=8B=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/CompanyStoreController.java | 9 + .../controller/ZcCarBrandController.java | 142 ++++++++++ .../controller/ZcCarModelController.java | 27 +- .../ruoyi/operation/domain/CompanyStore.java | 5 + .../ruoyi/operation/domain/ZcCarBrand.java | 154 +++++++++++ .../ruoyi/operation/domain/ZcCarModel.java | 5 + .../operation/mapper/CompanyStoreMapper.java | 8 + .../operation/mapper/ZcCarBrandMapper.java | 87 +++++++ .../operation/mapper/ZcCarModelMapper.java | 5 +- .../service/ICompanyStoreService.java | 7 + .../operation/service/IZcCarBrandService.java | 61 +++++ .../operation/service/IZcCarModelService.java | 4 +- .../service/impl/CompanyStoreServiceImpl.java | 18 ++ .../service/impl/ZcCarBrandServiceImpl.java | 144 ++++++++++ .../service/impl/ZcCarModelServiceImpl.java | 31 ++- .../service/impl/ZcCarServiceImpl.java | 2 +- .../mapper/operation/CompanyStoreMapper.xml | 7 +- .../mapper/operation/ZcCarBrandMapper.xml | 151 +++++++++++ .../mapper/operation/ZcCarModelMapper.xml | 10 +- .../templates/operation/car/add.html | 18 +- .../templates/operation/car/edit.html | 21 +- .../templates/operation/carBrand/add.html | 245 ++++++++++++++++++ .../operation/carBrand/carBrand.html | 92 +++++++ .../templates/operation/carBrand/edit.html | 146 +++++++++++ .../templates/operation/carModel/add.html | 17 +- .../operation/carModel/carModel.html | 7 +- .../templates/operation/carModel/edit.html | 14 +- .../resources/templates/system/menu/menu.html | 6 +- .../ruoyi/common/utils/oss/OssService.java | 10 +- 29 files changed, 1419 insertions(+), 34 deletions(-) create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/operation/controller/ZcCarBrandController.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/operation/domain/ZcCarBrand.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/operation/mapper/ZcCarBrandMapper.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/operation/service/IZcCarBrandService.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/operation/service/impl/ZcCarBrandServiceImpl.java create mode 100644 ruoyi-admin/src/main/resources/mapper/operation/ZcCarBrandMapper.xml create mode 100644 ruoyi-admin/src/main/resources/templates/operation/carBrand/add.html create mode 100644 ruoyi-admin/src/main/resources/templates/operation/carBrand/carBrand.html create mode 100644 ruoyi-admin/src/main/resources/templates/operation/carBrand/edit.html diff --git a/ruoyi-admin/src/main/java/com/ruoyi/operation/controller/CompanyStoreController.java b/ruoyi-admin/src/main/java/com/ruoyi/operation/controller/CompanyStoreController.java index 23a3226..97e58d2 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/operation/controller/CompanyStoreController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/operation/controller/CompanyStoreController.java @@ -113,6 +113,10 @@ public class CompanyStoreController extends BaseController @ResponseBody public AjaxResult addSave(CompanyStore companyStore) { + if (CompanyStore.NOT_UNIQUE.equals(companyStoreService.checkStoreNoUnique(companyStore))) + { + return error("新增失败,门店编号'" + companyStore.getStoreNumber() + "'已存在"); + } companyStore.setCreateBy(getLoginName()); return toAjax(companyStoreService.insertCompanyStore(companyStore)); } @@ -142,6 +146,11 @@ public class CompanyStoreController extends BaseController @ResponseBody public AjaxResult editSave(CompanyStore companyStore) { + // 验证门店编号是否存在(排除当前正在编辑的门店) + if (CompanyStore.NOT_UNIQUE.equals(companyStoreService.checkStoreNoUnique(companyStore))) + { + return error("修改失败,门店编号'" + companyStore.getStoreNumber() + "'已存在"); + } companyStore.setUpdateBy(getLoginName()); return toAjax(companyStoreService.updateCompanyStore(companyStore)); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/operation/controller/ZcCarBrandController.java b/ruoyi-admin/src/main/java/com/ruoyi/operation/controller/ZcCarBrandController.java new file mode 100644 index 0000000..77332b5 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/operation/controller/ZcCarBrandController.java @@ -0,0 +1,142 @@ +package com.ruoyi.operation.controller; + +import java.util.List; + +import com.ruoyi.operation.domain.ZcCarModel; +import com.ruoyi.operation.service.IZcCarModelService; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.operation.domain.ZcCarBrand; +import com.ruoyi.operation.service.IZcCarBrandService; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.utils.poi.ExcelUtil; +import com.ruoyi.common.core.page.TableDataInfo; + +/** + * 品牌管理Controller + * + * @author ruoyi + * @date 2025-08-11 + */ +@Controller +@RequestMapping("/operation/carBrand") +public class ZcCarBrandController extends BaseController +{ + private String prefix = "operation/carBrand"; + + @Autowired + private IZcCarBrandService zcCarBrandService; + @Autowired + private IZcCarModelService zcCarModelService; + @RequiresPermissions("operation:carBrand:view") + @GetMapping() + public String carBrand() + { + return prefix + "/carBrand"; + } + + /** + * 查询品牌管理列表 + */ + @RequiresPermissions("operation:carBrand:list") + @PostMapping("/list") + @ResponseBody + public TableDataInfo list(ZcCarBrand zcCarBrand) + { + startPage(); + List list = zcCarBrandService.selectZcCarBrandList(zcCarBrand); + return getDataTable(list); + } + + /** + * 导出品牌管理列表 + */ + @RequiresPermissions("operation:carBrand:export") + @Log(title = "品牌管理", businessType = BusinessType.EXPORT) + @PostMapping("/export") + @ResponseBody + public AjaxResult export(ZcCarBrand zcCarBrand) + { + List list = zcCarBrandService.selectZcCarBrandList(zcCarBrand); + ExcelUtil util = new ExcelUtil(ZcCarBrand.class); + return util.exportExcel(list, "品牌管理数据"); + } + + /** + * 新增品牌管理 + */ + @GetMapping("/add") + public String add() + { + return prefix + "/add"; + } + + /** + * 新增保存品牌管理 + */ + @RequiresPermissions("operation:carBrand:add") + @Log(title = "品牌管理", businessType = BusinessType.INSERT) + @PostMapping("/add") + @ResponseBody + public AjaxResult addSave(ZcCarBrand zcCarBrand) + { + return toAjax(zcCarBrandService.insertZcCarBrand(zcCarBrand)); + } + + /** + * 修改品牌管理 + */ + @RequiresPermissions("operation:carBrand:edit") + @GetMapping("/edit/{id}") + public String edit(@PathVariable("id") Long id, ModelMap mmap) + { + ZcCarBrand zcCarBrand = zcCarBrandService.selectZcCarBrandById(id); + mmap.put("zcCarBrand", zcCarBrand); + return prefix + "/edit"; + } + + /** + * 修改保存品牌管理 + */ + @RequiresPermissions("operation:carBrand:edit") + @Log(title = "品牌管理", businessType = BusinessType.UPDATE) + @PostMapping("/edit") + @ResponseBody + public AjaxResult editSave(ZcCarBrand zcCarBrand) + { + return toAjax(zcCarBrandService.updateZcCarBrand(zcCarBrand)); + } + + /** + * 删除品牌管理 + */ + @RequiresPermissions("operation:carBrand:remove") + @Log(title = "品牌管理", businessType = BusinessType.DELETE) + @PostMapping( "/remove") + @ResponseBody + public AjaxResult remove(String ids) + { + List brandList = zcCarModelService.selectModelsByBrand(ids); + if(brandList.size() > 0){ + return error("请先删除该品牌下的车型"); + } + return toAjax(zcCarBrandService.deleteZcCarBrandByIds(ids)); + } + + @GetMapping("/brands") + @ResponseBody + public List getBrands() { + return zcCarBrandService.selectZcCarBrandList(new ZcCarBrand()); + } + +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/operation/controller/ZcCarModelController.java b/ruoyi-admin/src/main/java/com/ruoyi/operation/controller/ZcCarModelController.java index e07a79e..b3a8cf1 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/operation/controller/ZcCarModelController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/operation/controller/ZcCarModelController.java @@ -4,7 +4,9 @@ import java.util.ArrayList; import java.util.Date; import java.util.List; +import com.ruoyi.common.utils.StringUtils; import com.ruoyi.operation.domain.*; +import com.ruoyi.operation.service.IZcCarBrandService; import com.ruoyi.operation.service.IZcCarModelPackageService; import com.ruoyi.operation.service.IZcRentCarRuleService; import org.apache.shiro.authz.annotation.RequiresPermissions; @@ -38,11 +40,14 @@ public class ZcCarModelController extends BaseController private IZcRentCarRuleService zcRentCarRuleService; @Autowired private IZcCarModelPackageService zcCarModelPackageService; - + @Autowired + private IZcCarBrandService zcCarBrandService; @RequiresPermissions("operation:carModel:view") @GetMapping() - public String carModel() + public String carModel(ModelMap mmap) { + List carBrandList = zcCarBrandService.selectZcCarBrandList(new ZcCarBrand()); + mmap.put("carBrandList", carBrandList); return prefix + "/carModel"; } @@ -79,6 +84,8 @@ public class ZcCarModelController extends BaseController @GetMapping("/add") public String add(ModelMap mmap) { + List carBrandList = zcCarBrandService.selectZcCarBrandList(new ZcCarBrand()); + mmap.put("carBrandList", carBrandList); ZcRentCarRule zcRentCarRule = new ZcRentCarRule(); zcRentCarRule.setStatus("0"); List rentCarRuleList = zcRentCarRuleService.selectZcRentCarRuleList(zcRentCarRule); @@ -96,6 +103,11 @@ public class ZcCarModelController extends BaseController @ResponseBody public AjaxResult addSave(@RequestParam("rentCarRuleIds") List rentCarRuleIds, ZcCarModel zcCarModel) { + if (StringUtils.isNotEmpty(zcCarModel.getModelName()) + && ZcCarModel.NOT_UNIQUE.equals(zcCarModelService.checkModelNameUnique(zcCarModel))) + { + return error("新增失败,该车型已存在"); + } zcCarModel.setCreateBy(getLoginName()); return toAjax(zcCarModelService.insertZcCarModel(rentCarRuleIds, zcCarModel)); } @@ -107,6 +119,8 @@ public class ZcCarModelController extends BaseController @GetMapping("/edit/{id}") public String edit(@PathVariable("id") Long id, ModelMap mmap) { + List carBrandList = zcCarBrandService.selectZcCarBrandList(new ZcCarBrand()); + mmap.put("carBrandList", carBrandList); List rentCarRuleList = zcRentCarRuleService.selectZcRentCarRuleListByCarModelId(id); mmap.put("rentCarRuleList", rentCarRuleList); @@ -124,6 +138,11 @@ public class ZcCarModelController extends BaseController @ResponseBody public AjaxResult editSave(@RequestParam("rentCarRuleIds") List rentCarRuleIds, ZcCarModel zcCarModel) { + if (StringUtils.isNotEmpty(zcCarModel.getModelName()) + && ZcCarModel.NOT_UNIQUE.equals(zcCarModelService.checkModelNameUnique(zcCarModel))) + { + return error("修改失败,该车型已存在"); + } zcCarModel.setUpdateBy(getLoginName()); return toAjax(zcCarModelService.updateZcCarModel(rentCarRuleIds,zcCarModel)); } @@ -159,8 +178,8 @@ public class ZcCarModelController extends BaseController @PostMapping("/getModels") @ResponseBody - public List getModels(String brandName) { - return zcCarModelService.selectModelsByBrand(brandName); + public List getModels(String brandId) { + return zcCarModelService.selectModelsByBrand(brandId); } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/operation/domain/CompanyStore.java b/ruoyi-admin/src/main/java/com/ruoyi/operation/domain/CompanyStore.java index e3fdb64..14d57e9 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/operation/domain/CompanyStore.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/operation/domain/CompanyStore.java @@ -191,6 +191,11 @@ public class CompanyStore extends BaseEntity @Transient private String operatingCompanyName; + + public final static String UNIQUE = "0"; + public final static String NOT_UNIQUE = "1"; + + public void setId(Long id) { this.id = id; diff --git a/ruoyi-admin/src/main/java/com/ruoyi/operation/domain/ZcCarBrand.java b/ruoyi-admin/src/main/java/com/ruoyi/operation/domain/ZcCarBrand.java new file mode 100644 index 0000000..d17a0ba --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/operation/domain/ZcCarBrand.java @@ -0,0 +1,154 @@ +package com.ruoyi.operation.domain; + +import java.util.List; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.ruoyi.common.annotation.Excel; +import com.ruoyi.common.core.domain.BaseEntity; + +/** + * 品牌管理对象 zc_car_brand + * + * @author ruoyi + * @date 2025-08-11 + */ +public class ZcCarBrand extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 车型ID */ + private Long id; + + /** 品牌名称 */ + @Excel(name = "品牌名称") + private String brandName; + + /** 品牌介绍 */ + @Excel(name = "品牌介绍") + private String brandIntro; + + /** 状态(0正常 1停用) */ + @Excel(name = "状态", readConverterExp = "0=正常,1=停用") + private String status; + + /** 删除标志(0存在 2删除) */ + private String delFlag; + + /** 扩展字段1 */ + @Excel(name = "扩展字段1") + private String extend1; + + /** 扩展字段2 */ + @Excel(name = "扩展字段2") + private String extend2; + + /** 扩展字段3 */ + @Excel(name = "扩展字段3") + private String extend3; + + /** 车型管理信息 */ + private List zcCarModelList; + + public void setId(Long id) + { + this.id = id; + } + + public Long getId() + { + return id; + } + public void setBrandName(String brandName) + { + this.brandName = brandName; + } + + public String getBrandName() + { + return brandName; + } + public void setBrandIntro(String brandIntro) + { + this.brandIntro = brandIntro; + } + + public String getBrandIntro() + { + return brandIntro; + } + public void setStatus(String status) + { + this.status = status; + } + + public String getStatus() + { + return status; + } + public void setDelFlag(String delFlag) + { + this.delFlag = delFlag; + } + + public String getDelFlag() + { + return delFlag; + } + public void setExtend1(String extend1) + { + this.extend1 = extend1; + } + + public String getExtend1() + { + return extend1; + } + public void setExtend2(String extend2) + { + this.extend2 = extend2; + } + + public String getExtend2() + { + return extend2; + } + public void setExtend3(String extend3) + { + this.extend3 = extend3; + } + + public String getExtend3() + { + return extend3; + } + + public List getZcCarModelList() + { + return zcCarModelList; + } + + public void setZcCarModelList(List zcCarModelList) + { + this.zcCarModelList = zcCarModelList; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("id", getId()) + .append("brandName", getBrandName()) + .append("brandIntro", getBrandIntro()) + .append("status", getStatus()) + .append("delFlag", getDelFlag()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("updateBy", getUpdateBy()) + .append("updateTime", getUpdateTime()) + .append("remark", getRemark()) + .append("extend1", getExtend1()) + .append("extend2", getExtend2()) + .append("extend3", getExtend3()) + .append("zcCarModelList", getZcCarModelList()) + .toString(); + } +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/operation/domain/ZcCarModel.java b/ruoyi-admin/src/main/java/com/ruoyi/operation/domain/ZcCarModel.java index 0c4bf74..0eabad1 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/operation/domain/ZcCarModel.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/operation/domain/ZcCarModel.java @@ -67,6 +67,11 @@ public class ZcCarModel extends BaseEntity @Transient private boolean flag = false; + + public final static String UNIQUE = "0"; + public final static String NOT_UNIQUE = "1"; + + public void setId(Long id) { this.id = id; diff --git a/ruoyi-admin/src/main/java/com/ruoyi/operation/mapper/CompanyStoreMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/operation/mapper/CompanyStoreMapper.java index 83ee6f9..d493be9 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/operation/mapper/CompanyStoreMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/operation/mapper/CompanyStoreMapper.java @@ -19,6 +19,14 @@ public interface CompanyStoreMapper */ public CompanyStore selectCompanyStoreById(Long id); + /** + * 检查门店编号是否唯一 + * + * @param storeNo 门店编号 + * @return 门店信息 + */ + public CompanyStore checkStoreNoUnique(String storeNo); + /** * 查询门店列表 * diff --git a/ruoyi-admin/src/main/java/com/ruoyi/operation/mapper/ZcCarBrandMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/operation/mapper/ZcCarBrandMapper.java new file mode 100644 index 0000000..2a303bd --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/operation/mapper/ZcCarBrandMapper.java @@ -0,0 +1,87 @@ +package com.ruoyi.operation.mapper; + +import java.util.List; +import com.ruoyi.operation.domain.ZcCarBrand; +import com.ruoyi.operation.domain.ZcCarModel; + +/** + * 品牌管理Mapper接口 + * + * @author ruoyi + * @date 2025-08-11 + */ +public interface ZcCarBrandMapper +{ + /** + * 查询品牌管理 + * + * @param id 品牌管理主键 + * @return 品牌管理 + */ + public ZcCarBrand selectZcCarBrandById(Long id); + + /** + * 查询品牌管理列表 + * + * @param zcCarBrand 品牌管理 + * @return 品牌管理集合 + */ + public List selectZcCarBrandList(ZcCarBrand zcCarBrand); + + /** + * 新增品牌管理 + * + * @param zcCarBrand 品牌管理 + * @return 结果 + */ + public int insertZcCarBrand(ZcCarBrand zcCarBrand); + + /** + * 修改品牌管理 + * + * @param zcCarBrand 品牌管理 + * @return 结果 + */ + public int updateZcCarBrand(ZcCarBrand zcCarBrand); + + /** + * 删除品牌管理 + * + * @param id 品牌管理主键 + * @return 结果 + */ + public int deleteZcCarBrandById(Long id); + + /** + * 批量删除品牌管理 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteZcCarBrandByIds(String[] ids); + + /** + * 批量删除车型管理 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteZcCarModelByBrandIds(String[] ids); + + /** + * 批量新增车型管理 + * + * @param zcCarModelList 车型管理列表 + * @return 结果 + */ + public int batchZcCarModel(List zcCarModelList); + + + /** + * 通过品牌管理主键删除车型管理信息 + * + * @param id 品牌管理ID + * @return 结果 + */ + public int deleteZcCarModelByBrandId(Long id); +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/operation/mapper/ZcCarModelMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/operation/mapper/ZcCarModelMapper.java index 93e5f6f..7de8334 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/operation/mapper/ZcCarModelMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/operation/mapper/ZcCarModelMapper.java @@ -51,6 +51,7 @@ public interface ZcCarModelMapper */ public int deleteZcCarModelById(Long id); + public int updateZcCarModelBrand(ZcCarModel zcCarModel); /** * 批量删除车型管理 * @@ -61,6 +62,8 @@ public interface ZcCarModelMapper public List selectAllBrands(); - public List selectModelsByBrand(String brandName); + public List selectModelsByBrand(String brandId); + + ZcCarModel checkModelNameUnique(ZcCarModel zcCarModel); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/operation/service/ICompanyStoreService.java b/ruoyi-admin/src/main/java/com/ruoyi/operation/service/ICompanyStoreService.java index 9733e8d..be161d3 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/operation/service/ICompanyStoreService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/operation/service/ICompanyStoreService.java @@ -27,6 +27,13 @@ public interface ICompanyStoreService */ public List selectCompanyStoreList(CompanyStore companyStore); + /** + * 检查门店编号是否唯一 + * @param companyStore 门店信息 + * @return 结果码 + */ + public String checkStoreNoUnique(CompanyStore companyStore); + /** * 新增门店 * diff --git a/ruoyi-admin/src/main/java/com/ruoyi/operation/service/IZcCarBrandService.java b/ruoyi-admin/src/main/java/com/ruoyi/operation/service/IZcCarBrandService.java new file mode 100644 index 0000000..901cbbb --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/operation/service/IZcCarBrandService.java @@ -0,0 +1,61 @@ +package com.ruoyi.operation.service; + +import java.util.List; +import com.ruoyi.operation.domain.ZcCarBrand; + +/** + * 品牌管理Service接口 + * + * @author ruoyi + * @date 2025-08-11 + */ +public interface IZcCarBrandService +{ + /** + * 查询品牌管理 + * + * @param id 品牌管理主键 + * @return 品牌管理 + */ + public ZcCarBrand selectZcCarBrandById(Long id); + + /** + * 查询品牌管理列表 + * + * @param zcCarBrand 品牌管理 + * @return 品牌管理集合 + */ + public List selectZcCarBrandList(ZcCarBrand zcCarBrand); + + /** + * 新增品牌管理 + * + * @param zcCarBrand 品牌管理 + * @return 结果 + */ + public int insertZcCarBrand(ZcCarBrand zcCarBrand); + + /** + * 修改品牌管理 + * + * @param zcCarBrand 品牌管理 + * @return 结果 + */ + public int updateZcCarBrand(ZcCarBrand zcCarBrand); + + /** + * 批量删除品牌管理 + * + * @param ids 需要删除的品牌管理主键集合 + * @return 结果 + */ + public int deleteZcCarBrandByIds(String ids); + + /** + * 删除品牌管理信息 + * + * @param id 品牌管理主键 + * @return 结果 + */ + public int deleteZcCarBrandById(Long id); +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/operation/service/IZcCarModelService.java b/ruoyi-admin/src/main/java/com/ruoyi/operation/service/IZcCarModelService.java index 8b13dd4..89b39b3 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/operation/service/IZcCarModelService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/operation/service/IZcCarModelService.java @@ -19,6 +19,7 @@ public interface IZcCarModelService */ public ZcCarModel selectZcCarModelById(Long id); + public String checkModelNameUnique(ZcCarModel zcCarModel); /** * 查询车型管理列表 * @@ -46,6 +47,7 @@ public interface IZcCarModelService public int updateZcCarModel(List rentCarRuleIds, ZcCarModel zcCarModel); + public int updateZcCarModelBrand(ZcCarModel zcCarModel); /** * 批量删除车型管理 * @@ -73,6 +75,6 @@ public interface IZcCarModelService /** * 根据品牌查询车型列表 */ - List selectModelsByBrand(String brandName); + List selectModelsByBrand(String brandId); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/operation/service/impl/CompanyStoreServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/operation/service/impl/CompanyStoreServiceImpl.java index 65836bc..1df0f6e 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/operation/service/impl/CompanyStoreServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/operation/service/impl/CompanyStoreServiceImpl.java @@ -49,6 +49,24 @@ public class CompanyStoreServiceImpl implements ICompanyStoreService return companyStoreMapper.selectCompanyStoreList(companyStore); } + /** + * 检查门店编号是否唯一 + * + * @param companyStore 门店信息 + * @return 结果码 + */ + @Override + public String checkStoreNoUnique(CompanyStore companyStore) + { + Long storeId = StringUtils.isNull(companyStore.getId()) ? -1L : companyStore.getId(); + CompanyStore info = companyStoreMapper.checkStoreNoUnique(companyStore.getStoreNumber()); + if (StringUtils.isNotNull(info) && info.getId().longValue() != storeId.longValue()) + { + return CompanyStore.NOT_UNIQUE; + } + return CompanyStore.UNIQUE; + } + /** * 新增门店 * diff --git a/ruoyi-admin/src/main/java/com/ruoyi/operation/service/impl/ZcCarBrandServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/operation/service/impl/ZcCarBrandServiceImpl.java new file mode 100644 index 0000000..a5c2c49 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/operation/service/impl/ZcCarBrandServiceImpl.java @@ -0,0 +1,144 @@ +package com.ruoyi.operation.service.impl; + +import java.util.List; +import com.ruoyi.common.utils.DateUtils; +import com.ruoyi.operation.service.IZcCarModelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import java.util.ArrayList; +import com.ruoyi.common.utils.StringUtils; +import org.springframework.transaction.annotation.Transactional; +import com.ruoyi.operation.domain.ZcCarModel; +import com.ruoyi.operation.mapper.ZcCarBrandMapper; +import com.ruoyi.operation.domain.ZcCarBrand; +import com.ruoyi.operation.service.IZcCarBrandService; +import com.ruoyi.common.core.text.Convert; + +/** + * 品牌管理Service业务层处理 + * + * @author ruoyi + * @date 2025-08-11 + */ +@Service +public class ZcCarBrandServiceImpl implements IZcCarBrandService +{ + @Autowired + private ZcCarBrandMapper zcCarBrandMapper; + @Autowired + private IZcCarModelService zcCarModelService; + /** + * 查询品牌管理 + * + * @param id 品牌管理主键 + * @return 品牌管理 + */ + @Override + public ZcCarBrand selectZcCarBrandById(Long id) + { + return zcCarBrandMapper.selectZcCarBrandById(id); + } + + /** + * 查询品牌管理列表 + * + * @param zcCarBrand 品牌管理 + * @return 品牌管理 + */ + @Override + public List selectZcCarBrandList(ZcCarBrand zcCarBrand) + { + return zcCarBrandMapper.selectZcCarBrandList(zcCarBrand); + } + + /** + * 新增品牌管理 + * + * @param zcCarBrand 品牌管理 + * @return 结果 + */ + @Transactional + @Override + public int insertZcCarBrand(ZcCarBrand zcCarBrand) + { + zcCarBrand.setCreateTime(DateUtils.getNowDate()); + int rows = zcCarBrandMapper.insertZcCarBrand(zcCarBrand); + //insertZcCarModel(zcCarBrand); + return rows; + } + + /** + * 修改品牌管理 + * + * @param zcCarBrand 品牌管理 + * @return 结果 + */ + @Transactional + @Override + public int updateZcCarBrand(ZcCarBrand zcCarBrand) + { + zcCarBrand.setUpdateTime(DateUtils.getNowDate()); + //zcCarBrandMapper.deleteZcCarModelByBrandId(zcCarBrand.getId()); + //insertZcCarModel(zcCarBrand); + int flag = zcCarBrandMapper.updateZcCarBrand(zcCarBrand); + if(flag > 0) { + ZcCarModel zcCarModel = new ZcCarModel(); + zcCarModel.setBrandId(zcCarBrand.getId()); + zcCarModel.setBrandName(zcCarBrand.getBrandName()); + zcCarModelService.updateZcCarModelBrand(zcCarModel); + } + return flag; + } + + /** + * 批量删除品牌管理 + * + * @param ids 需要删除的品牌管理主键 + * @return 结果 + */ + @Transactional + @Override + public int deleteZcCarBrandByIds(String ids) + { + zcCarBrandMapper.deleteZcCarModelByBrandIds(Convert.toStrArray(ids)); + return zcCarBrandMapper.deleteZcCarBrandByIds(Convert.toStrArray(ids)); + } + + /** + * 删除品牌管理信息 + * + * @param id 品牌管理主键 + * @return 结果 + */ + @Transactional + @Override + public int deleteZcCarBrandById(Long id) + { + zcCarBrandMapper.deleteZcCarModelByBrandId(id); + return zcCarBrandMapper.deleteZcCarBrandById(id); + } + + /** + * 新增车型管理信息 + * + * @param zcCarBrand 品牌管理对象 + */ + public void insertZcCarModel(ZcCarBrand zcCarBrand) + { + List zcCarModelList = zcCarBrand.getZcCarModelList(); + Long id = zcCarBrand.getId(); + if (StringUtils.isNotNull(zcCarModelList)) + { + List list = new ArrayList(); + for (ZcCarModel zcCarModel : zcCarModelList) + { + zcCarModel.setBrandId(id); + list.add(zcCarModel); + } + if (list.size() > 0) + { + zcCarBrandMapper.batchZcCarModel(list); + } + } + } +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/operation/service/impl/ZcCarModelServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/operation/service/impl/ZcCarModelServiceImpl.java index 4cf419c..9c98d49 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/operation/service/impl/ZcCarModelServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/operation/service/impl/ZcCarModelServiceImpl.java @@ -4,7 +4,9 @@ import java.util.ArrayList; import java.util.Collections; import java.util.Date; import java.util.List; + import com.ruoyi.common.utils.DateUtils; +import com.ruoyi.common.utils.StringUtils; import com.ruoyi.operation.domain.ZcCarModelPackage; import com.ruoyi.operation.service.IZcCarModelPackageService; import org.springframework.beans.factory.annotation.Autowired; @@ -40,6 +42,17 @@ public class ZcCarModelServiceImpl implements IZcCarModelService return zcCarModelMapper.selectZcCarModelById(id); } + @Override + public String checkModelNameUnique(ZcCarModel zcCarModel) { + Long modelId = StringUtils.isNull(zcCarModel.getId()) ? -1L : zcCarModel.getId(); + ZcCarModel info = zcCarModelMapper.checkModelNameUnique(zcCarModel); + if (StringUtils.isNotNull(info) && info.getId().longValue() != modelId.longValue()) + { + return ZcCarModel.NOT_UNIQUE; + } + return ZcCarModel.UNIQUE; + } + /** * 查询车型管理列表 * @@ -142,13 +155,25 @@ public class ZcCarModelServiceImpl implements IZcCarModelService return flag; } + /** + * 更新车辆品牌型号信息 + * + * @param zcCarModel 车辆品牌型号对象,包含要更新的品牌型号信息 + * @return 更新操作影响的记录数 + */ + @Override + public int updateZcCarModelBrand(ZcCarModel zcCarModel){ + return zcCarModelMapper.updateZcCarModelBrand(zcCarModel); + } + /** * 批量删除车型管理 * * @param ids 需要删除的车型管理主键 * @return 结果 */ - @Override + + public int deleteZcCarModelByIds(String ids) { return zcCarModelMapper.deleteZcCarModelByIds(Convert.toStrArray(ids)); @@ -179,8 +204,8 @@ public class ZcCarModelServiceImpl implements IZcCarModelService @Override - public List selectModelsByBrand(String brandName) { - return zcCarModelMapper.selectModelsByBrand(brandName); + public List selectModelsByBrand(String brandId) { + return zcCarModelMapper.selectModelsByBrand(brandId); } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/operation/service/impl/ZcCarServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/operation/service/impl/ZcCarServiceImpl.java index d8aeb71..b218f36 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/operation/service/impl/ZcCarServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/operation/service/impl/ZcCarServiceImpl.java @@ -166,7 +166,7 @@ public class ZcCarServiceImpl implements IZcCarService { try { - // 验证是否存在这个用户 + // 验证是否存在 ZcCar u = zcCarMapper.checkVinUnique(car.getVin()); if (StringUtils.isNull(u)) { diff --git a/ruoyi-admin/src/main/resources/mapper/operation/CompanyStoreMapper.xml b/ruoyi-admin/src/main/resources/mapper/operation/CompanyStoreMapper.xml index 3d5ba3e..72d84ba 100644 --- a/ruoyi-admin/src/main/resources/mapper/operation/CompanyStoreMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/operation/CompanyStoreMapper.xml @@ -119,7 +119,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where id = #{id} - + + + insert into zc_company_store diff --git a/ruoyi-admin/src/main/resources/mapper/operation/ZcCarBrandMapper.xml b/ruoyi-admin/src/main/resources/mapper/operation/ZcCarBrandMapper.xml new file mode 100644 index 0000000..a980756 --- /dev/null +++ b/ruoyi-admin/src/main/resources/mapper/operation/ZcCarBrandMapper.xml @@ -0,0 +1,151 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select id, brand_name, brand_intro, status, del_flag, create_by, create_time, update_by, update_time, remark, extend1, extend2, extend3 from zc_car_brand + + + + + + + + insert into zc_car_brand + + brand_name, + brand_intro, + status, + del_flag, + create_by, + create_time, + update_by, + update_time, + remark, + extend1, + extend2, + extend3, + + + #{brandName}, + #{brandIntro}, + #{status}, + #{delFlag}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + #{remark}, + #{extend1}, + #{extend2}, + #{extend3}, + + + + + update zc_car_brand + + brand_name = #{brandName}, + brand_intro = #{brandIntro}, + status = #{status}, + del_flag = #{delFlag}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + remark = #{remark}, + extend1 = #{extend1}, + extend2 = #{extend2}, + extend3 = #{extend3}, + + where id = #{id} + + + + delete from zc_car_brand where id = #{id} + + + + delete from zc_car_brand where id in + + #{id} + + + + + delete from zc_car_model where brand_id in + + #{brandId} + + + + + delete from zc_car_model where brand_id = #{brandId} + + + + insert into zc_car_model( id, model_name, brand_id, brand_name, battery_type, max_speed, weight, status, del_flag, create_by, create_time, update_by, update_time, remark, extend1, extend2, extend3) values + + ( #{item.id}, #{item.modelName}, #{item.brandId}, #{item.brandName}, #{item.batteryType}, #{item.maxSpeed}, #{item.weight}, #{item.status}, #{item.delFlag}, #{item.createBy}, #{item.createTime}, #{item.updateBy}, #{item.updateTime}, #{item.remark}, #{item.extend1}, #{item.extend2}, #{item.extend3}) + + + + \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/mapper/operation/ZcCarModelMapper.xml b/ruoyi-admin/src/main/resources/mapper/operation/ZcCarModelMapper.xml index 2bbd77d..431fd0e 100644 --- a/ruoyi-admin/src/main/resources/mapper/operation/ZcCarModelMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/operation/ZcCarModelMapper.xml @@ -49,6 +49,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and model_name like concat('%', #{modelName}, '%') + and brand_id = #{brandId} and brand_name like concat('%', #{brandName}, '%') and status = #{status} @@ -124,7 +125,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where id = #{id} - + + update zc_car_model set brand_name = #{brandName} where brand_id = #{brandId} + delete from zc_car_model where id = #{id} @@ -141,6 +144,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/templates/operation/car/add.html b/ruoyi-admin/src/main/resources/templates/operation/car/add.html index 092c37b..13415b2 100644 --- a/ruoyi-admin/src/main/resources/templates/operation/car/add.html +++ b/ruoyi-admin/src/main/resources/templates/operation/car/add.html @@ -22,7 +22,8 @@
- +
@@ -126,23 +127,25 @@ $(function () { // 加载品牌列表 $.ajax({ - url: ctx + 'operation/carModel/brands', + url: ctx + 'operation/carBrand/brands', type: 'GET', success: function (brands) { var brandSelect = $('#brand-select'); brands.forEach(function (brand) { - brandSelect.append(''); + brandSelect.append(''); }); } }); // 品牌选择变化时加载对应车型 $('#brand-select').on('change', function () { - var brandName = $(this).val(); + var brandId = $(this).val(); + var brandName = $(this).find("option:selected").text(); + $('#brandName').val(brandName); var modelSelect = $('#model-select'); modelSelect.empty().append('').prop('disabled', true); - if (!brandName) { + if (!brandId) { modelSelect.empty().append('').prop('disabled', true); return; } @@ -150,7 +153,7 @@ $.ajax({ url: ctx + 'operation/carModel/getModels', type: 'POST', - data: { brandName: brandName }, + data: { brandId: brandId }, success: function (models) { modelSelect.empty(); if (models.length === 0) { @@ -160,6 +163,9 @@ modelSelect.append(''); }); modelSelect.prop('disabled', false); + var modelName = $('#model-select option:selected').text(); + // 将门店名称赋值给隐藏输入框 + $("#modelName").val(modelName); } } }); diff --git a/ruoyi-admin/src/main/resources/templates/operation/car/edit.html b/ruoyi-admin/src/main/resources/templates/operation/car/edit.html index 68dcefa..6e12129 100644 --- a/ruoyi-admin/src/main/resources/templates/operation/car/edit.html +++ b/ruoyi-admin/src/main/resources/templates/operation/car/edit.html @@ -23,7 +23,8 @@
- +
@@ -118,19 +119,20 @@ var modelSelect = $('#model-select'); // 保存当前车辆的品牌与车型值 - var savedBrand = [[${zcCar.brandName}]]; + var savedBrand = [[${zcCar.brandId}]]; + var savedBrandName = [[${zcCar.brandName}]]; var modelId = [[${zcCar.modelId}]]; var modelName = [[${zcCar.modelName}]]; // 加载品牌列表 $.ajax({ - url: ctx + 'operation/carModel/brands', + url: ctx + 'operation/carBrand/brands', type: 'GET', success: function (brands) { var brandSelect = $('#brand-select'); brands.forEach(function (brand) { - var option = $('').prop('disabled', true); return; @@ -159,11 +163,11 @@ }); // =================== 加载车型方法封装 =================== - function loadModels(brandName, modelName = null) { + function loadModels(brandId, modelName = null) { $.ajax({ url: ctx + 'operation/carModel/getModels', type: 'POST', - data: { brandName: brandName }, + data: { brandId: brandId }, success: function (models) { modelSelect.empty(); @@ -181,6 +185,9 @@ // 设置隐藏域 var selectedModelName = modelSelect.find('option:selected').text(); $('#modelName').val(selectedModelName); + }else{ + // 将门店名称赋值给隐藏输入框 + $("#modelName").val($('#model-select option:selected').text()); } } } diff --git a/ruoyi-admin/src/main/resources/templates/operation/carBrand/add.html b/ruoyi-admin/src/main/resources/templates/operation/carBrand/add.html new file mode 100644 index 0000000..3b93d3a --- /dev/null +++ b/ruoyi-admin/src/main/resources/templates/operation/carBrand/add.html @@ -0,0 +1,245 @@ + + + + + + +
+
+ +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+ + + + + + + + + + +
+
+ + + + \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/templates/operation/carBrand/carBrand.html b/ruoyi-admin/src/main/resources/templates/operation/carBrand/carBrand.html new file mode 100644 index 0000000..541438a --- /dev/null +++ b/ruoyi-admin/src/main/resources/templates/operation/carBrand/carBrand.html @@ -0,0 +1,92 @@ + + + + + + +
+
+
+
+
+ +
+
+
+ + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/templates/operation/carBrand/edit.html b/ruoyi-admin/src/main/resources/templates/operation/carBrand/edit.html new file mode 100644 index 0000000..8ecec0f --- /dev/null +++ b/ruoyi-admin/src/main/resources/templates/operation/carBrand/edit.html @@ -0,0 +1,146 @@ + + + + + + +
+
+

品牌信息

+ +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+

品牌车型信息

+
+
+ + +
+
+
+
+
+
+
+ + + + \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/templates/operation/carModel/add.html b/ruoyi-admin/src/main/resources/templates/operation/carModel/add.html index 3a8b130..1c93fe2 100644 --- a/ruoyi-admin/src/main/resources/templates/operation/carModel/add.html +++ b/ruoyi-admin/src/main/resources/templates/operation/carModel/add.html @@ -13,10 +13,14 @@
+
- +
@@ -127,8 +131,19 @@ ).on("filecleared", function (event, data, msg) { $("input[name='" + event.currentTarget.id + "']").val('') }); + + + + // 品牌选择变化时 + $('#brandId').on('change', function () { + var brandName = $(this).find("option:selected").text(); + $('#brandName').val(brandName); + }); + }); + + $(function() { var options = { data: rentCarRuleList, diff --git a/ruoyi-admin/src/main/resources/templates/operation/carModel/carModel.html b/ruoyi-admin/src/main/resources/templates/operation/carModel/carModel.html index 64c2910..b2a37b5 100644 --- a/ruoyi-admin/src/main/resources/templates/operation/carModel/carModel.html +++ b/ruoyi-admin/src/main/resources/templates/operation/carModel/carModel.html @@ -13,7 +13,10 @@
  • - +
  • @@ -84,7 +87,7 @@ { field: 'modelName', title: '车型名称', - width: '400' + width: '200' }, { field: 'batteryType', diff --git a/ruoyi-admin/src/main/resources/templates/operation/carModel/edit.html b/ruoyi-admin/src/main/resources/templates/operation/carModel/edit.html index 54495ca..8ec6c66 100644 --- a/ruoyi-admin/src/main/resources/templates/operation/carModel/edit.html +++ b/ruoyi-admin/src/main/resources/templates/operation/carModel/edit.html @@ -13,10 +13,17 @@ +
    - +
    @@ -96,6 +103,11 @@ var selectedValues = [[${zcCarModel.batteryType}]].split(','); $('.select2-multiple').val(selectedValues).trigger('change'); + // 品牌选择变化时 + $('#brandId').on('change', function () { + var brandName = $(this).find("option:selected").text(); + $('#brandName').val(brandName); + }); var options = { data: rentCarRuleList, diff --git a/ruoyi-admin/src/main/resources/templates/system/menu/menu.html b/ruoyi-admin/src/main/resources/templates/system/menu/menu.html index 3b7c2c1..bfa6494 100644 --- a/ruoyi-admin/src/main/resources/templates/system/menu/menu.html +++ b/ruoyi-admin/src/main/resources/templates/system/menu/menu.html @@ -147,9 +147,9 @@ align: "left", formatter: function(value, row, index) { var actions = []; - actions.push('编辑 '); - actions.push('新增 '); - actions.push('删除'); + actions.push('编辑 '); + actions.push('新增 '); + actions.push('删除'); return actions.join(''); } }] diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/oss/OssService.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/oss/OssService.java index 85c9471..7b6a43a 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/oss/OssService.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/oss/OssService.java @@ -11,6 +11,8 @@ import org.springframework.web.multipart.MultipartFile; import java.io.IOException; import java.io.InputStream; +import java.net.URL; +import java.util.Date; import java.util.UUID; @Component @@ -48,8 +50,14 @@ public class OssService { // 上传文件 ossClient.putObject(putObjectRequest); + // 设置预签名URL过期时间,单位为亮秒。本示例以设置过期时间为1小时为例 + Date expiration = new Date(new Date().getTime()+ 3600 * 1000L); + //生成以GET方法访问的预签名URL、本示例没有额外请求头,其他人可以直按通过湖览器访问相关内容 + URL url = ossClient.generatePresignedUrl(ossConfig.getBucketName(), objectName, expiration); + System.out.println(url); + return url.toString(); // 返回文件访问 URL - return "https://" + ossConfig.getDomain() + "/" + objectName; + //return "https://" + ossConfig.getDomain() + "/" + objectName; } catch (com.aliyun.oss.OSSException e) { if ("AccessDenied".equals(e.getErrorCode())) { throw new IOException("OSS权限不足,请联系管理员配置权限。错误代码: " + e.getErrorCode(), e);