导入用户地址簿相关功能代码

需求分析:

地址簿,指的是移动端消费者用户的地址信息,用户登录成功后可以维护自己的地址信息。同一个用户可以有多个地址信息,但是只能有一个默认地址。

用户的地址信息会存储在address_book,即地址簿表中。

  1. package com.itheima.controller;
  2.  
  3. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  4. import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
  5. import com.itheima.common.BaseContext;
  6. import com.itheima.common.R;
  7. import com.itheima.entity.AddressBook;
  8. import com.itheima.service.AddressBookService;
  9. import lombok.extern.slf4j.Slf4j;
  10. import org.springframework.beans.factory.annotation.Autowired;
  11. import org.springframework.web.bind.annotation.*;
  12.  
  13. import java.util.List;
  14.  
  15. /**
  16. * 地址簿管理
  17. */
  18. @Slf4j
  19. @RestController
  20. @RequestMapping("/addressBook")
  21. public class AddressBookController {
  22.  
  23. @Autowired
  24. private AddressBookService addressBookService;
  25.  
  26. /**
  27. * 新增
  28. */
  29. @PostMapping
  30. public R<AddressBook> save(@RequestBody AddressBook addressBook){
  31. addressBook.setUserId(BaseContext.getCurrentId());
  32. log.info("addressBook:{}", addressBook);
  33. addressBookService.save(addressBook);
  34. return R.success(addressBook);
  35. }
  36.  
  37. /**
  38. * 设置默认地址
  39. */
  40. @PutMapping("/default")
  41. public R<AddressBook> setDefault(@RequestBody AddressBook addressBook){
  42. log.info("addressBook:{}", addressBook);
  43. LambdaUpdateWrapper<AddressBook> wrapper = new LambdaUpdateWrapper<>();
  44. //通过用户id查询到用户保存的所有地址
  45. wrapper.eq(AddressBook::getUserId, BaseContext.getCurrentId());
  46. //将该用户的所有地址改为非默认
  47. wrapper.set(AddressBook::getIsDefault, 0);
  48. addressBookService.update(wrapper);
  49. //将传过来的addressBook的地址设为默认地址
  50. addressBook.setIsDefault(1);
  51. addressBookService.updateById(addressBook);
  52. return R.success(addressBook);
  53.  
  54. }
  55.  
  56. /**
  57. * 根据id查询地址
  58. * @param id
  59. * @return
  60. */
  61. @GetMapping("/{ID}")
  62. public R get(@PathVariable Long id){
  63. AddressBook addressBook = addressBookService.getById(id);
  64. if(addressBook!=null){
  65. return R.success(addressBook);
  66. }else {
  67. return R.error("没有找到该对象");
  68. }
  69. }
  70.  
  71. /**
  72. * 查询默认地址
  73. * @return
  74. */
  75. @GetMapping("/default")
  76. public R<AddressBook> getDefault(){
  77. LambdaQueryWrapper<AddressBook> queryWrapper = new LambdaQueryWrapper<>();
  78. queryWrapper.eq(AddressBook::getUserId, BaseContext.getCurrentId());
  79. queryWrapper.eq(AddressBook::getIsDefault, 1);
  80.  
  81. AddressBook addressBook = addressBookService.getOne(queryWrapper);
  82. if(addressBook!=null){
  83. return R.success(addressBook);
  84. }else {
  85. return R.error("没有找到该对象");
  86. }
  87. }
  88.  
  89. /**
  90. * 查询指定用户的全部地址
  91. * @param addressBook
  92. * @return
  93. */
  94. @GetMapping("/list")
  95. public R<List<AddressBook>> list(AddressBook addressBook){
  96. addressBook.setUserId(BaseContext.getCurrentId());
  97. log.info("addressBook:{}", addressBook);
  98.  
  99. //条件构造器
  100. LambdaQueryWrapper<AddressBook> queryWrapper = new LambdaQueryWrapper<>();
  101. queryWrapper.eq(addressBook.getUserId()!=null, AddressBook::getUserId, addressBook.getUserId());
  102. queryWrapper.orderByDesc(AddressBook::getUpdateTime);
  103.  
  104. return R.success(addressBookService.list(queryWrapper));
  105. }
  106.  
  107. }

