使用SignalR实时显示淘宝买家信誉及中差评信息

注,本文使用开发环境:Visual Studio 2012.2,平台:ASP.NET MVC 4,数据库:本文未说明

一、啰嗦故事

接触SignalR已经很长一段时间了,不过也没用它写过什么像样的Demo。今天就与大家分享一个比较简单Demo,本文的重点在于如何使用SignalR。只是以一个实际的例子来说明一下。

 

Story:故事是的起因是这样地,淘宝卖家是个很可怜的职业,四处寻亲,但是,往往都会因为买家初来炸道,或者出于恶意,或者本身已经养成了中差评习惯而给卖家以中差评。

本身中差评对淘宝店的影响其实也不算小,所以如果能帮卖家避免,最好可以避免。

那么如何避免呢?

首先,卖家是可以自行查看的,但是对于订单量多的卖家来说,是有些辛苦吧,最好可以有个功能。一但有那些给过不良评价的买家来下单时,就立刻提示出来,叮咚~向着这个目标踏进吧。

这是我们的终极效果图,绿色的是马塞克,不要求无码图。

红色背景代表有过差评

黄色背景代表,有过中评或是新号

提示的消息会在买家下单后自动出现在列表的头部(当然是自动的,不需要刷新,要不本节讲SignalR就没意义了是不)

嗯,下面我们来看看如何实现这个主动通知吧

二、走起服务器端

先建立一个ASP.NET MVC项目,这里默认是ASP.NET MVC4 Razor引擎

我们先来建立一个Model,用于数据库存储也好,序列化后传递数据到界面也好,都离不开它。

   1:      [Table("buyers")]
   2:      public class DbBuyer
   3:      {
   4:          /// <summary>
   5:          /// 自增Id
   6:          /// </summary>
   7:          [Column("id"), Key]
   8:          public int Id { get; set; }
   9:          /// <summary>
  10:          /// 买家昵称
  11:          /// </summary>
  12:          [Column("nick")]
  13:          public string Nick { get; set; }
  14:          /// <summary>
  15:          /// uid
  16:          /// </summary>
  17:          [Column("buyer_uid")]
  18:          public string BuyerUid { get; set; }
  19:          /// <summary>
  20:          /// 买家信誉
  21:          /// </summary>
  22:          [Column("buyer_rate")]
  23:          public int RateCount { get; set; }
  24:          /// <summary>
  25:          /// 给出过的中评
  26:          /// </summary>
  27:          [Column("send_mid")]
  28:          public int SendMid { get; set; }
  29:          /// <summary>
  30:          /// 给出过的差评
  31:          /// </summary>
  32:          [Column("send_bad")]
  33:          public int SendBad { get; set; }
  34:          /// <summary>
  35:          /// 半年内评价
  36:          /// </summary>
  37:          [Column("half_year_count")]
  38:          public int HalfYearCount { get; set; }
  39:          /// <summary>
  40:          /// 上个月评价
  41:          /// </summary>
  42:          [Column("last_month_count")]
  43:          public int LastMonthCount { get; set; }
  44:          [Column("add_time")]
  45:          public DateTime AddTime { get; set; }
  46:      }

下面进入SignalR正题

引用一个NuGet的包:Microsoft ASP.NET SignalR

然后我们就能看到引入了一些DLL和JS。

