| | |
| | | package controllers |
| | | |
| | | import ( |
| | | "basic.com/valib/bhomeclient.git" |
| | | "basic.com/valib/logger.git" |
| | | "github.com/satori/go.uuid" |
| | | "time" |
| | | "vamicro/extend/util" |
| | | "vamicro/system-service/models" |
| | | "vamicro/system-service/sys" |
| | | ) |
| | | |
| | | type SysInitController struct { |
| | | } |
| | | |
| | | //comment 获取mqtt配置 |
| | | //router /data/api-v/sysinit/getInitInfo |
| | | func (sic *SysInitController) GetInitInfo(h *bhomeclient.WrapperHandler, c *bhomeclient.Request) *bhomeclient.Reply { |
| | | var conf models.SysInit |
| | | rows, _ := conf.Select() |
| | | inited := false |
| | | initUsername := "" |
| | | initReg := false |
| | | if rows > 0 { |
| | | inited = conf.InitPwd |
| | | initUsername = conf.InitUsername |
| | | } |
| | | if conf.UserType != "" && conf.Name != "" && conf.ProvinceId != "" && conf.CityId != "" && conf.Email != "" { |
| | | initReg = true |
| | | } |
| | | return &bhomeclient.Reply{Success: true, Msg: "查询成功", Data: map[string]interface{}{ |
| | | "initPwd": inited, |
| | | "initRegInfo": initReg, |
| | | "username": initUsername, |
| | | }} |
| | | } |
| | | |
| | | //初始化系统密码 |
| | | //router /data/api-v/sysinit/savePassword |
| | | func (sic *SysInitController) SavePassword(h *bhomeclient.WrapperHandler, c *bhomeclient.Request) *bhomeclient.Reply { |
| | | type arg struct { |
| | | Username string `json:"username"` |
| | | Password string `json:"password"` |
| | | } |
| | | var reqBody arg |
| | | c.BindJSON(&reqBody) |
| | | if reqBody.Username == "" || reqBody.Password == "" || reqBody.Username == "basic" { |
| | | return &bhomeclient.Reply{Msg: "用户名或密码不能为空"} |
| | | } |
| | | //先保存用户名密码,然后将sysinit中的initPwd置为true |
| | | encryPwd, pe := util.Encrypt(reqBody.Password) |
| | | if pe != nil { |
| | | return &bhomeclient.Reply{Msg: pe.Error()} |
| | | } |
| | | tx := models.GetDB().Begin() |
| | | var err error |
| | | defer func() { |
| | | if tx != nil && err != nil { |
| | | tx.Rollback() |
| | | } |
| | | }() |
| | | |
| | | var tmpUser models.SysUser |
| | | ru, _ := tmpUser.FindByName(reqBody.Username) |
| | | targetUID := "" |
| | | defHeadPic := "" |
| | | var dhp models.DefHeadPic |
| | | if headPics, err := dhp.FindAll(); err == nil && len(headPics) > 0 { |
| | | defHeadPic = headPics[0].Path |
| | | } |
| | | |
| | | if ru > 0 { |
| | | targetUID = tmpUser.Id |
| | | if err = tx.Exec("update "+tmpUser.TableName()+" set password=?,headpic=?,backgroundpic=? where id=?", encryPwd, defHeadPic, models.DefaultBgPic, targetUID).Error; err != nil { |
| | | return &bhomeclient.Reply{Msg: err.Error()} |
| | | } |
| | | } else { |
| | | targetUID = uuid.NewV4().String() |
| | | if err = tx.Table(tmpUser.TableName()).Create(&models.SysUser{Id: targetUID, Username: reqBody.Username, Password: encryPwd, HeadPic: defHeadPic, BackgroundPic: models.DefaultBgPic}).Error; err != nil { |
| | | return &bhomeclient.Reply{Msg: err.Error()} |
| | | } |
| | | } |
| | | //给用户添加菜单权限 |
| | | var sysR models.SysRole |
| | | _, err = sysR.FindByName("管理员") |
| | | if err != nil { |
| | | return &bhomeclient.Reply{Msg: err.Error()} |
| | | } |
| | | |
| | | userRole := models.SysUserRole{ |
| | | Id: uuid.NewV4().String(), |
| | | UserId: targetUID, |
| | | RoleId: sysR.Id, |
| | | } |
| | | if err = tx.Table(userRole.TableName()).Create(&userRole).Error; err != nil { |
| | | return &bhomeclient.Reply{Msg: err.Error()} |
| | | } |
| | | |
| | | var siModel models.SysInit |
| | | err = tx.Table(siModel.TableName()).First(&siModel).Error |
| | | if err != nil { |
| | | if err.Error() != models.RecordNotFound { |
| | | return &bhomeclient.Reply{Msg: err.Error()} |
| | | } else { |
| | | if err = tx.Table(siModel.TableName()).Create(models.SysInit{ |
| | | InitPwd: true, |
| | | InitUsername: reqBody.Username, |
| | | InitTime: time.Now().Format("2006-01-02 15:04:05"), |
| | | NetName: "", |
| | | UserType: "", |
| | | PhoneNum: "", |
| | | Name: "", |
| | | ProvinceId: "", |
| | | CityId: "", |
| | | CountyId: "", |
| | | Email: "", |
| | | }).Error; err != nil { |
| | | return &bhomeclient.Reply{Msg: err.Error()} |
| | | } |
| | | } |
| | | } else { |
| | | err = tx.Exec("update "+siModel.TableName()+" set initPwd=?, initUsername=?", true, reqBody.Username).Error |
| | | if err != nil { |
| | | return &bhomeclient.Reply{Msg: err.Error()} |
| | | } |
| | | } |
| | | //初始化时给管理员所有的菜单权限 |
| | | var sysMenu models.SysMenu |
| | | allMenus := sysMenu.FindAll() |
| | | err = tx.Exec("delete from "+models.SysRoleMenu{}.TableName()+" where role_id=?", sysR.Id).Error |
| | | if err != nil { |
| | | return &bhomeclient.Reply{Msg: err.Error()} |
| | | } |
| | | for _, n := range allMenus { |
| | | tmpMenu := models.SysRoleMenu{ |
| | | Id: uuid.NewV4().String(), |
| | | RoleId: sysR.Id, |
| | | MenuId: n.Id, |
| | | } |
| | | err = tx.Table(tmpMenu.TableName()).Create(&tmpMenu).Error |
| | | if err != nil { |
| | | return &bhomeclient.Reply{Msg: err.Error()} |
| | | } |
| | | } |
| | | |
| | | err = tx.Exec("delete from "+models.SysUserMenu{}.TableName()+" where user_id=?", targetUID).Error |
| | | if err != nil { |
| | | return &bhomeclient.Reply{Msg: err.Error()} |
| | | } |
| | | |
| | | tx.Commit() |
| | | return &bhomeclient.Reply{Success: true, Msg: "保存成功"} |
| | | } |
| | | |
| | | //comment 获取网卡下拉菜单 |
| | | //router /data/api-v/sysinit/networkList |
| | | func (sic *SysInitController) NetworkList(h *bhomeclient.WrapperHandler, c *bhomeclient.Request) *bhomeclient.Reply { |
| | | cards, e := sys.GetNetWorkCards() |
| | | if e != nil { |
| | | return &bhomeclient.Reply{Msg: e.Error()} |
| | | } |
| | | |
| | | return &bhomeclient.Reply{Success: true, Data: cards} |
| | | } |
| | | |
| | | //comment 系统第一次启动时初始化网络 |
| | | // router /data/api-v/sysinit/initNetwork |
| | | func (sic *SysInitController) InitNetwork(h *bhomeclient.WrapperHandler, c *bhomeclient.Request) *bhomeclient.Reply { |
| | | type arg struct { |
| | | NetName string `json:"netName"` //网卡 |
| | | Ip string `json:"ip"` //ip |
| | | SubMask string `json:"subMask"` //子网掩码 |
| | | Gateway string `json:"gateway"` //网关 |
| | | Dns string `json:"dns"` //dns |
| | | } |
| | | var reqBody arg |
| | | c.BindJSON(&reqBody) |
| | | if reqBody.NetName == "" || reqBody.Ip == "" || reqBody.SubMask == "" || reqBody.Gateway == "" || reqBody.Dns == "" { |
| | | return &bhomeclient.Reply{Msg: "参数有误,请检查"} |
| | | } |
| | | isOk, msg := sys.SetNetworkConfig( |
| | | reqBody.Ip, |
| | | reqBody.SubMask, |
| | | reqBody.Gateway, |
| | | reqBody.Dns, |
| | | reqBody.NetName) |
| | | logger.Debug("isOk:", isOk, "msg:", msg) |
| | | if !isOk { |
| | | return &bhomeclient.Reply{Msg: msg} |
| | | } |
| | | return &bhomeclient.Reply{Success: true, Msg: "初始化成功"} |
| | | } |
| | | |
| | | type RegInfo struct { |
| | | UserType string `json:"userType"` //personal:个人 company:公司 |
| | | Name string `json:"name"` //姓名 |
| | | ProvinceId string `json:"provinceId"` //省份id |
| | | CityId string `json:"cityId"` //城市id |
| | | Addr string `json:"addr"` //地址 |
| | | Email string `json:"email"` //邮箱 |
| | | } |
| | | |
| | | //comment 保存注册信息 |
| | | //router /data/api-v/sysinit/saveRegInfo |
| | | func (sic *SysInitController) SaveRegInfo(h *bhomeclient.WrapperHandler, c *bhomeclient.Request) *bhomeclient.Reply { |
| | | var reqBody RegInfo |
| | | c.BindJSON(&reqBody) |
| | | if reqBody.UserType == "" || reqBody.Name == "" || reqBody.ProvinceId == "" || reqBody.CityId == "" || reqBody.Email == "" || reqBody.Addr == "" { |
| | | return &bhomeclient.Reply{Msg: "参数有误"} |
| | | } |
| | | var siModel models.SysInit |
| | | i, _ := siModel.Select() |
| | | if i == 0 { |
| | | return &bhomeclient.Reply{Msg: "请先配置用户名和密码信息"} |
| | | } |
| | | siModel.UserType = reqBody.UserType |
| | | siModel.Name = reqBody.Name |
| | | siModel.ProvinceId = reqBody.ProvinceId |
| | | siModel.CityId = reqBody.CityId |
| | | siModel.Email = reqBody.Email |
| | | if siModel.Update() { |
| | | return &bhomeclient.Reply{Success: true, Msg: "保存成功"} |
| | | } |
| | | return &bhomeclient.Reply{Msg: "保存失败"} |
| | | } |
| | | |
| | | //comment 获取注册信息 |
| | | //router /data/api-v/sysinit/getRegInfo |
| | | func (sic *SysInitController) GetRegInfo(h *bhomeclient.WrapperHandler, c *bhomeclient.Request) *bhomeclient.Reply { |
| | | var siModel models.SysInit |
| | | i, _ := siModel.Select() |
| | | if i > 0 { |
| | | return &bhomeclient.Reply{Success: true, Data: map[string]string{ |
| | | "userType": siModel.UserType, |
| | | "name": siModel.Name, |
| | | "provinceId": siModel.ProvinceId, |
| | | "cityId": siModel.CityId, |
| | | "countyId": siModel.CountyId, |
| | | "email": siModel.Email, |
| | | }} |
| | | } |
| | | return &bhomeclient.Reply{Msg: "获取失败"} |
| | | } |
| | | package controllers
|
| | |
|
| | | import (
|
| | | "basic.com/valib/bhomeclient.git"
|
| | | "basic.com/valib/logger.git"
|
| | | "github.com/satori/go.uuid"
|
| | | "time"
|
| | | "vamicro/extend/util"
|
| | | "vamicro/system-service/models"
|
| | | "vamicro/system-service/sys"
|
| | | )
|
| | |
|
| | | type SysInitController struct {
|
| | | }
|
| | |
|
| | | //comment 获取mqtt配置
|
| | | //router /data/api-v/sysinit/getInitInfo
|
| | | func (sic *SysInitController) GetInitInfo(h *bhomeclient.WrapperHandler, c *bhomeclient.Request) *bhomeclient.Reply {
|
| | | var conf models.SysInit
|
| | | rows, _ := conf.Select()
|
| | | inited := false
|
| | | initUsername := ""
|
| | | initReg := false
|
| | | if rows > 0 {
|
| | | inited = conf.InitPwd
|
| | | initUsername = conf.InitUsername
|
| | | }
|
| | | if conf.UserType != "" && conf.Name != "" && conf.ProvinceId != "" && conf.CityId != "" && conf.Email != "" {
|
| | | initReg = true
|
| | | }
|
| | | return &bhomeclient.Reply{Success: true, Msg: "查询成功", Data: map[string]interface{}{
|
| | | "initPwd": inited,
|
| | | "initRegInfo": initReg,
|
| | | "username": initUsername,
|
| | | }}
|
| | | }
|
| | |
|
| | | //初始化系统密码
|
| | | //router /data/api-v/sysinit/savePassword
|
| | | func (sic *SysInitController) SavePassword(h *bhomeclient.WrapperHandler, c *bhomeclient.Request) *bhomeclient.Reply {
|
| | | type arg struct {
|
| | | Username string `json:"username"`
|
| | | Password string `json:"password"`
|
| | | }
|
| | | var reqBody arg
|
| | | c.BindJSON(&reqBody)
|
| | | if reqBody.Username == "" || reqBody.Password == "" || reqBody.Username == "basic" {
|
| | | return &bhomeclient.Reply{Msg: "用户名或密码不能为空"}
|
| | | }
|
| | | //先保存用户名密码,然后将sysinit中的initPwd置为true
|
| | | encryPwd, pe := util.Encrypt(reqBody.Password)
|
| | | if pe != nil {
|
| | | return &bhomeclient.Reply{Msg: pe.Error()}
|
| | | }
|
| | | tx := models.GetDB().Begin()
|
| | | var err error
|
| | | defer func() {
|
| | | if tx != nil && err != nil {
|
| | | tx.Rollback()
|
| | | }
|
| | | }()
|
| | |
|
| | | var tmpUser models.SysUser
|
| | | ru, _ := tmpUser.FindByName(reqBody.Username)
|
| | | targetUID := ""
|
| | | defHeadPic := ""
|
| | | var dhp models.DefHeadPic
|
| | | if headPics, err := dhp.FindAll(); err == nil && len(headPics) > 0 {
|
| | | defHeadPic = headPics[0].Path
|
| | | }
|
| | |
|
| | | if ru > 0 {
|
| | | targetUID = tmpUser.Id
|
| | | if err = tx.Exec("update "+tmpUser.TableName()+" set password=?,headpic=?,backgroundpic=? where id=?", encryPwd, defHeadPic, models.DefaultBgPic, targetUID).Error; err != nil {
|
| | | return &bhomeclient.Reply{Msg: err.Error()}
|
| | | }
|
| | | } else {
|
| | | targetUID = uuid.NewV4().String()
|
| | | if err = tx.Table(tmpUser.TableName()).Create(&models.SysUser{Id: targetUID, Username: reqBody.Username, Password: encryPwd, HeadPic: defHeadPic, BackgroundPic: models.DefaultBgPic}).Error; err != nil {
|
| | | return &bhomeclient.Reply{Msg: err.Error()}
|
| | | }
|
| | | }
|
| | | //给用户添加菜单权限
|
| | | var sysR models.SysRole
|
| | | _, err = sysR.FindByName("管理员")
|
| | | if err != nil {
|
| | | return &bhomeclient.Reply{Msg: err.Error()}
|
| | | }
|
| | |
|
| | | userRole := models.SysUserRole{
|
| | | Id: uuid.NewV4().String(),
|
| | | UserId: targetUID,
|
| | | RoleId: sysR.Id,
|
| | | }
|
| | | if err = tx.Table(userRole.TableName()).Create(&userRole).Error; err != nil {
|
| | | return &bhomeclient.Reply{Msg: err.Error()}
|
| | | }
|
| | |
|
| | | var siModel models.SysInit
|
| | | err = tx.Table(siModel.TableName()).First(&siModel).Error
|
| | | if err != nil {
|
| | | if err.Error() != models.RecordNotFound {
|
| | | return &bhomeclient.Reply{Msg: err.Error()}
|
| | | } else {
|
| | | if err = tx.Table(siModel.TableName()).Create(models.SysInit{
|
| | | InitPwd: true,
|
| | | InitUsername: reqBody.Username,
|
| | | InitTime: time.Now().Format("2006-01-02 15:04:05"),
|
| | | NetName: "",
|
| | | UserType: "",
|
| | | PhoneNum: "",
|
| | | Name: "",
|
| | | ProvinceId: "",
|
| | | CityId: "",
|
| | | CountyId: "",
|
| | | Email: "",
|
| | | }).Error; err != nil {
|
| | | return &bhomeclient.Reply{Msg: err.Error()}
|
| | | }
|
| | | }
|
| | | } else {
|
| | | err = tx.Exec("update "+siModel.TableName()+" set initPwd=?, initUsername=?", true, reqBody.Username).Error
|
| | | if err != nil {
|
| | | return &bhomeclient.Reply{Msg: err.Error()}
|
| | | }
|
| | | }
|
| | | //初始化时给管理员所有的菜单权限
|
| | | var sysMenu models.SysMenu
|
| | | allMenus := sysMenu.FindAll()
|
| | | err = tx.Exec("delete from "+models.SysRoleMenu{}.TableName()+" where role_id=?", sysR.Id).Error
|
| | | if err != nil {
|
| | | return &bhomeclient.Reply{Msg: err.Error()}
|
| | | }
|
| | | for _, n := range allMenus {
|
| | | tmpMenu := models.SysRoleMenu{
|
| | | Id: uuid.NewV4().String(),
|
| | | RoleId: sysR.Id,
|
| | | MenuId: n.Id,
|
| | | }
|
| | | err = tx.Table(tmpMenu.TableName()).Create(&tmpMenu).Error
|
| | | if err != nil {
|
| | | return &bhomeclient.Reply{Msg: err.Error()}
|
| | | }
|
| | | }
|
| | |
|
| | | err = tx.Exec("delete from "+models.SysUserMenu{}.TableName()+" where user_id=?", targetUID).Error
|
| | | if err != nil {
|
| | | return &bhomeclient.Reply{Msg: err.Error()}
|
| | | }
|
| | |
|
| | | tx.Commit()
|
| | | return &bhomeclient.Reply{Success: true, Msg: "保存成功"}
|
| | | }
|
| | |
|
| | | //comment 获取网卡下拉菜单
|
| | | //router /data/api-v/sysinit/networkList
|
| | | func (sic *SysInitController) NetworkList(h *bhomeclient.WrapperHandler, c *bhomeclient.Request) *bhomeclient.Reply {
|
| | | cards, e := sys.GetNetWorkCards()
|
| | | if e != nil {
|
| | | return &bhomeclient.Reply{Msg: e.Error()}
|
| | | }
|
| | |
|
| | | return &bhomeclient.Reply{Success: true, Data: cards}
|
| | | }
|
| | |
|
| | | //comment 系统第一次启动时初始化网络
|
| | | // router /data/api-v/sysinit/initNetwork
|
| | | func (sic *SysInitController) InitNetwork(h *bhomeclient.WrapperHandler, c *bhomeclient.Request) *bhomeclient.Reply {
|
| | | type arg struct {
|
| | | NetName string `json:"netName"` //网卡
|
| | | Ip string `json:"ip"` //ip
|
| | | SubMask string `json:"subMask"` //子网掩码
|
| | | Gateway string `json:"gateway"` //网关
|
| | | Dns string `json:"dns"` //dns
|
| | | }
|
| | | var reqBody arg
|
| | | c.BindJSON(&reqBody)
|
| | | if reqBody.NetName == "" || reqBody.Ip == "" || reqBody.SubMask == "" || reqBody.Gateway == "" || reqBody.Dns == "" {
|
| | | return &bhomeclient.Reply{Msg: "参数有误,请检查"}
|
| | | }
|
| | | isOk, msg := sys.SetNetworkConfig(
|
| | | reqBody.Ip,
|
| | | reqBody.SubMask,
|
| | | reqBody.Gateway,
|
| | | reqBody.Dns,
|
| | | reqBody.NetName)
|
| | | logger.Debug("isOk:", isOk, "msg:", msg)
|
| | | if !isOk {
|
| | | return &bhomeclient.Reply{Msg: msg}
|
| | | }
|
| | | return &bhomeclient.Reply{Success: true, Msg: "初始化成功"}
|
| | | }
|
| | |
|
| | | type RegInfo struct {
|
| | | UserType string `json:"userType"` //personal:个人 company:公司
|
| | | Name string `json:"name"` //姓名
|
| | | ProvinceId string `json:"provinceId"` //省份id
|
| | | CityId string `json:"cityId"` //城市id
|
| | | Addr string `json:"addr"` //地址
|
| | | Email string `json:"email"` //邮箱
|
| | | }
|
| | |
|
| | | //comment 保存注册信息
|
| | | //router /data/api-v/sysinit/saveRegInfo
|
| | | func (sic *SysInitController) SaveRegInfo(h *bhomeclient.WrapperHandler, c *bhomeclient.Request) *bhomeclient.Reply {
|
| | | var reqBody RegInfo
|
| | | c.BindJSON(&reqBody)
|
| | | if reqBody.UserType == "" || reqBody.Name == "" || reqBody.ProvinceId == "" || reqBody.CityId == "" || reqBody.Email == "" || reqBody.Addr == "" {
|
| | | return &bhomeclient.Reply{Msg: "参数有误"}
|
| | | }
|
| | | var siModel models.SysInit
|
| | | i, _ := siModel.Select()
|
| | | if i == 0 {
|
| | | return &bhomeclient.Reply{Msg: "请先配置用户名和密码信息"}
|
| | | }
|
| | | siModel.UserType = reqBody.UserType
|
| | | siModel.Name = reqBody.Name
|
| | | siModel.ProvinceId = reqBody.ProvinceId
|
| | | siModel.CityId = reqBody.CityId
|
| | | siModel.Email = reqBody.Email
|
| | | if siModel.Update() {
|
| | | return &bhomeclient.Reply{Success: true, Msg: "保存成功"}
|
| | | }
|
| | | return &bhomeclient.Reply{Msg: "保存失败"}
|
| | | }
|
| | |
|
| | | //comment 获取注册信息
|
| | | //router /data/api-v/sysinit/getRegInfo
|
| | | func (sic *SysInitController) GetRegInfo(h *bhomeclient.WrapperHandler, c *bhomeclient.Request) *bhomeclient.Reply {
|
| | | var siModel models.SysInit
|
| | | i, _ := siModel.Select()
|
| | | if i > 0 {
|
| | | return &bhomeclient.Reply{Success: true, Data: map[string]string{
|
| | | "userType": siModel.UserType,
|
| | | "name": siModel.Name,
|
| | | "provinceId": siModel.ProvinceId,
|
| | | "cityId": siModel.CityId,
|
| | | "countyId": siModel.CountyId,
|
| | | "email": siModel.Email,
|
| | | }}
|
| | | }
|
| | | return &bhomeclient.Reply{Msg: "获取失败"}
|
| | | }
|