电商+支付双系统项目------电商系统中收货模块的开发

本篇文章是讲关于项目的收货地址模块的设计。这个就比较简单了,我就不像之前的文章讲的那么详细了,就简单讲讲就好。

首先先设计 DAO 层:

package com.imooc.mall.dao;import com.imooc.mall.pojo.Shipping;
import org.apache.ibatis.annotations.Param;import java.util.List;
import java.util.Set;public interface ShippingMapper {int deleteByPrimaryKey(Integer id);//根据收货地址的主键(id)删除对应的收货地址记录int insert(Shipping record);//将一个收货地址记录插入数据库int insertSelective(Shipping record);//选择性地插入一个收货地址记录,即只插入非空字段的值Shipping selectByPrimaryKey(Integer id);//根据收货地址的主键(id)查询对应的收货地址记录int updateByPrimaryKeySelective(Shipping record);//选择性地更新收货地址记录,即只更新非空字段的值int updateByPrimaryKey(Shipping record);//更新收货地址记录的所有字段的值int deleteByIdAndUid(@Param("uid") Integer uid,@Param("shippingId") Integer shippingId);//根据用户ID(uid)和收货地址ID(shippingId),删除对应用户的收货地址记录List<Shipping> selectByUid(Integer uid);//根据用户ID(uid),查询该用户的所有收货地址记录Shipping selectByUidAndShippingId(@Param("uid") Integer uid,@Param("shippingId") Integer shippingId);//根据用户ID(uid)和收货地址ID(shippingId),查询对应的收货地址记录List<Shipping> selectByIdSet(@Param("idSet") Set idSet);//根据收货地址ID的集合(idSet),查询对应的收货地址记录列表
}

这是一个名为 ShippingMapper 的接口,用于与数据库进行交互,执行与收货地址(Shipping)相关的操作。该接口定义了一系列方法来实现对收货地址的增删改查操作。

这些方法定义了对收货地址表的基本操作,包括增加、删除、修改和查询。通过调用这些方法,可以对收货地址进行管理,以满足电商系统的需求。

这些方法的实现放在了 Shipping.Mapper.xml 中:(简单看看既可)

然后设计service层。

package com.imooc.mall.service;import com.github.pagehelper.PageInfo;
import com.imooc.mall.form.ShippingForm;
import com.imooc.mall.vo.ResponseVo;import java.util.Map;public interface IShippingService {ResponseVo<Map<String, Integer>> add(Integer uid, ShippingForm form);ResponseVo delete(Integer uid, Integer shippingId);ResponseVo update(Integer uid, Integer shippingId, ShippingForm form);ResponseVo<PageInfo> list(Integer uid, Integer pageNum, Integer pageSize);
}

这是一个名为 IShippingService 的接口,用于定义与收货地址(Shipping)相关的服务方法。该接口提供了一系列方法来处理收货地址的添加、删除、更新和查询操作,并返回相应的响应结果(ResponseVo)。

关于接口中四个方法的一些说明:

  1. add 方法:向指定用户(uid)添加一个新的收货地址,参数包括用户ID和收货地址表单(ShippingForm)。返回的响应结果包含一个 Map 对象,其中包含新添加的收货地址的ID。
  2. delete 方法:删除指定用户(uid)的某个收货地址(shippingId),参数包括用户ID和收货地址ID。返回的响应结果表示删除操作的结果。
  3. update 方法:更新指定用户(uid)的某个收货地址(shippingId),参数包括用户ID、收货地址ID和收货地址表单(ShippingForm)。返回的响应结果表示更新操作的结果。
  4. list 方法:获取指定用户(uid)的收货地址列表,参数包括用户ID、页码(pageNum)和每页大小(pageSize)。返回的响应结果是一个 PageInfo 对象,其中包含分页后的收货地址列表信息。

这些方法定义了对收货地址的常见操作,通过调用这些方法可以实现对收货地址的管理和查询。响应结果(ResponseVo)提供了相应的状态码和数据,方便前端进行处理和展示。

最后设计controller层。controller层其实写的很规整,所以理解起来很舒服。

package com.imooc.mall.controller;import com.imooc.mall.consts.MallConst;
import com.imooc.mall.form.ShippingForm;@RestController
public class ShippingController {@Autowiredprivate IShippingService shippingService;@PostMapping("/shippings")public ResponseVo add(@Valid @RequestBody ShippingForm form,HttpSession session) {User user = (User) session.getAttribute(MallConst.CURRENT_USER);return shippingService.add(user.getId(), form);}@DeleteMapping("/shippings/{shippingId}")public ResponseVo delete(@PathVariable Integer shippingId,HttpSession session) {User user = (User) session.getAttribute(MallConst.CURRENT_USER);return shippingService.delete(user.getId(), shippingId);}@PutMapping("/shippings/{shippingId}")public ResponseVo update(@PathVariable Integer shippingId,@Valid @RequestBody ShippingForm form,HttpSession session) {User user = (User) session.getAttribute(MallConst.CURRENT_USER);return shippingService.update(user.getId(), shippingId, form);}@GetMapping("/shippings")public ResponseVo list(@RequestParam(required = false, defaultValue = "1") Integer pageNum,@RequestParam(required = false, defaultValue = "10") Integer pageSize,HttpSession session) {User user = (User) session.getAttribute(MallConst.CURRENT_USER);return shippingService.list(user.getId(), pageNum, pageSize);}
}

