From d0752a09128ccf50b767175b276367cf5884c6e0 Mon Sep 17 00:00:00 2001 From: suyl <770236076@qq.com> Date: Tue, 25 May 2021 17:56:39 +0800 Subject: [PATCH] aa --- business/jxstore/cms/user2.go | 94 +++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) diff --git a/business/jxstore/cms/user2.go b/business/jxstore/cms/user2.go index ca6782bf8..ba248627f 100644 --- a/business/jxstore/cms/user2.go +++ b/business/jxstore/cms/user2.go @@ -3,6 +3,9 @@ package cms import ( "errors" "fmt" + "git.rosy.net.cn/baseapi/platformapi/qywxapi" + "git.rosy.net.cn/jx-callback/business/jxutils/ddmsg" + beego "github.com/astaxie/beego/server/web" "sort" "strings" "sync" @@ -1199,5 +1202,96 @@ func GetUserStoreAuth(ctx *jxcontext.Context, storeID int) (outStoreID int, err } func SendQywxPeopleCount(ctx *jxcontext.Context) (err error) { + var ( + db = dao.GetDB() + groupIDMap = make(map[string]int) + unionIDMap = make(map[string]string) + mobileMap = make(map[string]string) + mobileExistMap = make(map[string]string) + mobiles []string + ) + if beego.BConfig.RunMode == "jxgy" { + groupIDMap[qywxapi.GyGroupID] = 1 + } else { + groupIDMap[qywxapi.BldGroupID] = 7 + groupIDMap[qywxapi.CsGroupID] = 1 + } + //先找出群组中所有的unionID + for k, v := range groupIDMap { + stores, _ := dao.GetStoreList(db, nil, nil, []int{model.StoreStatusOpened}, []int{v}, nil, "") + for _, store := range stores { + if store.Tel1 != "" { + mobileMap[store.Tel1] = store.Tel1 + } + if store.Tel2 != "" { + mobileMap[store.Tel2] = store.Tel2 + } + } + group, _ := api.QywxAPI.Groupchat(k) + for _, member := range group.GroupChat.MemberList { + if member.UnionID != "" { + unionIDMap[member.UnionID] = member.UnionID + } + } + } + //再找出群组中所有unionID对应的电话 + for _, v := range unionIDMap { + binds, _ := dao.GetUserBindAuthInfo(db, "", model.AuthBindTypeAuth, nil, "", v, nil) + if len(binds) > 0 { + user, _ := dao.GetUserByID(db, "user_id", binds[0].UserID) + if user != nil { + mobileExistMap[*user.Mobile] = *user.Mobile + } + } + } + for _, v := range mobileMap { + if mobileExistMap[v] == "" { + mobiles = append(mobiles, v) + } + } + //最后找出已有门店电话不在已有群组里的发消息 + for _, v := range mobiles { + store := &model.Store{} + sql := ` + SELECT * FROM store WHERE (tel1 = ? OR tel2 = ?) + ` + sqlParams := []interface{}{v, v} + dao.GetRow(db, &store, sql, sqlParams) + if store != nil { + if mobileExistMap[store.Tel1] != "" || mobileExistMap[store.Tel2] != "" { + continue + } + //发消息 + var ( + userIDMap = make(map[string]string) + ) + operatorRoleList := []string{store.OperatorRole, store.OperatorRole2, store.OperatorRole3} + for _, vv := range operatorRoleList { + var ( + roleList []*authz.RoleInfo + ) + if vv != "" { + roleList = append(roleList, autils.NewRole(vv, 0)) + if userIDMap2, err := GetRolesUserList(jxcontext.AdminCtx, roleList); err == nil { + for _, w := range userIDMap2 { + for _, ww := range w { + userIDMap[ww] = ww + } + } + } + } + noticeMsg := fmt.Sprintf("您有负责的商家还未加入相应的便利店/菜市/果园沟通群,门店ID :[%d],门店名:[%s],商家电话:[%s,%s]", store.ID, store.Name, store.Tel1, store.Tel2) + user2, err := dao.GetUserByID(db, "mobile", store.MarketManPhone) + if err == nil { + userIDMap[user2.UserID] = user2.UserID + for _, v := range userIDMap { + if api.DingDingAPI.GetToken() != "" { + ddmsg.SendUserMessage(dingdingapi.MsgTyeText, v, "您有商家还未加入企业微信群", noticeMsg) + } + } + } + } + } + } return err }