package handler import ( "net/http" "strings" "time" "github.com/gin-gonic/gin" lawyermodel "wx_service/internal/lawyer/model" lawyerservice "wx_service/internal/lawyer/service" "wx_service/internal/model" ) type LawyerHandler struct { service *lawyerservice.Service } func NewLawyerHandler(service *lawyerservice.Service) *LawyerHandler { return &LawyerHandler{service: service} } type createLawyerRequest struct { Phone string `json:"phone" binding:"required"` Province string `json:"province"` City string `json:"city"` LawFirm string `json:"law_firm"` URL string `json:"url"` CreateTime *int `json:"create_time"` Domain string `json:"domain"` Name string `json:"name"` Params *string `json:"params"` } func (h *LawyerHandler) Create(c *gin.Context) { var req createLawyerRequest if err := c.ShouldBindJSON(&req); err != nil { c.JSON(http.StatusBadRequest, model.Error(http.StatusBadRequest, "请求参数错误")) return } phone := strings.TrimSpace(req.Phone) if phone == "" { c.JSON(http.StatusBadRequest, model.Error(http.StatusBadRequest, "手机号不能为空")) return } createTime := time.Now().Unix() if req.CreateTime != nil && *req.CreateTime > 0 { createTime = int64(*req.CreateTime) } record := &lawyermodel.Lawyer{ Phone: phone, Province: strings.TrimSpace(req.Province), City: strings.TrimSpace(req.City), LawFirm: strings.TrimSpace(req.LawFirm), URL: strings.TrimSpace(req.URL), CreateTime: int(createTime), Domain: strings.TrimSpace(req.Domain), Name: strings.TrimSpace(req.Name), } if req.Params != nil { record.Params = strings.TrimSpace(*req.Params) } if err := h.service.CreateLawyer(c.Request.Context(), record); err != nil { c.JSON(http.StatusInternalServerError, model.Error(http.StatusInternalServerError, "保存失败,请稍后重试")) return } c.JSON(http.StatusCreated, model.Success(gin.H{ "id": record.ID, })) }