这是一个名为 ShippingController 的控制器类,用于处理与收货地址(Shipping)相关的HTTP请求。该控制器定义了一组处理请求的接口方法,通过调用相应的服务方法来实现对收货地址的增删改查操作。下面是这些接口方法的详细说明:

  1. add 方法:处理 POST 请求,用于添加一个新的收货地址。请求体中包含收货地址表单(ShippingForm)的数据。方法中通过 HttpSession 获取当前用户(User)的信息,并调用 shippingService.add 方法进行添加操作,返回相应的响应结果(ResponseVo)。

  2. delete 方法:处理 DELETE 请求,用于删除指定的收货地址。路径参数 shippingId 指定要删除的收货地址的ID。通过 HttpSession 获取当前用户的信息,并调用 shippingService.delete 方法进行删除操作,返回相应的响应结果。

  3. update 方法:处理 PUT 请求,用于更新指定的收货地址。路径参数 shippingId 指定要更新的收货地址的ID,请求体中包含收货地址表单的数据。通过 HttpSession 获取当前用户的信息,并调用 shippingService.update 方法进行更新操作,返回相应的响应结果。

  4. list 方法:处理 GET 请求,用于获取当前用户的收货地址列表。可选的查询参数 pageNum 和 pageSize 分别指定要获取的页码和每页的大小。通过 HttpSession 获取当前用户的信息,并调用 shippingService.list 方法获取相应的收货地址列表,返回响应结果。

以上就是收货地址模块的设计。相对来说比较简单。下一篇文章会讲一种很复杂的设计:订单模块的设计!

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

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

相关文章

分类预测 | Matlab实现KPCA-ISSA-LSSVM基于核主成分分析和改进的麻雀搜索算法优化最小二乘支持向量机故障诊断分类预测

分类预测 | Matlab实现KPCA-ISSA-LSSVM基于核主成分分析和改进的麻雀搜索算法优化最小二乘支持向量机故障诊断分类预测 目录 分类预测 | Matlab实现KPCA-ISSA-LSSVM基于核主成分分析和改进的麻雀搜索算法优化最小二乘支持向量机故障诊断分类预测分类效果基本描述程序设计参考资…

Unity接入SQLite (一):SQLite介绍

1.简介 SQLite是一个开源的嵌入式关系数据库管理系统。它是一种轻量级的数据库引擎&#xff0c;不需要单独的服务器进程&#xff0c;可以直接嵌入到应用程序中使用。Sqlite使用简单、高效&#xff0c;并且具有对标准SQL的完整支持。它适用于需要在本地存储和访问数据的应用程序…

wordpress免费主题模板

免费大图wordpress主题 首页是一张大图的免费wordpress主题模板。简洁实用&#xff0c;易上手。 https://www.jianzhanpress.com/?p5857 wordpress免费模板 动态效果的wordpress免费模板&#xff0c;banner是动态图片效果&#xff0c;视觉效果不错。 https://www.jianzhan…

C++从入门到精通 第六章(函数)

写在前面&#xff1a; 本系列专栏主要介绍C的相关知识&#xff0c;思路以下面的参考链接教程为主&#xff0c;大部分笔记也出自该教程&#xff0c;笔者的原创部分主要在示例代码的注释部分。除了参考下面的链接教程以外&#xff0c;笔者还参考了其它的一些C教材&#xff08;比…

学习Markdown

https://shadows.brumm.af 欢迎使用Markdown编辑器 你好&#xff01; 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章&#xff0c;了解一下Markdown的基本语法知识。 新的改变 我们对Markdown编辑器进行了一些…

什么是MapReduce

1.1 MapReduce到底是什么 Hadoop MapReduce是一个软件框架&#xff0c;基于该框架能够容易地编写应用程序&#xff0c;这些应用程序能够运行在由上千个商用机器组成的大集群上&#xff0c;并以一种可靠的&#xff0c;具有容错能力的方式并行地处理上TB级别的海量数据集。这个定…

Flutter插件开发指南01: 通道Channel的编写与实现

Flutter插件开发指南01: 通道Channel的编写与实现 视频 https://www.bilibili.com/video/BV1ih4y1E7E3/ 前言 本文将会通过一个加法计算&#xff0c;来实现 Channel 的双向通讯&#xff0c;让大家有个一个体会。 Flutter插件 Flutter插件是Flutter应用程序与原生平台之间的桥…

1.CSS单位总结