我们先建立一个Hub,就叫BuyerHub,如果你没有模板。。。那就自己建个CS类吧(此模板应该内置于2012.2版本中下载见www.visualstudio.com

 

   1:    [HubName("buyer")]
   2:      public class BuyerHub:Hub
   3:      {
   4:          private const int TakeCount = 20;
   5:   
   6:          public List<DbBuyer> GetNeastBuyerInfo()
   7:          {
   8:              using (var db = new Entities())//Ef code first
   9:              {
  10:                  //读取最新的买家信息...这个数据从哪来...嗯..无所谓了,自己编吧,或者自己写程序去获取吧
  11:                  var list= db.DbBuyers.OrderByDescending(c => c.AddTime).Take(TakeCount)
  12:                      .OrderBy(c=>c.Id).ToList();
  13:                  return list;
  14:              }
  15:          }
  16:      }

三、View页面

下面我们建立一个页面Index(ASP.NET MVC,Controller我取名叫做AlertController,Razor View)

使用默认Layout(会引用jQuery)

这里我们编辑Index.cshtml内容如下

   1:  @model dynamic
   2:   
   3:  <div id="shower">    
   4:  </div>
   5:   
   6:  @section scripts{
   7:      <script src="../bundles/jquerycolor"></script>
   8:      <script src="../Scripts/jquery.signalR-1.0.1.js"></script>
   9:      <script src="../signalr/hubs"></script>
  10:      <script type="text/javascript" src="@Url.Content("~/Scripts/SignalR/BuyerHub.js")"></script>
  11:  }

其中~/Scripts/SignalR/BuyerHub.js是我们自己建的js,我们下面来看看这个js我们怎么编写才能让这个SignalR运行起来

   1:   
   2:  $(function () {
   3:      var hub = $.connection.buyer;
   4:      function init() {
   5:          return hub.server.getNeastBuyerInfo().done(function (buyers) {
   6:              //从BuyerHub获取buyer数组,就是这里的参数
   7:              //遍历显示,如果现在列表中不包含,则插入到第一条
   8:              var div = $("#shower");
   9:              $.each(buyers, function (index, item) {
  10:                  if ($("div[data-nick='" + item.Nick + "']", div).length) return;//列表中已经存在则漂过
  11:                  var x = $("<div>").attr("data-nick", item.Nick).html(
  12:                      "<span style='display:inline-block;width:200px'>" + item.Nick + "</span>   <span class='label label-success'>信誉:" +
  13:                          item.RateCount +
  14:                          " </span><span class='label label-warning'>中评:" + item.SendMid +
  15:                          " </span><span class='label label-error'>差评:" + item.SendBad +
  16:                          " </span><span class='label label-important'>上月:" + item.LastMonthCount +
  17:                          " </span><span class='label label-info'>半年:" + item.HalfYearCount+"</span>");
  18:                  if (item.SendMid > 0 || item.RateCount==0) x.css("background", "yellow");//设置中差评效果 
  19:                  if (item.SendBad > 0) x.css("background", "red");
  20:                  div.prepend(x);
  21:              });
  22:          });
  23:      }
  24:      $.extend(hub.client, {
  25:          updateInfo: function () {//为client创建一个方法updateInfo一会会用到
  26:              return init();
  27:          }
  28:      });
  29:      $.connection.hub.start().pipe(init);//开启客户端SignalR,并首次运行init
  30:  });

好的,这样就完了成显示信息的过程,但是如果有新数据插入数据库,我们怎么才能得知呢,最简单的就是在插入数据库的时候主动通知一下,我们假设这个通知是通过Web的,于是我们可以去写一个Action去接受通知。

我们在AlertController中建立一个Sync的Action,当用户访问时,就会通知所有客户端触发 updateInfo方法

   1:          public ActionResult Sync(string nick)
   2:          {
   3:              GlobalHost.ConnectionManager.GetHubContext<BuyerHub>().Clients.All.updateInfo();
   4:              return Content("");
   5:          }

en,于是。。。就完成了

我们回头来总结一下一个SignalR的几个重要组成

1.Hub,用于提供数据

2.一个页面,用于展示数据

3.一个JavaScript用于建立Client,并运行WebSocket或轮询

4.如果有需要还需要一个服务器端的触发功能

四、其它

SignalR官方网址: http://www.asp.net/signalr

开源项目:https://github.com/SignalR/SignalR

未来版本 :http://aspnetwebstack.codeplex.com

 

 

 

自动_评价 

 

时间: 2024-09-20 12:10:41

使用SignalR实时显示淘宝买家信誉及中差评信息的相关文章

淘宝店怎么避免中差评?

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 中通比圆通慢1天,买家就给我一个差评- 买了以后才发现,买家觉得我的价格比人家贵了3块钱,得了一个差评 买家收到宝贝看下感觉不是很好,家里宝宝也不是很喜欢,给了我一个差评 买了一个宠物用品,买家家里狗狗不咬,给了我一个差评-- 差评!这个随时可以挑起淘宝掌柜神经的关键词,犹如一把小刀架在了掌柜们的脖子上,让人窒息.尤其在日均订单量不是很大的情

淘宝网如何删除恶意差评?淘宝网恶意差评删除教程

1.我们电脑上登录淘宝账户如图所示 2.进入之后我们在打开界面点击[联系客服]选项 3.下面的[自助服务]选项,点击进入细节如下. 4.再者我们再点击里面的[违规受理----不合理评价]选项 5.你看会看到里面有一个[买家胁迫]选项 6.填写卖家相关信息,如下图所示,这个信息我们可以在买商品中可以买哦. 7.然后我们再点击[卖家中心---已卖出宝贝]中找到 8.务必保留相关证据,如聊天记录,电话录音等 友情提示,如果你的商品确实是有问题,那我们作为卖家态度好点,然后好好与买家说他们是会帮我们改好

评论:对“改中差评”淘宝应完善投诉渠道

据报道,有 网友在淘宝购物,因为给了一个 卖家中评,结果不断收到http://www.aliyun.com/zixun/aggregation/38858.html">骚扰电话和短信.发短信者自称是"专业改差评师",他威胁称,如果不修改中评,将进行骚扰.最新消息说,淘宝方面已经对相关店铺作出处理. 因为几条差评,网友遭受了26天的骚扰和威胁,严重影响其工作和生活,但结果,相关 网店经营者 不过受到扣12分屏蔽店铺12天的处罚,这未免太轻了些. 很明显,这样的骚扰和威胁已

淘宝买家给差评 遭商家恐吓短信

摘要: 市民董女士称,因商家虚报发货时间导致收货延迟一周,给出差评后,竟然接到商家恐吓短信删了评论,不然杀了你.昨日, 淘宝 网客服表示,核实信息后会警告商家,并建议买家如 市民董女士称,因商家虚报发货时间导致收货延迟一周,给出差评后,竟然接到商家恐吓短信"删了评论,不然杀了你".昨日, 淘宝 网客服表示,核实信息后会警告商家,并建议买家如再被骚扰可报警.律师也表示,商家的行为已构成侵权. 不满发货时间点差评 9月21日,董女士在淘宝店内购买了两件总价值50多元的衣服,"22

淘宝买家信息-如何获取淘宝买家相关信息

问题描述 如何获取淘宝买家相关信息 目前已经不开放买家相关API 不能申请,说是用买家session也能获取,这个怎么获取,貌似买家session有时限

淘宝客网站如何实时调用淘宝店铺

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 淘宝客是时下最热门的网站盈利方式,而且很多大网站都在做,竞争也日趋强烈,我们这些势单力薄的个人站长怎么才能在淘宝客这热门行业中分一杯羹?笔者认为小站长应该要走小而精的路线.一个庞大的网站让我会顾此失彼无法全面的去维护网站.小而精的网站指的是推广范围小,推广内容集中,这样的网站维护起来非常方便,而且原创内容也不会偏移主题,对搜索引擎造成困扰.下

央视曝光钓鱼网站 淘宝客信誉受打折

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 看见题目很多人就会问了,钓鱼网站的曝光关淘宝客什么事?有这样的疑问很正常,淘宝客网站和钓鱼网站本身就是八杆子打不到一块的事,前者属于推销员,至少比较正规,而钓鱼网站属于以诈骗为目的的网站.所以,看起来这些钓鱼网站的手段被曝光,对淘宝客没有什么影响,其实不然,请听我细细说来. 今天我无聊的看着电视,中央十台有个节目,讲的是一些木马和网络骗局.当

营销实战:优化中差评,获取淘宝好销量

中介交易 SEO诊断 淘宝客 云主机 技术大厅 消费者为什么会埋怨?因为对你有期待,希望你能聆听他们的真实想法 -- 这是一个警醒,也是一次机会.作为商家最应该担心的并非消费者的投诉,而是消费者不再投诉!因为他们已经对你彻底死心,因为他们认为你已经不再值得信任. 这几天逛论坛时,发现了一个很好的案例,首先要感谢一下王立柱先生能在自己的个人空间提供这个"刷淘宝差评能带来销量猛增?"的案例: (图1) 从图1中,我们可以看到王先生所提供的案例的具体情况.在淘宝最近几年的评价体系中,提供了一

淘宝司法拍卖回应中协:拍卖主体合法

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 7月12日下午消息,针对中国拍卖行业协会称浙淘宝网络司法拍卖活动违法一事,淘宝司法拍卖项目负责人沈城回应称,淘宝充当角色是第三方交易平台,法院自始自终都是自行拍卖的主体,拍卖主体的合法性毋庸置疑. 数日前,浙江省高级法院与淘宝网合作开通"司法拍卖平台",并完成宝马7系轿车与欧蓝德轿车的"首拍".随后中国