예제 #1
0
        public ActionResult ViewDetail()
        {
            //当前登录用户

            ViewBag.Title = "下线详情";;
            MpUser mpUser = _mpUserService.GetById(MpUserID);

            if (mpUser == null || mpUser.IsAuth != 1)
            {
                return(Json(new { message = "您没有权限,请先申请成为业务员!" }));
            }
            MpUser mpUserUnder = new MpUser();

            if (!string.IsNullOrWhiteSpace(RQuery["Id"]))
            {
                mpUserUnder = _userService.GetById(new Guid(RQuery["Id"]));
            }
            //VehicleLicense vehicleLicense = _vehicleLicenseService.GetUnique("from VehicleLicense where Id = '" +id +  "'");

            if (mpUserUnder != null && mpUserUnder.ParentPhone != mpUser.MobilePhone)
            {
                return(Json(new { message = "您没有权限,请先申请成为业务员!" }));
            }
            return(View(mpUserUnder));
        }
예제 #2
0
        public string SendPrivateMessage()
        {
            try
            {
                KfNumber kfNumber = _kfNumberService.GetById(KfNumberId);

                if (kfNumber == null)
                {
                    return(JsonHelper.AnalysisJson <string>("KfNumber对象为null", "error", null));
                }

                KfMeeting kfMeeting = _kfMeetingService.GetById(KfMeetingId);

                if (kfMeeting.IsEnd)
                {
                    return(JsonHelper.AnalysisJson <string>(string.Format("本条消息发送失败[{0}]", "本次会话已经结束"), "error", null));
                }

                string messageText = Request["messageText"];

                if (string.IsNullOrWhiteSpace(messageText))
                {
                    return(JsonHelper.AnalysisJson <string>("消息不能为空", "error", null));
                }

                messageText = messageText.Trim();
                // 防止XSS攻击
                //messageText = Sanitizer.GetSafeHtmlFragment(messageText);
                //messageText = HttpUtility.HtmlEncode(StringHelper.StripHtml(messageText));
                messageText = HttpUtility.HtmlEncode(messageText);
                //把消息存入数据库
                //ICommunicationRepository iCommunicationRepository = new PersistedRepository();
                _kfMeetingMessageService.InsertKfMeetingMessage(KfMeetingId, 1, messageText);
                //把消息发送给微信端客户
                MpUser mpUser = _mpUserService.GetById(ReceiveUserId);

                if (mpUser != null && !string.IsNullOrWhiteSpace(mpUser.OpenID))
                {
                    _mpUserService.SendMessage(mpUser.OpenID, messageText);
                }
                //把消息发给通信线程进行中转(适用于web聊天)
                string message2 = string.Empty;

                if (new CommandManager(null).TryHandleCommand("SendPrivateMessage", new string[] { KfNumberId.ToString(), ReceiveUserId.ToString(), messageText }, ref message2) && string.IsNullOrWhiteSpace(message2))
                {
                    return(JsonHelper.AnalysisJson <string>(string.Empty, "ok", null));
                }

                this.log.Warn(string.Format("消息发送失败,{0}", message2));
                return(JsonHelper.AnalysisJson <string>(string.Format("本条消息发送失败[{0}]", message2), "error", null));
            }
            catch (Exception ex)
            {
                this.log.Warn(ex.Message);
                return(JsonHelper.AnalysisJson <string>(string.Format("本条消息发送失败[{0}]", ex.Message), "error", null));
            }
        }
예제 #3
0
        public ActionResult Ucenter()
        {
            MpUser currUser = MpUserService.GetById(this.MpUserID);

            if (currUser != null)
            {
                ViewBag.Point = currUser.LocationX + "," + currUser.LocationY;
            }
            return(View());
        }
예제 #4
0
        public ActionResult AuthPassProvide(Guid id, int isAuth)
        {
            if (!base.HasPermission("MyUnder", PermissionOperate.visit))
            {
                return(null);
            }
            MpUser user = _userService.GetById(id);

            user.IsAuth = isAuth;
            _userService.Update(user);

            base.AddLog(string.Format("修改认证[{0}]成功", user.Name + " to " + isAuth.ToString()), AdminLoggerModuleEnum.MyUnder);
            return(JsonMessage(true, "修改成功"));
        }
예제 #5
0
        public ActionResult GetBussManDetail(Guid id)
        {
            if (!base.HasPermission("DrivingLicense", PermissionOperate.track))
            {
                return(null);
            }

            DrivingLicense drivingLicense = _drivingLicenseService.GetById(id);

            if (drivingLicense == null || drivingLicense.MpUserId == Guid.Empty)
            {
                return(Json(new { AssignBussinessMan = "", BussinessManPhone = "" }));
            }
            MpUser bussMan = _mpUserService.GetById(drivingLicense.MpUserId);

            if (bussMan == null)
            {
                return(Json(new { AssignBussinessMan = "", BussinessManPhone = "" }));
            }
            return(Json(new { AssignBussinessMan = bussMan.Name, BussinessManPhone = bussMan.MobilePhone }));
        }
