common.py 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. import json
  2. import os
  3. from datetime import datetime
  4. from xml.dom.minidom import Document
  5. import requests
  6. from django.core import paginator
  7. from django.http import HttpResponse, JsonResponse
  8. from DCbackend.settings import MEDIA_ROOT, oss_key_id, oss_key_secret, oss_endPoint, oss_bucket, oss_url
  9. import os
  10. import oss2
  11. from DCbackend.utils.MyEncoder import MyEncoder
  12. # def success(data):
  13. # result = {"status": 200, "message": "success", "data": data}
  14. # return HttpResponse(json.dumps(result, cls=MyEncoder, indent=4), content_type="application/json")
  15. def success(data, message="success"):
  16. result = {
  17. "status": 200,
  18. "message": message,
  19. "data": data
  20. }
  21. return HttpResponse(
  22. json.dumps(result, cls=MyEncoder, indent=4),
  23. content_type="application/json"
  24. )
  25. def fail(message):
  26. return HttpResponse(JsonResponse({"status": 999, "message": message}), content_type="application/json")
  27. def fail(message=None):
  28. if message is None:
  29. message = []
  30. return HttpResponse(JsonResponse({"status": 999, "message": message}), content_type="application/json")
  31. def pageData(page, pageSize, totalPage, totalRecord, dataList):
  32. return {"page": page, "pageSize": pageSize, "totalPage": totalPage, "totalRecord": totalRecord,
  33. "dataList": dataList}
  34. def handle_uploaded_file(file):
  35. date = datetime.now().strftime("%Y%m%d%H%M%S")
  36. filename = f"{date}_{file.name}"
  37. if not os.path.exists(MEDIA_ROOT):
  38. os.mkdir(MEDIA_ROOT)
  39. path = os.path.join(MEDIA_ROOT, filename)
  40. with open(path, 'wb+') as destination:
  41. for chunk in file.chunks():
  42. destination.write(chunk)
  43. return path
  44. # 上传文件到 OSS
  45. # 这里的file_path就是上面我们保存到local_url容器里面的dst
  46. def oss_upload_file(file_path):
  47. # 通过basename方法得到路径最后的文件名,也就是图片名(火影忍者.jpg)
  48. file_name = os.path.basename(file_path)
  49. # 构造oss中的路径,我这里就是:anime/火影忍者.jpg
  50. # 创建 OSS 链接
  51. auth = oss2.Auth(oss_key_id, oss_key_secret)
  52. bucket = oss2.Bucket(auth, oss_endPoint, oss_bucket)
  53. oss_path = "document/" + file_name
  54. # 上传文件,以二进制方式(rb)打开图片上传
  55. with open(file_path, 'rb') as file_obj:
  56. result = bucket.put_object(oss_path, file_obj)
  57. return oss_url + "/" + oss_path
  58. # return result
  59. def getHttpPost():
  60. url = "https://www.h3yun.com/OpenApi/Invoke"
  61. payload = {
  62. "ActionName": "LoadBizObjects",
  63. "SchemaCode": "isaxp2no91kwgggtzmnfsmf90",
  64. "Filter": "{\"FromRowNum\": 0,\"RequireCount\": false,\"ReturnItems\": [], \"SortByCollection\": [],\"ToRowNum\": 500, \"Matcher\": { \"Type\": \"And\", \"Matchers\": []}}"
  65. }
  66. headers = {
  67. "EngineCode": "bddua5a6od64p2nu",
  68. "EngineSecret": "Az24wdw8f1dgZw5j7UeGivgcJuRLuaxqQ0banHM6YLkD/oa2uNIH8g==",
  69. "Content-Type": "application/json",
  70. 'content-type': "application/json"
  71. }
  72. response = requests.request("POST", url, json=payload, headers=headers)
  73. if response.status_code == 200:
  74. data = response.json()
  75. content = json.dumps(data, cls=MyEncoder, indent=4)
  76. filename = "customer.txt"
  77. if not os.path.exists(MEDIA_ROOT):
  78. os.mkdir(MEDIA_ROOT)
  79. path = os.path.join(MEDIA_ROOT, filename)
  80. with open(path, "w", encoding='utf-8') as file:
  81. file.write(content)
  82. with open(path, "r", encoding='utf-8') as openFile:
  83. fileContent = openFile.read()
  84. fileContent = fileContent.replace('\'', '\"')
  85. fileContent = fileContent.replace('true', 'True')
  86. fileContent = fileContent.replace('false', 'False')
  87. fileContent = fileContent.replace('null', '""')
  88. item = eval(fileContent)
  89. result = []
  90. if item['Successful']:
  91. for it in item['ReturnData']['BizObjectArray']:
  92. result.append({
  93. "objectId": it["ObjectId"],
  94. "Name": it['Name'],
  95. "creator": it["OwnerId"],
  96. "SeqNo": it['SeqNo'],
  97. "mobile": it["F0000005"],
  98. 'customerName': it['F0000007'],
  99. 'enName': it['F0000002'],
  100. 'CreatedTime': it['CreatedTime'],
  101. 'ModifiedTime': it['ModifiedTime'],
  102. 'step': it['F0000010'],
  103. 'address': it['F0000003'],
  104. 'contact': it['F0000008'],
  105. })
  106. # js = json.loads(json.dumps(temp,cls=MyEncoder, indent=4))
  107. return result
  108. return
  109. else:
  110. return False
  111. def formatDateTime(time):
  112. if time == "":
  113. return datetime.now()
  114. date_object = datetime.datetime.strptime(time, "%Y/%m/%d %H:%M:%S")
  115. formatted_date = date_object.strftime("%Y-%m-%d %H:%M:%S")
  116. return formatted_date
  117. def saveDocFile(fileName, htmlText):
  118. date = datetime.now().strftime("%Y%m%d%H%M%S")
  119. filename = f"{date}_{fileName}"
  120. # if not os.path.exists(MEDIA_ROOT):
  121. # os.mkdir(MEDIA_ROOT)
  122. path = os.path.join(MEDIA_ROOT, filename)
  123. # output = pypandoc.convert_text(htmlText, 'docx', format='html')
  124. # doc = Document()
  125. # doc.add_paragraph(output)
  126. # doc.save(path)
  127. return path
  128. # 获取文档文件名称
  129. def getDocxFileName(ext="docx"):
  130. date = datetime.now().strftime("%Y%m%d%H%M%S")
  131. fileName = "output." + ext
  132. filename = f"{date}_{fileName}"
  133. path = os.path.join(MEDIA_ROOT, filename)
  134. return path
  135. def downloadFile(id, fileUrl):
  136. local_filename = os.path.join(MEDIA_ROOT, str(id)+".xlsx")
  137. if os.path.exists(local_filename):
  138. return local_filename
  139. response = requests.get(fileUrl)
  140. # Check if the request was successful
  141. if response.status_code == 200:
  142. # Open the local file in binary write mode and write the content of the remote file to it
  143. with open(local_filename, 'wb') as file:
  144. file.write(response.content)
  145. return local_filename
  146. else:
  147. return ""