123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146 |
- package service
- import (
- "context"
- "sort"
- "strings"
- "time"
- "go-common/app/admin/main/mcn/dao/up"
- "go-common/app/admin/main/mcn/model"
- accgrpc "go-common/app/service/main/account/api"
- memgrpc "go-common/app/service/main/member/api"
- blkmdl "go-common/app/service/main/member/model/block"
- xsql "go-common/library/database/sql"
- "go-common/library/ecode"
- "go-common/library/log"
- xtime "go-common/library/time"
- "github.com/pkg/errors"
- )
- // McnSignEntry .
- func (s *Service) McnSignEntry(c context.Context, arg *model.MCNSignEntryReq) error {
- var (
- err error
- count, lastID int64
- stime, etime xtime.Time
- blockInfo *memgrpc.BlockInfoReply
- tx *xsql.Tx
- now = time.Now()
- date = time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, time.Local)
- )
- if tx, err = s.dao.BeginTran(c); err != nil {
- return err
- }
- defer func() {
- if err != nil {
- tx.Rollback()
- } else {
- tx.Commit()
- }
- }()
- if blockInfo, err = s.memGRPC.BlockInfo(c, &memgrpc.MemberMidReq{Mid: arg.MCNMID}); err != nil {
- return err
- }
- if blockInfo.BlockStatus > int32(blkmdl.BlockStatusFalse) {
- return ecode.MCNSignIsBlocked
- }
- if count, err = s.dao.McnSignNoOKState(c, arg.MCNMID); err != nil {
- return err
- }
- if count > 0 {
- return ecode.MCNSignNoOkState
- }
- if stime, etime, err = arg.ParseTime(); err != nil {
- return err
- }
- if etime.Time().Before(date) || etime.Time().Equal(date) {
- return ecode.MCNSignEtimeNLEQNowTime
- }
- if count, err = s.dao.McnSignCountUQTime(c, arg.MCNMID, stime, etime); err != nil {
- return err
- }
- if count > 0 {
- return ecode.MCNSignCycleNotUQErr
- }
- arg.AttrPermitSet()
- if lastID, err = s.dao.TxAddMcnSignEntry(tx, arg.MCNMID, arg.BeginDate, arg.EndDate, arg.Permission); err != nil {
- return err
- }
- for _, v := range arg.SignPayInfo {
- if _, err = s.dao.TxAddMcnSignPay(tx, arg.MCNMID, lastID, v.PayValue, v.DueDate, ""); err != nil {
- return err
- }
- }
- s.worker.Add(func() {
- index := []interface{}{int8(model.MCNSignStateNoApply), lastID}
- content := map[string]interface{}{
- "sign_id": lastID,
- "mcn_mid": arg.MCNMID,
- "state": int8(model.MCNSignStateNoApply),
- "begin_date": arg.BeginDate,
- "end_date": arg.EndDate,
- "permission": arg.Permission,
- }
- s.AddAuditLog(context.Background(), model.MCNLogBizID, int8(model.MCNSignActionEntry), model.MCNSignActionEntry.String(), arg.UID, arg.UserName, []int64{arg.MCNMID}, index, content)
- })
- s.worker.Add(func() {
- index := []interface{}{arg.MCNMID}
- content := map[string]interface{}{
- "sign_id": lastID,
- "mcn_mid": arg.MCNMID,
- "sign_pay_info": arg.SignPayInfo,
- }
- s.AddAuditLog(context.Background(), model.MCNPayDateLogBizID, int8(model.MCNSignCycleActionAdd), model.MCNSignCycleActionAdd.String(), arg.UID, arg.UserName, []int64{lastID}, index, content)
- })
- s.worker.Add(func() {
- s.dao.DelMcnSignCache(context.Background(), arg.MCNMID)
- })
- return nil
- }
- // McnSignList .
- func (s *Service) McnSignList(c context.Context, arg *model.MCNSignStateReq) (res *model.MCNSignListReply, err error) {
- var (
- count int64
- signIDs, mids []int64
- accsReply *accgrpc.InfosReply
- accInfos map[int64]*accgrpc.Info
- mcns []*model.MCNSignInfoReply
- sm map[int64][]*model.SignPayInfoReply
- )
- res = new(model.MCNSignListReply)
- res.Page = arg.Page
- if count, err = s.dao.McnSignTotal(c, arg); err != nil {
- return res, err
- }
- if count <= 0 {
- return
- }
- res.TotalCount = int(count)
- if mcns, err = s.dao.McnSigns(c, arg); err != nil {
- return res, err
- }
- for _, v := range mcns {
- v.AttrPermitVal()
- signIDs = append(signIDs, v.SignID)
- mids = append(mids, v.McnMid)
- }
- if accsReply, err = s.accGRPC.Infos3(c, &accgrpc.MidsReq{Mids: mids}); err != nil {
- log.Error("s.accGRPC.Infos3(%+v) error(%+v)", &accgrpc.MidsReq{Mids: mids}, err)
- err = nil
- } else {
- accInfos = accsReply.Infos
- }
- if sm, err = s.dao.McnSignPayMap(c, signIDs); err != nil {
- return res, err
- }
- for _, v := range mcns {
- if info, ok := accInfos[v.McnMid]; ok {
- v.McnName = info.Name
- }
- v.ContractLink = model.BuildBfsURL(v.ContractLink, s.c.BFS.Key, s.c.BFS.Secret, s.c.BFS.Bucket, model.BfsEasyPath)
- v.CompanyLicenseLink = model.BuildBfsURL(v.CompanyLicenseLink, s.c.BFS.Key, s.c.BFS.Secret, s.c.BFS.Bucket, model.BfsEasyPath)
- if sp, ok := sm[v.SignID]; ok {
- v.SignPayInfo = sp
- }
- sort.Slice(v.SignPayInfo, func(i int, j int) bool {
- return v.SignPayInfo[i].DueDate < v.SignPayInfo[j].DueDate
- })
- }
- res.List = mcns
- return res, nil
- }
- // McnSignOP .
- func (s *Service) McnSignOP(c context.Context, arg *model.MCNSignStateOpReq) error {
- var (
- err error
- ok bool
- accReply *accgrpc.InfoReply
- m *model.MCNSignInfoReply
- payInfo []*model.SignPayInfoReply
- sm map[int64][]*model.SignPayInfoReply
- now = xtime.Time(time.Now().Unix())
- state model.MCNSignState
- )
- if !arg.Action.NotRightAction() {
- return ecode.MCNSignUnknownReviewErr
- }
- if m, err = s.dao.McnSign(c, arg.SignID); err != nil {
- return err
- }
- if m == nil {
- return ecode.MCNCSignUnknownInfoErr
- }
- state = arg.Action.GetState(m.State)
- if state == model.MCNSignStateUnKnown {
- log.Warn("mcn_sign action(%d) old state(%d) to new err state(-1)", arg.Action, m.State)
- return ecode.MCNSignStateFlowErr
- }
- if m.State.IsOnReviewState(arg.Action) {
- return ecode.MCNSignOnlyReviewOpErr
- }
- if now < m.BeginDate && arg.Action == model.MCNSignActionPass {
- state = model.MCNSignStateOnPreOpen
- }
- if arg.Action != model.MCNSignActionReject {
- now = 0
- arg.RejectReason = ""
- }
- if _, err = s.dao.UpMcnSignOP(c, arg.SignID, int8(state), now, arg.RejectReason); err != nil {
- return err
- }
- if accReply, err = s.accGRPC.Info3(c, &accgrpc.MidReq{Mid: m.McnMid}); err != nil {
- log.Error("s.accGRPC.Info3(%+v) error(%+v)", &accgrpc.MidReq{Mid: m.McnMid}, err)
- err = nil
- }
- if sm, err = s.dao.McnSignPayMap(c, []int64{arg.SignID}); err != nil {
- log.Error("s.dao.McnSignPayMap(%+v) error(%+v)", []int64{arg.SignID}, err)
- err = nil
- }
- if payInfo, ok = sm[arg.SignID]; !ok {
- payInfo = nil
- }
- s.worker.Add(func() {
- var name string
- if accReply.Info != nil {
- name = accReply.Info.Name
- }
- index := []interface{}{int8(state), arg.SignID, time.Now().Unix(), name}
- content := map[string]interface{}{
- "sign_id": arg.SignID,
- "mcn_mid": m.McnMid,
- "mcn_name": name,
- "begin_date": m.BeginDate,
- "end_date": m.EndDate,
- "reject_reason": arg.RejectReason,
- "reject_time": now,
- "contract_link": m.ContractLink,
- "sign_pay_info": payInfo,
- "permission": m.Permission,
- }
- s.AddAuditLog(context.Background(), model.MCNLogBizID, int8(arg.Action), arg.Action.String(), arg.UID, arg.UserName, []int64{m.McnMid}, index, content)
- })
- s.worker.Add(func() {
- s.sendMsg(context.Background(), &model.ArgMsg{MSGType: arg.Action.GetmsgType(state), MIDs: []int64{m.McnMid}, Reason: arg.RejectReason})
- })
- s.worker.Add(func() {
- s.dao.DelMcnSignCache(context.Background(), m.McnMid)
- })
- return nil
- }
- // McnUPReviewList .
- func (s *Service) McnUPReviewList(c context.Context, arg *model.MCNUPStateReq) (res *model.MCNUPReviewListReply, err error) {
- var (
- count int64
- mids []int64
- ups []*model.MCNUPInfoReply
- mbi map[int64]*model.UpBaseInfo
- accsReply *accgrpc.InfosReply
- accInfos map[int64]*accgrpc.Info
- )
- res = new(model.MCNUPReviewListReply)
- res.Page = arg.Page
- if count, err = s.dao.McnUpTotal(c, arg); err != nil {
- return res, err
- }
- if count <= 0 {
- return
- }
- res.TotalCount = int(count)
- if ups, err = s.dao.McnUps(c, arg); err != nil {
- return res, err
- }
- for _, v := range ups {
- v.AttrPermitVal()
- mids = append(mids, v.McnMid)
- mids = append(mids, v.UpMid)
- }
- if mbi, err = s.dao.UpBaseInfoMap(c, mids); err != nil {
- return res, err
- }
- if accsReply, err = s.accGRPC.Infos3(c, &accgrpc.MidsReq{Mids: mids}); err != nil {
- log.Error("s.accGRPC.Infos3(%+v) error(%+v)", &accgrpc.MidsReq{Mids: mids}, err)
- err = nil
- } else {
- accInfos = accsReply.Infos
- }
- for _, v := range ups {
- if up, ok := mbi[v.McnMid]; ok {
- v.FansCount = up.FansCount
- v.ActiveTid = up.ActiveTid
- }
- if info, ok := accInfos[v.McnMid]; ok {
- v.McnName = info.Name
- }
- if info, ok := accInfos[v.UpMid]; ok {
- v.UpName = info.Name
- }
- v.UpAuthLink = model.BuildBfsURL(v.UpAuthLink, s.c.BFS.Key, s.c.BFS.Secret, s.c.BFS.Bucket, model.BfsEasyPath)
- v.ContractLink = model.BuildBfsURL(v.ContractLink, s.c.BFS.Key, s.c.BFS.Secret, s.c.BFS.Bucket, model.BfsEasyPath)
- }
- res.List = ups
- return res, nil
- }
- // McnUPOP .
- func (s *Service) McnUPOP(c context.Context, arg *model.MCNUPStateOpReq) error {
- var (
- err error
- upName, mcnName string
- accsReply *accgrpc.InfosReply
- accInfos map[int64]*accgrpc.Info
- up *model.MCNUPInfoReply
- m *model.MCNSignInfoReply
- now = time.Now()
- xnow = xtime.Time(now.Unix())
- date = time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, time.Local)
- state model.MCNUPState
- )
- state = arg.Action.GetState()
- if state == model.MCNUPStateUnKnown {
- log.Warn("mcn_up action(%d) to new err state(-1)", arg.Action)
- return ecode.MCNSignStateFlowErr
- }
- if !arg.Action.NotRightAction() {
- return ecode.MCNUpUnknownReviewErr
- }
- if arg.Action.NoRejectState() {
- xnow = 0
- arg.RejectReason = ""
- }
- if up, err = s.dao.McnUp(c, arg.SignUpID); err != nil {
- return err
- }
- if up == nil {
- return ecode.MCNCUpUnknownInfoErr
- }
- if m, err = s.dao.McnSign(c, up.SignID); err != nil {
- return err
- }
- if m.State != model.MCNSignStateOnSign && arg.Action.NoRejectState() {
- return ecode.MCNUpPassOnEffectSign
- }
- if up.State.IsOnReviewState() {
- return ecode.MCNUpOnlyReviewOpErr
- }
- if up.BeginDate.Time().After(date) && state == model.MCNUPStateOnSign {
- state = model.MCNUPStateOnPreOpen
- }
- if _, err = s.dao.UpMcnUpOP(c, arg.SignUpID, int8(state), xnow, arg.RejectReason); err != nil {
- return err
- }
- if accsReply, err = s.accGRPC.Infos3(c, &accgrpc.MidsReq{Mids: []int64{up.McnMid, up.UpMid}}); err != nil {
- log.Error("s.accGRPC.Infos3(%+v) error(%+v)", &accgrpc.MidsReq{Mids: []int64{up.McnMid, up.UpMid}}, err)
- err = nil
- } else {
- accInfos = accsReply.Infos
- }
- if info, ok := accInfos[up.McnMid]; ok {
- mcnName = info.Name
- }
- if info, ok := accInfos[up.UpMid]; ok {
- upName = info.Name
- }
- if arg.Action == model.MCNUPActionPass {
- s.dao.UpMcnUpsRecommendOP(c, []int64{up.UpMid}, model.MCNUPRecommendStateDel)
- }
- s.worker.Add(func() {
- index := []interface{}{int8(state), arg.SignUpID, up.McnMid, mcnName, upName}
- content := map[string]interface{}{
- "sign_up_id": arg.SignUpID,
- "sign_id": up.SignID,
- "mcn_mid": up.McnMid,
- "up_mid": up.UpMid,
- "begin_date": up.BeginDate,
- "end_date": up.EndDate,
- "contract_link": up.ContractLink,
- "up_auth_link": up.UpAuthLink,
- "reject_reason": arg.RejectReason,
- "reject_time": now,
- "permission": up.Permission,
- }
- s.AddAuditLog(context.Background(), model.MCNLogBizID, int8(arg.Action), arg.Action.String(), arg.UID, arg.UserName, []int64{up.UpMid}, index, content)
- })
- s.worker.Add(func() {
- argMsg := &model.ArgMsg{
- MSGType: arg.Action.GetmsgType(true),
- MIDs: []int64{up.McnMid},
- Reason: arg.RejectReason,
- CompanyName: m.CompanyName,
- McnName: mcnName,
- McnMid: up.McnMid,
- UpName: upName,
- UpMid: up.UpMid,
- }
- s.sendMsg(context.Background(), argMsg)
- argMsg.MSGType = arg.Action.GetmsgType(false)
- argMsg.MIDs = []int64{up.UpMid}
- s.sendMsg(context.Background(), argMsg)
- })
- return nil
- }
- // McnPermitOP .
- func (s *Service) McnPermitOP(c context.Context, arg *model.MCNSignPermissionReq) (err error) {
- var (
- open, closed []string
- m *model.MCNSignInfoReply
- )
- if m, err = s.dao.McnSign(c, arg.SignID); err != nil {
- return err
- }
- if m == nil {
- return ecode.MCNCSignUnknownInfoErr
- }
- m.AttrPermitVal()
- arg.AttrPermitSet()
- open, closed = s.getPermitOpenOrClosed(arg.Permission, m.Permission)
- if len(open) == 0 && len(closed) == 0 {
- return
- }
- if _, err = s.dao.UpMCNPermission(c, arg.SignID, arg.Permission); err != nil {
- return
- }
- s.worker.Add(func() {
- index := []interface{}{arg.SignID}
- content := map[string]interface{}{
- "sign_id": arg.SignID,
- "mcn_mid": m.McnMid,
- "state": m.State,
- "begin_date": m.BeginDate,
- "end_date": m.EndDate,
- "permission": arg.Permission,
- }
- s.AddAuditLog(context.Background(), model.MCNLogBizID, int8(model.MCNSignActionPermit), model.MCNSignActionPermit.String(), arg.UID, arg.UserName, []int64{m.McnMid}, index, content)
- })
- s.worker.Add(func() {
- argMsg := &model.ArgMsg{
- MIDs: []int64{m.McnMid},
- }
- if len(open) > 0 {
- argMsg.MSGType = model.McnPermissionOpen
- argMsg.Permission = strings.Join(open, "、")
- s.sendMsg(context.Background(), argMsg)
- }
- if len(closed) > 0 {
- argMsg.MSGType = model.McnPermissionClosed
- argMsg.Permission = strings.Join(closed, "、")
- s.sendMsg(context.Background(), argMsg)
- }
- })
- s.worker.Add(func() {
- s.dao.DelMcnSignCache(context.Background(), m.McnMid)
- })
- return
- }
- func (s *Service) getPermitOpenOrClosed(a, b uint32) (open, closed []string) {
- for permit := range model.PermitMap {
- var c, d = model.AttrVal(a, uint(permit)), model.AttrVal(b, uint(permit))
- if c == d {
- continue
- }
- if c > d {
- open = append(open, permit.String())
- } else {
- closed = append(closed, permit.String())
- }
- }
- return
- }
- func (s *Service) getUpPermitString(permission uint32) (ps []string) {
- for permit := range model.PermitMap {
- var p = model.AttrVal(permission, uint(permit))
- if p <= 0 {
- continue
- }
- ps = append(ps, permit.String())
- }
- return
- }
- // McnUPPermitList .
- func (s *Service) McnUPPermitList(c context.Context, arg *model.MCNUPPermitStateReq) (res *model.McnUpPermitApplyListReply, err error) {
- var (
- count int64
- upMids, mids, tids []int64
- accsReply *accgrpc.InfosReply
- accInfos map[int64]*accgrpc.Info
- mbi map[int64]*model.UpBaseInfo
- ms []*model.McnUpPermissionApply
- )
- res = new(model.McnUpPermitApplyListReply)
- res.Page = arg.Page
- if count, err = s.dao.McnUpPermitTotal(c, arg); err != nil {
- return
- }
- if count <= 0 {
- return
- }
- res.TotalCount = int(count)
- if ms, err = s.dao.McnUpPermits(c, arg); err != nil {
- return
- }
- for _, m := range ms {
- upMids = append(upMids, m.UpMid)
- mids = append(mids, m.UpMid)
- mids = append(mids, m.McnMid)
- }
- if mbi, err = s.dao.UpBaseInfoMap(c, upMids); err != nil {
- return
- }
- for _, v := range mbi {
- tids = append(tids, int64(v.ActiveTid))
- }
- for _, m := range ms {
- if bi, ok := mbi[m.UpMid]; ok {
- m.ActiveTID = bi.ActiveTid
- m.FansCount = bi.FansCount
- }
- }
- if len(mids) > 0 {
- if accsReply, err = s.accGRPC.Infos3(c, &accgrpc.MidsReq{Mids: mids}); err != nil {
- log.Error("s.accGRPC.Infos3(%+v) err(%v)", mids, err)
- err = nil
- } else {
- accInfos = accsReply.Infos
- }
- }
- tpNames := s.videoup.GetTidName(tids)
- for _, v := range ms {
- v.AttrPermitVal()
- if info, ok := accInfos[v.McnMid]; ok {
- v.McnName = info.Name
- }
- if info, ok := accInfos[v.UpMid]; ok {
- v.UpName = info.Name
- }
- if tyName, ok := tpNames[int64(v.ActiveTID)]; ok {
- v.TypeName = tyName
- } else {
- v.TypeName = model.DefaultTyName
- }
- }
- res.List = ms
- return
- }
- // McnUPPermitOP .
- func (s *Service) McnUPPermitOP(c context.Context, arg *model.MCNUPPermitOPReq) (err error) {
- var (
- tx *xsql.Tx
- ps []string
- accReply *accgrpc.InfoReply
- now = xtime.Time(time.Now().Unix())
- m *model.McnUpPermissionApply
- )
- if !arg.Action.NotRightAction() {
- return ecode.MCNSignUnknownReviewErr
- }
- if m, err = s.dao.McnUpPermit(c, arg.ID); err != nil {
- return err
- }
- if m == nil {
- return ecode.MCNUpAbnormalDataErr
- }
- state := arg.Action.GetState()
- if state == model.MCNUPPermissionStateUnKnown {
- log.Warn("mcn-up permit action(%d) old state(%d) to new err state(-1)", arg.Action, m.State)
- return ecode.MCNUpPermitStateFlowErr
- }
- if tx, err = s.dao.BeginTran(c); err != nil {
- return err
- }
- defer func() {
- if err != nil {
- tx.Rollback()
- } else {
- tx.Commit()
- }
- }()
- if arg.Action != model.MCNUPPermissionActionFail {
- now = 0
- arg.RejectReason = ""
- }
- m.State = state
- m.RejectReason = arg.RejectReason
- m.RejectTime = now
- m.AdminName = arg.UserName
- m.AdminID = arg.UID
- if _, err = s.dao.TxUpPermitApplyOP(tx, m); err != nil {
- return err
- }
- if state == model.MCNUPPermissionStatePass {
- if _, err = s.dao.TxMcnUpPermitOP(tx, m.SignID, m.McnMid, m.UpMid, m.NewPermission, m.UpAuthLink); err != nil {
- return err
- }
- ps = s.getUpPermitString(m.NewPermission)
- }
- if accReply, err = s.accGRPC.Info3(c, &accgrpc.MidReq{Mid: m.UpMid}); err != nil {
- log.Error("s.accGRPC.Info3(%+v) error(%+v)", &accgrpc.MidReq{Mid: m.McnMid}, err)
- err = nil
- }
- var name string
- if accReply.Info != nil {
- name = accReply.Info.Name
- }
- s.worker.Add(func() {
- argMsg := &model.ArgMsg{
- MIDs: []int64{m.McnMid},
- }
- if state == model.MCNUPPermissionStatePass {
- argMsg.UpName = name
- argMsg.MSGType = model.McnOperAgreeChangePermit
- argMsg.Permission = strings.Join(ps, "、")
- } else {
- argMsg.UpName = name
- argMsg.MSGType = model.McnOperNotAgreeChangePermit
- argMsg.Reason = m.RejectReason
- }
- s.sendMsg(context.Background(), argMsg)
- })
- s.worker.Add(func() {
- s.dao.DelMcnUpperCache(context.Background(), m.SignID, m.UpMid)
- })
- return
- }
- // MCNList .
- func (s *Service) MCNList(c context.Context, arg *model.MCNListReq) (res *model.MCNListReply, err error) {
- var (
- count int64
- signIDs, mids []int64
- mcns []*model.MCNListOne
- accsReply *accgrpc.InfosReply
- accInfos map[int64]*accgrpc.Info
- payInfos map[int64][]*model.SignPayInfoReply
- )
- res = new(model.MCNListReply)
- res.Page = arg.Page
- count, err = s.dao.MCNListTotal(c, arg)
- if err != nil {
- return
- }
- if count <= 0 {
- return
- }
- res.TotalCount = int(count)
- if mcns, signIDs, mids, err = s.dao.MCNList(c, arg); err != nil {
- return
- }
- if len(signIDs) <= 0 {
- return
- }
- if accsReply, err = s.accGRPC.Infos3(c, &accgrpc.MidsReq{Mids: mids}); err != nil {
- log.Error("s.accGRPC.Infos3(%+v) err(%v)", mids, err)
- err = nil
- } else {
- accInfos = accsReply.Infos
- }
- if payInfos, err = s.dao.MCNPayInfos(c, signIDs); err != nil {
- return
- }
- for k, v := range mcns {
- v.AttrPermitVal()
- mcns[k].PayInfos = payInfos[v.ID]
- if info, ok := accInfos[v.MCNMID]; ok {
- v.MCNName = info.Name
- }
- }
- res.List = mcns
- return
- }
- // MCNPayEdit .
- func (s *Service) MCNPayEdit(c context.Context, arg *model.MCNPayEditReq) error {
- if _, err := s.dao.UpMCNPay(c, arg); err != nil {
- return err
- }
- s.worker.Add(func() {
- index := []interface{}{arg.ID, arg.MCNMID}
- content := map[string]interface{}{
- "id": arg.ID,
- "mcn_mid": arg.MCNMID,
- "sign_id": arg.SignID,
- "due_date": arg.DueDate,
- "pay_value": arg.PayValue,
- }
- s.AddAuditLog(context.Background(), model.MCNPayDateLogBizID, int8(model.MCNSignCycleActionUp), model.MCNSignCycleActionUp.String(), arg.UID, arg.UserName, []int64{arg.SignID}, index, content)
- })
- s.worker.Add(func() {
- s.dao.DelMcnSignCache(context.Background(), arg.MCNMID)
- })
- return nil
- }
- // MCNPayStateEdit .
- func (s *Service) MCNPayStateEdit(c context.Context, arg *model.MCNPayStateEditReq) error {
- var (
- err error
- PayInfo *model.SignPayInfoReply
- )
- if _, err = s.dao.UpMCNPayState(c, arg); err != nil {
- return err
- }
- if PayInfo, err = s.dao.MCNPayInfo(c, arg); err != nil {
- log.Error("s.dao.MCNPayInfo(%+v) err(%v)", arg, err)
- err = nil
- }
- s.worker.Add(func() {
- index := []interface{}{arg.ID, arg.MCNMID}
- content := map[string]interface{}{
- "id": arg.ID,
- "mcn_mid": arg.MCNMID,
- "sign_id": arg.SignID,
- "due_date": PayInfo.DueDate,
- "pay_value": PayInfo.PayValue,
- "state": arg.State,
- }
- s.AddAuditLog(context.Background(), model.MCNPayDateLogBizID, int8(model.MCNSignCycleActionUp), model.MCNSignCycleActionUp.String(), arg.UID, arg.UserName, []int64{arg.SignID}, index, content)
- })
- s.worker.Add(func() {
- s.dao.DelMcnSignCache(context.Background(), arg.MCNMID)
- })
- return err
- }
- // MCNStateEdit .
- func (s *Service) MCNStateEdit(c context.Context, arg *model.MCNStateEditReq) error {
- if arg.Action != model.MCNSignActionBlock && arg.Action != model.MCNSignActionClear && arg.Action != model.MCNSignActionRestore {
- return ecode.RequestErr
- }
- var (
- err error
- ms *model.MCNSignInfoReply
- )
- if ms, err = s.dao.McnSign(c, arg.ID); err != nil {
- return err
- }
- arg.State = arg.Action.GetState(ms.State)
- if arg.State == model.MCNSignStateUnKnown {
- log.Warn("mcn_sign action(%d) old state(%d) to new err state(-1)", arg.Action, ms.State)
- return ecode.MCNSignStateFlowErr
- }
- if _, err = s.dao.UpMCNState(c, arg); err != nil {
- return err
- }
- s.worker.Add(func() {
- index := []interface{}{arg.State, arg.ID}
- content := map[string]interface{}{
- "sign_id": arg.ID,
- "mcn_mid": ms.McnMid,
- "begin_date": ms.BeginDate,
- "end_date": ms.EndDate,
- "contract_link": ms.ContractLink,
- "company_name": ms.CompanyName,
- "company_license_id": ms.CompanyLicenseID,
- "company_license_link": ms.CompanyLicenseLink,
- "contact_title": ms.ContactTitle,
- "contact_idcard": ms.ContactIdcard,
- "contact_phone": ms.ContactPhone,
- "contact_name": ms.ContactName,
- "state": arg.State,
- "permission": ms.Permission,
- }
- s.AddAuditLog(context.Background(), model.MCNLogBizID, int8(arg.Action), arg.Action.String(), arg.UID, arg.UserName, []int64{arg.MCNMID}, index, content)
- })
- s.worker.Add(func() {
- s.dao.DelMcnSignCache(context.Background(), arg.MCNMID)
- })
- s.worker.Add(func() {
- s.sendMsg(context.Background(), &model.ArgMsg{MSGType: arg.Action.GetmsgType(ms.State), MIDs: []int64{arg.MCNMID}})
- })
- return err
- }
- // MCNRenewal .
- func (s *Service) MCNRenewal(c context.Context, arg *model.MCNRenewalReq) (err error) {
- var (
- signID int64
- tx *xsql.Tx
- stime, etime time.Time
- m *model.MCNSignInfoReply
- ms = &model.MCNSign{}
- ups = make([]*model.MCNUP, 0)
- )
- if stime, err = time.ParseInLocation(model.TimeFormatDay, arg.BeginDate, time.Local); err != nil {
- err = errors.Errorf("time.ParseInLocation(%s) error(%+v)", arg.BeginDate, err)
- return err
- }
- if etime, err = time.ParseInLocation(model.TimeFormatDay, arg.EndDate, time.Local); err != nil {
- err = errors.Errorf("time.ParseInLocation(%s) error(%+v)", arg.EndDate, err)
- return err
- }
- if m, err = s.dao.McnSignByMCNMID(c, arg.MCNMID); err != nil {
- return err
- }
- if arg.ID != m.SignID {
- return ecode.MCNRenewalAlreadyErr
- }
- if stime.Before(m.EndDate.Time()) || etime.Before(stime) {
- return ecode.MCNRenewalDateErr
- }
- if m.State.IsRenewalState() && m.EndDate.Time().AddDate(0, 0, 1).After(time.Now()) && m.EndDate.Time().AddDate(0, 0, -30).Before(time.Now()) {
- return ecode.MCNRenewalNotInRangeErr
- }
- if tx, err = s.dao.BeginTran(c); err != nil {
- return err
- }
- defer func() {
- if err != nil {
- tx.Rollback()
- } else {
- tx.Commit()
- }
- }()
- arg.AttrPermitSet()
- ms.MCNMID = m.McnMid
- ms.CompanyName = m.CompanyName
- ms.CompanyLicenseID = m.CompanyLicenseID
- ms.CompanyLicenseLink = m.CompanyLicenseLink
- ms.ContractLink = arg.ContractLink
- ms.ContactName = m.ContactName
- ms.ContactTitle = m.ContactTitle
- ms.ContactIdcard = m.ContactIdcard
- ms.ContactPhone = m.ContactPhone
- ms.BeginDate = xtime.Time(stime.Unix())
- ms.EndDate = xtime.Time(etime.Unix())
- ms.Permission = arg.Permission
- if signID, err = s.dao.TxAddMCNRenewal(tx, ms); err != nil {
- return err
- }
- if len(arg.SignPayInfo) > 0 {
- if err = s.dao.TxAddMCNPays(tx, signID, m.McnMid, arg.SignPayInfo); err != nil {
- return err
- }
- }
- if ups, err = s.dao.TxMCNRenewalUPs(tx, arg.ID, m.McnMid); err != nil {
- return err
- }
- if len(ups) > 0 {
- if err = s.dao.TxAddMCNUPs(tx, signID, m.McnMid, ups); err != nil {
- return err
- }
- }
- s.worker.Add(func() {
- index := []interface{}{int8(model.MCNSignStateOnSign), signID}
- content := map[string]interface{}{
- "sign_id": signID,
- "mcn_mid": m.McnMid,
- "begin_date": ms.BeginDate,
- "end_date": ms.EndDate,
- "contract_link": m.ContractLink,
- "company_name": m.CompanyName,
- "company_license_id": m.CompanyLicenseID,
- "company_license_link": m.CompanyLicenseLink,
- "contact_title": m.ContactTitle,
- "contact_idcard": m.ContactIdcard,
- "contact_phone": m.ContactPhone,
- "permission": m.Permission,
- }
- s.AddAuditLog(context.Background(), model.MCNLogBizID, int8(model.MCNSignStateOnSign), model.MCNSignStateOnSign.String(), arg.UID, arg.UserName, []int64{arg.MCNMID}, index, content)
- })
- s.worker.Add(func() {
- index := []interface{}{arg.MCNMID}
- content := map[string]interface{}{
- "sign_id": signID,
- "mcn_mid": arg.MCNMID,
- "sign_pay_info": arg.SignPayInfo,
- }
- s.AddAuditLog(context.Background(), model.MCNPayDateLogBizID, int8(model.MCNSignCycleActionAdd), model.MCNSignCycleActionAdd.String(), arg.UID, arg.UserName, []int64{signID}, index, content)
- })
- s.worker.Add(func() {
- s.dao.DelMcnSignCache(context.Background(), arg.MCNMID)
- })
- s.worker.Add(func() {
- s.sendMsg(context.Background(), &model.ArgMsg{MSGType: model.McnRenewcontract, MIDs: []int64{arg.MCNMID}})
- })
- return
- }
- // MCNInfo .
- func (s *Service) MCNInfo(c context.Context, arg *model.MCNInfoReq) (res *model.MCNInfoReply, err error) {
- var accReply *accgrpc.InfoReply
- if res, err = s.dao.MCNInfo(c, arg); err != nil || res == nil {
- return
- }
- if accReply, err = s.accGRPC.Info3(c, &accgrpc.MidReq{Mid: res.MCNMID}); err != nil {
- log.Error("s.accGRPC.Infos3(%+v) err(%v)", arg, err)
- err = nil
- }
- if accReply.Info != nil {
- res.MCNName = accReply.Info.Name
- }
- res.CompanyLicenseLink = model.BuildBfsURL(res.CompanyLicenseLink, s.c.BFS.Key, s.c.BFS.Secret, s.c.BFS.Bucket, model.BfsEasyPath)
- res.ContractLink = model.BuildBfsURL(res.ContractLink, s.c.BFS.Key, s.c.BFS.Secret, s.c.BFS.Bucket, model.BfsEasyPath)
- return
- }
- // MCNUPList .
- func (s *Service) MCNUPList(c context.Context, arg *model.MCNUPListReq) (res *model.MCNUPListReply, err error) {
- var (
- count int64
- upMIDs, tids []int64
- tpNames map[int64]string
- mcn *model.MCNSignInfoReply
- mcnUPs []*model.MCNUPInfoReply
- accsReply *accgrpc.InfosReply
- accInfos map[int64]*accgrpc.Info
- )
- res = new(model.MCNUPListReply)
- res.Page = arg.Page
- if count, err = s.dao.MCNUPListTotal(c, arg); err != nil {
- return
- }
- if count <= 0 {
- return
- }
- res.TotalCount = int(count)
- if mcnUPs, err = s.dao.MCNUPList(c, arg); err != nil {
- return
- }
- if mcn, err = s.dao.McnSign(c, arg.SignID); err != nil {
- log.Error("s.dao.McnSign(%d) err(%v)", arg.SignID, err)
- err = nil
- }
- for _, v := range mcnUPs {
- if mcn != nil {
- v.Permission = v.Permission & mcn.Permission
- }
- v.AttrPermitVal()
- upMIDs = append(upMIDs, v.UpMid)
- tids = append(tids, int64(v.ActiveTid))
- }
- if accsReply, err = s.accGRPC.Infos3(c, &accgrpc.MidsReq{Mids: upMIDs}); err != nil {
- log.Error("s.accGRPC.Infos3(%+v) err(%v)", upMIDs, err)
- err = nil
- } else {
- accInfos = accsReply.Infos
- }
- tpNames = s.videoup.GetTidName(tids)
- for _, v := range mcnUPs {
- if info, ok := accInfos[v.UpMid]; ok {
- v.UpName = info.Name
- }
- if tyName, ok := tpNames[int64(v.ActiveTid)]; ok {
- v.TpName = tyName
- } else {
- v.TpName = model.DefaultTyName
- }
- v.UpAuthLink = model.BuildBfsURL(v.UpAuthLink, s.c.BFS.Key, s.c.BFS.Secret, s.c.BFS.Bucket, model.BfsEasyPath)
- v.ContractLink = model.BuildBfsURL(v.ContractLink, s.c.BFS.Key, s.c.BFS.Secret, s.c.BFS.Bucket, model.BfsEasyPath)
- }
- res.List = mcnUPs
- return
- }
- // MCNUPStateEdit .
- func (s *Service) MCNUPStateEdit(c context.Context, arg *model.MCNUPStateEditReq) error {
- if arg.Action != model.MCNUPActionFreeze && arg.Action != model.MCNUPActionRelease && arg.Action != model.MCNUPActionRestore {
- return ecode.RequestErr
- }
- var (
- err error
- up *model.MCNUPInfoReply
- m *model.MCNSignInfoReply
- upName, mcnName string
- accsReply *accgrpc.InfosReply
- accInfos map[int64]*accgrpc.Info
- )
- arg.State = arg.Action.GetState()
- if arg.State == model.MCNUPStateUnKnown {
- log.Warn("mcn_up action(%d) to new err state(-1)", arg.Action)
- return ecode.MCNSignStateFlowErr
- }
- if _, err = s.dao.UpMCNUPState(c, arg); err != nil {
- return err
- }
- if up, err = s.dao.McnUp(c, arg.ID); err != nil {
- log.Error("s.dao.McnUp(%v) err(%v)", arg.ID, err)
- }
- if m, err = s.dao.McnSign(c, up.SignID); err != nil {
- log.Error("s.dao.McnSign error(%+v)", err)
- err = nil
- }
- if accsReply, err = s.accGRPC.Infos3(c, &accgrpc.MidsReq{Mids: []int64{up.McnMid, up.UpMid}}); err != nil {
- log.Error("s.accGRPC.Infos3(%+v) error(%+v)", &accgrpc.MidsReq{Mids: []int64{up.McnMid, up.UpMid}}, err)
- err = nil
- } else {
- accInfos = accsReply.Infos
- }
- if info, ok := accInfos[up.McnMid]; ok {
- mcnName = info.Name
- }
- if info, ok := accInfos[up.UpMid]; ok {
- upName = info.Name
- }
- s.worker.Add(func() {
- index := []interface{}{int8(arg.State), arg.ID, up.McnMid, up.SignID}
- content := map[string]interface{}{
- "sign_up_id": arg.ID,
- "sign_id": up.SignID,
- "mcn_mid": up.McnMid,
- "up_mid": up.UpMid,
- "begin_date": up.BeginDate,
- "end_date": up.EndDate,
- "contract_link": up.ContractLink,
- "up_auth_link": up.UpAuthLink,
- "state": arg.State,
- "reject_reason": up.RejectReason,
- "reject_time": up.RejectTime,
- }
- s.AddAuditLog(context.Background(), model.MCNLogBizID, int8(arg.Action), arg.Action.String(), arg.UID, arg.UserName, []int64{arg.UPMID}, index, content)
- })
- s.worker.Add(func() {
- argMsg := &model.ArgMsg{
- MSGType: arg.Action.GetmsgType(true),
- MIDs: []int64{up.McnMid},
- CompanyName: m.CompanyName,
- McnName: mcnName,
- McnMid: up.McnMid,
- UpName: upName,
- UpMid: up.UpMid,
- }
- s.sendMsg(context.Background(), argMsg)
- argMsg.MSGType = arg.Action.GetmsgType(false)
- argMsg.MIDs = []int64{up.UpMid}
- s.sendMsg(context.Background(), argMsg)
- })
- return nil
- }
- // MCNCheatList .
- func (s *Service) MCNCheatList(c context.Context, arg *model.MCNCheatListReq) (res *model.MCNCheatListReply, err error) {
- var (
- count int64
- mids []int64
- mcnCheats []*model.MCNCheatReply
- accsReply *accgrpc.InfosReply
- accInfos map[int64]*accgrpc.Info
- )
- res = new(model.MCNCheatListReply)
- res.Page = arg.Page
- if count, err = s.dao.MCNCheatListTotal(c, arg); err != nil {
- return
- }
- if count <= 0 {
- return
- }
- res.TotalCount = int(count)
- if mcnCheats, mids, err = s.dao.MCNCheatList(c, arg); err != nil {
- return
- }
- if len(mcnCheats) <= 0 || len(mids) <= 0 {
- return
- }
- if accsReply, err = s.accGRPC.Infos3(c, &accgrpc.MidsReq{Mids: mids}); err != nil {
- log.Error("s.accGRPC.Infos3(%+v) err(%v)", mids, err)
- err = nil
- } else {
- accInfos = accsReply.Infos
- }
- for _, v := range mcnCheats {
- if info, ok := accInfos[v.UpMID]; ok {
- v.UpName = info.Name
- }
- if info, ok := accInfos[v.MCNMID]; ok {
- v.MCNName = info.Name
- }
- }
- res.List = mcnCheats
- return
- }
- // MCNCheatUPList .
- func (s *Service) MCNCheatUPList(c context.Context, arg *model.MCNCheatUPListReq) (res *model.MCNCheatUPListReply, err error) {
- var (
- count int64
- cheatUPInfos []*model.MCNCheatUPReply
- )
- res = new(model.MCNCheatUPListReply)
- res.Page = arg.Page
- if count, err = s.dao.MCNCheatUPListTotal(c, arg); err != nil {
- return
- }
- if count <= 0 {
- return
- }
- res.TotalCount = int(count)
- if cheatUPInfos, err = s.dao.MCNCheatUPList(c, arg); err != nil {
- return
- }
- var mids []int64
- for _, v := range cheatUPInfos {
- mids = append(mids, v.MCNMID)
- }
- mids = up.SliceUnique(mids)
- var (
- accInfos map[int64]*accgrpc.Info
- accsReply *accgrpc.InfosReply
- )
- if accsReply, err = s.accGRPC.Infos3(c, &accgrpc.MidsReq{Mids: mids}); err != nil {
- log.Error("s.accGRPC.Infos3(%+v) err(%v)", mids, err)
- err = nil
- } else {
- accInfos = accsReply.Infos
- }
- for _, v := range cheatUPInfos {
- if info, ok := accInfos[v.MCNMID]; ok {
- v.MCNName = info.Name
- }
- }
- res.List = cheatUPInfos
- return
- }
- // MCNImportUPInfo .
- func (s *Service) MCNImportUPInfo(c context.Context, arg *model.MCNImportUPInfoReq) (res *model.MCNImportUPInfoReply, err error) {
- var profileRepley *accgrpc.ProfileReply
- if res, err = s.dao.MCNImportUPInfo(c, arg); err != nil {
- return
- }
- res.UpMID = arg.UPMID
- if profileRepley, err = s.accGRPC.Profile3(c, &accgrpc.MidReq{Mid: arg.UPMID}); err != nil {
- log.Error("s.accGRPC.Profile3(%d) err(%v)", arg.UPMID, err)
- err = nil
- }
- if profileRepley.Profile != nil {
- res.UpName = profileRepley.Profile.Name
- res.JoinTime = profileRepley.Profile.JoinTime
- }
- return
- }
- // MCNImportUPRewardSign .
- func (s *Service) MCNImportUPRewardSign(c context.Context, arg *model.MCNImportUPRewardSignReq) (err error) {
- _, err = s.dao.UpMCNImportUPRewardSign(c, arg)
- return
- }
- // MCNIncreaseList .
- func (s *Service) MCNIncreaseList(c context.Context, arg *model.MCNIncreaseListReq) (res *model.MCNIncreaseListReply, err error) {
- var (
- count int64
- increaseDatas []*model.MCNIncreaseReply
- )
- res = new(model.MCNIncreaseListReply)
- res.Page = arg.Page
- if count, err = s.dao.MCNIncreaseListTotal(c, arg); err != nil {
- return
- }
- if count <= 0 {
- return
- }
- res.TotalCount = int(count)
- if increaseDatas, err = s.dao.MCNIncreaseList(c, arg); err != nil {
- return
- }
- res.List = increaseDatas
- return
- }
|