コード例 #1
0
ファイル: PayController.cs プロジェクト: pear171902790/Driver
        public ActionResult Pay([ModelBinder(typeof(JsonBinder<PayRequest>))]PayRequest payRequest)
        {
            try
            {
                var token = Request.Headers["Token"];
                if (!CheckToken(token)) return ApiResponse.NotSignIn;
                var guid = new Guid(token);

                using (var context = new DriverDBContext())
                {
                    var user = context.Users.SingleOrDefault(x => x.Id == guid);
                    if (user == null)
                    {
                        return ApiResponse.UserNotExist;
                    }
                    user.ExpirationTime = UpdateExpirationTime(user.ExpirationTime, payRequest.PostageType);
                    user.Amount += payRequest.Amount + ",";
                    user.PostageTypes += payRequest.PostageType + ",";
                    user.Paychannel += payRequest.Paychannel + ",";
                    context.SaveChanges();
                    return ApiResponse.OK(user.ExpirationTime.ToShortDateString());
                }
            }
            catch (Exception ex)
            {
                var logger = LogManager.GetLogger(typeof(HttpRequest));
                logger.Error("------------------------api/Pay error-------------------------------\r\n" + ex.Message);
                return ApiResponse.UnknownError;
            }
        }
コード例 #2
0
        public ActionResult ChangePassword([ModelBinder(typeof(JsonBinder<ChangePasswordRequest>))]ChangePasswordRequest changePasswordRequest)
        {
            try
            {
                var token = Request.Headers["Token"];
                if (!CheckToken(token)) return ApiResponse.NotSignIn;
                var guid = new Guid(token);
                using (var context = new DriverDBContext())
                {
                    var user = context.Users.SingleOrDefault(x => x.Id == guid);
                    if (user == null)
                    {
                        return ApiResponse.UserNotExist;
                    }

                    if (user.Password != changePasswordRequest.OldPassword)
                    {
                        return ApiResponse.OldPasswordError;
                    }
                    user.Password = changePasswordRequest.NewPassword;
                    context.Users.AddOrUpdate(user);
                    context.SaveChanges();
                    HttpRuntime.Cache.Remove(token);
                    return ApiResponse.OK("你需要重新登录");
                }
            }
            catch (Exception ex)
            {
                var logger = LogManager.GetLogger(typeof(HttpRequest));
                logger.Error("------------------------api/ChangePassword error-------------------------------\r\n" + ex.Message);
                return ApiResponse.UnknownError;
            }
        }
コード例 #3
0
        public ActionResult SignIn([ModelBinder(typeof(JsonBinder<SignInRequest>))]SignInRequest signInRequest)
        {
            try
            {
                using (var context = new DriverDBContext())
                {
                    var user = context.Users.SingleOrDefault(x => x.PhoneNumber == signInRequest.PhoneNumber);
                    if (user == null)
                    {
                        return ApiResponse.UserNotExist;
                    }
                    if (user.Password != signInRequest.Password)
                    {
                        return ApiResponse.PasswordError;
                    }
                    var token = user.Id.ToString();

                    HttpRuntime.Cache.Add(token, token, null, DateTime.Now.AddMonths(1), Cache.NoSlidingExpiration,
                        CacheItemPriority.High, null);

                    Response.Headers.Add("X-Token", token);
                    Response.Headers.Add("Access-Control-Expose-Headers", "X-Token");

                    return ApiResponse.OK(JsonConvert.SerializeObject(user.ToSignInResponse()));
                }
            }
            catch (Exception ex)
            {
                var logger = LogManager.GetLogger(typeof(HttpRequest));
                logger.Error("------------------------api/SignIn error-------------------------------\r\n" + ex.Message);
                return ApiResponse.UnknownError;
            }
        }
コード例 #4
0
        public ActionResult GetAllPositions()
        {
            try
            {
                var token = Request.Headers["Token"];
                if (!CheckToken(token)) return ApiResponse.NotSignIn;
                var guid = new Guid(token);
                using (var context = new DriverDBContext())
                {
                    var user = context.Users.SingleOrDefault(x => x.Id == guid);
                    if (user == null)
                    {
                        return ApiResponse.UserNotExist;
                    }
                    if (user.ExpirationTime < DateTime.Now)
                    {
                        return ApiResponse.Expired;
                    }
                    var begin = DateTime.Now.AddDays(-1);
                    var data =
                        context.Positions.Where(
                            x => x.UploadTime >= begin&&(!string.IsNullOrEmpty(x.Address))).ToList();
                    var positions =
                        data.Select(
                            x =>
                                new GetPositionsResponse.Position()
                                {
                                    Latitude = x.Latitude,
                                    Longitude = x.Longitude,
                                    Address = x.Address,
                                    UploadTime = x.UploadTime
                                }).ToList();

                    var result = new GetPositionsResponse()
                    {
                        Positions = positions
                    };

                    return ApiResponse.OK(JsonConvert.SerializeObject(result));
                }
            }
            catch (Exception ex)
            {
                var logger = LogManager.GetLogger(typeof(HttpRequest));
                logger.Error("------------------------api/AllPositions error-------------------------------\r\n" + ex.Message);
                return ApiResponse.UnknownError;
            }
        }
