1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- # -*- coding: utf-8 -*-
- # !/usr/bin/env python
- import hashlib
- import datetime
- from apilib.monetary import RMB
- from apps.web.core.db import Searchable, MonetaryField
- from mongoengine import StringField, DateTimeField, BooleanField, IntField, DoesNotExist
- class YiKaTongNorther(Searchable):
- northPort = StringField(verbose_name="域名端口 推送数据给对方平台的时候 服务器的地址", default="")
- md5Key = StringField(vebose_name="签名密钥 可以理解为 我方密码")
- meta = {
- "collection": "yi_ka_tong",
- "db_alias": "default"
- }
- def get_sig(self,datadict):
- keyList = list()
- for k in datadict:
- keyList.append(k)
- keyList.sort()
- valueList = list()
- for k in keyList:
- v = datadict[k]
- valueList.append(v)
- signData = '|'.join(valueList)
- signData = signData + '|' + str(self.md5Key)
- md5 = hashlib.md5()
- md5.update(signData.encode('utf-8'))
- sign = md5.hexdigest().upper()
- return sign
- def join_url(self,path):
- return "{ipPort}/{path}".format(
- ipPort=self.northPort,
- path=path
- )
- # 建立一张表储存一卡通的卡详细信息,卡号,状态等
- class YiKaTongCard(Searchable):
- customerId = StringField(verbose_name="一卡通平台唯一识别码", default="")
- userName= StringField(verbose_name="一卡通用户姓名", default="")
- userCode = StringField(verbose_name="个人编号", default="")
- oddFare = MonetaryField(verbose_name="电子账户余额", default = RMB('0.00'))
- custStatus = IntField(verbose_name = "卡状态", default = 1)
- cardNo = StringField(verbose_name="当前物理卡号", default="")
- pastCardNo = StringField(verbose_name="曾用过的物理卡号", default="")
- dateTimeAdded = StringField(verbose_name='设备添加进来的时间', default="")
- dateTimeUpdate = StringField(verbose_name='补卡时间', default="")
- meta = {
- "collection": "yi_ka_tong_card",
- "db_alias": "default"
- }
- @staticmethod
- def get_cardNo(cardNo):
- try:
- obj = YiKaTongCard.objects.get(cardNo=cardNo)
- except:
- return
- return obj.pastCardNo
- @staticmethod
- def update_card(cardInfo):
- cardNo = cardInfo.get("cardNo")
- customerId = str(cardInfo.get("customerId"))
- userName = cardInfo.get("userName")
- userCode = cardInfo.get("userCode")
- oddFare = cardInfo.get("oddFare")
- custStatus = cardInfo.get("custStatus")
- ts = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
- try:
- obj = YiKaTongCard.objects.get(customerId=customerId)
- except:
- obj = YiKaTongCard(customerId=customerId, userName=userName, userCode=userCode, oddFare=RMB(oddFare),
- custStatus=custStatus, cardNo=cardNo, dateTimeAdded=ts)
- obj.save()
- else:
- obj.customerId = customerId
- obj.userName = userName
- obj.userCode = userCode
- obj.oddFare = RMB(oddFare)
- obj.custStatus = custStatus
- if cardNo != obj.cardNo:
- obj.pastCardNo = obj.cardNo
- obj.cardNo = cardNo
- obj.dateTimeUpdate = ts
- obj.save()
|