feat(sports): 重构 DB体育接口
- 修改了 CreateUserRequest 和 CreateUserResponse 的字段名称 - 重写了 DBSportsClient 接口中的方法 - 更新了 DBSportsServiceImpl 中的实现逻辑 - 新增了 GetBetListRequest 和 GetBetListResponse 类 -调整了 GetMemberInfoRequest 的结构main-meitian
parent
bf955ed14b
commit
0ce67f08ab
|
|
@ -16,6 +16,11 @@
|
|||
|
||||
|
||||
<dependencies>
|
||||
<!--<dependency>
|
||||
<groupId>org.apache.rocketmq</groupId>
|
||||
<artifactId>rocketmq-spring-boot-starter</artifactId>
|
||||
<version>2.4.10</version> <!– 请检查最新版本 –>
|
||||
</dependency>-->
|
||||
<!-- spring-boot-devtools -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
|
|
|
|||
|
|
@ -20,83 +20,87 @@ public interface DBSportsClient {
|
|||
}
|
||||
)
|
||||
CreateUserResponse createMember(@Body CreateUserRequest request,
|
||||
@Header("requestId") @Var("requestId") String requestId,
|
||||
@Header("lang") @Var("lang") String lang);
|
||||
@Header("requestId") @Var("requestId") String requestId);
|
||||
|
||||
/**
|
||||
* 用户金额转入到FB体育平台,支持两位小数,最小0.01,必须是正数
|
||||
* 用户登录接口(注册和登录合并为一个接口)
|
||||
*
|
||||
* @param request
|
||||
* @param sign
|
||||
* @param timestamp
|
||||
* @param merchantId
|
||||
* @return {@link TransferInResponse}
|
||||
* @param requestId
|
||||
* @return
|
||||
*/
|
||||
@Post(url = "/api/v2/new/transfer/in")
|
||||
TransferInResponse transferIn(@JSONBody TransferInRequest request,
|
||||
@Header("sign") @Var("sign") String sign,
|
||||
@Header("timestamp") @Var("timestamp") long timestamp,
|
||||
@Header("merchantId") @Var("merchantId") String merchantId);
|
||||
|
||||
@Post(url = "/api/v2/new/transfer/out")
|
||||
TransferOutResponse transferOut(@JSONBody TransferOutRequest request,
|
||||
@Header("sign") @Var("sign") String sign,
|
||||
@Header("timestamp") @Var("timestamp") long timestamp,
|
||||
@Header("merchantId") @Var("merchantId") String merchantId);
|
||||
|
||||
@Post(url = "/api/v2/new/user/detail")
|
||||
GetMemberInfoResponse getMemberInfo(@JSONBody GetMemberInfoRequest request,
|
||||
@Header("sign") @Var("sign") String sign,
|
||||
@Header("timestamp") @Var("timestamp") long timestamp,
|
||||
@Header("merchantId") @Var("merchantId") String merchantId);
|
||||
@Post(url = "/api/user/login",
|
||||
headers = {
|
||||
"Content-type: application/x-www-form-urlencoded"
|
||||
}
|
||||
)
|
||||
LoginResponse login(@Body LoginRequest request,
|
||||
@Header("requestId") String requestId);
|
||||
|
||||
/**
|
||||
* 查询转账详情,当转入/转出接口遇到异常,可查询某次转账是否成功
|
||||
* 用户金额转入到DB体育平台,支持两位小数,最小0.01,必须是正数
|
||||
*
|
||||
* @param request
|
||||
* @return {@link TransferResponse}
|
||||
*/
|
||||
@Post(url = "/api/v2/transfer/detail")
|
||||
TransferDetailResponse transferDetail(@JSONBody TransferDetailRequest request,
|
||||
@Header("sign") @Var("sign") String sign,
|
||||
@Header("timestamp") @Var("timestamp") long timestamp,
|
||||
@Header("merchantId") @Var("merchantId") String merchantId);
|
||||
@Post(url = "/api/fund/transfer",
|
||||
headers = {
|
||||
"Content-type: application/x-www-form-urlencoded"
|
||||
}
|
||||
)
|
||||
TransferResponse transferIn(@Body TransferRequest request,
|
||||
@Header("requestId") @Var("requestId") String requestId
|
||||
);
|
||||
|
||||
@Post(url = "/api/v2/service/domain/list")
|
||||
GetUrlResponse getUrl(@JSONBody GetUrlRequest request,
|
||||
@Header("sign") @Var("sign") String sign,
|
||||
@Header("timestamp") @Var("timestamp") long timestamp,
|
||||
@Header("merchantId") @Var("merchantId") String merchantId);
|
||||
@Post(url = "/api/fund/transfer",
|
||||
headers = {
|
||||
"Content-type: application/x-www-form-urlencoded"
|
||||
}
|
||||
)
|
||||
TransferResponse transferOut(@Body TransferRequest request,
|
||||
@Header("requestId") String requestId
|
||||
);
|
||||
|
||||
@Post(url = "/api/fund/checkBalance",
|
||||
headers = {
|
||||
"Content-type: application/x-www-form-urlencoded"
|
||||
}
|
||||
)
|
||||
GetMemberInfoResponse getMemberInfo(@Body GetMemberInfoRequest request,
|
||||
@Header("requestId") String requestId);
|
||||
|
||||
/**
|
||||
* FB体育用拉取订单文件的方式同步订单数据,FB体育每5分钟生成一次订单文件,
|
||||
* 通过此接口获取某一段时间内的文件ID列表,再通过文件ID获取具体订单数据
|
||||
* 根据转账ID查询交易记录接口。
|
||||
*/
|
||||
@Post(url = "/api/v2/order/file/ids")
|
||||
OrderFilesResponse orderFiles(@JSONBody OrderFilesRequest request,
|
||||
@Header("sign") @Var("sign") String sign,
|
||||
@Header("timestamp") @Var("timestamp") long timestamp,
|
||||
@Header("merchantId") @Var("merchantId") String merchantId);
|
||||
@Post(url = "/api/fund/getTransferRecord",
|
||||
headers = {
|
||||
"Content-type: application/x-www-form-urlencoded"
|
||||
}
|
||||
)
|
||||
TransferDetailResponse transferDetail(@Body TransferDetailRequest request,
|
||||
@Header("requestId") String requestId);
|
||||
|
||||
/**
|
||||
* 剔用户
|
||||
*
|
||||
* @param request
|
||||
* @param requestId
|
||||
* @return
|
||||
*/
|
||||
@Post(value = "/api/user/kickOutUser",
|
||||
headers = {
|
||||
"Content-type: application/x-www-form-urlencoded"
|
||||
}
|
||||
)
|
||||
KickUserResponse kickUser(@Body KickUserRequest request,
|
||||
@Header("requestId") String requestId);
|
||||
|
||||
|
||||
/**
|
||||
* 拉取订单Json数据
|
||||
*/
|
||||
@Post(url = "/api/v2/order/list")
|
||||
OrderInfoResponse getOrderJsonData(@JSONBody OrderInfoRequest request,
|
||||
@Header("sign") @Var("sign") String sign,
|
||||
@Header("timestamp") @Var("timestamp") long timestamp,
|
||||
@Header("merchantId") @Var("merchantId") String merchantId);
|
||||
@Post(url = "/api/bet/queryBetListV2")
|
||||
GetBetListResponse getBetList(@Body GetBetListRequest request,
|
||||
@Header("requestId") String requestId);
|
||||
|
||||
|
||||
/**
|
||||
* 获取用户app端鉴权token和相关服务url,获取到的token用于app调用接口鉴权
|
||||
*
|
||||
* @param request
|
||||
* @param sign
|
||||
* @param timestamp
|
||||
* @param merchantId
|
||||
* @return
|
||||
*/
|
||||
@Post(url = "/api/v2/token/get")
|
||||
GetTokenResponse getToken(@JSONBody GetTokenRequest request,
|
||||
@Header("sign") @Var("sign") String sign,
|
||||
@Header("timestamp") @Var("timestamp") long timestamp,
|
||||
@Header("merchantId") @Var("merchantId") String merchantId);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,10 +19,10 @@ public class CreateUserRequest implements Serializable {
|
|||
private String currency; // 币种
|
||||
private String nickname; // N 昵称
|
||||
private String agentId; // N 信用网(代理id)
|
||||
private String sign; // 签名 signature =MD5(MD5(userName +”&”+ merchantCode +”&”+ timestamp) + ”&”+ key)
|
||||
private String signature; // 签名 signature =MD5(MD5(userName +”&”+ merchantCode +”&”+ timestamp) + ”&”+ key)
|
||||
|
||||
public void calcSign(String key) {
|
||||
public void buildSignature(String key) {
|
||||
String signature = Md5Utils.md5New(Md5Utils.md5New(userName + "&" + merchantCode + "&" + timestamp) + "&" + key);
|
||||
this.sign = signature;
|
||||
this.signature = signature;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,8 +12,15 @@ public class CreateUserResponse implements Serializable {
|
|||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private Boolean success;
|
||||
private Integer data;
|
||||
private Integer code;
|
||||
private String message;
|
||||
private Boolean status;
|
||||
private String msg;
|
||||
private String code;
|
||||
private Long serverTime;
|
||||
private UserDTO data;
|
||||
|
||||
@Data
|
||||
public static class UserDTO {
|
||||
private String userId;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,93 @@
|
|||
package com.ff.sports.db.dto;
|
||||
|
||||
import com.ff.base.utils.sign.Md5Utils;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @author cengy
|
||||
*/
|
||||
@Data
|
||||
public class GetBetListRequest implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 用户名(可选)
|
||||
*/
|
||||
private String userName;
|
||||
|
||||
/**
|
||||
* 开始时间(13位时间戳,必填)
|
||||
*/
|
||||
private String startTime;
|
||||
|
||||
/**
|
||||
* 结束时间(13位时间戳,必填)
|
||||
*/
|
||||
private String endTime;
|
||||
|
||||
/**
|
||||
* 商户编码(必填)
|
||||
*/
|
||||
private String merchantCode;
|
||||
|
||||
/**
|
||||
* 赛种ID(可选)
|
||||
*/
|
||||
private Integer sportId;
|
||||
|
||||
/**
|
||||
* 联赛ID(可选)
|
||||
*/
|
||||
private Long tournamentId;
|
||||
|
||||
/**
|
||||
* 结算状态(可选)
|
||||
* 0: 未结算
|
||||
* 1: 已结算
|
||||
* 2: 取消人工
|
||||
* 3: 待确认
|
||||
* 4: 风控拒单
|
||||
* 5: 撤单(赛事取消)
|
||||
*/
|
||||
private Integer settleStatus;
|
||||
|
||||
/**
|
||||
* 页面编号,从1开始(可选)
|
||||
*/
|
||||
private Integer pageNum;
|
||||
|
||||
/**
|
||||
* 每页条数(最大1000,可选)
|
||||
*/
|
||||
private Integer pageSize;
|
||||
|
||||
/**
|
||||
* 请求时间戳(13位,必填)
|
||||
*/
|
||||
private String timestamp;
|
||||
|
||||
/**
|
||||
* 排序方式(可选)
|
||||
* 1: 订单创建时间(投注时间)
|
||||
* 2: 订单更新时间
|
||||
*/
|
||||
private Integer orderBy;
|
||||
|
||||
/**
|
||||
* 语言(可选,默认中文,传"en"返回英文)
|
||||
*/
|
||||
private String language;
|
||||
|
||||
/**
|
||||
* 签名(必填)
|
||||
*/
|
||||
private String signature;
|
||||
|
||||
public void buildSignature(String key) {
|
||||
String signature = Md5Utils.md5New(Md5Utils.md5New(merchantCode + "&" + startTime + "&" + endTime + "&" + timestamp) + "&" + key);
|
||||
this.signature = signature;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,194 @@
|
|||
package com.ff.sports.db.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author cengy
|
||||
*/
|
||||
@Data
|
||||
public class GetBetListResponse implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private Boolean status;
|
||||
private String msg;
|
||||
private String code;
|
||||
private Long serverTime;
|
||||
|
||||
|
||||
// 当前页码
|
||||
private Integer pageNum;
|
||||
// 每页条数
|
||||
private Integer pageSize;
|
||||
// 总条数
|
||||
private Integer totalCount;
|
||||
// 注单列表
|
||||
private List<OrderItemDTO> list;
|
||||
|
||||
@Data
|
||||
public static class OrderItemDTO {
|
||||
// 用户名
|
||||
private String userName;
|
||||
|
||||
// 商户编码
|
||||
private String merchantCode;
|
||||
|
||||
// 订单ID
|
||||
private String orderNo;
|
||||
|
||||
// 订单状态,具体见参数字段映射
|
||||
private Integer orderStatus;
|
||||
|
||||
// 投注时间(13位时间戳)
|
||||
private Long createTime;
|
||||
|
||||
// 订单更新时间(13位时间戳)
|
||||
private Long modifyTime;
|
||||
|
||||
// 实际投注金额
|
||||
private String orderAmount;
|
||||
|
||||
// 注单项数量
|
||||
private Integer betCount;
|
||||
|
||||
// 结算时间(13位时间戳)
|
||||
private Long settleTime;
|
||||
|
||||
// 结算金额
|
||||
private Double settleAmount;
|
||||
|
||||
// 提前结算投注金额
|
||||
private Double preBetAmount;
|
||||
|
||||
// 盈利金额
|
||||
private Double profitAmount;
|
||||
|
||||
// 注单结算结果
|
||||
// 2:走水,3:输,4:赢,5:赢半,6:输半,7:赛事取消,8:赛事延期
|
||||
private Integer outcome;
|
||||
|
||||
// 串关类型
|
||||
private Integer seriesType;
|
||||
|
||||
// 串关值
|
||||
private String seriesValue;
|
||||
|
||||
// 结算次数
|
||||
private Integer settleTimes;
|
||||
|
||||
// 设备类型:1-H5,2-PC,3-Android,4-IOS
|
||||
private String deviceType;
|
||||
|
||||
// 移动设备标识
|
||||
private String deviceImei;
|
||||
|
||||
// 用户IP地址
|
||||
private String ip;
|
||||
|
||||
// 币种
|
||||
private String currency;
|
||||
|
||||
// 汇率
|
||||
private BigDecimal exchangeRate;
|
||||
|
||||
// 最大中奖金额
|
||||
private Double maxWinAmount;
|
||||
|
||||
// VIP等级
|
||||
private Integer vipLevel;
|
||||
|
||||
// 投注前余额
|
||||
private BigDecimal beforeTransfer;
|
||||
|
||||
// 投注后余额
|
||||
private BigDecimal afterTransfer;
|
||||
|
||||
// 有效投注金额
|
||||
private BigDecimal validOrderAmount;
|
||||
|
||||
// 注单详情列表
|
||||
private List<DetailItemDTO> detailList;
|
||||
}
|
||||
|
||||
@Data
|
||||
public static class DetailItemDTO {
|
||||
// 投注项编号
|
||||
private Long betNo;
|
||||
|
||||
// 投注项ID
|
||||
private Long playOptionsId;
|
||||
|
||||
// 赛事ID
|
||||
private Long matchId;
|
||||
|
||||
// 比赛开始时间(13位时间戳)
|
||||
private Long beginTime;
|
||||
|
||||
// 注单金额
|
||||
private Double betAmount;
|
||||
|
||||
// 联赛名称
|
||||
private String matchName;
|
||||
|
||||
// 比赛对阵
|
||||
private String matchInfo;
|
||||
|
||||
// 投注类型:
|
||||
// 1:早盘,2:滚球盘,3:冠军盘,4:虚拟赛事,5:电竞赛事
|
||||
private Integer matchType;
|
||||
|
||||
// 赛种ID
|
||||
private Integer sportId;
|
||||
|
||||
// 玩法ID
|
||||
private Integer playId;
|
||||
|
||||
// 投注项(如主客队)
|
||||
private String playOptions;
|
||||
|
||||
// 游戏名称
|
||||
private String sportName;
|
||||
|
||||
// 联赛ID
|
||||
private Long tournamentId;
|
||||
|
||||
// 投注项名称
|
||||
private String playOptionName;
|
||||
|
||||
// 玩法名称
|
||||
private String playName;
|
||||
|
||||
// 盘口类型
|
||||
private String marketType;
|
||||
|
||||
// 盘口值
|
||||
private String marketValue;
|
||||
|
||||
// 让球值
|
||||
private BigDecimal handicap;
|
||||
|
||||
// 结算比分(我方处理后所得,数据商可能未提供)
|
||||
private String settleScore;
|
||||
|
||||
// 基准分
|
||||
private String scoreBenchmark;
|
||||
|
||||
// 当前赔率(欧洲盘表示)
|
||||
private BigDecimal oddsValue;
|
||||
|
||||
// 注单结算结果:
|
||||
// 0:无结果,2:走水,3:输,4:赢,5:赢一半,6:输一半,
|
||||
// 7:赛事取消,8:赛事延期,11:比赛延迟,12:比赛中断,
|
||||
// 13:未知,15:比赛放弃,16:异常盘口,17:未知状态,
|
||||
// 18:比赛取消,19:比赛延期
|
||||
private String betResult;
|
||||
|
||||
// 最终赔率(按盘口类型)
|
||||
private BigDecimal oddFinally;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1,11 +1,9 @@
|
|||
package com.ff.sports.db.dto;
|
||||
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.ff.base.utils.sign.Md5Utils;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author cengy
|
||||
|
|
@ -15,13 +13,24 @@ public class GetMemberInfoRequest implements Serializable {
|
|||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 渠道用户id,不能为空
|
||||
* 用户名,不能为空
|
||||
*/
|
||||
private String merchantUserId;
|
||||
private String userName;
|
||||
|
||||
public String toJSON() {
|
||||
Map<String, Object> map = new LinkedHashMap<>();
|
||||
map.put("merchantUserId", merchantUserId);
|
||||
return JSON.toJSONString(map);
|
||||
/**
|
||||
* 商户编码
|
||||
*/
|
||||
private String merchantCode;
|
||||
/**
|
||||
* Long型时间戳(13位)
|
||||
*/
|
||||
private String timestamp = System.currentTimeMillis() + "";
|
||||
|
||||
private String signature;
|
||||
|
||||
public void buildSignature(String key) {
|
||||
|
||||
String signature = Md5Utils.md5New(Md5Utils.md5New(merchantCode + "&" + userName + "&" + timestamp) + "&" + key);
|
||||
this.signature = signature;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,26 +13,15 @@ import java.util.List;
|
|||
public class GetMemberInfoResponse implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private Boolean success;
|
||||
private String message;
|
||||
private MemberInfo data;
|
||||
private Integer code;
|
||||
private Boolean status;
|
||||
private String msg;
|
||||
private String code;
|
||||
private Long serverTime;
|
||||
private MemberInfoDTO data;
|
||||
|
||||
@Data
|
||||
public static class MemberInfo implements Serializable{
|
||||
private static final long serialVersionUID = 1L;
|
||||
private String merchantUserId;
|
||||
private Integer userId; // FB体育用户id
|
||||
private Integer walletType; // 用户钱包类型 , see enum: wallet_type
|
||||
private Integer currencyType; // 用户币种类型 , see enum: currency_type
|
||||
private List<Wallet> wallets; // 钱包集合
|
||||
private Integer oddsLevel;// 赔率级别 , see enum: user_odds_level_enum
|
||||
}
|
||||
@Data
|
||||
public static class Wallet implements Serializable{
|
||||
private static final long serialVersionUID = 1L;
|
||||
private Integer currencyType; // 币种类型 , see enum: currency_type
|
||||
private BigDecimal balance; // 余额
|
||||
private Integer currencyId; // 币种id , see enum: currency
|
||||
public static class MemberInfoDTO {
|
||||
private BigDecimal balance;
|
||||
private String userName;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,30 +0,0 @@
|
|||
package com.ff.sports.db.dto;
|
||||
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author cengy
|
||||
*/
|
||||
@Data
|
||||
public class GetTokenRequest implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private String merchantUserId;
|
||||
// 平台类型,pc,h5, mobile , see enum: plat_form_enum
|
||||
private String platForm;
|
||||
// 客户端用户ip地址,尽可能提供,我们用于风控
|
||||
private String ip; // 可选
|
||||
|
||||
public String toJSON() {
|
||||
Map<String, String> map = new LinkedHashMap<>();
|
||||
map.put("merchantUserId", merchantUserId);
|
||||
map.put("platForm", platForm);
|
||||
return JSON.toJSONString(map);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,49 +0,0 @@
|
|||
package com.ff.sports.db.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author cengy
|
||||
*/
|
||||
@Data
|
||||
public class GetTokenResponse implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private Boolean success;
|
||||
private String message;
|
||||
private Integer code;
|
||||
private TokenDTO data;
|
||||
|
||||
@Data
|
||||
public static class TokenDTO implements Serializable {
|
||||
private String token; // 用户鉴权token,用于客户端鉴权
|
||||
private ServerInfo serverInfo; // 服务器地址信息
|
||||
private List<Domain> domains; // 全部服务器地址信息
|
||||
private String themeBgColor; // 主题背景色
|
||||
private String themeFgColor; // 主题前景色
|
||||
private Integer userId; // FB用户ID
|
||||
}
|
||||
|
||||
@Data
|
||||
public static class ServerInfo implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
private String apiServerAddress; // app接口服务地址
|
||||
private String apiEmbeddedServerAddress; // app内嵌网页地址
|
||||
private String pushServerAddress; // 推送服务地址
|
||||
private String pcAddress; // PC投注网站地址
|
||||
private String h5Address; // h5投注网站地址
|
||||
private String virtualAddress; // 虚拟体育投注网站地址
|
||||
private String virtualMatchVideoAddress; // 虚拟赛事视频地址
|
||||
private String ouH5Address; // 欧版h5地址
|
||||
private String ouPcAddress; // 欧版pc地址
|
||||
}
|
||||
|
||||
@Data
|
||||
public static class Domain {
|
||||
private Integer type; // 域名类型
|
||||
private List<String> domains; // 域名集合
|
||||
}
|
||||
}
|
||||
|
|
@ -1,33 +0,0 @@
|
|||
package com.ff.sports.db.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author cengy
|
||||
*/
|
||||
@Data
|
||||
public class GetUrlResponse implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private Boolean success;
|
||||
private String message;
|
||||
private List<UrlDTO> data;
|
||||
private Integer code;
|
||||
|
||||
@Data
|
||||
public static class UrlDTO implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
private int type; //域名类型,1:API,2:PUSH,3:H5,4:PC,5:IMAGE , see enum: domain_type_enum
|
||||
private List<DomainDTO> domainList; // 域名集合
|
||||
}
|
||||
|
||||
@Data
|
||||
public static class DomainDTO implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
private String domain; // 域名
|
||||
private int weight; // 权限值
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
package com.ff.sports.db.dto;
|
||||
|
||||
import com.ff.base.utils.sign.Md5Utils;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @author cengy
|
||||
*/
|
||||
@Data
|
||||
public class KickUserRequest implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
private String userName;
|
||||
private String merchantCode;
|
||||
private String timestamp = System.currentTimeMillis() + "";
|
||||
private String signature;
|
||||
|
||||
public void buildSignature(String key) {
|
||||
String signature = Md5Utils.md5New(Md5Utils.md5New(merchantCode + "&" + userName + "&" + timestamp) + "&" + key);
|
||||
this.signature = signature;
|
||||
}
|
||||
}
|
||||
|
|
@ -8,10 +8,13 @@ import java.io.Serializable;
|
|||
* @author cengy
|
||||
*/
|
||||
@Data
|
||||
public class GetUrlRequest implements Serializable {
|
||||
public class KickUserResponse implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
public String toJSON() {
|
||||
return "{}";
|
||||
}
|
||||
private Boolean status;
|
||||
private String msg;
|
||||
private String code;
|
||||
private Long serverTime;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,57 @@
|
|||
package com.ff.sports.db.dto;
|
||||
|
||||
import com.ff.base.utils.sign.Md5Utils;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* @author cengy
|
||||
*/
|
||||
@Data
|
||||
public class LoginRequest implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
private String userName;
|
||||
private String merchantCode;
|
||||
private String timestamp = System.currentTimeMillis() + "";
|
||||
private String signature;
|
||||
|
||||
// 不能传错,用户可能受到设备类型相关风控措施的错误限制,进而影响正常用户货量,并产生客诉
|
||||
private String terminal; // 终端类型:【电脑传值:pc】,【移动设备传值:mobile】 注:这个参数传值必须是pc或者mobile,
|
||||
private BigDecimal balance; // 用户余额,N
|
||||
private String currency; // 币种(见参数映射:支持币种 )会员首次登录,必须填写币种参数,否则注册失败
|
||||
|
||||
private String callbackUrl; // 玩家会话失效跳转的商户地址url(非必传)
|
||||
private String stoken; // 非必传字段(商户方用户会话)
|
||||
|
||||
// 非必传字段(支持体育游戏其他端的跳转) ,
|
||||
// C端⽀持跳转的游戏,如果C端⽀持跳转多个游戏 ,
|
||||
// 则使⽤逗号区分。 具体字段可查看:参数字段映射第6条 参数字段映射
|
||||
private String jumpsupport;
|
||||
private String jumpfrom; // 非必传字段,同上
|
||||
|
||||
private String agentId; // 信用网(代理id),N
|
||||
// 用户语种:
|
||||
//zh:中文
|
||||
//en:英文
|
||||
//vi:越南语
|
||||
//tw:中文繁体
|
||||
//th:泰语
|
||||
//ms:马来语
|
||||
//ad:印尼语
|
||||
//ko:韩语
|
||||
//mya:缅甸语
|
||||
//pt:葡萄牙语
|
||||
//es:西班牙语
|
||||
//非必传字段
|
||||
private String language;
|
||||
private String ip; // 非必传字段 说明:商户端在该字段上传入用户登陆时端ip
|
||||
|
||||
public void buildSignature(String key) {
|
||||
String signature = Md5Utils.md5New(Md5Utils.md5New(merchantCode + "&" + userName + "&" + terminal + "&" + timestamp) + "&" + key);
|
||||
|
||||
this.signature = signature;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
package com.ff.sports.db.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author cengy
|
||||
*/
|
||||
@Data
|
||||
public class LoginResponse implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private Boolean status;
|
||||
private String msg;
|
||||
private String code;
|
||||
private Long serverTime;
|
||||
private LoginRespDTO data;
|
||||
|
||||
@Data
|
||||
public static class LoginRespDTO {
|
||||
private String domain; // 体育游戏前端URL
|
||||
private String token; // 带有登录状态的token
|
||||
private String apiDomain;// 赛事API的域名(若没有对接赛事API,为空)
|
||||
private String imgDomain; // 静态资源域名
|
||||
private String loginUrl; // 登录体育URL,可直接跳转
|
||||
private String userId; // 用户id
|
||||
private String url; // 参加活动的商户使用,客户端域名和参数拼接后提供商户使用
|
||||
private List<String> loginUrlArr; // loginUrl数组,多个域名,调试使用
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1,41 +0,0 @@
|
|||
package com.ff.sports.db.dto;
|
||||
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author cengy
|
||||
*/
|
||||
@Data
|
||||
public class OrderFilesRequest implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 开始时间戳,13位数字,不能为null
|
||||
*/
|
||||
private Long startTime;
|
||||
|
||||
/**
|
||||
* 结束时间戳,13位数字,不能为null
|
||||
*/
|
||||
private Long endTime;
|
||||
|
||||
public String toJSON() {
|
||||
Map<String, Object> map = new LinkedHashMap<>();
|
||||
map.put("endTime", endTime);
|
||||
map.put("startTime", startTime);
|
||||
return JSON.toJSONString(map);
|
||||
// String endTimeStr = endTime ; // 转换为字符串
|
||||
// String startTimeStr = startTime; // 转换为字符串
|
||||
//
|
||||
// String json = "{" +
|
||||
// "\"endTime\": \"" + endTimeStr + "\", " +
|
||||
// "\"startTime\": \"" + startTimeStr + "\"" +
|
||||
// "}";
|
||||
// return json;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
package com.ff.sports.db.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author cengy
|
||||
*/
|
||||
@Data
|
||||
public class OrderFilesResponse implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private Boolean success;
|
||||
private String message;
|
||||
private Integer code;
|
||||
|
||||
private List<FileId> data;
|
||||
|
||||
@Data
|
||||
public static class FileId implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
private Long fileId;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1,26 +0,0 @@
|
|||
package com.ff.sports.db.dto;
|
||||
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author cengy
|
||||
*/
|
||||
@Data
|
||||
public class OrderInfoRequest implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
/**
|
||||
* 文件Id,需要从/order/file/ids接口获取到
|
||||
*/
|
||||
private Long fileId;
|
||||
|
||||
public String toJSON() {
|
||||
Map<String, Object> map = new LinkedHashMap<>();
|
||||
map.put("fileId", fileId);
|
||||
return JSON.toJSONString(map);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,115 +0,0 @@
|
|||
package com.ff.sports.db.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author cengy
|
||||
*/
|
||||
@Data
|
||||
public class OrderInfoResponse implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private Boolean success;
|
||||
private String message;
|
||||
private Integer code;
|
||||
|
||||
private List<OrderDTO> data;
|
||||
|
||||
@Data
|
||||
public static class OrderDTO implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
private String id; // 订单号
|
||||
private Integer rejectReason; // 拒单原因码 see enum: order_reject_type
|
||||
private String rejectReasonStr; // 拒单原因
|
||||
private String userId; // FB平台用户ID
|
||||
private String merchantId; // 渠道ID
|
||||
private String merchantUserId; // 渠道用户ID
|
||||
private Integer currency; // 币种 see enum: currency
|
||||
private String exchangeRate; // 汇率快照
|
||||
private Integer seriesType; // 关次类型 ,0 单关、1 串关, see enum: series_type
|
||||
private String betType; // 投注类型
|
||||
private Integer allUp; // 总关数
|
||||
private Integer allUpAlive; // 存活关数
|
||||
private String stakeAmount; // 投注额(本金)
|
||||
private String liabilityStake; // 名义投注额(名义本金)
|
||||
private String settleAmount; // 结算派奖金额
|
||||
private Integer orderStatus; // 订单状态 see enum: order_status
|
||||
private Integer payStatus; // 付款状态
|
||||
private Integer oddsChange; // 是否接受赔率变更 0不接受,1 接受更好赔率,2接受任意赔率 , see enum: odds_change_enum
|
||||
private String device; // 设备类型 (pc、h5、mobile) , see enum: plat_form_enum
|
||||
private String ip; // 投注IP地址
|
||||
private String settleTime; // 订单结算时间
|
||||
private String createTime; // 订单创建时间
|
||||
private String modifyTime; // 订单确认时间
|
||||
private String cancelTime; // 订单取消时间
|
||||
private String thirdRemark; // 第三方备注
|
||||
private String relatedId; // 三方关联ID
|
||||
private String maxWinAmount; // 最大可赢金额
|
||||
private String loseAmount; // 最大赔付金额
|
||||
private Integer rollBackCount; // 回滚次数
|
||||
private Integer itemCount; // 选项数
|
||||
private Integer seriesValue; // 串几关
|
||||
private Integer betNum; // 子单数
|
||||
private String cashOutTotalStake; // 提前结算总本金
|
||||
private String liabilityCashoutStake; // 提前结算名义总本金
|
||||
private String cashOutPayoutStake; // 提前结算总派奖额
|
||||
private String reserveId; // 预约订单单号
|
||||
private Integer cashOutCount; // 提前结算次数
|
||||
private String unitStake; // 每单金额
|
||||
private Integer reserveVersion; // 预约订单版本号
|
||||
private List<BetDTO> betList; // 注单集合
|
||||
}
|
||||
|
||||
@Data
|
||||
public static class BetDTO implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private String id; // ID
|
||||
private String orderId; // 订单ID
|
||||
private Integer sportId; // 运动ID
|
||||
private String matchId; // 比赛ID
|
||||
private String matchName; // 比赛名称
|
||||
private Integer period; // 阶段ID
|
||||
private String marketId; // 玩法ID
|
||||
private Integer marketType; // 玩法类型
|
||||
private Integer optionType; // 投注项类型
|
||||
private String optionName; // 选项名称
|
||||
private String marketName; // 玩法名称
|
||||
private String tournamentId; // 联赛ID
|
||||
private String tournamentName; // 联赛名称
|
||||
private String odds; // 欧式赔率
|
||||
private Integer oddsFormat; // 投注时赔率类型
|
||||
private String betOdds; // 投注时赔率
|
||||
private Integer settleStatus; // 结算状态
|
||||
private Integer settleResult; // 结算结果
|
||||
private Boolean isInplay; // 是否滚球
|
||||
private String remark; // 备注
|
||||
private Double p1; // 变量1 (例如:让几个球)
|
||||
private Double p2; // 变量2
|
||||
private Double p3; // 变量3
|
||||
private String extendedParameter; // 亚洲让球线
|
||||
private String extraInfo; // 当前比分
|
||||
private String pendingTime; // 延迟等待时间
|
||||
private String betScore; // 下注当时比分
|
||||
private Integer cancelReason; // 取消原因
|
||||
private String cancelReasonName; // 取消原因文本
|
||||
private Integer matchType; // 赛事类型
|
||||
private String matchTime; // 开赛时间
|
||||
private Integer virtualMatchDay; // 轮次
|
||||
private Integer virtualChampId; // 赛季
|
||||
private Integer virtualLegOrder; // 淘汰赛回合
|
||||
private Integer virtualWeekDay; // 小组赛比赛日
|
||||
private Integer virtualBlockId; // 期
|
||||
private Integer leaguePhase; // 联赛阶段
|
||||
private String maxStake; // 最大投注额
|
||||
private String validSettleStakeAmount; // 有效已结算投注额
|
||||
private String validSettleAmount; // 有效返还额
|
||||
private String cashOutCancelStake; // 提前结算取消总额
|
||||
private Integer walletType; // 钱包类型
|
||||
private Integer version; // 数据变更标记
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1,11 +1,9 @@
|
|||
package com.ff.sports.db.dto;
|
||||
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.ff.base.utils.sign.Md5Utils;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author cengy
|
||||
|
|
@ -13,27 +11,28 @@ import java.util.Map;
|
|||
@Data
|
||||
public class TransferDetailRequest implements Serializable {
|
||||
|
||||
/**
|
||||
* 用户名,N
|
||||
*/
|
||||
private String userName;
|
||||
/**
|
||||
* 商户code
|
||||
*/
|
||||
private String merchantCode;
|
||||
/**
|
||||
* 交易id(19位数字)
|
||||
*/
|
||||
private String transferId;
|
||||
|
||||
private String timestamp = System.currentTimeMillis() + "";
|
||||
|
||||
/**
|
||||
* 业务id,不能为null
|
||||
* 签名
|
||||
*/
|
||||
private String businessId;
|
||||
private String signature;
|
||||
|
||||
/**
|
||||
* 渠道用户ID,不能为null
|
||||
*/
|
||||
private String merchantUserId;
|
||||
|
||||
/**
|
||||
* 转账类型 , see enum: transfer_type_enum 不能为空
|
||||
*/
|
||||
private String transferType;
|
||||
|
||||
public String toJSON() {
|
||||
Map<String, Object> map = new LinkedHashMap<>();
|
||||
map.put("businessId", businessId);
|
||||
map.put("merchantUserId", merchantUserId);
|
||||
map.put("transferType", transferType);
|
||||
return JSON.toJSONString(map);
|
||||
public void buildSignature(String key) {
|
||||
String signature = Md5Utils.md5New(Md5Utils.md5New(merchantCode + "&" + transferId + "&" + timestamp) + "&" + key);
|
||||
this.signature = signature;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,27 +12,27 @@ import java.math.BigDecimal;
|
|||
public class TransferDetailResponse implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private Boolean success;
|
||||
private String message;
|
||||
private TransferDetail data;
|
||||
private Integer code;
|
||||
private TransferDetailDTO data;
|
||||
private Boolean status;
|
||||
private String msg;
|
||||
private String code;
|
||||
private Long serverTime;
|
||||
|
||||
@Data
|
||||
public static class TransferDetail implements Serializable {
|
||||
public static class TransferDetailDTO implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private Integer id;
|
||||
private Integer userId;
|
||||
private String merchantUserId;
|
||||
private String businessId;
|
||||
// IN 转入
|
||||
// OUT 转出
|
||||
private String transferType;
|
||||
private BigDecimal beforeTransferAmount;
|
||||
private BigDecimal afterTransferAmount;
|
||||
private Integer status; // 状态 , see enum: transfer_status_enum, 1 Successful 0 Failure
|
||||
private Long createTime; // 记录创建时间
|
||||
private Integer currencyId;// 币种id , see enum: currency
|
||||
private String transferId; // 交易id
|
||||
private String merchantCode; // 商户代码
|
||||
private Long userId; // 用户id
|
||||
private Integer transferType; // 交易类型 1:加款,2:扣款
|
||||
private BigDecimal amount; // 交易金额
|
||||
private BigDecimal beforeTransfer; // 转账前余额
|
||||
private Integer afterTransfer; // 转账后余额
|
||||
private Integer status; // 转账成功与否(0:失败,1:成功)
|
||||
private String mag; // 转账模式 1:免转,2:转账
|
||||
private Integer transferMode; // 转账涉及订单(transferMode为2时,该字段为空)
|
||||
private Long createTime; // 交易时间
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,46 +0,0 @@
|
|||
package com.ff.sports.db.dto;
|
||||
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author cengy
|
||||
*/
|
||||
@Data
|
||||
public class TransferInRequest implements Serializable {
|
||||
|
||||
/**
|
||||
* 转账金额,不能为null
|
||||
* 必须大於或等於0
|
||||
*/
|
||||
private BigDecimal amount;
|
||||
|
||||
/**
|
||||
* 业务id,不能为null
|
||||
*/
|
||||
private String businessId;
|
||||
|
||||
/**
|
||||
* 渠道用户ID,不能为null
|
||||
*/
|
||||
private String merchantUserId;
|
||||
|
||||
/**
|
||||
* 币种id,可不传入
|
||||
*/
|
||||
private Integer currencyId;
|
||||
|
||||
public String toJSON() {
|
||||
Map<String, Object> map = new LinkedHashMap<>();
|
||||
map.put("amount", amount);
|
||||
map.put("businessId", businessId);
|
||||
map.put("currencyId", currencyId);
|
||||
map.put("merchantUserId", merchantUserId);
|
||||
return JSON.toJSONString(map);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
package com.ff.sports.db.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* @author cengy
|
||||
*/
|
||||
@Data
|
||||
public class TransferInResponse implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private Boolean success;
|
||||
private BigDecimal data;
|
||||
private Integer code;
|
||||
private String message;
|
||||
}
|
||||
|
|
@ -1,46 +0,0 @@
|
|||
package com.ff.sports.db.dto;
|
||||
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author cengy
|
||||
*/
|
||||
@Data
|
||||
public class TransferOutRequest implements Serializable {
|
||||
|
||||
/**
|
||||
* 转账金额,不能为null
|
||||
* 必须大於或等於0
|
||||
*/
|
||||
private BigDecimal amount;
|
||||
|
||||
/**
|
||||
* 业务id,不能为null
|
||||
*/
|
||||
private String businessId;
|
||||
|
||||
/**
|
||||
* 渠道用户ID,不能为null
|
||||
*/
|
||||
private String merchantUserId;
|
||||
|
||||
/**
|
||||
* 币种id,可不传入
|
||||
*/
|
||||
private Integer currencyId;
|
||||
|
||||
public String toJSON() {
|
||||
Map<String, Object> map = new LinkedHashMap<>();
|
||||
map.put("amount", amount);
|
||||
map.put("businessId", businessId);
|
||||
map.put("currencyId", currencyId);
|
||||
map.put("merchantUserId", merchantUserId);
|
||||
return JSON.toJSONString(map);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
package com.ff.sports.db.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* @author cengy
|
||||
*/
|
||||
@Data
|
||||
public class TransferOutResponse implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private Boolean success;
|
||||
private BigDecimal data;
|
||||
private Integer code;
|
||||
private String message;
|
||||
}
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
package com.ff.sports.db.dto;
|
||||
|
||||
import com.ff.base.utils.sign.Md5Utils;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @author cengy
|
||||
*/
|
||||
@Data
|
||||
public class TransferRequest implements Serializable {
|
||||
|
||||
private String userName;
|
||||
private String merchantCode;
|
||||
private int transferType; // 1:加款 2:扣款
|
||||
|
||||
private String amount; // 金额,小数2位
|
||||
private String transferId; // 交易的讯息号,唯一标示,不可重复,19位长度的字符串
|
||||
private String timestamp = String.valueOf(System.currentTimeMillis());
|
||||
private String signature;
|
||||
|
||||
public void buildSignature(String key) {
|
||||
String signature = Md5Utils.md5New(Md5Utils.md5New(merchantCode + "&" + userName + "&" + transferType + "&" + amount + "&" + transferId + "&" + timestamp) + "&" + key);
|
||||
this.signature = signature;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
package com.ff.sports.db.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @author cengy
|
||||
*/
|
||||
@Data
|
||||
public class TransferResponse implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private Boolean status;
|
||||
private String msg;
|
||||
private String code;
|
||||
private Long serverTime;
|
||||
private TransferDTO data;
|
||||
|
||||
@Data
|
||||
public static class TransferDTO {
|
||||
private String userName;
|
||||
}
|
||||
}
|
||||
|
|
@ -21,7 +21,6 @@ import com.ff.member.domain.Member;
|
|||
import com.ff.member.service.IMemberService;
|
||||
import com.ff.sports.db.client.DBSportsClient;
|
||||
import com.ff.sports.db.dto.*;
|
||||
import com.ff.utils.TimestampFromString;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
|
@ -39,9 +38,9 @@ import java.util.stream.Collectors;
|
|||
|
||||
|
||||
/**
|
||||
* FB体育
|
||||
* DB体育
|
||||
*
|
||||
* @author shi
|
||||
* @author cengy
|
||||
* @date 2024/10/21
|
||||
*/
|
||||
@Service("DBSportsService")
|
||||
|
|
@ -73,8 +72,8 @@ public class DBSportsServiceImpl implements IGamesService {
|
|||
* @param errorCode 错误代码
|
||||
* @return {@link Boolean }
|
||||
*/
|
||||
private Boolean isSuccess(Integer errorCode) {
|
||||
return 0 == errorCode;
|
||||
private Boolean isSuccess(String errorCode) {
|
||||
return "0000".equals(errorCode);
|
||||
}
|
||||
|
||||
String getSign(String bodyJsonString, String merchantId, String merchantApiSecret, long requestTimestamp) {
|
||||
|
|
@ -97,16 +96,16 @@ public class DBSportsServiceImpl implements IGamesService {
|
|||
request.setUserName(requestDTO.getAccount());
|
||||
request.setMerchantCode(requestDTO.getAgentId());
|
||||
request.setCurrency(requestDTO.getCurrency());
|
||||
request.calcSign(requestDTO.getAgentKey());
|
||||
request.buildSignature(requestDTO.getAgentKey());
|
||||
|
||||
String lang = "zh";
|
||||
//String lang = requestDTO.getLan
|
||||
String requestId = IdUtils.fastUUID();
|
||||
CreateUserResponse response = dbSportsClient.createMember(request, requestId, lang);
|
||||
CreateUserResponse response = dbSportsClient.createMember(request, requestId);
|
||||
if (isSuccess(response.getCode())) {
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
|
||||
log.error("创建会员失败, errorCode:{}, errorMessage:{}", response.getCode(), response.getMessage());
|
||||
log.error("创建会员失败, errorCode:{}, errorMessage:{}", response.getCode(), response.getMsg());
|
||||
throw new ApiException(ErrorCode.Create_Member_Failure.getCode());
|
||||
}
|
||||
|
||||
|
|
@ -114,7 +113,7 @@ public class DBSportsServiceImpl implements IGamesService {
|
|||
/**
|
||||
* 按代理id进行交换转账
|
||||
*
|
||||
* @param requestDTO 外汇转账moeny dto
|
||||
* @param requestDTO 外汇转账
|
||||
* @return {@link Long }
|
||||
*/
|
||||
@Override
|
||||
|
|
@ -148,32 +147,38 @@ public class DBSportsServiceImpl implements IGamesService {
|
|||
exchangeMoney.setTransactionId(transactionId);
|
||||
// 转入
|
||||
if (requestDTO.getTransferType().equals(TransferType.GAMES.getCode())) {
|
||||
TransferInRequest request = new TransferInRequest();
|
||||
request.setMerchantUserId(requestDTO.getAccount());
|
||||
request.setAmount(requestDTO.getAmount());
|
||||
request.setBusinessId(requestDTO.getOrderId());
|
||||
request.setCurrencyId(Integer.parseInt(requestDTO.getCurrency()));
|
||||
long timestamp = System.currentTimeMillis();
|
||||
String jsonBody = request.toJSON();
|
||||
String sign = getSign(jsonBody,
|
||||
requestDTO.getAgentId(),
|
||||
requestDTO.getAgentKey(),
|
||||
timestamp
|
||||
TransferRequest request = new TransferRequest();
|
||||
request.setUserName(requestDTO.getAccount());
|
||||
request.setTransferType(1);
|
||||
request.setTransferId(requestDTO.getOrderId());
|
||||
request.setMerchantCode(requestDTO.getAgentId());
|
||||
request.setAmount(requestDTO.getAmount().toString());
|
||||
request.buildSignature(requestDTO.getAgentKey());
|
||||
|
||||
TransferResponse response = dbSportsClient.transferIn(
|
||||
request, IdUtils.fastUUID()
|
||||
);
|
||||
|
||||
TransferInResponse response = dbSportsClient.transferIn(
|
||||
request,
|
||||
sign,
|
||||
timestamp,
|
||||
requestDTO.getAgentId());
|
||||
if (isSuccess(response.getCode())) {
|
||||
|
||||
exchangeMoney.setBalance(response.getData());
|
||||
GetMemberInfoRequest queryMemberRequest = new GetMemberInfoRequest();
|
||||
queryMemberRequest.setUserName(requestDTO.getAccount());
|
||||
queryMemberRequest.setMerchantCode(requestDTO.getAgentId());
|
||||
queryMemberRequest.buildSignature(requestDTO.getAgentKey());
|
||||
String requestId = IdUtils.fastUUID();
|
||||
try {
|
||||
GetMemberInfoResponse queryMemberResponse = dbSportsClient.getMemberInfo(queryMemberRequest, requestId);
|
||||
if (this.isSuccess(queryMemberResponse.getCode())) {
|
||||
BigDecimal transAmount = requestDTO.getAmount();
|
||||
exchangeMoney.setCoinBefore(response.getData().subtract(transAmount));
|
||||
exchangeMoney.setCoinAfter(response.getData());
|
||||
exchangeMoney.setCurrencyBefore(response.getData().subtract(transAmount));
|
||||
exchangeMoney.setCurrencyAfter(response.getData());
|
||||
BigDecimal afterAmount = queryMemberResponse.getData().getBalance();
|
||||
BigDecimal beforeAmount = afterAmount.subtract(transAmount);
|
||||
exchangeMoney.setBalance(transAmount);
|
||||
exchangeMoney.setCoinBefore(beforeAmount);
|
||||
exchangeMoney.setCoinAfter(afterAmount);
|
||||
exchangeMoney.setCurrencyBefore(beforeAmount);
|
||||
exchangeMoney.setCurrencyAfter(afterAmount);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("查询会员失败, errorCode:{}, errorMessage:{}", response.getCode(), response.getMsg(), e);
|
||||
}
|
||||
exchangeMoney.setStatus(StatusType.SUCCESS.getValue()); // SUCCESS
|
||||
gameExchangeMoneyService.insertGameExchangeMoney(exchangeMoney);
|
||||
} else {
|
||||
|
|
@ -187,39 +192,35 @@ public class DBSportsServiceImpl implements IGamesService {
|
|||
.agentKey(requestDTO.getAgentKey())
|
||||
.build();
|
||||
BigDecimal balance = this.getMemberInfo(memberInfoRequestDTO).getBalance();
|
||||
if (balance.compareTo(BigDecimal.ZERO) <= 0) {
|
||||
throw new ApiException(ErrorCode.INSUFFICIENT_PLAYER_BALANCE.getCode());
|
||||
}
|
||||
|
||||
TransferOutRequest request = new TransferOutRequest();
|
||||
request.setMerchantUserId(requestDTO.getAccount());
|
||||
request.setAmount(/*requestDTO.getAmount()*/ balance);
|
||||
request.setBusinessId(requestDTO.getOrderId());
|
||||
request.setCurrencyId(Integer.parseInt(requestDTO.getCurrency()));
|
||||
TransferRequest request = new TransferRequest();
|
||||
request.setUserName(requestDTO.getAccount());
|
||||
request.setTransferType(2); // 转出
|
||||
request.setTransferId(requestDTO.getOrderId());
|
||||
request.setMerchantCode(requestDTO.getAgentId());
|
||||
request.setAmount(/*requestDTO.getAmount().toString()*/ balance.toString());
|
||||
request.buildSignature(requestDTO.getAgentKey());
|
||||
|
||||
long timestamp = System.currentTimeMillis();
|
||||
String jsonBody = request.toJSON();
|
||||
String sign = getSign(jsonBody,
|
||||
requestDTO.getAgentId(),
|
||||
requestDTO.getAgentKey(),
|
||||
timestamp
|
||||
);
|
||||
|
||||
TransferOutResponse response = dbSportsClient
|
||||
TransferResponse response = dbSportsClient
|
||||
.transferOut(
|
||||
request,
|
||||
sign,
|
||||
timestamp,
|
||||
requestDTO.getAgentId()
|
||||
request, IdUtils.fastUUID()
|
||||
);
|
||||
|
||||
|
||||
//判断是否转移成功
|
||||
if (this.isSuccess(response.getCode())) {
|
||||
//更新数据
|
||||
exchangeMoney.setBalance(response.getData());
|
||||
BigDecimal transAmount = balance;
|
||||
exchangeMoney.setCoinBefore(response.getData().add(transAmount));
|
||||
exchangeMoney.setCoinAfter(response.getData());
|
||||
exchangeMoney.setCurrencyBefore(response.getData().add(transAmount));
|
||||
exchangeMoney.setCurrencyAfter(response.getData());
|
||||
BigDecimal beforeAmount = balance;
|
||||
BigDecimal afterAmount = BigDecimal.ZERO;
|
||||
|
||||
//更新数据
|
||||
exchangeMoney.setBalance(transAmount);
|
||||
exchangeMoney.setCoinBefore(beforeAmount);
|
||||
exchangeMoney.setCoinAfter(afterAmount);
|
||||
exchangeMoney.setCurrencyBefore(beforeAmount);
|
||||
exchangeMoney.setCurrencyAfter(afterAmount);
|
||||
exchangeMoney.setStatus(StatusType.SUCCESS.getValue()); // SUCCESS
|
||||
gameExchangeMoneyService.insertGameExchangeMoney(exchangeMoney);
|
||||
} else {
|
||||
|
|
@ -238,35 +239,20 @@ public class DBSportsServiceImpl implements IGamesService {
|
|||
@Override
|
||||
public MemberInfoResponseDTO getMemberInfo(MemberInfoRequestDTO requestDTO) {
|
||||
GetMemberInfoRequest request = new GetMemberInfoRequest();
|
||||
request.setMerchantUserId(requestDTO.getAccounts());
|
||||
long timestamp = System.currentTimeMillis();
|
||||
String jsonBody = request.toJSON();
|
||||
String sign = getSign(jsonBody,
|
||||
requestDTO.getAgentId(),
|
||||
requestDTO.getAgentKey(),
|
||||
timestamp
|
||||
);
|
||||
GetMemberInfoResponse response = dbSportsClient.getMemberInfo(
|
||||
request,
|
||||
sign,
|
||||
timestamp,
|
||||
requestDTO.getAgentId()
|
||||
);
|
||||
request.setUserName(requestDTO.getAccounts());
|
||||
request.setMerchantCode(requestDTO.getAgentId());
|
||||
request.buildSignature(requestDTO.getAgentKey());
|
||||
String requestId = IdUtils.fastUUID();
|
||||
GetMemberInfoResponse response = dbSportsClient.getMemberInfo(request, requestId);
|
||||
//判断是否获取成功
|
||||
if (this.isSuccess(response.getCode())) {
|
||||
BigDecimal balance = new BigDecimal("0.00");
|
||||
|
||||
for (GetMemberInfoResponse.Wallet wallet : response.getData().getWallets()) {
|
||||
balance = balance.add(wallet.getBalance());
|
||||
}
|
||||
return MemberInfoResponseDTO.builder()
|
||||
.status(GameMemberStatus.UNKNOWN.getCode())
|
||||
.balance(balance)
|
||||
.balance(response.getData().getBalance())
|
||||
.account(requestDTO.getAccounts())
|
||||
.build();
|
||||
} else {
|
||||
throw new ApiException(ErrorCode.Get_Member_Info_Failure.getCode());
|
||||
}
|
||||
throw new ApiException(ErrorCode.Get_Member_Info_Failure.getCode());
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -277,83 +263,35 @@ public class DBSportsServiceImpl implements IGamesService {
|
|||
*/
|
||||
@Override
|
||||
public String loginWithoutRedirect(GamesLogin requestDTO) {
|
||||
GetTokenRequest request = new GetTokenRequest();
|
||||
request.setMerchantUserId(requestDTO.getAccount());
|
||||
request.setPlatForm(/*requestDTO.getPlatform()*/ "mobile"); // pc,h5, mobile , see enum: plat_form_enum
|
||||
long timestamp = System.currentTimeMillis();
|
||||
String jsonBody = request.toJSON();
|
||||
String sign = getSign(jsonBody,
|
||||
requestDTO.getAgentId(),
|
||||
requestDTO.getAgentKey(),
|
||||
timestamp
|
||||
);
|
||||
LoginRequest request = new LoginRequest();
|
||||
request.setUserName(requestDTO.getAccount());
|
||||
request.setMerchantCode(requestDTO.getAgentId());
|
||||
if (requestDTO.getPlatform().equalsIgnoreCase("web")) {
|
||||
request.setTerminal("pc");
|
||||
} else {
|
||||
request.setTerminal("mobile");
|
||||
}
|
||||
request.setLanguage(requestDTO.getLang());
|
||||
request.setCurrency(requestDTO.getCurrency());
|
||||
|
||||
GetTokenResponse response = dbSportsClient.getToken(
|
||||
request,
|
||||
sign,
|
||||
timestamp,
|
||||
requestDTO.getAgentId()
|
||||
request.buildSignature(requestDTO.getAgentKey());
|
||||
|
||||
LoginResponse response = dbSportsClient.login(
|
||||
request, IdUtils.fastUUID()
|
||||
);
|
||||
|
||||
if (this.isSuccess(response.getCode())) {
|
||||
String token = response.getData().getToken();
|
||||
Integer userId = response.getData().getUserId();
|
||||
GetTokenResponse.ServerInfo serverInfo = response.getData().getServerInfo();
|
||||
String h5Address = serverInfo.getH5Address();
|
||||
if (StringUtils.isEmpty(h5Address)) {
|
||||
LoginResponse.LoginRespDTO respDTO = response.getData();
|
||||
|
||||
String loginURL = respDTO.getLoginUrl();
|
||||
if (StringUtils.isEmpty(loginURL)) {
|
||||
throw new ApiException(ErrorCode.Get_Url_Failure.getCode());
|
||||
}
|
||||
|
||||
return h5Address +
|
||||
"/index.html#/" +
|
||||
"?token=" +
|
||||
token +
|
||||
"&nickname=" +
|
||||
userId +
|
||||
"&apiSrc=" +
|
||||
serverInfo.getApiServerAddress() +
|
||||
"&pushSrc=" +
|
||||
serverInfo.getPushServerAddress() +
|
||||
"&virtualSrc=" +
|
||||
serverInfo.getVirtualAddress() +
|
||||
"&platformName=XK体育";
|
||||
return loginURL;
|
||||
}
|
||||
|
||||
|
||||
/*GetUrlRequest request = new GetUrlRequest();
|
||||
long timestamp = System.currentTimeMillis();
|
||||
String jsonBody = request.toJSON();
|
||||
String sign = getSign(jsonBody,
|
||||
requestDTO.getAgentId(),
|
||||
requestDTO.getAgentKey(),
|
||||
timestamp
|
||||
);
|
||||
GetUrlResponse response = fbSportsClient.getUrl(
|
||||
request,
|
||||
sign,
|
||||
timestamp,
|
||||
requestDTO.getAgentId()
|
||||
);
|
||||
//判断是否获取成功
|
||||
if (this.isSuccess(response.getCode())) {
|
||||
List<GetUrlResponse.UrlDTO> urlDTOS = new ArrayList<>();
|
||||
for (GetUrlResponse.UrlDTO urlDTO : response.getData()) {
|
||||
if (urlDTO.getType() == 3) { // 3:h5
|
||||
urlDTOS.add(urlDTO);
|
||||
}
|
||||
}
|
||||
if (urlDTOS.isEmpty()){
|
||||
throw new ApiException(ErrorCode.Get_Url_Failure.getCode());
|
||||
}
|
||||
int randomIndex = new Random().nextInt(urlDTOS.size());
|
||||
GetUrlResponse.UrlDTO urlDTO = urlDTOS.get(randomIndex);
|
||||
Collections.shuffle(urlDTO.getDomainList());
|
||||
return urlDTO.getDomainList().get(0).getDomain();
|
||||
}*/
|
||||
throw new ApiException(ErrorCode.Get_Url_Failure.getCode());
|
||||
}
|
||||
|
||||
private static final Long GAME_ID = 11111L;
|
||||
|
||||
/**
|
||||
* 获取游戏列表
|
||||
|
|
@ -418,23 +356,13 @@ public class DBSportsServiceImpl implements IGamesService {
|
|||
|
||||
if (!Objects.equals(gameExchangeMoney.getStatus(), StatusType.SUCCESS.getValue())) {
|
||||
TransferDetailRequest request = new TransferDetailRequest();
|
||||
request.setMerchantUserId(requestDTO.getAccount());
|
||||
request.setTransferType(Objects.equals(gameExchangeMoney.getExchangeType(), TransferType.GAMES.getCode())
|
||||
? "IN" : "OUT");
|
||||
long timestamp = System.currentTimeMillis();
|
||||
String jsonBody = request.toJSON();
|
||||
String sign = getSign(jsonBody,
|
||||
requestDTO.getAgentId(),
|
||||
requestDTO.getAgentKey(),
|
||||
timestamp
|
||||
);
|
||||
request.setMerchantCode(requestDTO.getAgentId());
|
||||
request.setTransferId(gameExchangeMoney.getOrderId());
|
||||
request.buildSignature(requestDTO.getAgentKey());
|
||||
TransferDetailResponse response = dbSportsClient.transferDetail(
|
||||
request,
|
||||
sign,
|
||||
timestamp,
|
||||
requestDTO.getAgentId()
|
||||
request, IdUtils.fastUUID()
|
||||
);
|
||||
if (this.isSuccess(response.getCode())) {
|
||||
if (this.isSuccess(response.getCode()) && response.getData().getStatus() == 1) {
|
||||
status = StatusType.SUCCESS.getValue();
|
||||
} else {
|
||||
status = StatusType.FAILURE.getValue();
|
||||
|
|
@ -458,75 +386,34 @@ public class DBSportsServiceImpl implements IGamesService {
|
|||
*/
|
||||
@Override
|
||||
public Boolean getBetRecordByTime(BetRecordByTimeDTO requestDTO) {
|
||||
Long lend = requestDTO.getEndTime();
|
||||
Long lstart = requestDTO.getStartTime();
|
||||
//betRecordByTimeDTO.setStartTime(lstart);
|
||||
//betRecordByTimeDTO.setEndTime(lend);
|
||||
|
||||
OrderFilesRequest request = new OrderFilesRequest();
|
||||
request.setStartTime(lstart);
|
||||
request.setEndTime(lend);
|
||||
long timestamp = System.currentTimeMillis();
|
||||
String jsonBody = request.toJSON();
|
||||
String sign = getSign(jsonBody,
|
||||
requestDTO.getAgentId(),
|
||||
requestDTO.getAgentKey(),
|
||||
timestamp
|
||||
);
|
||||
OrderFilesResponse orderFilesResponse = dbSportsClient.orderFiles(
|
||||
request,
|
||||
sign,
|
||||
timestamp,
|
||||
requestDTO.getAgentId()
|
||||
);
|
||||
if (this.isSuccess(orderFilesResponse.getCode())) {
|
||||
for (OrderFilesResponse.FileId fileId : orderFilesResponse.getData()) {
|
||||
try {
|
||||
getOrderData(fileId.getFileId(), requestDTO);
|
||||
} catch (Exception e) {
|
||||
log.error("获取订单数据失败,fileId:{},agentId:{}", fileId, requestDTO.getAgentId());
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
log.error("获取订单文件失败,agentId:{}", requestDTO.getAgentId());
|
||||
return false;
|
||||
this.getRealtimeRecord(requestDTO, 1);
|
||||
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
|
||||
void getOrderData(Long fileId, BetRecordByTimeDTO requestDTO) {
|
||||
OrderInfoRequest request = new OrderInfoRequest();
|
||||
request.setFileId(fileId);
|
||||
long timestamp = System.currentTimeMillis();
|
||||
String jsonBody = request.toJSON();
|
||||
String sign = getSign(jsonBody,
|
||||
requestDTO.getAgentId(),
|
||||
requestDTO.getAgentKey(),
|
||||
timestamp
|
||||
void getRealtimeRecord(BetRecordByTimeDTO requestDTO, int pageNum) {
|
||||
|
||||
GetBetListRequest request = new GetBetListRequest();
|
||||
request.setStartTime(String.valueOf(requestDTO.getStartTime()));
|
||||
request.setEndTime(String.valueOf(requestDTO.getEndTime()));
|
||||
request.setMerchantCode(requestDTO.getAgentId());
|
||||
request.setPageNum(pageNum);
|
||||
request.setPageSize(1000);
|
||||
request.buildSignature(requestDTO.getAgentKey());
|
||||
|
||||
GetBetListResponse response = dbSportsClient.getBetList(
|
||||
request, IdUtils.fastUUID()
|
||||
);
|
||||
|
||||
OrderInfoResponse orderInfoResponse = dbSportsClient.getOrderJsonData(
|
||||
request,
|
||||
sign,
|
||||
timestamp,
|
||||
requestDTO.getAgentId()
|
||||
);
|
||||
if (!this.isSuccess(orderInfoResponse.getCode())) {
|
||||
if (this.isSuccess(response.getCode())) {
|
||||
List<GetBetListResponse.OrderItemDTO> list = response.getList();
|
||||
if (CollectionUtils.isEmpty(list)) {
|
||||
return;
|
||||
}
|
||||
List<OrderInfoResponse.OrderDTO> settledOrderList = new ArrayList<>();
|
||||
for (OrderInfoResponse.OrderDTO orderDTO : orderInfoResponse.getData()) {
|
||||
// 0 Created 未确认
|
||||
// 1 Confirming 确认中
|
||||
// 2 Rejected 已拒单
|
||||
// 3 Canceled 已取消
|
||||
// 4 Confirmed 已接单
|
||||
// 5 Settled 已结算
|
||||
if (!orderDTO.getOrderStatus().equals(5)) { // 已结算
|
||||
continue;
|
||||
this.batchInsert(list, requestDTO);
|
||||
getRealtimeRecord(requestDTO, ++pageNum);
|
||||
}
|
||||
settledOrderList.add(orderDTO);
|
||||
}
|
||||
this.batchInsert(settledOrderList, requestDTO);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -537,39 +424,8 @@ public class DBSportsServiceImpl implements IGamesService {
|
|||
*/
|
||||
@Override
|
||||
public Boolean getBetRecordByHistoryTime(BetRecordByTimeDTO requestDTO) {
|
||||
Long lend = requestDTO.getEndTime();
|
||||
Long lstart = requestDTO.getStartTime();
|
||||
//betRecordByTimeDTO.setStartTime(lstart);
|
||||
//betRecordByTimeDTO.setEndTime(lend);
|
||||
|
||||
OrderFilesRequest request = new OrderFilesRequest();
|
||||
request.setStartTime(lstart);
|
||||
request.setEndTime(lend);
|
||||
long timestamp = System.currentTimeMillis();
|
||||
String jsonBody = request.toJSON();
|
||||
String sign = getSign(jsonBody,
|
||||
requestDTO.getAgentId(),
|
||||
requestDTO.getAgentKey(),
|
||||
timestamp
|
||||
);
|
||||
OrderFilesResponse orderFilesResponse = dbSportsClient.orderFiles(
|
||||
request,
|
||||
sign,
|
||||
timestamp,
|
||||
requestDTO.getAgentId()
|
||||
);
|
||||
if (this.isSuccess(orderFilesResponse.getCode())) {
|
||||
for (OrderFilesResponse.FileId fileId : orderFilesResponse.getData()) {
|
||||
try {
|
||||
getOrderData(fileId.getFileId(), requestDTO);
|
||||
} catch (Exception e) {
|
||||
log.error("获取订单数据失败,fileId:{},agentId:{}", fileId, requestDTO.getAgentId());
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
log.error("获取订单文件失败,agentId:{}", requestDTO.getAgentId());
|
||||
return false;
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -604,6 +460,14 @@ public class DBSportsServiceImpl implements IGamesService {
|
|||
@Override
|
||||
public Boolean kickMember(KickMemberRequestDTO kickMemberRequestDTO) {
|
||||
|
||||
KickUserRequest request = new KickUserRequest();
|
||||
request.setUserName(kickMemberRequestDTO.getAccount());
|
||||
request.setMerchantCode(kickMemberRequestDTO.getAgentId());
|
||||
request.buildSignature(kickMemberRequestDTO.getAgentKey());
|
||||
KickUserResponse kickUserResponse = dbSportsClient.kickUser(request, IdUtils.fastUUID());
|
||||
if (this.isSuccess(kickUserResponse.getCode())) {
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
return Boolean.FALSE;
|
||||
}
|
||||
|
||||
|
|
@ -656,17 +520,20 @@ public class DBSportsServiceImpl implements IGamesService {
|
|||
*
|
||||
* @param settledOrderList 投注记录
|
||||
*/
|
||||
private void batchInsert(List<OrderInfoResponse.OrderDTO> settledOrderList, BetRecordByTimeDTO betRecordByTimeDTO) {
|
||||
private void batchInsert(List<GetBetListResponse.OrderItemDTO> settledOrderList, BetRecordByTimeDTO betRecordByTimeDTO) {
|
||||
List<GameBettingDetails> gameBettingDetails = new ArrayList<>();
|
||||
List<String> wagersIds = new ArrayList<>();
|
||||
//数据组装
|
||||
List<OrderInfoResponse.OrderDTO> dataList = settledOrderList;
|
||||
List<GetBetListResponse.OrderItemDTO> dataList = settledOrderList;
|
||||
if (CollectionUtils.isEmpty(dataList)) {
|
||||
return;
|
||||
}
|
||||
|
||||
//数据转化
|
||||
for (OrderInfoResponse.OrderDTO dataBean : dataList) {
|
||||
for (GetBetListResponse.OrderItemDTO dataBean : dataList) {
|
||||
if (dataBean.getOrderStatus() != 1) { // 只关心结算的
|
||||
continue;
|
||||
}
|
||||
GameBettingDetails bettingDetails = this.dataBuild(GamesDataBuildDTO.builder()
|
||||
.platform(betRecordByTimeDTO.getVendor())
|
||||
.data(dataBean).build());
|
||||
|
|
@ -674,7 +541,7 @@ public class DBSportsServiceImpl implements IGamesService {
|
|||
bettingDetails.setId(IdUtil.getSnowflakeNextId());
|
||||
gameBettingDetails.add(bettingDetails);
|
||||
}
|
||||
wagersIds.add(dataBean.getId());
|
||||
wagersIds.add(dataBean.getOrderNo());
|
||||
}
|
||||
if (CollectionUtils.isEmpty(gameBettingDetails)) {
|
||||
return;
|
||||
|
|
@ -701,21 +568,21 @@ public class DBSportsServiceImpl implements IGamesService {
|
|||
public GameBettingDetails dataBuild(GamesDataBuildDTO gamesDataBuildDTO) {
|
||||
|
||||
//转化类
|
||||
OrderInfoResponse.OrderDTO dataBean = (OrderInfoResponse.OrderDTO) gamesDataBuildDTO.getData();
|
||||
Member member = memberService.selectMemberByGameAccount(dataBean.getMerchantUserId());
|
||||
GetBetListResponse.OrderItemDTO dataBean = (GetBetListResponse.OrderItemDTO) gamesDataBuildDTO.getData();
|
||||
Member member = memberService.selectMemberByGameAccount(dataBean.getUserName());
|
||||
if (ObjectUtils.isEmpty(member)) {
|
||||
return null;
|
||||
}
|
||||
//List<Game> gameList = redisCache.getCacheList(CacheConstants.DB_Sports);
|
||||
//Game game = gameList.get(0);
|
||||
BigDecimal originPayoffAmount = new BigDecimal(dataBean.getSettleAmount());
|
||||
BigDecimal betAmount = new BigDecimal(dataBean.getStakeAmount());
|
||||
BigDecimal originPayoffAmount = BigDecimal.valueOf(dataBean.getSettleAmount());
|
||||
BigDecimal betAmount = new BigDecimal(dataBean.getOrderAmount());
|
||||
|
||||
int compareResult = originPayoffAmount.compareTo(betAmount);
|
||||
long payoffTime = TimestampFromString.to(dataBean.getSettleTime());
|
||||
long createTime = TimestampFromString.to(dataBean.getCreateTime());
|
||||
long payoffTime = dataBean.getSettleTime();
|
||||
long createTime = dataBean.getCreateTime();
|
||||
Platform platform = gamesDataBuildDTO.getPlatform();
|
||||
String systemCurrency = platform.getOurCurrency(dataBean.getCurrency().toString());
|
||||
String systemCurrency = platform.getOurCurrency(dataBean.getCurrency());
|
||||
//数据构造
|
||||
GameBettingDetails gameBettingDetails = GameBettingDetails.builder()
|
||||
.tenantKey(member.getTenantKey())
|
||||
|
|
@ -729,16 +596,16 @@ public class DBSportsServiceImpl implements IGamesService {
|
|||
.gameName(GamePlatforms.DBSports.getInfo())
|
||||
.gameStatus(compareResult > 0 ? GameStatus.WIN.getCode() : compareResult < 0 ? GameStatus.FAIL.getCode() : GameStatus.FLAT.getCode())
|
||||
.gameStatusType(1) // 一般下注
|
||||
.gameCurrencyCode(dataBean.getCurrency().toString())
|
||||
.account(dataBean.getMerchantUserId())
|
||||
.wagersId(dataBean.getId())
|
||||
.gameCurrencyCode(dataBean.getCurrency())
|
||||
.account(dataBean.getUserName())
|
||||
.wagersId(dataBean.getOrderNo())
|
||||
.wagersTime(createTime)
|
||||
.betAmount(betAmount)
|
||||
.payoffTime(payoffTime)
|
||||
.payoffAmount(originPayoffAmount.abs())
|
||||
.settlementTime(payoffTime)
|
||||
.turnover(betAmount)
|
||||
.orderNo(dataBean.getId())
|
||||
.orderNo(dataBean.getOrderNo())
|
||||
.settlementStatus(SettlementStatusEnum.COMPLETED.getCode())
|
||||
.build();
|
||||
gameBettingDetails.setCreateBy(Constants.SYSTEM);
|
||||
|
|
|
|||
|
|
@ -176,9 +176,9 @@ public class FBSportsServiceImpl implements IGamesService {
|
|||
timestamp,
|
||||
requestDTO.getAgentId());
|
||||
if (isSuccess(response.getCode())) {
|
||||
|
||||
exchangeMoney.setBalance(response.getData());
|
||||
BigDecimal transAmount = requestDTO.getAmount();
|
||||
|
||||
exchangeMoney.setBalance(transAmount);
|
||||
exchangeMoney.setCoinBefore(response.getData().subtract(transAmount));
|
||||
exchangeMoney.setCoinAfter(response.getData());
|
||||
exchangeMoney.setCurrencyBefore(response.getData().subtract(transAmount));
|
||||
|
|
@ -222,9 +222,9 @@ public class FBSportsServiceImpl implements IGamesService {
|
|||
|
||||
//判断是否转移成功
|
||||
if (this.isSuccess(response.getCode())) {
|
||||
//更新数据
|
||||
exchangeMoney.setBalance(response.getData());
|
||||
BigDecimal transAmount = balance;
|
||||
//更新数据
|
||||
exchangeMoney.setBalance(transAmount);
|
||||
exchangeMoney.setCoinBefore(response.getData().add(transAmount));
|
||||
exchangeMoney.setCoinAfter(response.getData());
|
||||
exchangeMoney.setCurrencyBefore(response.getData().add(transAmount));
|
||||
|
|
|
|||
Loading…
Reference in New Issue