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
|
}
|
|
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_id"] = userInfo.CrmUserId
|
}
|
|
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),
|
})
|
}
|