本篇文章是讲关于项目的收货地址模块的设计。这个就比较简单了,我就不像之前的文章讲的那么详细了,就简单讲讲就好。
首先先设计 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
)。
关于接口中四个方法的一些说明:
add
方法:向指定用户(uid)添加一个新的收货地址,参数包括用户ID和收货地址表单(ShippingForm
)。返回的响应结果包含一个Map
对象,其中包含新添加的收货地址的ID。delete
方法:删除指定用户(uid)的某个收货地址(shippingId),参数包括用户ID和收货地址ID。返回的响应结果表示删除操作的结果。update
方法:更新指定用户(uid)的某个收货地址(shippingId),参数包括用户ID、收货地址ID和收货地址表单(ShippingForm
)。返回的响应结果表示更新操作的结果。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请求。该控制器定义了一组处理请求的接口方法,通过调用相应的服务方法来实现对收货地址的增删改查操作。下面是这些接口方法的详细说明:
-
add
方法:处理 POST 请求,用于添加一个新的收货地址。请求体中包含收货地址表单(ShippingForm
)的数据。方法中通过HttpSession
获取当前用户(User
)的信息,并调用shippingService.add
方法进行添加操作,返回相应的响应结果(ResponseVo
)。 -
delete
方法:处理 DELETE 请求,用于删除指定的收货地址。路径参数shippingId
指定要删除的收货地址的ID。通过HttpSession
获取当前用户的信息,并调用shippingService.delete
方法进行删除操作,返回相应的响应结果。 -
update
方法:处理 PUT 请求,用于更新指定的收货地址。路径参数shippingId
指定要更新的收货地址的ID,请求体中包含收货地址表单的数据。通过HttpSession
获取当前用户的信息,并调用shippingService.update
方法进行更新操作,返回相应的响应结果。 -
list
方法:处理 GET 请求,用于获取当前用户的收货地址列表。可选的查询参数pageNum
和pageSize
分别指定要获取的页码和每页的大小。通过HttpSession
获取当前用户的信息,并调用shippingService.list
方法获取相应的收货地址列表,返回响应结果。
以上就是收货地址模块的设计。相对来说比较简单。下一篇文章会讲一种很复杂的设计:订单模块的设计!