diff --git a/tmerclub-local/src/main/java/com/tmerclub/cloud/warehouse/controller/WarehouseController.java b/tmerclub-local/src/main/java/com/tmerclub/cloud/warehouse/controller/WarehouseController.java new file mode 100644 index 0000000..c7e0883 --- /dev/null +++ b/tmerclub-local/src/main/java/com/tmerclub/cloud/warehouse/controller/WarehouseController.java @@ -0,0 +1,94 @@ +package com.tmerclub.cloud.warehouse.controller; + +import com.tmerclub.cloud.common.database.dto.PageDTO; +import com.tmerclub.cloud.common.database.vo.PageVO; +import com.tmerclub.cloud.common.response.ServerResponseEntity; +import com.tmerclub.cloud.warehouse.model.dto.WarehouseDTO; +import com.tmerclub.cloud.warehouse.model.vo.WarehouseVO; +import com.tmerclub.cloud.warehouse.service.WarehouseService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import jakarta.validation.Valid; +import org.springframework.web.bind.annotation.*; + +/** + * 仓库 + * + * @author : frank + * @create : 2025-04-14 + */ +@Tag(name = "后管-仓库") +@RestController("adminWarehouseController") +@RequestMapping("/admin/warehouse") +public class WarehouseController { + @Resource + WarehouseService warehouseService; + + /** + * 分页查询 + * + * @param pageDTO 分页参数 + * @param warehouseDTO 查询参数 + * @return 分页数据 + */ + @GetMapping("/page") + @Operation(summary = "查询仓库分页列表", description = "查询仓库分页列表") + public ServerResponseEntity> page(@Valid PageDTO pageDTO, WarehouseDTO warehouseDTO) { + PageVO warehousePage = warehouseService.page(pageDTO, warehouseDTO); + return ServerResponseEntity.success(warehousePage); + } + + + /** + * 根据主键id获取仓库 + * + * @param id 主键id + * @return WarehouseVO + */ + @GetMapping + @Operation(summary = "根据id获取仓库", description = "根据id获取仓库") + public ServerResponseEntity getById(@RequestParam Long id) { + WarehouseVO warehouse = warehouseService.getById(id); + return ServerResponseEntity.success(warehouse); + } + + /** + * 新增仓库 + * + * @param warehouseDTO WarehouseDTO + * @return ServerResponseEntity + */ + @PostMapping + @Operation(summary = "新增仓库", description = "新增仓库") + public ServerResponseEntity save(@Valid @RequestBody WarehouseDTO warehouseDTO) { + int insert = warehouseService.save(warehouseDTO); + return insert > 0 ? ServerResponseEntity.success() : ServerResponseEntity.showFailMsg("保存失败"); + } + + /** + * 修改仓库 + * + * @param warehouseDTO WarehouseDTO + * @return ServerResponseEntity + */ + @PutMapping + @Operation(summary = "修改仓库", description = "修改仓库") + public ServerResponseEntity update(@Valid @RequestBody WarehouseDTO warehouseDTO) { + int update = warehouseService.update(warehouseDTO); + return update > 0 ? ServerResponseEntity.success() : ServerResponseEntity.showFailMsg("修改失败"); + } + + /** + * 删除仓库 + * + * @param id 主键id + * @return ServerResponseEntity + */ + @DeleteMapping + @Operation(summary = "删除仓库", description = "删除仓库") + public ServerResponseEntity delete(@RequestParam Long id) { + int delete = warehouseService.delete(id); + return delete > 0 ? ServerResponseEntity.success() : ServerResponseEntity.showFailMsg("删除失败"); + } +} \ No newline at end of file diff --git a/tmerclub-local/src/main/java/com/tmerclub/cloud/warehouse/mapper/WarehouseMapper.java b/tmerclub-local/src/main/java/com/tmerclub/cloud/warehouse/mapper/WarehouseMapper.java new file mode 100644 index 0000000..00c89fd --- /dev/null +++ b/tmerclub-local/src/main/java/com/tmerclub/cloud/warehouse/mapper/WarehouseMapper.java @@ -0,0 +1,49 @@ +package com.tmerclub.cloud.warehouse.mapper; + +import com.tmerclub.cloud.warehouse.model.Warehouse; +import com.tmerclub.cloud.warehouse.model.dto.WarehouseDTO; +import com.tmerclub.cloud.warehouse.model.vo.WarehouseVO; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 仓库Mapper接口 + * + * @author : frank + * @create : 2025-04-14 + */ +public interface WarehouseMapper { + + /** + * 查询仓库列表 + * + * @param warehouseDTO 查询参数 + * @return 仓库列表数据 + */ + List list(@Param("dto") WarehouseDTO warehouseDTO); + + /** + * 获取仓库详情 + * + * @param id 主键 + * @return 仓库详情 + */ + WarehouseVO getById(Long id); + + /** + * 新增仓库 + * + * @param warehouse 新增参数 + * @return 新增结果 + */ + int save(Warehouse warehouse); + + /** + * 修改仓库 + * + * @param warehouse 修改参数 + * @return 修改结果 + */ + int update(Warehouse warehouse); +} \ No newline at end of file diff --git a/tmerclub-local/src/main/java/com/tmerclub/cloud/warehouse/model/Warehouse.java b/tmerclub-local/src/main/java/com/tmerclub/cloud/warehouse/model/Warehouse.java new file mode 100644 index 0000000..75bb5d3 --- /dev/null +++ b/tmerclub-local/src/main/java/com/tmerclub/cloud/warehouse/model/Warehouse.java @@ -0,0 +1,87 @@ +package com.tmerclub.cloud.warehouse.model; + +import com.tmerclub.cloud.common.model.BaseModel; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 仓库对象 + * + * @author : frank + * @create : 2025-04-14 + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class Warehouse extends BaseModel implements Serializable { + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + private Long warehouseId; + /** + * 仓库名称 + */ + private String warehouseName; + /** + * 状态:0-禁用,1-启用 + */ + private Integer warehouseStatus; + /** + * 负责人姓名 + */ + private String principalName; + /** + * 负责人电话 + */ + private String principalPhone; + /** + * 省ID + */ + private Long provinceId; + /** + * 省 + */ + private String province; + /** + * 城市ID + */ + private Long cityId; + /** + * 城市 + */ + private String city; + /** + * 区ID + */ + private Long areaId; + /** + * 区 + */ + private String area; + /** + * 邮编 + */ + private String postCode; + /** + * 地址 + */ + private String addr; + /** + * 经度 + */ + private BigDecimal lng; + /** + * 纬度 + */ + private BigDecimal lat; + /** + * 删除状态 0-未删除 1-已删除 + */ + private Integer deleted; +} \ No newline at end of file diff --git a/tmerclub-local/src/main/java/com/tmerclub/cloud/warehouse/model/dto/WarehouseDTO.java b/tmerclub-local/src/main/java/com/tmerclub/cloud/warehouse/model/dto/WarehouseDTO.java new file mode 100644 index 0000000..b21cf69 --- /dev/null +++ b/tmerclub-local/src/main/java/com/tmerclub/cloud/warehouse/model/dto/WarehouseDTO.java @@ -0,0 +1,84 @@ +package com.tmerclub.cloud.warehouse.model.dto; + +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 仓库对象 + * + * @author : frank + * @create : 2025-04-14 + */ +@Data +public class WarehouseDTO implements Serializable { + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + private Long warehouseId; + /** + * 仓库名称 + */ + private String warehouseName; + /** + * 状态:0-禁用,1-启用 + */ + private Integer warehouseStatus; + /** + * 负责人姓名 + */ + private String principalName; + /** + * 负责人电话 + */ + private String principalPhone; + /** + * 省ID + */ + private Long provinceId; + /** + * 省 + */ + private String province; + /** + * 城市ID + */ + private Long cityId; + /** + * 城市 + */ + private String city; + /** + * 区ID + */ + private Long areaId; + /** + * 区 + */ + private String area; + /** + * 邮编 + */ + private String postCode; + /** + * 地址 + */ + private String addr; + /** + * 经度 + */ + private BigDecimal lng; + /** + * 纬度 + */ + private BigDecimal lat; + /** + * 删除状态 0-未删除 1-已删除 + */ + private Integer deleted; +} \ No newline at end of file diff --git a/tmerclub-local/src/main/java/com/tmerclub/cloud/warehouse/model/vo/WarehouseVO.java b/tmerclub-local/src/main/java/com/tmerclub/cloud/warehouse/model/vo/WarehouseVO.java new file mode 100644 index 0000000..88edf7a --- /dev/null +++ b/tmerclub-local/src/main/java/com/tmerclub/cloud/warehouse/model/vo/WarehouseVO.java @@ -0,0 +1,99 @@ +package com.tmerclub.cloud.warehouse.model.vo; + +import com.tmerclub.cloud.common.vo.BaseVO; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 仓库视图对象 + * + * @author : frank + * @create : 2025-04-14 + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class WarehouseVO extends BaseVO implements Serializable { + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @Schema(description = "主键ID") + private Long warehouseId; + /** + * 仓库名称 + */ + @Schema(description = "仓库名称") + private String warehouseName; + /** + * 状态:0-禁用,1-启用 + */ + @Schema(description = "状态:0-禁用,1-启用") + private Integer warehouseStatus; + /** + * 负责人姓名 + */ + @Schema(description = "负责人姓名") + private String principalName; + /** + * 负责人电话 + */ + @Schema(description = "负责人电话") + private String principalPhone; + /** + * 省ID + */ + @Schema(description = "省ID") + private Long provinceId; + /** + * 省 + */ + @Schema(description = "省") + private String province; + /** + * 城市ID + */ + @Schema(description = "城市ID") + private Long cityId; + /** + * 城市 + */ + @Schema(description = "城市") + private String city; + /** + * 区ID + */ + @Schema(description = "区ID") + private Long areaId; + /** + * 区 + */ + @Schema(description = "区") + private String area; + /** + * 邮编 + */ + @Schema(description = "邮编") + private String postCode; + /** + * 地址 + */ + @Schema(description = "地址") + private String addr; + /** + * 经度 + */ + @Schema(description = "经度") + private BigDecimal lng; + /** + * 纬度 + */ + @Schema(description = "纬度") + private BigDecimal lat; +} \ No newline at end of file diff --git a/tmerclub-local/src/main/java/com/tmerclub/cloud/warehouse/service/WarehouseService.java b/tmerclub-local/src/main/java/com/tmerclub/cloud/warehouse/service/WarehouseService.java new file mode 100644 index 0000000..c4511a6 --- /dev/null +++ b/tmerclub-local/src/main/java/com/tmerclub/cloud/warehouse/service/WarehouseService.java @@ -0,0 +1,56 @@ +package com.tmerclub.cloud.warehouse.service; + +import com.tmerclub.cloud.common.database.dto.PageDTO; +import com.tmerclub.cloud.common.database.vo.PageVO; +import com.tmerclub.cloud.warehouse.model.dto.WarehouseDTO; +import com.tmerclub.cloud.warehouse.model.vo.WarehouseVO; + +/** + * 仓库Service接口 + * + * @author : frank + * @create : 2025-04-14 + */ +public interface WarehouseService { + + /** + * 获取仓库分页列表 + * + * @param pageDTO 分页参数 + * @param warehouseDTO 查询参数 + * @return 分页数据 + */ + PageVO page(PageDTO pageDTO, WarehouseDTO warehouseDTO); + + /** + * 获取仓库详情 + * + * @param id 主键 + * @return 仓库详情 + */ + WarehouseVO getById(Long id); + + /** + * 新增仓库 + * + * @param warehouseDTO 新增参数 + * @return 新增结果 + */ + int save(WarehouseDTO warehouseDTO); + + /** + * 修改仓库 + * + * @param warehouseDTO 修改参数 + * @return 修改结果 + */ + int update(WarehouseDTO warehouseDTO); + + /** + * 删除仓库 + * + * @param id 主键 + * @return 删除结果 + */ + int delete(Long id); +} \ No newline at end of file diff --git a/tmerclub-local/src/main/java/com/tmerclub/cloud/warehouse/service/impl/WarehouseServiceImpl.java b/tmerclub-local/src/main/java/com/tmerclub/cloud/warehouse/service/impl/WarehouseServiceImpl.java new file mode 100644 index 0000000..dfd69f4 --- /dev/null +++ b/tmerclub-local/src/main/java/com/tmerclub/cloud/warehouse/service/impl/WarehouseServiceImpl.java @@ -0,0 +1,60 @@ +package com.tmerclub.cloud.warehouse.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.DateUtil; +import com.tmerclub.cloud.common.database.dto.PageDTO; +import com.tmerclub.cloud.common.database.util.PageUtil; +import com.tmerclub.cloud.common.database.vo.PageVO; +import com.tmerclub.cloud.warehouse.mapper.WarehouseMapper; +import com.tmerclub.cloud.warehouse.model.Warehouse; +import com.tmerclub.cloud.warehouse.model.dto.WarehouseDTO; +import com.tmerclub.cloud.warehouse.model.vo.WarehouseVO; +import com.tmerclub.cloud.warehouse.service.WarehouseService; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; + +/** + * 仓库Service实现类 + * + * @author : frank + * @create : 2025-04-14 + */ +@Service +public class WarehouseServiceImpl implements WarehouseService { + + @Resource + WarehouseMapper warehouseMapper; + + @Override + public PageVO page(PageDTO pageDTO, WarehouseDTO warehouseDTO) { + return PageUtil.doPage(pageDTO, () -> warehouseMapper.list(warehouseDTO)); + } + + @Override + public WarehouseVO getById(Long id) { + return warehouseMapper.getById(id); + } + + @Override + public int save(WarehouseDTO warehouseDTO) { + Warehouse warehouse = BeanUtil.toBean(warehouseDTO, Warehouse.class); + warehouse.setCreateTime(DateUtil.date()); + return warehouseMapper.save(warehouse); + } + + @Override + public int update(WarehouseDTO warehouseDTO) { + Warehouse warehouse = BeanUtil.toBean(warehouseDTO, Warehouse.class); + warehouse.setUpdateTime(DateUtil.date()); + return warehouseMapper.update(warehouse); + } + + @Override + public int delete(Long id) { + WarehouseVO warehouseVO = warehouseMapper.getById(id); + Warehouse warehouse = BeanUtil.toBean(warehouseVO, Warehouse.class); + warehouse.setUpdateTime(DateUtil.date()); + warehouse.setDeleted(1); + return warehouseMapper.update(warehouse); + } +} \ No newline at end of file diff --git a/tmerclub-local/src/main/resources/mapper/WarehouseMapper.xml b/tmerclub-local/src/main/resources/mapper/WarehouseMapper.xml new file mode 100644 index 0000000..1e0f6a2 --- /dev/null +++ b/tmerclub-local/src/main/resources/mapper/WarehouseMapper.xml @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + warehouse_id,warehouse_name,warehouse_status,principal_name,principal_phone,province_id,province,city_id,city,area_id,area,post_code,addr,lng,lat,deleted,update_time,create_time + + + + + + + + INSERT INTO warehouse + + warehouse_name, + warehouse_status, + principal_name, + principal_phone, + province_id, + province, + city_id, + city, + area_id, + area, + post_code, + addr, + lng, + lat, + create_time, + + + #{warehouseName}, + #{warehouseStatus}, + #{principalName}, + #{principalPhone}, + #{provinceId}, + #{province}, + #{cityId}, + #{city}, + #{areaId}, + #{area}, + #{postCode}, + #{addr}, + #{lng}, + #{lat}, + #{createTime}, + + + + + UPDATE warehouse + + + warehouse_name = #{warehouseName}, + + + warehouse_status = #{warehouseStatus}, + + + principal_name = #{principalName}, + + + principal_phone = #{principalPhone}, + + + province_id = #{provinceId}, + + + province = #{province}, + + + city_id = #{cityId}, + + + city = #{city}, + + + area_id = #{areaId}, + + + area = #{area}, + + + post_code = #{postCode}, + + + addr = #{addr}, + + + lng = #{lng}, + + + lat = #{lat}, + + + deleted = #{deleted}, + + + where warehouse_id = #{warehouseId} + + \ No newline at end of file