374 lines
10 KiB
Go
374 lines
10 KiB
Go
package statcenterctl
|
|
|
|
import (
|
|
"net/http"
|
|
"strconv"
|
|
"time"
|
|
|
|
"91porn-server/app/proto"
|
|
"91porn-server/common/log"
|
|
"91porn-server/models/l/visitlogmod"
|
|
"91porn-server/models/v/proxymod"
|
|
"91porn-server/models/v/rchgordmod"
|
|
"91porn-server/models/v/usermod"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
// SyncAllRouterList 返回所有同步接口路由
|
|
func SyncAllRouterList(ctx *gin.Context) {
|
|
//返回实体
|
|
var resp = gin.H{
|
|
"code": 200,
|
|
"msg": "ok",
|
|
"data": gin.H{
|
|
"syncNewUser": "/services/user/newUser",
|
|
"syncUserAccess": "/services/user/userAccess",
|
|
"syncInviteRecord": "/services/user/inviteRecord",
|
|
"syncNewOrder": "/services/order/newOrder",
|
|
"syncFinishOrder": "/services/order/finishOrder",
|
|
},
|
|
}
|
|
ctx.JSON(http.StatusOK, resp)
|
|
}
|
|
|
|
// NewUserAccessList 新日活数据同步
|
|
func NewUserAccessList(ctx *gin.Context) {
|
|
//返回实体
|
|
var resp struct {
|
|
Code int `json:"code"` // 200正常 其他异常
|
|
Msg string `json:"msg"` // 错误消息
|
|
Data []proto.NewUserAccessMsg `json:"data"` // 数据
|
|
proto.AdsInfo
|
|
}
|
|
resp.Code = 200
|
|
resp.Msg = "ok"
|
|
//请求实体
|
|
var request struct {
|
|
EndTime int64 `form:"updated_at" json:"updated_at"` // 时间戳
|
|
MaxSize int64 `form:"max" json:"max" binding:"required"` // 最大条数
|
|
}
|
|
if err := ctx.ShouldBind(&request); err != nil {
|
|
resp.Code = 400
|
|
resp.Msg = err.Error()
|
|
ctx.JSON(http.StatusOK, resp)
|
|
return
|
|
}
|
|
t := time.Unix(request.EndTime, 0)
|
|
//查询
|
|
visitList, err := visitlogmod.AccessSyncByTime(t, request.MaxSize)
|
|
if err != nil {
|
|
log.Error("NewUserAccessList AccessSyncById ", log.E(err))
|
|
resp.Code = 400
|
|
resp.Msg = err.Error()
|
|
ctx.JSON(http.StatusOK, resp)
|
|
return
|
|
}
|
|
//用户id
|
|
visitListLen := len(visitList)
|
|
uidIds := make([]uint64, visitListLen)
|
|
accessList := make([]proto.NewUserAccessMsg, visitListLen)
|
|
for i, userInfo := range visitList {
|
|
accessList[i] = proto.NewUserAccessMsg{
|
|
UserId: userInfo.UID,
|
|
DeviceId: userInfo.DevID,
|
|
Platform: userInfo.SysType,
|
|
Coin: 0,
|
|
IsVip: 0,
|
|
InviteUserId: 0,
|
|
LastOnlineTime: userInfo.CreatedAt.Unix(),
|
|
}
|
|
uidIds[i] = userInfo.UID
|
|
}
|
|
if len(uidIds) > 0 {
|
|
//查询用户上级信息
|
|
invitationMap, err := proxymod.GetInvrLv1Map(uidIds)
|
|
if err != nil {
|
|
log.Error("NewUserAccessList proxymod.GetInvrLv1Map err ", log.E(err))
|
|
resp.Code = 400
|
|
resp.Msg = err.Error()
|
|
ctx.JSON(http.StatusOK, resp)
|
|
return
|
|
}
|
|
//查询用户信息
|
|
usersMap, err := usermod.UserMap(uidIds)
|
|
if err != nil {
|
|
log.Error("NewUserRegisterList usermod.UserMap err ", log.E(err))
|
|
resp.Code = 400
|
|
resp.Msg = err.Error()
|
|
ctx.JSON(http.StatusOK, resp)
|
|
return
|
|
}
|
|
for index, r := range accessList {
|
|
//上级id
|
|
if invitationMap != nil {
|
|
fUid := invitationMap[r.UserId]
|
|
if fUid > 0 {
|
|
accessList[index].InviteUserId = fUid
|
|
}
|
|
}
|
|
//用户信息
|
|
if usersMap != nil {
|
|
user := usersMap[r.UserId]
|
|
if user.UID > 0 {
|
|
accessList[index].RegistTime = user.CreatedAt.Unix()
|
|
accessList[index].RegisterIp = user.RegisterIP
|
|
accessList[index].ChannelCode = user.DistrictCode
|
|
if user.VipExpireDate.After(time.Now()) {
|
|
accessList[index].IsVip = 1
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
resp.Data = accessList
|
|
ctx.JSON(http.StatusOK, resp)
|
|
}
|
|
|
|
// NewUserRegisterList 新注册数据同步
|
|
func NewUserRegisterList(ctx *gin.Context) {
|
|
//返回实体
|
|
var resp struct {
|
|
Code int `json:"code"` // 200正常 其他异常
|
|
Msg string `json:"msg"` // 错误消息
|
|
Data []proto.NewUserRegisterMsg `json:"data"` // 数据
|
|
}
|
|
resp.Code = 200
|
|
resp.Msg = "ok"
|
|
//请求实体
|
|
var request struct {
|
|
UserId uint64 `form:"id" json:"id"` // 用户ID
|
|
MaxSize int64 `form:"max" json:"max" binding:"required"` // 最大条数
|
|
}
|
|
if err := ctx.ShouldBind(&request); err != nil {
|
|
resp.Code = 400
|
|
resp.Msg = err.Error()
|
|
ctx.JSON(http.StatusOK, resp)
|
|
return
|
|
}
|
|
//查询
|
|
userList, err := usermod.StatcenterSyncList(request.UserId, request.MaxSize)
|
|
if err != nil {
|
|
log.Error("NewUserRegisterList usermod.StatcenterSyncList err ", log.E(err))
|
|
resp.Code = 400
|
|
resp.Msg = err.Error()
|
|
ctx.JSON(http.StatusOK, resp)
|
|
return
|
|
}
|
|
//用户id
|
|
userListLen := len(userList)
|
|
uidIds := make([]uint64, userListLen)
|
|
registerList := make([]proto.NewUserRegisterMsg, userListLen)
|
|
for i, userInfo := range userList {
|
|
registerInfo := proto.NewUserRegisterMsg{
|
|
UserId: userInfo.UID,
|
|
DeviceId: userInfo.DevID,
|
|
Platform: userInfo.SysType,
|
|
Coin: 0,
|
|
IsVip: 0,
|
|
InviteUserId: 0,
|
|
RegistTime: userInfo.CreatedAt.Unix(),
|
|
RegisterIp: userInfo.RegisterIP,
|
|
ChannelCode: userInfo.DistrictCode,
|
|
LastOnlineTime: userInfo.LastVisitAt.Unix(),
|
|
}
|
|
if userInfo.VipExpireDate.After(time.Now()) {
|
|
registerInfo.IsVip = 1
|
|
}
|
|
registerList[i] = registerInfo
|
|
uidIds[i] = userInfo.UID
|
|
}
|
|
if len(uidIds) > 0 {
|
|
//查询用户上级信息
|
|
invitationMap, err := proxymod.GetInvrLv1Map(uidIds)
|
|
if err != nil {
|
|
log.Error("NewUserRegisterList proxymod.GetInvrLv1Map err ", log.E(err))
|
|
resp.Code = 400
|
|
resp.Msg = err.Error()
|
|
ctx.JSON(http.StatusOK, resp)
|
|
return
|
|
}
|
|
if invitationMap != nil {
|
|
for index, r := range registerList {
|
|
//上级id
|
|
fUid := invitationMap[r.UserId]
|
|
if fUid > 0 {
|
|
registerList[index].InviteUserId = fUid
|
|
}
|
|
}
|
|
}
|
|
}
|
|
resp.Data = registerList
|
|
ctx.JSON(http.StatusOK, resp)
|
|
}
|
|
|
|
// NewUserInviterList 新推广数据同步
|
|
func NewUserInviterList(ctx *gin.Context) {
|
|
//返回实体
|
|
var resp struct {
|
|
Code int `json:"code"` // 200正常 其他异常
|
|
Msg string `json:"msg"` // 错误消息
|
|
Data []interface{} `json:"data"` // 数据
|
|
}
|
|
resp.Code = 200
|
|
resp.Msg = "ok"
|
|
//请求实体
|
|
var request struct {
|
|
Id string `form:"id" json:"id" binding:"required"` // 记录id
|
|
MaxSize int64 `form:"max" json:"max" binding:"required"` // 最大条数
|
|
}
|
|
if err := ctx.ShouldBind(&request); err != nil {
|
|
resp.Code = 400
|
|
resp.Msg = err.Error()
|
|
ctx.JSON(http.StatusOK, resp)
|
|
return
|
|
}
|
|
//查询
|
|
data, err := proxymod.NewStatCenterSyncInviteList(request.Id, request.MaxSize)
|
|
if err != nil {
|
|
log.Error("NewUserInviterList proxymod.StatCenterSyncInviteList err ", log.E(err))
|
|
resp.Code = 400
|
|
resp.Msg = err.Error()
|
|
ctx.JSON(http.StatusOK, resp)
|
|
return
|
|
}
|
|
res := make([]interface{}, len(data))
|
|
for i, v := range data {
|
|
res[i] = proto.NewUserInviteMsg{
|
|
Id: v.ID.Hex(),
|
|
UserId: v.Invitee,
|
|
InviteUserId: v.UID,
|
|
}
|
|
}
|
|
resp.Data = res
|
|
ctx.JSON(http.StatusOK, resp)
|
|
}
|
|
|
|
// NewUserRechargeList 新充值数据同步
|
|
func NewUserRechargeList(ctx *gin.Context) {
|
|
//返回实体
|
|
var resp struct {
|
|
Code int `json:"code"` // 200正常 其他异常
|
|
Msg string `json:"msg"` // 错误消息
|
|
Data []proto.NewUserRechargeMsg `json:"data"` // 数据
|
|
}
|
|
resp.Code = 200
|
|
resp.Msg = "ok"
|
|
//请求实体
|
|
var request struct {
|
|
Id string `form:"id" json:"id" binding:"required"` // 记录id
|
|
MaxSize int64 `form:"max" json:"max" binding:"required"` // 最大条数
|
|
}
|
|
if err := ctx.ShouldBind(&request); err != nil {
|
|
resp.Code = 400
|
|
resp.Msg = err.Error()
|
|
ctx.JSON(http.StatusOK, resp)
|
|
return
|
|
}
|
|
//查询
|
|
rechargeOrders, err := rchgordmod.NewStatCenterSyncRecharge(request.Id, request.MaxSize)
|
|
if err != nil {
|
|
log.Error("NewUserRechargeList rchgordmod.NewStatCenterSyncRecharge err ", log.E(err))
|
|
resp.Code = 400
|
|
resp.Msg = err.Error()
|
|
ctx.JSON(http.StatusOK, resp)
|
|
return
|
|
}
|
|
data := make([]proto.NewUserRechargeMsg, len(rechargeOrders))
|
|
for i, v := range rechargeOrders {
|
|
temp := proto.NewUserRechargeMsg{
|
|
Id: v.ID.Hex(),
|
|
OID: v.OID,
|
|
OrderId: v.ID.Hex(),
|
|
UserId: v.UID,
|
|
Money: v.Money,
|
|
Channel: v.Channel,
|
|
RechargeType: v.RechargeType,
|
|
OrderType: "vip",
|
|
OrderTime: v.CreatedAt.Unix(),
|
|
PayTime: v.SuccessAt.Unix(),
|
|
PayAmount: v.PayMoney,
|
|
IsPaid: 0,
|
|
Poundage: 0,
|
|
ProductType: v.ProductType,
|
|
}
|
|
if temp.OID == "" {
|
|
temp.OID = strconv.FormatInt(int64(temp.UserId), 10) + temp.OID
|
|
}
|
|
//是否vip
|
|
if v.Category == 0 {
|
|
temp.OrderType = "coin"
|
|
}
|
|
if v.Status == 3 {
|
|
temp.IsPaid = 1
|
|
} else {
|
|
temp.PayTime = 0
|
|
}
|
|
data[i] = temp
|
|
}
|
|
resp.Data = data
|
|
ctx.JSON(http.StatusOK, resp)
|
|
}
|
|
|
|
// NewUserPaidRechargeList 新充值数据同步,已完成
|
|
func NewUserPaidRechargeList(ctx *gin.Context) {
|
|
//返回实体
|
|
var resp struct {
|
|
Code int `json:"code"` // 200正常 其他异常
|
|
Msg string `json:"msg"` // 错误消息
|
|
Data []proto.NewUserRechargeMsg `json:"data"` // 数据
|
|
}
|
|
resp.Code = 200
|
|
resp.Msg = "ok"
|
|
//请求实体
|
|
var request struct {
|
|
SuccessAt int64 `form:"success_at" json:"success_at"` // 完成时间
|
|
MaxSize int64 `form:"max" json:"max" binding:"required"` // 最大条数
|
|
}
|
|
if err := ctx.ShouldBind(&request); err != nil {
|
|
resp.Code = 400
|
|
resp.Msg = err.Error()
|
|
ctx.JSON(http.StatusOK, resp)
|
|
return
|
|
}
|
|
t := time.Unix(request.SuccessAt, 0)
|
|
//查询
|
|
rechargeOrders, err := rchgordmod.StatCenterSyncRecharge(t, request.MaxSize)
|
|
if err != nil {
|
|
log.Error("NewUserRechargeList rchgordmod.StatCenterSyncRecharge err ", log.E(err))
|
|
resp.Code = 400
|
|
resp.Msg = err.Error()
|
|
ctx.JSON(http.StatusOK, resp)
|
|
return
|
|
}
|
|
data := make([]proto.NewUserRechargeMsg, len(rechargeOrders))
|
|
for i, v := range rechargeOrders {
|
|
temp := proto.NewUserRechargeMsg{
|
|
Id: v.ID.Hex(),
|
|
OID: v.OID,
|
|
OrderId: v.ID.Hex(),
|
|
UserId: v.UID,
|
|
Money: v.Money,
|
|
Channel: v.Channel,
|
|
RechargeType: v.RechargeType,
|
|
OrderType: "vip",
|
|
OrderTime: v.CreatedAt.Unix(),
|
|
PayTime: v.SuccessAt.Unix(),
|
|
PayAmount: v.PayMoney,
|
|
IsPaid: 1,
|
|
Poundage: 0,
|
|
ProductType: v.ProductType,
|
|
}
|
|
if temp.OID == "" {
|
|
temp.OID = strconv.FormatInt(int64(temp.UserId), 10) + temp.OID
|
|
}
|
|
//是否vip
|
|
if v.Category == 0 {
|
|
temp.OrderType = "coin"
|
|
}
|
|
data[i] = temp
|
|
}
|
|
resp.Data = data
|
|
ctx.JSON(http.StatusOK, resp)
|
|
}
|