package cms import ( "git.rosy.net.cn/jx-callback/business/auth2" "git.rosy.net.cn/jx-callback/business/auth2/authprovider/weixin" "git.rosy.net.cn/jx-callback/business/authz" "git.rosy.net.cn/jx-callback/business/authz/autils" "git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/business/model/dao" "git.rosy.net.cn/jx-callback/business/model/legacymodel" "git.rosy.net.cn/jx-callback/globals/api2" ) // todo 是否需要将Store.MarketManPhone与OperatorPhone成角色? func TransferLegacyWeixins() (err error) { const remark4Transfer = "transfer" // DELETE t1 // FROM auth_bind t1 // WHERE t1.remark = 'transfer'; // DELETE t1 // FROM user t1 // WHERE t1.remark = 'transfer'; // TRUNCATE TABLE casbin_rule; sql := ` SELECT * FROM weixins ORDER BY parentid` var weixinList []*legacymodel.WeiXins db := dao.GetDB() err = dao.GetRows(db, &weixinList, sql) if err != nil { return err } parentMap := make(map[int]*legacymodel.WeiXins) for _, v := range weixinList { if v.ParentID == -1 { parentMap[v.ID] = v } else { if parentMap[v.ParentID] != nil { v.JxStoreID = parentMap[v.ParentID].JxStoreID } } if v.Tel != "" { user := &model.User{ UserID2: v.Tel, Name: v.NickName, Mobile: v.Tel, Type: model.UserTypeStoreBoss, Remark: remark4Transfer, } if user.Name == "" { user.Name = user.Mobile } userList, err2 := dao.GetUsers(db, 0, "", nil, "", v.Tel) if err = err2; err != nil { return err } // globals.SugarLogger.Debug(utils.Format4Output(user, false)) if len(userList) == 0 { err = CreateUser(user, v.LastOperator) } else { user = userList[0] } if err != nil { return err } if v.OpenID != "" { auth2.AddAuthBind(user, &auth2.AuthInfo{ AuthBindInfo: &auth2.AuthBindEx{ AuthBind: model.AuthBind{ Type: weixin.AuthTypeMP, AuthID: v.OpenID, AuthID2: v.OpenIDUnion, Remark: remark4Transfer, }, }, }) } if v.OpenIDMini != "" { auth2.AddAuthBind(user, &auth2.AuthInfo{ AuthBindInfo: &auth2.AuthBindEx{ AuthBind: model.AuthBind{ Type: weixin.AuthTypeMini, AuthID: v.OpenIDMini, AuthID2: v.OpenIDUnion, Remark: remark4Transfer, }, }, }) } if v.JxStoreID > 0 && user.Type&model.UserTypeOperator == 0 { // 运营就不加到门店老板组里了 api2.RoleMan.AddRole4User(user.GetID(), autils.NewRole(authz.StoreRoleBoss, v.JxStoreID)) } } } return err }