public Response Execute(User currentUser, string request)
        {
            var    req = JsonConvert.DeserializeObject <Request <GetCoachRelatedFilter> >(request);
            string sql = @"
SELECT 
    a.*,
    b.Name AS VenueName,
	c.Name AS CourseGoalName,
    c.Code AS CourseGoalCode,
	CoachName = dbo.fn_GetUserName(d.Id),
	BigCourseName = e.Name,
	e.Price AS BigCourseUnitPrice,
	f.Grade AS CoachGrade,
    d.Code AS CoachCode,
    b.Lng  AS VenueLng ,
    b.Lat  AS VenueLat ,
    b.Address AS VenueAddress,
    e.CourseContent AS CourseContentDetail,
    Score=(SELECT AVG(Score) FROM dbo.CoachComment WHERE CourseId=a.Id ),
	MyScore=(SELECT ISNULL(Score,0) FROM dbo.CoachComment WHERE CommentatorId=@CurrentUserId AND CourseId=a.Id )
FROM dbo.CoachCourse a
LEFT JOIN dbo.Venue b ON a.VenueId = b.Id
LEFT JOIN dbo.SysDic c ON c.Code = a.CourseGoalCode AND c.Code!=''
LEFT JOIN dbo.UserAccount d ON a.CoachId = d.Id
LEFT JOIN dbo.CoachBigCourseInfo e ON e.Id = a.BigCourseId
LEFT JOIN dbo.Coach f ON a.CoachId=f.Id
 
WHERE
     a.Id = @Id
               
";

            var cmd = CommandHelper.CreateText <CoachCourse>(FetchType.Fetch, sql);

            cmd.Params.Add("@Id", req.Filter.CourseId);
            cmd.Params.Add("@CurrentUserId", req.Filter.CurrentUserId);

            var         result      = DbContext.GetInstance().Execute(cmd);
            CoachCourse coachCourse = result.FirstEntity <CoachCourse>();

            if (coachCourse != null)
            {
                //获取个人信息列表
                GetPersonInfoList(coachCourse);
                //CourseName 计算赋值
                SetCourseName(coachCourse);
                //获取我的余额(界面最外层用)
                GetMyBalance(coachCourse, req.Filter.CurrentUserId);
                //获取教练或大课的单价
                GetUnitPrice(coachCourse);
                //计算课程状态
                CoachHelper.Instance.CountCourseState(coachCourse);
                //返回附件
                coachCourse.TryGetFiles();
                CoachHelper.Instance.SetCourseAvgScore(coachCourse);
            }
            return(result);
        }
        public Response Execute(User currentUser, string request)
        {
            var    req = JsonConvert.DeserializeObject <Request <GetCoachRelatedFilter> >(request);
            string sql = @"
SELECT 
    a.*,
    b.Name AS VenueName,
	c.Name AS CourseGoalName,
	CoachName = dbo.fn_GetUserName(d.Id),
	BigCourseName = e.Name,
	f.Name AS TypeName,
	b.Address AS VenueAddress,
    e.CourseContent AS CourseContentDetail
FROM dbo.CoachCourse a
LEFT JOIN dbo.Venue b ON a.VenueId = b.Id
LEFT JOIN dbo.SysDic c ON c.Code = a.CourseGoalCode AND c.Code!=''
LEFT JOIN dbo.UserAccount d ON a.CoachId = d.Id
LEFT JOIN dbo.CoachBigCourseInfo e ON e.Id = a.BigCourseId
LEFT JOIN dbo.BaseData f ON a.Type=f.Id
WHERE
     a.Id = @Id
               
";
            var    cmd = CommandHelper.CreateText <CoachCourse>(FetchType.Fetch, sql);

            cmd.Params.Add("@Id", req.Filter.CourseId);
            var result = DbContext.GetInstance().Execute(cmd);

            CoachCourse coachCourse = result.FirstEntity <CoachCourse>();

            if (coachCourse != null)
            {
                //个人信息列表
                GetPersonInfoList(coachCourse);
                //CourseName 计算赋值
                if (coachCourse.Type == CoachDic.BigCourse)
                {
                    coachCourse.CourseName = coachCourse.BigCourseName;
                }
                else if (coachCourse.Type == CoachDic.PrivateCourse)
                {
                    coachCourse.CourseName = coachCourse.CoachName;
                }

                //计算上下课打卡按钮状态
                CountStartEndCard(coachCourse);
                //获取附件
                coachCourse.TryGetFiles();
            }

            return(result);
        }