Giter VIP home page Giter VIP logo

api-server's People

Contributors

gargantuax avatar putyy avatar sersoong avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

api-server's Issues

招募项目维护者

我没有时间维护这个项目,且没有使用场景。
有兴趣维护这个项目的同学可以一起来维护,成为contributor。

获取员工外部客户ID方法只返回3个ID怎么解决?

// BatchFetchCustomers
// Description: 并发获取员工的外部客户ID
// Detail: 不用将员工与客户id数组对应
func (o CustomerService) BatchFetchCustomers(extStaff []*workwx.UserInfo) (totalExtCustomerIDs []string, err error)

哪位大佬知道怎么解决的啊。

model类型修改建议

model目录下的mass_msg_staff.go文件的struct,建议将MassMsgId属性的gorm:"index;type:bigint"改为gorm:"index;type:varchar(64)",由于QueryExtStaffids方法中第一个where语句的mysql的in函数需要字段类型与in中类型匹配,前端MassMsgId是string类型,而mysql中是bigint类型,会导致搜索不匹配,后续不判空会报index [0] out of range 错误。
同理,file_size字段也是bigint,调用parse-url接口时前端填写的fileSize是空字符串”“,与数据库字段不匹配,素材库页面解析网页功能不可用,要么在前端改类型。
客户详情age字段前端没有限定num类型和长度,数据库是tinyint(3) ,修改基本信息时字段不匹配也会报错。

会话记录为空的时候会显示NULL转int64错误

staff.go单元,这段代码增加IFNULL处理

    err = DB.Model(&GroupChat{}).Where("ext_corp_id = ?", extCorpID).
	Pluck("IFNULL(sum(today_join_member_num),0) as today_groups_increase", &cs.TodayGroupsIncrease).Error
if err != nil {
	err = errors.WithStack(err)
	return
}

err = DB.Model(&GroupChat{}).Where("ext_corp_id = ?", extCorpID).
	Pluck("IFNULL(sum(today_quit_member_num),0) as today_groups_decrease", &cs.TodayGroupsDecrease).Error
if err != nil {
	err = errors.WithStack(err)
	return
}

get all depar, Msg: "api forbidden for contact assistant

image
2024-03-05T22:30:12.053+0800 ERROR services/department.go:37 get all depar, Msg: "api forbidden for contact assistant, hint: [1709649011424270725404086], from work.weixin.qq.com/devtool/query?e=48009" }
openscrm/app/services.Department.Sync
D:/Porduct/GO/api-server/app/services/department.go:37
openscrm/app/services.Syncs
D:/Porduct/GO/api-server/app/services/init.go:19
main.init.0
D:/Porduct/GO/api-server/main.go:59
runtime.doInit
C:/Users/gaode/sdk/go1.19.10/src/runtime/proc.go:6330
runtime.main
C:/Users/gaode/sdk/go1.19.10/src/runtime/proc.go:233
panic: ClientError { Code: 48009, Msg: "api forbidden for contact assistant, hint: [1.127, more info at https://open.work.weixin.qq.com/devtool/query?e=48009" }

goroutine 1 [running]:
openscrm/app/services.Syncs()
D:/Porduct/GO/api-server/app/services/init.go:21 +0x30e
main.init.0()
D:/Porduct/GO/api-server/main.go:59 +0x485

核心问题是两个:
get all depar, Msg: "api forbidden for contact assistant, hint: [1709649011424270725404086], from work.weixin.qq.com/devtool/query?e=48009" }
panic: ClientError { Code: 48009, Msg: "api forbidden for contact assistant, hint: [1.127, more info at https://open.work.weixin.qq.com/devtool/query?e=48009" }
请问怎么解决?

dashboard和sidebar同时使用如何部署呢?

目前遇到一个问题, 回调域名设置dashboard的域名, 后台能正常使用, 不过配置了sidebar的域名后, 在聊天侧边栏打开会提示redirect_url不是可信域名, 但是应用的回调域名只能设置一个, 如果新建一个侧边栏应用的话, 项目里也不支持多应用, 请问一下 这个是怎么配置的呢

为啥二维码出不来

微信图片_20240116184857
微信截图_20240116184735

为啥这个二维码出不来,login接口总是报502错误呢?还是需要配置白名单?

是我配置信息少填了的原因吗? 而且现在客户联系Secret 好像无法直接获取了 get all departments from wx failed,纳闷...

这个项目如何在k8s上跑起来?

