get_whatsapp_contact_logic.go 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. package contact
  2. import (
  3. "context"
  4. "github.com/suyuan32/simple-admin-common/msg/errormsg"
  5. "github.com/suyuan32/simple-admin-common/utils/pointy"
  6. "wechat-api/ent"
  7. "wechat-api/ent/contact"
  8. "wechat-api/internal/utils/dberrorhandler"
  9. "wechat-api/internal/svc"
  10. "wechat-api/internal/types"
  11. "github.com/zeromicro/go-zero/core/logx"
  12. )
  13. type GetWhatsappContactLogic struct {
  14. logx.Logger
  15. ctx context.Context
  16. svcCtx *svc.ServiceContext
  17. }
  18. func NewGetWhatsappContactLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetWhatsappContactLogic {
  19. return &GetWhatsappContactLogic{
  20. Logger: logx.WithContext(ctx),
  21. ctx: ctx,
  22. svcCtx: svcCtx}
  23. }
  24. func (l *GetWhatsappContactLogic) GetWhatsappContact(req *types.IDReq) (resp *types.ContactInfoResp, err error) {
  25. organizationId := l.ctx.Value("organizationId").(uint64)
  26. data, err := l.svcCtx.DB.Contact.Query().
  27. Where(
  28. contact.IDEQ(req.Id), // Filter by ID
  29. contact.OrganizationID(organizationId), // Additional filter by organizationId
  30. contact.Ctype(2),
  31. ).
  32. WithContactRelationships(func(query *ent.LabelRelationshipQuery) {
  33. query.WithLabels()
  34. }).
  35. Only(l.ctx)
  36. if err != nil {
  37. return nil, dberrorhandler.DefaultEntError(l.Logger, err, req)
  38. }
  39. labelRelationships := make([]types.ContactLabelList, 0)
  40. if data.Edges.ContactRelationships != nil {
  41. for _, lr := range data.Edges.ContactRelationships {
  42. if lr.Edges.Labels == nil {
  43. continue
  44. }
  45. labelRelationships = append(labelRelationships, types.ContactLabelList{
  46. Label: &lr.Edges.Labels.Name,
  47. Value: &lr.LabelID,
  48. })
  49. }
  50. }
  51. return &types.ContactInfoResp{
  52. BaseDataInfo: types.BaseDataInfo{
  53. Code: 0,
  54. Msg: errormsg.Success,
  55. },
  56. Data: types.ContactInfo{
  57. BaseIDInfo: types.BaseIDInfo{
  58. Id: &data.ID,
  59. CreatedAt: pointy.GetPointer(data.CreatedAt.UnixMilli()),
  60. UpdatedAt: pointy.GetPointer(data.UpdatedAt.UnixMilli()),
  61. },
  62. Phone: &data.Phone,
  63. Cc: &data.Cc,
  64. Markname: &data.Markname,
  65. OrganizationId: &data.OrganizationID,
  66. Ctype: &data.Ctype,
  67. Cname: &data.Cname,
  68. Sex: &data.Sex,
  69. Cage: &data.Cage,
  70. Carea: &data.Carea,
  71. Cbirthday: &data.Cbirthday,
  72. Cbirtharea: &data.Cbirtharea,
  73. CidcardNo: &data.CidcardNo,
  74. Ctitle: &data.Ctitle,
  75. LabelRelationships: labelRelationships,
  76. },
  77. }, nil
  78. }