package service import ( "bkb-seller/global" "bkb-seller/model" "bkb-seller/model/request" "encoding/json" "errors" ) //@author: [piexlmax](https://github.com/piexlmax) //@function: CreateUser //@description: 创建User记录 //@param: user model.User //@return: err error func CreateUser(user model.User) (err error) { err = global.MG_DB.Create(&user).Error return err } //@author: [piexlmax](https://github.com/piexlmax) //@function: DeleteUser //@description: 删除User记录 //@param: user model.User //@return: err error func DeleteUser(user model.User) (err error) { err = global.MG_DB.Delete(&user).Error return err } //@author: [piexlmax](https://github.com/piexlmax) //@function: DeleteUserByIds //@description: 批量删除User记录 //@param: ids request.IdsReq //@return: err error func DeleteUserByIds(ids request.IdsReq) (err error) { err = global.MG_DB.Delete(&[]model.User{}, "id in (?)", ids.Ids).Error return err } //@author: [piexlmax](https://github.com/piexlmax) //@function: UpdateUser //@description: 更新User记录 //@param: user *model.User //@return: err error func UpdateUser(user model.User) (err error) { err = global.MG_DB.Updates(&user).Error return err } //@author: [piexlmax](https://github.com/piexlmax) //@function: GetUser //@description: 根据id获取User记录 //@param: id uint //@return: err error, user model.User func GetUser(uuid string) (err error, user model.UserSimple) { var ( dictData []model.SysDictData ) err = global.MG_DB.Model(&model.User{}).Where("uuid=?", uuid).Find(&user).Error if err != nil { return errors.New("获取用户失败"), user } err = global.MG_DB.Model(&model.SysDictData{}).Where("type_code=?", "release_channel").Find(&dictData).Error if err != nil { return errors.New("获取用户失败"), user } platformsC := make([]model.Platform, 0) for i := 0; i < len(dictData); i++ { platformsC = append(platformsC, model.Platform{ Platform: dictData[i].Value, PlatformName: dictData[i].Label, }) } if user.Platform != "" { var platforms []model.Platform err = json.Unmarshal([]byte(user.Platform), &platforms) for i := 0; i < len(platforms); i++ { for j := 0; j < len(platformsC); j++ { if platforms[i].Platform == platformsC[j].Platform { platformsC[j].IsAuth = platforms[i].IsAuth platformsC[j].Url = platforms[i].Url platformsC[j].Image = platforms[i].Image } } } user.Platforms = platformsC } else { user.Platforms = platformsC } return } //@author: [piexlmax](https://github.com/piexlmax) //@function: GetUserInfoList //@description: 分页获取User记录 //@param: info request.UserSearch //@return: err error, list interface{}, total int64 func GetUserInfoList(info request.UserSearch) (err error, list interface{}, total int64) { limit := info.PageSize offset := info.PageSize * (info.Page - 1) // 创建db db := global.MG_DB.Model(&model.User{}) var users []model.User // 如果有条件搜索 下方会自动创建搜索语句 err = db.Count(&total).Error err = db.Limit(limit).Offset(offset).Find(&users).Error return err, users, total } func GetUserInfo(uuid, appid string) (err error, user model.User) { var ( reqUser model.User authorities []model.SysAuthority ) err = global.MG_DB.First(&reqUser, "uuid = ?", uuid).Error if err != nil { return err, reqUser } e := Casbin() res := e.GetRolesForUserInDomain(uuid, appid) if len(res) > 0 { err = global.MG_DB.Where("authority_id IN ?", res).Find(&authorities).Error } else { err = errors.New("该用户未分配角色") } for _, v := range authorities { if reqUser.AuthorityID == v.AuthorityId { reqUser.Authority = v break } } reqUser.Authorities = authorities return err, reqUser } func getUserSimpleList(ut string, uuids []string) ([]model.UserSimple, error) { var ( err error result []model.UserSimple ) err = global.MG_DB.Model(&model.User{}).Select("uuid,nick_name,avatar,phone,platform,tags").Where("`type` = ? AND uuid IN (?)", ut, uuids).Find(&result).Error if err != nil { return nil, err } return result, nil } func getUser(ut, uuid string) (error, model.User) { var ( err error result model.User ) err = global.MG_DB.Model(&model.User{}).Where("`type` = ? AND uuid = ?", ut, uuid).Find(&result).Error return err, result }