谷粒商城实战笔记-92~96-商品发布和查询

文章目录

  • Spu列表检索接口。
  • Sku列表检索接口。
  • 仓库列表接口。
  • 问题记录

这一篇包含如下内容:

  • 92-商品服务-API-新增商品-商品保存其他问题处理
  • 93-商品服务-API-商品管理-SPU检索
  • 94-商品服务-API-商品管理-SKU检索
  • 95-仓储服务-API-仓库管理-整合ware服务&获取仓库列表
  • 96-仓储服务-API-仓库管理-查询库存&创建采购需求

1,优化商品保存,图片为空以及优惠信息不合理时,要对数据进行过滤,避免无意义的垃圾数据进入数据库。

2,开发SPU检索和SKU检索接口,这两个接口的关键在于后台使用MybatisPlus的QueryWrapper封装查询条件时的用法。

3,配置仓储服务的配置,指定注册中心,调整仓库模块自动生成的代码,为列表接口添加查询条件,主要是QueryWrapper的使用。

4,真实业务中的商品库存是通过采购环节,商品进入仓库后才有的。所以,先要有采购单。在创建采购单之前,要创建采购需求,通过审批合并后形成采购单。对采购单列表查询的接口,也做一些优化,主要是增加查询条件。

在这里插入图片描述

Spu列表检索接口。

