diff --git a/sky-server/src/main/java/com/sky/controller/user/AddressBookController.java b/sky-server/src/main/java/com/sky/controller/user/AddressBookController.java new file mode 100644 index 0000000..e3e44d3 --- /dev/null +++ b/sky-server/src/main/java/com/sky/controller/user/AddressBookController.java @@ -0,0 +1,113 @@ +package com.sky.controller.user; + +import com.sky.context.BaseContext; +import com.sky.entity.AddressBook; +import com.sky.result.Result; +import com.sky.service.AddressBookService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +@RestController +@RequestMapping("/user/addressBook") +@Api(tags = "C端地址簿接口") +public class AddressBookController { + + @Resource + private AddressBookService addressBookService; + + /** + * 查询当前登录用户的所有地址信息 + * + * @return Result> + */ + @GetMapping("/list") + @ApiOperation("查询当前登录用户的所有地址信息") + public Result> list() { + AddressBook addressBook = new AddressBook(); + addressBook.setUserId(BaseContext.getCurrentId()); + List list = addressBookService.list(addressBook); + return Result.success(list); + } + + /** + * 新增地址 + * + * @param addressBook AddressBook + * @return Result + */ + @PostMapping + @ApiOperation("新增地址") + public Result save(@RequestBody AddressBook addressBook) { + addressBookService.save(addressBook); + return Result.success(); + } + + @GetMapping("/{id}") + @ApiOperation("根据id查询地址") + public Result getById(@PathVariable Long id) { + AddressBook addressBook = addressBookService.getById(id); + return Result.success(addressBook); + } + + /** + * 根据id修改地址 + * + * @param addressBook AddressBook + * @return Result + */ + @PutMapping + @ApiOperation("根据id修改地址") + public Result update(@RequestBody AddressBook addressBook) { + addressBookService.update(addressBook); + return Result.success(); + } + + /** + * 设置默认地址 + * + * @param addressBook AddressBook + * @return Result + */ + @PutMapping("/default") + @ApiOperation("设置默认地址") + public Result setDefault(@RequestBody AddressBook addressBook) { + addressBookService.setDefault(addressBook); + return Result.success(); + } + + /** + * 根据id删除地址 + * + * @param id Long + * @return Result + */ + @DeleteMapping + @ApiOperation("根据id删除地址") + public Result deleteById(Long id) { + addressBookService.deleteById(id); + return Result.success(); + } + + /** + * 查询默认地址 + */ + @GetMapping("default") + @ApiOperation("查询默认地址") + public Result getDefault() { + // SQL:select * from address_book where user_id = ? and is_default = 1 + AddressBook addressBook = new AddressBook(); + addressBook.setIsDefault(1); + addressBook.setUserId(BaseContext.getCurrentId()); + List list = addressBookService.list(addressBook); + + if (list != null && list.size() == 1) { + return Result.success(list.get(0)); + } + + return Result.error("没有查询到默认地址"); + } +} diff --git a/sky-server/src/main/java/com/sky/mapper/AddressBookMapper.java b/sky-server/src/main/java/com/sky/mapper/AddressBookMapper.java new file mode 100644 index 0000000..caaf3d5 --- /dev/null +++ b/sky-server/src/main/java/com/sky/mapper/AddressBookMapper.java @@ -0,0 +1,55 @@ +package com.sky.mapper; + +import com.sky.entity.AddressBook; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +@Mapper +public interface AddressBookMapper { + + /** + * 条件查询 + * + * @param addressBook AddressBook + * @return List + */ + List list(AddressBook addressBook); + + /** + * 新增 + * + * @param addressBook AddressBook + */ + void insert(AddressBook addressBook); + + /** + * 根据id查询 + * + * @param id Long + * @return AddressBook + */ + AddressBook getById(Long id); + + /** + * 根据id修改 + * + * @param addressBook AddressBook + */ + void update(AddressBook addressBook); + + /** + * 根据 用户id修改 是否默认地址 + * + * @param addressBook AddressBook + */ + void updateIsDefaultByUserId(AddressBook addressBook); + + /** + * 根据id删除地址 + * + * @param id + */ + void deleteById(Long id); + +} diff --git a/sky-server/src/main/java/com/sky/service/AddressBookService.java b/sky-server/src/main/java/com/sky/service/AddressBookService.java new file mode 100644 index 0000000..84afd77 --- /dev/null +++ b/sky-server/src/main/java/com/sky/service/AddressBookService.java @@ -0,0 +1,20 @@ +package com.sky.service; + +import com.sky.entity.AddressBook; +import java.util.List; + +public interface AddressBookService { + + List list(AddressBook addressBook); + + void save(AddressBook addressBook); + + AddressBook getById(Long id); + + void update(AddressBook addressBook); + + void setDefault(AddressBook addressBook); + + void deleteById(Long id); + +} diff --git a/sky-server/src/main/java/com/sky/service/impl/AddressBookServiceImpl.java b/sky-server/src/main/java/com/sky/service/impl/AddressBookServiceImpl.java new file mode 100644 index 0000000..84a5ac3 --- /dev/null +++ b/sky-server/src/main/java/com/sky/service/impl/AddressBookServiceImpl.java @@ -0,0 +1,86 @@ +package com.sky.service.impl; + +import com.sky.context.BaseContext; +import com.sky.entity.AddressBook; +import com.sky.mapper.AddressBookMapper; +import com.sky.service.AddressBookService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.List; + +@Service +@Slf4j +public class AddressBookServiceImpl implements AddressBookService { + @Resource + private AddressBookMapper addressBookMapper; + + /** + * 条件查询 + * + * @param addressBook AddressBook + * @return List + */ + public List list(AddressBook addressBook) { + return addressBookMapper.list(addressBook); + } + + /** + * 新增地址 + * + * @param addressBook AddressBook + */ + public void save(AddressBook addressBook) { + addressBook.setUserId(BaseContext.getCurrentId()); + addressBook.setIsDefault(0); + addressBookMapper.insert(addressBook); + } + + /** + * 根据id查询 + * + * @param id Long + * @return AddressBook + */ + public AddressBook getById(Long id) { + return addressBookMapper.getById(id); + } + + /** + * 根据id修改地址 + * + * @param addressBook AddressBook + */ + public void update(AddressBook addressBook) { + addressBookMapper.update(addressBook); + } + + /** + * 设置默认地址 + * + * @param addressBook AddressBook + */ + @Transactional + public void setDefault(AddressBook addressBook) { + // 1、将当前用户的所有地址修改为非默认地址 update address_book set is_default = ? where user_id = ? + addressBook.setIsDefault(0); + addressBook.setUserId(BaseContext.getCurrentId()); + addressBookMapper.updateIsDefaultByUserId(addressBook); + + // 2、将当前地址改为默认地址 update address_book set is_default = ? where id = ? + addressBook.setIsDefault(1); + addressBookMapper.update(addressBook); + } + + /** + * 根据id删除地址 + * + * @param id Long + */ + public void deleteById(Long id) { + addressBookMapper.deleteById(id); + } + +} diff --git a/sky-server/src/main/resources/mapper/AddressBookMapper.xml b/sky-server/src/main/resources/mapper/AddressBookMapper.xml new file mode 100644 index 0000000..2f116db --- /dev/null +++ b/sky-server/src/main/resources/mapper/AddressBookMapper.xml @@ -0,0 +1,77 @@ + + + + + + + insert into address_book + (user_id, consignee, phone, sex, province_code, province_name, city_code, city_name, district_code, + district_name, detail, label, is_default) + values (#{userId}, #{consignee}, #{phone}, #{sex}, #{provinceCode}, #{provinceName}, #{cityCode}, #{cityName}, + #{districtCode}, #{districtName}, #{detail}, #{label}, #{isDefault}) + + + + + delete + from address_book + where id = #{id} + + + + + + + + + + + update address_book + + + consignee = #{consignee}, + + + sex = #{sex}, + + + phone = #{phone}, + + + detail = #{detail}, + + + label = #{label}, + + + is_default = #{isDefault}, + + + where id = #{id} + + + + + update address_book + set is_default = #{isDefault} + where user_id = #{userId} + + +