一起使用GO(golang) 來做一個後臺管理系統系列(6) 實現用戶部分,編輯用戶

前端啓動行編輯修改數據。

<script>


    layui.use('table', function(){
        var table = layui.table;
        // var laypage = layui.laypage;
        // //執行一個laypage實例
        // laypage.render({
        //     elem: 'test1' //注意,這裏的 test1 是 ID,不用加 # 號
        //     ,count: 50 //數據總數,從服務端得到
        // });


        table.render({
            page: { //支持傳入 laypage 組件的所有參數(某些參數除外,如:jump/elem) - 詳見文檔
                layout: ['count', 'prev', 'page', 'next', 'limit', 'refresh', 'skip']//自定義分頁佈局
                ,limits:[5,10,15]
                ,first: true //不顯示首頁
                ,last: true //不顯示尾頁
            }
        })



        //監聽單元格編輯
        table.on('edit(test)', function(obj){
            var value = obj.value //得到修改後的值
                ,data = obj.data //得到所在行所有鍵值
                ,field = obj.field; //得到字段

            var formData=new FormData();
            formData.append("id",obj.data.Id);
            formData.append(obj.field.toString(),obj.value.toString());
            var xhr = new XMLHttpRequest();
            xhr.open('POST', location.origin+'/user/updateuser');
            xhr.onload = function(){
                if(JSON.parse(xhr.responseText).code==200){
                    console.log(xhr.responseText);
                    layer.msg('[ID: '+ data.Id +'] ' + field + ' 字段更改爲:'+ value);
                }else
                {
                    console.log(xhr.responseText);
                    layer.msg(xhr.responseText);
                }
            };
            xhr.send(formData);

        });

        //頭工具欄事件
        table.on('toolbar(test)', function(obj){
            var checkStatus = table.checkStatus(obj.config.id);
            switch(obj.event){
                case 'getCheckData':
                    var data = checkStatus.data;
                    layer.alert(JSON.stringify(data));
                    break;
                case 'getCheckLength':
                    var data = checkStatus.data;
                    layer.msg('選中了:'+ data.length + ' 個');
                    break;
                case 'isAll':
                    layer.msg(checkStatus.isAll ? '全選': '未全選');
                    break;
            };
        });
    });
</script>

添加方法修改用戶信息:

/* update user */
func (m UserC) Updateuser(g *gin.Context) {
	fmt.Println("update user.................")
	rsp := new(Rsp)

	//var err1 *gvalid.Error
	////1. 單參數校驗
	//err1 = gvalid.Check(g.PostForm("gender"), "integer|between:0,2", nil)
	//if err1 != nil {
	//	rsp.Msg = err1.String()
	//	rsp.Code = 201
	//	g.JSON(http.StatusOK, rsp)
	//	return
	//}

	id := g.PostForm("id")

	oldId, err := primitive.ObjectIDFromHex(id)
	newpassword := g.PostForm("password")
	newgender, err := strconv.Atoi(g.PostForm("gender"))

	user := new(models.User)
	user.Id = oldId

	oldInfo := m.Mgo.Collection(db.User).FindOne(context.Background(), bson.M{"_id": oldId})
	if oldInfo != nil {
		oldInfo.Decode(user)
	}
	if g.PostForm("username") != "" {
		user.Username = g.PostForm("username")
	}
	if newpassword != "" {
		user.Password = newpassword
	}
	if newgender != 0 {
		user.Gender = newgender
	}
	if g.PostForm("address") != "" {
		user.Address = g.PostForm("address")
	}

	//info, err := mgo.Collection(db.User).UpdateOne(context.Background(), bson.M{"_id": bsonx.ObjectID(oldId)},
	//	bson.M{"$set": bson.M{"username": newUsername}})
	//
	info := m.Mgo.Collection(db.User).FindOneAndReplace(context.Background(), bson.M{"_id": oldId},
		user)
	if info.Err() != nil {
		rsp.Msg = info.Err().Error()
		rsp.Code = 201
		g.JSON(http.StatusOK, rsp)
		return
	}
	fmt.Println(info)
	if err == nil {
		//fmt.Println(info.MatchedCount)
	}
	rsp.Msg = "success"
	rsp.Code = 200
	g.JSON(http.StatusOK, rsp)
	return
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章