+ * 订单详情表 + *
+ * + * @author 虎哥 + * @since 2023-05-05 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("cart") +public class Cart implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 购物车条目id + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 用户id + */ + private Long userId; + + /** + * sku商品id + */ + private Long itemId; + + /** + * 购买数量 + */ + private Integer num; + + /** + * 商品标题 + */ + private String name; + + /** + * 商品动态属性键值集 + */ + private String spec; + + /** + * 价格,单位:分 + */ + private Integer price; + + /** + * 商品图片 + */ + private String image; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 更新时间 + */ + private LocalDateTime updateTime; + + +} diff --git a/cart-service/src/main/java/com/hmall/cart/domain/vo/CartVO.java b/cart-service/src/main/java/com/hmall/cart/domain/vo/CartVO.java new file mode 100644 index 0000000..27ce1e3 --- /dev/null +++ b/cart-service/src/main/java/com/hmall/cart/domain/vo/CartVO.java @@ -0,0 +1,43 @@ +package com.hmall.cart.domain.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.time.LocalDateTime; + +/** + *+ * 订单详情表 + *
+ * + * @author 虎哥 + * @since 2023-05-05 + */ +@Data +@ApiModel(description = "购物车VO实体") +public class CartVO { + @ApiModelProperty("购物车条目id ") + private Long id; + @ApiModelProperty("sku商品id") + private Long itemId; + @ApiModelProperty("购买数量") + private Integer num; + @ApiModelProperty("商品标题") + private String name; + @ApiModelProperty("商品动态属性键值集") + private String spec; + @ApiModelProperty("价格,单位:分") + private Integer price; + @ApiModelProperty("商品最新价格") + private Integer newPrice; + @ApiModelProperty("商品最新状态") + private Integer status = 1; + @ApiModelProperty("商品最新库存") + private Integer stock = 10; + @ApiModelProperty("商品图片") + private String image; + @ApiModelProperty("创建时间") + private LocalDateTime createTime; + +} diff --git a/cart-service/src/main/java/com/hmall/cart/mapper/CartMapper.java b/cart-service/src/main/java/com/hmall/cart/mapper/CartMapper.java new file mode 100644 index 0000000..90cb68d --- /dev/null +++ b/cart-service/src/main/java/com/hmall/cart/mapper/CartMapper.java @@ -0,0 +1,21 @@ +package com.hmall.cart.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +import com.hmall.cart.domain.po.Cart; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Update; + +/** + *+ * 订单详情表 Mapper 接口 + *
+ * + * @author 虎哥 + * @since 2023-05-05 + */ +public interface CartMapper extends BaseMapper+ * 订单详情表 服务类 + *
+ * + * @author 虎哥 + * @since 2023-05-05 + */ +public interface ICartService extends IService+ * 订单详情表 服务实现类 + *
+ * + * @author 虎哥 + * @since 2023-05-05 + */ +@Service +@RequiredArgsConstructor +public class CartServiceImpl extends ServiceImpl+ * 前端控制器 + *
+ * + * @author 虎哥 + */ +@RestController +@RequestMapping("/addresses") +@RequiredArgsConstructor +@Api(tags = "收货地址管理接口") +public class AddressController { + + private final IAddressService addressService; + + @ApiOperation("根据id查询地址") + @GetMapping("{addressId}") + public AddressDTO findAddressById(@ApiParam("地址id") @PathVariable("addressId") Long id) { + // 1.根据id查询 + Address address = addressService.getById(id); + // 2.判断当前用户 + Long userId = UserContext.getUser(); + if(!address.getUserId().equals(userId)){ + throw new BadRequestException("地址不属于当前登录用户"); + } + return BeanUtils.copyBean(address, AddressDTO.class); + } + @ApiOperation("查询当前用户地址列表") + @GetMapping + public List+ * + *
+ * + * @author 虎哥 + * @since 2023-05-05 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("address") +public class Address implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 用户ID + */ + private Long userId; + + /** + * 省 + */ + private String province; + + /** + * 市 + */ + private String city; + + /** + * 县/区 + */ + private String town; + + /** + * 手机 + */ + private String mobile; + + /** + * 详细地址 + */ + private String street; + + /** + * 联系人 + */ + private String contact; + + /** + * 是否是默认 1默认 0否 + */ + private Integer isDefault; + + /** + * 备注 + */ + private String notes; + + +} diff --git a/hm-service/src/main/java/com/hmall/domain/po/Cart.java b/hm-service/src/main/java/com/hmall/domain/po/Cart.java new file mode 100644 index 0000000..a9aaf61 --- /dev/null +++ b/hm-service/src/main/java/com/hmall/domain/po/Cart.java @@ -0,0 +1,80 @@ +package com.hmall.domain.po; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalDateTime; +import java.io.Serializable; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + *+ * 订单详情表 + *
+ * + * @author 虎哥 + * @since 2023-05-05 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("cart") +public class Cart implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 购物车条目id + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 用户id + */ + private Long userId; + + /** + * sku商品id + */ + private Long itemId; + + /** + * 购买数量 + */ + private Integer num; + + /** + * 商品标题 + */ + private String name; + + /** + * 商品动态属性键值集 + */ + private String spec; + + /** + * 价格,单位:分 + */ + private Integer price; + + /** + * 商品图片 + */ + private String image; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 更新时间 + */ + private LocalDateTime updateTime; + + +} diff --git a/hm-service/src/main/java/com/hmall/domain/po/Item.java b/hm-service/src/main/java/com/hmall/domain/po/Item.java new file mode 100644 index 0000000..af468f9 --- /dev/null +++ b/hm-service/src/main/java/com/hmall/domain/po/Item.java @@ -0,0 +1,113 @@ +package com.hmall.domain.po; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *+ * 商品表 + *
+ * + * @author 虎哥 + * @since 2023-05-05 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("item") +public class Item implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 商品id + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * SKU名称 + */ + private String name; + + /** + * 价格(分) + */ + private Integer price; + + /** + * 库存数量 + */ + private Integer stock; + + /** + * 商品图片 + */ + private String image; + + /** + * 类目名称 + */ + private String category; + + /** + * 品牌名称 + */ + private String brand; + + /** + * 规格 + */ + private String spec; + + /** + * 销量 + */ + private Integer sold; + + /** + * 评论数 + */ + private Integer commentCount; + + /** + * 是否是推广广告,true/false + */ + @TableField("isAD") + private Boolean isAD; + + /** + * 商品状态 1-正常,2-下架,3-删除 + */ + private Integer status; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 更新时间 + */ + private LocalDateTime updateTime; + + /** + * 创建人 + */ + private Long creater; + + /** + * 修改人 + */ + private Long updater; + + +} diff --git a/hm-service/src/main/java/com/hmall/domain/po/Order.java b/hm-service/src/main/java/com/hmall/domain/po/Order.java new file mode 100644 index 0000000..cc86949 --- /dev/null +++ b/hm-service/src/main/java/com/hmall/domain/po/Order.java @@ -0,0 +1,91 @@ +package com.hmall.domain.po; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *+ * + *
+ * + * @author 虎哥 + * @since 2023-05-05 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("`order`") +public class Order implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 订单id + */ + @TableId(value = "id", type = IdType.ASSIGN_ID) + private Long id; + + /** + * 总金额,单位为分 + */ + private Integer totalFee; + + /** + * 支付类型,1、支付宝,2、微信,3、扣减余额 + */ + private Integer paymentType; + + /** + * 用户id + */ + private Long userId; + + /** + * 订单的状态,1、未付款 2、已付款,未发货 3、已发货,未确认 4、确认收货,交易成功 5、交易取消,订单关闭 6、交易结束,已评价 + */ + private Integer status; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 支付时间 + */ + private LocalDateTime payTime; + + /** + * 发货时间 + */ + private LocalDateTime consignTime; + + /** + * 交易完成时间 + */ + private LocalDateTime endTime; + + /** + * 交易关闭时间 + */ + private LocalDateTime closeTime; + + /** + * 评价时间 + */ + private LocalDateTime commentTime; + + /** + * 更新时间 + */ + private LocalDateTime updateTime; + + +} diff --git a/hm-service/src/main/java/com/hmall/domain/po/OrderDetail.java b/hm-service/src/main/java/com/hmall/domain/po/OrderDetail.java new file mode 100644 index 0000000..1ff6808 --- /dev/null +++ b/hm-service/src/main/java/com/hmall/domain/po/OrderDetail.java @@ -0,0 +1,80 @@ +package com.hmall.domain.po; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalDateTime; +import java.io.Serializable; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + *+ * 订单详情表 + *
+ * + * @author 虎哥 + * @since 2023-05-05 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("order_detail") +public class OrderDetail implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 订单详情id + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 订单id + */ + private Long orderId; + + /** + * sku商品id + */ + private Long itemId; + + /** + * 购买数量 + */ + private Integer num; + + /** + * 商品标题 + */ + private String name; + + /** + * 商品动态属性键值集 + */ + private String spec; + + /** + * 价格,单位:分 + */ + private Integer price; + + /** + * 商品图片 + */ + private String image; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 更新时间 + */ + private LocalDateTime updateTime; + + +} diff --git a/hm-service/src/main/java/com/hmall/domain/po/OrderLogistics.java b/hm-service/src/main/java/com/hmall/domain/po/OrderLogistics.java new file mode 100644 index 0000000..790b7f7 --- /dev/null +++ b/hm-service/src/main/java/com/hmall/domain/po/OrderLogistics.java @@ -0,0 +1,86 @@ +package com.hmall.domain.po; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *+ * + *
+ * + * @author 虎哥 + * @since 2023-05-05 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("order_logistics") +public class OrderLogistics implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 订单id,与订单表一对一 + */ + @TableId(value = "order_id", type = IdType.INPUT) + private Long orderId; + + /** + * 物流单号 + */ + private String logisticsNumber; + + /** + * 物流公司名称 + */ + private String logisticsCompany; + + /** + * 收件人 + */ + private String contact; + + /** + * 收件人手机号码 + */ + private String mobile; + + /** + * 省 + */ + private String province; + + /** + * 市 + */ + private String city; + + /** + * 区 + */ + private String town; + + /** + * 街道 + */ + private String street; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 更新时间 + */ + private LocalDateTime updateTime; + + +} diff --git a/hm-service/src/main/java/com/hmall/domain/po/PayOrder.java b/hm-service/src/main/java/com/hmall/domain/po/PayOrder.java new file mode 100644 index 0000000..7e8f40d --- /dev/null +++ b/hm-service/src/main/java/com/hmall/domain/po/PayOrder.java @@ -0,0 +1,123 @@ +package com.hmall.domain.po; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *+ * 支付订单 + *
+ */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("pay_order") +public class PayOrder implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * id + */ + @TableId(value = "id", type = IdType.ASSIGN_ID) + private Long id; + + /** + * 业务订单号 + */ + private Long bizOrderNo; + + /** + * 支付单号 + */ + private Long payOrderNo; + + /** + * 支付用户id + */ + private Long bizUserId; + + /** + * 支付渠道编码 + */ + private String payChannelCode; + + /** + * 支付金额,单位分 + */ + private Integer amount; + + /** + * 支付类型,1:h5,2:小程序,3:公众号,4:扫码,5:余额支付 + */ + private Integer payType; + + /** + * 支付状态,0:待提交,1:待支付,2:支付超时或取消,3:支付成功 + */ + private Integer status; + + /** + * 拓展字段,用于传递不同渠道单独处理的字段 + */ + private String expandJson; + + /** + * 第三方返回业务码 + */ + private String resultCode; + + /** + * 第三方返回提示信息 + */ + private String resultMsg; + + /** + * 支付成功时间 + */ + private LocalDateTime paySuccessTime; + + /** + * 支付超时时间 + */ + private LocalDateTime payOverTime; + + /** + * 支付二维码链接 + */ + private String qrCodeUrl; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 更新时间 + */ + private LocalDateTime updateTime; + + /** + * 创建人 + */ + private Long creater; + + /** + * 更新人 + */ + private Long updater; + + /** + * 逻辑删除 + */ + private Boolean isDelete; + + +} diff --git a/hm-service/src/main/java/com/hmall/domain/po/User.java b/hm-service/src/main/java/com/hmall/domain/po/User.java new file mode 100644 index 0000000..d45f74f --- /dev/null +++ b/hm-service/src/main/java/com/hmall/domain/po/User.java @@ -0,0 +1,66 @@ +package com.hmall.domain.po; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.hmall.enums.UserStatus; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *+ * 用户表 + *
+ * + * @author 虎哥 + * @since 2023-05-05 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("user") +public class User implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 用户名 + */ + private String username; + + /** + * 密码,加密存储 + */ + private String password; + + /** + * 注册手机号 + */ + private String phone; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + private LocalDateTime updateTime; + + /** + * 使用状态(1正常 2冻结) + */ + private UserStatus status; + + /** + * 账户余额 + */ + private Integer balance; + + +} diff --git a/hm-service/src/main/java/com/hmall/domain/query/ItemPageQuery.java b/hm-service/src/main/java/com/hmall/domain/query/ItemPageQuery.java new file mode 100644 index 0000000..852e643 --- /dev/null +++ b/hm-service/src/main/java/com/hmall/domain/query/ItemPageQuery.java @@ -0,0 +1,23 @@ +package com.hmall.domain.query; + +import com.hmall.common.domain.PageQuery; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +@ApiModel(description = "商品分页查询条件") +public class ItemPageQuery extends PageQuery { + @ApiModelProperty("搜索关键字") + private String key; + @ApiModelProperty("商品分类") + private String category; + @ApiModelProperty("商品品牌") + private String brand; + @ApiModelProperty("价格最小值") + private Integer minPrice; + @ApiModelProperty("价格最大值") + private Integer maxPrice; +} diff --git a/hm-service/src/main/java/com/hmall/domain/vo/CartVO.java b/hm-service/src/main/java/com/hmall/domain/vo/CartVO.java new file mode 100644 index 0000000..3247323 --- /dev/null +++ b/hm-service/src/main/java/com/hmall/domain/vo/CartVO.java @@ -0,0 +1,43 @@ +package com.hmall.domain.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.time.LocalDateTime; + +/** + *+ * 订单详情表 + *
+ * + * @author 虎哥 + * @since 2023-05-05 + */ +@Data +@ApiModel(description = "购物车VO实体") +public class CartVO { + @ApiModelProperty("购物车条目id ") + private Long id; + @ApiModelProperty("sku商品id") + private Long itemId; + @ApiModelProperty("购买数量") + private Integer num; + @ApiModelProperty("商品标题") + private String name; + @ApiModelProperty("商品动态属性键值集") + private String spec; + @ApiModelProperty("价格,单位:分") + private Integer price; + @ApiModelProperty("商品最新价格") + private Integer newPrice; + @ApiModelProperty("商品最新状态") + private Integer status = 1; + @ApiModelProperty("商品最新库存") + private Integer stock = 10; + @ApiModelProperty("商品图片") + private String image; + @ApiModelProperty("创建时间") + private LocalDateTime createTime; + +} diff --git a/hm-service/src/main/java/com/hmall/domain/vo/OrderVO.java b/hm-service/src/main/java/com/hmall/domain/vo/OrderVO.java new file mode 100644 index 0000000..e4a5ba4 --- /dev/null +++ b/hm-service/src/main/java/com/hmall/domain/vo/OrderVO.java @@ -0,0 +1,34 @@ +package com.hmall.domain.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.time.LocalDateTime; + +@Data +@ApiModel(description = "订单页面VO") +public class OrderVO { + @ApiModelProperty("订单id") + private Long id; + @ApiModelProperty("总金额,单位为分") + private Integer totalFee; + @ApiModelProperty("支付类型,1、支付宝,2、微信,3、扣减余额") + private Integer paymentType; + @ApiModelProperty("用户id") + private Long userId; + @ApiModelProperty("订单的状态,1、未付款 2、已付款,未发货 3、已发货,未确认 4、确认收货,交易成功 5、交易取消,订单关闭 6、交易结束,已评价") + private Integer status; + @ApiModelProperty("创建时间") + private LocalDateTime createTime; + @ApiModelProperty("支付时间") + private LocalDateTime payTime; + @ApiModelProperty("发货时间") + private LocalDateTime consignTime; + @ApiModelProperty("交易完成时间") + private LocalDateTime endTime; + @ApiModelProperty("交易关闭时间") + private LocalDateTime closeTime; + @ApiModelProperty("评价时间") + private LocalDateTime commentTime; +} diff --git a/hm-service/src/main/java/com/hmall/domain/vo/PayOrderVO.java b/hm-service/src/main/java/com/hmall/domain/vo/PayOrderVO.java new file mode 100644 index 0000000..c577a55 --- /dev/null +++ b/hm-service/src/main/java/com/hmall/domain/vo/PayOrderVO.java @@ -0,0 +1,49 @@ +package com.hmall.domain.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.time.LocalDateTime; + +/** + *+ * 支付订单 + *
+ */ +@Data +@ApiModel(description = "支付单vo实体") +public class PayOrderVO { + @ApiModelProperty("id") + private Long id; + @ApiModelProperty("业务订单号") + private Long bizOrderNo; + @ApiModelProperty("支付单号") + private Long payOrderNo; + @ApiModelProperty("支付用户id") + private Long bizUserId; + @ApiModelProperty("支付渠道编码") + private String payChannelCode; + @ApiModelProperty("支付金额,单位分") + private Integer amount; + @ApiModelProperty("付类型,1:h5,2:小程序,3:公众号,4:扫码,5:余额支付") + private Integer payType; + @ApiModelProperty("付状态,0:待提交,1:待支付,2:支付超时或取消,3:支付成功") + private Integer status; + @ApiModelProperty("拓展字段,用于传递不同渠道单独处理的字段") + private String expandJson; + @ApiModelProperty("第三方返回业务码") + private String resultCode; + @ApiModelProperty("第三方返回提示信息") + private String resultMsg; + @ApiModelProperty("支付成功时间") + private LocalDateTime paySuccessTime; + @ApiModelProperty("支付超时时间") + private LocalDateTime payOverTime; + @ApiModelProperty("支付二维码链接") + private String qrCodeUrl; + @ApiModelProperty("创建时间") + private LocalDateTime createTime; + @ApiModelProperty("更新时间") + private LocalDateTime updateTime; +} diff --git a/hm-service/src/main/java/com/hmall/domain/vo/UserLoginVO.java b/hm-service/src/main/java/com/hmall/domain/vo/UserLoginVO.java new file mode 100644 index 0000000..563a664 --- /dev/null +++ b/hm-service/src/main/java/com/hmall/domain/vo/UserLoginVO.java @@ -0,0 +1,11 @@ +package com.hmall.domain.vo; + +import lombok.Data; + +@Data +public class UserLoginVO { + private String token; + private Long userId; + private String username; + private Integer balance; +} diff --git a/hm-service/src/main/java/com/hmall/enums/PayChannel.java b/hm-service/src/main/java/com/hmall/enums/PayChannel.java new file mode 100644 index 0000000..a0e5f14 --- /dev/null +++ b/hm-service/src/main/java/com/hmall/enums/PayChannel.java @@ -0,0 +1,25 @@ +package com.hmall.enums; + +import cn.hutool.core.util.StrUtil; +import lombok.Getter; + +@Getter +public enum PayChannel { + wxPay("微信支付"), + aliPay("支付宝支付"), + balance("余额支付"), + ; + + private final String desc; + + PayChannel(String desc) { + this.desc = desc; + } + + public static String desc(String value){ + if (StrUtil.isBlank(value)) { + return ""; + } + return PayChannel.valueOf(value).getDesc(); + } +} diff --git a/hm-service/src/main/java/com/hmall/enums/PayStatus.java b/hm-service/src/main/java/com/hmall/enums/PayStatus.java new file mode 100644 index 0000000..9540d4f --- /dev/null +++ b/hm-service/src/main/java/com/hmall/enums/PayStatus.java @@ -0,0 +1,27 @@ +package com.hmall.enums; + +import lombok.Getter; + +@Getter +public enum PayStatus { + NOT_COMMIT(0, "未提交"), + WAIT_BUYER_PAY(1, "待支付"), + TRADE_CLOSED(2, "已关闭"), + TRADE_SUCCESS(3, "支付成功"), + TRADE_FINISHED(3, "支付成功"), + ; + private final int value; + private final String desc; + + PayStatus(int value, String desc) { + this.value = value; + this.desc = desc; + } + + public boolean equalsValue(Integer value){ + if (value == null) { + return false; + } + return getValue() == value; + } +} \ No newline at end of file diff --git a/hm-service/src/main/java/com/hmall/enums/PayType.java b/hm-service/src/main/java/com/hmall/enums/PayType.java new file mode 100644 index 0000000..ad8dc6b --- /dev/null +++ b/hm-service/src/main/java/com/hmall/enums/PayType.java @@ -0,0 +1,27 @@ +package com.hmall.enums; + +import lombok.Getter; + +@Getter +public enum PayType{ + JSAPI(1, "网页支付JS"), + MINI_APP(2, "小程序支付"), + APP(3, "APP支付"), + NATIVE(4, "扫码支付"), + BALANCE(5, "余额支付"), + ; + private final int value; + private final String desc; + + PayType(int value, String desc) { + this.value = value; + this.desc = desc; + } + + public boolean equalsValue(Integer value){ + if (value == null) { + return false; + } + return getValue() == value; + } +} diff --git a/hm-service/src/main/java/com/hmall/enums/UserStatus.java b/hm-service/src/main/java/com/hmall/enums/UserStatus.java new file mode 100644 index 0000000..190d48e --- /dev/null +++ b/hm-service/src/main/java/com/hmall/enums/UserStatus.java @@ -0,0 +1,30 @@ +package com.hmall.enums; + +import com.baomidou.mybatisplus.annotation.EnumValue; +import com.hmall.common.exception.BadRequestException; +import lombok.Getter; + +@Getter +public enum UserStatus { + FROZEN(0, "禁止使用"), + NORMAL(1, "已激活"), + ; + @EnumValue + int value; + String desc; + + UserStatus(Integer value, String desc) { + this.value = value; + this.desc = desc; + } + + public static UserStatus of(int value) { + if (value == 0) { + return FROZEN; + } + if (value == 1) { + return NORMAL; + } + throw new BadRequestException("账户状态错误"); + } +} \ No newline at end of file diff --git a/hm-service/src/main/java/com/hmall/interceptor/LoginInterceptor.java b/hm-service/src/main/java/com/hmall/interceptor/LoginInterceptor.java new file mode 100644 index 0000000..f3fbe24 --- /dev/null +++ b/hm-service/src/main/java/com/hmall/interceptor/LoginInterceptor.java @@ -0,0 +1,33 @@ +package com.hmall.interceptor; + +import com.hmall.common.utils.UserContext; +import com.hmall.utils.JwtTool; +import lombok.RequiredArgsConstructor; +import org.springframework.web.servlet.HandlerInterceptor; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +@RequiredArgsConstructor +public class LoginInterceptor implements HandlerInterceptor { + + private final JwtTool jwtTool; + + @Override + public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { + // 1.获取请求头中的 token + String token = request.getHeader("authorization"); + // 2.校验token + Long userId = jwtTool.parseToken(token); + // 3.存入上下文 + UserContext.setUser(userId); + // 4.放行 + return true; + } + + @Override + public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { + // 清理用户 + UserContext.removeUser(); + } +} diff --git a/hm-service/src/main/java/com/hmall/mapper/AddressMapper.java b/hm-service/src/main/java/com/hmall/mapper/AddressMapper.java new file mode 100644 index 0000000..09ac39e --- /dev/null +++ b/hm-service/src/main/java/com/hmall/mapper/AddressMapper.java @@ -0,0 +1,16 @@ +package com.hmall.mapper; + +import com.hmall.domain.po.Address; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *+ * Mapper 接口 + *
+ * + * @author 虎哥 + * @since 2023-05-05 + */ +public interface AddressMapper extends BaseMapper { + +} diff --git a/hm-service/src/main/java/com/hmall/mapper/CartMapper.java b/hm-service/src/main/java/com/hmall/mapper/CartMapper.java new file mode 100644 index 0000000..f4df4e1 --- /dev/null +++ b/hm-service/src/main/java/com/hmall/mapper/CartMapper.java @@ -0,0 +1,20 @@ +package com.hmall.mapper; + +import com.hmall.domain.po.Cart; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Update; + +/** + *+ * 订单详情表 Mapper 接口 + *
+ * + * @author 虎哥 + * @since 2023-05-05 + */ +public interface CartMapper extends BaseMapper+ * 商品表 Mapper 接口 + *
+ * + * @author 虎哥 + * @since 2023-05-05 + */ +public interface ItemMapper extends BaseMapper+ * 订单详情表 Mapper 接口 + *
+ * + * @author 虎哥 + * @since 2023-05-05 + */ +public interface OrderDetailMapper extends BaseMapper+ * Mapper 接口 + *
+ * + * @author 虎哥 + * @since 2023-05-05 + */ +public interface OrderLogisticsMapper extends BaseMapper+ * Mapper 接口 + *
+ * + * @author 虎哥 + * @since 2023-05-05 + */ +public interface OrderMapper extends BaseMapper+ * 支付订单 Mapper 接口 + *
+ * + * @author 虎哥 + * @since 2023-05-16 + */ +public interface PayOrderMapper extends BaseMapper+ * 用户表 Mapper 接口 + *
+ * + * @author 虎哥 + * @since 2023-05-05 + */ +public interface UserMapper extends BaseMapper+ * 服务类 + *
+ * + * @author 虎哥 + * @since 2023-05-05 + */ +public interface IAddressService extends IService { + +} diff --git a/hm-service/src/main/java/com/hmall/service/ICartService.java b/hm-service/src/main/java/com/hmall/service/ICartService.java new file mode 100644 index 0000000..32c9041 --- /dev/null +++ b/hm-service/src/main/java/com/hmall/service/ICartService.java @@ -0,0 +1,26 @@ +package com.hmall.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.hmall.domain.dto.CartFormDTO; +import com.hmall.domain.po.Cart; +import com.hmall.domain.vo.CartVO; + +import java.util.Collection; +import java.util.List; + +/** + *+ * 订单详情表 服务类 + *
+ * + * @author 虎哥 + * @since 2023-05-05 + */ +public interface ICartService extends IService+ * 商品表 服务类 + *
+ * + * @author 虎哥 + * @since 2023-05-05 + */ +public interface IItemService extends IService+ * 订单详情表 服务类 + *
+ * + * @author 虎哥 + * @since 2023-05-05 + */ +public interface IOrderDetailService extends IService+ * 服务类 + *
+ * + * @author 虎哥 + * @since 2023-05-05 + */ +public interface IOrderLogisticsService extends IService+ * 服务类 + *
+ * + * @author 虎哥 + * @since 2023-05-05 + */ +public interface IOrderService extends IService+ * 支付订单 服务类 + *
+ * + * @author 虎哥 + * @since 2023-05-16 + */ +public interface IPayOrderService extends IService+ * 用户表 服务类 + *
+ * + * @author 虎哥 + * @since 2023-05-05 + */ +public interface IUserService extends IService+ * 服务实现类 + *
+ * + * @author 虎哥 + * @since 2023-05-05 + */ +@Service +public class AddressServiceImpl extends ServiceImpl+ * 订单详情表 服务实现类 + *
+ * + * @author 虎哥 + * @since 2023-05-05 + */ +@Service +@RequiredArgsConstructor +public class CartServiceImpl extends ServiceImpl+ * 商品表 服务实现类 + *
+ * + * @author 虎哥 + */ +@Service +public class ItemServiceImpl extends ServiceImpl+ * 订单详情表 服务实现类 + *
+ * + * @author 虎哥 + * @since 2023-05-05 + */ +@Service +public class OrderDetailServiceImpl extends ServiceImpl+ * 服务实现类 + *
+ * + * @author 虎哥 + * @since 2023-05-05 + */ +@Service +public class OrderLogisticsServiceImpl extends ServiceImpl+ * 服务实现类 + *
+ * + * @author 虎哥 + * @since 2023-05-05 + */ +@Service +@RequiredArgsConstructor +public class OrderServiceImpl extends ServiceImpl+ * 支付订单 服务实现类 + *
+ * + * @author 虎哥 + * @since 2023-05-16 + */ +@Service +@RequiredArgsConstructor +public class PayOrderServiceImpl extends ServiceImpl+ * 用户表 服务实现类 + *
+ * + * @author 虎哥 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class UserServiceImpl extends ServiceImpl+ * 商品表 + *
+ * + * @author 虎哥 + * @since 2023-05-05 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("item") +public class Item implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 商品id + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * SKU名称 + */ + private String name; + + /** + * 价格(分) + */ + private Integer price; + + /** + * 库存数量 + */ + private Integer stock; + + /** + * 商品图片 + */ + private String image; + + /** + * 类目名称 + */ + private String category; + + /** + * 品牌名称 + */ + private String brand; + + /** + * 规格 + */ + private String spec; + + /** + * 销量 + */ + private Integer sold; + + /** + * 评论数 + */ + private Integer commentCount; + + /** + * 是否是推广广告,true/false + */ + @TableField("isAD") + private Boolean isAD; + + /** + * 商品状态 1-正常,2-下架,3-删除 + */ + private Integer status; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 更新时间 + */ + private LocalDateTime updateTime; + + /** + * 创建人 + */ + private Long creater; + + /** + * 修改人 + */ + private Long updater; + + +} diff --git a/item-service/src/main/java/com/hmall/item/domain/query/ItemPageQuery.java b/item-service/src/main/java/com/hmall/item/domain/query/ItemPageQuery.java new file mode 100644 index 0000000..bff2ca4 --- /dev/null +++ b/item-service/src/main/java/com/hmall/item/domain/query/ItemPageQuery.java @@ -0,0 +1,23 @@ +package com.hmall.item.domain.query; + +import com.hmall.common.domain.PageQuery; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +@ApiModel(description = "商品分页查询条件") +public class ItemPageQuery extends PageQuery { + @ApiModelProperty("搜索关键字") + private String key; + @ApiModelProperty("商品分类") + private String category; + @ApiModelProperty("商品品牌") + private String brand; + @ApiModelProperty("价格最小值") + private Integer minPrice; + @ApiModelProperty("价格最大值") + private Integer maxPrice; +} diff --git a/item-service/src/main/java/com/hmall/item/mapper/ItemMapper.java b/item-service/src/main/java/com/hmall/item/mapper/ItemMapper.java new file mode 100644 index 0000000..179ff7a --- /dev/null +++ b/item-service/src/main/java/com/hmall/item/mapper/ItemMapper.java @@ -0,0 +1,21 @@ +package com.hmall.item.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +import com.hmall.item.domain.po.Item; +import com.hmall.item.domain.dto.OrderDetailDTO; +import org.apache.ibatis.annotations.Update; + +/** + *+ * 商品表 Mapper 接口 + *
+ * + * @author 虎哥 + * @since 2023-05-05 + */ +public interface ItemMapper extends BaseMapper+ * 商品表 服务类 + *
+ * + * @author 虎哥 + * @since 2023-05-05 + */ +public interface IItemService extends IService+ * 商品表 服务实现类 + *
+ * + * @author 虎哥 + */ +@Service +public class ItemServiceImpl extends ServiceImplp4Ft@y_3J84qL3`5Raa6=F0_R
zoDj%_+CsYCpg>d|GqPQlEw3huvL}l9)iNH>sN-Hx k_(&97axD_b(#;u
zjyHau`}my(WB5hoWmdR;e(5S+Rz^lK0y3%gW=h&Q?uqeq1t4cT_Pt5^vf2%PU%H5P
zSXj6gr(?Z`;XwHb6u&C!jx~D0AFs~2eTKHd3-sEPv<~B? ;cruQ|J*8@baU!j(6~`BLxr$(Jsx1o
zPYS(N6qCVabF=%a*|kQhNzQq)reNR~^@RHR3U(2nX_0`PX=JP?<|YM5HT?iu^oVJ@
zG23fLxx59~DNi|^N0y3s
z{Z{7&jnfS{UDo1&