Ejemplo n.º 1
0
        public async Task <bool> UpdateUserFeature(Guid userId, int featureId, int newDetailId)
        {
            var userFeature = await GetUserFeature(userId, featureId);

            if (userFeature == null)
            {
                userFeature = new UserFeature()
                {
                    UserId          = userId,
                    FeatureId       = featureId,
                    FeatureDetailId = newDetailId
                };
                _context.UserFeatures.Add(userFeature);
            }
            else
            {
                userFeature.FeatureDetailId = newDetailId;
                _context.UserFeatures.Update(userFeature);
            }
            try
            {
                await Save();

                return(true);
            }
            catch (Exception)
            {
                return(false);
            }
        }
Ejemplo n.º 2
0
        public ActionResult ItemFeature(int ItemID, UserFeature itemFeatureObj)
        {
            if (ModelState.IsValid)
            {
                using (db)
                {
                    UserAccount listedByUsr = db.UserAccounts.Where(u => u.UserName.Equals(User.Identity.Name.ToString())).FirstOrDefault();

                    bool obj = db.UserFeatures.Any(x => x.ItemID == ItemID);

                    if (obj == false)
                    {
                        itemFeatureObj.ItemID = ItemID;
                        itemFeatureObj.UserID = listedByUsr.UserID;
                        db.UserFeatures.Add(itemFeatureObj);
                    }
                    else
                    {
                        UserFeature a = db.UserFeatures.Where(x => x.ItemID == ItemID).FirstOrDefault();
                        db.UserFeatures.Remove(a);
                    }

                    db.SaveChanges();
                    ModelState.Clear();
                    return(RedirectToAction("ItemDetails", "Item", new { ItemID = ItemID }));
                }
            }
            return(View(itemFeatureObj));
        }
Ejemplo n.º 3
0
        public async Task <bool> CreateUserFeature(Guid userId, int featureId, int detailId)
        {
            var userFeature = await GetUserFeature(userId, detailId);

            if (userFeature != null)
            {
                _context.UserFeatures.Remove(userFeature);
            }
            var newUserFeature = new UserFeature()
            {
                FeatureId       = featureId,
                FeatureDetailId = detailId,
                UserId          = userId
            };

            _context.UserFeatures.Add(newUserFeature);
            try
            {
                await Save();

                return(true);
            }
            catch (Exception)
            {
                return(false);
            }
        }
