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()
|
}
|