diff --git a/src/main/java/com/gxwebsoft/shop/controller/ShopWarehouseController.java b/src/main/java/com/gxwebsoft/shop/controller/ShopWarehouseController.java new file mode 100644 index 0000000..0590b0c --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/ShopWarehouseController.java @@ -0,0 +1,127 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.shop.service.ShopWarehouseService; +import com.gxwebsoft.shop.entity.ShopWarehouse; +import com.gxwebsoft.shop.param.ShopWarehouseParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 仓库控制器 + * + * @author 科技小王子 + * @since 2026-01-30 17:46:48 + */ +@Tag(name = "仓库管理") +@RestController +@RequestMapping("/api/shop/shop-warehouse") +public class ShopWarehouseController extends BaseController { + @Resource + private ShopWarehouseService shopWarehouseService; + + @Operation(summary = "分页查询仓库") + @GetMapping("/page") + public ApiResult> page(ShopWarehouseParam param) { + // 使用关联查询 + return success(shopWarehouseService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('shop:shopWarehouse:list')") + @Operation(summary = "查询全部仓库") + @GetMapping() + public ApiResult> list(ShopWarehouseParam param) { + // 使用关联查询 + return success(shopWarehouseService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:shopWarehouse:list')") + @Operation(summary = "根据id查询仓库") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(shopWarehouseService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('shop:shopWarehouse:save')") + @OperationLog + @Operation(summary = "添加仓库") + @PostMapping() + public ApiResult save(@RequestBody ShopWarehouse shopWarehouse) { + // 记录当前登录用户id + // User loginUser = getLoginUser(); + // if (loginUser != null) { + // shopWarehouse.setUserId(loginUser.getUserId()); + // } + if (shopWarehouseService.save(shopWarehouse)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:shopWarehouse:update')") + @OperationLog + @Operation(summary = "修改仓库") + @PutMapping() + public ApiResult update(@RequestBody ShopWarehouse shopWarehouse) { + if (shopWarehouseService.updateById(shopWarehouse)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:shopWarehouse:remove')") + @OperationLog + @Operation(summary = "删除仓库") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (shopWarehouseService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('shop:shopWarehouse:save')") + @OperationLog + @Operation(summary = "批量添加仓库") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (shopWarehouseService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:shopWarehouse:update')") + @OperationLog + @Operation(summary = "批量修改仓库") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(shopWarehouseService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:shopWarehouse:remove')") + @OperationLog + @Operation(summary = "批量删除仓库") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (shopWarehouseService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/ShopWarehouse.java b/src/main/java/com/gxwebsoft/shop/entity/ShopWarehouse.java new file mode 100644 index 0000000..55f83e8 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/ShopWarehouse.java @@ -0,0 +1,81 @@ +package com.gxwebsoft.shop.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalDateTime; +import java.io.Serializable; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import com.fasterxml.jackson.annotation.JsonFormat; + +/** + * 仓库 + * + * @author 科技小王子 + * @since 2026-01-30 17:46:47 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Schema(name = "ShopWarehouse对象", description = "仓库") +public class ShopWarehouse implements Serializable { + private static final long serialVersionUID = 1L; + + @Schema(description = "自增ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @Schema(description = "仓库名称") + private String name; + + @Schema(description = "唯一标识") + private String code; + + @Schema(description = "类型 中心仓,区域仓,门店仓") + private String type; + + @Schema(description = "仓库地址") + private String address; + + @Schema(description = "真实姓名") + private String realName; + + @Schema(description = "联系电话") + private String phone; + + @Schema(description = "所在省份") + private String province; + + @Schema(description = "所在城市") + private String city; + + @Schema(description = "所在辖区") + private String region; + + @Schema(description = "经纬度") + private String lngAndLat; + + @Schema(description = "用户ID") + private Integer userId; + + @Schema(description = "备注") + private String comments; + + @Schema(description = "排序号") + private Integer sortNumber; + + @Schema(description = "是否删除") + private Integer isDelete; + + @Schema(description = "租户id") + private Integer tenantId; + + @Schema(description = "创建时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime createTime; + + @Schema(description = "修改时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/ShopWarehouseMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/ShopWarehouseMapper.java new file mode 100644 index 0000000..05c72b1 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/ShopWarehouseMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.shop.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.shop.entity.ShopWarehouse; +import com.gxwebsoft.shop.param.ShopWarehouseParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 仓库Mapper + * + * @author 科技小王子 + * @since 2026-01-30 17:46:47 + */ +public interface ShopWarehouseMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") ShopWarehouseParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") ShopWarehouseParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopWarehouseMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopWarehouseMapper.xml new file mode 100644 index 0000000..53c1383 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopWarehouseMapper.xml @@ -0,0 +1,78 @@ + + + + + + + SELECT a.* + FROM shop_warehouse a + + + AND a.id = #{param.id} + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.code LIKE CONCAT('%', #{param.code}, '%') + + + AND a.type LIKE CONCAT('%', #{param.type}, '%') + + + AND a.address LIKE CONCAT('%', #{param.address}, '%') + + + AND a.real_name LIKE CONCAT('%', #{param.realName}, '%') + + + AND a.phone LIKE CONCAT('%', #{param.phone}, '%') + + + AND a.province LIKE CONCAT('%', #{param.province}, '%') + + + AND a.city LIKE CONCAT('%', #{param.city}, '%') + + + AND a.region LIKE CONCAT('%', #{param.region}, '%') + + + AND a.lng_and_lat LIKE CONCAT('%', #{param.lngAndLat}, '%') + + + AND a.user_id = #{param.userId} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.sort_number = #{param.sortNumber} + + + AND a.is_delete = #{param.isDelete} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/param/ShopWarehouseParam.java b/src/main/java/com/gxwebsoft/shop/param/ShopWarehouseParam.java new file mode 100644 index 0000000..af4d819 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/ShopWarehouseParam.java @@ -0,0 +1,77 @@ +package com.gxwebsoft.shop.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 仓库查询参数 + * + * @author 科技小王子 + * @since 2026-01-30 17:46:47 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@Schema(name = "ShopWarehouseParam对象", description = "仓库查询参数") +public class ShopWarehouseParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @Schema(description = "自增ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @Schema(description = "仓库名称") + private String name; + + @Schema(description = "唯一标识") + private String code; + + @Schema(description = "类型 中心仓,区域仓,门店仓") + private String type; + + @Schema(description = "仓库地址") + private String address; + + @Schema(description = "真实姓名") + private String realName; + + @Schema(description = "联系电话") + private String phone; + + @Schema(description = "所在省份") + @QueryField(type = QueryType.EQ) + private String province; + + @Schema(description = "所在城市") + @QueryField(type = QueryType.EQ) + private String city; + + @Schema(description = "所在辖区") + @QueryField(type = QueryType.EQ) + private String region; + + @Schema(description = "经纬度") + private String lngAndLat; + + @Schema(description = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @Schema(description = "备注") + private String comments; + + @Schema(description = "排序号") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @Schema(description = "是否删除") + @QueryField(type = QueryType.EQ) + private Integer isDelete; + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/ShopWarehouseService.java b/src/main/java/com/gxwebsoft/shop/service/ShopWarehouseService.java new file mode 100644 index 0000000..f8f8c1d --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/ShopWarehouseService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.shop.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.shop.entity.ShopWarehouse; +import com.gxwebsoft.shop.param.ShopWarehouseParam; + +import java.util.List; + +/** + * 仓库Service + * + * @author 科技小王子 + * @since 2026-01-30 17:46:48 + */ +public interface ShopWarehouseService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(ShopWarehouseParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(ShopWarehouseParam param); + + /** + * 根据id查询 + * + * @param id 自增ID + * @return ShopWarehouse + */ + ShopWarehouse getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/ShopWarehouseServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/ShopWarehouseServiceImpl.java new file mode 100644 index 0000000..6b9e727 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/ShopWarehouseServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.ShopWarehouseMapper; +import com.gxwebsoft.shop.service.ShopWarehouseService; +import com.gxwebsoft.shop.entity.ShopWarehouse; +import com.gxwebsoft.shop.param.ShopWarehouseParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 仓库Service实现 + * + * @author 科技小王子 + * @since 2026-01-30 17:46:48 + */ +@Service +public class ShopWarehouseServiceImpl extends ServiceImpl implements ShopWarehouseService { + + @Override + public PageResult pageRel(ShopWarehouseParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(ShopWarehouseParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public ShopWarehouse getByIdRel(Integer id) { + ShopWarehouseParam param = new ShopWarehouseParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +}