removeMemberLogic.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package member
  2. import (
  3. "context"
  4. authHelper "perms-system-server/internal/logic/auth"
  5. "perms-system-server/internal/response"
  6. "perms-system-server/internal/svc"
  7. "perms-system-server/internal/types"
  8. "github.com/zeromicro/go-zero/core/logx"
  9. "github.com/zeromicro/go-zero/core/stores/sqlx"
  10. )
  11. type RemoveMemberLogic struct {
  12. logx.Logger
  13. ctx context.Context
  14. svcCtx *svc.ServiceContext
  15. }
  16. func NewRemoveMemberLogic(ctx context.Context, svcCtx *svc.ServiceContext) *RemoveMemberLogic {
  17. return &RemoveMemberLogic{
  18. Logger: logx.WithContext(ctx),
  19. ctx: ctx,
  20. svcCtx: svcCtx,
  21. }
  22. }
  23. func (l *RemoveMemberLogic) RemoveMember(req *types.RemoveMemberReq) error {
  24. member, err := l.svcCtx.SysProductMemberModel.FindOne(l.ctx, req.Id)
  25. if err != nil {
  26. return response.ErrNotFound("成员不存在")
  27. }
  28. if err := authHelper.CheckManageAccess(l.ctx, l.svcCtx, member.UserId, member.ProductCode); err != nil {
  29. return err
  30. }
  31. if err := l.svcCtx.SysProductMemberModel.TransactCtx(l.ctx, func(ctx context.Context, session sqlx.Session) error {
  32. if err := l.svcCtx.SysUserRoleModel.DeleteByUserIdForProductTx(ctx, session, member.UserId, member.ProductCode); err != nil {
  33. return err
  34. }
  35. if err := l.svcCtx.SysUserPermModel.DeleteByUserIdForProductTx(ctx, session, member.UserId, member.ProductCode); err != nil {
  36. return err
  37. }
  38. return l.svcCtx.SysProductMemberModel.DeleteWithTx(ctx, session, req.Id)
  39. }); err != nil {
  40. return err
  41. }
  42. l.svcCtx.UserDetailsLoader.Del(l.ctx, member.UserId, member.ProductCode)
  43. return nil
  44. }