云开发收藏功能如何实现?
云开发收藏需要存云数据库吗?还是使用缓存?比如列表展示时,如何判断某项这个用户是否已收藏?已收藏就亮,再次点击就取消收藏如何做到?请大家给个思路来,谢谢!
云开发收藏需要存云数据库吗?还是使用缓存?比如列表展示时,如何判断某项这个用户是否已收藏?已收藏就亮,再次点击就取消收藏如何做到?请大家给个思路来,谢谢!
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,
type: type
}
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',
};
WXOPEN Club 社区为国内最专业的微信小程序技术社区,致力于微信小程序的技术研究。
社区由 Nodeclub 驱动 | 服务器搭建在超友好的 | 存储赞助商为 | 站点运行状态监控由 强力驱动
© 2016 - 2024 WXOPEN Club