123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- package service
- import (
- "context"
- "time"
- "go-common/app/admin/main/vip/model"
- "go-common/library/database/sql"
- "go-common/library/ecode"
- "go-common/library/log"
- xtime "go-common/library/time"
- "github.com/pkg/errors"
- )
- // Drawback Drawback
- func (s *Service) Drawback(c context.Context, days int, mid int64, usename, remark string) (err error) {
- var (
- userInfo *model.VipUserInfo
- history *model.VipChangeHistory
- ot time.Time
- tx *sql.Tx
- affected int64
- )
- if userInfo, err = s.dao.SelVipUserInfo(c, mid); err != nil {
- return
- }
- if userInfo == nil {
- err = ecode.VipUserInfoNotExit
- return
- }
- ct := time.Now()
- overdueTIme := userInfo.VipOverdueTime
- ot = overdueTIme.Time().AddDate(0, 0, -days)
- if ot.Before(ct) {
- ot = ct
- userInfo.VipStatus = model.VipStatusOverTime
- }
- userInfo.VipOverdueTime = xtime.Time(ot.Unix())
- if userInfo.AnnualVipOverdueTime.Time().After(ot) && userInfo.VipType == model.AnnualVip {
- userInfo.VipType = model.Vip
- userInfo.AnnualVipOverdueTime = xtime.Time(ot.Unix())
- }
- history = new(model.VipChangeHistory)
- history.Mid = mid
- history.ChangeTime = xtime.Time(time.Now().Unix())
- history.Days = -days
- history.ChangeType = model.ChangeTypeSystemDrawback
- history.OperatorID = usename
- history.Remark = remark
- if tx, err = s.dao.BeginTran(context.TODO()); err != nil {
- return
- }
- defer func() {
- if err == nil {
- if err = tx.Commit(); err != nil {
- tx.Rollback()
- }
- } else {
- tx.Rollback()
- }
- }()
- if affected, err = s.dao.UpdateVipUserInfo(tx, userInfo); err != nil {
- return
- }
- if affected > 0 {
- if _, err = s.dao.InsertVipChangeHistory(tx, history); err != nil {
- return
- }
- if err = s.dao.DelBcoinSalary(tx, mid, userInfo.VipOverdueTime); err != nil {
- return
- }
- }
- return
- }
- // ExchangeVipByDays exchange vip days
- //func (s *Service) exchangeVip(c context.Context, tx *sql.Tx, mid, batchID, unit int, remark, username string) (hv *inModel.HandlerVip, err error) {
- // var r = new(inModel.VipChangeBo)
- // if mid == 0 {
- // err = ecode.VipMidErr
- // return
- // }
- // if len(remark) == 0 || len(remark) > 200 {
- // err = ecode.VipRemarkErr
- // return
- // }
- // r.BatchID = int64(batchID)
- // r.ChangeType = model.ChangeTypeSystem
- // r.Remark = remark
- // r.OperatorID = username
- // r.Days = int32(unit)
- // r.Mid = int64(mid)
- // log.Info("%+v ", r)
- // if hv, err = s.vipRPC.UpdateVipWithHistory(context.TODO(), r); err != nil {
- // fmt.Printf("rpc %+v err(%+v) \n", hv, err)
- // log.Error("rpc %+v err(%+v) ", hv, err)
- // return
- // }
- // return
- //}
- // HistoryPage history page.
- func (s *Service) HistoryPage(c context.Context, u *model.UserChangeHistoryReq) (res []*model.VipChangeHistory, count int, err error) {
- if count, err = s.dao.HistoryCount(c, u); err != nil {
- log.Error("%+v", err)
- return
- }
- if count == 0 {
- return
- }
- if res, err = s.dao.HistoryList(c, u); err != nil {
- log.Error("%+v", err)
- return
- }
- return
- }
- // VipInfo .
- func (s *Service) VipInfo(c context.Context, mid int64) (res *model.VipUserInfo, err error) {
- if res, err = s.dao.SelVipUserInfo(c, mid); err != nil {
- err = errors.WithStack(err)
- return
- }
- return
- }
|