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: "获取失败"}
|
}
|