You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

214 lines
4.5 KiB

  1. """
  2. 通用方法类
  3. """
  4. from django.http import HttpResponse
  5. import json
  6. from datetime import date, datetime
  7. from django.db import connection
  8. from django.conf import settings
  9. import hashlib
  10. import decimal
  11. class CJsonEncoder(json.JSONEncoder):
  12. def default(self, obj):
  13. if isinstance(obj, datetime):
  14. return obj.strftime('%Y-%m-%d %H:%M:%S')
  15. elif isinstance(obj, date):
  16. return obj.strftime('%Y-%m-%d')
  17. elif isinstance(obj, decimal.Decimal): # python无法json_dumps decimal类型,转成float型
  18. return float(obj)
  19. else:
  20. return json.JSONEncoder.default(self, obj)
  21. def sql_array(result, select):
  22. """
  23. sql数据查询转换为数组
  24. :param result:查询结果
  25. :param select:查询的字段
  26. :return:
  27. """
  28. return_list = []
  29. for i in result:
  30. val_list = {}
  31. for j in select:
  32. val_list[j] = i.__getattribute__(j) # 获取字段的值
  33. return_list.append(val_list)
  34. return return_list
  35. def re_su(msg='', data='', url='', code=0):
  36. """
  37. 返回成功信息
  38. :param msg:
  39. :param data:
  40. :param url:
  41. :param code:
  42. :return:
  43. """
  44. if data == '':
  45. data = {}
  46. result = {
  47. 'flag': True,
  48. 'msg': msg,
  49. 'data': data,
  50. 'url': url,
  51. 'code': code
  52. }
  53. return result
  54. def re_err(msg, data='', url='', code=1):
  55. """
  56. 返回报错信息到上一层
  57. :param msg:
  58. :param data:
  59. :param url:
  60. :param code:
  61. :return:
  62. """
  63. if data == '':
  64. data = {}
  65. result = {
  66. 'flag': False,
  67. 'msg': msg,
  68. 'data': data,
  69. 'url': url,
  70. 'code': code
  71. }
  72. return result
  73. def re_json_su(msg='', data='', url='', code=0):
  74. """
  75. 返回 失败错误信息
  76. :param msg:
  77. :param data:
  78. :param url:
  79. :param code:
  80. :return:
  81. """
  82. if data == '':
  83. data = {}
  84. result = {
  85. 'flag': True,
  86. 'msg': msg,
  87. 'data': data,
  88. 'url': url,
  89. 'code': code
  90. }
  91. return HttpResponse(json.dumps(result, cls=CJsonEncoder))
  92. def re_json_err(msg, data='', url='', code=1):
  93. """
  94. 返回json报错信息到前端
  95. :param msg:
  96. :param data:
  97. :param url:
  98. :param code:
  99. :return:
  100. """
  101. if data == '':
  102. data = {}
  103. result = {
  104. 'flag': False,
  105. 'msg': msg,
  106. 'data': data,
  107. 'url': url,
  108. 'code': code
  109. }
  110. return HttpResponse(json.dumps(result, cls=CJsonEncoder))
  111. def re_json(data):
  112. """
  113. 返回字符串
  114. :param data:
  115. :return:
  116. """
  117. return HttpResponse(json.dumps(data, cls=CJsonEncoder))
  118. def select_all(sql, param):
  119. """
  120. select查询
  121. :param sql:
  122. :return:
  123. """
  124. cursor = connection.cursor()
  125. cursor.execute(sql, param)
  126. items = cursor.fetchall() # 读取所有
  127. desc = cursor.description
  128. li = []
  129. if items:
  130. for item in items:
  131. d = {}
  132. i = 0
  133. for de in desc:
  134. d[de[0]] = str(item[i])
  135. i = i + 1
  136. li.append(d)
  137. return li
  138. else:
  139. return li
  140. def select_row(sql, param):
  141. """
  142. select查询
  143. :param sql:
  144. :return:
  145. """
  146. cursor = connection.cursor()
  147. cursor.execute(sql, param)
  148. items = cursor.fetchall() # 读取所有
  149. desc = cursor.description
  150. li = []
  151. if items:
  152. for item in items:
  153. d = {}
  154. i = 0
  155. for de in desc:
  156. d[de[0]] = item[i]
  157. i = i + 1
  158. li.append(d)
  159. return li[0]
  160. else:
  161. return li
  162. def auth_code_for_cs(request_time):
  163. """
  164. cs接口调用加密函数
  165. :param request_time:
  166. :return:
  167. """
  168. request_time = str(request_time)
  169. user = settings.ADM_USER
  170. user_key = settings.ADM_USER_KEY
  171. # 加密规则为 request_time(linux时间戳)前三位作为种子+ user + user_key+后三位,进行MD5加密后,换成大写字母
  172. auth_code = (
  173. request_time[0:3] + "|" + user + "|" + user_key + "|" + request_time[(len(request_time) - 3):len(request_time)])
  174. m2 = hashlib.md5() # 进行md5加密
  175. m2.update(auth_code.encode("utf-8"))
  176. return m2.hexdigest().upper()
  177. def get_client_ip(request):
  178. """
  179. 获取用户ip
  180. :param request:
  181. :return:
  182. """
  183. try:
  184. real_ip = request.META['HTTP_X_FORWARDED_FOR']
  185. regip = real_ip.split(",")[0]
  186. except:
  187. try:
  188. regip = request.META['REMOTE_ADDR']
  189. except:
  190. regip = ""
  191. return regip