点赞和关注功能
封装的ttyu调接口
function webData(Actions,userI){ tdata = { type: 'web', isJsonp: false, uuid: null, compId: null, userId: null, action: Actions, tableName: null, where: userI, fieldName: null, sql: null, datas: null, tableDatas: null, paras: null, GoPage: { index: null, rows: null }, Tree: { id: null, pId: null, name: null, other: null } }; }
1、点赞功能(赞和踩)
(1)获取数据中的赞ID和踩ID
var zan1 = "s" + datas[i].zanid; var cai = "s" + datas[i].downid;
(2)判断赞id中是否有当前用户;(存在赞变成红色,踩灰色)
if (zan1 != null && zan1.indexOf(userID) > 0) { str += "<i class='iconfont icon-praise-copy' style='color: red;'></i>" + " <span>(" + datas[i].thumbsUpCount + ")</span>"; str += "<i class='iconfont icon-good-fill' style='color: #595757;' ></i>" + " <span>(" + datas[i].thumbsDownCount + ")</span>"; }
(3)判断踩id中是否有当前用户;(存在赞变成灰色,踩红色)
if (cai != null && cai.indexOf(userID) > 0) { str += "<i class='iconfont icon-praise-copy' style='color: #595757;'></i>" + " <span>(" + datas[i].thumbsUpCount + ")</span>"; str += "<i class='iconfont icon-good-fill' style='color: red;'></i>" + " <span>(" + datas[i].thumbsDownCount + ")</span>"; }
(4)如果赞id中没有当前用户,且踩id中没有当前用户(均是灰色,且有点击事件)
if (zan1 != null && zan1.indexOf(userID) < 0 && cai != null && cai.indexOf(userID) < 0) { str += "<i class='iconfont icon-praise-copy' style='color: #595757;' onclick=Upcount(this,'" + datas[i].ID + "','" + datas[i].zanid + "')></i>" + " <span>(" + datas[i].thumbsUpCount + ")</span>"; str += "<i class='iconfont icon-good-fill' style='color: #595757;' onclick=Downcount(this,'" + datas[i].ID + "','" + datas[i].downid + "')></i>" + " <span>(" + datas[i].thumbsDownCount + ")</span>"; }
(5)插入SQL语句,赞
function Upcount(objup,lid,zan) { zan=zan+","+userID; //将赞ID与用户ID拼接 $(objup).css("color",'red'); //当前icon变红色 var sql1 = "update docReply set thumbsUpCount=thumbsUpCount+1 ,zanid='"+zan+"' where Id="+lid; //列表id webData("add",sql1); ttyu.server.doServiceJsonp(serverJson.serverUrl,tdata,"",function(data){ //移除当前元素和它兄弟元素的点击事件 $(objup).removeAttr('onclick'); //当前元素移除onclick事件 $(objup).siblings('i').removeAttr('onclick'); //它的兄弟移除onclick事件 var number = $(objup).next('span').text(); number=number.replace(/\(/,""); //去除前括号 number=number.replace(/\)/,""); //去除后括号 number = parseInt(number); //字符串转化成数字 $(objup).next('span').text(""); var number2 = number+1; //数量+1 $(objup).next('span').text("("+number2+")"); });
}
(6)插入SQL语句,踩
function Downcount(objdown,lid,down) { down = down+","+userID; //将踩id与用户id拼接 $(objdown).css("color",'red'); //当前icon变成红色 sql = "update docReply set thumbsDownCount=thumbsDownCount+1,downid='"+down+"' where Id="+lid; //列表id webData("add",sql); ttyu.server.doServiceJsonp(serverJson.serverUrl,tdata,"",function(data){ //移除当前元素和它兄弟元素的点击事件 $(objdown).removeAttr('onclick'); //当前元素移除onclick事件 $(objdown).siblings('i').removeAttr('onclick'); //它的兄弟元素移除onclick事件 var number = $(objdown).next('span').text(); number=number.replace(/\(/,""); //去除前括号 number=number.replace(/\)/,""); //去除后括号 number = parseInt(number); //字符串转化成数字 $(objdown).next('span').text(""); var number2 = number+1; //数量+1 $(objdown).next('span').text("("+number2+")"); }); }
2、关注功能
1、一个列表被关注
(1)获取当前已关注的用户
$(function() { //获取关注的列表id webData("getfollowask", userID); //传用户id ttyu.server.doServiceJsonp(serverJson.serverUrl, tdata, "", function (data) { var num=0; //用于判断是否添加了 红色关注图标;为1 用户已关注,为0 用户第一次关注 if(data!=undefined || data != null){ if(data.length>0){ //判断有没有数据 for(var k=0;k<data.length;k++){ //循环关注列表id //判断获取到的关注的列表id是否和当前的列表id相同 if(data[k].befuserid==listID){ $('.icon-xin1').addClass('red'); num=num+1; //给num加1,就是已关注过 } } } } //如果用户第一次关注,绑定事件 if(num==0){ //添加绑定事件 $('.icon-xin1').attr('onclick','xin()'); } }); });
(2)插入SQL表
//点击关注时,插入SQL
function xin() {
//获取listid
var listids = $("input[name=report]").val();
var sql=" insert into myfollowask(userid,befuserid)values("+userID+","+listids+")"; //用户id,列表id
webData("add",sql); ttyu.server.doServiceJsonp(serverJson.serverUrl,tdata,"",function(data){}); $('.icon-xin1').removeAttr("onclick"); //移除onclick事件 $('.icon-xin1').addClass("red"); //给当前的icon添加红色 //根据列表id修改表的点赞数 var sql1 = "update doc set lightCount=lightCount+1 where Id="+listID; webData("add",sql1); ttyu.server.doServiceJsonp(serverJson.serverUrl,tdata,"",function(data){}); }
2、多个列表需要被关注
(1)获取已关注的用户
var follow; //定义全局变量,获取已关注人的id,供下方获取 //获取关注的问答 $(function() { webData("getfollowask",userID); ttyu.server.doServiceJsonp(serverJson.serverUrl,tdata,"",function(data){ if(data !=undefined || data !=null) { follow=data; } }); });
(2)动态创建标签,并获取数据
for (var i = 0; i < datas.length; i++) { var num=0;//用于判断是否添加了 红色关注图标;为1 用户已关注,为0 用户第一次关注; if(follow.length>0){ for(var k=0;k<follow.length;k++){ //判断获取到的关注的列表id是否和当前的列表id相同,如果相同,icon变红色,无点击事件 if(follow[k].befuserid==datas[i].ID){ str+="<i class='iconfont icon-xin1 red'></i>" ; num=num+1; } } }
//如果是用户第一次关注,创建icon 并添加点击事件 if(num==0){ str+="<i class='iconfont icon-xin1' onclick=usercare(this,"+datas[i].ID+")></i>"; } }
(3)插入SQL
//点击心关注问题 function usercare(thisobj,idobj) { //this,列表id
// 插入SQL语句 var sql=" insert into myfollowask(userid,befuserid)values("+userID+","+idobj+")"; //用户id,列表id webData("add",sql); ttyu.server.doServiceJsonp(serverJson.serverUrl,tdata,"",function(data){});
// 修改SQL语句 var sql1="update ask set lightcount=lightcount+1 where id="+idobj; webData("add",sql1); ttyu.server.doServiceJsonp(serverJson.serverUrl,tdata,"",function(data){}); $(thisobj).removeAttr("onclick"); $(thisobj).css("color",'red'); firm("关注成功"); //自己封装的弹框
}