예제 #1
0
        public JsonResult CreateOrder(string data)
        {
            var result = new ReturnMessage(false)
            {
                Message = "创建订单失败!"
            };

            try
            {
                lock (objLock)
                {
                    var order = JsonConvert.DeserializeObject <StudyOrderEntity>(data);
                    if (order == null)
                    {
                        result.Message = "无效对象";
                        return(Json(result));
                    }
                    if (order.DetailList == null || order.DetailList.Count == 0)
                    {
                        result.Message = "请选择预约时间";
                        return(Json(result));
                    }
                    var member = MemberBLL.Instance.GetEntity(LoginUser.UserId);
                    if (member == null)
                    {
                        result.Message = "会员对象无效";
                        return(Json(result));
                    }

                    //验证时间段是否有预约
                    var hasflag = false;
                    foreach (var item in order.DetailList)
                    {
                        var freetime = StudyFreeTimeBLL.Instance.GetEntity(item.StudyFreeTimeId);
                        if (freetime != null)
                        {
                            if (freetime.FreeStatus != (int)RCHL.Model.Enums.FreeTimeStatus.空闲)
                            {
                                hasflag = true;
                                break;
                            }
                        }
                    }
                    if (hasflag)
                    {
                        result.Message = "您下手晚了,请重新选择预约时间";
                        return(Json(result));
                    }


                    //判断课时是否还有
                    if (order.DetailList != null)
                    {
                        int hour1 = 0;
                        int hour2 = 0;
                        foreach (var item in order.DetailList)
                        {
                            if (item.TimeType == (int)RCHL.Model.Enums.WorkTimeType.白班)
                            {
                                hour1++;
                            }
                            else if (item.TimeType == (int)RCHL.Model.Enums.WorkTimeType.夜班)
                            {
                                hour2++;
                            }
                        }
                        if ((member.StudyHour1 ?? 0) < hour1)
                        {
                            result.Message = "白班课时不足,预约此时段失败";
                            return(Json(result));
                        }
                        if ((member.StudyHour2 ?? 0) < hour2)
                        {
                            result.Message = "夜班课时不足,预约此时段失败";
                            return(Json(result));
                        }
                    }
                    //判断是否存在有未评价的订单
                    var commitcount = StudyOrderBLL.Instance.GetList(new StudyOrderEntity()
                    {
                        MemberId = LoginUser.UserId,
                        Status   = (int)RCHL.Model.Enums.StudySubscribeStatus.预约完成
                    }).Count();
                    if (commitcount > 0)
                    {
                        result.Message = "请先对上次学车订单进行评价后再次预约学习";
                        return(Json(result));
                    }
                    order.StudyOrderId = Util.NewUpperGuid();
                    order.StudyOrderNo = StudyOrderBLL.Instance.GetOrderNo();
                    order.CreateTime   = DateTime.Now;
                    order.Status       = (int)Model.Enums.StudySubscribeStatus.预约成功;
                    order.MemberId     = LoginUser.UserId;
                    order.MemberName   = LoginUser.NickName;
                    order.MemberMobile = LoginUser.Mobile;
                    string _ServiceTime = "";
                    if (StudyOrderBLL.Instance.Add(order))
                    {
                        if (order.DetailList != null)
                        {
                            foreach (var item in order.DetailList)
                            {
                                StudyOrderDetailEntity detail = new StudyOrderDetailEntity();
                                detail.StudyOrderDetailId = Util.NewUpperGuid();
                                detail.TimeType           = item.TimeType;
                                detail.ServiceTime        = item.ServiceTime;
                                detail.ServiceDate        = item.ServiceDate;
                                detail.StudyOrderId       = order.StudyOrderId;
                                detail.StudyFreeTimeId    = item.StudyFreeTimeId;
                                if (StudyOrderDetailBLL.Instance.Add(detail))
                                {
                                    _ServiceTime += detail.ServiceTime + ",";
                                    //修改预约时间状态
                                    StudyFreeTimeEntity freetime = new StudyFreeTimeEntity();
                                    freetime.StudyFreeTimeId = detail.StudyFreeTimeId;
                                    freetime.FreeStatus      = (int)RCHL.Model.Enums.FreeTimeStatus.已预约;
                                    StudyFreeTimeBLL.Instance.Update(freetime);
                                    //修改对应课时
                                    if (detail.TimeType == (int)RCHL.Model.Enums.WorkTimeType.白班)
                                    {
                                        member.MemberId   = LoginUser.UserId;
                                        member.StudyHour1 = member.StudyHour1 - 1;
                                        MemberBLL.Instance.Update(member);
                                    }
                                    else if (detail.TimeType == (int)RCHL.Model.Enums.WorkTimeType.夜班)
                                    {
                                        member.MemberId   = LoginUser.UserId;
                                        member.StudyHour2 = member.StudyHour2 - 1;
                                        MemberBLL.Instance.Update(member);
                                    }
                                }
                            }
                        }
                    }
                    result.IsSuccess = true;
                    result.Message   = "创建成功";
                    //写消息
                    string servicetime = string.Format("{0} {1}", DateTime.Parse(order.ServiceDate.ToString()).ToString("yyyy-MM-dd"), _ServiceTime.TrimEnd(','));
                    var    teacher     = TeacherBLL.Instance.GetEntity(order.TeacherId);
                    string txt         = string.Format("预约学车,预约人:{0},联系电话:{1},预约机构:{2}", teacher.Name, teacher.Mobile, order.SchoolName);
                    SendSysMessageBLL.SendMessage(RCHL.Model.Enums.MessageAlterType.学车预约提示, RCHL.Model.Enums.NoticeType.预约提醒, LoginUser.UserId, order.MemberName, servicetime, txt, order.StudyOrderNo);

                    txt = string.Format("预约学车,预约人:{0},联系电话:{1}", order.MemberName, order.MemberMobile);
                    SendSysMessageBLL.SendMessageTeacher(RCHL.Model.Enums.NoticeType.预约提醒, teacher.TeacherId, servicetime, txt, order.StudyOrderNo);


                    //送积分
                    GivePointBLL.GivePoint(RCHL.Model.Enums.OperationType.预约学车完成, LoginUser.UserId, 0, order.StudyOrderNo);
                }
            }
            catch (Exception ex)
            {
                ex.Data["Method"] = "StudyController>>CreateOrder";
                new ExceptionHelper().LogException(ex);
            }
            return(Json(result));
        }
