package manager

import (
	"chainweaver.org.cn/chainweaver/did/did-mgr-common-service/errorcode"
	"chainweaver.org.cn/chainweaver/did/did-mgr-common-service/internal/db"
	"chainweaver.org.cn/chainweaver/did/did-mgr-common-service/internal/middleware"
	"context"
	"fmt"

	"chainweaver.org.cn/chainweaver/did/did-mgr-common-service/internal/svc"
	"chainweaver.org.cn/chainweaver/did/did-mgr-common-service/internal/types"

	"github.com/zeromicro/go-zero/core/logx"
)

type MemberDelLogic struct {
	logx.Logger
	ctx    context.Context
	svcCtx *svc.ServiceContext
}

func NewMemberDelLogic(ctx context.Context, svcCtx *svc.ServiceContext) *MemberDelLogic {
	return &MemberDelLogic{
		Logger: logx.WithContext(ctx),
		ctx:    ctx,
		svcCtx: svcCtx,
	}
}

func (l *MemberDelLogic) MemberDel(req *types.DelReq) (resp *types.CommonResp, err error) {
	resp = &types.CommonResp{
		Code: types.SucceedCode,
		Msg:  types.SucceedMsg,
	}

	token := l.ctx.Value("claims").(*middleware.TokenUser)

	userInfo, err := db.FindUserByUserId(req.UserId)
	if err != nil {
		errorcode.MysqlErrorQuery.BuildResult(resp, err)
		return resp, nil
	}

	if userInfo.MemberType <= token.MemberType {
		err = fmt.Errorf("管理员权限不足")
		errorcode.PrivilegeError.BuildResult(resp, err)
		return resp, nil
	}

	userInfo.State = 2
	err = db.UpdateUserInfo(userInfo)
	if err != nil {
		errorcode.MysqlErrorUpdate.BuildResult(resp, err)
		return resp, nil
	}
	return
}