예제 #6
0
        /// <summary>
        /// 把数据渲染到Excel
        /// </summary>
        private MemoryStream RenderToExcel(PosApply apply)
        {
            MemoryStream ms       = new MemoryStream();
            IWorkbook    workbook = null;
            ISheet       sheet    = null;
            MpUser       mpUser   = _mpUserService.GetById(apply.MpUserId);
            PosAuth      posAuth  = _posAuthService.GetUnique(p => p.MpUserId == mpUser.Id);

            try
            {
                using (FileStream fileStream = System.IO.File.OpenRead(FileHelper.GetMapPath("/Content/ExcelTemplate/PosTemplate.xls")))   //打开xls文件
                {
                    workbook = new HSSFWorkbook(fileStream);
                    sheet    = workbook.GetSheetAt(0);
                    sheet.GetRow(1).GetCell(1).SetCellValue(posAuth.Name);
                    sheet.GetRow(1).GetCell(3).SetCellValue(posAuth.MobilePhone);
                    sheet.GetRow(1).GetCell(5).SetCellValue(apply.VendorAddress);
                    sheet.GetRow(2).GetCell(1).SetCellValue(base.LoginAdmin.PermissionOrganization.Name);
                    sheet.GetRow(2).GetCell(3).SetCellValue(DateTime.Now.ToString("yyyy-MM-dd"));
                    sheet.GetRow(3).GetCell(1).SetCellValue(apply.AssignSubbranch);
                    sheet.GetRow(3).GetCell(3).SetCellValue(apply.AssignCustomerManager);
                    sheet.GetRow(5).GetCell(0).SetCellValue(string.Format("请于{0}之前反馈处理结果", apply.CreateDate.AddDays(5).ToString("yyyy-MM-dd")));
                    workbook.Write(ms);
                    ms.Flush();
                    ms.Position = 0;
                }

                return(ms);
            }
            finally
            {
                ms.Close();
                workbook = null;
                sheet    = null;
            }
        }
예제 #7
0
        public ActionResult LoanApply()
        {
            //当前登录用户
            MpUser mpUser = _mpUserService.GetById(MpUserID);

            ViewBag.IsAuth = mpUser.IsAuth > 0;
            ViewBag.Name   = mpUser.Name;

            if (mpUser.Sex == 1)
            {
                ViewBag.Sex = "先生";
            }
            else if (mpUser.Sex == 2)
            {
                ViewBag.Sex = "女士";
            }
            else
            {
                ViewBag.Sex = "";
            }

            //用户最近的一笔贷款申请[未撤销]
            Loan loan = _loanService.GetNewestLoanApplyByMpUserId(MpUserID);

            //有未过期的贷款申请
            //有未过期的贷款申请
            if (loan != null && DateTime.Now < loan.CreateDate.AddMonths(1) && loan.LoanCategoryId == 4)
            {
                return(RedirectToAction("GongzhiBaoMessage", new { }));
            }
            else if (loan != null && DateTime.Now < loan.CreateDate.AddMonths(1))
            {
                return(RedirectToAction("LoanMessage", new { }));
            }

            //贷款种类
            ViewBag.ListLoanCategory = EnumDataCache.Instance.GetList(TypeIdentifyingEnum.LoanCategory);
            //贷款期限
            ViewBag.ListLoanDeadline = EnumDataCache.Instance.GetList(TypeIdentifyingEnum.LoanDeadline);
            //还款方式
            ViewBag.ListRepaymentMode = EnumDataCache.Instance.GetList(TypeIdentifyingEnum.RepaymentMode);
            return(View());
        }
