Example #1
0
 public TrainingCourseDTO(TrainingCourseEntity trainingCourseEntity)
 {
     this.Id                 = trainingCourseEntity.Id.ToString();
     this.MemberId           = trainingCourseEntity.Member_id;
     this.FkTrainingPlanId   = trainingCourseEntity.Fk_training_plan_id.ToString();
     this.RestDays           = trainingCourseEntity.Rest_days.ToString();
     this.TargetCourseCount  = trainingCourseEntity.Target_course_count.ToString();
     this.CurrentCourseCount = trainingCourseEntity.Current_course_count.ToString();
     this.StartDate          = trainingCourseEntity.Start_date.ToString().Replace("/", "-");
     this.EndDate            = trainingCourseEntity.End_date.ToString().Replace("/", "-");
     this.CurrentEndDate     = trainingCourseEntity.Current_end_date.ToString().Replace("/", "-");
     this.IsComplete         = trainingCourseEntity.Is_complete.ToString();
     this.GmtCreate          = trainingCourseEntity.Gmt_create.ToString().Replace("/", "-");
     this.GmtModified        = trainingCourseEntity.Gmt_modified.ToString().Replace("/", "-");
 }
Example #2
0
        /// <summary>
        /// 自动创建模板训练课程
        /// </summary>
        /// <param name="trainingCourseEntity"></param>
        /// <returns></returns>
        public void AutoSaveNewTemplateCourse(TrainingPlanEntity trainingPlan, PlanTemplate planTemplate)
        {
            //使整个代码块成为事务性代码
            using (TransactionScope ts = new TransactionScope())
            {
                TrainingCourseEntity trainingCourseEntity = new TrainingCourseEntity();

                //主键id
                trainingCourseEntity.Id = KeyGenerator.GetNextKeyValueLong("bdl_training_course");
                //设置外键训练计划id
                trainingCourseEntity.Fk_training_plan_id = trainingPlan.Id;
                //设置会员卡号
                trainingCourseEntity.Member_id = trainingPlan.Member_id;
                //当前创建时间
                trainingCourseEntity.Gmt_create = System.DateTime.Now;
                //6.创建一个默认的训练课程
                //  课程开始时间 = 训练计划的开始时间
                trainingCourseEntity.Start_date = trainingPlan.Start_date;
                //  默认暂停时间是2天
                trainingCourseEntity.Rest_days = 2;
                //  默认课程天数是16天
                trainingCourseEntity.Target_course_count = 16;
                //  当前计数默认0
                trainingCourseEntity.Current_course_count = 0;
                //  默认结束日期 = 开始日期 + (暂停时间*(课程天数 - 1))  减一是因为当天算第一天
                trainingCourseEntity.End_date = trainingCourseEntity.Start_date.Value.AddDays(trainingCourseEntity.Rest_days.Value * (trainingCourseEntity.Target_course_count.Value - 1));
                //  状态未完成
                trainingCourseEntity.Is_complete = false;

                //  保存课程
                //这个插入基类有BUG 明明插入进入了 但是返回的结果为0,所以不要返回值了。反正如果插入失败也报异常,返回值也没啥用
                trainingCourseDAO.Insert(trainingCourseEntity);
                //插入至上传表
                UploadManagementDAO uploadManagementDao = new UploadManagementDAO();
                uploadManagementDao.Insert(new UploadManagement((int)trainingCourseEntity.Id, "bdl_training_course", 0));
                //更新配置中的课程id
                CommUtil.UpdateSettingString("trainingCourseId", (trainingCourseEntity.Id).ToString());
                //训练课程目标天数
                CommUtil.UpdateSettingString("targetCourseCount", (trainingCourseEntity.Target_course_count).ToString());
                //调用创建模板训练活动
                trainingActivityService.AutoSaveActivityTemplate(trainingCourseEntity, trainingPlan.Fk_member_id.Value, planTemplate);
                ts.Complete();
            }
        }
