models.py 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. # coding=utf-8
  2. import time
  3. import os
  4. from django.conf import settings
  5. from django.db import models
  6. from django.utils import timezone
  7. from apps.WechatTp.models import WechatTp
  8. from utils.wx.wechat import WeChat
  9. from utils.exceptions import CustomError
  10. class WechatApplet(models.Model):
  11. authorizer_appid = models.CharField(max_length=512, verbose_name=u'授权方appid')
  12. secret = models.CharField(max_length=512, verbose_name=u'小程序秘钥', null=True)
  13. authorizer_refresh_token = models.CharField(max_length=512, verbose_name=u'刷新令牌')
  14. authorizer_access_token = models.CharField(max_length=512, verbose_name=u'令牌')
  15. access_token_gtime = models.DateTimeField(verbose_name=u"获取令牌时间")
  16. expires_in = models.IntegerField(verbose_name=u'令牌有效期')
  17. class Meta:
  18. db_table = "wechat_applet"
  19. ordering = ['-id']
  20. index_together = ()
  21. verbose_name = u"小程序"
  22. default_permissions = ()
  23. def getAccessToken(self):
  24. if self.authorizer_access_token:
  25. last_time = time.mktime(self.access_token_gtime.timetuple()) + self.expires_in
  26. now = time.mktime(timezone.now().timetuple())
  27. if last_time > now:
  28. return self.authorizer_access_token
  29. gtime = timezone.now()
  30. res = WeChat.getAccessToken(self.authorizer_appid, self.secret)
  31. self.refreshAccessToken(gtime, res['access_token'], res['expires_in'])
  32. return self.authorizer_access_token
  33. def refreshAccessToken(self, gtime, access_token, expires_in):
  34. self.authorizer_access_token = access_token
  35. self.access_token_gtime = gtime
  36. self.expires_in = expires_in
  37. self.save()
  38. def sendFinishMsg(self, openid, name, address, fault_des, no):
  39. template_id = settings.WEAPP['message_template_finish']
  40. if not template_id:
  41. return
  42. time = timezone.now().strftime('%Y-%m-%d %H:%M:%S')
  43. data = {
  44. 'time5': {'value': time},
  45. 'name4':{'value':name},
  46. 'thing3':{'value':address},
  47. 'thing2':{'value': fault_des},
  48. 'character_string7':{'value': no},
  49. }
  50. page = 'pages/repairList/repairList?sort=yiwangong&name=已完工'
  51. WeChat.sendSubscribeMessage(self.getAccessToken(), openid, template_id, page, data)
  52. def sendWaitCheckMsg(self, openid, name, address, fault_des, no):
  53. template_id = settings.WEAPP['message_template_wait_check']
  54. if not template_id:
  55. return
  56. data = {
  57. 'character_string12': {'value': no},
  58. 'thing1':{'value':'新报修审核'},
  59. 'thing19':{'value':fault_des},
  60. 'name3':{'value': name},
  61. 'thing10':{'value': address},
  62. }
  63. page = '/pages/certificate/certificate'
  64. WeChat.sendSubscribeMessage(self.getAccessToken(), openid, template_id, page, data)
  65. def sendDispatchMsg(self, openid, name, address, fault_des, time, no):
  66. template_id = settings.WEAPP['message_template_dispatch']
  67. if not template_id:
  68. return
  69. data = {
  70. 'character_string1': {'value': no},
  71. 'thing3':{'value':fault_des},
  72. 'time5':{'value':time.strftime('%Y-%m-%d %H:%M:%S')},
  73. 'thing6':{'value': name},
  74. 'thing8':{'value': address},
  75. }
  76. page = '/pages/repairList/repairList?sort=wodepaidan&name=我的派单'
  77. WeChat.sendSubscribeMessage(self.getAccessToken(), openid, template_id, page, data)
  78. def getWXAppCode(self, company_no):
  79. page = 'pages/index/index'
  80. filename = WeChat.getWXAppCode(self.getAccessToken(),page, company_no)
  81. return filename
  82. def getDeviceCode(self, device_id, company_no):
  83. page = 'pages/index/index'
  84. filename = WeChat.getDeviceCode(self.getAccessToken(),page, device_id, company_no)
  85. return filename