将这个项目部署在 k8s 上,分配 3 个副本,如何保证只有 1 个副本在刷新 access_token ?
看了下源代码,是直接开一个协程在刷新 access_token,但是项目部署在 3 个副本时,每个副本都会启动刷新 access_token 的协程,那就意味着每个副本都在刷新 access_token?

func (t *Token) tokenRefresher(ctx context.Context) {
    // refresh per 30m
    const refreshTimeWindow = (2*60 - 30) * time.Minute
    const minRefreshDuration = 5 * time.Second

    var nextRefreshDuration time.Duration = 0
    for {
        select {
        case <-time.After(nextRefreshDuration):
            retryer := backoff.WithContext(backoff.NewExponentialBackOff(), ctx)
            if err := backoff.Retry(t.syncToken, retryer); err != nil {
                log.Println("retry getting access token failed", "err", err)
                _ = err
            }

            nextRefreshDuration = t.LastRefresh.Add(t.ExpiresIn - refreshTimeWindow).Sub(t.LastRefresh)
            if nextRefreshDuration < minRefreshDuration {
                nextRefreshDuration = minRefreshDuration
            }
        case <-ctx.Done():
            return
        }
    }
}

会话存档没法显示,我看后台有报错 Unknown column 'ext_staff_id' in 'where clause'


api_1      |
api_1      | 2022/01/06 11:00:00 /root/scrm/scrm/app/models/mass_msg_staff.go:121
api_1      | [4.555ms] [rows:0] SELECT mass_msg.ext_msg_id as ext_msg_id, mass_msg_staff.ext_staff_id as ext_staff_id, mass_msg_staff.id as id FROM `mass_msg` join mass_msg_staff on  mass_msg_staff.mass_msg_id = mass_msg.id WHERE (mass_msg.ext_corp_id = 'ww17efc9574291cc91') AND is_sent = 0
api_1      |
api_1      | 2022/01/06 11:00:00 /root/scrm/scrm/app/models/staff.go:351 Error 1054: Unknown column 'ext_staff_id' in 'where clause'
api_1      | [0.745ms] [rows:0] UPDATE `staff` SET `enable_msg_arch`='1',`updated_at`='2022-01-06 11:00:00.563' WHERE ext_corp_id = 'ww17efc9574291cc91' and  ext_staff_id in ('HuBoYu_zero')
api_1      | 2022-01-06T11:00:00.563+0800       ERROR   tasks/message_arch.go:28        UpdateStaffMsgArchStatus failed {"err": "Error 1054: Unknown column 'ext_staff_id' in 'where clause'", "errVerbose": "Error 1054: Unknown column 'ext_staff_id' in 'where clause'\nopenscrm/app/services.StaffService.doUpdateMsgArchStatus\n\t/root/scrm/scrm/app/services/staff.go:696\nopenscrm/app/services.StaffService.UpdateStaffMsgArchStatus\n\t/root/scrm/scrm/app/services/staff.go:679\nopenscrm/app/tasks.Staff.UpdateMsgArchStatus\n\t/root/scrm/scrm/app/tasks/message_arch.go:26\ngithub.com/gogf/gf/os/gcron.(*Entry).check\n\t/root/.asdf/installs/golang/1.17.5/packages/pkg/mod/github.com/gogf/[email protected]/os/gcron/gcron_entry.go:146\ngithub.com/gogf/gf/os/gtimer.(*Entry).Run.func1\n\t/root/.asdf/installs/golang/1.17.5/packages/pkg/mod/github.com/gogf/[email protected]/os/gtimer/gtimer_entry.go:59\nruntime.goexit\n\t/root/.asdf/installs/golang/1.17.5/go/src/runtime/asm_amd64.s:1581\nopenscrm/app/services.StaffService.UpdateStaffMsgArchStatus\n\t/root/scrm/scrm/app/services/staff.go:681\nopenscrm/app/tasks.Staff.UpdateMsgArchStatus\n\t/root/scrm/scrm/app/tasks/message_arch.go:26\ngithub.com/gogf/gf/os/gcron.(*Entry).check\n\t/root/.asdf/installs/golang/1.17.5/packages/pkg/mod/github.com/gogf/[email protected]/os/gcron/gcron_entry.go:146\ngithub.com/gogf/gf/os/gtimer.(*Entry).Run.func1\n\t/root/.asdf/installs/golang/1.17.5/packages/pkg/mod/github.com/gogf/[email protected]/os/gtimer/gtimer_entry.go:59\nruntime.goexit\n\t/root/.asdf/installs/golang/1.17.5/go/src/runtime/asm_amd64.s:1581"}
api_1      | openscrm/app/tasks.Staff.UpdateMsgArchStatus

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.