예제 #8
0
        public string StartKfMeeting()
        {
            if (!string.IsNullOrWhiteSpace(Token))
            {
                if (Token != "ocean")
                {
                    return(JsonHelper.AnalysisJson <string>("凭证错误", "error", null));
                }
            }
            KfMeeting kfMeeting2 = _kfMeetingService.GetUnique(m => m.MpUserId == SendUserId && !m.IsEnd, "CreateDate", false);

            if (kfMeeting2 != null && kfMeeting2.KfNumberId != Guid.Empty)
            {
                string message2 = string.Empty;

                Log4NetImpl.Write("SendPrivateMessage:" + kfMeeting2.MpUserId.ToString(), kfMeeting2.KfNumberId.ToString());
                new CommandManager(null).TryHandleCommand("SendPrivateMessage", new string[] { kfMeeting2.MpUserId.ToString(), kfMeeting2.KfNumberId.ToString(), "客服" }, ref message2);
                return(JsonHelper.AnalysisJson <string>("已经接入", "error", null));
            }

            string           message      = string.Empty;
            IList <KfNumber> listKfNumber = _kfNumberService.GetALL().Where(m => m.IsOnline == true && m.OnlineStatus == 0).ToList();

            if (listKfNumber.Count == 0)
            {
                //把消息发送给微信端客户
                MpUser mpUser2 = _mpUserService.GetById(SendUserId);

                if (mpUser2 != null && !string.IsNullOrWhiteSpace(mpUser2.OpenID))
                {
                    _mpUserService.SendMessage(mpUser2.OpenID, "当前没有客服在线");
                }

                return(JsonHelper.AnalysisJson <string>("当前没有客服在线", "error", null));
            }

            var kfMeeting = new KfMeeting()
            {
                BeginDate = DateTime.Now,
                IsEnd     = false,
                MpUserId  = SendUserId
            };

            _kfMeetingService.Insert(kfMeeting);

            //向所有在线客服发送接入请求
            //访客名称
            string visitName = string.Empty;
            MpUser mpUser    = _mpUserService.GetById(kfMeeting.MpUserId);

            if (mpUser != null)
            {
                visitName = mpUser.NickName;

                if (!string.IsNullOrWhiteSpace(mpUser.OpenID))
                {
                    _mpUserService.SendMessage(mpUser.OpenID, "等待客服接入,输入【退出】或【tc】退出聊天状态");
                }
            }
            else
            {
                visitName = "访客_" + new Random().Next(100);
            }
            foreach (KfNumber model in listKfNumber)
            {
                new CommandManager(null).TryHandleCommand("Notice", new string[] { SendUserId.ToString(), visitName, model.Id.ToString(), "1", "0", kfMeeting.Id.ToString() }, ref message);
            }

            return(JsonHelper.AnalysisJson <string>(string.Empty, "ok", null));
        }
예제 #9
0
        public override void ExecuteNotice(CallerContext callerContext, string[] args, ref string message)
        {
            int type = int.Parse(args[1]);

            //客服离线
            if (type == 1)
            {
                Guid kfNumberId = new Guid(args[0]);
                //移除缓存中的客服
                MessageManager.Instance.RemoveCacheKF(kfNumberId);
                //离线时清理线程中的客服端(防止第一条离线信息丢失)
                CometThreadPool.DequeueCometWaitRequest(kfNumberId);
                //断开与所有访客的会话
                IKfNumberService         kfNumberService         = EngineContext.Current.Resolve <IKfNumberService>();
                IKfMeetingService        kfMeetingService        = EngineContext.Current.Resolve <IKfMeetingService>();
                IKfMeetingMessageService kfMeetingMessageService = EngineContext.Current.Resolve <IKfMeetingMessageService>();
                IMpUserService           mpUserService           = EngineContext.Current.Resolve <IMpUserService>();
                IList <KfMeeting>        listMeeting             = kfMeetingService.GetALL().Where(m => m.KfNumberId == kfNumberId && m.IsEnd == false).ToList();

                foreach (KfMeeting kfMeeting in listMeeting)
                {
                    kfMeeting.RecordCount = kfMeetingMessageService.GetCount(" where KfMeetingId='" + kfMeeting.Id + "'");
                    kfMeeting.EndDate     = DateTime.Now;
                    kfMeeting.IsEnd       = true;
                    kfMeetingService.Update(kfMeeting);
                    base.SendPrivateMessage(kfNumberId, kfMeeting.MpUserId, "本次会话已被断开,您可以重新发起会话请求");
                    //发送给微信
                    MpUser mpUser = mpUserService.GetById(kfMeeting.MpUserId);

                    if (mpUser != null && !string.IsNullOrWhiteSpace(mpUser.OpenID))
                    {
                        mpUserService.SendMessage(mpUser.OpenID, "本次会话已被断开,您可以重新发起会话请求");
                    }
                    //更新用户状态
                    mpUserService.ChangeMpUserState(kfMeeting.MpUserId, 0);
                }
                //把客服设置成离线
                KfNumber kfNumber = kfNumberService.GetById(kfNumberId);
                kfNumber.IsOnline = false;
                kfNumberService.Update(kfNumber);
            }

            //访客离线
            if (type == 2)
            {
                Guid mpUserId = new Guid(args[0]);
                //离线时清理线程中的访客端(防止第一条离线信息丢失)
                CometThreadPool.DequeueCometWaitRequest(mpUserId);
                //断开与客服的会话
                IKfMeetingService        kfMeetingService        = EngineContext.Current.Resolve <IKfMeetingService>();
                IKfMeetingMessageService kfMeetingMessageService = EngineContext.Current.Resolve <IKfMeetingMessageService>();
                IList <KfMeeting>        listMeeting             = kfMeetingService.GetALL().Where(m => m.MpUserId == mpUserId && m.IsEnd == false).ToList();

                foreach (KfMeeting kfMeeting in listMeeting)
                {
                    kfMeeting.RecordCount = kfMeetingMessageService.GetCount(" where KfMeetingId='" + kfMeeting.Id + "'");
                    kfMeeting.EndDate     = DateTime.Now;
                    kfMeeting.IsEnd       = true;
                    kfMeetingService.Update(kfMeeting);
                    base.SendNotice(mpUserId, "访客_" + new Random().Next(100), kfMeeting.KfNumberId, 3, 0, mpUserId.ToString());
                }
            }
        }