CSS 单位总结 经典真题 px 和 em 的区别 CSS 中的哪些单位 首先&#xff0c;在 CSS 中&#xff0c;单位分为两大类&#xff0c;绝对长度单位和相对长度单位。 绝对长度单位 我们先来说这个&#xff0c;绝对长度单位最好理解&#xff0c;和我们现实生活中是一样的。在我们…

WordPress关键漏洞影响25000+站点;Cisco漏洞被勒索软件利用;朝鲜黑客瞄准全球国防公司 | 安全周报 0223

1. CISA警告&#xff1a;Akira勒索软件正在利用Cisco ASA/FTD 漏洞 近日&#xff0c;美国网络安全和基础设施安全局&#xff08;CISA&#xff09;发布了一份警告&#xff0c;指出Akira勒索软件正在积极利用Cisco的Adaptive Security Appliance (ASA) 和 Firepower Threat Defe…

2022云边协同大会:核心内容与学习收获(附大会核心PPT下载)

云计算进入惠普发展期&#xff0c;边缘计算需求激增&#xff0c;云边协同成为未来重要演进方向。同时&#xff0c;5G的规模建设和边缘计算的持续部署&#xff0c;驱动数据处理向边端扩散&#xff0c;使算力走向泛在化&#xff0c;云边端一体化驱动算力更好的满足社会各界不同需…

普中51单片机学习(DS1302)

DS1302时钟 DS1302实时时钟具有能计算2100年之前的秒、分、时、日、日期、星期、月、年的能力&#xff0c;还有闰年调整的能力。内部含有31个字节静态RAM&#xff0c;可提供用户访问。采用串行数据传送方式&#xff0c;使得管脚数量最少&#xff0c;简单SPI 3线接口。工作电压…

辩证易货模式做成App的可行性分析

随着科技的进步和移动互联网的普及&#xff0c;越来越多的传统业务模式开始寻求数字化转型&#xff0c;以适应市场的发展和满足用户的需求。易货模式&#xff0c;作为一种古老而又现代的交易方式&#xff0c;同样面临着这样的机遇和挑战。那么&#xff0c;将辩证易货模式做成Ap…

深入理解 v-for 中 key 的重要性

查看本专栏目录 关于作者 还是大剑师兰特&#xff1a;曾是美国某知名大学计算机专业研究生&#xff0c;现为航空航海领域高级前端工程师&#xff1b;CSDN知名博主&#xff0c;GIS领域优质创作者&#xff0c;深耕openlayers、leaflet、mapbox、cesium&#xff0c;canvas&#x…

【网络编程】okhttp源码解析

文章目录 配置清单框架结构解析 配置清单 首先了解一下okHttp的配置清单&#xff1a; Dispatcher dispatcher &#xff1a;调度器&#xff0c;⽤于调度后台发起的⽹络请求&#xff0c;有后台总请求数和单主机总请求数的控制。List<Protocol> protocols &#xff1a;⽀持…

mkdocs+mermaid主题增加内容选项卡

"C" c #include <stdio.h> int main(void) { printf("Hello world!\n"); return 0; } "C" c #include <iostream> int main(void) { std::cout << "Hello world!" << std::endl; return 0; }

与Sora同架构的Stable Diffusion 3.0 震撼发布

Stability AI 发布了 Stable Diffusion 3&#xff0c;这款图像生成 AI 模型再次刷新了人们的认知。 这款由 Stability AI 倾力打造的文本变图模型&#xff0c;可是迄今为止最强大的“黑科技”&#xff01;无论你想生成多主题的奇幻场景&#xff0c;还是高精度的风景写真&#…

Vision Transformer - VIT

文章目录 1. Embedding层2. Encoder层3. MLP Head层4. Hybrid混合模型 论文&#xff1a;An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale 网址&#xff1a;https://arxiv.org/abs/2010.11929 Hybrid - 传统CNN和Transformer混合模型 模型架构 输…

一次有趣的nginx Tcp4层代理转发的试验

nginx主配置文件添加配置&#xff1a; stream {log_format proxy $remote_addr [$time_local] $protocol status:$status bytes_sent:$bytes_sent bytes_received:$bytes_received $session_time upstream_addr:"$upstream_addr" "$upstream_bytes_sent" …

C#,入门教程(05)——Visual Studio 2022源程序(源代码)自动排版的功能动画图示

上一篇&#xff1a; C#&#xff0c;入门教程(04)——Visual Studio 2022 数据编程实例&#xff1a;随机数与组合https://blog.csdn.net/beijinghorn/article/details/123533838 新来的徒弟们交上来的C#代码&#xff0c;可读性往往很差。 今天一问才知道&#xff0c;他们居然不…

2种方法,教你使用Python实现接口自动化中的参数关联

通常在接口自动化中&#xff0c;经常会参数关联的问题&#xff0c;那么什么是参数关联&#xff1f; 参数关联就是上一个接口的返回值会被下一个接口当做参数运用&#xff0c;其中Python中可以实现参数关联的方法有很多种&#xff0c;今天小编给大家介绍下&#xff0c;如何通过…