delete_label_logic.go 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package label
  2. import (
  3. "context"
  4. "github.com/zeromicro/go-zero/core/errorx"
  5. "wechat-api/ent/label"
  6. "wechat-api/ent/labelrelationship"
  7. "wechat-api/internal/svc"
  8. "wechat-api/internal/types"
  9. "wechat-api/internal/utils/dberrorhandler"
  10. "github.com/suyuan32/simple-admin-common/msg/errormsg"
  11. "github.com/zeromicro/go-zero/core/logx"
  12. )
  13. type DeleteLabelLogic struct {
  14. ctx context.Context
  15. svcCtx *svc.ServiceContext
  16. logx.Logger
  17. }
  18. func NewDeleteLabelLogic(ctx context.Context, svcCtx *svc.ServiceContext) *DeleteLabelLogic {
  19. return &DeleteLabelLogic{
  20. ctx: ctx,
  21. svcCtx: svcCtx,
  22. Logger: logx.WithContext(ctx),
  23. }
  24. }
  25. func (l *DeleteLabelLogic) DeleteLabel(req *types.IDsReq) (*types.BaseMsgResp, error) {
  26. organizationId := l.ctx.Value("organizationId").(uint64)
  27. data, err := l.svcCtx.DB.LabelRelationship.Query().
  28. Where(
  29. labelrelationship.LabelIDIn(req.Ids...), // Filter by ID
  30. labelrelationship.OrganizationID(organizationId), // Additional filter by organizationId
  31. ).
  32. Only(l.ctx)
  33. //if err != nil {
  34. // return nil, dberrorhandler.DefaultEntError(l.Logger, err, req)
  35. //}
  36. if data == nil {
  37. _, err := l.svcCtx.DB.Label.Delete().Where(label.IDIn(req.Ids...), label.OrganizationIDEQ(organizationId)).Exec(l.ctx)
  38. if err != nil {
  39. return nil, dberrorhandler.DefaultEntError(l.Logger, err, req)
  40. }
  41. return &types.BaseMsgResp{Msg: errormsg.DeleteSuccess}, nil
  42. } else {
  43. err = errorx.NewDefaultError("标签已被使用,无法删除!")
  44. return nil, err
  45. }
  46. }