Ejemplo n.º 4
0
        public async Task <IActionResult> Create([Bind("Id,UserId,FeatureId")] UserFeature userFeature)
        {
            if (ModelState.IsValid)
            {
                _context.Add(userFeature);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            ViewData["FeatureId"] = new SelectList(_context.Features, "Id", "Title", userFeature.FeatureId);
            return(View(userFeature));
        }
Ejemplo n.º 5
0
        private string GetUserDataJson(SqlConnection Conn, string Key)
        {
            string     JsonString = "";
            UserEntity u          = new UserEntity();

            string strSql = "select * from VIEW_Org_User where UserNumber = @UserNumber";

            SqlParameter[] sqlParams = new SqlParameter[] {
                new SqlParameter("UserNumber", Key)
            };
            DataTable dtUser = TF.DB.DBUtility.SqlHelper.ExecuteDataset(Conn, CommandType.Text, strSql, sqlParams).Tables[0];

            for (int i = 0; i < dtUser.Rows.Count; i++)
            {
                User tempUser = new User();
                tempUser.UserGUID     = TF.DB.DBConvert.ToString(dtUser.Rows[i]["UserGUID"]);
                tempUser.UserNumber   = TF.DB.DBConvert.ToString(dtUser.Rows[i]["UserNumber"]);
                tempUser.UserName     = TF.DB.DBConvert.ToString(dtUser.Rows[i]["UserName"]);
                tempUser.NameJP       = TF.DB.DBConvert.ToString(dtUser.Rows[i]["NameJP"]);
                tempUser.TelNumber    = TF.DB.DBConvert.ToString(dtUser.Rows[i]["TelNumber"]);
                tempUser.PostID       = TF.DB.DBConvert.ToString(dtUser.Rows[i]["PostID"]);
                tempUser.PostName     = TF.DB.DBConvert.ToString(dtUser.Rows[i]["PostName"]);
                tempUser.DeptID       = TF.DB.DBConvert.ToString(dtUser.Rows[i]["DeptID"]);
                tempUser.DeptName     = TF.DB.DBConvert.ToString(dtUser.Rows[i]["DeptName"]);
                tempUser.DeptFullName = TF.DB.DBConvert.ToString(dtUser.Rows[i]["DeptFullName"]);
                u.UserInfo.Add(tempUser);
            }
            ;
            strSql    = "select * from TAB_Org_User_Feature where UserNumber = @UserNumber order by FeatureType,FeatureIndex";
            sqlParams = new SqlParameter[] {
                new SqlParameter("UserNumber", Key)
            };
            DataTable dtFeature = TF.DB.DBUtility.SqlHelper.ExecuteDataset(Conn, CommandType.Text, strSql, sqlParams).Tables[0];

            for (int i = 0; i < dtFeature.Rows.Count; i++)
            {
                UserFeature tempFeature = new UserFeature();
                tempFeature.UserNumber = TF.DB.DBConvert.ToString(dtFeature.Rows[i]["UserNumber"]);
                if (!DBNull.Value.Equals(dtFeature.Rows[i]["FeatureContent"]))
                {
                    tempFeature.FeatureContent = Convert.ToBase64String((byte[])dtFeature.Rows[i]["FeatureContent"]);
                }
                tempFeature.FeatureIndex = TF.DB.DBConvert.ToInt32(dtFeature.Rows[i]["FeatureIndex"]);
                tempFeature.FeatureType  = TF.DB.DBConvert.ToInt32(dtFeature.Rows[i]["FeatureType"]);
                u.UserFeatures.Add(tempFeature);
            }

            JsonString = Newtonsoft.Json.JsonConvert.SerializeObject(u);
            return(JsonString);
        }
        private async Task GenData(AppUser user)
        {
            var random   = new Random();
            var features = await _context.Features.Include(x => x.FeatureDetails).ToListAsync();

            var userFeatures   = new List <UserFeature>();
            var searchFeatures = new List <SearchFeature>();

            foreach (var item in features)
            {
                var featureDetailId = item.FeatureDetails.ToList()[random.Next(item.FeatureDetails.Count)].Id;

                var uf = new UserFeature()
                {
                    FeatureDetailId = featureDetailId,
                    UserId          = user.Id,
                    FeatureId       = item.Id
                };
                userFeatures.Add(uf);

                if (item.IsSearchFeature)
                {
                    featureDetailId = item.FeatureDetails.ToList()[random.Next(item.FeatureDetails.Count)].Id;
                    var searchfeature = new SearchFeature()
                    {
                        FeatureDetailId = featureDetailId,
                        UserId          = user.Id,
                        FeatureId       = item.Id
                    };
                    searchFeatures.Add(searchfeature);
                }
            }
            _context.UserFeatures.AddRange(userFeatures);
            _context.SearchFeatures.AddRange(searchFeatures);
            await _context.SaveChangesAsync();
        }
Ejemplo n.º 7
0
        public void Run()
        {
            using (AliRecommend2DataEntities db = new AliRecommend2DataEntities())
            {
                ((IObjectContextAdapter)db).ObjectContext.CommandTimeout = 600;
                long startTime = DateTime.Now.Ticks;
                var  data      = db.T_UserAction.Where(d => d.actiondate >= StartDate && d.actiondate < PredictDate).ToList();
                Console.WriteLine("数据库数据读取完毕,正在进行处理中...");
                FeatureCollection features = new FeatureCollection();

                features.UpdateOnlineItemSet(db);
                Console.WriteLine("正在读取正例数据...");
                features.UpdatePositiveSet(db, PredictDate);

                var categories = data.GroupBy(d => d.category);
                Console.WriteLine("正在添加类别特征...");
                foreach (var categoryData in categories)
                {
                    CategoryFeature categoryFeature = new CategoryFeature(categoryData.Key, PredictDate);
                    categoryFeature.Update(categoryData);
                    features.AddCategoryFeature(categoryFeature);
                }


                var items = data.GroupBy(d => d.itemid);
                Console.WriteLine("正在添加商品特征...");
                //按商品分组,itemData是每个商品的所有记录
                foreach (var itemData in items)
                {
                    ItemFeature itemFeature = new ItemFeature(itemData.Key, PredictDate);
                    itemFeature.Update(itemData);
                    itemFeature.IsOnline = features.CheckIsOnline(itemFeature.Id);
                    //向ItemFeature绑定CategoryFeature
                    itemFeature.CategoryFeature = features.CategoryFeatureDict[itemFeature.CategoryId];
                    features.AddItemFeature(itemFeature);
                }

                var users = data.GroupBy(d => d.userid);
                Console.WriteLine("正在添加用户相关特征...");
                foreach (var userData in users)
                {
                    UserFeature userFeature = new UserFeature(userData.Key, PredictDate);
                    userFeature.Update(userData);
                    features.AddUserFeature(userFeature);

                    var userCategories = userData.GroupBy(d => d.category);
                    foreach (var userCategoryData in userCategories)
                    {
                        UserCategoryFeature userCategoryFeature = new UserCategoryFeature(userCategoryData.Key, PredictDate);
                        userCategoryFeature.Update(userCategoryData);
                        userFeature.UserCategorieDict.Add(userCategoryFeature.CategoryId, userCategoryFeature);
                        features.AddUserCategoryFeature(userCategoryFeature);
                    }

                    var userItems = userData.GroupBy(d => d.itemid);
                    foreach (var userItemData in userItems)
                    {
                        UserItemFeature userItemFeature = new UserItemFeature(userFeature, userItemData.Key);
                        userItemFeature.Update(userItemData);
                        //是否是正例
                        userItemFeature.Label = features.CheckIsPositive(userItemFeature.UserId, userItemFeature.ItemId);
                        //向UserItemFeature 绑定ItemFeature
                        userItemFeature.ItemFeature = features.ItemFeatureDict[userItemFeature.ItemId];
                        //向UserItemFeature绑定UserCategoryFeature
                        userItemFeature.UserCategoryFeature = userItemFeature.UserFeature.UserCategorieDict[userItemFeature.ItemFeature.CategoryId];
                        features.AddUserItemFeature(userItemFeature);
                    }
                }
                if (Global.Normalized)
                {
                    features.Normalize();
                }
                string dirname = Global.GetDirectoryName();
                if (Directory.Exists(dirname) == false)
                {
                    Directory.CreateDirectory(dirname);
                }
                string filename = dirname + Global.GetFileName(PredictDate);
                features.Write(filename);

                Console.WriteLine("运行完毕,耗时{0}s", (DateTime.Now.Ticks - startTime) / 10000000);
                Console.WriteLine("{0} 输出完毕。", filename);
            }
            //Console.ReadKey();
        }
Ejemplo n.º 8
0
 public PermitAttribute(UserFeature feature, Permissions permissions)
 {
     this.feature = feature;
     this.permissions = permissions;
 }