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.
70 lines
1.7 KiB
70 lines
1.7 KiB
package service |
|
|
|
import ( |
|
"context" |
|
"encoding/json" |
|
"time" |
|
|
|
"go-common/app/job/main/credit/model" |
|
"go-common/library/log" |
|
) |
|
|
|
// KPIReward send reward to user by kpi info. |
|
func (s *Service) KPIReward(c context.Context, nwMsg []byte, oldMsg []byte) (err error) { |
|
var ( |
|
mr = &model.Kpi{} |
|
res model.Kpi |
|
nameplentID int64 |
|
coins float64 |
|
) |
|
if err = json.Unmarshal(nwMsg, mr); err != nil { |
|
log.Error("json.Unmarshal(%s) error(%v)", string(nwMsg), err) |
|
return |
|
} |
|
if res, err = s.dao.KPIInfo(c, mr.ID); err != nil { |
|
log.Error("json.KPIInf(%d) error(%v)", mr.ID, err) |
|
return |
|
} |
|
if res.HandlerStatus == 1 { |
|
return |
|
} |
|
s.dao.SendMsg(c, mr.Mid, _msgTitle, _msgContext) |
|
coins = model.KpiCoinsRate(mr.Rate) |
|
if coins > 0 { |
|
s.dao.AddMoney(c, mr.Mid, coins, model.KPICoinsReason) |
|
} |
|
s.dao.UpdateKPIHandlerStatus(c, mr.ID) |
|
if pend, ok := model.LevelPendantByKPI(int8(mr.Rate)); ok { |
|
expired := time.Now().AddDate(0, 0, 30) |
|
if err = s.dao.UpdateJuryExpired(c, mr.Mid, expired); err != nil { |
|
return |
|
} |
|
if len(pend) > 0 { |
|
if err = s.dao.SendPendant(c, mr.Mid, pend, model.KPIDefealtPendSendDays); err != nil { |
|
log.Error("s.dao.SendPendant err(%v)", err) |
|
} |
|
if err == nil { |
|
s.dao.UpdateKPIPendentStatus(c, mr.ID) |
|
} |
|
if mr.Mid%50 == 1 { |
|
time.Sleep(time.Second) |
|
} |
|
} |
|
} |
|
num, err := s.dao.CountKPIRate(c, mr.Mid) |
|
if err != nil { |
|
log.Error("s.dao.CountKPIRate(mid:%d) err(%v)", mr.Mid, err) |
|
return |
|
} |
|
nameplentID = model.KpiPlateIDRateTimes(num) |
|
if nameplentID != 0 { |
|
for i := 0; i <= 5; i++ { |
|
if err = s.dao.SendMedal(c, mr.Mid, nameplentID); err != nil { |
|
log.Error("s.dao.SendMedal(mid:%d nameNameplatid:%d) err(%v)", mr.Mid, nameplentID, err) |
|
continue |
|
} |
|
break |
|
} |
|
} |
|
return |
|
}
|
|
|