Example #3
0
        /// <summary>
        /// 添加训练课程
        /// </summary>
        /// <param name="trainingCourseEntity"></param>
        /// <returns></returns>
        public void SaveTrainingCourse(DateTime?startDate)
        {
            TrainingCourseEntity trainingCourseEntity = new TrainingCourseEntity();

            //主键id
            trainingCourseEntity.Id = KeyGenerator.GetNextKeyValueLong("bdl_training_course");
            //设置外键训练计划id
            trainingCourseEntity.Fk_training_plan_id = ParseIntegerUtil.ParseInt(CommUtil.GetSettingString("trainingPlanId"));
            //设置会员卡号
            trainingCourseEntity.Member_id = CommUtil.GetSettingString("memberId");
            //当前创建时间
            trainingCourseEntity.Gmt_create = System.DateTime.Now;
            //6.创建一个默认的训练课程
            //  课程开始时间 = 训练计划的开始时间
            trainingCourseEntity.Start_date = startDate;
            //  默认暂停时间是4天
            trainingCourseEntity.Rest_days = 2;
            //  默认课程天数是16天
            trainingCourseEntity.Target_course_count = 16;
            //  默认结束日期 = 开始日期 + (暂停时间*(课程天数 - 1))  减一是因为当天算第一天
            trainingCourseEntity.End_date = trainingCourseEntity.Start_date.Value.AddDays(trainingCourseEntity.Rest_days.Value * (trainingCourseEntity.Target_course_count.Value - 1));
            //  状态未完成
            trainingCourseEntity.Is_complete = false;
            //  当前计数默认0
            trainingCourseEntity.Current_course_count = 0;
            //  保存课程


            //这个插入基类有BUG 明明插入进入了 但是返回的结果为0,所以不要返回值了。反正如果插入失败也报异常,返回值也没啥用
            trainingCourseDAO.Insert(trainingCourseEntity);
            //插入至上传表
            UploadManagementDAO uploadManagementDao = new UploadManagementDAO();

            uploadManagementDao.Insert(new UploadManagement(trainingCourseEntity.Id, "bdl_training_course", 0));
            //更新配置中的课程id
            CommUtil.UpdateSettingString("trainingCourseId", (trainingCourseEntity.Id).ToString());
            //训练课程目标天数
            CommUtil.UpdateSettingString("targetCourseCount", (trainingCourseEntity.Target_course_count).ToString());
        }
        /// <summary>
        /// 根据模板自动创建训练活动 传入的是用户的数据库主键id
        /// </summary>
        /// <param name="trainingCourseEntity"></param>
        /// <param name="memberPkId"></param>
        /// <param name="planTemplate"></param>
        /// <returns></returns>
        public long AutoSaveActivityTemplate(TrainingCourseEntity trainingCourseEntity, long memberPkId, PlanTemplate planTemplate)
        {
            using (TransactionScope ts = new TransactionScope())
            {
                long result = 0;

                List <ActivityEntity> activities = new List <ActivityEntity>();
                //力量循环活动
                ActivityEntity strengthActivity = new ActivityEntity();
                //耐力循环活动
                ActivityEntity enduranceActivity = new ActivityEntity();
                //上传表
                UploadManagementDAO uploadManagementDao = new UploadManagementDAO();

                //根据不同模板创建不同的活动
                switch (planTemplate)
                {
                case PlanTemplate.StrengthCycle:    //力量循环
                    strengthActivity.Id                    = KeyGenerator.GetNextKeyValueLong("bdl_activity");
                    strengthActivity.Member_id             = trainingCourseEntity.Member_id;
                    strengthActivity.Fk_member_id          = memberPkId;
                    strengthActivity.Fk_training_course_id = trainingCourseEntity.Id;
                    strengthActivity.Gmt_create            = System.DateTime.Now;
                    strengthActivity.Is_complete           = false;
                    //模板创建默认两轮
                    strengthActivity.Target_turn_number  = 2;
                    strengthActivity.current_turn_number = 0;
                    //0:力量循环
                    strengthActivity.Activity_type = "0";

                    activities.Add(strengthActivity);
                    // 插入至上传表
                    uploadManagementDao.Insert(new UploadManagement(strengthActivity.Id, "bdl_activity", 0));
                    break;

                case PlanTemplate.EnduranceCycle:    //耐力循环
                    enduranceActivity.Id                    = KeyGenerator.GetNextKeyValueLong("bdl_activity");
                    enduranceActivity.Member_id             = trainingCourseEntity.Member_id;
                    enduranceActivity.Fk_member_id          = memberPkId;
                    enduranceActivity.Fk_training_course_id = trainingCourseEntity.Id;
                    enduranceActivity.Gmt_create            = System.DateTime.Now;
                    enduranceActivity.Is_complete           = false;
                    //模板创建默认两轮
                    enduranceActivity.Target_turn_number  = 2;
                    enduranceActivity.current_turn_number = 0;
                    //1:耐力循环
                    enduranceActivity.Activity_type = "1";

                    activities.Add(enduranceActivity);
                    //插入至上传表
                    uploadManagementDao.Insert(new UploadManagement(enduranceActivity.Id, "bdl_activity", 0));
                    break;

                case PlanTemplate.StrengthEnduranceCycle:
                    //创建力量循环活动
                    strengthActivity.Id                    = KeyGenerator.GetNextKeyValueLong("bdl_activity");
                    strengthActivity.Member_id             = trainingCourseEntity.Member_id;
                    strengthActivity.Fk_member_id          = memberPkId;
                    strengthActivity.Fk_training_course_id = trainingCourseEntity.Id;
                    strengthActivity.Gmt_create            = System.DateTime.Now;
                    strengthActivity.Is_complete           = false;
                    //模板创建默认两轮
                    strengthActivity.Target_turn_number  = 2;
                    strengthActivity.current_turn_number = 0;
                    //0:力量循环
                    strengthActivity.Activity_type = "0";

                    activities.Add(strengthActivity);
                    //插入至上传表
                    uploadManagementDao.Insert(new UploadManagement(strengthActivity.Id, "bdl_activity", 0));
                    //创建耐力循环活动
                    enduranceActivity.Id                    = KeyGenerator.GetNextKeyValueLong("bdl_activity");
                    enduranceActivity.Member_id             = trainingCourseEntity.Member_id;
                    enduranceActivity.Fk_member_id          = memberPkId;
                    enduranceActivity.Fk_training_course_id = trainingCourseEntity.Id;
                    enduranceActivity.Gmt_create            = System.DateTime.Now;
                    enduranceActivity.Is_complete           = false;
                    //模板创建默认两轮
                    enduranceActivity.Target_turn_number  = 2;
                    enduranceActivity.current_turn_number = 0;
                    //1:耐力循环
                    enduranceActivity.Activity_type = "1";

                    activities.Add(enduranceActivity);
                    //插入至上传表
                    uploadManagementDao.Insert(new UploadManagement(enduranceActivity.Id, "bdl_activity", 0));
                    break;

                default:
                    break;
                }

                //批量插入训练活动
                result = activityDAO.BatchInsert(activities);


                //根据训练活动批量插入个人设置记录 传入用户主键id
                personalSettingService.AutoSavePersonalSettings(memberPkId, trainingCourseEntity.Id, trainingCourseEntity.Member_id);


                ts.Complete();
                return(result);
            }
        }
