aftersales.js 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327
  1. const { models } = require('../db')
  2. const { validateField, handleAdd, handleUpdate, handleDelete } = require('../common')
  3. /**
  4. *
  5. * 售后管理 表格 调 wx_afterservice(售后管理)
  6. *
  7. * 字段展示 用户名 根据 售后管理表 user_id 去 家长表(wx_user)里查_id是否相同 相同取园所名称(name)
  8. * 手机号 phone
  9. * 园所 根据 售后管理表 school_id 去 学校表(wx_school)里查_id是否相同 相同取园所名称(name)
  10. * 订单号 order_id
  11. * 图片 —— url
  12. * 描述 —— des
  13. * 售后状态(0-未处理 1-处理中 2-已处理) —— state
  14. * 创建时间 —— createdAt
  15. *
  16. * 查询 调 wx_afterservice(售后管理)
  17. * user_id —— 用户名
  18. * phone —— 手机号
  19. * school_id —— 园所_id 园所是下拉 调 wx_school(园所表)
  20. * state —— 售后状态(0-未处理 1-处理中 2-已处理)
  21. *
  22. * 修改 调 wx_afterservice(售后管理)
  23. * state —— 售后状态
  24. * 加传 _id
  25. *
  26. *
  27. */
  28. /**
  29. * 查询所有学校
  30. * @param {*} parameter
  31. */
  32. async function findSchoolAll(parameter) {
  33. const result = await models.wx_school.list({
  34. select: {
  35. _id: true,
  36. name: true,
  37. phone: true,
  38. remark: true,
  39. adress: true,
  40. contacts: true,
  41. },
  42. filter: {
  43. where: {}
  44. },
  45. getCount: true,
  46. pageSize: 100,
  47. pageNumber: 1,
  48. envType: "prod"
  49. })
  50. return result
  51. }
  52. /**
  53. * 新增售后
  54. * @param {*} school_id 学校Id
  55. * @param {*} user_id 用户Id
  56. * @param {*} order_id 订单Id
  57. * @param {*} phone 手机号码
  58. * @param {*} des 描述
  59. * @param {*} url 图片路径(数组)
  60. * @param {*} goods_id 商品Id
  61. * @returns
  62. */
  63. async function addAfterService(parameter) {
  64. const { school_id, user_id, order_id, phone, des, url, goods_id } = parameter
  65. const v1 = validateField(school_id, 'school_id')
  66. if (!v1.flag) {
  67. return {
  68. success: false,
  69. msg: v1.msg
  70. }
  71. }
  72. const v2 = validateField(user_id, 'user_id')
  73. if (!v2.flag) {
  74. return {
  75. success: false,
  76. msg: v2.msg
  77. }
  78. }
  79. const v3 = validateField(order_id, 'order_id')
  80. if (!v3.flag) {
  81. return {
  82. success: false,
  83. msg: v3.msg
  84. }
  85. }
  86. const v4 = validateField(phone, 'phone')
  87. if (!v4.flag) {
  88. return {
  89. flag: false,
  90. msg: v4.msg
  91. }
  92. }
  93. const v5 = validateField(des, 'des')
  94. if (!v5.flag) {
  95. return {
  96. flag: false,
  97. msg: v5.msg
  98. }
  99. }
  100. const v6 = validateField(url, 'url')
  101. if (!v6.flag) {
  102. return {
  103. flag: false,
  104. msg: v6.msg
  105. }
  106. }
  107. const v7 = validateField(goods_id, 'goods_id')
  108. if (!v7.flag) {
  109. return {
  110. flag: false,
  111. msg: v7.msg
  112. }
  113. }
  114. const data = {
  115. school_id,
  116. user_id,
  117. order_id,
  118. phone,
  119. des,
  120. url,
  121. goods_id,
  122. state: 0,
  123. createdAt: new Date().getTime(),
  124. }
  125. return await handleAdd(parameter, data, 'wx_afterservice')
  126. }
  127. /**
  128. * 根据Id删除售后
  129. * @param {*} _id 规格Id
  130. */
  131. async function deleteAfterService(parameter) {
  132. const { _id } = parameter
  133. return handleDelete(parameter, _id, 'wx_afterservice')
  134. }
  135. /**
  136. * 编辑售后管理
  137. * @param {*} _id 主键Id
  138. * @param {*} school_id 学校Id
  139. * @param {*} user_id 用户Id
  140. * @param {*} order_id 订单Id
  141. * @param {*} phone 手机号码
  142. * @param {*} des 描述
  143. * @param {*} url 图片路径(数组)
  144. * @param {*} goods_id 商品Id
  145. * @returns
  146. */
  147. async function updateAfterService(parameter) {
  148. const { _id, school_id, user_id, order_id, phone, des, url, goods_id, state } = parameter
  149. const obj = {}
  150. const v0 = validateField(_id, '_id')
  151. if (!v0.flag) {
  152. return {
  153. success: false,
  154. msg: v0.msg
  155. }
  156. }
  157. const v1 = validateField(school_id, 'school_id')
  158. if (v1.flag) {
  159. obj.school_id = school_id
  160. }
  161. const v2 = validateField(user_id, 'user_id')
  162. if (v2.flag) {
  163. obj.user_id = user_id
  164. }
  165. const v3 = validateField(order_id, 'order_id')
  166. if (v3.flag) {
  167. obj.order_id = order_id
  168. }
  169. const v4 = validateField(phone, 'phone')
  170. if (v4.flag) {
  171. obj.phone = phone
  172. }
  173. const v5 = validateField(des, 'des')
  174. if (v5.flag) {
  175. obj.des = des
  176. }
  177. const v6 = validateField(url, 'url')
  178. if (v6.flag) {
  179. obj.url = url
  180. }
  181. const v7 = validateField(goods_id, 'goods_id')
  182. if (v7.flag) {
  183. obj.goods_id = goods_id
  184. }
  185. const v8 = validateField(state, 'state')
  186. if (v8.flag) {
  187. obj.state = state
  188. }
  189. return await handleUpdate(parameter, _id, obj, 'wx_afterservice')
  190. }
  191. /**
  192. * 分页查询售后管理
  193. * @param {*} startTime 开始时间
  194. * @param {*} endTime 结束时间
  195. * @param {*} pageNum 当前页面
  196. * @param {*} pageSize 每页展示数量
  197. * @returns 分页数据
  198. */
  199. async function findAfterServicePage(parameter) {
  200. const { username, phone, school_id, state, startTime, endTime, pageNum, pageSize } = parameter
  201. const v1 = validateField(pageNum)
  202. if (!v1.flag) {
  203. return {
  204. success: false,
  205. records: [],
  206. msg: v1.msg
  207. }
  208. }
  209. const v2 = validateField(pageSize)
  210. if (!v2.flag) {
  211. return {
  212. success: false,
  213. records: [],
  214. msg: v2.msg
  215. }
  216. }
  217. // 查询参数
  218. const params = {
  219. pageNum,
  220. pageSize
  221. }
  222. // 拼接查询条件
  223. let condition = ""
  224. if (username != null) {
  225. condition += " where u.user_name like '%{{username}}%' "
  226. params.username = username
  227. }
  228. if (phone != null) {
  229. if (condition) {
  230. condition += " and u.phone like '%{{phone}}%' "
  231. } else {
  232. condition += " where u.phone like '%{{phone}}%' "
  233. }
  234. params.phone = phone
  235. }
  236. if (school_id != null) {
  237. if (condition) {
  238. condition += " and s._id = {{school_id}} "
  239. } else {
  240. condition += " where s._id = {{school_id}} "
  241. }
  242. params.school_id = school_id
  243. }
  244. if (state != null) {
  245. if (condition) {
  246. condition += " and a.state = {{state}} "
  247. } else {
  248. condition += " where a.state = {{state}} "
  249. }
  250. params.state = state
  251. }
  252. if (startTime != null && endTime != null) {
  253. if (condition) {
  254. condition += " and a.createdAt >= {{startTime}} and a.createdAt <= {{endTime}} "
  255. } else {
  256. condition += " where a.createdAt >= {{startTime}} and a.createdAt <= {{endTime}} "
  257. }
  258. params.startTime = startTime
  259. params.endTime = endTime
  260. }
  261. const skip = (pageNum - 1) * pageSize
  262. // 查询sql
  263. const sql = "select " +
  264. "a._id as _id, " +
  265. "u.name as username, " +
  266. "u.phone as phone, " +
  267. "s.name as schoolName, " +
  268. "o.order_id as orderId, " +
  269. "a.url as url, " +
  270. "a.des as description, " +
  271. "a.state as state, " +
  272. "a.createdAt as createdAt " +
  273. "from wx_afterservice a " +
  274. "left join wx_user u on a.user_id = u._id " +
  275. "left join wx_school s on a.school_id = s._id " +
  276. "left join orders o on a.order_id = o._id" +
  277. condition +
  278. " order by createdAt desc " + "limit " + skip + ", " + pageSize
  279. const countSql = "select count(*) as total from wx_afterservice a " +
  280. "left join wx_user u on a.user_id = u._id " +
  281. "left join wx_school s on a.school_id = s._id " +
  282. "left join orders o on a.order_id = o._id " +
  283. condition
  284. try {
  285. // 查询数据sql
  286. const records = await models.$runSQL(sql, params)
  287. const count = await models.$runSQL(countSql, params)
  288. return {
  289. sql,
  290. countSql,
  291. params,
  292. success: true,
  293. msg: '查询成功',
  294. records: records.data.executeResultList,
  295. total: count.data.executeResultList[0].total
  296. }
  297. } catch (error) {
  298. return {
  299. success: false,
  300. msg: '查询失败',
  301. params,
  302. sql,
  303. countSql,
  304. error: error
  305. }
  306. }
  307. }
  308. /**
  309. * 根据Id查询
  310. * @param {*} _id Id
  311. */
  312. async function findAfterServiceById(parameter) {
  313. const { _id } = parameter
  314. return handleFindByField(parameter, _id, 'wx_afterservice')
  315. }
  316. module.exports = {
  317. findSchoolAll,
  318. addAfterService,
  319. deleteAfterService,
  320. updateAfterService,
  321. findAfterServicePage,
  322. findAfterServiceById,
  323. }