package agentApi import ( "bytes" "fmt" "image/jpeg" "stat/api/proto" "stat/common" "stat/common/stdLog" "stat/common/utils" "stat/models/channelmod" "stat/service/agentSer" "stat/statg" "go.mongodb.org/mongo-driver/bson" "github.com/dchest/captcha" "github.com/gin-gonic/gin" ) // @Tags 渠道后台 // @Summary 获取图片验证码 // @Description 获取图片验证码 // @Accept json // @Produce json // @Security ApiKeyAuth // @Success 200 {object} proto.AgentImgVerifyCode "成功" // @Success 400 {string} string "失败" // @Router /api/stat/agent/imgVerify [POST] func AgentImgVerifyCode(ctx *gin.Context) { codeB := captcha.RandomDigits(4) id := common.RandStr(8) statg.VerifyIMGStore.Set(id, codeB) img := captcha.NewImage(id, codeB, 180, 65) var buf bytes.Buffer _ = jpeg.Encode(&buf, img, nil) resp := proto.AgentImgVerifyCode{ VerifyImg: buf.Bytes(), ImgId: id, } stdLog.ServerJSON(ctx, stdLog.Success, resp) } // @Tags 渠道后台 // @Summary 代理商登陆 // @Description 代理商登陆 // @Accept json // @Produce json // @Param param body proto.AgentLoginReq true "参数" // @Success 200 {object} proto.AgentLoginRes "成功" // @Success 400 {string} string "失败" // @Router /api/stat/agent/login [POST] func AgentLogin(ctx *gin.Context) { param := proto.AgentLoginReq{} if err := ctx.ShouldBindJSON(¶m); err != nil { stdLog.ServerJSON(ctx, stdLog.ParamError, err) return } ip := ctx.ClientIP() code, agentInfo := agentSer.AgentLogin(ctx, ip, param) if code != stdLog.Success { stdLog.ServerJSON(ctx, code, "") return } detail := &proto.ChannelAgentInfo{ Channel: agentInfo.Channel, AppIds: agentInfo.AppIds, UserName: agentInfo.UserName, ParentAgent: agentInfo.ParentAgent, ChildCount: agentInfo.ChildCount, Status: agentInfo.Status, Mobile: agentInfo.Mobile, Type: agentInfo.Type, Remark: agentInfo.Remark, Lock: agentInfo.Lock, Wallet: agentInfo.Wallet, CreatedAt: agentInfo.CreatedAt, UpdatedAt: agentInfo.UpdatedAt, ChildShowDivideRate: agentInfo.ChildShowDivideRate, } ruleFilter := bson.M{ channelmod.FN.ChannelDeductionRule.Channel: agentInfo.Channel, } ruleInfoList, _ := channelmod.FindManyChannelDeductionRule(ctx, ruleFilter) for _, ruleinfo := range ruleInfoList { detail.Settlement = ruleinfo.Settlement detail.CPAPrice = ruleinfo.CPAPrice detail.CPSRate = ruleinfo.CPSRate detail.DivideRate = 100 // } resp := proto.AgentLoginRes{ Token: agentInfo.Token, Channel: agentInfo.Channel, Detail: detail, } stdLog.ServerJSON(ctx, stdLog.Success, resp) } // @Tags 渠道后台 // @Summary 获取渠道列表 // @Description 获取渠道列表 // @Accept json // @Produce json // @Param param body proto.AgentChannelInfoSearch true "参数" // @Success 200 {object} proto.AgentChannelInfoSearchResp "成功" // @Success 400 {string} string "失败" // @Security ApiKeyAuth // @Router /api/stat/agent/channel/list [POST] func AgentChannelList(ctx *gin.Context) { channel, err := utils.GetAdmin(ctx) if err != nil || channel == "" { stdLog.ServerJSON(ctx, stdLog.NoToken, err) return } //fmt.Println("channel") param := proto.AgentChannelInfoSearch{} if err := ctx.ShouldBindJSON(¶m); err != nil { stdLog.ServerJSON(ctx, stdLog.ParamError, err) return } resp, err := agentSer.AgentChannelListInfo(ctx, channel, ¶m) if err != nil { stdLog.ServerJSON(ctx, stdLog.Failure, err) return } stdLog.ServerJSON(ctx, stdLog.Success, resp) } // @Tags 渠道后台 // @Summary 更新渠道规则 // @Description 更新渠道规则 // @Accept json // @Produce json // @Param param body proto.AgentChannelRuleUpdate true "参数" // @Success 200 {string} string "成功" // @Success 400 {string} string "失败" // @Security ApiKeyAuth // @Router /api/stat/agent/channel/rule/update [POST] func AgentChannelRuleUpdate(ctx *gin.Context) { channel, err := utils.GetAdmin(ctx) if err != nil || channel == "" { stdLog.ServerJSON(ctx, stdLog.NoToken, err) return } param := proto.AgentChannelRuleUpdate{} if err := ctx.ShouldBindJSON(¶m); err != nil { stdLog.ServerJSON(ctx, stdLog.ParamError, err) return } err = agentSer.AgentChannelRuleUpdate(ctx, channel, ¶m) if err != nil { stdLog.ServerJSON(ctx, stdLog.Failure, err) return } stdLog.ServerJSON(ctx, stdLog.Success, "") } // @Tags 渠道后台 // @Summary 更新渠道信息 // @Description 更新渠道信息 // @Accept json // @Produce json // @Param param body proto.AgentChannelInfoUpdate true "参数" // @Success 200 {string} string "成功" // @Success 400 {string} string "失败" // @Security ApiKeyAuth // @Router /api/stat/agent/channel/info/update [POST] func AgentChannelInfoUpdate(ctx *gin.Context) { channel, err := utils.GetAdmin(ctx) if err != nil || channel == "" { stdLog.ServerJSON(ctx, stdLog.NoToken, err) return } param := proto.AgentChannelInfoUpdate{} if err := ctx.ShouldBindJSON(¶m); err != nil { stdLog.ServerJSON(ctx, stdLog.ParamError, err) return } err = agentSer.AgentChannelInfoUpdate(ctx, channel, ¶m) if err != nil { stdLog.ServerJSON(ctx, stdLog.Failure, err) return } stdLog.ServerJSON(ctx, stdLog.Success, "") } // @Tags 渠道后台 // @Summary 修改渠道密码 // @Description 修改渠道密码 // @Accept json // @Produce json // @Param param body proto.AgentChannelPasswordUpdate true "参数" // @Success 200 {string} string "成功" // @Success 400 {string} string "失败" // @Security ApiKeyAuth // @Router /api/stat/agent/channel/password/update [POST] func AgentChannelPasswordUpdate(ctx *gin.Context) { channel, err := utils.GetAdmin(ctx) if err != nil || channel == "" { stdLog.ServerJSON(ctx, stdLog.NoToken, err) return } fmt.Println("channel") param := proto.AgentChannelPasswordUpdate{} if err := ctx.ShouldBindJSON(¶m); err != nil { stdLog.ServerJSON(ctx, stdLog.ParamError, err) return } err = agentSer.AgentChannelPasswordUpdate(ctx, channel, ¶m) if err != nil { stdLog.ServerJSON(ctx, stdLog.Failure, err) return } stdLog.ServerJSON(ctx, stdLog.Success, "") } // @Tags 渠道后台 // @Summary 重置子渠道密码 // @Description 重置子渠道密码 // @Accept json // @Produce json // @Param param body proto.AgentChannelPasswordReset true "参数" // @Success 200 {string} string "成功" // @Success 400 {string} string "失败" // @Security ApiKeyAuth // @Router /api/stat/agent/channel/password/reset [POST] func AgentChannelPasswordReset(ctx *gin.Context) { channel, err := utils.GetAdmin(ctx) if err != nil || channel == "" { stdLog.ServerJSON(ctx, stdLog.NoToken, err) return } fmt.Println("channel") param := proto.AgentChannelPasswordReset{} if err := ctx.ShouldBindJSON(¶m); err != nil { stdLog.ServerJSON(ctx, stdLog.ParamError, err) return } err = agentSer.AgentChannelPasswordReset(ctx, channel, ¶m) if err != nil { stdLog.ServerJSON(ctx, stdLog.Failure, err) return } stdLog.ServerJSON(ctx, stdLog.Success, "") } // @Tags 渠道后台 // @Summary 添加一个子渠道 // @Description 添加一个子渠道 // @Accept json // @Produce json // @Param param body proto.AgentChannelInfoAdd true "参数" // @Success 200 {string} string "成功" // @Success 400 {string} string "失败" // @Security ApiKeyAuth // @Router /api/stat/agent/channel/add [POST] func AddAgentChannel(ctx *gin.Context) { channel, err := utils.GetAdmin(ctx) if err != nil || channel == "" { stdLog.ServerJSON(ctx, stdLog.NoToken, err) return } param := proto.AgentChannelInfoAdd{} if err := ctx.ShouldBindJSON(¶m); err != nil { stdLog.ServerJSON(ctx, stdLog.ParamError, err) return } err = agentSer.AddAgentChannelInfo(ctx, channel, ¶m) if err != nil { stdLog.ServerJSON(ctx, stdLog.Failure, err) return } stdLog.ServerJSON(ctx, stdLog.Success, "") } // @Tags 渠道后台 // @Summary 获取渠道统计Ex // @Description 获取渠道日常统计Ex // @Accept json // @Produce json // @Param param body proto.AgentChannelStatSearch true "参数" // @Success 200 {object} proto.AgentChannelStatResp "成功" // @Success 400 {string} string "失败" // @Security ApiKeyAuth // @Router /api/stat/agent/channel/stat [POST] func GetAgentChannelStat(ctx *gin.Context) { channel, err := utils.GetAdmin(ctx) if err != nil || channel == "" { stdLog.ServerJSON(ctx, stdLog.NoToken, err) return } param := proto.AgentChannelStatSearch{} if err := ctx.ShouldBindJSON(¶m); err != nil { stdLog.ServerJSON(ctx, stdLog.ParamError, err) return } resp, err := agentSer.GetAgentChannelStat(ctx, channel, ¶m) if err != nil { stdLog.ServerJSON(ctx, stdLog.Failure, err) return } stdLog.ServerJSON(ctx, stdLog.Success, resp) } // @Tags 渠道后台 // @Summary 获取首页渠道数据汇总 // @Description 获取首页渠道数据汇总 // @Accept json // @Produce json // @Param param body proto.AgentSummaryStatHomeSearch true "参数" // @Success 200 {object} proto.AgentSummaryStatHomeResp "成功" // @Success 400 {string} string "失败" // @Security ApiKeyAuth // @Router /api/stat/agent/summary/home [POST] func GetAgentSummaryStatHome(ctx *gin.Context) { channel, err := utils.GetAdmin(ctx) if err != nil || channel == "" { stdLog.ServerJSON(ctx, stdLog.NoToken, err) return } param := proto.AgentSummaryStatHomeSearch{} if err := ctx.ShouldBindJSON(¶m); err != nil { stdLog.ServerJSON(ctx, stdLog.ParamError, err) return } resp, err := agentSer.GetAgentSummaryStatHome(ctx, channel, ¶m) if err != nil { stdLog.ServerJSON(ctx, stdLog.Failure, err) return } stdLog.ServerJSON(ctx, stdLog.Success, resp) } // @Tags 渠道后台 // @Summary 获取子渠道数据汇总 // @Description 获取子渠道数据汇总 // @Accept json // @Produce json // @Param param body proto.AgentSummaryStatChildSearch true "参数" // @Success 200 {object} proto.AgentSummaryStatChildResp "成功" // @Success 400 {string} string "失败" // @Security ApiKeyAuth // @Router /api/stat/agent/summary/child [POST] func GetAgentSummaryStatChild(ctx *gin.Context) { channel, err := utils.GetAdmin(ctx) if err != nil || channel == "" { stdLog.ServerJSON(ctx, stdLog.NoToken, err) return } param := proto.AgentSummaryStatChildSearch{} if err := ctx.ShouldBindJSON(¶m); err != nil { stdLog.ServerJSON(ctx, stdLog.ParamError, err) return } resp, err := agentSer.GetAgentSummaryStatChild(ctx, channel, ¶m) if err != nil { stdLog.ServerJSON(ctx, stdLog.Failure, err) return } stdLog.ServerJSON(ctx, stdLog.Success, resp) } // @Tags 渠道后台 // @Summary 获取落地页列表 // @Description 获取落地页列表 // @Accept json // @Produce json // @Param param body proto.ChannelAppInfoReq true "参数" // @Success 200 {object} proto.ChannelAppInfoResp "成功" // @Success 400 {string} string "失败" // @Security ApiKeyAuth // @Router /api/stat/agent/channel/landpage [POST] func ChannelAppInfo(ctx *gin.Context) { channel, err := utils.GetAdmin(ctx) if err != nil || channel == "" { stdLog.ServerJSON(ctx, stdLog.NoToken, err) return } param := proto.ChannelAppInfoReq{} if err := ctx.ShouldBindJSON(¶m); err != nil { stdLog.ServerJSON(ctx, stdLog.ParamError, err) return } resp, err := agentSer.AgentChannelAppInfo(ctx, param) if err != nil { stdLog.ServerJSON(ctx, stdLog.Failure, err) return } stdLog.ServerJSON(ctx, stdLog.Success, resp) }