Add address book management functionality
This commit is contained in:
@@ -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<AddressBook>> list(){
|
||||
log.info("list address of current user");
|
||||
List<AddressBook> list = addressBookService.listAddress();
|
||||
return Result.success(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* list default address of current user
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/default")
|
||||
public Result<AddressBook> 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<AddressBook> 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();
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
|
||||
@@ -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<AddressBook> 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);
|
||||
}
|
||||
@@ -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<AddressBook> 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);
|
||||
}
|
||||
@@ -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<AddressBook> list = addressBookMapper.list(addressBook);
|
||||
addressBook.setIsDefault(0);
|
||||
addressBookMapper.insert(addressBook);
|
||||
}
|
||||
|
||||
/**
|
||||
* list address of current user
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public List<AddressBook> 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<AddressBook> 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<AddressBook> 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());
|
||||
}
|
||||
}
|
||||
39
sky-server/src/main/resources/mapper/AddressBookMapper.xml
Normal file
39
sky-server/src/main/resources/mapper/AddressBookMapper.xml
Normal file
@@ -0,0 +1,39 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.sky.mapper.AddressBookMapper">
|
||||
<update id="update">
|
||||
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},
|
||||
<if test="isDefault != null">
|
||||
is_default = #{isDefault},
|
||||
</if>
|
||||
where id = #{id}
|
||||
</update>
|
||||
|
||||
<select id="list" resultType="com.sky.entity.AddressBook">
|
||||
select * from sky_take_out.address_book
|
||||
<where>
|
||||
<if test="userId != null">
|
||||
and user_id = #{userId}
|
||||
</if>
|
||||
<if test="isDefault != null">
|
||||
and is_default = #{isDefault}
|
||||
</if>
|
||||
<if test="id != null">
|
||||
and id = #{id}
|
||||
</if>
|
||||
</where>
|
||||
</select>
|
||||
</mapper>
|
||||
Reference in New Issue
Block a user