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); }
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); }
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); }