public ActionResult PostSubscribe(ht_news_subscribe model) { int curUserid = BLLAuthentication.GetAuthenticationUser().id; model.add_userid = curUserid; string msg; if (BLLNewsSubscribe.AddSubscribe(model, out msg)) { return(JsonResult(APIErrCode.Success, "订阅成功", model)); } else { return(JsonResult(APIErrCode.OperateFail, msg)); } }
/// <summary> /// 添加订阅线路 /// </summary> /// <param name="model"></param> /// <param name="msg"></param> /// <returns></returns> public static bool AddSubscribe(ht_news_subscribe model, out string msg) { msg = ""; using (Entities db = new Entities()) { try { if (db.ht_news_subscribe.FirstOrDefault(p => p.start_province == model.start_province && p.start_city == model.start_city && p.start_district == model.start_district && p.stop_province == model.stop_province && p.stop_city == model.stop_city && p.stop_district == model.stop_district) != null) { msg = "该线路已订阅"; return(false); } if (db.ht_news_subscribe.Where(p => p.add_userid == model.add_userid).Count() >= 10) { msg = "最多能订阅10条线路"; return(false); } model.add_time = DateTime.Now; model.rcount = 0; Expression <Func <ht_news, bool> > ncountWhere = s => s.status == 1 && s.cateid == 1 && (model.start_province + model.start_city + model.start_district) .StartsWith(s.start_province + s.start_city + s.start_district) && (model.stop_province + model.stop_city + model.stop_district) .StartsWith(s.stop_province + s.stop_city + s.stop_district); model.ncount = db.ht_news .Where(ncountWhere.Compile()).Select(p => p.id).Count(); db.ht_news_subscribe.Add(model); if (db.SaveChanges() > 0) { //线程插入线路关系 new Thread(p => { using (Entities dbt = new Entities()) { List <ht_news_subscribe_relation> listRelation = dbt.ht_news .Where(ncountWhere.Compile()) .Select(x => new ht_news_subscribe_relation { news_id = x.id, subscribe_id = model.id, is_look = 1 }).ToList(); if (listRelation.Count > 0) { dbt.ht_news_subscribe_relation.AddRange(listRelation); dbt.SaveChanges(); } } }).Start(); return(true); } return(false); } catch (Exception ex) { msg = ex.Message; } return(false); } }