点赞和关注功能

封装的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("关注成功"); //自己封装的弹框
}
原文地址:https://www.cnblogs.com/dxt510/p/7825598.html