Exemple #1
0
        public int SaveUserTaste(TasteHistory history)
        {
            int           ret    = 0;
            SQLiteHelper  sh     = new SQLiteHelper();
            StringBuilder strSql = new StringBuilder();

            strSql.Append("insert into TasteHistory(");
            strSql.Append("Id,OpenId,UserName,LikeFlavor,DisLikeFlavor,Dieteticrestraint,CreateTime)");
            strSql.Append(" values (");
            strSql.Append("@Id,@OpenId,@UserName,@LikeFlavor,@DisLikeFlavor,@Dieteticrestraint,@CreateTime)");
            SQLiteParameter[] parameters =
            {
                sh.MakeSQLiteParameter("@Id",                DbType.String,   history.Id),
                sh.MakeSQLiteParameter("@OpenId",            DbType.String,   history.OpenId),
                sh.MakeSQLiteParameter("@UserName",          DbType.String,   history.UserName),
                sh.MakeSQLiteParameter("@LikeFlavor",        DbType.String,   history.LikeFlavor),
                sh.MakeSQLiteParameter("@DisLikeFlavor",     DbType.String,   history.DisLikeFlavor),
                sh.MakeSQLiteParameter("@Dieteticrestraint", DbType.String,   history.Dieteticrestraint),
                sh.MakeSQLiteParameter("@CreateTime",        DbType.DateTime, history.CreateTime)
            };

            if (sh.ExecuteSql(strSql.ToString(), parameters) >= 1)
            {
                ret = 1;
            }

            return(ret);
        }
Exemple #2
0
        public bool GetFactorScore(string openId)
        {
            List <DishScore> scorelist = QueryScoreByUser(openId);

            if (scorelist.Count != 0)
            {
                DeleteScore(openId);
            }
            TasteHistory     taste     = QueryTasteHistoryByUser(openId);
            List <Dishes>    dishes    = QueryDishes();
            List <DishScore> scoreList = new List <DishScore>();

            foreach (var item in dishes)
            {
                double x = 0;
                double y = 0;
                double z = 0;
                if (taste.LikeFlavor.Contains(item.FirstTaste) || taste.LikeFlavor.Contains(item.SecondTaste))
                {
                    x = 0.5F;
                }
                if (taste.DisLikeFlavor.Contains(item.FirstTaste) || taste.DisLikeFlavor.Contains(item.SecondTaste))
                {
                    x = -0.5F;
                }
                if (taste.Dieteticrestraint.Split(',').Where(r => item.MainIngredients.Contains(r)).Count() > 0)
                {
                    y = -1F;
                }
                if (taste.Dieteticrestraint.Split(',').Where(r => item.Accessory.Contains(r)).Count() > 0)
                {
                    z = -0.25F;
                }
                DishScore score = new DishScore()
                {
                    Id          = Guid.NewGuid().ToString(),
                    DishesId    = item.Id,
                    OpenId      = taste.OpenId,
                    DishName    = item.DishName,
                    FactorScore = x + y + z,
                    Time        = 10,
                    Score       = (x + y + z) * Math.Log10(10),
                    CreateTime  = DateTime.UtcNow.AddHours(8),
                    UpdateTime  = DateTime.UtcNow.AddHours(8)
                };
                scoreList.Add(score);
            }
            InsertScore(scoreList);
            return(true);
        }
Exemple #3
0
        public TasteHistory QueryTasteHistoryByUser(string openId)
        {
            SQLiteHelper  sh     = new SQLiteHelper();
            StringBuilder strSql = new StringBuilder();

            strSql.Append("select * FROM TasteHistory");
            strSql.Append(" where OpenId=@OpenId ");
            SQLiteParameter[] parameters =
            {
                sh.MakeSQLiteParameter("@OpenId", DbType.String, openId)
            };
            TasteHistory taste = sh.Query(strSql.ToString(), parameters).Tables[0].AsEnumerable().Select(r => new TasteHistory
            {
                Id                = r[0].ToString(),
                OpenId            = r[1].ToString(),
                UserName          = r[2].ToString(),
                LikeFlavor        = r[3].ToString(),
                DisLikeFlavor     = r[4].ToString(),
                Dieteticrestraint = r[5].ToString(),
                //CreateTime =DateTime.Parse(r[6].ToString())
            }).ToList <TasteHistory>().OrderByDescending(x => x.CreateTime).FirstOrDefault();

            return(taste);
        }