收藏
回答

云开发收藏功能如何实现?

云开发收藏需要存云数据库吗?还是使用缓存?比如列表展示时,如何判断某项这个用户是否已收藏?已收藏就亮,再次点击就取消收藏如何做到?请大家给个思路来,谢谢!

回答关注问题邀请回答
收藏

1 个回答

  • LeeaYoung
    LeeaYoung
    07-31

    1 数据处理

    class FavService extends BaseAlumniService {
     
    
        /** 是否收藏 */
        async isFav(userId, {
            oid,
            type
        }) {
            type = Number(type);
            let where = {
                FAV_OID: oid,
                FAV_TYPE: type,
                FAV_USER_ID: userId
            }
            let isFav = await FavModel.count(where);
            return {
                isFav
            };
        }
    
    
        /** 谁收藏了我 */
        async getFavMeList(userId, {
            search, // 搜索条件
            sortType, // 搜索菜单
            sortVal, // 搜索菜单
            orderBy, // 排序 
            page,
            size,
            isTotal = true,
            oldTotal
        }) {
            orderBy = orderBy || {
                'FAV_ADD_TIME''desc'
            };
            let fields = 'FAV_TITLE,FAV_OID,FAV_TYPE,FAV_ADD_TIME,' + this.getJoinUserFields();
     
    
            let joinParams = this.getJoinUserParams('FAV_USER_ID');
            return await FavModel.getListJoin(joinParams, where, fields, orderBy, page, size, isTotal, oldTotal);
        }
    
    
        /** 更新某人收藏 */
        async updateFav(userId, {
            oid, // 被收藏ID
            type// 类型
            cancelIfExist = true//已收藏的情况下是否取消
        }) {
    
    
            type = Number(type);
            // 重复性判断
            let where = {
                oid: oid,
                typetype
            }
    
    
              
    
    
            return {
                isFav: 1
            };
        }
    
    
        /** 修改收藏 */
        async editFav(editData) {
            let {
                where,
                data
            } = editData;
    
    
            return await FavModel.edit(where, data);
        }
    
    
        /** 删除收藏 */
        async delFav(userId, {
            oid,
            type
        }) {
            let where = {
                FAV_OID: oid,
                FAV_TYPE: type,
                FAV_USER_ID: userId
            }
            let effect = await FavModel.del(where);
    
    
            // 异步减少收藏数
            
    
    
            return {
                effect
            };
        }
    
    
    
        /** 我的收藏列表 */
        async getMyFavList(userId, {
            search, // 搜索条件 
            sortType, // 搜索菜单
            sortVal, // 搜索菜单
            orderBy, // 排序  
            page,
            size,
            isTotal = true,
            oldTotal = 0
        }) {
            orderBy = orderBy || {
                'FAV_ADD_TIME''desc'
            };
            let fields = 'FAV_TITLE,FAV_ADD_TIME,FAV_OID, FAV_TYPE';
    
    
            let where = {};
           
    
    
            return await FavModel.getList(where, fields, orderBy, page, size, isTotal, oldTotal);
    
    
        }
    }
    

    2 表t_fav

    FavModel.DB_STRUCTURE = {
        _pid: 'string|true',
        FAV_ID'string|true',
        FAV_USER_ID'string|true',
        FAV_OWNER_ID'string|true|comment=所有者',
    
    
        FAV_TITLE'string|true|comment=标题',
        FAV_TYPE'int|true|default=0|comment=类型 参照bizUti.TYPE',
        FAV_OID'string|true|comment=相关表主键',
        FAV_PIC'string|false|comment=相关图片',
    
    
        FAV_ADD_TIME'int|true',
        FAV_EDIT_TIME'int|true',
        FAV_ADD_IP'string|false',
        FAV_EDIT_IP'string|false',
    };
    
    07-31
    有用
    回复
登录 后发表内容