123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- package service
- import (
- "context"
- "go-common/library/log"
- "go-common/app/admin/ep/marthe/model"
- "go-common/library/ecode"
- )
- // QueryUserInfo query user info.
- func (s *Service) QueryUserInfo(c context.Context, username string) (userInfo *model.User, err error) {
- if userInfo, err = s.dao.FindUserByUserName(username); err != nil {
- return
- }
- if userInfo.ID == 0 {
- user := model.User{Name: username, EMail: username + "@bilibili.com"}
- s.dao.CreateUser(&user)
- userInfo, err = s.dao.FindUserByUserName(username)
- }
- return
- }
- // HttpSyncWechatContacts Http Sync Wechat Contacts.
- func (s *Service) HttpSyncWechatContacts(ctx context.Context) (err error) {
- s.taskCache.Do(context.TODO(), func(ctx context.Context) {
- s.SyncWechatContacts()
- })
- return
- }
- // SyncWechatContacts Sync Wechat Contacts.
- func (s *Service) SyncWechatContacts() (err error) {
- s.syncWechatContactsLock.Lock()
- defer s.syncWechatContactsLock.Unlock()
- log.Info("start")
- var (
- wechatContacts []*model.WechatContact
- contactInfosInDB []*model.ContactInfo
- )
- if wechatContacts, err = s.dao.WechatContacts(context.Background()); err != nil {
- return
- }
- if contactInfosInDB, err = s.dao.QueryAllContactInfos(); err != nil {
- return
- }
- for _, wechatContact := range wechatContacts {
- var (
- tmpContactInfoInDB *model.ContactInfo
- )
- for _, contactInfoInDB := range contactInfosInDB {
- if contactInfoInDB.UserID == wechatContact.UserID {
- tmpContactInfoInDB = contactInfoInDB
- break
- }
- }
- if tmpContactInfoInDB != nil {
- //update
- tmpContactInfoInDB.UserName = wechatContact.EnglishName
- tmpContactInfoInDB.NickName = wechatContact.Name
- if err = s.dao.UpdateContactInfo(tmpContactInfoInDB); err != nil {
- continue
- }
- } else {
- //add
- tmpContactInfoInDB = &model.ContactInfo{
- UserName: wechatContact.EnglishName,
- NickName: wechatContact.Name,
- UserID: wechatContact.UserID,
- }
- if err = s.dao.InsertContactInfo(tmpContactInfoInDB); err != nil {
- continue
- }
- }
- }
- log.Info("end")
- return
- }
- // AccessToBugly Access To Bugly.
- func (s *Service) AccessToBugly(c context.Context, username string) (isAccess bool) {
- var (
- userInfo *model.User
- err error
- )
- if userInfo, err = s.QueryUserInfo(c, username); err != nil {
- return
- }
- isAccess = userInfo.VisibleBugly
- return
- }
- // UpdateUserVisibleBugly Update User Visible Bugly.
- func (s *Service) UpdateUserVisibleBugly(c context.Context, username, updateUsername string, visibleBugly bool) (err error) {
- var (
- hasRight bool
- userInfo *model.User
- )
- for _, super := range s.c.Bugly.SuperOwner {
- if username == super {
- hasRight = true
- break
- }
- }
- if !hasRight {
- err = ecode.AccessDenied
- return
- }
- if userInfo, err = s.dao.FindUserByUserName(updateUsername); err != nil {
- return
- }
- if userInfo.ID == 0 {
- err = ecode.NothingFound
- return
- }
- err = s.dao.UpdateUserVisibleBugly(userInfo.ID, visibleBugly)
- return
- }
|