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

本文介绍了电商项目中收货地址模块的设计,涉及DAO层的数据库操作接口、Service层的业务逻辑处理以及Controller层的HTTP请求映射,主要关注增删改查功能的实现。
摘要由CSDN通过智能技术生成

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

首先先设计 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 {

	@Autowired
	private 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 方法获取相应的收货地址列表,返回响应结果。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值