用户地址管理---新增、设置默认地址、根据id查询所有地址、查询默认地址、查询指定用户的全部地址
导入用户地址簿相关功能代码
需求分析:
地址簿,指的是移动端消费者用户的地址信息,用户登录成功后可以维护自己的地址信息。同一个用户可以有多个地址信息,但是只能有一个默认地址。
用户的地址信息会存储在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));
- }
- }
用户地址管理---新增、设置默认地址、根据id查询所有地址、查询默认地址、查询指定用户的全部地址的更多相关文章
- Django商城项目笔记No.17用户部分-用户中心用户地址管理
收货地址管理 首先就是新增地址 看图分析所需要保存的字段 因为是用户的地址,所以在users应用中的models创建模型类 class Address(BaseModel): "" ...
- 微信服务号模板消息接口新增"设置行业"和"添加模板"及细节优化
微信服务号模板消息可以向用户发送重要的服务通知,如信用卡刷卡通知,商品购买成功通知等.昨日,微信团队发布公告称模板消息新增“设置行业”和“添加模板”接口及细节优化,详细变动如下 模板消息[业务通知]自 ...
- Linux字符界面下用户账户的设置
在Linux系统字符界面下创建.修改以及删除用户账户主要使用useradd,usermod和userdel这3个命令. 一.创建用户账户 创建用户账户就是在系统中创建一个新账户,然后为新账户分配用户U ...
- [vsftp服务]——ftp虚拟用户、权限设置等的实验
搭建ftp服务器,满足以下要求: 1.允许匿名用户登录服务器并下载文件,下载速度设置为最高2MB/s 2.不允许本地用户登录ftp服务器 3.在服务器添加虚拟用户vuser01.vuser02.vus ...
- CentOS下源码安装vsftpd-3.0.0,并设置指定用户访问指定目录(附带完整配置文件)
1.卸载系统已经存在的ftp服务器 因为是源码安装,所以不能通过rpm -qa的方式查看是否已经安装ftp服务器,可以通过find / | grep vsftp*方式查看系统中存在哪些与vsftpd相 ...
- jenkins匿名用户登录 - 安全设置
最近自己安装配置jenkins,但是跑任务时,发现是匿名账户登录,且提示: 后来发现搭建好jenkins之后,默认就是匿名用户登录的,可以在安装设置菜单里进行账户管理. 1.登录Jenkins服务器, ...
- IIS 7中添加FTP站点并设置指定用户访问
1. 开启 FTP 和 IIS 服务功能: 2. 添加新用户: 打开计算机管理界面: 展开“本地用户与组”: 邮件点击“用户”->点击“创建新用户”: 在创建新用户对话框输入用户 ...
- Nginx日志导入到Hive0.13.1,同步Hbase0.96.2,设置RowKey为autoincrement(ID自增长)
---------------------------------------- 博文作者:迦壹 博客地址:Nginx日志导入到Hive,同步Hbase,设置RowKey为autoincrement( ...
- 如何设置UNIX/Linux中新创建目录或文件的默认权限
在unix或者linux中,每创建一个文件或者目录时,这个文件或者目录都具有一个默认的权限,比如目录755,文件644,那么这些默认权限是怎么控制的呢? 答案是"umask"权限掩 ...
- mongoDB之用户及权限设置
之前用MongoDB没有设置用户和权限,一直都是本机应用程序连接MongoDB.在服务器上部署后对外没有开数据库连接端口,本机应用程序连接再开放应用程序端口供外部访问. 我部署的环境是ubuntu 1 ...
随机推荐
- Position Based Dynamics【译】
绝大部分机翻,少部分手动矫正,仅供参考.本人水平有限,如有误翻,概不负责... Position Based Dynamics Abstract The most popular approaches ...
- java中BIO、NIO、AIO区别
ava中的IO主要源自于网络和本地文件 IO的方式通常分为几种,同步阻塞的BIO.同步非阻塞的NIO.异步非阻塞的AIO 在JDK1.4出来之前,我们建立网络连接的时候采用BIO模式,需要先在服务端启 ...
- flutter List使用
_tabbarTitile.map((e){ return Tab( text: e, ); }).toList(),
- 不用画的动画——ShaderCp11
--20.9.14 Shader中主要有及两种动画,一种就是纹理动画还有一种就是顶点动画. 动画效果一般都需要把时间加入一些变量的计算,以便画面可以随时间发生变化.下面是Shader中的如何去访问时间 ...
- Treewidget节点的增加
父节点的创建 // 隐藏QTreewidget标题头 ui->treeWidget->header()->hide(); // 实现Treewidget父节点的挂载 // 创建存放Q ...
- Servlet执行步骤
<!-- 1. 用户发请求,action=add 2. 项目中,web.xml中找到url-pattern = /add -> 第12行 3. 找第11行的servlet-name = A ...
- 蓝桥2020 B组 第一场考试
2. 纪念日 问题描述: 请问从 1921 年 7 月 23 日中午 12 时到 2020 年 7 月 1 日中午 12 时一共包 含多少分钟? 答案提交: 这是一道结果填空题,你只需要算出结果后提交 ...
- java学习问题
1.nacos Connection refused: connect 由于配置文件配置错误引起的.我的nacos是部署在另一台linux服务器的,yml具体配置如下:
- intellij idea中怎么没有git版本控制设置项
在使用intellij idea的时候想要使用git进行版本控制,但是在设置项和界面没有发现相关内容,怎么回事呢? 我们先打开电脑,从桌面的快捷方式打开intellij idea,进入到intelli ...
- oracle导入dmp
通过impdp导入 1.sqlplus (连接oracle数据库) 2.输入用户名密码3.create user abc identified by 123456; (创建用户名为ab ...