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 ContactApi struct{} // Add // // @Tags Contact // @Summary 添加联系人 // @Produce application/json // @Param object body request.AddContact true "查询参数" // @Success 200 {object} contextx.Response{} // @Router /api/contact/add [post] func (con *ContactApi) Add(c *gin.Context) { var params request.AddContact ctx, ok := contextx.NewContext(c, ¶ms) if !ok { return } errCode, contact := checkContactParams(params.Contact) if errCode != ecode.OK { ctx.Fail(errCode) return } if params.MemberId == 0 { userInfo := utils.GetUserInfo(c) if userInfo.UserType == constvar.UserTypeSub { params.MemberId = userInfo.CrmUserId } } errCode = contactService.AddContact(&contact) if errCode != ecode.OK { ctx.Fail(errCode) return } //if params.CodeRule.Method == 1 { // autoCode := model.GetAutoCode(contact.Id, ¶ms.CodeRule) // m := map[string]interface{}{ // "number": autoCode, // } // _ = model.NewContactSearch(nil).SetId(contact.Id).UpdateByMap(m) //} ctx.Ok() } // Delete // // @Tags Contact // @Summary 删除联系人 // @Produce application/json // @Param object body request.DeleteContact true "查询参数" // @Success 200 {object} contextx.Response{} // @Router /api/contact/delete [delete] func (con *ContactApi) Delete(c *gin.Context) { var params request.DeleteContact ctx, ok := contextx.NewContext(c, ¶ms) if !ok { return } errCode := contactService.DeleteContact(params.Ids) if errCode != ecode.OK { ctx.Fail(errCode) return } ctx.Ok() } // Update // // @Tags Contact // @Summary 更新联系人 // @Produce application/json // @Param object body request.UpdateContact true "查询参数" // @Success 200 {object} contextx.Response{} // @Router /api/contact/update [put] func (con *ContactApi) Update(c *gin.Context) { var params request.UpdateContact ctx, ok := contextx.NewContext(c, ¶ms) if !ok { return } // check id if params.Id == 0 { ctx.Fail(ecode.InvalidParams) return } errCode, contact := checkContactParams(params.Contact) if errCode != ecode.OK { ctx.Fail(errCode) return } contact.Id = params.Id errCode = contactService.UpdateContact(&contact) if errCode != ecode.OK { ctx.Fail(errCode) return } ctx.Ok() } func checkContactParams(params request.Contact) (int, model.Contact) { var contact model.Contact // name not empty //if params.Name == "" { // return ecode.InvalidParams, contact //} contact.Name = params.Name contact.Phone = params.Phone contact.Email = params.Email // check member id not -1 //if params.MemberId == 0 { // return ecode.InvalidParams, contact //} contact.MemberId = params.MemberId contact.ProvinceId = params.ProvinceId contact.CityId = params.CityId contact.CountryId = params.CountryId contact.RegionId = params.RegionId contact.Position = params.Position contact.ClientId = params.ClientId contact.Desc = params.Desc // check number not empty //if params.Number == "" { // return ecode.InvalidParams, contact //} contact.Number = params.Number t, err := checkTimeFormat(params.Birthday) if err != nil { return ecode.InvalidParams, contact } contact.Birthday = t contact.Wechat = params.Wechat contact.IsFirst = params.IsFirst //contact.CodeStandID = params.CodeStandID return ecode.OK, contact } // List // // @Tags Contact // @Summary 联系人列表 // @Produce application/json // @Param object body request.GetContactList true "参数" // @Success 200 {object} contextx.Response{data=response.ContactResponse} // @Router /api/contact/list [post] func (con *ContactApi) List(c *gin.Context) { var params request.GetContactList 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_ids"] = userInfo.SubUserIds } contacts, total, errCode := contactService.GetContactList(params.Page, params.PageSize, params.SearchMap, params.ClientId) if errCode != ecode.OK { ctx.Fail(errCode) return } ctx.OkWithDetailed(response.ContactResponse{ List: contacts, Count: int(total), }) }