models.py 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. # -*- coding: utf-8 -*-
  2. #!/usr/bin/env python
  3. import datetime
  4. import logging
  5. from mongoengine import StringField, DateTimeField, ObjectIdField, BooleanField, IntField, ListField
  6. from mongoengine.fields import DictField
  7. from apilib.monetary import RMB
  8. from apps.web.core.db import Searchable, MonetaryField
  9. from apps.web.common.models import UserSearchable
  10. logger = logging.getLogger(__name__)
  11. class SuperManager(UserSearchable):
  12. brandName = StringField(verbose_name = '品牌名称', default = '')
  13. logo = StringField(verbose_name = '品牌LOGO', default = '')
  14. search_fields = ('username', 'nickname', 'remarks')
  15. meta = {
  16. 'collection': 'super_manager',
  17. 'db_alias': 'default'
  18. }
  19. def to_dict(self):
  20. rv = super(SuperManager, self).to_dict()
  21. rv.update({'brandName': self.brandName,
  22. 'logo': self.logo})
  23. class WebLog(Searchable):
  24. title = StringField()
  25. content = StringField()
  26. superManagerId = ObjectIdField()
  27. createdTime = DateTimeField(default=datetime.datetime.now)
  28. search_fields = ('title', 'content')
  29. meta = {'collection': 'weblogs', 'db_alias': 'default'}
  30. def __repr__(self): return (u'<WebLog title=%s>' % (self.title,)).encode('utf-8')
  31. def to_dict(self):
  32. return {
  33. 'id': str(self.id),
  34. 'title': self.title,
  35. 'content': self.content,
  36. 'createdTime': self.createdTime
  37. }
  38. class SuperManagerRefundRecords(Searchable):
  39. refundType = StringField(verbose_name='退款类型 =: (simCard|others)', default='others')
  40. money = MonetaryField(verbose_name='充值', default=RMB('0.00'))
  41. refundDetail = DictField(verbose_name = '附带参数', default = {})
  42. description = StringField(verbose_name='退款描述', default='')
  43. dateTimeAdded = DateTimeField(default=datetime.datetime.now)
  44. search_fields = ('refundType')
  45. meta = {'collection': 'super_manager_refund_records'}
  46. @classmethod
  47. def create_refund_records(cls, refundType, money, refundDetail, description):
  48. try:
  49. cls(refundType=refundType,
  50. money=money,
  51. refundDetail=refundDetail,
  52. description=description).save()
  53. except Exception, e:
  54. logger.exception(e)
  55. class UserComplaintRecord(Searchable):
  56. mchid = StringField(verbose_name=u'商户号', default='1510834731')
  57. complaint_id = StringField(verbose_name=u'投诉单号')
  58. complaint_detail = StringField(verbose_name=u'投诉详情', default='', max_length=300)
  59. complaint_state = StringField(verbose_name=u'投诉单状态(PENGING / PROCESSING / PROCESSED)', default='PENDING')
  60. payer_phone = StringField(verbose_name=u'投诉人联系方式', default='')
  61. payer_openid = StringField(verbose_name=u'投诉人openId', default='')
  62. complaint_full_refunded = BooleanField(verbose_name=u'是否已经退款', default=False)
  63. incoming_user_response = BooleanField(verbose_name=u'是否有未处理留言', default=False)
  64. user_complaint_times = IntField(verbose_name=u'用户投诉次数')
  65. complaint_order_info = ListField(verbose_name=u'投诉单号详情', default=[])
  66. dateTimeAdded = DateTimeField(verbose_name=u'投诉时间', default=datetime.datetime.now)
  67. meta = {'collection': 'user_complaint_record'}
  68. search_fields = ('mchid', 'wxOrderNo', 'orderNo', 'complaint_id')
  69. @classmethod
  70. def create_user_complaint_record(cls, dataList):
  71. if dataList == []:
  72. return
  73. else:
  74. for cs in dataList:
  75. templateData = {
  76. 'complaint_id': '',
  77. 'complaint_detail': '',
  78. 'complaint_state:': '',
  79. 'payer_phone:': '',
  80. 'payer_openid': '',
  81. 'complaint_full_refunded:': False,
  82. 'incoming_user_response:': False,
  83. 'user_complaint_times:': 1,
  84. 'complaint_order_info': []
  85. }
  86. for k, v in cs.items():
  87. if k == 'complaint_id':
  88. templateData.update({'complaint_id': v})
  89. if k == 'complaint_detail':
  90. templateData.update({'complaint_detail': v})
  91. if k == 'complaint_state':
  92. templateData.update({'complaint_state': v})
  93. if k == 'payer_phone':
  94. templateData.update({'payer_phone': v})
  95. if k == 'payer_openid':
  96. templateData.update({'payer_openid': v})
  97. if k == 'complaint_full_refunded':
  98. templateData.update({'complaint_full_refunded': v})
  99. if k == 'incoming_user_response':
  100. templateData.update({'incoming_user_response': v})
  101. if k == 'user_complaint_times':
  102. templateData.update({'user_complaint_times': v})
  103. if k == 'complaint_full_refunded':
  104. templateData.update({'complaint_full_refunded': v})
  105. if k == 'complaint_order_info':
  106. templateData.update({'complaint_order_info': v})
  107. try:
  108. cls(
  109. complaint_id=templateData['complaint_id'],
  110. complaint_detail=templateData['complaint_detail'],
  111. complaint_state=templateData['complaint_state'],
  112. payer_phone=templateData['payer_phone'],
  113. payer_openid=templateData['payer_openid'],
  114. complaint_full_refunded=templateData['complaint_full_refunded'],
  115. incoming_user_response=templateData['incoming_user_response'],
  116. user_complaint_times=templateData['user_complaint_times'],
  117. complaint_order_info=templateData['complaint_order_info']
  118. ).save()
  119. except Exception as e:
  120. logger.exception(e)