导入用户地址簿相关功能代码
需求分析:
地址簿,指的是移动端消费者用户的地址信息,用户登录成功后可以维护自己的地址信息。同一个用户可以有多个地址信息,但是只能有一个默认地址。
用户的地址信息会存储在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)); } }