package v1 import ( "aps_crm/model" "aps_crm/model/request" "aps_crm/model/response" "aps_crm/pkg/contextx" "aps_crm/pkg/ecode" "github.com/gin-gonic/gin" "strconv" ) type ClientApi struct{} // Add // // @Tags Client // @Summary 添加客户 // @Produce application/json // @Param object body request.AddClient true "查询参数" // @Success 200 {object} contextx.Response{} // @Router /api/client/add [post] func (cli *ClientApi) Add(c *gin.Context) { var params request.AddClient ctx, ok := contextx.NewContext(c, ¶ms) if !ok { return } errCode, client := checkClientParams(params.Client) if errCode != ecode.OK { ctx.Fail(errCode) return } // check member exist errCode = clientService.AddClient(client) if errCode != ecode.OK { ctx.Fail(errCode) return } ctx.Ok() } // List // // @Tags Client // @Summary 获取客户列表 // @Produce application/json // @Success 200 {object} contextx.Response{data=response.ClientResponse} // @Router /api/client/list [get] func (cli *ClientApi) List(c *gin.Context) { ctx, ok := contextx.NewContext(c, nil) if !ok { return } errCode, clients := clientService.GetClientList() if errCode != ecode.OK { ctx.Fail(errCode) return } ctx.OkWithDetailed(response.ClientResponse{List: clients}) } func checkClientParams(params request.Client) (int, *model.Client) { client := new(model.Client) if params.Name == "" { return ecode.InvalidParams, nil } client.Name = params.Name if params.ClientStatusId == 0 { return ecode.InvalidParams, nil } client.ClientStatusId = params.ClientStatusId if params.MemberId == 0 { return ecode.InvalidParams, nil } client.MemberId = params.MemberId t, err := checkTimeFormat(params.NextVisitTime) if err != nil { return ecode.InvalidParams, nil } client.NextVisitTime = t t, err = checkTimeFormat(params.LatestServiceTime) if err != nil { return ecode.InvalidParams, nil } client.LatestServiceTime = t client.ClientTypeId = params.ClientTypeId client.ClientOriginId = params.ClientOriginId client.ClientLevelId = params.ClientLevelId client.DetailAddress = params.DetailAddress client.Remark = params.Remark client.Number = params.Number client.ServiceMemberId = params.ServiceMemberId if params.Contact.Name != "" { // assign the client's member id to contact when adding params.Contact.MemberId = params.MemberId errCode, contact := checkContactParams(params.Contact) if errCode != ecode.OK { return errCode, nil } client.Contacts = []model.Contact{contact} } return ecode.OK, client } // Delete // // @Tags Client // @Summary 删除客户 // @Produce application/json // @Param id path int true "客户ID" // @Success 200 {object} contextx.Response{} // @Router /api/client/delete/{id} [delete] func (cli *ClientApi) Delete(c *gin.Context) { ctx, ok := contextx.NewContext(c, nil) if !ok { return } id, _ := strconv.Atoi(c.Param("id")) errCode := clientService.DeleteClient(id) if errCode != ecode.OK { ctx.Fail(errCode) return } ctx.Ok() } // Update // // @Tags Client // @Summary 更新客户 // @Produce application/json // @Param object body request.UpdateClient true "查询参数" // @Success 200 {object} contextx.Response{} // @Router /api/client/update [post] func (cli *ClientApi) Update(c *gin.Context) { var params request.UpdateClient ctx, ok := contextx.NewContext(c, ¶ms) if !ok { return } errCode, client := checkClientParams(params.Client) if errCode != ecode.OK { ctx.Fail(errCode) return } // check id if params.Id == 0 { ctx.Fail(ecode.InvalidParams) return } errCode = clientService.UpdateClient(client) if errCode != ecode.OK { ctx.Fail(errCode) return } ctx.Ok() }