首次提交:初始化后端、数据库结构与文档代码
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
package com.chuyishidai.datahub.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 统一客户维度宽表 Entity
|
||||
* 对齐 DDL: dim_customer_info
|
||||
*/
|
||||
@Data
|
||||
@TableName("dim_customer_info")
|
||||
public class CustomerInfo {
|
||||
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/** 手机号(首选关联枢纽) */
|
||||
private String mobile;
|
||||
|
||||
/** 有赞生态统一用户ID */
|
||||
private String yzOpenId;
|
||||
|
||||
/** 微信生态UnionID */
|
||||
private String wxUnionId;
|
||||
|
||||
/** 微信公众号/小程序OpenID */
|
||||
private String wxOpenId;
|
||||
|
||||
/** 客户昵称快照 */
|
||||
private String nickname;
|
||||
|
||||
/** 客户真实姓名 */
|
||||
private String name;
|
||||
|
||||
/** 性别: 0-未知, 1-男, 2-女 */
|
||||
private Integer gender;
|
||||
|
||||
/** 生日 */
|
||||
private java.time.LocalDate birthday;
|
||||
|
||||
/** 首次注册/留资时间 */
|
||||
private LocalDateTime registerTime;
|
||||
|
||||
/** 注册渠道 */
|
||||
private String registerChannel;
|
||||
|
||||
/** 当前会员等级ID */
|
||||
private Long memberLevelId;
|
||||
|
||||
/** 当前会员等级名称 */
|
||||
private String memberLevelName;
|
||||
|
||||
/** 首单支付时间 */
|
||||
private LocalDateTime firstPayTime;
|
||||
|
||||
/** 最近一次支付时间(RFM-R) */
|
||||
private LocalDateTime lastPayTime;
|
||||
|
||||
/** 历史累计实付金额(RFM-M) */
|
||||
private BigDecimal totalPayAmount;
|
||||
|
||||
/** 历史累计支付订单数(RFM-F) */
|
||||
private Integer totalPayCount;
|
||||
|
||||
/** 客户标签集合 (JSON) */
|
||||
private String customerTags;
|
||||
|
||||
/** 中台数据更新时间 (DB自动管理) */
|
||||
@TableField(insertStrategy = FieldStrategy.NEVER, updateStrategy = FieldStrategy.NEVER)
|
||||
private LocalDateTime etlUpdateTime;
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
package com.chuyishidai.datahub.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 客群洞察 - RFM 模型
|
||||
*/
|
||||
@Data
|
||||
@TableName("adm_customer_rfm")
|
||||
public class CustomerRfm {
|
||||
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
// 用户唯一标识
|
||||
private String yzOpenId;
|
||||
private String mobile;
|
||||
|
||||
// R: 最近消费时间、F: 90天消费频次、M: 90天消费金额
|
||||
private LocalDateTime lastTradeTime;
|
||||
private Integer tradeCount90d;
|
||||
private BigDecimal tradeAmount90d;
|
||||
|
||||
// RFM 对应评分 (1-5分)
|
||||
private Integer rScore;
|
||||
private Integer fScore;
|
||||
private Integer mScore;
|
||||
|
||||
// 系统划分的客群分类 (如: 重要价值客户)
|
||||
private String rfmGroup;
|
||||
|
||||
private LocalDateTime etlUpdateTime;
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
package com.chuyishidai.datahub.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 客群特征标签表
|
||||
*/
|
||||
@Data
|
||||
@TableName("adm_customer_tags")
|
||||
public class CustomerTag {
|
||||
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
private String yzOpenId;
|
||||
|
||||
// 标签名称 (例如: 周末消费客, 囤货小能手)
|
||||
private String tagName;
|
||||
|
||||
// 标签值或对应权重 (如有)
|
||||
private String tagValue;
|
||||
|
||||
private LocalDateTime etlUpdateTime;
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
package com.chuyishidai.datahub.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 每日库存快照 Entity
|
||||
* 对齐 DDL: dim_inventory_snapshot
|
||||
*/
|
||||
@Data
|
||||
@TableName("dim_inventory_snapshot")
|
||||
public class InventorySnapshot {
|
||||
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/** 仓库编码 */
|
||||
private String warehouseCode;
|
||||
|
||||
/** SKU编码 */
|
||||
private String skuCode;
|
||||
|
||||
/** 实物库存 */
|
||||
private BigDecimal stockNum;
|
||||
|
||||
/** 实物占用 */
|
||||
private BigDecimal freezeNum;
|
||||
|
||||
/** 可用库存 (stock_num - freeze_num) */
|
||||
private BigDecimal availableNum;
|
||||
|
||||
/** 快照日期 */
|
||||
private LocalDate snapshotDate;
|
||||
|
||||
/** 中台同步时间 */
|
||||
@TableField(insertStrategy = FieldStrategy.NEVER, updateStrategy = FieldStrategy.NEVER)
|
||||
private LocalDateTime etlUpdateTime;
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
package com.chuyishidai.datahub.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 商品洞察 - 购物篮关联分析 (简化的Apriori)
|
||||
*/
|
||||
@Data
|
||||
@TableName("adm_item_basket")
|
||||
public class ItemBasket {
|
||||
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
// A -> B 的关联
|
||||
private Long itemIdA;
|
||||
private String itemNameA;
|
||||
|
||||
private Long itemIdB;
|
||||
private String itemNameB;
|
||||
|
||||
// 共同出现的订单数
|
||||
private Integer pairOrderCount;
|
||||
|
||||
// A 独立出现的订单数
|
||||
private Integer itemAOrderCount;
|
||||
|
||||
// 置信度 (pairOrderCount / itemAOrderCount)
|
||||
private BigDecimal confidence;
|
||||
|
||||
private LocalDateTime etlUpdateTime;
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
package com.chuyishidai.datahub.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 商品洞察 - 复购分析
|
||||
*/
|
||||
@Data
|
||||
@TableName("adm_item_repurchase")
|
||||
public class ItemRepurchase {
|
||||
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
private LocalDate statDate;
|
||||
|
||||
private Long itemId;
|
||||
private Long skuId;
|
||||
|
||||
// 过去30天购买该商品的总人数
|
||||
private Integer purchaserCount30d;
|
||||
|
||||
// 过去30天内,购买该商品后再次回购的人数
|
||||
private Integer repurchaserCount30d;
|
||||
|
||||
// 30天复购率
|
||||
private BigDecimal repurchaseRate30d;
|
||||
|
||||
// 矩阵打标 (如: 核心引流款)
|
||||
private String matrixTag;
|
||||
|
||||
private LocalDateTime etlUpdateTime;
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
package com.chuyishidai.datahub.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 商品洞察 - 单品日销售趋势
|
||||
*/
|
||||
@Data
|
||||
@TableName("adm_item_sales_trend")
|
||||
public class ItemSalesTrend {
|
||||
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
private LocalDate statDate;
|
||||
|
||||
private Long itemId;
|
||||
private Long skuId;
|
||||
private String itemName;
|
||||
|
||||
// 单日维度统计
|
||||
private Integer salesQty;
|
||||
private BigDecimal salesAmount;
|
||||
private Integer orderCount;
|
||||
|
||||
private LocalDateTime etlUpdateTime;
|
||||
}
|
||||
@@ -0,0 +1,69 @@
|
||||
package com.chuyishidai.datahub.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 商品与SKU维度表 Entity
|
||||
* 对齐 DDL: dim_item_sku
|
||||
* 价格单位:分(与有赞API一致)
|
||||
*/
|
||||
@Data
|
||||
@TableName("dim_item_sku")
|
||||
public class ItemSku {
|
||||
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/** 有赞商品ID (NOT NULL) */
|
||||
private Long itemId;
|
||||
|
||||
/** 有赞SKU ID (NOT NULL, 无SKU时为0) */
|
||||
private Long skuId;
|
||||
|
||||
/** 商家外部商品编码 (关联核心) */
|
||||
private String outerItemId;
|
||||
|
||||
/** 商家外部SKU编码 */
|
||||
private String outerSkuId;
|
||||
|
||||
/** 商品条码 */
|
||||
private String barcode;
|
||||
|
||||
/** 商品/SKU名称 (NOT NULL) */
|
||||
private String title;
|
||||
|
||||
/** 商品别名/短链接标识 */
|
||||
private String alias;
|
||||
|
||||
/** 叶子类目ID */
|
||||
private Long categoryId;
|
||||
|
||||
/** 叶子类目名称 */
|
||||
private String categoryName;
|
||||
|
||||
/** 商品分组ID列表 (逗号分隔) */
|
||||
private String groupIds;
|
||||
|
||||
/** 当前售卖价(单位:分) */
|
||||
private Long price;
|
||||
|
||||
/** 成本价(单位:分) */
|
||||
private Long costPrice;
|
||||
|
||||
/** 是否上架: true-上架, false-下架 */
|
||||
@TableField("is_listing")
|
||||
private Boolean isListing;
|
||||
|
||||
/** 商品在有赞的创建时间 */
|
||||
private LocalDateTime createdTime;
|
||||
|
||||
/** 商品最近更新时间 */
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
/** 中台数据更新时间 (DB自动管理) */
|
||||
@TableField(insertStrategy = FieldStrategy.NEVER, updateStrategy = FieldStrategy.NEVER)
|
||||
private LocalDateTime etlUpdateTime;
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
package com.chuyishidai.datahub.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 门店与网点维表 Entity
|
||||
* 对齐 DDL: dim_offline_store
|
||||
*/
|
||||
@Data
|
||||
@TableName("dim_offline_store")
|
||||
public class OfflineStore {
|
||||
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/** 有赞网点/门店ID */
|
||||
private Long offlineId;
|
||||
|
||||
/** 组织店铺ID */
|
||||
private String shopOrgId;
|
||||
|
||||
/** 门店名称 */
|
||||
private String name;
|
||||
|
||||
/** 节点类型: STORE-门店, WAREHOUSE-仓库 */
|
||||
private String type;
|
||||
|
||||
/** 省份 */
|
||||
private String province;
|
||||
|
||||
/** 城市 */
|
||||
private String city;
|
||||
|
||||
/** 区县 */
|
||||
private String district;
|
||||
|
||||
/** 详细地址 */
|
||||
private String address;
|
||||
|
||||
/** 营业状态: 1-营业, 0-关店 */
|
||||
private Integer status;
|
||||
|
||||
/** 仓库编码 (库存API必需) */
|
||||
private String warehouseCode;
|
||||
|
||||
/** 库存模式: 1-独立, 2-共享总部, 3-共享门店仓, 4-进出存 */
|
||||
private Integer stockMode;
|
||||
|
||||
/** 中台数据更新时间 */
|
||||
@TableField(insertStrategy = FieldStrategy.NEVER, updateStrategy = FieldStrategy.NEVER)
|
||||
private LocalDateTime etlUpdateTime;
|
||||
}
|
||||
@@ -0,0 +1,102 @@
|
||||
package com.chuyishidai.datahub.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 交易明细事实表 Entity
|
||||
* 对齐 DDL: dwd_trade_order_detail
|
||||
*/
|
||||
@Data
|
||||
@TableName("dwd_trade_order_detail")
|
||||
public class TradeOrderDetail {
|
||||
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/** 有赞主订单号 */
|
||||
private String tid;
|
||||
|
||||
/** 有赞子订单号/明细ID */
|
||||
private String oid;
|
||||
|
||||
/** 买家手机号 */
|
||||
private String buyerPhone;
|
||||
|
||||
/** 有赞用户开放ID */
|
||||
private String yzOpenId;
|
||||
|
||||
/** 粉丝ID */
|
||||
private Long fansId;
|
||||
|
||||
/** 店铺组织ID */
|
||||
private String shopOrgId;
|
||||
|
||||
/** 网点/门店ID */
|
||||
private Long offlineId;
|
||||
|
||||
/** 商品ID (NOT NULL, 默认0) */
|
||||
private Long itemId = 0L;
|
||||
|
||||
/** SKU ID (NOT NULL, 默认0) */
|
||||
private Long skuId = 0L;
|
||||
|
||||
/** 商家外部商品编码 */
|
||||
private String outerItemId;
|
||||
|
||||
/** 商家外部SKU编码 */
|
||||
private String outerSkuId;
|
||||
|
||||
/** 商品名称快照 */
|
||||
private String title;
|
||||
|
||||
/** 单商品原价 */
|
||||
private BigDecimal price;
|
||||
|
||||
/** 购买数量 */
|
||||
private Integer num;
|
||||
|
||||
/** 原价小计 */
|
||||
private BigDecimal totalFee;
|
||||
|
||||
/** 折扣后价格 */
|
||||
private BigDecimal discountPrice;
|
||||
|
||||
/** 实际支付摊销金额 */
|
||||
private BigDecimal payment;
|
||||
|
||||
/** 订单状态 */
|
||||
private String status;
|
||||
|
||||
/** 退款状态 */
|
||||
private Integer refundState;
|
||||
|
||||
/** 订单来源平台 */
|
||||
private String sourcePlatform;
|
||||
|
||||
/** 是否零售门店订单 */
|
||||
@TableField("is_retail_order")
|
||||
private Boolean isRetailOrder;
|
||||
|
||||
/** 订单类型 */
|
||||
private Integer orderType;
|
||||
|
||||
/** 支付时间 */
|
||||
private LocalDateTime payTime;
|
||||
|
||||
/** 订单创建时间 */
|
||||
private LocalDateTime createdTime;
|
||||
|
||||
/** 订单最后更新时间 */
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
/** 订单完成时间 */
|
||||
private LocalDateTime successTime;
|
||||
|
||||
/** 中台数据更新时间 (由 DB DEFAULT CURRENT_TIMESTAMP 自动管理) */
|
||||
@TableField(insertStrategy = FieldStrategy.NEVER, updateStrategy = FieldStrategy.NEVER)
|
||||
private LocalDateTime etlUpdateTime;
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
package com.chuyishidai.datahub.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 售后与退款明细 Entity
|
||||
* 对齐 DDL: dwd_trade_refund_detail
|
||||
*/
|
||||
@Data
|
||||
@TableName("dwd_trade_refund_detail")
|
||||
public class TradeRefundDetail {
|
||||
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/** 退款单号 */
|
||||
private String refundId;
|
||||
|
||||
/** 关联的主订单号 */
|
||||
private String tid;
|
||||
|
||||
/** 关联的子订单明细ID */
|
||||
private String oid;
|
||||
|
||||
/** 发起退款的门店ID */
|
||||
private Long offlineId;
|
||||
|
||||
/** 退款类型: 1-仅退款, 2-退货退款 */
|
||||
private Integer refundType;
|
||||
|
||||
/** 实际退款金额 */
|
||||
private BigDecimal refundFee;
|
||||
|
||||
/** 退款原因 */
|
||||
private String reason;
|
||||
|
||||
/** 退款状态 */
|
||||
private String status;
|
||||
|
||||
/** 退款申请时间 */
|
||||
private LocalDateTime createdTime;
|
||||
|
||||
/** 退款成功时间 */
|
||||
private LocalDateTime successTime;
|
||||
|
||||
/** 退款诉求: 1-仅退款, 2-退货退款, 3-换货 */
|
||||
private Integer refundDemand;
|
||||
|
||||
/** 退款阶段: 1-售中, 2-售后 */
|
||||
private Integer refundPhase;
|
||||
|
||||
/** 买家 yz_open_id */
|
||||
private String yzOpenId;
|
||||
|
||||
/** 最后修改时间 */
|
||||
private LocalDateTime modifiedTime;
|
||||
|
||||
/** 中台数据更新时间 */
|
||||
@TableField(insertStrategy = FieldStrategy.NEVER, updateStrategy = FieldStrategy.NEVER)
|
||||
private LocalDateTime etlUpdateTime;
|
||||
}
|
||||
Reference in New Issue
Block a user