关于收藏功能的实现

今天受教了,学习了收藏功能的实现,以后实现什么功能的时候,一定先把逻辑理清楚再做。

关于收藏功能的逻辑梳理,

一、前台页面

1.收藏按钮,默认显示“收藏”

<li>
    <a id="mir" class="btn btn-danger" href="javascript:void(0)" style="color:#fff;">
        <span id="sctxt">收藏</span><i class="iconfont icon-favorite"></i>
    </a>
</li>

2.页面加载,调用pdUserCollection()方法进行判断当前信息是否已收藏,判读的依据是数据库中收藏表中是否存在该信息(也可以判断数据表中该信息的状态)

1>.如果已收藏,更新sctxt的显示文字为:取消收藏

2>.如果未收藏,更新sctxt的显示文字为:收藏

3.点击按钮,触发点击事件,调用addUserCollection()方法,后台方法进行判断数据表中是否收藏,

1>.如果已收藏,执行删除操作(或者改变信息状态)

2>.如果未收藏,执行添加操作(或者改变信息状态)

//页面加载
        $(document).ready(function () {
            //查询现状
            pdUserCollection(infoId, userID, infoType);
            //注册点击事件
            $("#mir").click(function () {
                if (userID != -1) {
                    addUserCollection(infoId, userID, infoType);
                } else {
                    $(location).attr('href', '/webuser/login');
                }
            });
        });
//页面加载查询是不是已经关注
function pdUserCollection(infoId, userID, infoType) {
            $.ajax({
                type: "post",
                url: "/user/AddShouCang",
                data: { "infoId": infoId, "userID": userID, "InfoType": infoType,"ActionType":"CX" },
                dataType:"json",
                success: function (data) {
                    if (data.code) {
                        $("#sctxt").text('取消收藏');
                    } else {
                        $("#sctxt").text('收藏');
                    }
                }
            })
        }
//收藏操作 按钮被点击时执行
        function addUserCollection(infoId, userID, infoType) {
            $.ajax({
                type: "POST",
                url: "/user/AddShouCang",
                data: { "infoId": infoId, "userID": userID, "InfoType": infoType, "ActionType": ""},
                dataType: "json",
                success: function (data) {
                    if (data.code) {
                        $("#sctxt").text('取消收藏');
                    } else {
                        $("#sctxt").text('收藏');
                    }
                }
            })
        }

二、后台

后台进行逻辑判断执行相近的数据库操作

        /// <summary>
        /// 前端收藏处理的方法
        /// 查询和插入
        /// </summary>
        /// <param name="InfoId">信息ID</param>
        /// <param name="UserId">用户ID</param>
        /// <param name="infoType">信息类型</param>
        /// <param name="ActionType">操作类型:CX 代表查询 其他为插入</param>
        /// <returns>True 或 False 字符串</returns>
        public ActionResult AddShouCang(int InfoId, int UserId, int infoType,string ActionType="CX")
        {
            dynamic cc = new ExpandoObject();
            string SiteId = SYSConfig.SiteId;
            //查是否存在
            SPX.DAL.PortalRegUserShouCang Pdal = new SPX.DAL.PortalRegUserShouCang();
            List<SPX.Model.PortalRegUserShouCang> PList = Pdal.GetListArray("infoid = " + InfoId + " and userid = " + UserId + " and infoType =" + infoType);
            //当查询时
            if (ActionType == "CX")
            {
                if (PList.Count > 0)
                {
                    cc.code = true;
                    cc.msg = "已关注";
                    return Content(DAL.JsonDAL.ObjToJsonStr(cc));
                }
                else
                {
                    cc.code = false;
                    cc.msg = "未关注";
                    return Content(DAL.JsonDAL.ObjToJsonStr(cc));
                }
            }
            //当插入时
            if (PList.Count > 0)
            {
                Pdal.Delete(PList[0].Id);
                cc.code = false;
                cc.msg = "已取消";
                return Content(DAL.JsonDAL.ObjToJsonStr(cc));
            }
            else
            {
                SPX.Model.PortalRegUserShouCang PM = new SPX.Model.PortalRegUserShouCang();
                PM.SiteId = SiteId;
                PM.addtime = DateTime.Now;
                PM.InfoId = InfoId;
                PM.UserId = UserId;
                PM.InfoType = infoType;
                Pdal.Add(PM);
                cc.code = true;
                cc.msg = "成功关注";
                return Content(DAL.JsonDAL.ObjToJsonStr(cc));
            } 
        }

 

  • 24
    点赞
  • 208
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值