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("/", "-"); }
/// <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(); } }
/// <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); } }
/// <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); }
/// <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); }