package handlers import ( "net/http" "strconv" "github.com/gin-gonic/gin" "airwallex-admin/models" "airwallex-admin/services" ) func ListCardholders(c *gin.Context) { pageNum, _ := strconv.Atoi(c.DefaultQuery("page_num", "0")) pageSize, _ := strconv.Atoi(c.DefaultQuery("page_size", "20")) result, err := services.ListCardholders(models.DB, pageNum, pageSize) if err != nil { c.JSON(http.StatusBadRequest, gin.H{"detail": err.Error()}) return } c.JSON(http.StatusOK, result) } func CreateCardholder(c *gin.Context) { var body map[string]interface{} if err := c.ShouldBindJSON(&body); err != nil { c.JSON(http.StatusBadRequest, gin.H{"detail": "Invalid request body"}) return } result, err := services.CreateCardholder(models.DB, body) if err != nil { c.JSON(http.StatusBadRequest, gin.H{"detail": err.Error()}) return } username := c.GetString("username") cardholderID, _ := result["cardholder_id"].(string) models.DB.Create(&models.AuditLog{ Action: "create_cardholder", ResourceType: "cardholder", ResourceID: cardholderID, Operator: username, IPAddress: c.ClientIP(), }) c.JSON(http.StatusOK, result) }