コード例 #5
0
 public ActionResult SignUp([ModelBinder(typeof(JsonBinder<SignUpRequest>))]SignUpRequest signUpRequest)
 {
     try
     {
         if (signUpRequest == null) return ApiResponse.ParameterError;
         Regex dReg = new Regex("[0-9]{11,11}");
         var isPhoneNumber = dReg.IsMatch(signUpRequest.PhoneNumber.Trim());
         if (!isPhoneNumber)
         {
             return ApiResponse.NotPhoneNumber;
         }
         using (var context = new DriverDBContext())
         {
             var count = context.Users.Count(x => x.PhoneNumber == signUpRequest.PhoneNumber);
             if (count > 0)
             {
                 return ApiResponse.PhoneNumberAlreadySignUp;
             }
             count = context.Users.Count(x => x.CarNumber == signUpRequest.CarNumber);
             if (count > 0)
             {
                 return ApiResponse.CarNumberAlreadySignUp;
             }
             var guid = Guid.NewGuid();
             var now = DateTime.Now;
             var data = new User()
             {
                 Id = guid,
                 RegsiterTime = now,
                 PhoneNumber = signUpRequest.PhoneNumber,
                 CarNumber = signUpRequest.CarNumber,
                 CarType = signUpRequest.CarType,
                 Password = signUpRequest.Password,
                 Valid = true,
                 ExpirationTime = now.AddMonths(1)
             };
             context.Users.Add(data);
             context.SaveChanges();
             return ApiResponse.OK(guid.ToString());
         }
     }
     catch (Exception ex)
     {
         var logger = LogManager.GetLogger(typeof(HttpRequest));
         logger.Error("------------------------api/SignUp error-------------------------------\r\n" + ex.Message);
         return ApiResponse.UnknownError;
     }
 }
コード例 #6
0
        public ActionResult PostVersion()
        {
            using (var ctx = new DriverDBContext())
            {
                using (System.Data.Entity.DbContextTransaction dbTran = ctx.Database.BeginTransaction())
                {
                    try
                    {
                        var httpPostedFile = Request.Files["APK"];
                        var folderPath = Server.MapPath("~/APK");
                        if (!Directory.Exists(folderPath))
                        {
                            Directory.CreateDirectory(folderPath);
                        }
                        var fullPath = Server.MapPath("~/APK/" + httpPostedFile.FileName);
                        if (System.IO.File.Exists(fullPath))
                        {
                            System.IO.File.Delete(fullPath);
                        }

                        var versionCode = Request.Form["VersionCode"];
                        var versionName = Request.Form["VersionName"];
                        var appVersion = new AppVersion() { VersionCode = Convert.ToInt32(versionCode), VersionName = versionName, FileName =  httpPostedFile.FileName };
                        ctx.AppVersions.Add(appVersion);
                        ctx.SaveChanges();
                        httpPostedFile.SaveAs(fullPath);
                        dbTran.Commit();
                    }
                    catch (Exception ex)
                    {
                        var logger = LogManager.GetLogger(typeof(HttpRequest));
                        logger.Error("------------------------api/PostVersion error-------------------------------\r\n" + ex.Message);
                        dbTran.Rollback();
                        return new RedirectResult("~/version?msg=�ϴ�����");
                    }
                }
            }

            return new RedirectResult("~/version?msg=�ϴ��ɹ�");
        }
コード例 #7
0
 public ActionResult GetVersion()
 {
     try
     {
         AppVersion appVersion;
         using (var ctx=new DriverDBContext())
         {
             appVersion = ctx.AppVersions.OrderByDescending(x => x.VersionCode).FirstOrDefault();
         }
         var result = new GetVersionResponse()
         {
             VersionName = appVersion.VersionName,
             VersionCode = appVersion.VersionCode,
             DownloadUrl = Request.Url.Authority+"/apk/" + appVersion.FileName
         };
         return ApiResponse.OK(JsonConvert.SerializeObject(result));
     }
     catch (Exception)
     {
         return ApiResponse.UnknownError;
     }
 }
