81 lines
1.8 KiB
Go
81 lines
1.8 KiB
Go
package service
|
|
|
|
import (
|
|
"enterprise/common/dao"
|
|
"enterprise/common/model"
|
|
"git.u8t.cn/open/gosdk/qyweixin"
|
|
log "github.com/sirupsen/logrus"
|
|
"github.com/smbrave/goutil"
|
|
"strings"
|
|
)
|
|
|
|
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(strings.ToLower(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 = strings.ToLower(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
|
|
}
|