package v1
|
|
import (
|
"aps_crm/constvar"
|
"aps_crm/model"
|
"aps_crm/model/request"
|
"aps_crm/model/response"
|
"aps_crm/pkg/contextx"
|
"aps_crm/pkg/ecode"
|
"aps_crm/utils"
|
"github.com/gin-gonic/gin"
|
)
|
|
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
|
}
|
|
//CreatorId, b := c.Get("claims")
|
//if !b {
|
// ctx.Fail(ecode.JWTParseErr)
|
// return
|
//}
|
//
|
//client.CreatorId = CreatorId.(int)
|
|
errCode = clientService.AddClient(client, params.SalesLeadsId)
|
if errCode != ecode.OK {
|
ctx.Fail(errCode)
|
return
|
}
|
if params.CodeRule.Method == 1 {
|
autoCode := model.GetAutoCode(client.Id, ¶ms.CodeRule)
|
m := map[string]interface{}{
|
"number": autoCode,
|
}
|
_ = model.NewClientSearch(nil).SetId(client.Id).UpdateByMap(m)
|
}
|
|
ctx.Ok()
|
}
|
|
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
|
//}
|
|
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
|
|
t, err = checkTimeFormat(params.RegistrationTime)
|
if err != nil {
|
return ecode.InvalidParams, nil
|
}
|
|
client.RegistrationTime = t
|
|
client.ClientTypeId = params.ClientTypeId
|
client.ClientOriginId = params.ClientOriginId
|
client.ClientLevelId = params.ClientLevelId
|
client.DetailAddress = params.DetailAddress
|
client.ClientStatusId = params.ClientStatusId
|
client.Remark = params.Remark
|
client.Number = params.Number
|
client.ServiceMemberId = params.ServiceMemberId
|
client.ProvinceId = params.ProvinceId
|
client.CityId = params.CityId
|
client.RegionId = params.RegionId
|
client.CountryId = params.CountryId
|
client.Business.BusinessScope = params.BusinessScope
|
client.Business.Representative = params.Representative
|
client.Business.RegisteredCapitalId = params.RegisteredCapitalId
|
client.Business.IndustryId = params.IndustryId
|
client.Business.EnterpriseNatureId = params.EnterpriseNatureId
|
client.Business.EnterpriseScaleId = params.EnterpriseScaleId
|
client.MemberId = params.MemberId
|
client.CodeStandID = params.CodeStandID
|
|
//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 object body request.DeleteClient true "查询参数"
|
// @Success 200 {object} contextx.Response{}
|
// @Router /api/client/delete [delete]
|
func (cli *ClientApi) Delete(c *gin.Context) {
|
var params request.DeleteClient
|
ctx, ok := contextx.NewContext(c, ¶ms)
|
if !ok {
|
return
|
}
|
|
errCode := clientService.DeleteClient(params.Ids)
|
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 [put]
|
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
|
}
|
|
client.Id = params.Id
|
|
errCode = clientService.UpdateClient(client, params.ContactId)
|
if errCode != ecode.OK {
|
ctx.Fail(errCode)
|
return
|
}
|
|
ctx.Ok()
|
}
|
|
// List
|
//
|
// @Tags Client
|
// @Summary 客户列表
|
// @Produce application/json
|
// @Param object body request.GetClientList true "参数"
|
// @Success 200 {object} contextx.Response{data=response.ClientResponse}
|
// @Router /api/client/list [post]
|
func (cli *ClientApi) List(c *gin.Context) {
|
var params request.GetClientList
|
ctx, ok := contextx.NewContext(c, ¶ms)
|
if !ok {
|
return
|
}
|
|
userInfo := utils.GetUserInfo(c)
|
if userInfo.UserType == constvar.UserTypeSub {
|
if params.SearchMap == nil {
|
params.SearchMap = make(map[string]interface{}, 0)
|
}
|
params.SearchMap["member_id"] = userInfo.CrmUserId
|
}
|
|
clients, total, errCode := clientService.GetClientList(params.Page, params.PageSize, params.SearchMap)
|
if errCode != ecode.OK {
|
ctx.Fail(errCode)
|
return
|
}
|
|
ctx.OkWithDetailed(response.ClientResponse{
|
List: clients,
|
Count: int(total),
|
})
|
}
|
|
// CheckName
|
//
|
// @Tags Client
|
// @Summary 检查客户名称是否重复
|
// @Produce application/json
|
// @Param object body request.CheckClientName true "参数"
|
// @Success 200 {object} contextx.Response{}
|
// @Router /api/client/checkName [post]
|
func (cli *ClientApi) CheckName(c *gin.Context) {
|
var params request.CheckClientName
|
ctx, ok := contextx.NewContext(c, ¶ms)
|
if !ok {
|
return
|
}
|
|
errCode := clientService.CheckName(params.Name)
|
if errCode != ecode.OK {
|
ctx.Fail(errCode)
|
return
|
}
|
|
ctx.Ok()
|
}
|