From d8c97392354a6b6d14efbdd4a73ee0148609bef8 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Wed, 22 Sep 2021 10:04:06 +0800
Subject: [PATCH] Merge branch 'master' of http://120.27.238.55:7000/r/xc-mall

---
 src/main/java/cc/mrbird/febs/mall/entity/MallAddressInfo.java                      |   48 ++
 src/main/java/cc/mrbird/febs/mall/conversion/MallGoodsStyleConversion.java         |   21 
 src/main/java/cc/mrbird/febs/mall/entity/MallOrderItem.java                        |   33 +
 src/main/java/cc/mrbird/febs/mall/mapper/MallOrderItemMapper.java                  |    7 
 src/main/java/cc/mrbird/febs/mall/vo/AddressInfoVo.java                            |   32 +
 src/main/java/cc/mrbird/febs/mall/mapper/MallGoodsMapper.java                      |    4 
 src/main/resources/mapper/modules/MallMoneyFlowMapper.xml                          |    5 
 src/main/java/cc/mrbird/febs/mall/mapper/MallMoneyFlowMapper.java                  |    7 
 src/main/java/cc/mrbird/febs/mall/mapper/MallOrderInfoMapper.java                  |   11 
 src/main/java/cc/mrbird/febs/mall/controller/ApiMallOrderController.java           |   37 +
 src/main/java/cc/mrbird/febs/mall/conversion/MallShoppingCartConversion.java       |   21 
 src/main/java/cc/mrbird/febs/mall/vo/ShoppingCartGoodsVo.java                      |   27 +
 src/main/java/cc/mrbird/febs/mall/service/IApiMallGoodsService.java                |    4 
 src/main/java/cc/mrbird/febs/mall/service/IApiMallShoppingCartService.java         |   20 
 src/main/resources/mapper/modules/MallOrderInfoMapper.xml                          |    5 
 src/main/java/cc/mrbird/febs/mall/dto/AddCartDto.java                              |   24 +
 src/main/java/cc/mrbird/febs/mall/controller/ApiMallShoppingCartController.java    |   52 ++
 src/main/java/cc/mrbird/febs/mall/service/IApiMallAddressInfoService.java          |   19 
 src/main/java/cc/mrbird/febs/mall/controller/ApiMallGoodsController.java           |   17 
 src/main/java/cc/mrbird/febs/mall/entity/MallOrderInfo.java                        |   49 ++
 src/main/java/cc/mrbird/febs/mall/entity/MallGoodsStyle.java                       |    6 
 src/main/java/cc/mrbird/febs/mall/entity/MallGoods.java                            |    9 
 src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java    |   19 
 src/main/java/cc/mrbird/febs/mall/mapper/MallGoodsImagesMapper.java                |    5 
 src/main/java/cc/mrbird/febs/mall/controller/ApiMallAddressInfoController.java     |   81 +++
 sql/xc_mall.sql                                                                    |  146 ++++++
 pom.xml                                                                            |   29 +
 src/main/java/cc/mrbird/febs/mall/conversion/MallGoodsSkuConversion.java           |   21 
 src/main/java/cc/mrbird/febs/mall/mapper/MallAddressInfoMapper.java                |   14 
 src/main/java/cc/mrbird/febs/mall/dto/AddOrderDto.java                             |   20 
 src/main/resources/mapper/modules/MallShoppingCartMapper.xml                       |   23 +
 src/main/java/cc/mrbird/febs/mall/mapper/MallShoppingCartMapper.java               |   18 
 src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallAddressInfoServiceImpl.java  |   88 +++
 src/main/resources/mapper/modules/MallGoodsSkuMapper.xml                           |    9 
 src/main/java/cc/mrbird/febs/mall/vo/GoodsDetailsStyleVo.java                      |   25 +
 src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallShoppingCartServiceImpl.java |   64 ++
 src/main/resources/mapper/modules/MallAddressInfoMapper.xml                        |   19 
 src/main/java/cc/mrbird/febs/mall/vo/GoodsDetailsSkuVo.java                        |   37 +
 src/main/resources/mapper/modules/MallOrderItemMapper.xml                          |    5 
 src/main/resources/mapper/modules/MallGoodsImagesMapper.xml                        |    8 
 src/main/java/cc/mrbird/febs/mall/entity/MallMoneyFlow.java                        |   24 +
 src/main/java/cc/mrbird/febs/mall/entity/MallShoppingCart.java                     |   31 +
 src/main/java/cc/mrbird/febs/mall/conversion/MallGoodsConversion.java              |   21 
 src/main/java/cc/mrbird/febs/mall/dto/AddressInfoDto.java                          |   44 +
 src/main/java/cc/mrbird/febs/mall/vo/MallGoodsDetailsVo.java                       |   46 ++
 src/main/resources/mapper/modules/MallGoodsMapper.xml                              |   51 ++
 src/main/java/cc/mrbird/febs/mall/service/IApiMallOrderInfoService.java            |    7 
 src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallGoodsServiceImpl.java        |   19 
 src/main/java/cc/mrbird/febs/common/interceptor/LoginInterceptor.java              |    2 
 src/main/java/cc/mrbird/febs/mall/conversion/MallAddressInfoConversion.java        |   25 +
 50 files changed, 1,351 insertions(+), 8 deletions(-)

diff --git a/pom.xml b/pom.xml
index b71dc83..455780a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -23,6 +23,7 @@
         <tomcat.version>9.0.31</tomcat.version>
         <hutool.version>5.3.1</hutool.version>
         <aliyun-oss.version>3.8.0</aliyun-oss.version>
+        <mapstruct.version>1.3.1.Final</mapstruct.version>
     </properties>
 
     <dependencies>
@@ -260,6 +261,12 @@
             <version>4.3.5</version>
         </dependency>
         <!-- submail邮件 end -->
+
+        <dependency>
+            <groupId>org.mapstruct</groupId>
+            <artifactId>mapstruct</artifactId>
+            <version>${mapstruct.version}</version>
+        </dependency>
     </dependencies>
 
     <build>
@@ -268,6 +275,28 @@
                 <groupId>org.springframework.boot</groupId>
                 <artifactId>spring-boot-maven-plugin</artifactId>
             </plugin>
+
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.5.1</version>
+                <configuration>
+                    <source>${java.version}</source>
+                    <target>${java.version}</target>
+                    <annotationProcessorPaths>
+                        <path>
+                            <groupId>org.mapstruct</groupId>
+                            <artifactId>mapstruct-processor</artifactId>
+                            <version>${mapstruct.version}</version>
+                        </path>
+                        <path>
+                            <groupId>org.projectlombok</groupId>
+                            <artifactId>lombok</artifactId>
+                            <version>${lombok.version}</version>
+                        </path>
+                    </annotationProcessorPaths>
+                </configuration>
+            </plugin>
         </plugins>
     </build>
 </project>
