package service import ( "errors" "gin-vue-admin/global" "gin-vue-admin/model" "gin-vue-admin/model/request" "gin-vue-admin/utils" uuid "github.com/satori/go.uuid" "gorm.io/gorm" "strconv" ) //@author: [piexlmax](https://github.com/piexlmax) //@function: Register //@description: 运营端注册 //@param: u model.SysUser //@return: err error, userInter model.SysUser func Register(u model.SysUser) (err error, userInter model.SysUser) { var user model.SysUser if !errors.Is(global.GVA_DB.Where("mobile = ?", u.Mobile).First(&user).Error, gorm.ErrRecordNotFound) { // 判断用户名是否注册 return errors.New("用户名已注册"), userInter } // 否则 附加uuid 密码md5简单加密 注册 u.Password = utils.MD5V([]byte(u.Password)) u.UUID = uuid.NewV4() u.IsManager = 1 err = global.GVA_DB.Create(&u).Error return err, u } //@author: [piexlmax](https://github.com/piexlmax) //@function: Login //@description: 用户登录 //@param: u *model.SysUser //@return: err error, userInter *model.SysUser func Login(u *model.SysUser) (err error, userInter *model.SysUser) { var user model.SysUser u.Password = utils.MD5V([]byte(u.Password)) err = global.GVA_DB.Where("mobile = ? AND password = ? AND is_manager=1", u.Mobile, u.Password).Preload("Authority").First(&user).Error return err, &user } //@author: [piexlmax](https://github.com/piexlmax) //@function: ChangePassword //@description: 修改用户密码 //@param: u *model.SysUser, newPassword string //@return: err error, userInter *model.SysUser func ChangePassword(u *model.SysUser, newPassword string) (err error, userInter *model.SysUser) { var user model.SysUser u.Password = utils.MD5V([]byte(u.Password)) err = global.GVA_DB.Where("mobile = ? AND password = ?", u.Mobile, u.Password).First(&user).Update("password", utils.MD5V([]byte(newPassword))).Error return err, u } //@author: [piexlmax](https://github.com/piexlmax) //@function: GetUserInfoList //@description: 分页获取数据 //@param: info request.PageInfo //@return: err error, list interface{}, total int64 func GetUserInfoList(info request.PageInfo) (err error, list interface{}, total int64) { limit := info.PageSize offset := info.PageSize * (info.Page - 1) db := global.GVA_DB.Model(&model.SysUser{}) var userList []model.SysUser err = db.Count(&total).Error err = db.Where("is_manager=1").Limit(limit).Offset(offset).Preload("Authority").Find(&userList).Error return err, userList, total } //@author: [piexlmax](https://github.com/piexlmax) //@function: SetUserAuthority //@description: 设置一个用户的权限 //@param: uuid uuid.UUID, authorityId string //@return: err error func SetUserAuthority(uuid uuid.UUID, authorityId string) (err error) { err = global.GVA_DB.Where("uuid = ?", uuid).First(&model.SysUser{}).Update("authority_id", authorityId).Error return err } //@author: [piexlmax](https://github.com/piexlmax) //@function: DeleteUser //@description: 删除用户 //@param: id float64 //@return: err error func DeleteUser(id float64) (err error) { var user model.SysUser err = global.GVA_DB.Where("id = ?", id).Delete(&user).Error return err } //@author: [piexlmax](https://github.com/piexlmax) //@function: SetUserInfo //@description: 设置用户信息 //@param: reqUser model.SysUser //@return: err error, user model.SysUser func SetUserInfo(reqUser model.SysUser) (err error, user model.SysUser) { err = global.GVA_DB.Updates(&reqUser).Error return err, reqUser } //@author: [SliverHorn](https://github.com/SliverHorn) //@function: FindUserById //@description: 通过id获取用户信息 //@param: id int //@return: err error, user *model.SysUser func FindUserById(id int) (err error, user *model.SysUser) { var u model.SysUser err = global.GVA_DB.Where("`id` = ?", id).First(&u).Error return err, &u } //@author: [SliverHorn](https://github.com/SliverHorn) //@function: FindUserByUuid //@description: 通过uuid获取用户信息 //@param: uuid string //@return: err error, user *model.SysUser func FindUserByUuid(uuid string) (err error, user *model.SysUser) { var u model.SysUser if err = global.GVA_DB.Where("`uuid` = ?", uuid).First(&u).Error; err != nil { return errors.New("用户不存在"), &u } return nil, &u } func GetMobileUserList(req request.GetMobileUserListReq) (err error, list []request.GetMobileUserListReply, total int64) { pagesize := 10 page := 1 if req.PageSize != 0 { pagesize = req.PageSize } if req.Page != 0 { page = req.Page } currentpage := pagesize * (page - 1) table := " sys_users as su " + " left join sys_user_authe as sua on su.id = sua.user_id and sua.delflag=0 " + " LEFT JOIN region as r on sua.hospital_province=r.region_id " + " LEFT JOIN region as r2 on sua.hospital_city=r2.region_id " + " LEFT JOIN region as r3 on sua.hospital_county=r3.region_id " + " LEFT JOIN vip_user as vu on su.id=vu.user_id " field := " su.id, su.mobile, su.created_at, su.nick_name, sua.name, sua.phone, sua.working_years" + ", sua.working_place, sua.position, r.region_name as province_name, r2.region_name as city_name" + ", r3.region_name as county_name, sua.hospital_address, vu.update_time, vu.maturity_time" + ", vu.vip_level " conditions := " AND su.deleted_at is null " orderby := " su.created_at desc, su.id desc" if req.Mobile != "" { conditions += " AND su.mobile like '%" + req.Mobile + "%' " } if req.StartCreatedAt != "" { conditions += " AND su.created_at >'" + req.StartCreatedAt + "'" } if req.EndCreatedAt != "" { conditions += " AND su.created_at <='" + utils.REndDate(req.EndCreatedAt) + "'" } if req.IsManager != "" { conditions += " AND su.is_manager = " + req.IsManager } if req.AuthorityId != "" { conditions += " AND su.authority_id = " + req.AuthorityId } if req.UserType != "" { conditions += " AND su.user_type = " + req.UserType } data := []request.GetMobileUserListReply{} //@@总条数,总页数 var totalItem int64 = 0 sqlStr := "SELECT count(su.id) as totalItem FROM " + table + " where 1=1 " + conditions global.GVA_DB.Raw(sqlStr).Count(&totalItem) //获取总条数 //table += " left join (select thumb_cos_path, studyuid from study_image_store group by studyuid)as si on rm.studyuid=si.studyuid " //field += ", thumb_cos_path " sqlStr2 := "SELECT " + field + " FROM " + table + " where 1>0 " + conditions + " ORDER BY " + orderby + " LIMIT " + strconv.Itoa(currentpage) + "," + strconv.Itoa(pagesize) global.GVA_DB.Raw(sqlStr2).Scan(&data) return err, data, totalItem } func GetMobileUserInfo(id string) (error, *request.GetMobileUserListReply) { table := " sys_users as su " + " left join sys_user_authe as sua on su.id = sua.user_id and sua.delflag=0 " + " LEFT JOIN region as r on sua.hospital_province=r.region_id " + " LEFT JOIN region as r2 on sua.hospital_city=r2.region_id " + " LEFT JOIN region as r3 on sua.hospital_county=r3.region_id " + " LEFT JOIN vip_user as vu on su.id=vu.user_id " field := " su.id, su.mobile, su.created_at, sua.name, sua.phone, sua.working_years" + ", sua.working_place, sua.position, r.region_name as province_name, r2.region_name as city_name" + ", r3.region_name as county_name, sua.hospital_address, vu.update_time, vu.maturity_time" + ", vu.vip_level " conditions := " AND su.id = " + id data := new(request.GetMobileUserListReply) sqlStr2 := "SELECT " + field + " FROM " + table + " where 1>0 " + conditions global.GVA_DB.Raw(sqlStr2).Find(&data) return nil, data }