knowledge.py 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298
  1. from rest_framework.views import APIView
  2. from rest_framework.response import Response
  3. from django.core.paginator import Paginator
  4. import time
  5. from smartfarming.models.agriculture import KnowledgeManage, KnowledgeCategory, Information
  6. from smartfarming.serializers.knowledge_serializer import KnowledgeCategorySerializer, KnowledgeManageSerializer, InformationSerializer
  7. from django.db.models import Q
  8. class KnowledgeCategoryAPIView(APIView):
  9. def post(self, request):
  10. # 知识分类列表
  11. request_data = request.data
  12. if (not request_data.get("pagenum")) and (not request_data.get("pagesize")):
  13. queryset = KnowledgeCategory.objects.filter(is_delete=1).order_by("-uptime","-addtime")
  14. serializers = KnowledgeCategorySerializer(queryset, many=True)
  15. return Response({"code": 0, "msg": "success", "data": serializers.data})
  16. page_num = int(request_data.get("pagenum", 1)) if request_data.get("pagenum") else 1
  17. page_size = int(request_data.get("pagesize", 10)) if request_data.get("pagesize") else 10
  18. title = request_data.get("title")
  19. if title:
  20. queryset = KnowledgeCategory.objects.filter(is_delete=1, title=title).order_by("-uptime","-addtime")
  21. else:
  22. queryset = KnowledgeCategory.objects.filter(is_delete=1).order_by("-uptime","-addtime")
  23. total_obj = queryset.count()
  24. paginator = Paginator(queryset, page_size)
  25. page_obj = paginator.get_page(page_num)
  26. serializers = KnowledgeCategorySerializer(page_obj, many=True)
  27. return Response({"code": 0, "msg": "success", "data": serializers.data, "count": total_obj})
  28. class KnowledgeCategoryAddAPIView(APIView):
  29. def post(self, request):
  30. # 新增知识分类
  31. try:
  32. request_data = request.data
  33. title = request_data.get("title")
  34. knowledge_category, is_created= KnowledgeCategory.objects.get_or_create(
  35. title = title,
  36. is_delete=1,
  37. defaults={
  38. "title": title,
  39. "uptime": int(time.time()),
  40. "is_use": 1,
  41. "addtime": int(time.time())
  42. }
  43. )
  44. if not is_created:
  45. return Response({"code": 2, "msg": "该知识分类已存在,请检查"})
  46. else:
  47. return Response({"code": 0, "msg": "success"})
  48. except Exception as e:
  49. print(e)
  50. return Response({"code": 2, "msg": "fail"})
  51. class KnowledgeCategoryUpdateAPIView(APIView):
  52. def post(self, request):
  53. # 知识分类修改
  54. try:
  55. request_data = request.data
  56. category_id = request_data.get("category_id")
  57. title = request_data.get("title")
  58. order = request_data.get("order")
  59. is_use = request_data.get("is_use")
  60. category = KnowledgeCategory.objects.get(id=category_id)
  61. if title:
  62. try:
  63. kg = KnowledgeCategory.objects.get(title=title)
  64. if kg.id != category_id:
  65. return Response({"code": 0, "msg": "该知识分类已存在,请检查"})
  66. except Exception as e:
  67. pass
  68. category.title = title
  69. category.uptime = int(time.time())
  70. if order:
  71. category.order = order
  72. if is_use:
  73. category.is_use = is_use
  74. category.save()
  75. return Response({"code": 0, "msg": "success"})
  76. except:
  77. return Response({"code": 2, "msg": "fail"})
  78. class KnowledgeCategoryDeleteAPIView(APIView):
  79. def post(self, request):
  80. # 知识分类删除
  81. request_data = request.data
  82. category_id = request_data.get("category_id")
  83. manage = KnowledgeManage.objects.filter(category=category_id)
  84. if manage:
  85. return Response({"code": 2, "msg": "该知识分类已被知识信息引用,请检查"})
  86. KnowledgeCategory.objects.filter(id=category_id).update(is_delete=0)
  87. return Response({"code": 0, "msg": "success"})
  88. class KnowledgeManageAPIView(APIView):
  89. def post(self, request):
  90. # 知识信息列表
  91. request_data = request.data
  92. category_id = request_data.get("category_id")
  93. related_plan = request_data.get("related_plan")
  94. page_num = int(request_data.get("pagenum", 1)) if request_data.get("pagenum") else 1
  95. page_size = int(request_data.get("pagesize", 10)) if request_data.get("pagesize") else 10
  96. if category_id and related_plan:
  97. queryset = KnowledgeManage.objects.filter( Q(is_delete=1) & Q(related_plan__icontains=related_plan) & Q(category=category_id)).order_by("-addtime")
  98. elif category_id and not related_plan:
  99. queryset = KnowledgeManage.objects.filter(Q(is_delete=1) & Q(category=category_id) ).order_by("-addtime")
  100. elif related_plan and not category_id:
  101. queryset = KnowledgeManage.objects.filter( Q(is_delete=1) & Q(related_plan__icontains=related_plan)).order_by("-addtime")
  102. else:
  103. queryset = KnowledgeManage.objects.filter(is_delete=1).order_by("-addtime")
  104. total_obj = queryset.count()
  105. paginator = Paginator(queryset, page_size)
  106. page_obj = paginator.get_page(page_num)
  107. serializers = KnowledgeManageSerializer(page_obj, many=True)
  108. return Response({"code": 0, "msg": "success", "data": serializers.data, "count": total_obj})
  109. class KnowledgeManageAddAPIView(APIView):
  110. def post(self, request):
  111. # 知识信息新增
  112. try:
  113. request_data = request.data
  114. category_id = request_data.get("category_id")
  115. related_plan = request_data.get("related_plan", "")
  116. title = request_data.get("title")
  117. is_top = request_data.get("is_top")
  118. if not is_top:
  119. is_top = 0
  120. img = request_data.get("img", "")
  121. origin = request_data.get("origin", "")
  122. content = request_data.get("content", "")
  123. is_created = KnowledgeManage.objects.create(
  124. category = category_id,
  125. related_plan = related_plan,
  126. title = title,
  127. is_top = is_top,
  128. img = img,
  129. origin = origin,
  130. content = content,
  131. addtime = int(time.time())
  132. )
  133. if is_created:
  134. return Response({"code": 0, "msg": "success"})
  135. else:
  136. return Response({"code": 2, "msg": "创建失败"})
  137. except:
  138. return Response({"code": 2, "msg": "fail"})
  139. class KnowledgeManageUpdateAPIView(APIView):
  140. def post(self, request):
  141. # 知识信息更新
  142. try:
  143. request_data = request.data
  144. update_top = request_data.get("update_top")
  145. is_top = request_data.get("is_top")
  146. manage_id = request_data.get("manage_id")
  147. if update_top:
  148. try:
  149. KnowledgeManage.objects.filter(id=manage_id).update(is_top=is_top)
  150. return Response({"code": 0, "msg": "success"})
  151. except Exception as e:
  152. return Response({"code": 2, "msg": "更新失败"})
  153. category_id = request_data.get("category_id")
  154. related_plan = request_data.get("related_plan", "")
  155. title = request_data.get("title")
  156. img = request_data.get("img", "")
  157. origin = request_data.get("origin", "")
  158. content = request_data.get("content", "")
  159. is_created = KnowledgeManage.objects.filter(id=manage_id).update(
  160. category = category_id,
  161. related_plan = related_plan,
  162. title = title,
  163. is_top = 1 if is_top else 0,
  164. img = img,
  165. origin = origin,
  166. content = content
  167. )
  168. if is_created:
  169. return Response({"code": 0, "msg": "success"})
  170. else:
  171. return Response({"code": 2, "msg": "更新失败"})
  172. except:
  173. return Response({"code": 2, "msg": "fail"})
  174. class KnowledgeManageDeleteAPIView(APIView):
  175. def post(self, request):
  176. # 知识信息删除
  177. request_data = request.data
  178. manage_id = request_data.get("manage_id")
  179. is_update = KnowledgeManage.objects.filter(id=manage_id).update(is_delete=0)
  180. if is_update:
  181. return Response({"code": 0, "msg": "success"})
  182. else:
  183. return Response({"code": 2, "msg": "删除失败"})
  184. class KnowledgeManageDetailAPIView(APIView):
  185. def post(self, request):
  186. # 知识信息更新
  187. try:
  188. request_data = request.data
  189. manage_id = request_data.get("manage_id")
  190. queryset = KnowledgeManage.objects.filter(is_delete=1, id=manage_id).order_by("-addtime").first()
  191. serializers = KnowledgeManageSerializer(queryset)
  192. return Response({"code": 0, "msg": "success", "data": serializers.data})
  193. except:
  194. return Response({"code": 2, "msg": "fail"})
  195. class InformationAPIView(APIView):
  196. def post(self, request):
  197. # 研判信息详情
  198. request_data = request.data
  199. title = request_data.get("title")
  200. page_num = int(request_data.get("pagenum", 1)) if request_data.get("pagenum") else 1
  201. page_size = int(request_data.get("pagesize", 10)) if request_data.get("pagesize") else 10
  202. if title:
  203. queryset = Information.objects.filter(is_delete=1, title__icontains=title).order_by("-addtime")
  204. else:
  205. queryset = Information.objects.filter(is_delete=1).order_by("-addtime")
  206. total_obj = queryset.count()
  207. paginator = Paginator(queryset, page_size)
  208. page_obj = paginator.get_page(page_num)
  209. serializers = InformationSerializer(page_obj, many=True)
  210. return Response({"code": 0, "msg": "success", "data": serializers.data, "count": total_obj})
  211. class InformationAddAPIView(APIView):
  212. def post(self, request):
  213. # 研判信息详情
  214. request_data = request.data
  215. myuser = request.myuser
  216. title = request_data.get("title")
  217. content = request_data.get("content")
  218. user = myuser.uid
  219. information = Information.objects.create(
  220. title = title,
  221. content = content,
  222. addtime = int(time.time()),
  223. user = user
  224. )
  225. if information:
  226. return Response({"code": 0, "msg": "success"})
  227. else:
  228. return Response({"code": 2, "msg": "失败"})
  229. class InformationUpdateAPIView(APIView):
  230. def post(self, request):
  231. # 研判信息更新
  232. try:
  233. request_data = request.data
  234. information_id = request_data.get("information_id")
  235. title = request_data.get("title")
  236. content = request_data.get("content")
  237. information = Information.objects.filter(id=information_id).update(
  238. title = title,
  239. content = content
  240. )
  241. if information:
  242. return Response({"code": 0, "msg": "success"})
  243. else:
  244. return Response({"code": 2, "msg": "失败"})
  245. except:
  246. return Response({"code": 2, "msg": "fail"})
  247. class InformationDeleteAPIView(APIView):
  248. def post(self, request):
  249. # 研判信息更新
  250. try:
  251. request_data = request.data
  252. information_id = request_data.get("information_id")
  253. is_delete = Information.objects.filter(id=information_id).update(is_delete=0)
  254. if is_delete:
  255. return Response({"code": 0, "msg": "success"})
  256. else:
  257. return Response({"code": 2, "msg": "失败"})
  258. except:
  259. return Response({"code": 2, "msg": "fail"})