const { models } = require('../db') const { validateField, handleAdd, handleUpdate, handleDelete } = require('../common') /** * * 售后管理 表格 调 wx_afterservice(售后管理) * * 字段展示 用户名 根据 售后管理表 user_id 去 家长表(wx_user)里查_id是否相同 相同取园所名称(name) * 手机号 phone * 园所 根据 售后管理表 school_id 去 学校表(wx_school)里查_id是否相同 相同取园所名称(name) * 订单号 order_id * 图片 —— url * 描述 —— des * 售后状态(0-未处理 1-处理中 2-已处理) —— state * 创建时间 —— createdAt * * 查询 调 wx_afterservice(售后管理) * user_id —— 用户名 * phone —— 手机号 * school_id —— 园所_id 园所是下拉 调 wx_school(园所表) * state —— 售后状态(0-未处理 1-处理中 2-已处理) * * 修改 调 wx_afterservice(售后管理) * state —— 售后状态 * 加传 _id * * */ /** * 查询所有学校 * @param {*} parameter */ async function findSchoolAll(parameter) { const result = await models.wx_school.list({ select: { _id: true, name: true, phone: true, remark: true, adress: true, contacts: true, }, filter: { where: {} }, getCount: true, pageSize: 100, pageNumber: 1, envType: "prod" }) return result } /** * 新增售后 * @param {*} school_id 学校Id * @param {*} user_id 用户Id * @param {*} order_id 订单Id * @param {*} phone 手机号码 * @param {*} des 描述 * @param {*} url 图片路径(数组) * @param {*} goods_id 商品Id * @returns */ async function addAfterService(parameter) { const { school_id, user_id, order_id, phone, des, url, goods_id } = parameter const v1 = validateField(school_id, 'school_id') if (!v1.flag) { return { success: false, msg: v1.msg } } const v2 = validateField(user_id, 'user_id') if (!v2.flag) { return { success: false, msg: v2.msg } } const v3 = validateField(order_id, 'order_id') if (!v3.flag) { return { success: false, msg: v3.msg } } const v4 = validateField(phone, 'phone') if (!v4.flag) { return { flag: false, msg: v4.msg } } const v5 = validateField(des, 'des') if (!v5.flag) { return { flag: false, msg: v5.msg } } const v6 = validateField(url, 'url') if (!v6.flag) { return { flag: false, msg: v6.msg } } const v7 = validateField(goods_id, 'goods_id') if (!v7.flag) { return { flag: false, msg: v7.msg } } const data = { school_id, user_id, order_id, phone, des, url, goods_id, state: 0, createdAt: new Date().getTime(), } return await handleAdd(parameter, data, 'wx_afterservice') } /** * 根据Id删除售后 * @param {*} _id 规格Id */ async function deleteAfterService(parameter) { const { _id } = parameter return handleDelete(parameter, _id, 'wx_afterservice') } /** * 编辑售后管理 * @param {*} _id 主键Id * @param {*} school_id 学校Id * @param {*} user_id 用户Id * @param {*} order_id 订单Id * @param {*} phone 手机号码 * @param {*} des 描述 * @param {*} url 图片路径(数组) * @param {*} goods_id 商品Id * @returns */ async function updateAfterService(parameter) { const { _id, school_id, user_id, order_id, phone, des, url, goods_id, state } = parameter const obj = {} const v0 = validateField(_id, '_id') if (!v0.flag) { return { success: false, msg: v0.msg } } const v1 = validateField(school_id, 'school_id') if (v1.flag) { obj.school_id = school_id } const v2 = validateField(user_id, 'user_id') if (v2.flag) { obj.user_id = user_id } const v3 = validateField(order_id, 'order_id') if (v3.flag) { obj.order_id = order_id } const v4 = validateField(phone, 'phone') if (v4.flag) { obj.phone = phone } const v5 = validateField(des, 'des') if (v5.flag) { obj.des = des } const v6 = validateField(url, 'url') if (v6.flag) { obj.url = url } const v7 = validateField(goods_id, 'goods_id') if (v7.flag) { obj.goods_id = goods_id } const v8 = validateField(state, 'state') if (v8.flag) { obj.state = state } return await handleUpdate(parameter, _id, obj, 'wx_afterservice') } /** * 分页查询售后管理 * @param {*} startTime 开始时间 * @param {*} endTime 结束时间 * @param {*} pageNum 当前页面 * @param {*} pageSize 每页展示数量 * @returns 分页数据 */ async function findAfterServicePage(parameter) { const { username, phone, school_id, state, startTime, endTime, 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 (username != null) { condition += " where u.user_name like '%{{username}}%' " params.username = username } if (phone != null) { if (condition) { condition += " and u.phone like '%{{phone}}%' " } else { condition += " where u.phone like '%{{phone}}%' " } params.phone = phone } if (school_id != null) { if (condition) { condition += " and s._id = {{school_id}} " } else { condition += " where s._id = {{school_id}} " } params.school_id = school_id } if (state != null) { if (condition) { condition += " and a.state = {{state}} " } else { condition += " where a.state = {{state}} " } params.state = state } if (startTime != null && endTime != null) { if (condition) { condition += " and a.createdAt >= {{startTime}} and a.createdAt <= {{endTime}} " } else { condition += " where a.createdAt >= {{startTime}} and a.createdAt <= {{endTime}} " } params.startTime = startTime params.endTime = endTime } const skip = (pageNum - 1) * pageSize // 查询sql const sql = "select " + "a._id as _id, " + "u.name as username, " + "u.phone as phone, " + "s.name as schoolName, " + "o.order_id as orderId, " + "a.url as url, " + "a.des as description, " + "a.state as state, " + "a.createdAt as createdAt " + "from wx_afterservice a " + "left join wx_user u on a.user_id = u._id " + "left join wx_school s on a.school_id = s._id " + "left join orders o on a.order_id = o._id" + condition + " order by createdAt desc " + "limit " + skip + ", " + pageSize const countSql = "select count(*) as total from wx_afterservice a " + "left join wx_user u on a.user_id = u._id " + "left join wx_school s on a.school_id = s._id " + "left join orders o on a.order_id = o._id " + condition 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 } } } /** * 根据Id查询 * @param {*} _id Id */ async function findAfterServiceById(parameter) { const { _id } = parameter return handleFindByField(parameter, _id, 'wx_afterservice') } module.exports = { findSchoolAll, addAfterService, deleteAfterService, updateAfterService, findAfterServicePage, findAfterServiceById, }