package middleware

import (
	"github.com/PandaXGO/PandaKit/restfulx"
	"github.com/PandaXGO/PandaKit/utils"
	"net/http"
	"pandax/apps/log/entity"
	"pandax/apps/log/services"
)

func OperationHandler(rc *restfulx.ReqCtx) error {
	c := rc.Request
	// 请求操作不做记录
	if c.Request.Method == http.MethodGet || rc.LoginAccount == nil {
		return nil
	}
	if rc.RequiredPermission == nil || !rc.RequiredPermission.NeedToken {
		return nil
	}
	go func() {
		oper := entity.LogOper{
			Title:        rc.LogInfo.Description,
			BusinessType: "0",
			Method:       c.Request.Method,
			OperName:     rc.LoginAccount.UserName,
			OperUrl:      c.Request.URL.Path,
			OperIp:       c.Request.RemoteAddr,
			OperLocation: utils.GetRealAddressByIP(c.Request.RemoteAddr),
			OperParam:    "",
			Status:       "0",
		}
		if c.Request.Method == "POST" {
			oper.BusinessType = "1"
		} else if c.Request.Method == "PUT" {
			oper.BusinessType = "2"
		} else if c.Request.Method == "DELETE" {
			oper.BusinessType = "3"
		}
		services.LogOperModelDao.Insert(oper)
	}()

	return nil
}
