You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
canteen/uniCloud-aliyun/cloudfunctions/common/uni-stat/stat/mod/uni-pay/dao/uniIdUsers.js

63 lines
1.0 KiB

/**
* 数据库操作
*/
const dbName = require("./config");
let db = uniCloud.database();
let _ = db.command;
let $ = _.aggregate;
class Dao {
async count(whereJson) {
let dbRes = await db.collection(dbName.uniIdUsers).where(whereJson).count()
return dbRes && dbRes.total ? dbRes.total : 0;
}
async countNewUserOrder(obj) {
let {
whereJson,
status
} = obj;
let dbRes = await db.collection(dbName.uniIdUsers).aggregate()
.match(whereJson)
.lookup({
from: dbName.uniPayOrders,
let: {
user_id: '$_id',
},
pipeline: $.pipeline()
.match(_.expr($.and([
$.eq(['$user_id', '$$user_id']),
$.in(['$status', status])
])))
.limit(1)
.done(),
as: 'order',
})
.unwind({
path: '$order',
})
.group({
_id: null,
count: {
$addToSet: '$_id'
},
})
.addFields({
count: {
$size: '$count'
}
})
.end()
try {
return dbRes.data[0].count;
} catch (err) {
return 0;
}
}
}
module.exports = new Dao();