diff --git a/sql/xc_mall.sql b/sql/xc_mall.sql
new file mode 100644
index 0000000..1b723cd
--- /dev/null
+++ b/sql/xc_mall.sql
@@ -0,0 +1,146 @@
+DROP TABLE IF EXISTS mall_member;
+CREATE TABLE mall_member(
+    REVISION INT    COMMENT '乐观锁' ,
+    CREATED_BY VARCHAR(32)    COMMENT '创建人' ,
+    CREATED_TIME DATETIME    COMMENT '创建时间' ,
+    UPDATED_BY VARCHAR(32)    COMMENT '更新人' ,
+    UPDATED_TIME DATETIME    COMMENT '更新时间' ,
+    ID BIGINT NOT NULL AUTO_INCREMENT  COMMENT '主键' ,
+    name VARCHAR(32)    COMMENT '名称' ,
+    phone VARCHAR(32)    COMMENT '手机号' ,
+    email VARCHAR(90)    COMMENT '邮箱' ,
+    password VARCHAR(500)    COMMENT '密码' ,
+    sex VARCHAR(2)    COMMENT '性别' ,
+    invite_id VARCHAR(8)    COMMENT '邀请码' ,
+    referrer_id VARCHAR(8)    COMMENT '推荐人邀请码' ,
+    referrer_ids TEXT    COMMENT '推荐人线路' ,
+    level VARCHAR(255)    COMMENT '代理层级' ,
+    account_status INT    COMMENT '账户状态;1-正常 2-禁用' ,
+    account_type INT    COMMENT '账户类型;1-正常用户' ,
+    PRIMARY KEY (ID)
+)  COMMENT = '商城用户表';
+
+
+DROP TABLE IF EXISTS mall_goods_category;
+CREATE TABLE mall_goods_category(
+    REVISION INT    COMMENT '乐观锁' ,
+    CREATED_BY VARCHAR(32)    COMMENT '创建人' ,
+    CREATED_TIME DATETIME    COMMENT '创建时间' ,
+    UPDATED_BY VARCHAR(32)    COMMENT '更新人' ,
+    UPDATED_TIME DATETIME    COMMENT '更新时间' ,
+    ID BIGINT NOT NULL AUTO_INCREMENT  COMMENT '主键' ,
+    name VARCHAR(32)    COMMENT '名称' ,
+    parent_id BIGINT    COMMENT '父级ID' ,
+    parent_ids VARCHAR(900)    COMMENT '父级ids' ,
+    PRIMARY KEY (ID)
+)  COMMENT = '商品分类';
+
+
+DROP TABLE IF EXISTS mall_goods;
+CREATE TABLE mall_goods(
+    REVISION INT    COMMENT '乐观锁' ,
+    CREATED_BY VARCHAR(32)    COMMENT '创建人' ,
+    CREATED_TIME DATETIME    COMMENT '创建时间' ,
+    UPDATED_BY VARCHAR(32)    COMMENT '更新人' ,
+    UPDATED_TIME DATETIME    COMMENT '更新时间' ,
+    ID BIGINT NOT NULL AUTO_INCREMENT  COMMENT '主键' ,
+    goods_no VARCHAR(32)    COMMENT '商品编号' ,
+    goods_name VARCHAR(255)    COMMENT '商品名称' ,
+    goods_introdution TEXT(255)    COMMENT '商品介绍' ,
+    unit VARCHAR(10)    COMMENT '单位' ,
+    thumb VARCHAR(500)    COMMENT '缩略图' ,
+    goods_details TEXT    COMMENT '商品详情' ,
+    is_sale INT    COMMENT '是否上架;1-上架 2-下架' ,
+    original_price VARCHAR(90)    COMMENT '原价' ,
+    present_price VARCHAR(90)    COMMENT '现价' ,
+    category_id BIGINT    COMMENT '分类ID' ,
+    PRIMARY KEY (ID)
+)  COMMENT = '商品信息表';
+
+
+DROP TABLE IF EXISTS mall_goods_images;
+CREATE TABLE mall_goods_images(
+    REVISION INT    COMMENT '乐观锁' ,
+    CREATED_BY VARCHAR(32)    COMMENT '创建人' ,
+    CREATED_TIME DATETIME    COMMENT '创建时间' ,
+    UPDATED_BY VARCHAR(32)    COMMENT '更新人' ,
+    UPDATED_TIME DATETIME    COMMENT '更新时间' ,
+    ID BIGINT NOT NULL AUTO_INCREMENT  COMMENT '主键' ,
+    image_url VARCHAR(900)    COMMENT '主图链接' ,
+    seq INT    COMMENT '排序' ,
+    goods_id BIGINT    COMMENT '' ,
+    PRIMARY KEY (ID)
+)  COMMENT = '商品主图';
+
+
+DROP TABLE IF EXISTS mall_goods_style;
+CREATE TABLE mall_goods_style(
+    REVISION INT    COMMENT '乐观锁' ,
+    CREATED_BY VARCHAR(32)    COMMENT '创建人' ,
+    CREATED_TIME DATETIME    COMMENT '创建时间' ,
+    UPDATED_BY VARCHAR(32)    COMMENT '更新人' ,
+    UPDATED_TIME DATETIME    COMMENT '更新时间' ,
+    ID BIGINT NOT NULL AUTO_INCREMENT  COMMENT '主键' ,
+    goods_id BIGINT    COMMENT '商品ID' ,
+    name VARCHAR(90)    COMMENT '样式名称' ,
+    PRIMARY KEY (ID)
+)  COMMENT = '商品样式';
+
+
+DROP TABLE IF EXISTS mall_goods_sku;
+CREATE TABLE mall_goods_sku(
+    REVISION INT    COMMENT '乐观锁' ,
+    CREATED_BY VARCHAR(32)    COMMENT '创建人' ,
+    CREATED_TIME DATETIME    COMMENT '创建时间' ,
+    UPDATED_BY VARCHAR(32)    COMMENT '更新人' ,
+    UPDATED_TIME DATETIME    COMMENT '更新时间' ,
+    ID BIGINT NOT NULL AUTO_INCREMENT  COMMENT '主键' ,
+    sku_name VARCHAR(90)    COMMENT 'sku名称' ,
+    sku_image VARCHAR(900)    COMMENT 'sku图片' ,
+    stock INT    COMMENT '库存' ,
+    sku_volume INT    COMMENT '销售数量' ,
+    original_price DECIMAL(20,2)    COMMENT '原价' ,
+    present_price DECIMAL(20,2)    COMMENT '现价' ,
+    style_id BIGINT    COMMENT '样式ID' ,
+    goods_id BIGINT    COMMENT '商品ID' ,
+    PRIMARY KEY (ID)
+)  COMMENT = '商品sku';
+
+alter table mall_member add avatar varchar(500) null comment '头像';
+ALTER TABLE `mall_goods_category` ADD COLUMN `is_recommend`  int(11) NULL COMMENT '是否推荐 1:是 2:否' AFTER `parent_ids`;
+alter table mall_goods add is_hot int default 2 null comment '是否热卖 1-是 2-否';
+
+DROP TABLE IF EXISTS mall_shopping_cart;
+CREATE TABLE mall_shopping_cart(
+   REVISION INT    COMMENT '乐观锁' ,
+   CREATED_BY VARCHAR(32)    COMMENT '创建人' ,
+   CREATED_TIME DATETIME    COMMENT '创建时间' ,
+   UPDATED_BY VARCHAR(32)    COMMENT '更新人' ,
+   UPDATED_TIME DATETIME    COMMENT '更新时间' ,
+   ID BIGINT NOT NULL AUTO_INCREMENT  COMMENT '主键' ,
+   member_id BIGINT    COMMENT '用户ID' ,
+   goods_id BIGINT    COMMENT '商品ID' ,
+   style_id BIGINT    COMMENT '样式ID' ,
+   sku_id BIGINT    COMMENT 'skuId' ,
+   cnt VARCHAR(255)    COMMENT '数量' ,
+   PRIMARY KEY (ID)
+)  COMMENT = '购物车';
+
+DROP TABLE IF EXISTS mall_address_info;
+CREATE TABLE mall_address_info(
+      REVISION INT    COMMENT '乐观锁' ,
+      CREATED_BY VARCHAR(32)    COMMENT '创建人' ,
+      CREATED_TIME DATETIME    COMMENT '创建时间' ,
+      UPDATED_BY VARCHAR(32)    COMMENT '更新人' ,
+      UPDATED_TIME DATETIME    COMMENT '更新时间' ,
+      ID BIGINT NOT NULL AUTO_INCREMENT  COMMENT '主键' ,
+      member_id BIGINT    COMMENT '用户ID' ,
+      name VARCHAR(255)    COMMENT '姓名' ,
+      phone VARCHAR(255)    COMMENT '联系方式' ,
+      area TEXT    COMMENT '地区' ,
+      address TEXT    COMMENT '地址' ,
+      longitude VARCHAR(255)    COMMENT '经度' ,
+      latitude VARCHAR(255)    COMMENT '纬度' ,
+      is_default INT    COMMENT '是否默认;1-是2-否' ,
+      PRIMARY KEY (ID)
+)  COMMENT = '用户地址';
diff --git a/src/main/java/cc/mrbird/febs/common/interceptor/LoginInterceptor.java b/src/main/java/cc/mrbird/febs/common/interceptor/LoginInterceptor.java
index 81c706b..06878ae 100644
--- a/src/main/java/cc/mrbird/febs/common/interceptor/LoginInterceptor.java
+++ b/src/main/java/cc/mrbird/febs/common/interceptor/LoginInterceptor.java
@@ -87,7 +87,7 @@
     }
 
     private Boolean verifyTokenExpired(Long time) {
-        boolean isDebug = false;
+        boolean isDebug = true;
         if (!isDebug) {
             long currentTime = System.currentTimeMillis();
             return currentTime - time <= 30000;
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallAddressInfoController.java b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallAddressInfoController.java
new file mode 100644
index 0000000..35b5dc0
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallAddressInfoController.java
@@ -0,0 +1,81 @@
+package cc.mrbird.febs.mall.controller;
+
+import cc.mrbird.febs.common.entity.FebsResponse;
+import cc.mrbird.febs.mall.conversion.MallAddressInfoConversion;
+import cc.mrbird.febs.mall.dto.AddressInfoDto;
+import cc.mrbird.febs.mall.entity.MallAddressInfo;
+import cc.mrbird.febs.mall.service.IApiMallAddressInfoService;
+import cc.mrbird.febs.mall.vo.AddressInfoVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * @author wzy
+ * @date 2021-09-18
+ **/
+@Slf4j
+@Validated
+@RestController
+@RequiredArgsConstructor
+@RequestMapping(value = "/api/address")
+@Api(value = "ApiMallAddressInfoController", tags = "用户地址管理接口类")
+public class ApiMallAddressInfoController {
+
+    private final IApiMallAddressInfoService mallAddressInfoService;
+
+    @ApiOperation(value = "获取地址列表", notes = "获取地址列表")
+    @ApiResponses({
+            @ApiResponse(code = 200, message = "success", response = AddressInfoVo.class)
+    })
+    @GetMapping(value = "/findAddressList")
+    public FebsResponse findAddressList() {
+        return new FebsResponse().success().data(mallAddressInfoService.findAddressInfoList());
+    }
+
+    @ApiOperation(value = "获取地址信息", notes = "获取地址信息")
+    @ApiResponses({
+            @ApiResponse(code = 200, message = "success", response = AddressInfoVo.class)
+    })
+    @GetMapping(value = "/findAddressList/{id}")
+    public FebsResponse findAddressInfoById(@PathVariable("id") Long id) {
+        MallAddressInfo addressInfo = mallAddressInfoService.getById(id);
+        return new FebsResponse().success().data(MallAddressInfoConversion.INSTANCE.entityToVo(addressInfo));
+    }
+
+    @ApiOperation(value = "添加地址", notes = "添加地址")
+    @PostMapping(value = "/addAddress")
+    public FebsResponse addAddress(@RequestBody AddressInfoDto addressInfoDto) {
+        mallAddressInfoService.addAddress(addressInfoDto);
+        return new FebsResponse().success().message("添加成功");
+    }
+
+    @ApiOperation(value = "修改地址", notes = "修改地址")
+    @PostMapping(value = "/modifyAddress")
+    public FebsResponse modifyAddress(@RequestBody AddressInfoDto addressInfoDto) {
+        mallAddressInfoService.modifyAddress(addressInfoDto);
+        return new FebsResponse().success().message("修改成功");
+    }
+
+    @ApiOperation(value = "删除地址", notes = "删除地址")
+    @PostMapping(value = "/delAddress/{id}")
+    public FebsResponse delAddress(@PathVariable("id") Long id) {
+        mallAddressInfoService.removeById(id);
+        return new FebsResponse().success().message("删除成功");
+    }
+
+    @ApiOperation(value = "设置地址为默认地址", notes = "设置地址为默认地址")
+    @PostMapping(value = "/setAddressDefault/{id}")
+    public FebsResponse setAddressDefault(@PathVariable("id") Long id) {
+        mallAddressInfoService.setDefaultAddress(id);
+        return new FebsResponse().success().message("设置成功");
+    }
+
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallGoodsController.java b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallGoodsController.java
index 2f4e723..860e466 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallGoodsController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallGoodsController.java
@@ -3,6 +3,7 @@
 import cc.mrbird.febs.common.entity.FebsResponse;
 import cc.mrbird.febs.mall.dto.MallGoodsQueryDto;
 import cc.mrbird.febs.mall.service.IApiMallGoodsService;
+import cc.mrbird.febs.mall.vo.MallGoodsDetailsVo;
 import cc.mrbird.febs.mall.vo.MallGoodsListVo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -11,10 +12,7 @@
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 /**
  * @author wzy
@@ -29,7 +27,7 @@
 public class ApiMallGoodsController {
     private final IApiMallGoodsService mallGoodsService;
 
-    @ApiOperation(value = "findMallGoodsList", notes = "获取商城商品列表")
+    @ApiOperation(value = "获取商城商品列表", notes = "获取商城商品列表")
     @ApiResponses({
             @ApiResponse(code = 200, message = "success", response = MallGoodsListVo.class)
     })
@@ -38,4 +36,13 @@
         return new FebsResponse().success().data(mallGoodsService.findMallGoodsListInPage(queryDto));
     }
 
+    @ApiOperation(value = "获取商品详情", notes = "获取商品详情")
+    @ApiResponses({
+            @ApiResponse(code = 200, message = "success", response = MallGoodsDetailsVo.class)
+    })
+    @GetMapping(value = "/findMallGoodsDetailsById/{id}")
+    public FebsResponse findMallGoodsDetailsById(@PathVariable("id") Long id) {
+        return new FebsResponse().success().data(mallGoodsService.findMallGoodsDetailsById(id));
+    }
+
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallOrderController.java b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallOrderController.java
new file mode 100644
index 0000000..72f57c1
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallOrderController.java
@@ -0,0 +1,37 @@
+package cc.mrbird.febs.mall.controller;
+
+import cc.mrbird.febs.common.entity.FebsResponse;
+import cc.mrbird.febs.mall.dto.AddOrderDto;
+import cc.mrbird.febs.mall.service.IApiMallOrderInfoService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * @author wzy
+ * @date 2021-09-18
+ **/
+@Slf4j
+@Validated
+@RestController
+@RequiredArgsConstructor
+@RequestMapping(value = "/api/order")
+@Api(value = "ApiMallOrderController", tags = "订单接口类")
+public class ApiMallOrderController {
+
+    private final IApiMallOrderInfoService mallOrderInfoService;
+
+    @ApiOperation(value = "addOrder", notes = "提交订单")
+    @PostMapping(value = "/addOrder")
+    public FebsResponse addOrder(@RequestBody List<AddOrderDto> list) {
+        return null;
+    }
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallShoppingCartController.java b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallShoppingCartController.java
new file mode 100644
index 0000000..a2d4ae7
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallShoppingCartController.java
@@ -0,0 +1,52 @@
+package cc.mrbird.febs.mall.controller;
+
+import cc.mrbird.febs.common.entity.FebsResponse;
+import cc.mrbird.febs.mall.dto.AddCartDto;
+import cc.mrbird.febs.mall.service.IApiMallShoppingCartService;
+import cc.mrbird.febs.mall.vo.ShoppingCartGoodsVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * @author wzy
+ * @date 2021-09-17
+ **/
+@Slf4j
+@Validated
+@RestController
+@RequiredArgsConstructor
+@RequestMapping(value = "/api/cart")
+@Api(value = "ApiMallShoppingCartController", tags = "商城购物车接口请求类")
+public class ApiMallShoppingCartController {
+
+    private final IApiMallShoppingCartService mallShoppingCartService;
+
+    @ApiOperation(value = "获取购物车商品列表", notes = "获取购物车商品列表")
+    @ApiResponses({
+            @ApiResponse(code = 200, message = "success", response = ShoppingCartGoodsVo.class)
+    })
+    @PostMapping(value = "/findCartGoodsList")
+    public FebsResponse findCartGoodsList() {
+        return new FebsResponse().success().data(mallShoppingCartService.findCartGoodsList());
+    }
+
+    @ApiOperation(value = "添加商品到购物车", notes = "添加商品到购物车")
+    @PostMapping(value = "/addGoodsToCart")
+    public FebsResponse addGoodsToCart(@RequestBody AddCartDto addCartDto) {
+        mallShoppingCartService.addGoodsToCart(addCartDto);
+        return new FebsResponse().success().data("添加成功");
+    }
+
+    @ApiOperation(value = "从购物车中删除商品", notes = "从购物车中删除商品")
+    @PostMapping(value = "/delGoods/{id}")
+    public FebsResponse delGoods(@PathVariable("id") Long id) {
+        mallShoppingCartService.removeById(id);
+        return new FebsResponse().success().data("删除成功");
+    }
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/conversion/MallAddressInfoConversion.java b/src/main/java/cc/mrbird/febs/mall/conversion/MallAddressInfoConversion.java
new file mode 100644
index 0000000..a9b7c83
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/conversion/MallAddressInfoConversion.java
@@ -0,0 +1,25 @@
+package cc.mrbird.febs.mall.conversion;
+
+import cc.mrbird.febs.mall.dto.AddressInfoDto;
+import cc.mrbird.febs.mall.entity.MallAddressInfo;
+import cc.mrbird.febs.mall.vo.AddressInfoVo;
+import org.mapstruct.Mapper;
+import org.mapstruct.factory.Mappers;
+
+import java.util.List;
+
+/**
+ * @author wzy
+ * @date 2021-09-18
+ **/
+@Mapper
+public abstract class MallAddressInfoConversion {
+    public static final MallAddressInfoConversion INSTANCE = Mappers.getMapper(MallAddressInfoConversion.class);
+
+    public abstract AddressInfoVo entityToVo(MallAddressInfo addressInfo);
+
+    public abstract List<AddressInfoVo> entityListToVos(List<MallAddressInfo> addressInfoList);
+
+    public abstract MallAddressInfo dtoToEntity(AddressInfoDto addressInfoDto);
+
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/conversion/MallGoodsConversion.java b/src/main/java/cc/mrbird/febs/mall/conversion/MallGoodsConversion.java
new file mode 100644
index 0000000..407f677
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/conversion/MallGoodsConversion.java
@@ -0,0 +1,21 @@
+package cc.mrbird.febs.mall.conversion;
+
+import cc.mrbird.febs.mall.entity.MallGoods;
+import cc.mrbird.febs.mall.vo.MallGoodsDetailsVo;
+import org.mapstruct.Mapper;
+import org.mapstruct.factory.Mappers;
+
+import java.util.List;
+
+/**
+ * @author wzy
+ * @date 2021-09-17
+ **/
+@Mapper
+public abstract class MallGoodsConversion {
+    public static final MallGoodsConversion INSTANCE = Mappers.getMapper(MallGoodsConversion.class);
+
+    public abstract MallGoodsDetailsVo entityToDetailsVo(MallGoods mallGoods);
+
+    public abstract List<MallGoodsDetailsVo> entityListToDetailsVoList(List<MallGoods> mallGoods);
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/conversion/MallGoodsSkuConversion.java b/src/main/java/cc/mrbird/febs/mall/conversion/MallGoodsSkuConversion.java
new file mode 100644
index 0000000..d8a0c76
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/conversion/MallGoodsSkuConversion.java
@@ -0,0 +1,21 @@
+package cc.mrbird.febs.mall.conversion;
+
+import cc.mrbird.febs.mall.entity.MallGoodsSku;
+import cc.mrbird.febs.mall.vo.GoodsDetailsSkuVo;
+import org.mapstruct.Mapper;
+import org.mapstruct.factory.Mappers;
+
+import java.util.List;
+
+/**
+ * @author wzy
+ * @date 2021-09-17
+ **/
+@Mapper
+public abstract class MallGoodsSkuConversion {
+    public static final MallGoodsSkuConversion INSTANCE = Mappers.getMapper(MallGoodsSkuConversion.class);
+
+    public abstract GoodsDetailsSkuVo entityToVo(MallGoodsSku sku);
+
+    public abstract List<GoodsDetailsSkuVo> entityListToSkuVoList(List<MallGoodsSku> skus);
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/conversion/MallGoodsStyleConversion.java b/src/main/java/cc/mrbird/febs/mall/conversion/MallGoodsStyleConversion.java
new file mode 100644
index 0000000..55de7f5
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/conversion/MallGoodsStyleConversion.java
@@ -0,0 +1,21 @@
+package cc.mrbird.febs.mall.conversion;
+
+import cc.mrbird.febs.mall.entity.MallGoodsStyle;
+import cc.mrbird.febs.mall.vo.GoodsDetailsStyleVo;
+import org.mapstruct.Mapper;
+import org.mapstruct.factory.Mappers;
+
+import java.util.List;
+
+/**
+ * @author wzy
+ * @date 2021-09-17
+ **/
+@Mapper
+public abstract class MallGoodsStyleConversion {
+    public static final MallGoodsStyleConversion INSTANCE = Mappers.getMapper(MallGoodsStyleConversion.class);
+
+    public abstract GoodsDetailsStyleVo entityToStyleVo(MallGoodsStyle goodsStyle);
+
+    public abstract List<GoodsDetailsStyleVo> entityListToStyleVoList(List<MallGoodsStyle> goodsStyleList);
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/conversion/MallShoppingCartConversion.java b/src/main/java/cc/mrbird/febs/mall/conversion/MallShoppingCartConversion.java
new file mode 100644
index 0000000..1ee9c8d
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/conversion/MallShoppingCartConversion.java
@@ -0,0 +1,21 @@
+package cc.mrbird.febs.mall.conversion;
+
+import cc.mrbird.febs.mall.entity.MallShoppingCart;
+import cc.mrbird.febs.mall.vo.ShoppingCartGoodsVo;
+import org.mapstruct.Mapper;
+import org.mapstruct.factory.Mappers;
+
+import java.util.List;
+
+/**
+ * @author wzy
+ * @date 2021-09-17
+ **/
+@Mapper
+public abstract class MallShoppingCartConversion {
+    public static final MallShoppingCartConversion INSTANCE = Mappers.getMapper(MallShoppingCartConversion.class);
+
+    public abstract ShoppingCartGoodsVo entityToVo(MallShoppingCart cart);
+
+    public abstract List<ShoppingCartGoodsVo> entityListToVoList(List<MallShoppingCart> carts);
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/AddCartDto.java b/src/main/java/cc/mrbird/febs/mall/dto/AddCartDto.java
new file mode 100644
index 0000000..4e6f6ec
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/dto/AddCartDto.java
@@ -0,0 +1,24 @@
+package cc.mrbird.febs.mall.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @author wzy
+ * @date 2021-09-17
+ **/
+@Data
+@ApiModel(value = "AddCartDto", description = "添加到购物车接收参数类")
+public class AddCartDto {
+
+    @NotNull(message = "参数不能为空")
+    @ApiModelProperty(value = "skuId")
+    private Long skuId;
+
+    @NotNull(message = "参数不能为空")
+    @ApiModelProperty(value = "数量")
+    private Integer cnt;
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/AddOrderDto.java b/src/main/java/cc/mrbird/febs/mall/dto/AddOrderDto.java
new file mode 100644
index 0000000..2d78d52
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/dto/AddOrderDto.java
@@ -0,0 +1,20 @@
+package cc.mrbird.febs.mall.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author wzy
+ * @date 2021-09-18
+ **/
+@Data
+@ApiModel(value = "AddOrderDto", description = "新增订单接口参数接收类")
+public class AddOrderDto {
+
+    @ApiModelProperty(value = "skuID", example = "1")
+    private Long skuId;
+
+    @ApiModelProperty(value = "数量", example = "2")
+    private Integer cnt;
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/AddressInfoDto.java b/src/main/java/cc/mrbird/febs/mall/dto/AddressInfoDto.java
new file mode 100644
index 0000000..4299ea3
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/dto/AddressInfoDto.java
@@ -0,0 +1,44 @@
+package cc.mrbird.febs.mall.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * @author wzy
+ * @date 2021-09-18
+ **/
+@Data
+@ApiModel(value = "AddressInfoDto", description = "地址接收参数类")
+public class AddressInfoDto {
+
+    @ApiModelProperty(value = "id", example = "编辑的时候传")
+    private Long id;
+
+    @NotBlank(message = "参数不能为空")
+    @ApiModelProperty(value = "姓名", example = "王")
+    private String name;
+
+    @NotBlank(message = "参数不能为空")
+    @ApiModelProperty(value = "手机号", example = "15773001234")
+    private String phone;
+
+    @NotBlank(message = "参数不能为空")
+    @ApiModelProperty(value = "地区", example = "北京市朝阳区")
+    private String area;
+
+    @NotBlank(message = "参数不能为空")
+    @ApiModelProperty(value = "地址", example = "朝阳街道110栋119号")
+    private String address;
+
+    @ApiModelProperty(value = "经度", example = "112.12345678")
+    private String longitude;
+
+    @ApiModelProperty(value = "纬度", example = "87.12345678")
+    private String latitude;
+
+    @ApiModelProperty(value = "是否默认", example = "1是2否")
+    private Integer isDefault;
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallAddressInfo.java b/src/main/java/cc/mrbird/febs/mall/entity/MallAddressInfo.java
new file mode 100644
index 0000000..d952e7a
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/entity/MallAddressInfo.java
@@ -0,0 +1,48 @@
+package cc.mrbird.febs.mall.entity;
+
+import cc.mrbird.febs.common.entity.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+/**
+ * @author wzy
+ * @date 2021-09-18
+ **/
+@Data
+@TableName("mall_address_info")
+public class MallAddressInfo extends BaseEntity {
+
+    private String name;
+
+    private String phone;
+
+    private Long memberId;
+
+    /**
+     * 地区 省市区
+     */
+    private String area;
+
+    /**
+     * 具体地址
+     */
+    private String address;
+
+    /**
+     * 经度
+     */
+    private String longitude;
+
+    /**
+     * 纬度
+     */
+    private String latitude;
+
+    /**
+     * 是否默认地址 1-是 2-否
+     */
+    private Integer isDefault;
+    public static final Integer IS_DEFAULT_Y = 1;
+    public static final Integer IS_DEFAULT_N = 2;
+
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallGoods.java b/src/main/java/cc/mrbird/febs/mall/entity/MallGoods.java
index 25ca13b..df5c4df 100644
--- a/src/main/java/cc/mrbird/febs/mall/entity/MallGoods.java
+++ b/src/main/java/cc/mrbird/febs/mall/entity/MallGoods.java
@@ -1,8 +1,11 @@
 package cc.mrbird.febs.mall.entity;
 
 import cc.mrbird.febs.common.entity.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
+
+import java.util.List;
 
 /**
  * @author wzy
@@ -33,4 +36,10 @@
     private Long categoryId;
 
     private Integer isHot;
+
+    @TableField(exist = false)
+    private List<MallGoodsStyle> styles;
+
+    @TableField(exist = false)
+    private List<String> images;
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallGoodsStyle.java b/src/main/java/cc/mrbird/febs/mall/entity/MallGoodsStyle.java
index f07408e..c3d9f23 100644
--- a/src/main/java/cc/mrbird/febs/mall/entity/MallGoodsStyle.java
+++ b/src/main/java/cc/mrbird/febs/mall/entity/MallGoodsStyle.java
@@ -1,8 +1,11 @@
 package cc.mrbird.febs.mall.entity;
 
 import cc.mrbird.febs.common.entity.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
+
+import java.util.List;
 
 /**
  * @author wzy
@@ -15,4 +18,7 @@
     private Long goodsId;
 
     private String name;
+
+    @TableField(exist = false)
+    private List<MallGoodsSku> skus;
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallMoneyFlow.java b/src/main/java/cc/mrbird/febs/mall/entity/MallMoneyFlow.java
new file mode 100644
index 0000000..ceacbfd
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/entity/MallMoneyFlow.java
@@ -0,0 +1,24 @@
+package cc.mrbird.febs.mall.entity;
+
+import cc.mrbird.febs.common.entity.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @author wzy
+ * @date 2021-09-18
+ **/
+@Data
+@TableName("mall_money_flow")
+public class MallMoneyFlow extends BaseEntity {
+
+    private Long memberId;
+
+    private BigDecimal amount;
+
+    private Integer type;
+
+    private String orderNo;
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallOrderInfo.java b/src/main/java/cc/mrbird/febs/mall/entity/MallOrderInfo.java
new file mode 100644
index 0000000..8d9fc8b
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/entity/MallOrderInfo.java
@@ -0,0 +1,49 @@
+package cc.mrbird.febs.mall.entity;
+
+import cc.mrbird.febs.common.entity.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @author wzy
+ * @date 2021-09-18
+ **/
+@Data
+@TableName("mall_order_info")
+public class MallOrderInfo extends BaseEntity {
+
+    private String orderNo;
+
+    private Long memberId;
+
+    private Date orderTime;
+
+    private Date payTime;
+
+    private BigDecimal amount;
+
+    private String payMethod;
+
+    /**
+     * 状态 1-待支付2-待发货3-待收货4-已完成5-退款中6-已退款7-已取消
+     */
+    private Integer status;
+
+    /**
+     * 取消类型 1-超时未支付2-主动取消
+     */
+    private Integer cancelType;
+
+    private String name;
+
+    private String phone;
+
+    private String address;
+
+    private String longitude;
+
+    private String latitude;
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallOrderItem.java b/src/main/java/cc/mrbird/febs/mall/entity/MallOrderItem.java
new file mode 100644
index 0000000..6cf10f1
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/entity/MallOrderItem.java
@@ -0,0 +1,33 @@
+package cc.mrbird.febs.mall.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @author wzy
+ * @date 2021-09-18
+ **/
+@Data
+@TableName("mall_order_item")
+public class MallOrderItem {
+
+    private Long orderId;
+
+    private Long skuId;
+
+    private Long goodsId;
+
+    private String goodsName;
+
+    private String styleName;
+
+    private String skuName;
+
+    private Integer cnt;
+
+    private BigDecimal price;
+
+    private BigDecimal amount;
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallShoppingCart.java b/src/main/java/cc/mrbird/febs/mall/entity/MallShoppingCart.java
new file mode 100644
index 0000000..f23fc07
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/entity/MallShoppingCart.java
@@ -0,0 +1,31 @@
+package cc.mrbird.febs.mall.entity;
+
+import cc.mrbird.febs.common.entity.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+/**
+ * @author wzy
+ * @date 2021-09-17
+ **/
+@Data
+@TableName("mall_shopping_cart")
+public class MallShoppingCart extends BaseEntity {
+
+    private Long memberId;
+
+    private Long goodsId;
+
+    private Long styleId;
+
+    private Long skuId;
+
+    private Integer cnt;
+
+    @TableField(exist = false)
+    private MallGoods goods;
+
+    @TableField(exist = false)
+    private MallGoodsSku sku;
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallAddressInfoMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallAddressInfoMapper.java
new file mode 100644
index 0000000..eb8e455
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallAddressInfoMapper.java
@@ -0,0 +1,14 @@
+package cc.mrbird.febs.mall.mapper;
+
+import cc.mrbird.febs.mall.entity.MallAddressInfo;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface MallAddressInfoMapper extends BaseMapper<MallAddressInfo> {
+
+    List<MallAddressInfo> selectAddressInfoListByMemberId(@Param("memberId") Long memberId);
+
+    int updateIsDefault(@Param("isDefault") Integer isDefault, @Param("memberId") Long memberId, @Param("id") Long id);
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallGoodsImagesMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallGoodsImagesMapper.java
index 37fc3b1..5732c2f 100644
--- a/src/main/java/cc/mrbird/febs/mall/mapper/MallGoodsImagesMapper.java
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallGoodsImagesMapper.java
@@ -1,10 +1,15 @@
 package cc.mrbird.febs.mall.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * @author wzy
  * @date 2021-09-17
  **/
 public interface MallGoodsImagesMapper extends BaseMapper<MallGoodsMapper> {
+
+    List<String> selectGoodsImagesByGoodsId(@Param("goodsId") Long goodsId);
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallGoodsMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallGoodsMapper.java
index 6340e58..990b0a4 100644
--- a/src/main/java/cc/mrbird/febs/mall/mapper/MallGoodsMapper.java
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallGoodsMapper.java
@@ -9,12 +9,12 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.apache.ibatis.annotations.Param;
 
-import java.util.List;
-
 public interface MallGoodsMapper extends BaseMapper<MallGoods> {
 
     IPage<MallGoodsListVo> selectMallGoodsListQueryInPage(@Param("record") MallGoodsQueryDto queryDto, Page<MallGoodsListVo> page);
 
+    MallGoods selectGoodsDetailById(@Param("id") Long id);
+
     IPage<AdminMallGoodsVo> selectMallGoodsInPage(Page<AdminMallGoodsVo> page, @Param("record")MallGoods mallGoods);
 
     Integer selectMallGoodsCountByGoodsName(@Param("goodsName")String goodsName);
diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallMoneyFlowMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallMoneyFlowMapper.java
new file mode 100644
index 0000000..7e1e324
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallMoneyFlowMapper.java
@@ -0,0 +1,7 @@
+package cc.mrbird.febs.mall.mapper;
+
+import cc.mrbird.febs.mall.entity.MallMoneyFlow;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+public interface MallMoneyFlowMapper extends BaseMapper<MallMoneyFlow> {
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallOrderInfoMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallOrderInfoMapper.java
new file mode 100644
index 0000000..74bdcd4
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallOrderInfoMapper.java
@@ -0,0 +1,11 @@
+package cc.mrbird.febs.mall.mapper;
+
+import cc.mrbird.febs.mall.entity.MallOrderInfo;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @author wzy
+ * @date 2021-09-18
+ **/
+public interface MallOrderInfoMapper extends BaseMapper<MallOrderInfo> {
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallOrderItemMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallOrderItemMapper.java
new file mode 100644
index 0000000..58d0e92
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallOrderItemMapper.java
@@ -0,0 +1,7 @@
+package cc.mrbird.febs.mall.mapper;
+
+import cc.mrbird.febs.mall.entity.MallOrderItem;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+public interface MallOrderItemMapper extends BaseMapper<MallOrderItem> {
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallShoppingCartMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallShoppingCartMapper.java
new file mode 100644
index 0000000..8b79d93
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallShoppingCartMapper.java
@@ -0,0 +1,18 @@
+package cc.mrbird.febs.mall.mapper;
+
+import cc.mrbird.febs.mall.entity.MallShoppingCart;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * @author wzy
+ * @date 2021-09-17
+ **/
+public interface MallShoppingCartMapper extends BaseMapper<MallShoppingCart> {
+
+    List<MallShoppingCart> selectCartGoodsList(@Param("memberId") Long memberId);
+
+    MallShoppingCart selectCartGoodsBySkuId(@Param("skuId") Long skuId, @Param("memberId") Long memberId);
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/service/IApiMallAddressInfoService.java b/src/main/java/cc/mrbird/febs/mall/service/IApiMallAddressInfoService.java
new file mode 100644
index 0000000..64d27c3
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/service/IApiMallAddressInfoService.java
@@ -0,0 +1,19 @@
+package cc.mrbird.febs.mall.service;
+
+import cc.mrbird.febs.mall.dto.AddressInfoDto;
+import cc.mrbird.febs.mall.entity.MallAddressInfo;
+import cc.mrbird.febs.mall.vo.AddressInfoVo;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+public interface IApiMallAddressInfoService extends IService<MallAddressInfo> {
+
+    List<AddressInfoVo> findAddressInfoList();
+
+    void addAddress(AddressInfoDto addressInfoDto);
+
+    void modifyAddress(AddressInfoDto addressInfoDto);
+
+    void setDefaultAddress(Long id);
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/service/IApiMallGoodsService.java b/src/main/java/cc/mrbird/febs/mall/service/IApiMallGoodsService.java
index 9c0a7a8..58ea980 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/IApiMallGoodsService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/IApiMallGoodsService.java
@@ -2,11 +2,15 @@
 
 import cc.mrbird.febs.mall.dto.MallGoodsQueryDto;
 import cc.mrbird.febs.mall.entity.MallGoods;
+import cc.mrbird.febs.mall.vo.MallGoodsDetailsVo;
 import cc.mrbird.febs.mall.vo.MallGoodsListVo;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
+import org.apache.ibatis.annotations.Param;
 
 public interface IApiMallGoodsService extends IService<MallGoods> {
 
     IPage<MallGoodsListVo> findMallGoodsListInPage(MallGoodsQueryDto queryDto);
+
+    MallGoodsDetailsVo findMallGoodsDetailsById(@Param("id") Long id);
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/service/IApiMallOrderInfoService.java b/src/main/java/cc/mrbird/febs/mall/service/IApiMallOrderInfoService.java
new file mode 100644
index 0000000..fc76a83
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/service/IApiMallOrderInfoService.java
@@ -0,0 +1,7 @@
+package cc.mrbird.febs.mall.service;
+
+import cc.mrbird.febs.mall.entity.MallOrderInfo;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+public interface IApiMallOrderInfoService extends IService<MallOrderInfo> {
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/service/IApiMallShoppingCartService.java b/src/main/java/cc/mrbird/febs/mall/service/IApiMallShoppingCartService.java
new file mode 100644
index 0000000..6a790d1
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/service/IApiMallShoppingCartService.java
@@ -0,0 +1,20 @@
+package cc.mrbird.febs.mall.service;
+
+import cc.mrbird.febs.mall.dto.AddCartDto;
+import cc.mrbird.febs.mall.entity.MallShoppingCart;
+import cc.mrbird.febs.mall.vo.ShoppingCartGoodsVo;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+/**
+ * @author wzy
+ * @date 2021-09-17
+ **/
+public interface IApiMallShoppingCartService extends IService<MallShoppingCart> {
+
+    List<ShoppingCartGoodsVo> findCartGoodsList();
+
+    void addGoodsToCart(AddCartDto addCartDto);
+
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallAddressInfoServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallAddressInfoServiceImpl.java
new file mode 100644
index 0000000..1a42e2e
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallAddressInfoServiceImpl.java
@@ -0,0 +1,88 @@
+package cc.mrbird.febs.mall.service.impl;
+
+import cc.mrbird.febs.common.exception.FebsException;
+import cc.mrbird.febs.common.utils.LoginUserUtil;
+import cc.mrbird.febs.mall.conversion.MallAddressInfoConversion;
+import cc.mrbird.febs.mall.dto.AddressInfoDto;
+import cc.mrbird.febs.mall.entity.MallAddressInfo;
+import cc.mrbird.febs.mall.entity.MallMember;
+import cc.mrbird.febs.mall.mapper.MallAddressInfoMapper;
+import cc.mrbird.febs.mall.service.IApiMallAddressInfoService;
+import cc.mrbird.febs.mall.vo.AddressInfoVo;
+import cn.hutool.core.collection.CollUtil;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author wzy
+ * @date 2021-09-18
+ **/
+@Slf4j
+@Service
+@RequiredArgsConstructor
+public class ApiMallAddressInfoServiceImpl extends ServiceImpl<MallAddressInfoMapper, MallAddressInfo> implements IApiMallAddressInfoService {
+
+    @Override
+    public List<AddressInfoVo> findAddressInfoList() {
+        Long memberId = LoginUserUtil.getLoginUser().getId();
+        List<MallAddressInfo> addressInfos = this.baseMapper.selectAddressInfoListByMemberId(memberId);
+
+        return MallAddressInfoConversion.INSTANCE.entityListToVos(addressInfos);
+    }
+
+    @Override
+    public void addAddress(AddressInfoDto addressInfoDto) {
+        MallAddressInfo addressInfo = MallAddressInfoConversion.INSTANCE.dtoToEntity(addressInfoDto);
+
+        MallMember member = LoginUserUtil.getLoginUser();
+        Long memberId = member.getId();
+        List<MallAddressInfo> existAddress = this.baseMapper.selectList(null);
+        if (CollUtil.isEmpty(existAddress)) {
+            addressInfo.setIsDefault(MallAddressInfo.IS_DEFAULT_Y);
+        } else {
+            if (MallAddressInfo.IS_DEFAULT_Y.equals(addressInfoDto.getIsDefault())) {
+                this.baseMapper.updateIsDefault(MallAddressInfo.IS_DEFAULT_N, memberId, null);
+            }
+        }
+
+        addressInfo.setMemberId(memberId);
+        addressInfo.setCreatedBy(member.getPhone());
+        addressInfo.setUpdatedBy(member.getPhone());
+        this.baseMapper.insert(addressInfo);
+    }
+
+    @Override
+    public void modifyAddress(AddressInfoDto addressInfoDto) {
+        MallAddressInfo existAddress = this.baseMapper.selectById(addressInfoDto.getId());
+        if (existAddress == null) {
+            throw new FebsException("地址不存在");
+        }
+
+        Long memberId = LoginUserUtil.getLoginUser().getId();
+        MallAddressInfo addressInfo = MallAddressInfoConversion.INSTANCE.dtoToEntity(addressInfoDto);
+        if (MallAddressInfo.IS_DEFAULT_Y.equals(addressInfoDto.getIsDefault())) {
+            this.baseMapper.updateIsDefault(MallAddressInfo.IS_DEFAULT_N, memberId, null);
+        }
+
+        addressInfo.setUpdatedTime(new Date());
+        this.baseMapper.updateById(addressInfo);
+    }
+
+    @Override
+    public void setDefaultAddress(Long id) {
+        MallAddressInfo addressInfo = this.baseMapper.selectById(id);
+        if (addressInfo == null) {
+            throw new FebsException("地址不存在");
+        }
+
+        MallMember member = LoginUserUtil.getLoginUser();
+        this.baseMapper.updateIsDefault(MallAddressInfo.IS_DEFAULT_N, member.getId(), null);
+
+        this.baseMapper.updateIsDefault(MallAddressInfo.IS_DEFAULT_Y, member.getId(), id);
+    }
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallGoodsServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallGoodsServiceImpl.java
index 6a9f5a0..7471bf9 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallGoodsServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallGoodsServiceImpl.java
@@ -1,9 +1,14 @@
 package cc.mrbird.febs.mall.service.impl;
 
+import cc.mrbird.febs.common.exception.FebsException;
+import cc.mrbird.febs.mall.conversion.MallGoodsConversion;
+import cc.mrbird.febs.mall.conversion.MallMemberConversion;
 import cc.mrbird.febs.mall.dto.MallGoodsQueryDto;
 import cc.mrbird.febs.mall.entity.MallGoods;
+import cc.mrbird.febs.mall.mapper.MallGoodsImagesMapper;
 import cc.mrbird.febs.mall.mapper.MallGoodsMapper;
 import cc.mrbird.febs.mall.service.IApiMallGoodsService;
+import cc.mrbird.febs.mall.vo.MallGoodsDetailsVo;
 import cc.mrbird.febs.mall.vo.MallGoodsListVo;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -23,9 +28,23 @@
 @RequiredArgsConstructor
 public class ApiMallGoodsServiceImpl extends ServiceImpl<MallGoodsMapper, MallGoods> implements IApiMallGoodsService {
 
+    private final MallGoodsImagesMapper goodsImagesMapper;
+
     @Override
     public IPage<MallGoodsListVo> findMallGoodsListInPage(MallGoodsQueryDto queryDto) {
         Page<MallGoodsListVo> page = new Page<>(queryDto.getPageNow(), queryDto.getPageSize());
         return this.baseMapper.selectMallGoodsListQueryInPage(queryDto, page);
     }
+
+    @Override
+    public MallGoodsDetailsVo findMallGoodsDetailsById(Long id) {
+        MallGoods mallGoods = this.baseMapper.selectGoodsDetailById(id);
+        if (mallGoods == null) {
+            throw new FebsException("商品不存在");
+        }
+        List<String> images = goodsImagesMapper.selectGoodsImagesByGoodsId(mallGoods.getId());
+        MallGoodsDetailsVo mallGoodsDetailsVo = MallGoodsConversion.INSTANCE.entityToDetailsVo(mallGoods);
+        mallGoodsDetailsVo.setImages(images);
+        return mallGoodsDetailsVo;
+    }
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
new file mode 100644
index 0000000..41a6417
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
@@ -0,0 +1,19 @@
+package cc.mrbird.febs.mall.service.impl;
+
+import cc.mrbird.febs.mall.entity.MallOrderInfo;
+import cc.mrbird.febs.mall.mapper.MallOrderInfoMapper;
+import cc.mrbird.febs.mall.service.IApiMallOrderInfoService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author wzy
+ * @date 2021-09-18
+ **/
+@Slf4j
+@Service
+@RequiredArgsConstructor
+public class ApiMallOrderInfoServiceImpl extends ServiceImpl<MallOrderInfoMapper, MallOrderInfo> implements IApiMallOrderInfoService {
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallShoppingCartServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallShoppingCartServiceImpl.java
new file mode 100644
index 0000000..f6215dc
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallShoppingCartServiceImpl.java
@@ -0,0 +1,64 @@
+package cc.mrbird.febs.mall.service.impl;
+
+import cc.mrbird.febs.common.exception.FebsException;
+import cc.mrbird.febs.common.utils.LoginUserUtil;
+import cc.mrbird.febs.mall.conversion.MallShoppingCartConversion;
+import cc.mrbird.febs.mall.dto.AddCartDto;
+import cc.mrbird.febs.mall.entity.MallGoodsSku;
+import cc.mrbird.febs.mall.entity.MallShoppingCart;
+import cc.mrbird.febs.mall.mapper.MallGoodsSkuMapper;
+import cc.mrbird.febs.mall.mapper.MallShoppingCartMapper;
+import cc.mrbird.febs.mall.service.IApiMallShoppingCartService;
+import cc.mrbird.febs.mall.vo.ShoppingCartGoodsVo;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * @author wzy
+ * @date 2021-09-17
+ **/
+@Slf4j
+@Service
+@RequiredArgsConstructor
+public class ApiMallShoppingCartServiceImpl extends ServiceImpl<MallShoppingCartMapper, MallShoppingCart> implements IApiMallShoppingCartService {
+
+    private final MallGoodsSkuMapper mallGoodsSkuMapper;
+
+    @Override
+    public List<ShoppingCartGoodsVo> findCartGoodsList() {
+        Long memberId = LoginUserUtil.getLoginUser().getId();
+        List<MallShoppingCart> carts = this.baseMapper.selectCartGoodsList(memberId);
+
+        return MallShoppingCartConversion.INSTANCE.entityListToVoList(carts);
+    }
+
+    @Override
+    public void addGoodsToCart(AddCartDto addCartDto) {
+        MallGoodsSku sku = mallGoodsSkuMapper.selectById(addCartDto.getSkuId());
+
+        if (sku == null) {
+            throw new FebsException("sku不存在");
+        }
+
+        Long memberId = LoginUserUtil.getLoginUser().getId();
+
+        MallShoppingCart cartGoods = this.baseMapper.selectCartGoodsBySkuId(sku.getId(), memberId);
+        if (cartGoods == null) {
+            cartGoods = new MallShoppingCart();
+            cartGoods.setGoodsId(sku.getGoodsId());
+            cartGoods.setSkuId(sku.getId());
+            cartGoods.setStyleId(sku.getStyleId());
+            cartGoods.setCnt(addCartDto.getCnt());
+            cartGoods.setMemberId(memberId);
+
+            this.baseMapper.insert(cartGoods);
+        } else {
+            cartGoods.setCnt(cartGoods.getCnt() + addCartDto.getCnt());
+            this.baseMapper.updateById(cartGoods);
+        }
+    }
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/AddressInfoVo.java b/src/main/java/cc/mrbird/febs/mall/vo/AddressInfoVo.java
new file mode 100644
index 0000000..4983b1d
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/vo/AddressInfoVo.java
@@ -0,0 +1,32 @@
+package cc.mrbird.febs.mall.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author wzy
+ * @date 2021-09-18
+ **/
+@Data
+@ApiModel(value = "AddressInfoVo", description = "地址信息返回参数类")
+public class AddressInfoVo {
+
+    @ApiModelProperty(value = "id")
+    private String id;
+
+    @ApiModelProperty(value = "姓名")
+    private String name;
+
+    @ApiModelProperty(value = "手机号")
+    private String phone;
+
+    @ApiModelProperty(value = "地区")
+    private String area;
+
+    @ApiModelProperty(value = "地址")
+    private String address;
+
+    @ApiModelProperty(value = "是否默认地址 1-是 2-否")
+    private Integer isDefault;
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/GoodsDetailsSkuVo.java b/src/main/java/cc/mrbird/febs/mall/vo/GoodsDetailsSkuVo.java
new file mode 100644
index 0000000..4479aa1
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/vo/GoodsDetailsSkuVo.java
@@ -0,0 +1,37 @@
+package cc.mrbird.febs.mall.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @author wzy
+ * @date 2021-09-17
+ **/
+@Data
+@ApiModel(value = "GoodsDetailsSkuVo", description = "商品详情sku返回参数类")
+public class GoodsDetailsSkuVo {
+
+    @ApiModelProperty(value = "id")
+    private Long id;
+
+    @ApiModelProperty(value = "sku名称")
+    private String skuName;
+
+    @ApiModelProperty(value = "sku图片")
+    private String skuImage;
+
+    @ApiModelProperty(value = "库存")
+    private Integer stock;
+
+    @ApiModelProperty(value = "销量")
+    private Integer skuVolume;
+
+    @ApiModelProperty(value = "原价")
+    private BigDecimal originalPrice;
+
+    @ApiModelProperty(value = "现价")
+    private BigDecimal presentPrice;
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/GoodsDetailsStyleVo.java b/src/main/java/cc/mrbird/febs/mall/vo/GoodsDetailsStyleVo.java
new file mode 100644
index 0000000..05550e8
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/vo/GoodsDetailsStyleVo.java
@@ -0,0 +1,25 @@
+package cc.mrbird.febs.mall.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author wzy
+ * @date 2021-09-17
+ **/
+@Data
+@ApiModel(value = "GoodsDetailsStyleVo", description = "商品详情样式返回参数类")
+public class GoodsDetailsStyleVo {
+
+    @ApiModelProperty(value = "id")
+    private String id;
+
+    @ApiModelProperty(value = "样式名称")
+    private String name;
+
+    @ApiModelProperty(value = "sku")
+    private List<GoodsDetailsSkuVo> skus;
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/MallGoodsDetailsVo.java b/src/main/java/cc/mrbird/febs/mall/vo/MallGoodsDetailsVo.java
new file mode 100644
index 0000000..f94ff77
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/vo/MallGoodsDetailsVo.java
@@ -0,0 +1,46 @@
+package cc.mrbird.febs.mall.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author wzy
+ * @date 2021-09-17
+ **/
+@Data
+@ApiModel(value = "MallGoodsDetailsVo", description = "商品详情返回参数类")
+public class MallGoodsDetailsVo {
+
+    @ApiModelProperty(value = "id")
+    private Long id;
+
+    @ApiModelProperty(value = "商品编号")
+    private String goodsNo;
+
+    @ApiModelProperty(value = "商品名称")
+    private String goodsName;
+
+    @ApiModelProperty(value = "商品介绍")
+    private String goodsIntrodution;
+
+    @ApiModelProperty(value = "商品详情")
+    private String goodsDetails;
+
+    @ApiModelProperty(value = "原价")
+    private String originalPrice;
+
+    @ApiModelProperty(value = "现价")
+    private String presentPrice;
+
+    @ApiModelProperty(value = "是否上架 1-上架 2-下架")
+    private Integer isSale;
+
+    @ApiModelProperty(value = "轮播图")
+    private List<String> images;
+
+    @ApiModelProperty(value = "样式")
+    private List<GoodsDetailsStyleVo> styles;
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/ShoppingCartGoodsVo.java b/src/main/java/cc/mrbird/febs/mall/vo/ShoppingCartGoodsVo.java
new file mode 100644
index 0000000..01a4f82
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/vo/ShoppingCartGoodsVo.java
@@ -0,0 +1,27 @@
+package cc.mrbird.febs.mall.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author wzy
+ * @date 2021-09-17
+ **/
+@Data
+@ApiModel(value = "ShoppingCartGoodsVo", description = "购物车返回参数类")
+public class ShoppingCartGoodsVo {
+
+    @ApiModelProperty(value = "id")
+    private Long id;
+
+    @ApiModelProperty(value = "数量")
+    private Integer cnt;
+
+    @ApiModelProperty(value = "商品详情 若该字段为null则提示商品已删除")
+    private MallGoodsDetailsVo goods;
+
+    @ApiModelProperty(value = "sku信息 若该字段为null则提示sku已删除")
+    private GoodsDetailsSkuVo sku;
+
+}
diff --git a/src/main/resources/mapper/modules/MallAddressInfoMapper.xml b/src/main/resources/mapper/modules/MallAddressInfoMapper.xml
new file mode 100644
index 0000000..c464d62
--- /dev/null
+++ b/src/main/resources/mapper/modules/MallAddressInfoMapper.xml
@@ -0,0 +1,19 @@
+<?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="cc.mrbird.febs.mall.mapper.MallAddressInfoMapper">
+
+    <select id="selectAddressInfoListByMemberId" resultType="cc.mrbird.febs.mall.entity.MallAddressInfo">
+        select * from mall_address_info
+        where member_id=#{memberId}
+        order by is_default asc, created_time desc
+    </select>
+
+    <update id="updateIsDefault">
+        update mall_address_info
+        set is_default=#{isDefault}
+        where member_id=#{memberId}
+        <if test="id != null">
+            and id=#{id}
+        </if>
+    </update>
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/modules/MallGoodsImagesMapper.xml b/src/main/resources/mapper/modules/MallGoodsImagesMapper.xml
new file mode 100644
index 0000000..6b3049e
--- /dev/null
+++ b/src/main/resources/mapper/modules/MallGoodsImagesMapper.xml
@@ -0,0 +1,8 @@
+<?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="cc.mrbird.febs.mall.mapper.MallGoodsImagesMapper">
+
+    <select id="selectGoodsImagesByGoodsId" resultType="java.lang.String">
+        select image_url from mall_goods_images where goods_id=#{goodsId}
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/modules/MallGoodsMapper.xml b/src/main/resources/mapper/modules/MallGoodsMapper.xml
index a745732..39bc47b 100644
--- a/src/main/resources/mapper/modules/MallGoodsMapper.xml
+++ b/src/main/resources/mapper/modules/MallGoodsMapper.xml
@@ -2,6 +2,57 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="cc.mrbird.febs.mall.mapper.MallGoodsMapper">
 
+    <resultMap id="MallGoodsMap" type="cc.mrbird.febs.mall.entity.MallGoods">
+        <id property="id" column="id" />
+        <result property="goodsNo" column="goods_no" />
+        <result property="goodsName" column="goods_name" />
+        <result property="goodsIntrodution" column="goods_introdution" />
+        <result property="unit" column="unit" />
+        <result property="thumb" column="thumb" />
+        <result property="goodsDetails" column="goods_details" />
+        <result property="isSale" column="is_sale" />
+        <result property="originalPrice" column="original_price" />
+        <result property="presentPrice" column="present_price" />
+        <result property="categoryId" column="category_id" />
+        <collection property="styles" ofType="cc.mrbird.febs.mall.entity.MallGoodsStyle">
+            <id property="id" column="style_id" />
+            <result property="name" column="style_name" />
+            <result property="goodsId" column="style_goods_id" />
+            <collection property="skus" ofType="cc.mrbird.febs.mall.entity.MallGoodsSku">
+                <id property="id" column="sku_id" />
+                <result property="skuName" column="sku_name" />
+                <result property="skuImage" column="sku_image" />
+                <result property="stock" column="stock" />
+                <result property="skuVolume" column="sku_volume" />
+                <result property="originalPrice" column="sku_original_price" />
+                <result property="presentPrice" column="sku_present_price" />
+                <result property="styleId" column="sku_style_id"/>
+                <result property="goodsId" column="sku_goods_id" />
+            </collection>
+        </collection>
+    </resultMap>
+
+    <select id="selectGoodsDetailById" resultMap="MallGoodsMap">
+        select
+            a.*,
+            b.id style_id,
+            b.name style_name,
+            b.goods_id style_goods_id,
+            c.id sku_id,
+            c.sku_name,
+            c.sku_image,
+            c.stock,
+            c.sku_volume,
+            c.original_price sku_original_price,
+            c.present_price sku_present_price,
+            c.style_id sku_style_id,
+            c.goods_id sku_goods_id
+        from mall_goods a
+          inner join mall_goods_style b on a.id = b.goods_id
+          inner join mall_goods_sku c on b.id=c.style_id
+        where a.id=#{id}
+    </select>
+
     <select id="selectMallGoodsListQueryInPage" resultType="cc.mrbird.febs.mall.vo.MallGoodsListVo">
         select
             a.id,
diff --git a/src/main/resources/mapper/modules/MallGoodsSkuMapper.xml b/src/main/resources/mapper/modules/MallGoodsSkuMapper.xml
new file mode 100644
index 0000000..176ea27
--- /dev/null
+++ b/src/main/resources/mapper/modules/MallGoodsSkuMapper.xml
@@ -0,0 +1,9 @@
+<?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="cc.mrbird.febs.mall.mapper.MallGoodsSkuMapper">
+
+
+    <select id="selectSkuInfoById" resultType="cc.mrbird.febs.mall.entity.MallGoodsSku">
+        select * from mall_goods_sku where id=#{id}
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/modules/MallMoneyFlowMapper.xml b/src/main/resources/mapper/modules/MallMoneyFlowMapper.xml
new file mode 100644
index 0000000..9d3fa8b
--- /dev/null
+++ b/src/main/resources/mapper/modules/MallMoneyFlowMapper.xml
@@ -0,0 +1,5 @@
+<?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="cc.mrbird.febs.mall.mapper.MallMoneyFlowMapper">
+
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/modules/MallOrderInfoMapper.xml b/src/main/resources/mapper/modules/MallOrderInfoMapper.xml
new file mode 100644
index 0000000..bd39908
--- /dev/null
+++ b/src/main/resources/mapper/modules/MallOrderInfoMapper.xml
@@ -0,0 +1,5 @@
+<?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="cc.mrbird.febs.mall.mapper.MallOrderInfoMapper">
+
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/modules/MallOrderItemMapper.xml b/src/main/resources/mapper/modules/MallOrderItemMapper.xml
new file mode 100644
index 0000000..ca78766
--- /dev/null
+++ b/src/main/resources/mapper/modules/MallOrderItemMapper.xml
@@ -0,0 +1,5 @@
+<?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="cc.mrbird.febs.mall.mapper.MallOrderItemMapper">
+
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/modules/MallShoppingCartMapper.xml b/src/main/resources/mapper/modules/MallShoppingCartMapper.xml
new file mode 100644
index 0000000..1dd5d8d
--- /dev/null
+++ b/src/main/resources/mapper/modules/MallShoppingCartMapper.xml
@@ -0,0 +1,23 @@
+<?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="cc.mrbird.febs.mall.mapper.MallShoppingCartMapper">
+
+    <resultMap id="ShoppingCartMap" type="cc.mrbird.febs.mall.entity.MallShoppingCart">
+        <id property="id" column="id" />
+        <result property="goodsId" column="goods_id" />
+        <result property="styleId" column="style_id" />
+        <result property="skuId" column="sku_id" />
+        <result property="cnt" column="cnt" />
+        <association property="goods" select="cc.mrbird.febs.mall.mapper.MallGoodsMapper.selectGoodsDetailById" column="{id=goods_id}"></association>
+        <association property="sku" select="cc.mrbird.febs.mall.mapper.MallGoodsSkuMapper.selectSkuInfoById" column="{id=sku_id}"></association>
+    </resultMap>
+    
+    <select id="selectCartGoodsList" resultMap="ShoppingCartMap">
+        select * from mall_shopping_cart where member_id=#{memberId}
+    </select>
+
+    <select id="selectCartGoodsBySkuId" resultType="cc.mrbird.febs.mall.entity.MallShoppingCart">
+        select * from mall_shopping_cart
+        where member_id=#{memberId} and sku_id=#{skuId}
+    </select>
+</mapper>
\ No newline at end of file

--
Gitblit v1.9.1