models.py 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. # -*- coding: utf-8 -*-
  2. # !/usr/bin/env python
  3. import hashlib
  4. import datetime
  5. from apilib.monetary import RMB
  6. from apps.web.core.db import Searchable, MonetaryField
  7. from mongoengine import StringField, DateTimeField, BooleanField, IntField, DoesNotExist
  8. class YiKaTongNorther(Searchable):
  9. northPort = StringField(verbose_name="域名端口 推送数据给对方平台的时候 服务器的地址", default="")
  10. md5Key = StringField(vebose_name="签名密钥 可以理解为 我方密码")
  11. meta = {
  12. "collection": "yi_ka_tong",
  13. "db_alias": "default"
  14. }
  15. def get_sig(self,datadict):
  16. keyList = list()
  17. for k in datadict:
  18. keyList.append(k)
  19. keyList.sort()
  20. valueList = list()
  21. for k in keyList:
  22. v = datadict[k]
  23. valueList.append(v)
  24. signData = '|'.join(valueList)
  25. signData = signData + '|' + str(self.md5Key)
  26. md5 = hashlib.md5()
  27. md5.update(signData.encode('utf-8'))
  28. sign = md5.hexdigest().upper()
  29. return sign
  30. def join_url(self,path):
  31. return "{ipPort}/{path}".format(
  32. ipPort=self.northPort,
  33. path=path
  34. )
  35. # 建立一张表储存一卡通的卡详细信息,卡号,状态等
  36. class YiKaTongCard(Searchable):
  37. customerId = StringField(verbose_name="一卡通平台唯一识别码", default="")
  38. userName= StringField(verbose_name="一卡通用户姓名", default="")
  39. userCode = StringField(verbose_name="个人编号", default="")
  40. oddFare = MonetaryField(verbose_name="电子账户余额", default = RMB('0.00'))
  41. custStatus = IntField(verbose_name = "卡状态", default = 1)
  42. cardNo = StringField(verbose_name="当前物理卡号", default="")
  43. pastCardNo = StringField(verbose_name="曾用过的物理卡号", default="")
  44. dateTimeAdded = StringField(verbose_name='设备添加进来的时间', default="")
  45. dateTimeUpdate = StringField(verbose_name='补卡时间', default="")
  46. meta = {
  47. "collection": "yi_ka_tong_card",
  48. "db_alias": "default"
  49. }
  50. @staticmethod
  51. def get_cardNo(cardNo):
  52. try:
  53. obj = YiKaTongCard.objects.get(cardNo=cardNo)
  54. except:
  55. return
  56. return obj.pastCardNo
  57. @staticmethod
  58. def update_card(cardInfo):
  59. cardNo = cardInfo.get("cardNo")
  60. customerId = str(cardInfo.get("customerId"))
  61. userName = cardInfo.get("userName")
  62. userCode = cardInfo.get("userCode")
  63. oddFare = cardInfo.get("oddFare")
  64. custStatus = cardInfo.get("custStatus")
  65. ts = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
  66. try:
  67. obj = YiKaTongCard.objects.get(customerId=customerId)
  68. except:
  69. obj = YiKaTongCard(customerId=customerId, userName=userName, userCode=userCode, oddFare=RMB(oddFare),
  70. custStatus=custStatus, cardNo=cardNo, dateTimeAdded=ts)
  71. obj.save()
  72. else:
  73. obj.customerId = customerId
  74. obj.userName = userName
  75. obj.userCode = userCode
  76. obj.oddFare = RMB(oddFare)
  77. obj.custStatus = custStatus
  78. if cardNo != obj.cardNo:
  79. obj.pastCardNo = obj.cardNo
  80. obj.cardNo = cardNo
  81. obj.dateTimeUpdate = ts
  82. obj.save()