`func LoginHandler(ctx *svc.ServiceContext) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { var req types.LoginReq if err := httpx.Parse(r, &req); err != nil { httpx.Error(w, err) return } l := user.NewLoginLogic(r.Context(), ctx) resp, err := l.Login(&req) if err != nil { httpx.Error(w, err) } else { httpx.OkJson(w, resp) } } }` `func NewLoginLogic(ctx context.Context, svcCtx *svc.ServiceContext) LoginLogic { return LoginLogic{ Logger: logx.WithContext(ctx), ctx: ctx, svcCtx: svcCtx, } } func (l *LoginLogic) Login(**req** types.LoginReq) (resp *types.LoginReply, err error) { // todo: add your logic here and delete this line return } `