package Wx import ( "context" "github.com/suyuan32/simple-admin-common/msg/errormsg" "github.com/zeromicro/go-zero/core/errorx" "wechat-api/ent/wx" "wechat-api/internal/service/wechat" "wechat-api/internal/svc" "wechat-api/internal/types" "github.com/zeromicro/go-zero/core/logx" ) type ChangeOrganizationLogic struct { logx.Logger ctx context.Context svcCtx *svc.ServiceContext } func NewChangeOrganizationLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ChangeOrganizationLogic { return &ChangeOrganizationLogic{ Logger: logx.WithContext(ctx), ctx: ctx, svcCtx: svcCtx} } func (l *ChangeOrganizationLogic) ChangeOrganization(req *types.WxInfo) (resp *types.BaseMsgResp, err error) { isAdmin := l.ctx.Value("isAdmin").(bool) if !isAdmin { return nil, errorx.NewDefaultError("仅管理员可调整租户") } tx, err := l.svcCtx.DB.Tx(l.ctx) if err != nil { return nil, err } change := wechat.WxSafeChange{Ctx: l.ctx, Tx: tx, WxId: *req.Wxid, OrganizationId: *req.OrganizationId} err = change.KeepAllSafe() if err != nil { _ = tx.Rollback() return nil, err } _, err = tx.Wx.Update(). Where(wx.WxidEQ(*req.Wxid)). SetNotNilOrganizationID(req.OrganizationId). Save(l.ctx) if err != nil { _ = tx.Rollback() return nil, err } err = tx.Commit() if err != nil { return nil, err } return &types.BaseMsgResp{Msg: errormsg.UpdateSuccess}, nil }