package client import ( "hudongzhuanjia/controllers" "hudongzhuanjia/models" pay_service "hudongzhuanjia/services/pay" "hudongzhuanjia/utils" "hudongzhuanjia/utils/code" "strings" "time" "github.com/ouxuanserver/osmanthuswine/src/core" ) //打赏 type RewardCtl struct { controllers.AuthorCtl } // todo: 支付接口 func (t *RewardCtl) Reward() { activityId := t.MustGetInt64("activity_id") content := t.MustGet("content") amount := t.MustGetDouble("amount") uid := t.MustGetUID() if amount <= 0 { t.ERROR("打赏金额不能小于0", code.MSG_ERR_Param) } //检查内容是否包含敏感 if models.IsSensitive(content) { t.ERROR("内容包含敏感字", code.MSG_ERR) } activity := new(models.Activity) exist, err := models.GetById(activity, activityId) t.CheckErr(err) t.Assert(exist, code.MSG_ACTIVITY_NOT_EXIST, "互动不存在") //查询该活动的的打赏服务id rewardServer := new(models.RewardServer) exist, err = rewardServer.GetByActivityId(activityId) t.CheckErr(err) t.Assert(exist, code.MSG_REWARD_NOT_EXIST, "打赏不存在") amount = utils.Float64CusDecimal(amount, 2) //查询用户信息 user := new(models.User) exist, err = models.GetById(user, uid) t.CheckErr(err) t.Assert(exist, code.MSG_USER_NOT_EXIST, "用户不存在") ip := strings.Split(t.Request.OriginRequest.RemoteAddr, ":") res, err := pay_service.Order("欧轩互动-打赏支付", ip[0], user.Openid, int(amount*100), 2, user.Id, activityId) t.CheckErr(err) _, err = core.GetXormAuto().InsertOne(&models.RewardHistory{ UserOrderId: res["user_order_id"].(int64), RewardServerId: rewardServer.Id, CustomerId: t.MustGetCustomerId(), UserId: user.Id, Amount: amount, Content: content, RehearsalId: activity.RehearsalId, Status: -1, ReviewTime: 0, IsDelete: false, CreatedAt: time.Now(), UpdatedAt: time.Now(), }) t.CheckErr(err) delete(res, "user_order_id") delete(res, "out_trade_no") t.JSON(res) } type RWListResult struct { Id int64 `json:"id"` Content string `json:"content"` Amount float64 `json:"amount"` Status int `json:"status"` } func (t *RewardCtl) List() { uid := t.MustGetUID() activityId := t.MustGetActivityId() rs := new(models.RewardServer) exist, err := rs.GetByActivityId(activityId) t.CheckErr(err) t.Assert(exist, code.MSG_REWARD_NOT_EXIST, "打赏不存在") t.CheckErr(pay_service.BatchQueryByUserId(uid)) t.CheckErr(pay_service.BatchQueryRefundByUserId(uid)) list := make([]*RWListResult, 0) err = core.GetXormAuto().Table(new(models.RewardHistory)).Select("id, content, amount, status"). Where("is_delete=0 and user_id=? and reward_server_id=? and status <> -1", uid, rs.Id). Desc("created_at").Find(&list) t.CheckErr(err) t.JSON(map[string]interface{}{ "total": len(list), "list": list, }) }