utils.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. /**
  2. * Created by fy on 15-9-7.
  3. */
  4. 'use strict';
  5. const dateFormat = require('date-format');
  6. const _ = require('underscore');
  7. /**
  8. * 自己封装的jsonp方法,调用完毕后会关闭链接
  9. * 可以与上传文件同时提交搭配
  10. * @param res
  11. * @param script
  12. */
  13. exports.jsonpAndEnd = function (res, script) {
  14. res.write('<script type="text/javascript">' + script + '</script>');
  15. res.end();
  16. };
  17. /**
  18. * 自己封装的json方法,调用完毕后不会关闭链接
  19. * 可以与上传文件同时提交搭配
  20. * @param res
  21. * @param script
  22. */
  23. exports.jsonp = function (res, script) {
  24. res.write('<script type="text/javascript">' + script + '</script>');
  25. };
  26. /**
  27. * 返回当前的时间字符串
  28. * @param pattern 日期的格式,默认不传递则是:yyyy-MM-dd HH:mm:ss
  29. * @returns {*}
  30. */
  31. exports.now = function (pattern) {
  32. if (!pattern) pattern = 'yyyy-MM-dd hh:mm:ss';
  33. return dateFormat.asString(pattern, new Date());
  34. };
  35. exports.format = function (date, pattern) {
  36. if (!pattern) pattern = 'yyyy-MM-dd hh:mm:ss';
  37. return dateFormat.asString(pattern, date);
  38. };
  39. /**
  40. * json生成动态insert语句
  41. * @param bean
  42. * @returns {{sql: string, param: Array}}
  43. */
  44. exports.getInsertSeletiveSql = function (bean) {
  45. if (!_.isObject(bean) || _.isEmpty(bean) || _.isArray(bean) && _.isFunction(bean)) {
  46. throw new Error('转换为 insert sql 的json对象为空!');
  47. }
  48. let columnsSql = [];
  49. let valuesSql = [];
  50. let param = [];
  51. for (let key in bean) {
  52. let value = bean[key];
  53. columnsSql.push(key);
  54. valuesSql.push('?');
  55. param.push(value);
  56. }
  57. return {
  58. sql: ' (' + columnsSql.join(',') + ') values (' + valuesSql.join(',') + ')',
  59. param: param
  60. }
  61. };
  62. /**
  63. * json生成动态update语句
  64. * @param bean
  65. * @returns {{sql: string, param: Array}}
  66. */
  67. exports.getUpdateSeletiveSql = function (bean) {
  68. if (!_.isObject(bean) || _.isEmpty(bean) || _.isArray(bean) && _.isFunction(bean)) {
  69. throw new Error('转换为 update sql 的json对象为空!');
  70. }
  71. let setSql = [];
  72. let param = [];
  73. for (let key in bean) {
  74. const value = bean[key];
  75. setSql.push(key + '=?');
  76. param.push(value || null);
  77. }
  78. return {
  79. sql: ' ' + setSql.join(',') + ' ',
  80. param: param
  81. }
  82. };
  83. exports.daterange = function (params, dateStr, comment = '') {
  84. let date = params[dateStr];
  85. if (date) {
  86. let startKey = dateStr + 'Start';
  87. let endKey = dateStr + 'End';
  88. let d = date.split(' 至 ');
  89. params[startKey] = d[0];
  90. params[endKey] = d[1];
  91. return " AND ( sample_date >= ':" + startKey + "' AND sample_date <= ':" + endKey + "' )/*" + comment + "*/\n";
  92. }
  93. return '';
  94. }