Exemple #1
0
        /// <summary>
        /// 用户管理
        /// </summary>
        /// <returns></returns>
        public ActionResult AllUser(string UserID = "")
        {
            //生成视图模型
            List <AllUserViewModel> allUsers = new List <AllUserViewModel>();

            //获取所有用户
            using (var db = new AspNetUserDataContext())
            {
                var users = db.AspNetUsers.Where(u => u.UserName != "XgHao");
                foreach (var user in users)
                {
                    allUsers.Add(new AllUserViewModel
                    {
                        isChoose = user.Id == UserID ? true : false,
                        userInfo = new BasicUserInfo
                        {
                            UserID       = user.Id,
                            UserName     = user.UserName,
                            RealName     = user.RealName,
                            BirthDay     = user.BirthDay.ToString("yyyy-MM-dd"),
                            RegisterTime = user.RegisterTime,
                            Gender       = user.Gender
                        }
                    });
                }
            }

            return(View(allUsers.AsEnumerable()));
        }
Exemple #2
0
        /// <summary>
        /// 物品管理
        /// </summary>
        /// <returns></returns>
        public ActionResult AllTreasure()
        {
            //生成视图模型
            List <AllTreasureViewModel> treasureholders = new List <AllTreasureViewModel>();

            foreach (var trea in repository.Treasures)
            {
                using (var db = new AspNetUserDataContext())
                {
                    var user = db.AspNetUsers.Where(u => u.Id == trea.HolderID).FirstOrDefault();
                    if (user != null)
                    {
                        treasureholders.Add(new AllTreasureViewModel
                        {
                            TreasureInfo = trea,
                            holderInfo   = new BasicUserInfo
                            {
                                UserID   = user.Id,
                                UserName = user.UserName,
                                RealName = user.RealName
                            }
                        });
                    }
                }
            }

            return(View(treasureholders.AsEnumerable()));
        }
Exemple #3
0
        public ActionResult Block(string UserID)
        {
            //获取用户对象
            using (var db = new AspNetUserDataContext())
            {
                var user = db.AspNetUsers.Where(u => u.Id == UserID).FirstOrDefault();
                if (user != null)
                {
                    //更改用户信息
                    user.PasswordHash = UserID + DateTime.Now;
                    user.HeadPortrait = @"\images\usr_avatar.png";
                    user.UserName     = "******";
                    user.RealName     = "账户已注销";
                    db.SubmitChanges();
                    TempData["message"] = string.Format("用户“{0}({1})”已被注销", user.RealName, user.UserName);
                }
                else
                {
                    TempData["error"] = string.Format("用户ID:{0} 不存在", UserID);
                }
            }

            //重定向到AllUser
            return(RedirectToAction("AllUser"));
        }
Exemple #4
0
        /// <summary>
        /// 检查当前手机号码是否已存在
        /// </summary>
        /// <returns></returns>
        public JsonResult isExistPhoNum()
        {
            string PhoNum = Request["PhoNum"];

            using (var db = new AspNetUserDataContext())
            {
                var appUser = db.AspNetUsers.Where(a => a.PhoneNumber == PhoNum).FirstOrDefault();
                //该邮箱已存在(即appUser不为空)返回YES,否则返回NO
                string result = appUser != null ? "YES" : "NO";
                return(Json(result, JsonRequestBehavior.AllowGet));
            }
        }
Exemple #5
0
        /// <summary>
        /// 检查当前电子邮件是否已存在
        /// </summary>
        /// <returns></returns>
        public JsonResult isExistEmail()
        {
            string email = Request["Email"];

            using (var db = new AspNetUserDataContext())
            {
                var appUser = db.AspNetUsers.Where(a => a.Email == email).FirstOrDefault();
                //该邮箱已存在(即appUser不为空)返回YES,否则返回NO
                string result = appUser != null ? "YES" : "NO";
                return(Json(result, JsonRequestBehavior.AllowGet));
            }
        }