Example #5
0
        /// <summary>
        /// 1.该方法可用于登陆后,根据传入卡号更新App.config。
        /// 2.允许教练单独登陆,那么这些设置都是教练的,可以和普通用户一样查看图表。教练、用户同时登陆则保留用户的信息,两个主键位都有值
        /// 3.参roleId 1代表用户 0代表教练
        /// 4.登陆成功的情况更新数据库最近登陆时间
        /// </summary>
        /// <param name="memberId"></param>
        /// <param name="roleId"></param>
        private Enum UpdateSetting(string memberId, string roleId)
        {
            try
            {
                //系统允许至多一位教练和一位用户同时登录,存一个用户主键和一系列ID,存一个教练id
                string currentMemberPK = CommUtil.GetSettingString("memberPrimarykey");
                string currentCoachId  = CommUtil.GetSettingString("coachId");
                if ((currentMemberPK == null || currentMemberPK == "") && (currentCoachId == null || currentCoachId == ""))
                {
                    //同时为空 无人登陆
                    //判断登陆者角色
                    if ("1".Equals(roleId))//用户
                    {
                        //1.更新会员卡号ID
                        CommUtil.UpdateSettingString("memberId", memberId);
                        //3.更新当前登陆用户的训练计划id
                        TrainingPlanEntity trainingPlanEntity = trainingPlanDAO.GetTrainingPlanByMumberId(memberId);
                        if (trainingPlanEntity != null)
                        {
                            CommUtil.UpdateSettingString("trainingPlanId", (trainingPlanEntity.Id).ToString());
                        }
                        //4.更新当前登陆用户的训练课程id
                        TrainingCourseEntity trainingCourseEntity = trainingCourseDAO.GetCourseByMemberId(memberId);
                        if (trainingCourseEntity != null)
                        {
                            CommUtil.UpdateSettingString("trainingCourseId", (trainingCourseEntity.Id).ToString());
                            //5.更新当前登陆用户的当前课程记录id current_course_count
                            CommUtil.UpdateSettingString("currentCourseCount", (trainingCourseEntity.Current_course_count).ToString());
                            //5.更新当前登陆用户的目标课程记录id
                            CommUtil.UpdateSettingString("targetCourseCount", (trainingCourseEntity.Target_course_count).ToString());
                        }

                        //6.更新当前登陆会员的主键
                        //根据卡号查询会员
                        MemberEntity member = memberDAO.GetMember(memberId);
                        if (member != null)
                        {
                            CommUtil.UpdateSettingString("memberPrimarykey", (member.Id).ToString());
                            //7.更新会员最近登录时间
                            member.Last_login_date = System.DateTime.Now;
                            UpdateLastLoginDate(member);
                        }

                        logger.Debug("状态:无教练无用户登录。用户登录,返回用户页 ID:" + memberId);
                        //需要返回的页面类型
                        return(LoginPageStatus.UserPage);
                    }
                    else if ("0".Equals(roleId))//教练登陆
                    {
                        //1.更新会员卡号ID
                        CommUtil.UpdateSettingString("memberId", memberId);
                        //3.更新当前登陆用户的训练计划id
                        TrainingPlanEntity trainingPlanEntity = trainingPlanDAO.GetTrainingPlanByMumberId(memberId);
                        if (trainingPlanEntity != null)
                        {
                            CommUtil.UpdateSettingString("trainingPlanId", (trainingPlanEntity.Id).ToString());
                        }
                        //4.更新当前登陆用户的训练课程id
                        TrainingCourseEntity trainingCourseEntity = trainingCourseDAO.GetCourseByMemberId(memberId);
                        if (trainingCourseEntity != null)
                        {
                            CommUtil.UpdateSettingString("trainingCourseId", (trainingCourseEntity.Id).ToString());
                            //5.更新当前登陆用户的当前课程记录id current_course_count
                            CommUtil.UpdateSettingString("currentCourseCount", (trainingCourseEntity.Current_course_count).ToString());
                            //5.更新当前登陆用户的目标课程记录id
                            CommUtil.UpdateSettingString("targetCourseCount", (trainingCourseEntity.Target_course_count).ToString());
                        }
                        //6.更新当前登陆用户的主键
                        //根据卡号查询用户
                        MemberEntity member = memberDAO.GetMember(memberId);
                        if (member != null)
                        {
                            //7.更新教练最近登录时间
                            member.Last_login_date = System.DateTime.Now;
                            UpdateLastLoginDate(member);
                            //8.更新教练ID
                            CommUtil.UpdateSettingString("coachId", (member.Id).ToString());
                        }


                        logger.Debug("状态:无教练无用户登录。教练登录,返回教练页面。ID:" + memberId);
                        //需要返回的页面类型
                        return(LoginPageStatus.CoachPage);
                    }
                }
                else if ((currentMemberPK == null || currentMemberPK == "") && (currentCoachId != null && currentCoachId != ""))
                {
                    //教练已经登陆 会员未登陆
                    //判断登陆者角色
                    if ("1".Equals(roleId))//此时用户登陆还是在教练页面
                    {
                        //1.更新会员卡号ID
                        CommUtil.UpdateSettingString("memberId", memberId);
                        //3.更新当前登陆用户的训练计划id
                        TrainingPlanEntity trainingPlanEntity = trainingPlanDAO.GetTrainingPlanByMumberId(memberId);
                        if (trainingPlanEntity != null)
                        {
                            CommUtil.UpdateSettingString("trainingPlanId", (trainingPlanEntity.Id).ToString());
                        }
                        //4.更新当前登陆用户的训练课程id
                        TrainingCourseEntity trainingCourseEntity = trainingCourseDAO.GetCourseByMemberId(memberId);
                        if (trainingCourseEntity != null)
                        {
                            CommUtil.UpdateSettingString("trainingCourseId", (trainingCourseEntity.Id).ToString());
                            //5.更新当前登陆用户的当前课程记录id current_course_count
                            CommUtil.UpdateSettingString("currentCourseCount", (trainingCourseEntity.Current_course_count).ToString());
                            //5.更新当前登陆用户的目标课程记录id
                            CommUtil.UpdateSettingString("targetCourseCount", (trainingCourseEntity.Target_course_count).ToString());
                        }

                        //6.更新当前登陆会员的主键
                        //根据卡号查询会员
                        MemberEntity member = memberDAO.GetMember(memberId);
                        if (member != null)
                        {
                            CommUtil.UpdateSettingString("memberPrimarykey", (member.Id).ToString());
                            //7.更新会员最近登录时间
                            member.Last_login_date = System.DateTime.Now;
                            UpdateLastLoginDate(member);
                        }

                        logger.Debug("状态:教练已经登陆 会员未登陆。用户登录,返回教练页面。ID:" + memberId);
                        return(LoginPageStatus.CoachPage);
                    }
                    else if ("0".Equals(roleId))//教练重复登陆
                    {
                        logger.Debug("状态:教练已经登陆 会员未登陆。其他教练重复登录,已拦截,ID:" + memberId);
                        return(LoginPageStatus.RepeatLogins);
                    }
                }
                else if ((currentMemberPK != null && currentMemberPK != "") && (currentCoachId == null || currentCoachId == ""))
                {
                    //会员已登陆 教练未登录
                    //判断登陆者角色
                    if ("1".Equals(roleId))//用户
                    {
                        logger.Debug("状态:会员已登陆 教练未登录。其他用户重复登录,已拦截,ID:" + memberId);
                        return(LoginPageStatus.RepeatLogins);
                    }
                    else if ("0".Equals(roleId))//教练登陆 原用户的设置不动 只增加教练ID
                    {
                        //8.更新教练ID
                        MemberEntity member = memberDAO.GetMember(memberId);
                        if (member != null)
                        {
                            CommUtil.UpdateSettingString("coachId", (member.Id).ToString());
                            //更新教练最近登录时间
                            member.Last_login_date = System.DateTime.Now;
                            UpdateLastLoginDate(member);
                        }

                        logger.Debug("状态:会员已登陆 教练未登录。教练登录,ID:" + memberId);
                        //需要返回的页面类型
                        return(LoginPageStatus.CoachPage);
                    }
                }
                else if ((currentMemberPK != null && currentMemberPK != "") && (currentCoachId != null && currentCoachId != ""))
                {
                    //会员已登录 教练已登录
                    logger.Debug("状态:会员已登录 教练已登录。已有登陆会员和教练。重复登录,ID:" + memberId);

                    return(LoginPageStatus.RepeatLogins);
                }
                else
                {
                    return(LoginPageStatus.UnknownID);
                }
            }
            catch (Exception ex)
            {
                logger.Warn("用户登录更新配置类出现异常");
                throw new Exception("用户登录更新配置类出现异常", ex);
            }

            return(LoginPageStatus.UnknownID);
        }
