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> sql/xc_mall.sql
New file @@ -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 = '用户地址'; 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; src/main/java/cc/mrbird/febs/mall/controller/ApiMallAddressInfoController.java
New file @@ -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("设置成功"); } } 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)); } } src/main/java/cc/mrbird/febs/mall/controller/ApiMallOrderController.java
New file @@ -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; } } src/main/java/cc/mrbird/febs/mall/controller/ApiMallShoppingCartController.java
New file @@ -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("删除成功"); } } src/main/java/cc/mrbird/febs/mall/conversion/MallAddressInfoConversion.java
New file @@ -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); } src/main/java/cc/mrbird/febs/mall/conversion/MallGoodsConversion.java
New file @@ -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); } src/main/java/cc/mrbird/febs/mall/conversion/MallGoodsSkuConversion.java
New file @@ -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); } src/main/java/cc/mrbird/febs/mall/conversion/MallGoodsStyleConversion.java
New file @@ -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); } src/main/java/cc/mrbird/febs/mall/conversion/MallShoppingCartConversion.java
New file @@ -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); } src/main/java/cc/mrbird/febs/mall/dto/AddCartDto.java
New file @@ -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; } src/main/java/cc/mrbird/febs/mall/dto/AddOrderDto.java
New file @@ -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; } src/main/java/cc/mrbird/febs/mall/dto/AddressInfoDto.java
New file @@ -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; } src/main/java/cc/mrbird/febs/mall/entity/MallAddressInfo.java
New file @@ -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; } 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; } 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; } src/main/java/cc/mrbird/febs/mall/entity/MallMoneyFlow.java
New file @@ -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; } src/main/java/cc/mrbird/febs/mall/entity/MallOrderInfo.java
New file @@ -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; } src/main/java/cc/mrbird/febs/mall/entity/MallOrderItem.java
New file @@ -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; } src/main/java/cc/mrbird/febs/mall/entity/MallShoppingCart.java
New file @@ -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; } src/main/java/cc/mrbird/febs/mall/mapper/MallAddressInfoMapper.java
New file @@ -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); } 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); } 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); src/main/java/cc/mrbird/febs/mall/mapper/MallMoneyFlowMapper.java
New file @@ -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> { } src/main/java/cc/mrbird/febs/mall/mapper/MallOrderInfoMapper.java
New file @@ -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> { } src/main/java/cc/mrbird/febs/mall/mapper/MallOrderItemMapper.java
New file @@ -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> { } src/main/java/cc/mrbird/febs/mall/mapper/MallShoppingCartMapper.java
New file @@ -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); } src/main/java/cc/mrbird/febs/mall/service/IApiMallAddressInfoService.java
New file @@ -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); } 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); } src/main/java/cc/mrbird/febs/mall/service/IApiMallOrderInfoService.java
New file @@ -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> { } src/main/java/cc/mrbird/febs/mall/service/IApiMallShoppingCartService.java
New file @@ -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); } src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallAddressInfoServiceImpl.java
New file @@ -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); } } 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; } } src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
New file @@ -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 { } src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallShoppingCartServiceImpl.java
New file @@ -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); } } } src/main/java/cc/mrbird/febs/mall/vo/AddressInfoVo.java
New file @@ -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; } src/main/java/cc/mrbird/febs/mall/vo/GoodsDetailsSkuVo.java
New file @@ -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; } src/main/java/cc/mrbird/febs/mall/vo/GoodsDetailsStyleVo.java
New file @@ -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; } src/main/java/cc/mrbird/febs/mall/vo/MallGoodsDetailsVo.java
New file @@ -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; } src/main/java/cc/mrbird/febs/mall/vo/ShoppingCartGoodsVo.java
New file @@ -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; } src/main/resources/mapper/modules/MallAddressInfoMapper.xml
New file @@ -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> src/main/resources/mapper/modules/MallGoodsImagesMapper.xml
New file @@ -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> 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, src/main/resources/mapper/modules/MallGoodsSkuMapper.xml
New file @@ -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> src/main/resources/mapper/modules/MallMoneyFlowMapper.xml
New file @@ -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> src/main/resources/mapper/modules/MallOrderInfoMapper.xml
New file @@ -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> src/main/resources/mapper/modules/MallOrderItemMapper.xml
New file @@ -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> src/main/resources/mapper/modules/MallShoppingCartMapper.xml
New file @@ -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>