コード例 #8
0
 public ActionResult Voice()
 {
     List<VoiceViewModel> list;
     using (var context = new DriverDBContext())
     {
         var positions = context.Positions;
         var users = context.Users;
         list = (from p in positions
                 join u in users on p.UploadBy equals u.Id
                 where !string.IsNullOrEmpty(p.Voice)
                 orderby p.UploadTime descending
                 select new VoiceViewModel()
                 {
                     CarNumber = u.CarNumber,
                     Source = p.Voice,
                     UploadTime = p.UploadTime
                 }).ToList();
     }
     return View(list);
 }
コード例 #9
0
 public ActionResult UpdateUserInfo([ModelBinder(typeof(JsonBinder<UpdateUserInfoRequest>))]UpdateUserInfoRequest updateUserInfoRequest)
 {
     try
     {
         var token = Request.Headers["Token"];
         if (!CheckToken(token)) return ApiResponse.NotSignIn;
         var guid = new Guid(token);
         using (var context = new DriverDBContext())
         {
             var user = context.Users.SingleOrDefault(x => x.Id == guid);
             if (user == null)
             {
                 return ApiResponse.UserNotExist;
             }
             user.CarNumber = updateUserInfoRequest.CarNumber;
             user.CarType = updateUserInfoRequest.CarType;
             user.PhoneNumber = updateUserInfoRequest.PhoneNumber;
             context.Users.AddOrUpdate(user);
             context.SaveChanges();
             return ApiResponse.OK();
         }
     }
     catch (Exception ex)
     {
         var logger = LogManager.GetLogger(typeof(HttpRequest));
         logger.Error("------------------------api/UpdateUserInfo error-------------------------------\r\n" + ex.Message);
         return ApiResponse.UnknownError;
     }
 }
コード例 #10
-1
        public ActionResult UploadPosition([ModelBinder(typeof(JsonBinder<UploadPositionRequest>))]UploadPositionRequest uploadPositionRequest)
        {
            try
            {
                var token = Request.Headers["Token"];
                if (!CheckToken(token)) return ApiResponse.NotSignIn;
                var guid = new Guid(token);
                using (var context = new DriverDBContext())
                {
                    var user = context.Users.SingleOrDefault(x => x.Id == guid);
                    if (user == null)
                    {
                        return ApiResponse.UserNotExist;
                    }
                    var postion = new Position() { Id = Guid.NewGuid() };
                    postion.UploadBy = user.Id;
                    postion.Address = HttpUtility.UrlDecode(uploadPositionRequest.Address, Encoding.UTF8);
                    postion.Latitude = uploadPositionRequest.Latitude;
                    postion.Longitude = uploadPositionRequest.Longitude;
                    postion.UploadTime = DateTime.Now;

                    if (!string.IsNullOrEmpty(uploadPositionRequest.Voice))
                    {
                        Task.Run(() =>
                        {
                            try
                            {
                                var bytes = Convert.FromBase64String(uploadPositionRequest.Voice);
                                var voiceName = user.Id + "_" + CurrentTime;
                                var voicePath = Server.MapPath("~/Voice/");
                                var sourceFileFullName = voicePath + voiceName + ".3gp";
                                var finalFileFullName = voicePath + voiceName + ".mp4";
                                if (!Directory.Exists(voicePath))
                                {
                                    Directory.CreateDirectory(voicePath);
                                }
                                using (var fs = new FileStream(sourceFileFullName, FileMode.Create))
                                {
                                    fs.Write(bytes, 0, bytes.Length);
                                    fs.Close();
                                }
                                var ffMpeg = new FFMpegConverter();
                                ffMpeg.ConvertMedia(sourceFileFullName, finalFileFullName, Format.mp4);
                                System.IO.File.Delete(sourceFileFullName);
                                postion.Voice = finalFileFullName;
                            }
                            catch (Exception ex)
                            {
                                var logger = LogManager.GetLogger(typeof (HttpRequest));
                                logger.Error(
                                    "------------------------api/Voice error-------------------------------\r\n" +
                                    ex.Message);
                            }
                        });
                    }

                    context.Positions.Add(postion);
                    context.SaveChanges();
                    return ApiResponse.OK();
                }
            }
            catch (Exception ex)
            {
                var logger = LogManager.GetLogger(typeof(HttpRequest));
                logger.Error("------------------------api/UploadPosition error-------------------------------\r\n" + ex.Message);
                return ApiResponse.UnknownError;
            }
        }