// ================================================================================ // Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. // You can delete these comments if you wish manually maintain this interface file. // ================================================================================ package service import ( "context" "server/internal/model" ) type ( IReward interface { // Create 创建奖励 Create(ctx context.Context, in *model.RewardCreateIn) (out *model.RewardCreateOut, err error) // Update 更新奖励 Update(ctx context.Context, in *model.RewardUpdateIn) (out *model.RewardUpdateOut, err error) // Delete 删除奖励 Delete(ctx context.Context, in *model.RewardDeleteIn) (out *model.RewardDeleteOut, err error) // List 奖励列表 List(ctx context.Context, in *model.RewardListIn) (out *model.RewardListOut, err error) // ListInternetCharge 网费奖励列表 ListInternetCharge(ctx context.Context, in *model.RewardListIn) (out *model.InternetChargeRewardListOut, err error) // GetLift 领取奖励 // func (s *sReward) GetLift(ctx context.Context, in *model.GetRewardIn) (out *model.GetRewardOut, err error) { // // giftParam := model.GiftParam{} // var needUrl bool // // 判断奖励类型 // if in.Source == 1 { // // 系统奖励处理 // if in.RewradTypeId == 16 { // // 需要大区角色 // giftParam.AreaId = in.AreaId // giftParam.Gid = in.GameId // giftParam.RoleIdx = in.RoleIdx // giftParam.TaskId = in.TaskId // } else { // // 不需要 // giftParam.TaskId = in.TaskId // giftParam.Gid = in.GameId // // } // if in.RewardId != 16 && in.RewardId != 37 { // needUrl = true // } // } else { // // 门店奖励处理 // // } // // glog.Info(ctx, "调用 tencent开始") // activity, err := gamelife.GetGamelifeClient(ctx).RequestActivity(ctx, &model.QQNetbarActivityIn{PopenId: in.PopenId, ServiceName: consts.GetGift, GiftParam: giftParam}) // // if err != nil { // return nil, err // } // glog.Info(ctx, "调用 tencent结束") // fmt.Print(activity) // // result, ok := activity.(*model.GiftResponse) // if !ok { // return nil, ecode.Fail.Sub("数据类型转换失败") // } // // if len(result.GiftItem) == 0 { // return nil, ecode.Fail.Sub("奖励领取异常") // } // // // 存储数据库记录 // var data model.GetRewardOut // if err = dao.RewardWaters.Transaction(ctx, func(ctx context.Context, tx gdb.TX) (err error) { // for _, item := range result.GiftItem { // marshal, err := json.Marshal(item.Water) // if err != nil { // return ecode.Fail.Sub("序列化 json 数据出现异常") // } // _, err = dao.RewardWaters.Ctx(ctx).Insert(model.RewardWaters{ // OrderId: item.Water.OrderId, // Status: int64(item.Result), // Uid: item.Water.Uid, // Water: string(marshal), // TaskId: in.TaskId, // GameId: int64(in.GameId), // }) // // if err != nil { // return ecode.Fail.Sub("添加奖励领取记录异常") // } // // // 根据 result判断 // data.Result = int64(item.Result) // if item.Result == 1 { // //// 奖励发放成功,修改状态,扣除数量 // glog.Infof(ctx, "奖励发放成功1,修改状态,扣除数量") // // 查询当前奖励是否为最后一个, 如果是则更新任务状态为2 完成 // count, err := dao.UserTaskRewards.Ctx(ctx).Where(do.UserTaskRewards{UserTaskId: in.UserTaskId}).WhereIn(dao.UserTaskRewards.Columns().Status, []int{2, 3, 5}).Count() // if err != nil { // return ecode.Fail.Sub("查询用户任务奖励失败") // } // // if count == 1 { // // 修改任务记录状态2 // _, err = dao.UserTasks.Ctx(ctx).Where(do.UserTasks{Id: in.UserTaskId}).Data(do.UserTasks{ // Status: 2, // }).Update() // // if err != nil { // return ecode.Fail.Sub("修改用户任务状态失败") // } // } // // // 增加奖励已领取数量 // _, err = dao.Rewards.Ctx(ctx).Where(do.Rewards{Id: in.RewardId}).Increment(dao.Rewards.Columns().ReceivedNum, 1) // if err != nil { // return ecode.Fail.Sub("获取奖励领取记录异常") // } // // // 修改用户任务奖励记录状态 // _, err = dao.UserTaskRewards.Ctx(ctx).Where(do.UserTaskRewards{UserTaskId: in.UserTaskId, RewardId: in.RewardId}).Data(do.UserTaskRewards{ // Status: consts.RewardSuccessStatus, // }).Update() // // if err != nil { // return ecode.Fail.Sub("修改用户任务奖励记录状态异常") // } // } else if item.Result == 2 || item.Result == 3 { // // 发放背包成功,修改状态 // glog.Infof(ctx, "奖励发放成功2,修改状态") // _, err = dao.UserTaskRewards.Ctx(ctx).Data(do.UserTaskRewards{ // Status: consts.RewardExchangeStatus, // }).Where(do.UserTaskRewards{ // Id: in.UserTaskId, // RewardId: in.RewardId, // }).Update() // // if err != nil { // return ecode.Fail.Sub("修改用户任务奖励记录状态异常") // } // } else if item.Result == 4 { // // 奖励领取失败,不做操作,直接返回 // glog.Infof(ctx, "领取奖励失败") // return ecode.Fail.Sub("领取奖励失败") // } // // //data.List = append(data.List, model.GetRewardNewOut{ // // Result: int64(item.Result), // // Water: item.Water, // //}) // } // // return // // }); err != nil { // return // } // // if needUrl { // data.Url, err = gamelife.GetGamelifeClient(ctx).GetGamelifePackageUrl(ctx, in.PopenId, in.GameCode, in.GameId, in.BindType) // if err != nil { // return nil, ecode.Fail.Sub("获取绑定链接失败") // } // } // // //return &model.GetRewardOut{ // // List: data.List, // //}, err // return &data, err // } GetLift(ctx context.Context, in *model.GetRewardIn) (out *model.GetRewardOut, err error) // GetGoodsList 调用外部获取物品列表 GetGoodsList(ctx context.Context, in *model.GetGoodsListIn) (out *model.GetGoodsListOut, err error) // GetGoods 物品兑换 GetGoods(ctx context.Context, in *model.GetGoodsGetIn) (out *model.GoodsGetOut, err error) // GetGoodsDetails 物品详情 GetGoodsDetails(ctx context.Context, in *model.GetGoodsDetailsIn) (out *model.QueryUserGoodsDetailResponse, err error) OperateTaskReward(ctx context.Context, in *model.OperateTaskRewardIn) (out *model.OperateTaskRewardOut, err error) // CallBack 奖励回调 // // func (s *sReward) CallBack(ctx context.Context, in *model.RewardCallbackIn) (out *model.RewardCallbackOut, err error) { // var reward *model.Reward // var res model.RewardCallbackOut // res.OrderId = in.OrderId // res.AppId = in.AppId // // // 查询奖励 // err = dao.Rewards.Ctx(ctx).Where(do.Rewards{PrizeId: in.PrizeId}).Scan(&reward) // if err != nil { // res.Errcode = -1 // res.Errmsg = "查询奖励异常" // res.Datas = nil // return &res, ecode.Fail.Sub("查询奖励异常") // } // // if reward == nil { // res.Errcode = -1 // res.Errmsg = "查询奖励为空" // res.Datas = nil // return &res, ecode.Params.Sub("查询奖励为空") // } // // // 判断是否过期 // if reward.ExpireType == 1 { // //时间段过期 // if reward.ValidTo.Before(gtime.Now()) { // res.Errcode = consts.BatchOutDate // res.Errmsg = consts.BatchOutDateMSG // } // } // // // 日 // now := time.Now() // // 当天开始时间 // start := time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, now.Location()) // // 当天结束时间 // end := time.Date(now.Year(), now.Month(), now.Day(), 23, 59, 59, 0, now.Location()) // // 查先询用户当日已领取 // //dailyGetNum, err := dao.Rewards.Ctx(ctx). // // LeftJoin(dao.UserTaskRewards.Table(), fmt.Sprintf("%s.id=%s.reward_id", dao.Rewards.Table(), dao.UserTaskRewards.Table())). // // Where(dao.Rewards.Columns().PrizeId, in.PrizeId). // // WhereBetween(dao.UserTaskRewards.Columns().UpdatedAt, start, end). // // Where(dao.UserTaskRewards.Columns().Status, 3).WhereOr(dao.UserTaskRewards.Columns().Status, 6).Count() // // // //// dailyGetNum, err := dao.Rewards.Ctx(ctx). // //// Where(dao.Rewards.Columns().PrizeId, in.PrizeId).InnerJoin(dao.UserTaskRewards.Table(), fmt.Sprintf("%s.id=%s.reward_id", dao.Rewards.Table(), // //// dao.UserTaskRewards.Table())).InnerJoin(dao.RewardWaters.Table(), fmt.Sprintf("%s.external_order_id = %s.order_id", dao.UserTaskRewards.Table(), dao.RewardWaters.Table())). // //// Where(dao.RewardWaters.Columns().Recvuid, in.Uid).Where(dao.UserTaskRewards.Columns().Status, 3).WhereOr(dao.UserTaskRewards.Columns().Status, 6). // //// WhereBetween(dao.UserTaskRewards.Columns().UpdatedAt, start, end).Fields(fmt.Sprintf("%s.*,%s.*", dao.Rewards.Table(), dao.UserTaskRewards.Table())).Count() // // // //if err != nil { // // res.Errcode = -1 // // res.Errmsg = "查询用户当日领取数量失败" // // res.Datas = nil // // return &res, ecode.Fail.Sub("查询用户当日领取数量失败") // //} // // // //// 判断是否达到用户日限制 // //if int(reward.UserDailyLimit) <= dailyGetNum { // // res.Errcode = consts.UserDayLimit // // res.Errmsg = consts.UserDayLimitMSG // //} // // // //// 查先询用户总共已领取 // //dailyTotalNum, err := dao.Rewards.Ctx(ctx).Where(dao.Rewards.Columns().PrizeId, in.PrizeId).InnerJoin(dao.UserTaskRewards.Table(), fmt.Sprintf("%s.id=%s.reward_id", dao.Rewards.Table(), // // dao.UserTaskRewards.Table())).InnerJoin(dao.RewardWaters.Table(), fmt.Sprintf("%s.external_order_id = %s.order_id", dao.UserTaskRewards.Table(), dao.RewardWaters.Table())). // // Where(dao.RewardWaters.Columns().Recvuid, in.Uid).Where(dao.UserTaskRewards.Columns().Status, 3).WhereOr(dao.UserTaskRewards.Columns().Status, 6). // // Fields(fmt.Sprintf("%s.*,%s.*", dao.Rewards.Table(), dao.UserTaskRewards.Table())).Count() // // // //if err != nil { // // res.Errcode = -1 // // res.Errmsg = "查询用户当日总共领取数量失败" // // res.Datas = nil // // return &res, ecode.Fail.Sub("查询用户当日总共领取数量失败") // //} // //// 判断是否达到用户总限制 // //if int(reward.UserTotalLimit) <= dailyTotalNum { // // res.Errcode = consts.UserTotalLimit // // res.Errmsg = consts.UserTotalLimitMSG // //} // // // //// 查先询该批次当日已领取 // //batchDailyGetNum, err := dao.Rewards.Ctx(ctx).Where(dao.Rewards.Columns().PrizeId, in.PrizeId).InnerJoin(dao.UserTaskRewards.Table(), fmt.Sprintf("%s.id = %s.reward_id", // // dao.Rewards.Table(), dao.UserTaskRewards.Table())).Where(dao.UserTaskRewards.Columns().Status, 3).WhereOr(dao.UserTaskRewards.Columns().Status, 6). // // WhereBetween(dao.UserTaskRewards.Columns().UpdatedAt, start, end).Fields(fmt.Sprintf("%s.*,%s.*", dao.Rewards.Table(), dao.UserTaskRewards.Table())).Count() // //if err != nil { // // res.Errcode = -1 // // res.Errmsg = "查询该批次当日总共领取数量失败" // // res.Datas = nil // // return &res, ecode.Fail.Sub("查询该批次当日总共领取数量失败") // //} // //// 判断是否达到该批次日限制 // //if int(reward.DailyTotalLimit) <= batchDailyGetNum { // // res.Errcode = consts.BatchDayLimit // // res.Errmsg = consts.BatchDayLimitMSG // //} // // // //// 查先询该批次总共已领取 // //batchTotalGetNum, err := dao.Rewards.Ctx(ctx).Where(dao.Rewards.Columns().PrizeId, in.PrizeId).InnerJoin(dao.UserTaskRewards.Table(), fmt.Sprintf("%s.id = %s.reward_id", // // dao.Rewards.Table(), dao.UserTaskRewards.Table())).Where(dao.UserTaskRewards.Columns().Status, 3).WhereOr(dao.UserTaskRewards.Columns().Status, 6). // // Fields(fmt.Sprintf("%s.*,%s.*", dao.Rewards.Table(), dao.UserTaskRewards.Table())).Count() // // // //if err != nil { // // res.Errcode = -1 // // res.Errmsg = "查询该批次总共领取数量失败" // // res.Datas = nil // // return &res, ecode.Fail.Sub("查询该批次总共领取数量失败") // //} // //// 判断是否达到该批次总共限制 // //if int(reward.TotalLimit) <= batchTotalGetNum { // // res.Errcode = consts.BatchTotalLimit // // res.Errmsg = consts.BatchTotalLimitMSG // //} // // _, err = dao.RewardCallback.Ctx(ctx).OmitEmptyData().Insert(do.RewardCallback{ // OrderId: in.OrderId, // PrizeId: in.PrizeId, // PrizeType: in.PrizeType, // PrizeSubType: in.PrizeSubType, // Uid: in.Uid, // Num: in.Num, // CustomInfo: in.CustomInfo, // AppId: in.AppId, // }) // // if err != nil { // res.Errcode = -1 // res.Errmsg = "存储奖励回调数据异常" // res.Datas = nil // return &res, ecode.Fail.Sub("存储奖励回调数据异常") // } // // // 回调成功,组装响应参数 // var userTaskReward []*model.UserTaskRewards // if err = dao.Rewards.Ctx(ctx).Where(dao.Rewards.Columns().PrizeId, in.PrizeId).InnerJoin(dao.UserTaskRewards.Table(), fmt.Sprintf("%s.%s = %s.%s", // dao.Rewards.Table(), dao.Rewards.Columns().Id, dao.UserTaskRewards.Table(), dao.UserTaskRewards.Columns().RewardId)).Scan(&userTaskReward); err != nil { // return nil, ecode.Fail.Sub("获取用户奖励记录异常") // } // // if userTaskReward == nil { // res.Errcode = -1 // res.Errmsg = "用户奖励记录为空" // res.Datas = nil // return &res, ecode.Fail.Sub("用户奖励记录为空") // } // // callbackData := make([]model.CallbackData, 0) // for _, v := range userTaskReward { // callbackData = append(callbackData, model.CallbackData{ // PrizeCode: v.InnerOrderId, // }) // } // // res.Datas = callbackData // // return &res, err // } CallBack(ctx context.Context, in *model.RewardCallbackIn) (out *model.RewardCallbackOut, err error) GetUserClaimList(ctx context.Context, in *model.GetUserClaimListIn) (out *model.GetUserClaimListOut, err error) NetfeeCallback(ctx context.Context, in *model.NetfeeCallbackIn) (out *model.NetfeeCallbackOut, err error) GetNetfeeList(ctx context.Context, in *model.NetfeeListIn) (out *model.NetfeeListOut, err error) } ) var ( localReward IReward ) func Reward() IReward { if localReward == nil { panic("implement not found for interface IReward, forgot register?") } return localReward } func RegisterReward(i IReward) { localReward = i }