예제 #10
0
        public ActionResult Index()
        {
            if (!string.IsNullOrEmpty(this.OpenID))
            {
                Funongbao fnb = _funongbaoService.GetFunongbaoByOpenid(this.OpenID);
                if (fnb != null)
                {
                    return(new RedirectResult("/funongbao/apply"));
                }
            }

            Funongbao funongbao = new Funongbao();

            if (WebHelper.IsPost())
            {
                ViewBag.AuthStatus = 0;
                TryUpdateModel <Funongbao>(funongbao);
                int useCount = _mobileCodeService.GetMobileCodeCount(this.MpUserID, 1);//当天使用次数
                if (useCount <= 5)
                {
                    MobileCode lastCode = _mobileCodeService.GetMobileCode(this.MpUserID, 1);//是否存在未使用的证码
                    if (lastCode != null)
                    {
                        MobileCode checkCode = _mobileCodeService.GetMobileCode(funongbao.MobilePhone, WebHelper.GetString("Code"), this.MpUserID, 1);//检查验证码
                        if (checkCode != null)
                        {
                            TimeSpan ts = DateTime.Now.Subtract(checkCode.CreateDate).Duration();
                            if (ts.Minutes > 10)
                            {
                                checkCode.Time  += 1;
                                checkCode.Status = 1;
                                _mobileCodeService.Update(lastCode);
                                ViewBag.CodeError = "验证码已经失效,请重新获取!";
                            }
                            else
                            {
                                Funongbao authFnb    = null;
                                int       authStatus = _funongbaoService.IdentAuth2(funongbao, out authFnb);
                                if (authStatus == -1)
                                {
                                    ViewBag.CodeError = "对不起,该客户已经被绑定了,您无法再次绑定!";
                                }
                                else
                                {
                                    if (authStatus == 1)
                                    {
                                        //更新用户认证并更新cookie
                                        MpUser user = _mpUserservice.GetById(this.MpUserID);
                                        user.Name        = funongbao.Name;
                                        user.PassportNO  = funongbao.PassportNO;
                                        user.MobilePhone = funongbao.MobilePhone;
                                        user.IsAuth      = 1;
                                        //更新当前验证码失败
                                        checkCode.Status = 1;//已用
                                        //更新福农保信息
                                        authFnb.IsAuth          = 1;
                                        authFnb.IsSignAgreement = WebHelper.GetInt("IsSignAgreement", 1);
                                        authFnb.MpUserId        = this.MpUserID;
                                        authFnb.OpenId          = this.OpenID;
                                        try
                                        {
                                            Log4NetImpl.Write("测试事务写入");
                                            _funongbaoService.BeginTransaction();
                                            _mpUserservice.Update(user);
                                            _mobileCodeService.Update(checkCode);
                                            _funongbaoService.Update(authFnb);
                                            _funongbaoService.Commit();
                                            WriteMpUserCookie(user);
                                            Log4NetImpl.Write("测试获取cookie");
                                            var a = MpUserArr;
                                            if (!string.IsNullOrEmpty(WebHelper.GetString("refUrl")))
                                            {
                                                return(Redirect(WebHelper.GetString("refUrl")));
                                            }
                                            else
                                            {
                                                return(RedirectToAction("index", "funongbao"));
                                            }
                                        }
                                        catch (Exception ex)
                                        {
                                            _funongbaoService.Rollback();
                                            Log4NetImpl.Write(ex.ToString());
                                            throw new OceanException("对不起,系统异常,身份认证失败!", ex);
                                        }
                                    }
                                    else
                                    {
                                        ViewBag.AuthStatus = authStatus;
                                    }
                                }
                            }
                        }
                        else
                        {
                            lastCode.Time += 1;
                            _mobileCodeService.Update(lastCode);
                            ViewBag.CodeError = "对不起,验证码有误,请检查!";
                        }
                    }
                    else
                    {
                        ViewBag.CodeError = "对不起,您还未点击发送验证码!";
                    }
                }
                else
                {
                    ViewBag.CodeError = "对不起,您今天最多只能发起5次验证码";
                }
            }
            return(View(funongbao));
        }