views.py 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. # coding=utf-8
  2. import json
  3. from django.db import transaction
  4. from rest_framework.views import APIView
  5. from rest_framework.decorators import action
  6. from utils.custom_modelviewset import CustomModelViewSet
  7. from utils.permission import IsAdministratorUser
  8. from utils import response_ok
  9. from apps.log.models import BizLog
  10. from apps.admin import admin_log
  11. from .serializers import WechatAppletSerializer
  12. from apps.WechatApplet.filters import WechatAppletFilter
  13. from apps.WechatApplet.models import WechatApplet
  14. from apps.WechatTp.models import WechatTp
  15. class TemplateListViewSet(APIView):
  16. permission_classes = [IsAdministratorUser, ]
  17. def get(self, request):
  18. tp = WechatTp.getDefault()
  19. ret = tp.getTemplateList()
  20. return response_ok(ret)
  21. class WechatAppletViewSet(CustomModelViewSet):
  22. # permission_classes = [IsAdministratorUser, ]
  23. queryset = WechatApplet.objects.filter()
  24. serializer_class = WechatAppletSerializer
  25. def filter_queryset(self, queryset):
  26. f = WechatAppletFilter(self.request.GET, queryset=queryset)
  27. return f.qs
  28. @action(methods=['post'], detail=True)
  29. def upload_code(self, request, pk):
  30. # 上传代码
  31. template_id = request.POST.get('template_id')
  32. user_version = request.POST.get('user_version')
  33. user_desc = request.POST.get('user_desc')
  34. app = WechatApplet.getById(pk)
  35. with transaction.atomic():
  36. app.uploadCode(template_id, user_version, user_desc)
  37. admin_log(request.user, BizLog.INSERT,u'小程序上传审核代码,id=%d' % app.id, request.POST.dict())
  38. return response_ok()
  39. @action(methods=['post'], detail=False)
  40. def batch_upload_code(self, request):
  41. # 批量上传代码
  42. template_id = request.POST.get('template_id')
  43. user_version = request.POST.get('user_version')
  44. user_desc = request.POST.get('user_desc')
  45. app_ids = json.loads(request.POST.get('ids'))
  46. apps = WechatApplet.objects.filter(id__in=app_ids)
  47. for app in apps:
  48. try:
  49. with transaction.atomic():
  50. app.uploadCode(template_id, user_version, user_desc)
  51. except:
  52. pass
  53. admin_log(request.user, BizLog.INSERT, u'小程序批量上传审核代码', request.POST.dict())
  54. return response_ok()
  55. @action(methods=['post'], detail=False)
  56. def refresh_audit_status(self, request):
  57. # 查询最新一次提交代码的审核状态 多选更新 审核状态
  58. app_ids = json.loads(request.POST.get('ids'))
  59. for app_id in app_ids:
  60. app = WechatApplet.getById(app_id)
  61. app.refreshAuditStatus()
  62. return response_ok()
  63. @action(methods=['post'], detail=True)
  64. def set_secret(self, request, pk):
  65. secret = request.POST.get('secret')
  66. app = WechatApplet.getById(pk)
  67. with transaction.atomic():
  68. app.secret = secret
  69. app.save()
  70. admin_log(request.user, BizLog.INSERT, u'设置小程序秘钥, id=%d' % app.id, secret)
  71. return response_ok()
  72. @action(methods=['post'], detail=True)
  73. def set_merchant(self, request, pk):
  74. tenant_num = request.POST.get('tenant_num')
  75. tenant_key = request.POST.get('tenant_key')
  76. app = WechatApplet.getById(pk)
  77. with transaction.atomic():
  78. app.tenant_num = tenant_num
  79. app.tenant_key = tenant_key
  80. app.save()
  81. admin_log(request.user, BizLog.INSERT, u'设置小程序商户号和商户秘钥, id=%d' % app.id)
  82. return response_ok()
  83. @action(methods=['post'], detail=False)
  84. def add_plugin(self, request):
  85. app_ids = json.loads(request.POST.get('ids'))
  86. for app_id in app_ids:
  87. apps = WechatApplet.getById(app_id)
  88. apps.addPlugin()
  89. return response_ok()
  90. @action(methods=['post'], detail=False)
  91. def release(self, request):
  92. app_ids = json.loads(request.POST.get('ids'))
  93. for app_id in app_ids:
  94. app = WechatApplet.getById(app_id)
  95. app.releaseApplet()
  96. return response_ok()
  97. @action(methods=['post'], detail=True)
  98. def upload_cert(self, request, pk):
  99. file = request.FILES.get('file', None)
  100. app = WechatApplet.getById(pk)
  101. with transaction.atomic():
  102. app.upload_cert_file(file)
  103. admin_log(request.user, BizLog.INSERT, u'设置小程序企业支付api证书, id=%d' % app.id)
  104. return response_ok()