This commit is contained in:
suyl
2021-05-25 18:20:50 +08:00
parent 4e6f7ae859
commit 6d366d902f

View File

@@ -1203,22 +1203,24 @@ func GetUserStoreAuth(ctx *jxcontext.Context, storeID int) (outStoreID int, err
func SendQywxPeopleCount(ctx *jxcontext.Context) (err error) { func SendQywxPeopleCount(ctx *jxcontext.Context) (err error) {
var ( var (
db = dao.GetDB() db = dao.GetDB()
groupIDMap = make(map[string]int) groupIDMap = make(map[string][]interface{})
unionIDMap = make(map[string]string)
mobileMap = make(map[string]string)
mobileExistMap = make(map[string]string)
mobiles []string
) )
if beego.BConfig.RunMode == "jxgy" { if beego.BConfig.RunMode == "jxgy" {
groupIDMap[qywxapi.GyGroupID] = 1 groupIDMap[qywxapi.GyGroupID] = []interface{}{1, "京西果园"}
} else { } else {
groupIDMap[qywxapi.BldGroupID] = 7 groupIDMap[qywxapi.BldGroupID] = []interface{}{7, "京西超市"}
groupIDMap[qywxapi.CsGroupID] = 1 groupIDMap[qywxapi.CsGroupID] = []interface{}{1, "京西菜市"}
} }
//先找出群组中所有的unionID //先找出群组中所有的unionID
for k, v := range groupIDMap { for groupID, list := range groupIDMap {
stores, _ := dao.GetStoreList(db, nil, nil, []int{model.StoreStatusOpened}, []int{v}, nil, "") 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 { for _, store := range stores {
if store.Tel1 != "" { if store.Tel1 != "" {
mobileMap[store.Tel1] = store.Tel1 mobileMap[store.Tel1] = store.Tel1
@@ -1227,66 +1229,67 @@ func SendQywxPeopleCount(ctx *jxcontext.Context) (err error) {
mobileMap[store.Tel2] = store.Tel2 mobileMap[store.Tel2] = store.Tel2
} }
} }
group, _ := api.QywxAPI.Groupchat(k) group, _ := api.QywxAPI.Groupchat(groupID)
for _, member := range group.GroupChat.MemberList { for _, member := range group.GroupChat.MemberList {
if member.UnionID != "" { if member.UnionID != "" {
unionIDMap[member.UnionID] = member.UnionID unionIDMap[member.UnionID] = member.UnionID
} }
} }
}
//再找出群组中所有unionID对应的电话 //再找出群组中所有unionID对应的电话
for _, v := range unionIDMap { for _, v := range unionIDMap {
binds, _ := dao.GetUserBindAuthInfo(db, "", model.AuthBindTypeAuth, nil, "", v, nil) binds, _ := dao.GetUserBindAuthInfo(db, "", model.AuthBindTypeAuth, nil, "", v, nil)
if len(binds) > 0 { if len(binds) > 0 {
user, _ := dao.GetUserByID(db, "user_id", binds[0].UserID) user, _ := dao.GetUserByID(db, "user_id", binds[0].UserID)
if user != nil { if user != nil {
mobileExistMap[*user.Mobile] = *user.Mobile mobileExistMap[*user.Mobile] = *user.Mobile
}
} }
} }
} for _, v := range mobileMap {
for _, v := range mobileMap { if mobileExistMap[v] == "" {
if mobileExistMap[v] == "" { mobiles = append(mobiles, v)
mobiles = append(mobiles, v) }
} }
} //最后找出已有门店电话不在已有群组里的发消息
//最后找出已有门店电话不在已有群组里的发消息 for _, v := range mobiles {
for _, v := range mobiles { store := &model.Store{}
store := &model.Store{} sql := `
sql := `
SELECT * FROM store WHERE (tel1 = ? OR tel2 = ?) AND deleted_at = ? SELECT * FROM store WHERE (tel1 = ? OR tel2 = ?) AND deleted_at = ?
` `
sqlParams := []interface{}{v, v, utils.DefaultTimeValue} sqlParams := []interface{}{v, v, utils.DefaultTimeValue}
dao.GetRow(db, &store, sql, sqlParams) dao.GetRow(db, &store, sql, sqlParams)
if store != nil { if store != nil {
if mobileExistMap[store.Tel1] != "" || mobileExistMap[store.Tel2] != "" { if mobileExistMap[store.Tel1] != "" || mobileExistMap[store.Tel2] != "" {
continue continue
} }
//发消息 //发消息
var (
userIDMap = make(map[string]string)
)
operatorRoleList := []string{store.OperatorRole, store.OperatorRole2, store.OperatorRole3}
for _, vv := range operatorRoleList {
var ( var (
roleList []*authz.RoleInfo userIDMap = make(map[string]string)
) )
if vv != "" { operatorRoleList := []string{store.OperatorRole, store.OperatorRole2, store.OperatorRole3}
roleList = append(roleList, autils.NewRole(vv, 0)) for _, vv := range operatorRoleList {
if userIDMap2, err := GetRolesUserList(jxcontext.AdminCtx, roleList); err == nil { var (
for _, w := range userIDMap2 { roleList []*authz.RoleInfo
for _, ww := range w { )
userIDMap[ww] = ww 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("您有负责的商家还未加入相应的[%s]沟通群门店ID :[%d],门店名:[%s],商家电话:[%s,%s]", list[1].(string), store.ID, store.Name, store.Tel1, store.Tel2)
noticeMsg := fmt.Sprintf("您有负责的商家还未加入相应的便利店/菜市/果园沟通群门店ID :[%d],门店名:[%s],商家电话:[%s,%s]", store.ID, store.Name, store.Tel1, store.Tel2) user2, err := dao.GetUserByID(db, "mobile", store.MarketManPhone)
user2, err := dao.GetUserByID(db, "mobile", store.MarketManPhone) if err == nil {
if err == nil { userIDMap[user2.UserID] = user2.UserID
userIDMap[user2.UserID] = user2.UserID for _, v := range userIDMap {
for _, v := range userIDMap { if api.DingDingAPI.GetToken() != "" {
if api.DingDingAPI.GetToken() != "" { ddmsg.SendUserMessage(dingdingapi.MsgTyeText, v, "您有商家还未加入企业微信群", noticeMsg)
ddmsg.SendUserMessage(dingdingapi.MsgTyeText, v, "您有商家还未加入企业微信群", noticeMsg) }
} }
} }
} }