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