123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197 |
- const { models } = require('../db')
- const { validateField } = require('../common')
- /**
- *
- * 付款统计
- *
- */
- /**
- * 分页查询付款统计数据(按照班级分组)
- * @param {*} school_id 学校Id
- * @param {*} grade 年级
- * @param {*} pageNum 当前页
- * @param {*} pageSize 每页展示数量
- * @returns 分页数据
- */
- async function findPaymentPage(parameter) {
- const { school_id, grade, pageNum, pageSize } = parameter
- const v1 = validateField(pageNum)
- if (!v1.flag) {
- return {
- success: false,
- records: [],
- msg: v1.msg
- }
- }
- const v2 = validateField(pageSize)
- if (!v2.flag) {
- return {
- success: false,
- records: [],
- msg: v2.msg
- }
- }
- // 查询参数
- const params = {
- pageNum,
- pageSize
- }
- // 拼接查询条件
- let condition = ""
- if (school_id != null) {
- condition += " where s._id = {{school_id}} "
- params.school_id = school_id
- }
- if (grade != null) {
- if (condition) {
- condition += " and u.grade = {{grade}} "
- } else {
- condition += " where u.grade = {{grade}} "
- }
- params.grade = grade
- }
- const skip = (pageNum - 1) * pageSize
- // 查询sql
- const sql = "select * " +
- "from (select s.name as schoolName, " +
- " u.grade as grade, " +
- " count(IF(o.status IN (0, 3), o._id, NULL)) as unpaidCount, " +
- " count(IF(o.status IN (1, 2), o._id, NULL)) as paidCount, " +
- " sum(IF(o.status IN (0, 3), o.real_money, 0)) as unpaidMoney, " +
- " sum(IF(o.status IN (1, 2), o.real_money, 0)) as paidMoney " +
- " from orders o " +
- " left join wx_user u on o.user_id = u._id " +
- " left join wx_school s on u.school_id = s._id " +
- condition +
- " group by s.name, u.grade) as t " +
- "limit " + skip + ", " + pageSize
- const countSql = "select count(*) as total " +
- "from (select s.name as schoolName," +
- " u.grade as grade, " +
- " count(IF(o.status IN (0, 3), o._id, NULL)) as unpaidCount, " +
- " count(IF(o.status IN (1, 2), o._id, NULL)) as paidCount, " +
- " sum(IF(o.status IN (0, 3), o.real_money, 0)) as unpaidMoney, " +
- " sum(IF(o.status IN (1, 2), o.real_money, 0)) as paidMoney " +
- " from orders o " +
- " left join wx_user u on o.user_id = u._id " +
- " left join wx_school s on u.school_id = s._id " +
- condition +
- " group by s.name, u.grade) as t "
- try {
- // 查询数据sql
- const records = await models.$runSQL(sql, params)
- const count = await models.$runSQL(countSql, params)
- return {
- sql,
- countSql,
- params,
- success: true,
- msg: '查询成功',
- records: records.data.executeResultList,
- total: count.data.executeResultList[0].total
- }
- } catch (error) {
- return {
- success: false,
- msg: '查询失败',
- params,
- sql,
- countSql,
- error: error
- }
- }
- }
- /**
- * 分页查询付款统计数据(按照学校分组)
- * @param {*} school_id 学校Id
- * @param {*} pageNum 当前页
- * @param {*} pageSize 每页展示数量
- * @returns 分页数据
- */
- async function findPaymentPageBySchool(parameter) {
- const { school_id, pageNum, pageSize } = parameter
- const v1 = validateField(pageNum)
- if (!v1.flag) {
- return {
- success: false,
- records: [],
- msg: v1.msg
- }
- }
- const v2 = validateField(pageSize)
- if (!v2.flag) {
- return {
- success: false,
- records: [],
- msg: v2.msg
- }
- }
- // 查询参数
- const params = {
- pageNum,
- pageSize
- }
- // 拼接查询条件
- let condition = ""
- if (school_id != null) {
- condition += " where s._id = {{school_id}} "
- params.school_id = school_id
- }
- const skip = (pageNum - 1) * pageSize
- // 查询sql
- const sql = "select * " +
- "from (select s.name as schoolName, " +
- " count(IF(o.status IN (0, 3), o._id, NULL)) as unpaidCount, " +
- " count(IF(o.status IN (1, 2), o._id, NULL)) as paidCount, " +
- " sum(IF(o.status IN (0, 3), o.real_money, 0)) as unpaidMoney, " +
- " sum(IF(o.status IN (1, 2), o.real_money, 0)) as paidMoney " +
- " from orders o " +
- " left join wx_user u on o.user_id = u._id " +
- " left join wx_school s on u.school_id = s._id " +
- condition +
- " group by s.name) as t " +
- "limit " + skip + ", " + pageSize
- const countSql = "select count(*) as total " +
- "from (select s.name as schoolName," +
- " u.grade as grade, " +
- " count(IF(o.status IN (0, 3), o._id, NULL)) as unpaidCount, " +
- " count(IF(o.status IN (1, 2), o._id, NULL)) as paidCount, " +
- " sum(IF(o.status IN (0, 3), o.real_money, 0)) as unpaidMoney, " +
- " sum(IF(o.status IN (1, 2), o.real_money, 0)) as paidMoney " +
- " from orders o " +
- " left join wx_user u on o.user_id = u._id " +
- " left join wx_school s on u.school_id = s._id " +
- condition +
- " group by s.name, u.grade) as t "
- try {
- // 查询数据sql
- const records = await models.$runSQL(sql, params)
- const count = await models.$runSQL(countSql, params)
- return {
- sql,
- countSql,
- params,
- success: true,
- msg: '查询成功',
- records: records.data.executeResultList,
- total: count.data.executeResultList[0].total
- }
- } catch (error) {
- return {
- success: false,
- msg: '查询失败',
- params,
- sql,
- countSql,
- error: error
- }
- }
- }
- module.exports = {
- findPaymentPage,
- findPaymentPageBySchool,
- }
|