地址簿功能代码(day08上)

地址簿功能代码

需求分析和设计

产品原型:

业务功能:

查询地址列表
新增地址
修改地址
删除地址
设置默认地址
查询默认地址

接口设计:

用户的地址信息会存储在 address_book 表,即地址簿表中。具体表结构如下:

字段名

数据类型

说明

备注

id

bigint

主键

自增

user_id

bigint

用户id

逻辑外键

consignee

varchar(50)

收货人

sex

varchar(2)

性别

phone

varchar(11)

手机号

province_code

varchar(12)

省份编码

province_name

varchar(32)

省份名称

city_code

varchar(12)

城市编码

city_name

varchar(32)

城市名称

district_code

varchar(12)

区县编码

district_name

varchar(32)

区县名称

detail

varchar(200)

详细地址信息

具体到门牌号

label

varchar(100)

标签

公司、家、学校

is_default

tinyint(1)

是否默认地址

1是 0否

接口设计:新增地址 

代码 
AddressBookController
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.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;

@RestController
@RequestMapping("/user/addressBook")
@Api(tags = "C端地址簿接口")
public class AddressBookController {
/**
     * 新增地址
     *
     * @param addressBook
     * @return
     */
    @PostMapping
    @ApiOperation("新增地址")
    public Result save(@RequestBody AddressBook addressBook) {
        addressBookService.save(addressBook);
        return Result.success();
    }
}
AddressBookService
/**
     * 新增
     * @param addressBook
     */
    void save(AddressBook addressBook);
AddressBookServiceImpl
/**
     * 新增地址
     *
     * @param addressBook
     */
    public void save(AddressBook addressBook) {
        addressBook.setUserId(BaseContext.getCurrentId());
        addressBook.setIsDefault(0);
        addressBookMapper.insert(addressBook);
    }
AddressBookMapper
/**
     * 新增
     * @param addressBook
     */
    @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})")
    void insert(AddressBook addressBook);

接口设计:查询登录用户所有地址

代码  
AddressBookController
/**
     * 查询当前登录用户的所有地址信息
     *
     * @return
     */
    @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);
    }
AddressBookService
 List<AddressBook> list(AddressBook addressBook);
AddressBookServiceImpl
/**
     * 条件查询
     *
     * @param addressBook
     * @return
     */
    public List<AddressBook> list(AddressBook addressBook) {
        return addressBookMapper.list(addressBook);
    }
AddressBookMapper
/**
     * 条件查询所有地址
     * @param addressBook
     * @return
     */
    List<AddressBook> list(AddressBook addressBook);
AddressBookMapper.xml
 <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>

接口设计:查询默认地址

代码 
AddressBookController
/**
     * 查询默认地址
     */
    @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("没有查询到默认地址");
    }

接口设计:修改地址

代码 
AddressBookController
/**
     * 根据id修改地址
     *
     * @param addressBook
     * @return
     */
    @PutMapping
    @ApiOperation("根据id修改地址")
    public Result update(@RequestBody AddressBook addressBook) {
        addressBookService.update(addressBook);
        return Result.success();
    }
AddressBookService
/**
     * 修改地址
     * @param addressBook
     */
    void update(AddressBook addressBook);
AddressBookServiceImpl
/**
     * 根据id修改地址
     *
     * @param addressBook
     */
    public void update(AddressBook addressBook) {
        
        addressBookMapper.update(addressBook);
    }
AddressBookMapper
/**
     * 根据id修改
     * @param addressBook
     */
    void update(AddressBook addressBook);
AddressBookMapper.xml
<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删除地址

代码 
AddressBookController
/**
     * 根据id删除地址
     *
     * @param id
     * @return
     */
    @DeleteMapping
    @ApiOperation("根据id删除地址")
    public Result deleteById(Long id) {
        addressBookService.deleteById(id);
        return Result.success();
    }
AddressBookService
/**
     * 根据id删除地址
     * @param id
     */
    void deleteById(Long id);
AddressBookServiceImpl
 /**
     * 根据id删除地址
     *
     * @param id
     */
    public void deleteById(Long id) {
        
        addressBookMapper.deleteById(id);
    }
AddressBookMapper
/**
     * 根据id删除地址
     * @param id
     */
    @Delete("delete from address_book where id = #{id}")
    void deleteById(Long id);

接口设计:根据id查询地址

代码
AddressBookController
/**
     * 根据id查询地址
     * @param id
     * @return
     */
    @GetMapping("/{id}")
    @ApiOperation("根据id查询地址")
    public Result<AddressBook> getById(@PathVariable Long id) {
        AddressBook addressBook = addressBookService.getById(id);
        return Result.success(addressBook);
    }
AddressBookService
/**
     * 根据id查询地址
     * @param id
     * @return
     */
    AddressBook getById(Long id);
AddressBookServiceImpl
/**
     * 根据id查询
     *
     * @param id
     * @return
     */
    public AddressBook getById(Long id) {
        AddressBook addressBook = addressBookMapper.getById(id);
        return addressBook;
    }
AddressBookMapper
 /**
     * 根据id查询
     * @param id
     * @return
     */
    @Select("select * from address_book where id = #{id}")
    AddressBook getById(Long id);

接口设计:设置默认地址

代码
AddressBookController
/**
     * 设置默认地址
     *
     * @param addressBook
     * @return
     */
    @PutMapping("/default")
    @ApiOperation("设置默认地址")
    public Result setDefault(@RequestBody AddressBook addressBook) {
        addressBookService.setDefault(addressBook);
        return Result.success();
    }
AddressBookService
/**
     * 设置默认地址
     * @param addressBook
     */
    void setDefault(AddressBook addressBook);
AddressBookServiceImpl
/**
     * 设置默认地址
     *
     * @param 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);
    }
AddressBookMapper
 /**
     * 根据id修改
     * @param addressBook
     */
    void update(AddressBook addressBook);

    /**
     * 根据 用户id修改 是否默认地址
     * @param addressBook
     */
    @Update("update address_book set is_default = #{isDefault} where user_id = #{userId}")
    void updateIsDefaultByUserId(AddressBook addressBook);

功能测试

上一节:

缓存商品、购物车(day07)-优快云博客

下一节:

用户下单、订单支付(day08下)_用户支付成功后生成的订单,服务器需要设计数据库表吗-优快云博客

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值