Exemple #6
0
        /// <summary>
        /// 搜索
        /// </summary>
        public ActionResult Search(string KeyWord)
        {
            if (!string.IsNullOrEmpty(KeyWord))
            {
                //首先把用户全部过滤出来
                using (var db = new AspNetUserDataContext())
                {
                    var    users    = db.AspNetUsers.Where(u => u.UserName.Contains(KeyWord)).ToList();
                    string usersIDs = string.Empty;
                    foreach (var user in users)
                    {
                        usersIDs += "|" + user.Id;
                    }

                    //获取物品集合
                    var treasures = repository.Treasures.Where(t => (t.DetailContent.Contains(KeyWord) || t.TreasureName.Contains(KeyWord) || t.UploadTime.ToString("yyyy/MM/dd").Contains(KeyWord) || t.TreasureType.Contains(KeyWord) || usersIDs.Contains(t.HolderID))).ToList();
                    List <TreasureAndHolderInfo> model = new List <TreasureAndHolderInfo>();
                    foreach (var trea in treasures)
                    {
                        //是否被收藏
                        bool IsFavorite = false;
                        using (var db2 = new FavoriteDataContext())
                        {
                            var log = db2.Favorite.Where(f => (f.TreasureID == trea.TreasureUID.ToString() && f.UserID == CurrentUser.Id)).FirstOrDefault();
                            if (log != null)
                            {
                                IsFavorite = true;
                            }
                        }
                        var holder = UserManager.FindById(trea.HolderID);
                        if (holder != null)
                        {
                            model.Add(new TreasureAndHolderInfo
                            {
                                Holder     = holder,
                                IsFavorite = IsFavorite,
                                Treasure   = trea
                            });
                        }
                    }
                    return(View(model.AsEnumerable()));
                }
            }
            return(View(new LinkedList <TreasureAndHolderInfo>().AsEnumerable()));
        }
