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

包含完整功能模块:
- 设备激活(直销激活码模式 + 代销免激活码模式)
- 微信支付 + 天卡订单
- 天卡池管理 + 异步橘视厅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

View File

@@ -0,0 +1,99 @@
package io.as.common.utils;
import org.apache.http.HttpStatus;
import java.util.HashMap;
import java.util.Map;
/**
* 返回数据
*
* @author Mark sunlightcs@gmail.com
*/
public class R extends HashMap<String, Object> {
private static final long serialVersionUID = 1L;
public R() {
put("code", 0);
put("msg", "success");
}
public static R error() {
return error(HttpStatus.SC_INTERNAL_SERVER_ERROR, "未知异常,请联系管理员");
}
public static R error(String msg) {
return error(HttpStatus.SC_INTERNAL_SERVER_ERROR, msg);
}
public static R error(int code, String msg) {
R r = new R();
r.put("code", code);
r.put("msg", msg);
return r;
}
public static R ok(String msg) {
R r = new R();
r.put("msg", msg);
return r;
}
public static R ok(Map<String, Object> map) {
R r = new R();
r.putAll(map);
return r;
}
public static R ok() {
return new R();
}
/**
* App 等统一响应:成功时 {@code { "code": 200, "msg": "", "data": {...} }}
*/
public static R dataOk() {
return dataOk(new HashMap<String, Object>());
}
/**
* App 等统一响应:成功时 payload 放在 {@code data} 内。
*/
public static R dataOk(Map<String, Object> data) {
R r = new R();
r.clear();
r.put("code", 200);
r.put("msg", "");
r.put("data", data != null ? data : new HashMap<String, Object>());
return r;
}
/**
* 统一响应(code 为 0):成功时 {@code { "code": 0, "msg": "", "data": {...} }}
*/
public static R dataSuccess(Map<String, Object> data) {
R r = new R();
r.clear();
r.put("code", 0);
r.put("msg", "");
r.put("data", data != null ? data : new HashMap<String, Object>());
return r;
}
/**
* App 等统一响应:失败时 {@code { "code": code, "msg": msg, "data": {} }}
*/
public static R dataError(int code, String msg) {
R r = new R();
r.clear();
r.put("code", code);
r.put("msg", msg != null ? msg : "");
r.put("data", new HashMap<String, Object>());
return r;
}
public R put(String key, Object value) {
super.put(key, value);
return this;
}
}