用户地址管理---新增、设置默认地址、根据id查询所有地址、查询默认地址、查询指定用户的全部地址
2023-04-18 14:58:20 时间
导入用户地址簿相关功能代码
需求分析:
地址簿,指的是移动端消费者用户的地址信息,用户登录成功后可以维护自己的地址信息。同一个用户可以有多个地址信息,但是只能有一个默认地址。
用户的地址信息会存储在address_book,即地址簿表中。
package com.itheima.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.itheima.common.BaseContext; import com.itheima.common.R; import com.itheima.entity.AddressBook; import com.itheima.service.AddressBookService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.List; /** * 地址簿管理 */ @Slf4j @RestController @RequestMapping("/addressBook") public class AddressBookController { @Autowired private AddressBookService addressBookService; /** * 新增 */ @PostMapping public R<AddressBook> save(@RequestBody AddressBook addressBook){ addressBook.setUserId(BaseContext.getCurrentId()); log.info("addressBook:{}", addressBook); addressBookService.save(addressBook); return R.success(addressBook); } /** * 设置默认地址 */ @PutMapping("/default") public R<AddressBook> setDefault(@RequestBody AddressBook addressBook){ log.info("addressBook:{}", addressBook); LambdaUpdateWrapper<AddressBook> wrapper = new LambdaUpdateWrapper<>(); //通过用户id查询到用户保存的所有地址 wrapper.eq(AddressBook::getUserId, BaseContext.getCurrentId()); //将该用户的所有地址改为非默认 wrapper.set(AddressBook::getIsDefault, 0); addressBookService.update(wrapper); //将传过来的addressBook的地址设为默认地址 addressBook.setIsDefault(1); addressBookService.updateById(addressBook); return R.success(addressBook); } /** * 根据id查询地址 * @param id * @return */ @GetMapping("/{ID}") public R get(@PathVariable Long id){ AddressBook addressBook = addressBookService.getById(id); if(addressBook!=null){ return R.success(addressBook); }else { return R.error("没有找到该对象"); } } /** * 查询默认地址 * @return */ @GetMapping("/default") public R<AddressBook> getDefault(){ LambdaQueryWrapper<AddressBook> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(AddressBook::getUserId, BaseContext.getCurrentId()); queryWrapper.eq(AddressBook::getIsDefault, 1); AddressBook addressBook = addressBookService.getOne(queryWrapper); if(addressBook!=null){ return R.success(addressBook); }else { return R.error("没有找到该对象"); } } /** * 查询指定用户的全部地址 * @param addressBook * @return */ @GetMapping("/list") public R<List<AddressBook>> list(AddressBook addressBook){ addressBook.setUserId(BaseContext.getCurrentId()); log.info("addressBook:{}", addressBook); //条件构造器 LambdaQueryWrapper<AddressBook> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(addressBook.getUserId()!=null, AddressBook::getUserId, addressBook.getUserId()); queryWrapper.orderByDesc(AddressBook::getUpdateTime); return R.success(addressBookService.list(queryWrapper)); } }
相关文章
- 【YOLOv8/YOLOv7/YOLOv5/YOLOv4/Faster-rcnn系列算法改进NO.59】引入ASPP模块
- 实验 程序流程控制
- django中常见的查询方式
- Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Property报错
- Day916.基于JWT令牌的安全认证架构 -SpringBoot与K8s云原生微服务实践
- 苹果注定要输给欧盟,USB-C成为标准接口已是大势所趋
- VS Code 从菜鸟安装到编写第一个“Hello World!——(以C语言为例)
- C#与松下PLC串口通讯发送,接收数据
- 用vi编辑hello.c,打印Hello World!,并编译、运行
- minio安装部署及使用
- Windows电脑密码忘记解决方法
- C语言中的四种常量
- 哈佛与冯诺依曼结构
- 我今天要彻底搞懂线程状态的变化
- Linux中sudo,su与su -命令的区别
- python bytearray 的使用
- C语言图书借阅管理系统
- 出现 -2146959355, ‘服务器运行失败‘ 错误的处理
- 把C#代码上传到NuGet,大佬竟是我自己!!!
- IDEA常用插件列表