Exemple #7
0
        public ActionResult Index()
        {
            //新建视图
            IndexViewModel model = new IndexViewModel();

            var Alltreasure = repository.Treasures.Where(t => t.DLogUID == null).ToList().AsEnumerable();

            #region 随便看看
            //判断数量,决定要显示的物品数量
            int cnt = Alltreasure.Count() < 50 ? 4 : Alltreasure.Count() / 10;
            cnt = cnt > Alltreasure.Count() ? Alltreasure.Count() : cnt;
            List <Treasure> treasureRandom = new List <Treasure>();
            for (int i = 0; i < cnt; i++)
            {
                var r   = new Random(Guid.NewGuid().GetHashCode());
                int res = r.Next(0, Alltreasure.Count());
                treasureRandom.Add(Alltreasure.ElementAt(res));
            }
            List <TreasureAndHolderInfo> treasuresRandomList = new List <TreasureAndHolderInfo>();
            //去掉重复元素,然后遍历
            foreach (var trea in treasureRandom.Distinct())
            {
                //获取物品所属人对象
                var holder = UserManager.FindById(trea.HolderID);

                //是否被收藏
                bool IsFavorite = false;
                using (var db = new FavoriteDataContext())
                {
                    var log = db.Favorite.Where(f => (f.TreasureID == trea.TreasureUID.ToString() && f.UserID == CurrentUser.Id)).FirstOrDefault();
                    if (log != null)
                    {
                        IsFavorite = true;
                    }
                }
                if (holder != null)
                {
                    var detail = trea.DetailPic.Split('|');
                    trea.DetailPic = detail.Last();
                    treasuresRandomList.Add(new TreasureAndHolderInfo
                    {
                        Holder     = holder,
                        Treasure   = trea,
                        IsFavorite = IsFavorite
                    });
                }
            }
            model.RandomTrea = treasuresRandomList.AsEnumerable();
            #endregion

            #region 每日推荐
            using (var db = new LogDataContext())
            {
                //获取当前用户的浏览记录
                var log = db.LogBrowse.Where(b => b.BrowserID == CurrentUser.Id).Select(b => b.TreasureID).ToList();
                //获取用户浏览过的物品类型集合
                var treas = repository.Treasures.Where(t => log.Contains(t.TreasureUID.ToString())).ToList();
                var types = treas.Select(t => t.TreasureType);
                //获取这些这些类型的浏览量
                List <TreasureTypeCnt> treasuretypecnt = new List <TreasureTypeCnt>();
                int AllCnt = 0;
                foreach (var type in types)
                {
                    int             Typecnt         = treas.Where(t => t.TreasureType == type).Count();
                    TreasureTypeCnt treasureTypeCnt = new TreasureTypeCnt {
                    };
                    treasureTypeCnt.type = type;
                    treasureTypeCnt.cnt  = Typecnt;
                    treasuretypecnt.Add(treasureTypeCnt);
                    AllCnt += Typecnt;
                }
                //排序
                treasuretypecnt.OrderBy(t => t.cnt);

                //根据排序后的类型,进行推荐相同类型的物品
                List <Treasure> trea = new List <Treasure>();
                foreach (var ty in treasuretypecnt)
                {
                    int TreaCnt = ty.cnt * 5 / AllCnt;
                    var tr      = repository.Treasures.Where(t => t.TreasureType == ty.type).Take(TreaCnt);
                    trea.AddRange(tr);
                }

                //去掉重复元素,然后遍历
                List <TreasureAndHolderInfo> RecommandTrea = new List <TreasureAndHolderInfo>();

                foreach (var Rtrea in trea.Distinct())
                {
                    //获取物品所属人对象
                    var holder = UserManager.FindById(Rtrea.HolderID);

                    //是否被收藏
                    bool IsFavorite = false;
                    using (var db2 = new FavoriteDataContext())
                    {
                        var log2 = db2.Favorite.Where(f => (f.TreasureID == Rtrea.TreasureUID.ToString() && f.UserID == CurrentUser.Id)).FirstOrDefault();
                        if (log2 != null)
                        {
                            IsFavorite = true;
                        }
                    }
                    if (holder != null)
                    {
                        var detail = Rtrea.DetailPic.Split('|');
                        Rtrea.DetailPic = detail.Last();
                        RecommandTrea.Add(new TreasureAndHolderInfo
                        {
                            Holder     = holder,
                            Treasure   = Rtrea,
                            IsFavorite = IsFavorite
                        });
                    }
                }
                model.RecommandTrea = RecommandTrea.AsEnumerable();
            }
            #endregion

            #region 最新物品
            int cnt2 = Alltreasure.Count() > 6 ? 6 : Alltreasure.Count();
            Alltreasure.OrderBy(t => t.UploadTime);
            List <Treasure> treasuresNew = Alltreasure.Take(cnt2).ToList();
            List <TreasureAndHolderInfo> treasuresNewList = new List <TreasureAndHolderInfo>();
            foreach (var trea in treasuresNew)
            {
                //获取物品所属人
                var holder = UserManager.FindById(trea.HolderID);

                //是否被收藏
                bool IsFavorite = false;
                using (var db = new FavoriteDataContext())
                {
                    //获取七天内的收藏记录
                    var FavoriteTrea = db.Favorite.Where(f => (SqlMethods.DateDiffDay(f.FavoriteTime, DateTime.Now) <= 7)).Select(f => f.TreasureID);
                    var Treas        = repository.Treasures.Where(t => FavoriteTrea.Contains(t.TreasureUID.ToString()));
                    //生成视图模型
                    List <TreasureFavoriteCnt> treafavos = new List <TreasureFavoriteCnt>();
                    foreach (var favo in FavoriteTrea.Distinct())
                    {
                        var favorecnt = Treas.Where(t => t.TreasureUID == Guid.Parse(favo)).Count();
                        treafavos.Add(new TreasureFavoriteCnt
                        {
                            cnt     = favorecnt,
                            treauid = favo
                        });
                    }
                    //排序
                    treafavos.OrderBy(t => t.cnt);

                    var log = db.Favorite.Where(f => (f.TreasureID == trea.TreasureUID.ToString() && f.UserID == CurrentUser.Id)).FirstOrDefault();
                    if (log != null)
                    {
                        IsFavorite = true;
                    }
                }
                if (holder != null)
                {
                    treasuresNewList.Add(new TreasureAndHolderInfo
                    {
                        Holder     = holder,
                        Treasure   = trea,
                        IsFavorite = IsFavorite
                    });
                }
            }
            model.NewestTrea = treasuresNewList.AsEnumerable();
            #endregion

            #region 最近热门
            var treaHot     = repository.Treasures.Where(t => t.DLogUID == null).OrderBy(t => t.BrowseNum);
            int cnt3        = treaHot.Count() > 6 ? 6 : treaHot.Count();
            var treaHotList = treaHot.Take(cnt3);
            List <TreasureAndHolderInfo> treasuresHotList = new List <TreasureAndHolderInfo>();
            foreach (var trea in treaHotList)
            {
                var  holder     = UserManager.FindById(trea.HolderID);
                bool isFavorite = false;
                using (var db = new FavoriteDataContext())
                {
                    var log = db.Favorite.Where(f => (f.TreasureID == trea.TreasureUID.ToString() && f.UserID == CurrentUser.Id)).FirstOrDefault();
                    if (log != null)
                    {
                        isFavorite = true;
                    }
                }
                if (holder != null)
                {
                    treasuresHotList.Add(new TreasureAndHolderInfo
                    {
                        Holder     = holder,
                        Treasure   = trea,
                        IsFavorite = isFavorite
                    });
                }
            }
            model.HotTrea = treasuresHotList.AsEnumerable();
            #endregion

            #region 数据
            model.TreasureCnt = repository.Treasures.Count();
            using (var db = new LogDealDataContext())
            {
                var deallog = db.LogDeal.Where(l => (l.DealStatus == "交易中" || l.DealStatus == "待确认"));
                model.DealingCnt = deallog.Count();
            }
            using (var db = new EvaluationDataContext())
            {
                var Evaluation = db.Evaluation;
                model.EvaluationCnt = Evaluation.Count();
            }
            using (var db = new AspNetUserDataContext())
            {
                var user = db.AspNetUsers;
                model.UserCnt = user.Count();
            }
            #endregion

            return(View(model));
        }
