You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
124 lines
3.5 KiB
124 lines
3.5 KiB
package service |
|
|
|
import ( |
|
"context" |
|
"go-common/app/interface/main/videoup/model/archive" |
|
"go-common/library/ecode" |
|
"go-common/library/log" |
|
"go-common/library/queue/databus/report" |
|
"time" |
|
) |
|
|
|
// dealAddPay fn |
|
func (s *Service) dealAddPay(c context.Context, pay *archive.Pay, aid, mid int64, ip string) (err error) { |
|
// step 1: call API |
|
if err = s.pay.AssReg(c, mid, aid, pay.Price, ip); err != nil { |
|
log.Error("s.pay.AssReg mid(%d)|aid(%d)|pay(%+v) error(%v)", mid, aid, pay, err) |
|
return |
|
} |
|
// step 2: add protocol user log |
|
var index = []interface{}{mid, pay.ProtocolID} |
|
uInfo := &report.UserInfo{ |
|
Mid: mid, |
|
Business: archive.UgcpayAddarcProtocol, |
|
Type: 1, |
|
Oid: aid, |
|
Action: "add", |
|
Ctime: time.Now(), |
|
IP: ip, |
|
Index: index, |
|
} |
|
uInfo.Content = map[string]interface{}{ |
|
"content": pay, |
|
"protocol_id": pay.ProtocolID, |
|
"mid": mid, |
|
} |
|
report.User(uInfo) |
|
log.Warn("sendLog dealAddPay protocol info (%+v)", uInfo) |
|
return |
|
} |
|
|
|
// dealAdjustPay fn |
|
func (s *Service) dealAdjustPay(c context.Context, pay *archive.Pay, aid, mid int64, ip string) (err error) { |
|
// step 1: call API |
|
if err = s.pay.AssReg(c, mid, aid, pay.Price, ip); err != nil { |
|
log.Error("s.pay.AssReg mid(%d)|aid(%d)|pay(%+v) error(%v)", mid, aid, pay, err) |
|
return |
|
} |
|
// step 2: add protocol user log |
|
var index = []interface{}{mid, pay.ProtocolID} |
|
uInfo := &report.UserInfo{ |
|
Mid: mid, |
|
Business: archive.UgcpayAddarcProtocol, |
|
Type: 1, |
|
Oid: aid, |
|
Action: "edit", |
|
Ctime: time.Now(), |
|
IP: ip, |
|
Index: index, |
|
} |
|
uInfo.Content = map[string]interface{}{ |
|
"content": pay, |
|
"protocol_id": pay.ProtocolID, |
|
"mid": mid, |
|
} |
|
report.User(uInfo) |
|
log.Warn("sendLog dealAdjustPay protocol info (%+v)", uInfo) |
|
return |
|
} |
|
|
|
// 参与UGC付费之前必须接受当前最新的投稿协议 |
|
func (s *Service) checkPayProtocol(c context.Context, pay *archive.Pay, mid int64) (err error) { |
|
if pay != nil { |
|
accept, _ := s.pay.UserAcceptProtocol(c, pay.ProtocolID, mid) |
|
if accept { |
|
return |
|
} |
|
if !accept && pay.ProtocolAccept == 0 { |
|
log.Error("s.rejectUgcProtocolBefore (%+v),(%+v)", pay, err) |
|
err = ecode.VideoupPayProtocolLimit |
|
return |
|
} |
|
} |
|
return |
|
} |
|
|
|
// 付费提交校验 |
|
func (s *Service) checkPayLimit(c context.Context, ap *archive.ArcParam) (err error) { |
|
pay := ap.Pay |
|
if pay != nil { |
|
if _, ok := s.exemptUgcPayUps[ap.Mid]; !ok { // 用户灰度 |
|
log.Error("s.checkAddPayLimit VideoupPayUserNotAllow (%d),(%+v)", ap.Mid, err) |
|
err = ecode.VideoupPayUserNotAllow |
|
return |
|
} |
|
if pay.Open == 1 { |
|
if ap.Copyright != archive.CopyrightOriginal { // 创作类型 |
|
log.Error("s.checkAddPayLimit VideoupPayCopyrightErr (%+v),(%+v)", ap, err) |
|
err = ecode.VideoupPayCopyrightErr |
|
return |
|
} |
|
if pay.Price > 1000 || pay.Price < 1 { //开启之后的定价必须合理有效 |
|
log.Error("s.checkAddPayLimit VideoupPayPriceErr (%+v),(%+v)", ap, err) |
|
err = ecode.VideoupPayPriceErr |
|
return |
|
} |
|
ap.UgcPay = 1 |
|
} else { |
|
ap.UgcPay = 0 |
|
} |
|
} |
|
return |
|
} |
|
|
|
// 一起检测是否和商单以及私单冲突,只能三选一 |
|
func (s *Service) checkPayWithOrder(c context.Context, porder *archive.Porder, pay *archive.Pay, orderID, mid int64) (err error) { |
|
joinPorder := porder != nil && porder.FlowID > 0 |
|
joinPay := pay != nil && pay.Open == 1 |
|
if joinPay && (joinPorder || orderID > 0) { |
|
log.Error("s.checkAddPayWithOrder VideoupPayCommericalLimit (%d)|(%+v)|(%+v)|(%+v),(%+v)", mid, porder, pay, orderID, err) |
|
err = ecode.VideoupPayCommericalLimit |
|
return |
|
} |
|
return |
|
}
|
|
|