Example #6
0
        /// <summary>
        /// 处理上传训练结果请求
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public UploadResponse UploadRequest(UploadRequest request)
        {
            UploadResponse response = new UploadResponse
            {
                Uid          = request.Uid,
                DeviceType   = request.DeviceType,
                ActivityType = request.ActivityType,
                DataId       = request.DataId
            };

            response.Finished = true;
            response.Success  = true;
            //插入训练设备记录表
            var deviceRecord = new TrainingDeviceRecordEntity
            {
                Id        = KeyGenerator.GetNextKeyValueLong("bdl_training_device_record"),
                Member_id = request.Uid,
                Fk_training_activity_record_id = request.ActivityRecordId,
                Activity_type    = ((int)request.ActivityType).ToString(),
                Device_code      = ((int)request.DeviceType).ToString(),
                Training_mode    = ((int)request.TrainMode).ToString(),
                Consequent_force = request.ForwardForce,
                Reverse_force    = request.ReverseForce,
                Power            = request.Power,
                Count            = request.FinishCount,
                Distance         = request.FinalDistance,
                Energy           = request.Calorie,
                Training_time    = request.TrainTime,
                Avg_heart_rate   = request.HeartRateAvg,
                Max_heart_rate   = request.HeartRateMax,
                Min_heart_rate   = request.HeartRateMin,
                Gmt_create       = DateTime.Now
            };

            using (TransactionScope ts = new TransactionScope()) //使整个代码块成为事务性代码
            {
                //更新顺向力反向力和功率
                personalSettingDAO.UpdateSettingByUid(request.ForwardForce, request.ReverseForce, request.Power, request.Uid, request.DeviceType);
                trainingDeviceRecordDAO.Insert(deviceRecord);
                //查一下是否是该循环最后一个设备,是的话更新课程表数量加一并看一下是否已完成,训练活动记录表标志位已完成 修改传入的fk_activity_id和course_count参数为活动记录表主键activityRecordId  --ByCQZ 4.7
                List <DeviceType> todoList = this.GenToDoDevices(request.Uid, request.ActivityType, request.DefatModeEnable, request.ActivityRecordId);
                if (todoList.Count == 0)//训练完毕一个循环,
                {
                    //更新记录完成状态
                    trainingActivityRecordDAO.UpdateCompleteState(request.ActivityRecordId, true);
                    //训练活动伦次数量加一
                    ActivityEntity activity = activityDAO.Load(request.ActivityId);
                    //测试时出现了活动对象为NULL的异常 于是加此判断 byCQZ
                    if (activity != null)
                    {
                        activity.current_turn_number += 1;
                        if (activity.current_turn_number >= activity.Target_turn_number)//完成这一次活动的话
                        {
                            activity.Is_complete  = true;
                            activity.Gmt_modified = DateTime.Now;
                        }
                        activityDAO.UpdateByPrimaryKey(activity);

                        //判断是否完成了这一次课程,即该课程ID下的所有Activity是否都为完成状态
                        if (activity.Is_complete == true)
                        {
                            int?count = activityDAO.CountByCourseId(request.CourseId, false);
                            if (count == 0)//此课时下的活动都完成了 更新课时计数+1
                            {
                                //课时完成,必须要更新活动的当前次数为0 状态为未完成 ByCQZ 4.8
                                activityDAO.ResetCourseByCourseId(request.CourseId);

                                TrainingCourseEntity courseEntity = trainingCourseDAO.Load(request.CourseId);
                                courseEntity.Current_course_count += 1;
                                if (courseEntity.Current_course_count >= courseEntity.Target_course_count)//课程完成的话,这里用>=防止并发被击穿目标次数
                                {
                                    courseEntity.Current_end_date = DateTime.Now;
                                    courseEntity.Is_complete      = true;
                                }
                                //else//只是完成了一个课时,将Activity的complete置零,current_turn_number置零 updateByCQZ
                                //{
                                //    activityDAO.ResetCourseByCourseId(request.CourseId);
                                //}
                                trainingCourseDAO.UpdateByPrimaryKey(courseEntity);
                            }
                        }
                    }
                }
                else
                {
                    response.Finished = false;
                }
                ts.Complete();
            }
            return(response);
        }