diff --git a/business/jxstore/cms/user2.go b/business/jxstore/cms/user2.go index e46064415..fafbda55d 100644 --- a/business/jxstore/cms/user2.go +++ b/business/jxstore/cms/user2.go @@ -1203,22 +1203,24 @@ 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 + db = dao.GetDB() + groupIDMap = make(map[string][]interface{}) ) if beego.BConfig.RunMode == "jxgy" { - groupIDMap[qywxapi.GyGroupID] = 1 + groupIDMap[qywxapi.GyGroupID] = []interface{}{1, "京西果园"} } else { - groupIDMap[qywxapi.BldGroupID] = 7 - groupIDMap[qywxapi.CsGroupID] = 1 + groupIDMap[qywxapi.BldGroupID] = []interface{}{7, "京西超市"} + groupIDMap[qywxapi.CsGroupID] = []interface{}{1, "京西菜市"} } //先找出群组中所有的unionID - for k, v := range groupIDMap { - stores, _ := dao.GetStoreList(db, nil, nil, []int{model.StoreStatusOpened}, []int{v}, nil, "") + for groupID, list := range groupIDMap { + var ( + unionIDMap = make(map[string]string) + mobileMap = make(map[string]string) + mobileExistMap = make(map[string]string) + mobiles []string + ) + stores, _ := dao.GetStoreList(db, nil, nil, []int{model.StoreStatusOpened}, []int{int(utils.Interface2Int64WithDefault(list[0], 0))}, nil, "") for _, store := range stores { if store.Tel1 != "" { mobileMap[store.Tel1] = store.Tel1 @@ -1227,66 +1229,67 @@ func SendQywxPeopleCount(ctx *jxcontext.Context) (err error) { mobileMap[store.Tel2] = store.Tel2 } } - group, _ := api.QywxAPI.Groupchat(k) + group, _ := api.QywxAPI.Groupchat(groupID) 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 + + //再找出群组中所有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 mobileMap { + if mobileExistMap[v] == "" { + mobiles = append(mobiles, v) + } } - } - //最后找出已有门店电话不在已有群组里的发消息 - for _, v := range mobiles { - store := &model.Store{} - sql := ` + //最后找出已有门店电话不在已有群组里的发消息 + for _, v := range mobiles { + store := &model.Store{} + sql := ` SELECT * FROM store WHERE (tel1 = ? OR tel2 = ?) AND deleted_at = ? ` - sqlParams := []interface{}{v, v, utils.DefaultTimeValue} - 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 { + sqlParams := []interface{}{v, v, utils.DefaultTimeValue} + dao.GetRow(db, &store, sql, sqlParams) + if store != nil { + if mobileExistMap[store.Tel1] != "" || mobileExistMap[store.Tel2] != "" { + continue + } + //发消息 var ( - roleList []*authz.RoleInfo + userIDMap = make(map[string]string) ) - 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 + 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) + noticeMsg := fmt.Sprintf("您有负责的商家还未加入相应的[%s]沟通群,门店ID :[%d],门店名:[%s],商家电话:[%s,%s]", list[1].(string), 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) + } } } }