Exemple #8
0
        public async Task <ActionResult> Create(CreateModel model, HttpPostedFileBase idcardImg = null)
        {
            //验证模型无误
            if (ModelState.IsValid)
            {
                //检查有无上传图片
                if (idcardImg != null)
                {
                    //文件MimeType
                    model.IDCardImageMimeType = idcardImg.ContentType;

                    //文件数据
                    model.IDCardImageData = new byte[idcardImg.ContentLength];

                    //数据以二进制的形势写入到流中
                    idcardImg.InputStream.Read(model.IDCardImageData, 0, idcardImg.ContentLength);

                    //转换base64格式
                    string base64 = Convert.ToBase64String(model.IDCardImageData);

                    //使用API获取身份证信息
                    Dictionary <string, string> info = new Identity().IdentityORC(base64);

                    //识别成功
                    if (info["Status"] == "SUCCESS")
                    {
                        //识别成功后,检查改身份证是否已经使用
                        using (var db = new AspNetUserDataContext())
                        {
                            var idcard = db.AspNetUsers.Where(x => x.IDCardNO.ToString() == info["num"]).ToList();

                            //该身份证已被注册
                            if (idcard.Count > 0)
                            {
                                model.OCRresult = "该身份证已被注册";
                                return(View("ReUpLoadIdCard", model));
                            }
                        }

                        DateTime birth;
                        //转换时间
                        if (DateTime.TryParseExact(info["birth"], "yyyyMMdd", null, DateTimeStyles.AllowWhiteSpaces | DateTimeStyles.AdjustToUniversal, out birth))
                        {
                            model.BirthDay = birth;
                            model.Age      = DateTime.Now.Year - birth.Year;
                        }
                        model.NativePlace = info["address"];
                        model.RealName    = info["name"];
                        model.IDCardNO    = info["num"];
                        model.Gender      = info["sex"];

                        //根据模型生成对应的用户实例
                        AppUser user = new AppUser
                        {
                            UserName             = model.Name,                                 //用户名
                            Email                = model.Email,                                //电子邮箱
                            Age                  = model.Age,                                  //年龄
                            BirthDay             = model.BirthDay,                             //出生年月
                            RegisterTime         = DateTime.Now,                               //注册时间
                            Gender               = model.Gender,                               //性别
                            HeadPortrait         = @"\images\usr_avatar.png",                  //默认头像
                            IDCardImageData      = model.IDCardImageData,                      //身份证照
                            IDCardImageMimeType  = model.IDCardImageMimeType,                  //身份证照格式
                            IDCardNO             = model.IDCardNO,                             //身份证号码
                            NativePlace          = model.NativePlace,                          //家庭住址
                            RealName             = model.RealName,                             //真实姓名
                            PhoneNumber          = model.PhoneNumber,                          //手机号码
                            EmailConfirmed       = true,                                       //电子邮箱验证是否通过
                            PhoneNumberConfirmed = true,                                       //手机号码验证是否通过
                            Signature            = model.Gender == "男" ? "他什么也没留下" : "她什么也没留下" //初始化个性签名
                        };


                        //创建用户,并返回结果
                        IdentityResult result = await UserManager.CreateAsync(user, model.Password);

                        //成功
                        if (result.Succeeded)
                        {
                            model.OCRresult = "注册成功";
                            //页面重定向到注册页面
                            return(View("ReUpLoadIdCard", model));
                        }
                        //失败
                        else
                        {
                            //添加错误模型
                            AddErrorsFromResult(result);
                            //返回Error页面
                            return(View());
                        }
                    }
                    //识别失败,跳转页面重新上传身份证
                    else if (info["Status"] == "ERROR")
                    {
                        model.OCRresult = "识别失败";
                        return(View("ReUpLoadIdCard", model));
                    }
                }
                //无图片
                else
                {
                    model.OCRresult = "图片为空,请下方重新上传";
                    return(View("ReUpLoadIdCard", model));
                }
            }
            return(View(model));
        }