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