index.js 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272
  1. var express = require('express');
  2. const XLSX = require('xlsx');
  3. var router = express.Router();
  4. const {queryDatabase } = require('../db/mysql')
  5. /* GET home page. */
  6. router.get('/result_info', function(req, res, next) {
  7. let strDate = req.query.date
  8. console.log(strDate);
  9. const sql = `SELECT * FROM result_table_${strDate}`;
  10. queryDatabase(sql,(err,results)=>{
  11. if(err){
  12. res.status(500).json({ error: '查询数据失败' });
  13. return;
  14. }
  15. res.json(results);
  16. console.log(results);
  17. })
  18. // res.render('index', { title: 'Express' });
  19. });
  20. //下载入群表格的excel接口
  21. router.get('/join_group', function(req,res,next){
  22. const sql = 'SELECT * FROM join_group_table';
  23. queryDatabase(sql,(err,results)=>{
  24. if(err){
  25. res.status(500).json({ error: '查询数据失败' });
  26. return;
  27. }
  28. // 定义表头数组,与数据库字段对应
  29. const headers = ["序号", "群用户名称", "入群的用户id", "入群名称", "入群时间"];
  30. // 将查询结果处理为包含表头的二维数组形式,方便转换为Excel工作表
  31. const dataWithHeaders = [headers].concat(results.map(item => [
  32. item.id,
  33. item.join_user_name,
  34. item.join_user_id,
  35. item.join_content,
  36. // 将时间戳转换为年月日格式
  37. new Date(item.join_group_time * 1000).toLocaleDateString()
  38. ]));
  39. // 使用xlsx库将处理后的数据转换为Excel工作簿对象
  40. const worksheet = XLSX.utils.aoa_to_sheet(dataWithHeaders);
  41. const workbook = XLSX.utils.book_new();
  42. XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1');
  43. // 将工作簿对象转换为二进制数据
  44. const excelBuffer = XLSX.write(workbook, { bookType: 'xlsx', type: 'buffer' });
  45. // 设置响应头,告知浏览器这是一个Excel文件下载
  46. res.setHeader('Content-Type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
  47. res.setHeader('Content-Disposition', 'attachment; filename="join_group_table.xlsx"');
  48. // 将Excel文件数据发送给浏览器
  49. res.send(excelBuffer);
  50. })
  51. })
  52. //下载删除朋友表格的excel接口
  53. router.get('/delete_friend',function(req,res,next){
  54. const sql = 'SELECT * FROM delete_friend_table';
  55. queryDatabase(sql,(err,results)=>{
  56. if(err){
  57. res.status(500).json({ error: '查询数据失败' });
  58. return;
  59. }
  60. // 定义表头数组,与数据库字段对应
  61. const headers = ["序号", "删除的用户名", "删除用户id", "删除内容", "删除时间"];
  62. // 将查询结果处理为包含表头的二维数组形式,方便转换为Excel工作表
  63. const dataWithHeaders = [headers].concat(results.map(item => [
  64. item.id,
  65. item.delete_user_name,
  66. item.delete_user_id,
  67. item.delete_content,
  68. // 将时间戳转换为年月日格式
  69. new Date(item.delete_time * 1000).toLocaleDateString()
  70. ]));
  71. // 使用xlsx库将处理后的数据转换为Excel工作簿对象
  72. const worksheet = XLSX.utils.aoa_to_sheet(dataWithHeaders);
  73. const workbook = XLSX.utils.book_new();
  74. XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1');
  75. // 将工作簿对象转换为二进制数据
  76. const excelBuffer = XLSX.write(workbook, { bookType: 'xlsx', type: 'buffer' });
  77. // 设置响应头,告知浏览器这是一个Excel文件下载
  78. res.setHeader('Content-Type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
  79. res.setHeader('Content-Disposition', 'attachment; filename="join_group_table.xlsx"');
  80. // 将Excel文件数据发送给浏览器
  81. res.send(excelBuffer);
  82. })
  83. })
  84. //下载群用户表格的excel接口
  85. router.get('/group_user',function(req,res,next){
  86. const sql = 'SELECT * FROM group_user_table';
  87. queryDatabase(sql,(err,results)=>{
  88. if(err){
  89. res.status(500).json({ error: '查询数据失败' });
  90. return;
  91. }
  92. // 定义表头数组,与数据库字段对应
  93. const headers = ["序号", "群用户名称", "群用户id", "群内容", "群时间"];
  94. // 将查询结果处理为包含表头的二维数组形式,方便转换为Excel工作表
  95. const dataWithHeaders = [headers].concat(results.map(item => [
  96. item.id,
  97. item.group_user_name,
  98. item.group_user_id,
  99. item.group_content,
  100. // 将时间戳转换为年月日格式
  101. new Date(item.group_time * 1000).toLocaleDateString()
  102. ]));
  103. // 使用xlsx库将处理后的数据转换为Excel工作簿对象
  104. const worksheet = XLSX.utils.aoa_to_sheet(dataWithHeaders);
  105. const workbook = XLSX.utils.book_new();
  106. XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1');
  107. // 将工作簿对象转换为二进制数据
  108. const excelBuffer = XLSX.write(workbook, { bookType: 'xlsx', type: 'buffer' });
  109. // 设置响应头,告知浏览器这是一个Excel文件下载
  110. res.setHeader('Content-Type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
  111. res.setHeader('Content-Disposition', 'attachment; filename="join_group_table.xlsx"');
  112. // 将Excel文件数据发送给浏览器
  113. res.send(excelBuffer);
  114. })
  115. })
  116. //下载结论表格的excel接口
  117. router.get('/result',function(req,res,next){
  118. const sql = 'SELECT * FROM result_table_1210';
  119. queryDatabase(sql,(err,results)=>{
  120. if(err){
  121. res.status(500).json({ error: '查询数据失败' });
  122. return;
  123. }
  124. // 定义表头数组,与数据库字段对应
  125. const headers = ["序号", "客户表去水ID个数", "累计社群人数", "已退群的ID个数", "目前社群内人数","重复在群的ID的数量","今日新增客户人数","7日内新增客户人数","30日内新增客户人数"];
  126. // 将查询结果处理为包含表头的二维数组形式,方便转换为Excel工作表
  127. const dataWithHeaders = [headers].concat(results.map(item => [
  128. item.id,
  129. item.customer_num,
  130. item.community_num,
  131. item.withdrawed_num,
  132. item.in_community_num,
  133. item.in_many_group_num,
  134. item.number_of_new_customers_added_today,
  135. item.number_of_new_customers_added_within_7_days,
  136. item.number_of_new_customers_added_within_30_days,
  137. ]));
  138. // 使用xlsx库将处理后的数据转换为Excel工作簿对象
  139. const worksheet = XLSX.utils.aoa_to_sheet(dataWithHeaders);
  140. const workbook = XLSX.utils.book_new();
  141. XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1');
  142. // 将工作簿对象转换为二进制数据
  143. const excelBuffer = XLSX.write(workbook, { bookType: 'xlsx', type: 'buffer' });
  144. // 设置响应头,告知浏览器这是一个Excel文件下载
  145. res.setHeader('Content-Type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
  146. res.setHeader('Content-Disposition', 'attachment; filename="join_group_table.xlsx"');
  147. // 将Excel文件数据发送给浏览器
  148. res.send(excelBuffer);
  149. })
  150. })
  151. //下载水军表格的excel接口
  152. router.get('/trolls',function(req,res,next){
  153. const sql = 'SELECT * FROM shang_and_di_table';
  154. queryDatabase(sql,(err,results)=>{
  155. if(err){
  156. res.status(500).json({ error: '查询数据失败' });
  157. return;
  158. }
  159. // 定义表头数组,与数据库字段对应
  160. const headers = ["序号", "水军名称","水军备注","水军ID"];
  161. // 将查询结果处理为包含表头的二维数组形式,方便转换为Excel工作表
  162. const dataWithHeaders = [headers].concat(results.map(item => [
  163. item.id,
  164. item.s_d_name,
  165. item.s_d_remark,
  166. item.s_d_id
  167. ]));
  168. // 使用xlsx库将处理后的数据转换为Excel工作簿对象
  169. const worksheet = XLSX.utils.aoa_to_sheet(dataWithHeaders);
  170. const workbook = XLSX.utils.book_new();
  171. XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1');
  172. // 将工作簿对象转换为二进制数据
  173. const excelBuffer = XLSX.write(workbook, { bookType: 'xlsx', type: 'buffer' });
  174. // 设置响应头,告知浏览器这是一个Excel文件下载
  175. res.setHeader('Content-Type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
  176. res.setHeader('Content-Disposition', 'attachment; filename="join_group_table.xlsx"');
  177. // 将Excel文件数据发送给浏览器
  178. res.send(excelBuffer);
  179. })
  180. })
  181. //下载退出群表格的excel接口
  182. router.get('/withdrawal',function(req,res,next){
  183. const sql = 'SELECT * FROM withdrawal_group_table';
  184. queryDatabase(sql,(err,results)=>{
  185. if(err){
  186. res.status(500).json({ error: '查询数据失败' });
  187. return;
  188. }
  189. // 定义表头数组,与数据库字段对应
  190. const headers = ["序号", "退群的用户名称","退群的用户ID","退群内容","退群时间"];
  191. // 将查询结果处理为包含表头的二维数组形式,方便转换为Excel工作表
  192. const dataWithHeaders = [headers].concat(results.map(item => [
  193. item.id,
  194. item.withdrawal_user_name,
  195. item.withdrawal_user_id,
  196. item.withdrawal_content,
  197. // 将时间戳转换为年月日格式
  198. new Date(item.withdrawal_group_time * 1000).toLocaleDateString()
  199. ]));
  200. // 使用xlsx库将处理后的数据转换为Excel工作簿对象
  201. const worksheet = XLSX.utils.aoa_to_sheet(dataWithHeaders);
  202. const workbook = XLSX.utils.book_new();
  203. XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1');
  204. // 将工作簿对象转换为二进制数据
  205. const excelBuffer = XLSX.write(workbook, { bookType: 'xlsx', type: 'buffer' });
  206. // 设置响应头,告知浏览器这是一个Excel文件下载
  207. res.setHeader('Content-Type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
  208. res.setHeader('Content-Disposition', 'attachment; filename="join_group_table.xlsx"');
  209. // 将Excel文件数据发送给浏览器
  210. res.send(excelBuffer);
  211. })
  212. })
  213. module.exports = router;