/// <summary> /// 所有配置清空 /// </summary> public void Logout() { //1.更新会员卡号ID CommUtil.UpdateSettingString("memberId", ""); //3.更新当前登陆用户的训练计划id CommUtil.UpdateSettingString("trainingPlanId", ""); //4.更新当前登陆用户的训练课程id CommUtil.UpdateSettingString("trainingCourseId", ""); //5.更新当前登陆用户的当前课程记录id current_course_count CommUtil.UpdateSettingString("currentCourseCount", ""); //5.更新当前登陆用户的目标课程记录id CommUtil.UpdateSettingString("targetCourseCount", ""); //6.更新当前登陆会员的主键 CommUtil.UpdateSettingString("memberPrimarykey", ""); //8.更新教练ID CommUtil.UpdateSettingString("coachId", ""); }
/// <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()); }
//登录操作 private void Button_Click(object sender, RoutedEventArgs e) { /*if ("true" == ConfigurationManager.AppSettings["Debug"]) * { * //Debug模式直接进系统 方便开发 * MainPage mainpage1 = new MainPage(); * this.Content = mainpage1; * return; * }*/ //获取用户名 String name = this.User_Name.Text; //获取密码 String password = this.User_Password.Password; UserConstant.USERNAME = name; UserConstant.PASSWORD = password; ///登录逻辑 AuthService authService = new AuthService(); string loginResult = authService.Login(name, password); Console.WriteLine("loginResult:" + loginResult); if (string.IsNullOrEmpty(name) || string.IsNullOrEmpty(password)) { loginResult = LanguageUtils.ConvertLanguage("用户名或者密码不能为空", "User name or password cannot be empty"); } //U盾监测,无误后登录 if (loginResult.Equals("check_U")) { //admin不能记住密码 很危险 //验证U盾后跳转 //暂时不验证U盾 MainPage mainpage = new MainPage(); this.Content = mainpage; if (timerNotice != null) { timerNotice.Stop(); } } else if (loginResult.Equals("success")) { //普通用户,点击记住密码,登陆成功后,登录用户与密码加入缓存 bool?checkRemind = isRemind.IsChecked; bool?checkRemindName = isRemindName.IsChecked; if (checkRemind == true) { //加密后存储在config中 name = ConfigUtil.Encrypt(name); password = ConfigUtil.Encrypt(password); CommUtil.UpdateSettingString("isRemind", "true"); CommUtil.UpdateSettingString("isRemindName", "true"); CommUtil.UpdateSettingString("userName", name); CommUtil.UpdateSettingString("password", password); } else if (checkRemindName == true) { name = ConfigUtil.Encrypt(name); CommUtil.UpdateSettingString("isRemind", "false"); CommUtil.UpdateSettingString("isRemindName", "true"); CommUtil.UpdateSettingString("userName", name); } else { //都不选中就不记住,清空缓存的密码 CommUtil.UpdateSettingString("isRemind", "false"); CommUtil.UpdateSettingString("isRemindName", "false"); CommUtil.UpdateSettingString("userName", ""); CommUtil.UpdateSettingString("password", ""); } //成功登陆,跳转 MainPage mainpage = new MainPage(); this.Content = mainpage; if (timerNotice != null) { timerNotice.Stop(); } } else { //问题登录 在登录提示框内显示信息 bubble.IsOpen = true; //Error_Info.Content = loginResult; Error_Info.Content = LanguageUtils.ConvertLanguage(loginResult, "login exist question!"); } }
/// <summary> /// 自动创建模板训练计划 2019.3.27 /// </summary> /// <param name="memberId"></param> public void AutoSaveNewPlan(MemberEntity memberEntity, PlanTemplate planTemplate) { //插入至上传表 UploadManagementDAO uploadManagementDao = new UploadManagementDAO(); //使整个代码块成为事务性代码 using (TransactionScope ts = new TransactionScope()) { TrainingPlanEntity trainingPlan = new TrainingPlanEntity(); //会员卡号ID string memberId = memberEntity.Member_id; //1.删除旧的训练计划 trainingPlanDAO.DeletePlanByMemberId(memberId); //2.完成旧的训练课程 trainingCourseDAO.UpdateCompleteState(memberId, true); List <long> listId1 = new List <long>(); listId1 = trainingCourseDAO.ListIdByMemeberId(memberId); foreach (var id in listId1) { //数据上传 uploadManagementDao.Insert(new UploadManagement(id, "bdl_training_course", 1)); } //3.完成旧的训练活动 activityDAO.UpdateCompleteState(memberId, true); List <long> listId = new List <long>(); //通过memberId获取主键id listId = activityDAO.ListIdByMemeberId(memberId); foreach (var id in listId) { //数据上传 uploadManagementDao.Insert(new UploadManagement(id, "bdl_activity", 1)); } //4.新增训练计划 trainingPlan.Id = KeyGenerator.GetNextKeyValueLong("bdl_training_plan"); //外键用户主键id trainingPlan.Fk_member_id = memberEntity.Id; // 设置会员卡号 trainingPlan.Member_id = memberEntity.Member_id; // 开始时间 trainingPlan.Start_date = System.DateTime.Now; // 设置状态为未删除 trainingPlan.Is_deleted = false; // 创建时间 trainingPlan.Gmt_create = System.DateTime.Now; //训练计划标题 switch (planTemplate) { case PlanTemplate.StrengthCycle: trainingPlan.Title = "力量循环"; break; case PlanTemplate.EnduranceCycle: trainingPlan.Title = "力量耐力循环"; break; case PlanTemplate.StrengthEnduranceCycle: trainingPlan.Title = "力量循环与力量耐力循环"; break; default: break; } trainingPlan.Training_target = "塑形"; // 插入新训练计划 trainingPlanDAO.Insert(trainingPlan); uploadManagementDao.Insert(new UploadManagement(trainingPlan.Id, "bdl_training_plan", 0)); //5.更新App.config中训练计划id CommUtil.UpdateSettingString("trainingPlanId", (trainingPlan.Id).ToString()); //自动创建模板课程 trainingCourseService.AutoSaveNewTemplateCourse(trainingPlan, planTemplate); ts.Complete(); } }
/// <summary> /// 添加新的训练计划,需要先删除旧的训练计划 /// </summary> /// <param name="trainingPlan"></param> /// <returns></returns> public void SaveNewTrainingPlan(TrainingPlanEntity trainingPlan) { //使整个代码块成为事务性代码 using (TransactionScope ts = new TransactionScope()) { UploadManagementDAO uploadManagementDao = new UploadManagementDAO(); //会员卡号ID string memberId = CommUtil.GetSettingString("memberId"); //1.删除旧的训练计划 trainingPlanDAO.DeletePlanByMemberId(memberId); //2.完成旧的训练课程 trainingCourseDAO.UpdateCompleteState(memberId, true); List <long> listId1 = new List <long>(); listId1 = trainingCourseDAO.ListIdByMemeberId(memberId); foreach (var id in listId1) { //数据上传 uploadManagementDao.Insert(new UploadManagement(id, "bdl_training_course", 1)); } //3.完成旧的训练活动 activityDAO.UpdateCompleteState(memberId, true); List <long> listId = new List <long>(); //通过memberId获取主键id listId = activityDAO.ListIdByMemeberId(memberId); foreach (var id in listId) { //数据上传 uploadManagementDao.Insert(new UploadManagement(id, "bdl_activity", 1)); } //4.新增训练计划 trainingPlan.Id = KeyGenerator.GetNextKeyValueLong("bdl_training_plan"); //判断登陆用户,是教练自己锻炼。还是教练为用户进行设置。决定传哪个主键设置 string currentMemberPK = CommUtil.GetSettingString("memberPrimarykey"); string currentCoachId = CommUtil.GetSettingString("coachId"); if ((currentMemberPK == null || currentMemberPK == "") && (currentCoachId != null && currentCoachId != "")) { //无用户登陆。教练单独登陆时 // 从app.config中取id,转成int赋值 trainingPlan.Fk_member_id = ParseIntegerUtil.ParseInt(currentCoachId); } else { //只要用户登录,就是为用户进行设置 // 从app.config中取id,转成int赋值 trainingPlan.Fk_member_id = ParseIntegerUtil.ParseInt(currentMemberPK); } // 设置会员卡号 trainingPlan.Member_id = CommUtil.GetSettingString("memberId"); // 设置状态为未删除 trainingPlan.Is_deleted = false; // 创建时间 trainingPlan.Gmt_create = System.DateTime.Now; // 插入新训练计划 trainingPlanDAO.Insert(trainingPlan); //插入至上传表 uploadManagementDao.Insert(new UploadManagement(trainingPlan.Id, "bdl_training_plan", 0)); //5.更新App.config中训练计划id CommUtil.UpdateSettingString("trainingPlanId", (trainingPlan.Id).ToString()); //插入默认训练课程 课程开始时间 = 训练计划开始时间 trainingCourseService.SaveTrainingCourse(trainingPlan.Start_date); ts.Complete(); } }
/// <summary> /// 新增保存会员信息 /// </summary> /// <param name="memberEntity"></param> /// <returns></returns> public long InsertMember(MemberEntity memberEntity) { //使整个代码块成为事务性代码 using (TransactionScope ts = new TransactionScope()) { //计算最大心率 = 220 - 年龄 //memberEntity.Max_heart_rate = 220 - memberEntity.Age; //计算最宜心率 = (最大心率 * 76.5%)然后四舍五入为整数 memberEntity.Suitable_heart_rate = (int?)Math.Round(memberEntity.Max_heart_rate.Value * 0.765); //设置主键id memberEntity.Id = KeyGenerator.GetNextKeyValueLong("bdl_member"); //设置创建时间 memberEntity.Gmt_create = System.DateTime.Now; //默认不开启减脂模式 memberEntity.Is_open_fat_reduction = false; //设置会员ID StringBuilder stringBuilder = new StringBuilder(); stringBuilder.Append(memberEntity.Member_familyName); stringBuilder.Append(memberEntity.Member_firstName); //用户名3个字符以内 写入时UTF-8编码每个汉字占3个字节 if (stringBuilder.ToString().Length > 3) { string subMemberId = stringBuilder.ToString().Substring(0, 3); stringBuilder.Clear(); stringBuilder.Append(subMemberId); } //手机号不为空则拼接手机号后四位 if (memberEntity.Mobile_phone != null && memberEntity.Mobile_phone != "") { stringBuilder.Append(memberEntity.Mobile_phone.Substring(memberEntity.Mobile_phone.Length - 4)); } else { logger.Warn("拼接用户id时,用户手机号为空。用户名:" + memberEntity.Member_familyName + memberEntity.Member_firstName); } Console.WriteLine("用户名+手机号码后4位:" + stringBuilder.ToString()); //添加CRC校验 //string fullName = memberEntity.Member_familyName + memberEntity.Member_firstName; //string phone = memberEntity.Mobile_phone.Substring(memberEntity.Mobile_phone.Length - 2); //byte[] dataCRC = new byte[12]; //Encoding.GetEncoding("GBK").GetBytes(fullName, 0, fullName.Length, dataCRC, 0); //Encoding.GetEncoding("ASCII").GetBytes(phone, 0, phone.Length, dataCRC, 10); //string lowStrCRC = SerialPortUtil.CRC16(dataCRC)[0].ToString(); //string highStrCRC = SerialPortUtil.CRC16(dataCRC)[1].ToString(); //string fullCRC = lowStrCRC + highStrCRC; //stringBuilder.Append(fullCRC); //设置用户id memberEntity.Member_id = stringBuilder.ToString(); if (memberEntity.Role_id == 1)//只有添加的角色是用户才设置教练外键 { //当前登陆的教练Id memberEntity.Fk_coach_id = ParseIntegerUtil.ParseInt(CommUtil.GetSettingString("coachId")); } //使用基类插入新会员 long resultCode = memberDAO.Insert(memberEntity); //更新APP中会员设置,让新增的该会员登陆 强制更新配置类,将当前登陆用户踢出 //1.更新会员卡号ID CommUtil.UpdateSettingString("memberId", memberEntity.Member_id); //3.更新当前登陆用户的训练计划id CommUtil.UpdateSettingString("trainingPlanId", ""); //4.更新当前登陆用户的训练课程id CommUtil.UpdateSettingString("trainingCourseId", ""); //5.更新当前登陆用户的当前课程记录id current_course_count CommUtil.UpdateSettingString("currentCourseCount", ""); //5.更新当前登陆用户的目标课程记录id CommUtil.UpdateSettingString("targetCourseCount", ""); //6.更新当前登陆会员的主键 CommUtil.UpdateSettingString("memberPrimarykey", memberEntity.Id.ToString()); ts.Complete(); //使用基类插入新会员 return(resultCode); } }
/// <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); }