예제 #2
0
        public ActionResult SaveForm(string keyValue, string issend, string json)
        {
            try
            {
                if (keyValue != "")
                {
                }
                else
                {
                    var order = Serializer.DeserializeJson <StudyOrderEntity>(json, true);
                    if (order == null)
                    {
                        return(Error("无效对象"));
                    }
                    if (order.DetailList == null || order.DetailList.Count == 0)
                    {
                        return(Error("请选择预约时间"));
                    }
                    var member = MemberBLL.Instance.GetEntity(order.MemberId);
                    if (member == null)
                    {
                        return(Error("会员对象无效"));
                    }

                    //判断课时是否还有
                    if (order.DetailList != null)
                    {
                        int hour1 = 0;
                        int hour2 = 0;
                        foreach (var item in order.DetailList)
                        {
                            if (item.TimeType == (int)QX360.Model.Enums.WorkTimeType.白班)
                            {
                                hour1++;
                            }
                            else if (item.TimeType == (int)QX360.Model.Enums.WorkTimeType.夜班)
                            {
                                hour2++;
                            }
                        }
                        if ((member.StudyHour1 ?? 0) < hour1)
                        {
                            return(Error("白班课时不足,预约此时段失败"));
                        }
                        if ((member.StudyHour2 ?? 0) < hour2)
                        {
                            return(Error("夜班课时不足,预约此时段失败"));
                        }
                    }

                    order.StudyOrderId = Util.Util.NewUpperGuid();
                    order.StudyOrderNo = StudyOrderBLL.Instance.GetOrderNo();
                    order.Status       = (int)QX360.Model.Enums.StudySubscribeStatus.预约成功;
                    order.MemberId     = order.MemberId;
                    order.MemberName   = order.MemberName;
                    order.MemberMobile = order.MemberMobile;
                    order.CreateId     = LoginUser.UserId;
                    order.CreateTime   = DateTime.Now;
                    string _ServiceTime = "";
                    if (StudyOrderBLL.Instance.Add(order))
                    {
                        if (order.DetailList != null)
                        {
                            foreach (var item in order.DetailList)
                            {
                                StudyOrderDetailEntity detail = new StudyOrderDetailEntity();
                                detail.StudyOrderDetailId = Util.Util.NewUpperGuid();
                                detail.TimeType           = item.TimeType;
                                detail.ServiceTime        = item.ServiceTime;
                                detail.ServiceDate        = item.ServiceDate;
                                detail.StudyOrderId       = order.StudyOrderId;
                                detail.StudyFreeTimeId    = item.StudyFreeTimeId == "-1" ? Util.Util.NewUpperGuid() : item.StudyFreeTimeId;
                                if (item.SubritTimeType == (int)QX360.Model.Enums.SubritFreeTimeStatus.自定义)
                                {
                                    detail.SubritTimeType = (int)QX360.Model.Enums.SubritFreeTimeStatus.自定义;
                                }
                                if (StudyOrderDetailBLL.Instance.Add(detail))
                                {
                                    _ServiceTime += detail.ServiceTime + ",";
                                    //修改预约时间状态
                                    StudyFreeTimeEntity freetime = new StudyFreeTimeEntity();
                                    freetime.StudyFreeTimeId = detail.StudyFreeTimeId;
                                    freetime.FreeStatus      = (int)QX360.Model.Enums.FreeTimeStatus.已预约;
                                    StudyFreeTimeBLL.Instance.Update(freetime);
                                    //修改对应课时
                                    if (detail.TimeType == (int)QX360.Model.Enums.WorkTimeType.白班)
                                    {
                                        member.MemberId   = order.MemberId;
                                        member.StudyHour1 = member.StudyHour1 - 1;
                                        MemberBLL.Instance.Update(member);
                                    }
                                    else if (detail.TimeType == (int)QX360.Model.Enums.WorkTimeType.夜班)
                                    {
                                        member.MemberId   = order.MemberId;
                                        member.StudyHour2 = member.StudyHour2 - 1;
                                        MemberBLL.Instance.Update(member);
                                    }

                                    //插入自定义时间段
                                    if (item.SubritTimeType == (int)QX360.Model.Enums.SubritFreeTimeStatus.自定义)
                                    {
                                        StudyCustomFreeTimeBLL.Instance.Add(new StudyCustomFreeTimeEntity()
                                        {
                                            StudyCustomFreeTimeId = detail.StudyFreeTimeId,
                                            StudyFreeDateId       = item.FreedateId,
                                            TimeSection           = item.ServiceTime,
                                            TimeType = item.TimeType,
                                        });
                                    }
                                }
                            }
                        }
                    }

                    if (issend == "1")
                    {
                        //发送短信提醒
                        string servicetime = string.Format("{0} {1}", DateTime.Parse(order.ServiceDate.ToString()).ToString("yyyy-MM-dd"), _ServiceTime.TrimEnd(','));
                        SendSmsMessageBLL.SendSubricNotice(order.MemberId, order.MemberMobile, order.MemberName, servicetime, "预约学车成功", order.StudyOrderNo);
                    }
                }

                return(Success("创建成功"));
            }
            catch (Exception ex)
            {
                ex.Data["Method"] = "StudyOrderController>>SaveForm";
                new ExceptionHelper().LogException(ex);
                return(Error("保存失败"));
            }
        }