@Overridepublic PageUtils queryPageByCondition(Map<String, Object> params) {QueryWrapper<SpuInfoEntity> wrapper = new QueryWrapper<>();String key = (String) params.get("key");if(StrUtil.isNotEmpty(key)){wrapper.and((w)->{w.eq("id",key).or().like("spu_name",key);});}// status=1 and (id=1 or spu_name like xxx)String status = (String) params.get("status");if(StrUtil.isNotEmpty(status)){wrapper.eq("publish_status",status);}String brandId = (String) params.get("brandId");if(StrUtil.isNotEmpty(brandId)&&!"0".equalsIgnoreCase(brandId)){wrapper.eq("brand_id",brandId);}String catelogId = (String) params.get("catelogId");if(StrUtil.isNotEmpty(catelogId)&&!"0".equalsIgnoreCase(catelogId)){wrapper.eq("catalog_id",catelogId);}IPage<SpuInfoEntity> page = this.page(new Query<SpuInfoEntity>().getPage(params),wrapper);return new PageUtils(page);}

Sku列表检索接口。

    @Overridepublic PageUtils queryPageByCondition(Map<String, Object> params) {QueryWrapper<SkuInfoEntity> queryWrapper = new QueryWrapper<>();String key = (String) params.get("key");if(StrUtil.isNotEmpty(key)){queryWrapper.and((wrapper)->{wrapper.eq("sku_id",key).or().like("sku_name",key);});}String catelogId = (String) params.get("catelogId");if(StrUtil.isNotEmpty(catelogId)&&!"0".equalsIgnoreCase(catelogId)){queryWrapper.eq("catalog_id",catelogId);}String brandId = (String) params.get("brandId");if(StrUtil.isNotEmpty(brandId)&&!"0".equalsIgnoreCase(catelogId)){queryWrapper.eq("brand_id",brandId);}String min = (String) params.get("min");if(StrUtil.isNotEmpty(min)){queryWrapper.ge("price",min);}String max = (String) params.get("max");if(StrUtil.isNotEmpty(max)  ){try{BigDecimal bigDecimal = new BigDecimal(max);if(bigDecimal.compareTo(new BigDecimal("0"))==1){queryWrapper.le("price",max);}}catch (Exception e){}}IPage<SkuInfoEntity> page = this.page(new Query<SkuInfoEntity>().getPage(params),queryWrapper);return new PageUtils(page);}

仓库列表接口。

@Overridepublic PageUtils queryPage(Map<String, Object> params) {QueryWrapper<WareInfoEntity> queryWrapper = new QueryWrapper<>();QueryWrapper<WareInfoEntity> wareInfoEntityQueryWrapper = new QueryWrapper<>();String key = (String) params.get("key");if(StrUtil.isNotEmpty(key)){wareInfoEntityQueryWrapper.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),queryWrapper);return new PageUtils(page);}采购需求列表查询。```clike
@Overridepublic PageUtils queryPage(Map<String, Object> params) {QueryWrapper<PurchaseDetailEntity> queryWrapper = new QueryWrapper<PurchaseDetailEntity>();String key = (String) params.get("key");if(StrUtil.isNotEmpty(key)){queryWrapper.and(w->{w.eq("purchase_id",key).or().eq("sku_id",key);});}String status = (String) params.get("status");if(StrUtil.isNotEmpty(status)){queryWrapper.eq("status",status);}String wareId = (String) params.get("wareId");if(StrUtil.isNotEmpty(wareId)){queryWrapper.eq("ware_id",wareId);}IPage<PurchaseDetailEntity> page = this.page(new Query<PurchaseDetailEntity>().getPage(params),new QueryWrapper<PurchaseDetailEntity>());return new PageUtils(page);}

问题记录

启动Product服务时,出现错误Consider defining a bean of type 'com.atguigu.gulimall.product.feign.CouponF

Consider defining a bean of type 'com.atguigu.gulimall.product.feign.CouponFeignService

原因是启动确实FeignClient注解。

在这里插入图片描述

在Spring Cloud中,@EnableFeignClients用于启用Feign客户端。Feign是一个声明式的HTTP客户端,简化了编写服务客户端的过程。使用Feign可以轻松地定义接口并通过HTTP调用其他微服务。

下面是@EnableFeignClients注解的一些关键特性:

  1. 启用Feign客户端

    • 当你在一个Spring Boot应用中添加了spring-cloud-starter-openfeign依赖后,可以通过添加@EnableFeignClients到一个配置类上来启用Feign客户端的支持。
  2. 扫描客户端接口

    • 这个注解会告诉Spring框架去扫描指定的包(或默认扫描该注解所在的类的同级及子级包)寻找使用了@FeignClient注解的接口,并创建其实例。
  3. 配置选项

    • 你可以通过@EnableFeignClients注解中的属性来进一步定制Feign客户端的行为,比如:
    • basePackagesvalue:指定要扫描的包名。
    • defaultPackage:指定默认的包名。
    • clients:显式列出需要启用的客户端类型。
    • type:指定Feign Client的类型,默认为FeignClient.class

例如,在Spring Boot中这样使用@EnableFeignClients

@SpringBootApplication
@EnableFeignClients(basePackages = "com.example.clients")
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}

Spring Boot应用会扫描com.example.clients包及其子包中的所有带有@FeignClient注解的接口。

如果你想要全局配置Feign客户端,可以在配置文件(如application.ymlapplication.properties)中进行设置,或者通过@Bean方法提供自定义的FeignClientFactoryContract等组件来配置。

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

蚓链数字化营销系统:“爆省”!“爆赚”!“爆值”!“爆快”!“爆增”!“爆享”!

随着信息技术的飞速发展和消费者行为的深刻变化&#xff0c;数字化营销已成为企业在市场竞争中取得优势的关键手段。蚓链数字化营销系统凭借其创新的功能和策略&#xff0c;为企业带来了一系列“爆”优势&#xff01; “按效果付费--信息化建设费用爆省”&#xff01; “按效果…

卷积神经网络(五)---图像增强的方法

前面的部分专注于卷积神经网络的层结构介绍&#xff0c;同时还介绍了到目前为止比较出名的卷积神经网络&#xff0c;接着使用比较复杂的卷积神经网络提高了 MNIST 数据集的准确率。下面将从另外的角度——图像增强的方面入手&#xff0c;提高模型的准确率和泛化能力。 一直以来…

Android 系统与SDK和JDK版本对照表

Android 系统与SDK和JDK版本对照表 传说中的兼容问题是指在高版本 SDK 平台开发的软件&#xff0c;可能在低版本 Android 系统中运行时出现各种问题。而低版本 SDK 开发的软件在高版本 Android 系统中运行时基本没有兼容问题的。 Android版本SDK/API版本JDK版本备注Android 14…

Django的响应对象

【图书介绍】《Django 5企业级Web应用开发实战&#xff08;视频教学版&#xff09;》_django 5企业级web应用开发实战(视频教学版)-CSDN博客 《Django 5企业级Web应用开发实战&#xff08;视频教学版&#xff09;》(王金柱)【摘要 书评 试读】- 京东图书 (jd.com) Django的请…

react中zuStand状态管理工具使用

一、zuStand的基本使用 1.安装工具 npm install zustand 2.新建文件 在src下新建store文件夹&#xff0c;在store文件夹下新建zuStand.js文件 3.配置zuStand.js // 1.引入创建方法 import { create } from "zustand";// 2.创建store const useStore create((s…

hive 中编写生成连续月sql

记录一下 sql 编写生成从一个确定的起始月份到当前月份的连续月份序列 SELECT substr(add_months(table1.start_dt,table2.pos),1,4) AS INDICT_YEAR,substr(add_months(table1.start_dt,table2.pos),1,7) AS INDICT_MON FROM (SELECT 2024-01-01 AS start_dt,substr(CURRE…

vue3+cesium创建地图

1.我这边使用的是cdn引入形式 比较简单的方式 不需要下载依赖 在项目文件的index.html引入 这样cesium就会挂载到window对象上面去了 <!-- 引入cesium-js文件 --><script src"https://cesium.com/downloads/cesiumjs/releases/1.111/Build/Cesium/Cesium.js"…

【云原生】Kubernetes中的定时任务CronJob的详细用法与企业级应用案例分享

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

数据库安全:MySQL文件权限的安全问题和解决方案

「作者简介」&#xff1a;冬奥会网络安全中国代表队&#xff0c;CSDN Top100&#xff0c;就职奇安信多年&#xff0c;以实战工作为基础著作 《网络安全自学教程》&#xff0c;适合基础薄弱的同学系统化的学习网络安全&#xff0c;用最短的时间掌握最核心的技术。 这一章节我们需…

Java8新特性之Stream-Map

Map一些新方法的具体使用案例 1、getOrDefault:default V getOrDefault(Object key, V defaultValue) package com.qbb.threadpool;import java.util.HashMap; import java.util.Map;/*** author QiuQiu&LL (个人博客:https://www.cnblogs.com/qbbit)* version 1.0* date…

从功能出发:优化超市商品陈列,助力销售额提升

随着时代的发展&#xff0c;竞争的加剧&#xff0c;人们的生活节奏加快&#xff0c;时间观念越来越强。在这种情形下&#xff0c;作为超市&#xff0c;怎样为顾客提供一个舒适方便的购物环境&#xff0c;尽可能让顾客逛完整个卖场&#xff0c;满足一站式购足呢&#xff1f;除了…

外卖项目day10---缓存商品/Spring Cache初学、购物车功能

缓存菜品&#xff0c;只需要在DishController中修改一下代码即可 /*** 菜品管理*/ RestController RequestMapping("/admin/dish") Api(tags "菜品相关接口") Slf4j public class DishController {Autowiredprivate DishService dishService;Autowiredpri…

【前端面试】七、算法-递归

遍历方法总结 链式调用 数组的很多操作可以构成链式操作&#xff0c;类似这样的格式&#xff1a;…map().filter(…).sort(…).map(….)链式操作就是对象方法返回类型是自身的。比如map是属于数组的方法&#xff0c;它返回数组&#xff0c;所以构成了链式操作优势&#xff1a;…

The Llama 3 Herd of Models 第4部分后训练的全文

Llama 3前三部分包括介绍、总体概述和预训练https://blog.csdn.net/qq_51570094/article/details/140682445?spm=1001.2014.3001.5501 4 Post-Training 后训练 我们通过应用几轮后训练6或将模型与人类反馈对齐来生成对齐的Llama 3模型(Ouyang等人,2022;Rafailov等人,2024)在…

Null Pointer Exception: 如何快速定位和修复?️

Null Pointer Exception: 如何快速定位和修复&#xff1f;&#x1f4a1;&#x1f6e0;️ Null Pointer Exception: 如何快速定位和修复&#xff1f;&#x1f4a1;&#x1f6e0;️摘要引言正文内容什么是Null Pointer Exception&#xff1f;&#x1f914;NPE的常见原因&#x1f…

使子查询可行

使用 子查询 时&#xff0c;行为或要求可能不会保存为普通查询。 此查询有效&#xff1a; 但是&#xff0c;作为子查询&#xff0c;它不再起作用&#xff1a; 原因是子查询需要别名&#xff1a;当我们添加它时&#xff0c;原来的错误消失了&#xff0c;但又出现了新的错误&…

springboot集成thymeleaf实战

引言 笔者最近接到一个打印标签的需求&#xff0c;由于之前没有做过类似的功能&#xff0c;所以这也是一次学习探索的机会了&#xff0c;打印的效果图如下&#xff1a; 这个最终的打印是放在58mm*58mm的小标签纸上&#xff0c;条形码就是下面的35165165qweqweqe序列号生成的&…

FPGA知识基础之--按键控制LED灯项目

文章目录 前言一、按键简介按键:通过按下或者释放来控制电路通断的电子元件按键原理图 二、实验要求三、程序设计3.1思路整理3.2 模型搭建3.3 顶层模块3.4 波形分析 四、代码整理4.1RTL代码4.2 仿真只需在Testbench上增加上述一段代码即可将参数实例化,可达到在Testbench上更改…

卷积神经网络的入门基本介绍 | 带你快速上手各种概念【附图解】

文章目录 1、简介2、核心概念3、关键操作4、常见架构5、训练过程6、重要概念图解⭐6.1、卷积神经网络工作⭐6.2、卷积核6.3、全连接与卷积网络的对比6.4、池化层6.5、感受野和卷积堆叠6.6、神经元计算和激活函数 7、卷积网络可以改进的地方8、结论 &#x1f343;作者介绍&#…