package service import ( "enterprise/common/dao" "enterprise/common/model" "git.u8t.cn/open/gosdk/qyweixin" log "github.com/sirupsen/logrus" "github.com/smbrave/goutil" ) type Checkin struct { } func (c *Checkin) SyncCheckin(corpId int64, startDay, endDay string) error { corp, err := dao.NewCorpDao().Get(corpId) if err != nil { log.Errorf("db error :%s", err.Error()) return err } cfg := corp.GetConfig() qyw := qyweixin.NewAppCheckin(&qyweixin.AppConfig{ Corpid: cfg.CorpId, Secret: cfg.EnterpriseSecret, Agent: cfg.EnterpriseAgent, }) users, err := qyw.GetCheckinEmployee(nil) if err != nil { log.Errorf("GetCheckinEmployee error :%s", err.Error()) return err } userDatas, err := qyw.GetCheckinDataV2(startDay, endDay, users) if err != nil { log.Errorf("GetCheckinData[%s-%s]%s error :%s", startDay, endDay, goutil.EncodeJSON(users), err.Error()) return err } for _, user := range userDatas { c.saveToDB(corpId, user) } return nil } func (c *Checkin) saveToDB(corpId int64, user *qyweixin.UserCheckIn) error { checkin, err := dao.NewCheckinDao().GetByDay(user.UserId, user.Day) if err != nil { log.Errorf("db error :%s", err.Error()) return err } isNew := false if checkin == nil { checkin = new(model.Checkin) checkin.Day = user.Day checkin.Month = user.Month checkin.Username = user.UserId isNew = true } checkin.Exception = user.Exception checkin.StartTime = user.StartTime checkin.EndTime = user.EndTime checkin.Month = user.Month checkin.Rawdata = user.Rawdata checkin.CorpId = corpId if isNew { _, err = dao.NewCheckinDao().Create(checkin) } else { err = dao.NewCheckinDao().Update(checkin) } if err != nil { log.Errorf("create/update db error :%s", err.Error()) return err } return nil }