地址簿增删改

This commit is contained in:
Bunny 2024-01-10 08:37:30 +08:00
parent 4cda885a01
commit 2089cf6b07
5 changed files with 351 additions and 0 deletions

View File

@ -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<List < AddressBook>>
*/
@GetMapping("/list")
@ApiOperation("查询当前登录用户的所有地址信息")
public Result<List<AddressBook>> list() {
AddressBook addressBook = new AddressBook();
addressBook.setUserId(BaseContext.getCurrentId());
List<AddressBook> 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<AddressBook> 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<AddressBook> 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<AddressBook> list = addressBookService.list(addressBook);
if (list != null && list.size() == 1) {
return Result.success(list.get(0));
}
return Result.error("没有查询到默认地址");
}
}

View File

@ -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<AddressBook>
*/
List<AddressBook> 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);
}

View File

@ -0,0 +1,20 @@
package com.sky.service;
import com.sky.entity.AddressBook;
import java.util.List;
public interface AddressBookService {
List<AddressBook> list(AddressBook addressBook);
void save(AddressBook addressBook);
AddressBook getById(Long id);
void update(AddressBook addressBook);
void setDefault(AddressBook addressBook);
void deleteById(Long id);
}

View File

@ -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<AddressBook>
*/
public List<AddressBook> 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);
}
}

View File

@ -0,0 +1,77 @@
<?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">
<!-- 新增 -->
<insert id="insert">
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})
</insert>
<!-- 根据id删除地址 -->
<delete id="deleteById">
delete
from address_book
where id = #{id}
</delete>
<!-- 条件查询 -->
<select id="list" parameterType="AddressBook" resultType="AddressBook">
select * from address_book
<where>
<if test="userId != null">
and user_id = #{userId}
</if>
<if test="phone != null">
and phone = #{phone}
</if>
<if test="isDefault != null">
and is_default = #{isDefault}
</if>
</where>
</select>
<!-- 根据id查询 -->
<select id="getById" resultType="com.sky.entity.AddressBook">
select *
from address_book
where id = #{id}
</select>
<!-- 根据id修改 -->
<update id="update" parameterType="addressBook">
update address_book
<set>
<if test="consignee != null">
consignee = #{consignee},
</if>
<if test="sex != null">
sex = #{sex},
</if>
<if test="phone != null">
phone = #{phone},
</if>
<if test="detail != null">
detail = #{detail},
</if>
<if test="label != null">
label = #{label},
</if>
<if test="isDefault != null">
is_default = #{isDefault},
</if>
</set>
where id = #{id}
</update>
<!-- 根据 用户id修改 是否默认地址 -->
<update id="updateIsDefaultByUserId">
update address_book
set is_default = #{isDefault}
where user_id = #{userId}
</update>
</mapper>