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

需求分析:

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

用户的地址信息会存储在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));
} }

最新文章

  1. Python 2.7 因为少写括号导致的 SyntaxError 错误
  2. 3D touch 静态、动态设置及进入APP的跳转方式
  3. Android开发之 Android 的基本组件的概述
  4. phpeclipse常用快捷键
  5. 30. leetcode 121. Best Time to Buy and Sell Stock
  6. Struts2入门到放弃
  7. 如何使用 window api 转换字符集?
  8. MongoDB学习笔记(三)
  9. city-picker插件使用-移动h5三级联动
  10. pkg-config 详解
  11. OpenStack-Neutron-VPNaaS-代码
  12. [删括号][判断可行性的dp]
  13. centos时区设置
  14. MongoDB之 复制集搭建
  15. 【题解】 [HNOI2015]菜肴制作 (拓扑排序)
  16. 转:Creating a Nested ESXi 5 Environment
  17. Python 字符串操作函数一
  18. CA证书扫盲,https讲解
  19. 处理【由于 Web 服务器上的“ISAPI 和 CGI 限制”列表设置,无法提供您请求的页面】
  20. js函数预编译

热门文章

  1. FFmpeg 命令行
  2. iClock数据服务器默认账号密码
  3. 05 RDD练习:词频统计
  4. Kafka相关问题
  5. linux分区增加硬盘空间
  6. PLC入门笔记8
  7. django rest 自定义返回数据接口和异常处理
  8. 树形DP【初级版】
  9. react 微信h5跳转小程序
  10. [Leetcode 787]中转K站内最便宜机票