static->admin->js->base.js
$(function () {
baseApp.init();
})
var baseApp = {
init: function () {
this.initAside()
this.confirmDelete()
this.resizeIframe()
this.changeStatus()
this.changeNum()
},
initAside: function () {
$('.aside h4').click(function () {
$(this).siblings('ul').slideToggle();
})
},
//设置iframe的高度
resizeIframe: function () {
$("#rightMain").height($(window).height() - 80)
},
// 删除提示
confirmDelete: function () {
$(".delete").click(function () {
var flag = confirm("您确定要删除吗?")
return flag
})
},
changeStatus: function () {
$(".chStatus").click(function () {
var id = $(this).attr("data-id")
var table = $(this).attr("data-table")
var field = $(this).attr("data-field")
var el = $(this)
$.get("/admin/changeStatus", { id: id, table: table, field: field }, function (response) {
if (response.success) {
if (el.attr("src").indexOf("yes") != -1) {
el.attr("src", "/static/admin/images/no.gif")
} else {
el.attr("src", "/static/admin/images/yes.gif")
}
}
})
})
},
changeNum: function () {
/*
1、获取el里面的值 var spanNum=$(this).html()
2、创建一个input的dom节点 var input=$("<input value='' />");
3、把input放在el里面 $(this).html(input);
4、让input获取焦点 给input赋值 $(input).trigger('focus').val(val);
5、点击input的时候阻止冒泡
$(input).click(function(e){
e.stopPropagation();
})
6、鼠标离开的时候给span赋值,并触发ajax请求
$(input).blur(function(){
var inputNum=$(this).val();
spanEl.html(inputNum);
触发ajax请求
})
*/
$(".chSpanNum").click(function () {
// 1、获取el 以及el里面的属性值
var id = $(this).attr("data-id")
var table = $(this).attr("data-table")
var field = $(this).attr("data-field")
var num = $(this).html().trim()
var spanEl = $(this)
//2、创建一个input的dom节点 var input=$("<input value='' />");
var input = $("<input style='width:60px' value='' />");
// 3、把input放在el里面 $(this).html(input);
$(this).html(input);
//4、让input获取焦点 给input赋值 $(input).trigger('focus').val(val);
$(input).trigger("focus").val(num);
//5、点击input的时候阻止冒泡
$(input).click(function (e) {
e.stopPropagation();
})
//6、鼠标离开的时候给span赋值,并触发ajax请求
$(input).blur(function () {
var inputNum = $(this).val()
spanEl.html(inputNum)
//触发ajax请求
$.get("/admin/changeNum", { id: id, table: table, field: field, num: inputNum }, function (response) {
console.log(response)
})
})
})
}
}
controllers->admin->main.go
package admin
import (
"encoding/json"
"fmt"
"ginshop13/models"
"net/http"
"github.com/gin-contrib/sessions"
"github.com/gin-gonic/gin"
"gorm.io/gorm"
)
type MainController struct{}
func (con MainController) Index(c *gin.Context) {
//获取userinfo 对应的session
session := sessions.Default(c)
userinfo := session.Get("userinfo")
//类型断言 来判断 userinfo是不是一个string
userinfoStr, ok := userinfo.(string)
if ok {
//1、获取用户信息
var userinfoStruct []models.Manager
json.Unmarshal([]byte(userinfoStr), &userinfoStruct)
//2、获取所有的权限
accessList := []models.Access{}
models.DB.Where("module_id=?", 0).Preload("AccessItem", func(db *gorm.DB) *gorm.DB {
return db.Order("access.sort DESC")
}).Order("sort DESC").Find(&accessList)
//3、获取当前角色拥有的权限 ,并把权限id放在一个map对象里面
roleAccess := []models.RoleAccess{}
models.DB.Where("role_id=?", userinfoStruct[0].RoleId).Find(&roleAccess)
roleAccessMap := make(map[int]int)
for _, v := range roleAccess {
roleAccessMap[v.AccessId] = v.AccessId
}
//4、循环遍历所有的权限数据,判断当前权限的id是否在角色权限的Map对象中,如果是的话给当前数据加入checked属性
for i := 0; i < len(accessList); i++ {
if _, ok := roleAccessMap[accessList[i].Id]; ok {
accessList[i].Checked = true
}
for j := 0; j < len(accessList[i].AccessItem); j++ {
if _, ok := roleAccessMap[accessList[i].AccessItem[j].Id]; ok {
accessList[i].AccessItem[j].Checked = true
}
}
}
fmt.Printf("%#v", accessList)
c.HTML(http.StatusOK, "admin/main/index.html", gin.H{
"username": userinfoStruct[0].Username,
"accessList": accessList,
"isSuper": userinfoStruct[0].IsSuper,
})
} else {
c.Redirect(302, "/admin/login")
}
}
func (con MainController) Welcome(c *gin.Context) {
c.HTML(http.StatusOK, "admin/main/welcome.html", gin.H{})
}
//公共修改状态的方法
func (con MainController) ChangeStatus(c *gin.Context) {
id, err := models.Int(c.Query("id"))
if err != nil {
c.JSON(http.StatusOK, gin.H{
"success": false,
"message": "传入的参数错误",
})
return
}
table := c.Query("table")
field := c.Query("field")
// status = ABS(0-1) 1
// status = ABS(1-1) 0
err1 := models.DB.Exec("update "+table+" set "+field+"=ABS("+field+"-1) where id=?", id).Error
if err1 != nil {
c.JSON(http.StatusOK, gin.H{
"success": false,
"message": "修改失败 请重试",
})
return
}
c.JSON(http.StatusOK, gin.H{
"success": true,
"message": "修改成功",
})
}
//公共修改状态的方法
func (con MainController) ChangeNum(c *gin.Context) {
id, err := models.Int(c.Query("id"))
if err != nil {
c.JSON(http.StatusOK, gin.H{
"success": false,
"message": "传入的参数错误",
})
return
}
table := c.Query("table")
field := c.Query("field")
num := c.Query("num")
err1 := models.DB.Exec("update "+table+" set "+field+"="+num+" where id=?", id).Error
if err1 != nil {
c.JSON(http.StatusOK, gin.H{
"success": false,
"message": "修改数据失败",
})
} else {
c.JSON(http.StatusOK, gin.H{
"success": true,
"message": "修改成功",
})
}
}
templates->admin->access->index.html
{{ define "admin/access/index.html" }}
{{ template "admin/public/page_header.html" .}}
<!--
列表展示
-->
<div class="table-responsive">
<table class="table table-bordered">
<thead>
<tr>
<th>模块名称</th>
<th>节点类型</th>
<th>操作名称</th>
<th>操作地址</th>
<th>排序</th>
<th>描述</th>
<th class="text-center">操作</th>
</tr>
</thead>
<tbody>
{{range $key,$value := .accessList}}
<tr>
<td>{{$value.ModuleName}}</td>
<td>
{{if eq $value.Type 1}}
模块
{{else if eq $value.Type 2}}
菜单
{{else}}
操作
{{end}}
</td>
<td>{{$value.ActionName}}</td>
<td>{{$value.Url}}</td>
<td> <span class="chSpanNum" data-id="{{$value.Id}}" data-table="access" data-field="sort">{{$value.Sort}}</span></td>
<td>{{$value.Description}}</td>
<td class="text-center">
<a href="/admin/access/edit?id={{$value.Id}}">修改</a>
<a class="delete" href="/admin/access/delete?id={{$value.Id}}">删除</a>
</td>
</tr>
{{range $k,$v := $value.AccessItem}}
<tr>
<td> --{{$v.ModuleName}}</td>
<td>
{{if eq $v.Type 1}}
模块
{{else if eq $v.Type 2}}
菜单
{{else}}
操作
{{end}}
</td>
<td>{{$v.ActionName}}</td>
<td>{{$v.Url}}</td>
<td><span class="chSpanNum" data-id="{{$v.Id}}" data-table="access" data-field="sort">{{$v.Sort}}</span></td>
<td>{{$v.Description}}</td>
<td class="text-center">
<a href="/admin/access/edit?id={{$v.Id}}">修改</a>
<a class="delete" href="/admin/access/delete?id={{$v.Id}}">删除</a>
</td>
</tr>
{{end}}
{{end}}
</tbody>
</table>
</div>
</body>
</html>
{{end}}
浙公网安备 33010602011771号