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..3e9fa94 --- /dev/null +++ b/sky-server/src/main/java/com/sky/controller/user/AddressBookController.java @@ -0,0 +1,93 @@ +package com.sky.controller.user; + +import com.sky.entity.AddressBook; +import com.sky.result.Result; +import com.sky.service.AddressBookService; +import io.swagger.annotations.Api; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@RequestMapping("/user/addressBook") +@Slf4j +@Api(tags = "AddressBook-Controller") +public class AddressBookController { + + @Autowired + private AddressBookService addressBookService; + + /** + * add a new address + * @param addressBook + * @return + */ + @PostMapping + public Result add(@RequestBody AddressBook addressBook){ + log.info("add new address book"); + addressBookService.addAddressBook(addressBook); + return Result.success(); + } + + /** + * list address of current user + * @return + */ + @GetMapping("/list") + public Result> list(){ + log.info("list address of current user"); + List list = addressBookService.listAddress(); + return Result.success(list); + } + + /** + * list default address of current user + * @return + */ + @GetMapping("/default") + public Result listDefault(){ + log.info("list default address of current user"); + AddressBook addressBook = addressBookService.listDefault(); + return Result.success(addressBook); + } + + /** + * list by addressId + * @param id + * @return + */ + @GetMapping("/{id}") + public Result listByAddressId(@PathVariable Long id){ + log.info("list address by id: {}", id); + AddressBook addressBook = addressBookService.listByAddressId(id); + return Result.success(addressBook); + } + + /** + * update address + * @param addressBook + * @return + */ + @PutMapping + public Result updateAddress(@RequestBody AddressBook addressBook){ + log.info("update address"); + addressBookService.updateAddress(addressBook); + return Result.success(); + } + + @DeleteMapping + public Result deleteAddress(Long id){ + log.info("delete address"); + addressBookService.deleteAddress(id); + return Result.success(); + } + + @PutMapping("/default") + public Result setDefault(@RequestBody AddressBook addressBook){ + log.info("set default address"); + addressBookService.setDefault(addressBook); + return Result.success(); + } +} diff --git a/sky-server/src/main/java/com/sky/controller/user/ShoppingCartController.java b/sky-server/src/main/java/com/sky/controller/user/ShoppingCartController.java index 108c69d..b83c288 100644 --- a/sky-server/src/main/java/com/sky/controller/user/ShoppingCartController.java +++ b/sky-server/src/main/java/com/sky/controller/user/ShoppingCartController.java @@ -15,7 +15,7 @@ import java.util.List; @RestController @RequestMapping("/user/shoppingCart") @Slf4j -@Api(tags = "shoppingCart-controller") +@Api(tags = "ShoppingCart-Controller") public class ShoppingCartController { @Autowired 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..410b0f6 --- /dev/null +++ b/sky-server/src/main/java/com/sky/mapper/AddressBookMapper.java @@ -0,0 +1,27 @@ +package com.sky.mapper; + +import com.sky.entity.AddressBook; +import org.apache.ibatis.annotations.*; + +import java.util.List; + +@Mapper +public interface AddressBookMapper { + + @Insert("insert into sky_take_out.address_book(user_id, consignee, sex, phone, province_code, province_name, city_code, city_name, district_code, district_name, detail, label, is_default) " + + "values (#{userId},#{consignee},#{sex},#{phone},#{provinceCode},#{provinceName},#{cityCode},#{cityName},#{districtCode},#{districtName},#{detail},#{label},#{isDefault})") + void insert(AddressBook addressBook); + + List list(AddressBook addressBook); + + void update(AddressBook addressBook); + + @Delete("delete from sky_take_out.address_book where id = #{id}") + void deleteById(Long id); + + @Update("update sky_take_out.address_book set is_default = 0 where user_id = #{userId}") + void updateNotDefault(Long userId); + + @Update("update sky_take_out.address_book set is_default = 1 where id = #{id}") + void updateDefault(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..1f5ed00 --- /dev/null +++ b/sky-server/src/main/java/com/sky/service/AddressBookService.java @@ -0,0 +1,52 @@ +package com.sky.service; + +import com.sky.entity.AddressBook; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public interface AddressBookService { + + /** + * Add new address book + * @param addressBook + */ + void addAddressBook(AddressBook addressBook); + + /** + * list address of current user + * @return + */ + List listAddress(); + + /** + * show default address + * @return + */ + AddressBook listDefault(); + + /** + * list by address id + * @param addressId + * @return + */ + AddressBook listByAddressId(Long addressId); + + /** + * update address + * @param addressBook + */ + void updateAddress(AddressBook addressBook); + + /** + * delete address + */ + void deleteAddress(Long id); + + /** + * set default address + * @param addressBook + */ + void setDefault(AddressBook addressBook); +} 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..4d37b26 --- /dev/null +++ b/sky-server/src/main/java/com/sky/service/impl/AddressBookServiceImpl.java @@ -0,0 +1,90 @@ +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.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +@Service +@Slf4j +public class AddressBookServiceImpl implements AddressBookService { + + @Autowired + private AddressBookMapper addressBookMapper; + + @Override + public void addAddressBook(AddressBook addressBook) { + Long userId = BaseContext.getCurrentId(); + addressBook.setUserId(userId); + List list = addressBookMapper.list(addressBook); + addressBook.setIsDefault(0); + addressBookMapper.insert(addressBook); + } + + /** + * list address of current user + * + * @return + */ + @Override + public List listAddress() { + Long userId = BaseContext.getCurrentId(); + AddressBook addressBook = AddressBook.builder() + .userId(userId) + .build(); + return addressBookMapper.list(addressBook); + } + + /** + * show default address + * + * @return + */ + @Override + public AddressBook listDefault() { + AddressBook addressBook = AddressBook.builder() + .userId(BaseContext.getCurrentId()) + .isDefault(1) + .build(); + List list = addressBookMapper.list(addressBook); + if (list != null && !list.isEmpty()) { + return list.get(0); + } + return null; + } + + @Override + public AddressBook listByAddressId(Long addressId) { + AddressBook addressBook = AddressBook.builder() + .id(addressId) + .build(); + List list = addressBookMapper.list(addressBook); + return list.get(0); + } + + @Override + public void updateAddress(AddressBook addressBook) { + addressBookMapper.update(addressBook); + } + + @Override + public void deleteAddress(Long id) { + addressBookMapper.deleteById(id); + } + + @Override + @Transactional + public void setDefault(AddressBook addressBook) { + //set all the address of current user not default + Long userId = BaseContext.getCurrentId(); + addressBookMapper.updateNotDefault(userId); + //set current address default + addressBookMapper.updateDefault(addressBook.getId()); + } +} 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..e063ca6 --- /dev/null +++ b/sky-server/src/main/resources/mapper/AddressBookMapper.xml @@ -0,0 +1,39 @@ + + + + + update sky_take_out.address_book + set city_name = #{cityName}, + city_code = #{cityCode}, + consignee = #{consignee}, + detail = #{detail}, + district_code = #{districtCode}, + district_name = #{districtName}, + label = #{label}, + phone = #{phone}, + province_code = #{provinceCode}, + province_name = #{provinceName}, + sex = #{sex}, + + is_default = #{isDefault}, + + where id = #{id} + + + + \ No newline at end of file