用户地址管理---新增、设置默认地址、根据id查询所有地址、查询默认地址、查询指定用户的全部地址的更多相关文章

  1. Django商城项目笔记No.17用户部分-用户中心用户地址管理

    收货地址管理 首先就是新增地址 看图分析所需要保存的字段 因为是用户的地址,所以在users应用中的models创建模型类 class Address(BaseModel): "" ...

  2. 微信服务号模板消息接口新增"设置行业"和"添加模板"及细节优化

    微信服务号模板消息可以向用户发送重要的服务通知,如信用卡刷卡通知,商品购买成功通知等.昨日,微信团队发布公告称模板消息新增“设置行业”和“添加模板”接口及细节优化,详细变动如下 模板消息[业务通知]自 ...

  3. Linux字符界面下用户账户的设置

    在Linux系统字符界面下创建.修改以及删除用户账户主要使用useradd,usermod和userdel这3个命令. 一.创建用户账户 创建用户账户就是在系统中创建一个新账户,然后为新账户分配用户U ...

  4. [vsftp服务]——ftp虚拟用户、权限设置等的实验

    搭建ftp服务器,满足以下要求: 1.允许匿名用户登录服务器并下载文件,下载速度设置为最高2MB/s 2.不允许本地用户登录ftp服务器 3.在服务器添加虚拟用户vuser01.vuser02.vus ...

  5. CentOS下源码安装vsftpd-3.0.0,并设置指定用户访问指定目录(附带完整配置文件)

    1.卸载系统已经存在的ftp服务器 因为是源码安装,所以不能通过rpm -qa的方式查看是否已经安装ftp服务器,可以通过find / | grep vsftp*方式查看系统中存在哪些与vsftpd相 ...

  6. jenkins匿名用户登录 - 安全设置

    最近自己安装配置jenkins,但是跑任务时,发现是匿名账户登录,且提示: 后来发现搭建好jenkins之后,默认就是匿名用户登录的,可以在安装设置菜单里进行账户管理. 1.登录Jenkins服务器, ...

  7. IIS 7中添加FTP站点并设置指定用户访问

    1. 开启 FTP 和 IIS 服务功能:   2. 添加新用户: 打开计算机管理界面:   展开“本地用户与组”:   邮件点击“用户”->点击“创建新用户”:   在创建新用户对话框输入用户 ...

  8. Nginx日志导入到Hive0.13.1,同步Hbase0.96.2,设置RowKey为autoincrement(ID自增长)

    ---------------------------------------- 博文作者:迦壹 博客地址:Nginx日志导入到Hive,同步Hbase,设置RowKey为autoincrement( ...

  9. 如何设置UNIX/Linux中新创建目录或文件的默认权限

    在unix或者linux中,每创建一个文件或者目录时,这个文件或者目录都具有一个默认的权限,比如目录755,文件644,那么这些默认权限是怎么控制的呢? 答案是"umask"权限掩 ...

  10. mongoDB之用户及权限设置

    之前用MongoDB没有设置用户和权限,一直都是本机应用程序连接MongoDB.在服务器上部署后对外没有开数据库连接端口,本机应用程序连接再开放应用程序端口供外部访问. 我部署的环境是ubuntu 1 ...

随机推荐

  1. Position Based Dynamics【译】

    绝大部分机翻,少部分手动矫正,仅供参考.本人水平有限,如有误翻,概不负责... Position Based Dynamics Abstract The most popular approaches ...

  2. java中BIO、NIO、AIO区别

    ava中的IO主要源自于网络和本地文件 IO的方式通常分为几种,同步阻塞的BIO.同步非阻塞的NIO.异步非阻塞的AIO 在JDK1.4出来之前,我们建立网络连接的时候采用BIO模式,需要先在服务端启 ...

  3. flutter List使用

    _tabbarTitile.map((e){ return Tab( text: e, ); }).toList(),

  4. 不用画的动画——ShaderCp11

    --20.9.14 Shader中主要有及两种动画,一种就是纹理动画还有一种就是顶点动画. 动画效果一般都需要把时间加入一些变量的计算,以便画面可以随时间发生变化.下面是Shader中的如何去访问时间 ...

  5. Treewidget节点的增加

    父节点的创建 // 隐藏QTreewidget标题头 ui->treeWidget->header()->hide(); // 实现Treewidget父节点的挂载 // 创建存放Q ...

  6. Servlet执行步骤

    <!-- 1. 用户发请求,action=add 2. 项目中,web.xml中找到url-pattern = /add -> 第12行 3. 找第11行的servlet-name = A ...

  7. 蓝桥2020 B组 第一场考试

    2. 纪念日 问题描述: 请问从 1921 年 7 月 23 日中午 12 时到 2020 年 7 月 1 日中午 12 时一共包 含多少分钟? 答案提交: 这是一道结果填空题,你只需要算出结果后提交 ...

  8. java学习问题

    1.nacos Connection refused: connect 由于配置文件配置错误引起的.我的nacos是部署在另一台linux服务器的,yml具体配置如下:

  9. intellij idea中怎么没有git版本控制设置项

    在使用intellij idea的时候想要使用git进行版本控制,但是在设置项和界面没有发现相关内容,怎么回事呢? 我们先打开电脑,从桌面的快捷方式打开intellij idea,进入到intelli ...

  10. oracle导入dmp

    通过impdp导入 1.sqlplus       (连接oracle数据库) 2.输入用户名密码3.create user abc identified by 123456;   (创建用户名为ab ...