购物车模块
购物车模块
1:创建购物车实体类
@TableName("sys_cart")
@Data //自动生成get/set方法
@Accessors(chain = true) //自动生成setter方法并且返回当前对象
public class Cart extends BasePojo{
@TableId
private Long id;
private Long userId;
private Long itemId;
private String itemTitle;
private String itemImage;
private Long itemPrice;
private Integer num;}
2:接口实现类
@Service //注意 dubbo的注解
public class DubboCartServiceImpl implements DubboCartService {
// public interface DubboCartService {
// List<Cart> findCartListByUserId(Long userId);
// void updateCartNum(Cart cart);
// void deleteCart(Cart cart);
// void insertCart(Cart cart);
// }
@Autowired
private CartMapper cartMapper;
@Override
public List<Cart> findCartListByUserId(Long userId) {
QueryWrapper<Cart> queryWrapper = new QueryWrapper<Cart>();
queryWrapper.eq("user_id", userId);
return cartMapper.selectList(queryWrapper);
}
/**
* sql:update tb_cart set num=#{num},updated=#{updated}
* where user_id=#{userId}
* and item_id = #{itemId}
*/
@Override
public void updateCartNum(Cart cart) {
Cart cartTemp = new Cart();
cartTemp.setNum(cart.getNum())
.setUpdated(new Date());
UpdateWrapper<Cart> updateWrapper = new UpdateWrapper<Cart>();
updateWrapper.eq("user_id", cart.getUserId())
.eq("item_id", cart.getItemId());
cartMapper.update(cartTemp, updateWrapper);
}
@Override
public void deleteCart(Cart cart) {
cartMapper.delete(new QueryWrapper<Cart>(cart));
}
/**
* 新增购物车
* 根据userId和itemId查询数据库
* 有数据: 数量的更新
* 无数据: 新增入库
*/
@Override
public void insertCart(Cart cart) {
QueryWrapper<Cart> queryWrapper = new QueryWrapper<Cart>();
queryWrapper.eq("user_id", cart.getUserId())
.eq("item_id", cart.getItemId());
Cart cartDB = cartMapper.selectOne(queryWrapper);
if(cartDB == null) {
cart.setCreated(new Date())
.setUpdated(cart.getCreated());
cartMapper.insert(cart);
}else {
//数量更新 update tb_cart set num=#{num},updated = #{updated} where id=#{id}
int num = cart.getNum() + cartDB.getNum();
Cart cartTemp = new Cart();
cartTemp.setId(cartDB.getId())
.setNum(num)
.setUpdated(new Date());
cartMapper.updateById(cartTemp);
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现