电商项目10:商品管理、仓库管理

电商项目10:商品管理、仓库管理

  • 1、商品管理
    • 1.1、spu检索
      • 1.1.1、后端
      • 1.1.2、前端
    • 1.2、sku检索
      • 1.2.1、后端
  • 2、库存管理
    • 2.1、启动ware后端微服务
    • 2.2、仓库维护查询
    • 2.3、查询商品库存
    • 2.4、查询采购需求

1、商品管理

1.1、spu检索

1.1.1、后端

spu检索接口文档
在这里插入图片描述

SpuInfoController

/*** 列表*/@RequestMapping("/list")// @RequiresPermissions("product:spuinfo:list")public R list(@RequestParam Map<String, Object> params){PageUtils page = spuInfoService.queryPageCondition(params);return R.ok().put("page", page);}

SpuInfoService

PageUtils queryPageCondition(Map<String, Object> params);

SpuInfoServiceImpl

 @Overridepublic PageUtils queryPageCondition(Map<String, Object> params) {QueryWrapper<SpuInfoEntity> wrapper = new QueryWrapper<>();// 关键字检索Object key = params.get("key");// 三级分类idObject catalogId = params.get("catalogId");// 品牌idObject brandId = params.get("brandId");// 状态 0-新建 1-上架 2-下架Object status = params.get("status");if (!StringUtils.isEmpty(key)){wrapper.and((w) -> {w.eq("id",key).or().like("spu_name",key);});}if (!StringUtils.isEmpty(catalogId)){wrapper.eq("catalog_id",catalogId);}if (!StringUtils.isEmpty(brandId)){wrapper.eq("brand_id",brandId);}if (!StringUtils.isEmpty(status)){wrapper.eq("publish_status",status);}IPage<SpuInfoEntity> page = this.page(new Query<SpuInfoEntity>().getPage(params),wrapper);return new PageUtils(page);}

查询时创建时间不是年月日时分秒类型。可以在全局配置文件中配置:

  jackson:date-format: yyyy-MM-dd HH:mm:ss

后端代码修改:
SpuInfoServiceImpl

 if (!StringUtils.isEmpty(catalogId) && !"0".equals(catalogId)){wrapper.eq("catalog_id",catalogId);}if (!StringUtils.isEmpty(brandId) && !"0".equals(brandId)){wrapper.eq("brand_id",brandId);}

1.1.2、前端

前端调用时出现第一次进入页面。搜索时输入框条件未置空,且为0.是因为业务规则,传0就查全部。后端需要改代码。
在这里插入图片描述

1.2、sku检索

1.2.1、后端

sku检索
在这里插入图片描述
SkuInfoController

   /*** 列表*/@RequestMapping("/list")// @RequiresPermissions("product:skuinfo:list")public R list(@RequestParam Map<String, Object> params){PageUtils page = skuInfoService.queryPageByCondition(params);return R.ok().put("page", page);}

SkuInfoService

PageUtils queryPageByCondition(Map<String, Object> params);

SkuInfoServiceImpl

 @Overridepublic PageUtils queryPageByCondition(Map<String, Object> params) {QueryWrapper<SkuInfoEntity> wrapper = new QueryWrapper<>();Object key = params.get("key");Object catelogId = params.get("catelogId");Object brandId = params.get("brandId");Object min = params.get("min");Object max = params.get("max");if (!StringUtils.isEmpty(key)){wrapper.and((w) -> {w.eq("sku_id",key).or().like("sku_name",key);});}if (!StringUtils.isEmpty(catelogId) && !"0".equals(catelogId)){wrapper.eq("catalog_id",catelogId);}if (!StringUtils.isEmpty(brandId) && !"0".equals(brandId)){wrapper.eq("brand_id",brandId);}if (!StringUtils.isEmpty(min)){wrapper.ge("price",min);}if (!StringUtils.isEmpty(max)){BigDecimal bigDecimal = new BigDecimal((String) max);if (bigDecimal.compareTo(new BigDecimal("0")) > 0){// 当价格区间的最大值大于0才去拼接wrapper.le("price",max);}}IPage<SkuInfoEntity> page = this.page(new Query<SkuInfoEntity>().getPage(params),wrapper);return new PageUtils(page);}

2、库存管理

2.1、启动ware后端微服务

application.yml

  application:name: gulimall-ware

GulimallWareApplication

@SpringBootApplication
@EnableDiscoveryClient
@EnableTransactionManagement
@MapperScan("com.ljs.gulimall.ware.dao")
public class GulimallWareApplication {public static void main(String[] args) {SpringApplication.run(GulimallWareApplication.class, args);}}

启动ware服务。登录nacos

在这里插入图片描述
代表已经注册成功

gulimall-gateway配置路由规则

application.yml

   - id: ware_route#负载均衡到member服务uri: lb://gulimall-warepredicates:- Path=/api/ware/**#网关重写filters:- RewritePath=/api/(?<segment>.*),/$\{segment}

在这里插入图片描述

2.2、仓库维护查询

仓库列表
WareInfoServiceImpl

@Overridepublic PageUtils queryPage(Map<String, Object> params) {QueryWrapper<WareInfoEntity> wrapper = new QueryWrapper<>();Object key = params.get("key");if (!StringUtils.isEmpty(key)){wrapper.eq("id", key).or().like("name",key).or().like("address",key).or().like("areacode",key);}IPage<WareInfoEntity> page = this.page(new Query<WareInfoEntity>().getPage(params),wrapper);return new PageUtils(page);}

2.3、查询商品库存

查询商品库存
WareSkuServiceImpl

 @Overridepublic PageUtils queryPage(Map<String, Object> params) {QueryWrapper<WareSkuEntity> wrapper = new QueryWrapper<>();Object skuId = params.get("skuId");if (!StringUtils.isEmpty(skuId)){wrapper.eq("sku_id",skuId);}Object wareId = params.get("wareId");if (!StringUtils.isEmpty(wareId)){wrapper.eq("ware_id",wareId);}IPage<WareSkuEntity> page = this.page(new Query<WareSkuEntity>().getPage(params),wrapper);return new PageUtils(page);}

2.4、查询采购需求

查询采购需求

PurchaseDetailServiceImpl

 @Overridepublic PageUtils queryPage(Map<String, Object> params) {QueryWrapper<PurchaseDetailEntity> wrapper = new QueryWrapper<>();Object key = params.get("key");if (!StringUtils.isEmpty(key)){wrapper.and((w) -> {w.eq("id",key).or().eq("sku_id",key).or().eq("sku_num",key);});}Object status = params.get("status");if (!StringUtils.isEmpty(status)){wrapper.eq("status",status);}Object wareId = params.get("wareId");if (!StringUtils.isEmpty(wareId)){wrapper.eq("ware_id",wareId);}IPage<PurchaseDetailEntity> page = this.page(new Query<PurchaseDetailEntity>().getPage(params),wrapper);return new PageUtils(page);}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/296.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UDP和TCP网络编程

UDP和TCP网络编程 UDP网络编程UDP通信流程&#xff08;回显服务&#xff09;测试扩展《UDP字典查找单词》 TCP网络编程TCP互相通信测试 缓存区和缓存 UDP网络编程 特点&#xff1a; 无连接&#xff1a;发送数据前不需要建立连接。不可靠&#xff1a;没有重发机制&#xff0c;无…

面对Android开发高薪诱惑,如何拿到大厂offer?

前言 出来打工最看重的就是薪资&#xff0c;作为一名5年开发经验的Android人员。在如今的大环境中薪资一降再降&#xff0c;还没人要。技术还还算可以但是面试一直被刷下来&#xff1f;这是为什么&#xff0c;本篇我们来聊聊Android开发面试中的关键。 面试过程 通常面试过程…

VRRP协议是什么?详解它的工作原理

作者&#xff1a;Insist-- 个人主页&#xff1a;insist--个人主页 作者会持续更新网络知识和python基础知识&#xff0c;期待你的关注 前言 本文将讲解VRRP是什么&#xff0c;以及它的工作原理&#xff0c;优点以及基本概念。 目录 一、VRRP协议是什么&#xff1f; 二、VRR…

【FPGA】Verilog:时序电路设计 | 自循环移位寄存器 | 环形计数 | 扭环计数 | 约翰逊计数器

前言&#xff1a;本章内容主要是演示Vivado下利用Verilog语言进行电路设计、仿真、综合和下载 示例&#xff1a;计数器 ​​ 功能特性&#xff1a; 采用 Xilinx Artix-7 XC7A35T芯片 配置方式&#xff1a;USB-JTAG/SPI Flash 高达100MHz 的内部时钟速度 存储器&#xff1a;2Mb…

将当前conda环境导出为yaml文件

conda环境的转移和复制 conda导出已有环境&#xff0c;环境会被保存在environment.yaml文件中。 conda env export > environment.yaml 当我们想再次创建该环境&#xff0c;或根据别人提供的.yaml文件复现环境时&#xff0c;就可以通过下面的命令来复现安装环境了。 conda …

【Docker】子系统与其相关名词的界定、Control Groups等详细讲解

前言 Docker 是一个开源的应用容器引擎&#xff0c;让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。 &#x1f4d5;作者简介&#xff1a;热…

tcp、udp调试工具

NetAssist(网络调试助手) 下载地址&#xff1a;http://www.cmsoft.cn/resource/102.html tcp-server代码 # codingutf-8 # 多线程TCP服务器import socket import threadingbind_ip "192.168.137.1" # 监听的IP 地址 bind_port 5100 # 监听的端口# 建立一个socke…

用OpenCV进行OCR字符分割

1. 引言 本文重点介绍如何利用传统的图像处理的方法来进行OCR字符切分&#xff0c;进而可以用分割后的单个字符做相应的后续任务&#xff0c;虽然现在计算机视觉依然是卷积神经网络的天下&#xff0c;但是对于一些相对简单的落地场景传统方案还是很有效的。 闲话少说&#xff…

c#学习笔记

目录 1.语句块2.Write和WriteLine的区别&#xff1a;3.params4.托管代码和非托管代码5.DllImport的使用&#xff1a;6.WriteLine、ReadLine和ReadKey&#xff1a;7.C#中访问修饰符8.类型的实例化9.成员可以分为两种&#xff1a;数据成员和函数成员10.枚举enum和结构struct的区别…

Cesium 实战 - 使用 gltf-vscode 查看、预览以及编辑 glTF 和 GLB 模型

Cesium 实战 - 使用 gltf-vscode 查看、预览以及编辑 glTF 和 GLB 模型 VScode&#xff08;Visual Studio Code&#xff09; 安装模型必要插件VScode 预览自定义关节&#xff08;articulations&#xff09;动作VScode 导入 GLB 格式模型VScode 导出 GLB 格式模型Cesium 在线示例…

内网穿透技术

文章目录 前言1. 安装JAVA2. MCSManager安装3.局域网访问MCSM4.创建我的世界服务器5.局域网联机测试6.安装cpolar内网穿透7. 配置公网访问地址8.远程联机测试9. 配置固定远程联机端口地址9.1 保留一个固定tcp地址9.2 配置固定公网TCP地址9.3 使用固定公网地址远程联机 转载自内…

SpringBoot3.0整合RocketMQ时出现未能加载bean文件

SpringBoot3.0整合RocketMQ时出现未能加载bean文件 问题 APPLICATION FAILED TO START Description: Field rocketMQTemplate in com.spt.message.service.MqProducerService required a bean of type ‘org.apache.rocketmq.spring.core.RocketMQTemplate’ that could not …