初始化天卡开放平台后端项目

包含完整功能模块:
- 设备激活(直销激活码模式 + 代销免激活码模式)
- 微信支付 + 天卡订单
- 天卡池管理 + 异步橘视厅SDK激活
- 第三方合作伙伴接口(代销模式)
  - 签名鉴权(appKey/appSecret + nonce防重放)
  - 天卡消耗(事务 + 幂等 + 并发控制)
  - 媒资接口(三级授权过滤)
  - 审计日志
- 定价策略(3层:门店 > 渠道 > 平台)
- 分账(微信分账 + 分润规则)
- Docker部署(含Redis容器)
This commit is contained in:
zhaogd
2026-07-26 12:34:13 +08:00
commit 30198c7191
349 changed files with 28837 additions and 0 deletions
@@ -0,0 +1,37 @@
package io.as.modules.openapi.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 开放API内容包授权表
*/
@Data
@TableName("open_api_content_package")
public class ContentPackageEntity implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(type = IdType.AUTO)
private Long id;
/** 合作伙伴ID */
private String partnerId;
/** 内容包名称 */
private String name;
/** 目录ID集合 */
private String catalogIds;
/** 内容编码集合 */
private String contentCodes;
/** 状态:ACTIVE / DISABLED */
private String status;
/** 删除标记 */
private String deleteFlag;
/** 创建时间 */
private Date createdAt;
/** 更新时间 */
private Date updatedAt;
}
@@ -0,0 +1,39 @@
package io.as.modules.openapi.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 开放API调用日志表
*/
@Data
@TableName("open_api_call_log")
public class OpenApiCallLogEntity implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(type = IdType.AUTO)
private Long id;
/** 合作伙伴ID */
private String partnerId;
/** 应用Key */
private String appKey;
/** 调用API */
private String api;
/** HTTP方法 */
private String httpMethod;
/** 请求参数 */
private String params;
/** 结果码 */
private Integer resultCode;
/** 调用方IP */
private String ip;
/** 耗时(毫秒) */
private Integer costMs;
/** 创建时间 */
private Date createdAt;
}
@@ -0,0 +1,41 @@
package io.as.modules.openapi.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 开放API合作伙伴表
*/
@Data
@TableName("open_api_partner")
public class OpenApiPartnerEntity implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(type = IdType.AUTO)
private Long id;
/** 合作伙伴ID */
private String partnerId;
/** 应用Key */
private String appKey;
/** 应用密钥 */
private String appSecret;
/** 合作伙伴名称 */
private String name;
/** 状态:ACTIVE / DISABLED */
private String status;
/** API权限(JSON) */
private String apiPermissions;
/** 速率限制(默认100) */
private Integer rateLimit;
/** 删除标记 */
private String deleteFlag;
/** 创建时间 */
private Date createdAt;
/** 更新时间 */
private Date updatedAt;
}
@@ -0,0 +1,49 @@
package io.as.modules.openapi.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 合作伙伴天卡池
*/
@Data
@TableName("open_api_partner_card_pool")
public class PartnerCardPoolEntity implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(type = IdType.AUTO)
private Long id;
/** 合作伙伴ID */
private String partnerId;
/** 天卡池ID */
private Long poolId;
/** 卡编码 */
private String cardCode;
/** 第三方卡号 */
private String thirdCardNo;
/** 状态:AVAILABLE / CONSUMED */
private String status;
/** 设备ID */
private Long deviceId;
/** 渠道机构ID */
private Long channelOrgId;
/** 采购批次 */
private String purchaseBatch;
/** 消费时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date consumedAt;
/** 删除标记 */
private String deleteFlag;
/** 创建时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createdAt;
/** 更新时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date updatedAt;
}