拍爱

models.py 12KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298
  1. # -*- coding: utf-8 -*-
  2. from django.db import models
  3. from django.utils.translation import ugettext_lazy as _
  4. from jsonfield import JSONField
  5. from pai2.basemodels import CreateUpdateMixin
  6. class LensmanInfo(CreateUpdateMixin):
  7. MALE = 1
  8. FEMALE = 0
  9. SEX_TYPE = (
  10. (MALE, u'男'),
  11. (FEMALE, u'女'),
  12. )
  13. REFUSED = -1
  14. UNVERIFIED = 0
  15. ACTIVATED = 1
  16. DISABLED = 2
  17. DELETED = 3
  18. ASSIGN = 10
  19. USER_STATUS = (
  20. (REFUSED, u'已拒绝'),
  21. (UNVERIFIED, u'未验证'),
  22. (ACTIVATED, u'已激活'),
  23. (DISABLED, u'已禁用'),
  24. (DELETED, u'已删除'),
  25. (ASSIGN, u'已分配'),
  26. )
  27. lensman_id = models.CharField(_(u'lensman_id'), max_length=255, blank=True, null=True, help_text=u'摄影师唯一标识', db_index=True, unique=True)
  28. unionid = models.CharField(_(u'unionid'), max_length=255, blank=True, null=True, help_text=u'微信 Union ID', db_index=True, unique=True)
  29. username = models.CharField(_(u'username'), max_length=255, blank=True, null=True, help_text=u'摄影师用户名', db_index=True, unique=True)
  30. password = models.CharField(_(u'password'), max_length=255, blank=True, null=True, help_text=u'摄影师密码')
  31. encryption = models.CharField(_(u'encryption'), max_length=255, blank=True, null=True, help_text=u'摄影师密码')
  32. name = models.CharField(_(u'name'), max_length=255, blank=True, null=True, help_text=u'摄影师姓名')
  33. sex = models.IntegerField(_(u'sex'), choices=SEX_TYPE, default=MALE, help_text=u'摄影师性别')
  34. phone = models.CharField(_(u'phone'), max_length=255, blank=True, null=True, help_text=u'摄影师电话', db_index=True, unique=True)
  35. location = models.CharField(_(u'location'), max_length=255, blank=True, null=True, help_text=u'摄影师地址')
  36. proportion = models.FloatField(_(u'proportion'), default=1.0, help_text=u'摄影师分成比例(0.0 ~ 1.0)')
  37. balance = models.IntegerField(_(u'balance'), default=0, help_text=u'摄影师余额(分)')
  38. user_status = models.IntegerField(_(u'user_status'), choices=USER_STATUS, default=UNVERIFIED)
  39. refused_reason = models.TextField(_(u'refused_reason'), blank=True, null=True, help_text=u'审核拒绝原因')
  40. signup_ip = models.CharField(_(u'signup_ip'), max_length=255, blank=True, null=True, help_text=_(u'注册IP'))
  41. login_ip = models.CharField(_(u'login_ip'), max_length=255, blank=True, null=True, help_text=_(u'登录IP'))
  42. login_at = models.DateTimeField(_(u'login_at'), blank=True, null=True, help_text=_(u'登录时间'))
  43. class Meta:
  44. verbose_name = _(u'lensmaninfo')
  45. verbose_name_plural = _(u'lensmaninfo')
  46. def __unicode__(self):
  47. return unicode(self.pk)
  48. @property
  49. def data(self):
  50. return {
  51. 'name': self.name,
  52. 'sex': self.sex,
  53. 'phone': self.phone,
  54. 'location': self.location,
  55. 'status': self.user_status,
  56. 'refused_reason': self.refused_reason,
  57. }
  58. class LensmanLoginLogInfo(CreateUpdateMixin):
  59. SUCCESS = 0
  60. PWD_ERROR = 1
  61. OTHER = 2
  62. LOGIN_RESULT = (
  63. (SUCCESS, u'登录成功'),
  64. (PWD_ERROR, u'密码错误'),
  65. (OTHER, u'其他'),
  66. )
  67. lensman_id = models.CharField(_(u'lensman_id'), max_length=255, blank=True, null=True, help_text=u'摄影师唯一标识', db_index=True)
  68. login_ip = models.CharField(_(u'login_ip'), max_length=255, blank=True, null=True, help_text=_(u'登录IP'))
  69. login_result = models.IntegerField(_(u'login_result'), choices=LOGIN_RESULT, default=SUCCESS)
  70. class Meta:
  71. verbose_name = _(u'lensmanloginloginfo')
  72. verbose_name_plural = _(u'lensmanloginloginfo')
  73. def __unicode__(self):
  74. return unicode(self.pk)
  75. class LensmanIncomeExpensesInfo(CreateUpdateMixin):
  76. INCOME = 0
  77. EXPENSE = 1
  78. TYPE = (
  79. (INCOME, u'收入'),
  80. (EXPENSE, u'支出'),
  81. )
  82. lensman_id = models.CharField(_(u'lensman_id'), max_length=255, blank=True, null=True, help_text=u'摄影师唯一标识', db_index=True)
  83. photo_id = models.CharField(_(u'photo_id'), max_length=255, blank=True, null=True, help_text=u'照片唯一标识', db_index=True)
  84. type = models.IntegerField(_(u'type'), choices=TYPE, default=INCOME, help_text=u'收支类别')
  85. amount = models.IntegerField(_(u'amount'), default=0, help_text=u'余额增减数量(分)')
  86. balance = models.IntegerField(_(u'balance'), default=0, help_text=u'余额增减后数量(分)')
  87. remark = models.CharField(_(u'remark'), max_length=255, blank=True, null=True, help_text=u'备注')
  88. class Meta:
  89. verbose_name = _(u'lensmanincomeexpensesinfo')
  90. verbose_name_plural = _(u'lensmanincomeexpensesinfo')
  91. def __unicode__(self):
  92. return unicode(self.pk)
  93. class WechatInfo(CreateUpdateMixin):
  94. MALE = 1
  95. FEMALE = 0
  96. SEX_TYPE = (
  97. (MALE, u'男'),
  98. (FEMALE, u'女'),
  99. )
  100. unionid = models.CharField(_(u'unionid'), max_length=255, blank=True, null=True, help_text=u'微信 Union ID')
  101. openids = JSONField(_(u'openids'), blank=True, null=True, help_text=u'微信 Open IDs')
  102. sex = models.IntegerField(_(u'sex'), choices=SEX_TYPE, default=MALE, help_text=u'用户性别')
  103. nickname = models.CharField(_(u'nickname'), max_length=255, blank=True, null=True, help_text=u'用户昵称')
  104. headimgurl = models.CharField(_(u'headimgurl'), max_length=255, blank=True, null=True, help_text=u'用户头像')
  105. country = models.CharField(_(u'country'), max_length=255, blank=True, null=True, help_text=u'用户国家')
  106. province = models.CharField(_(u'province'), max_length=255, blank=True, null=True, help_text=u'用户省份')
  107. city = models.CharField(_(u'city'), max_length=255, blank=True, null=True, help_text=u'用户城市')
  108. location = models.CharField(_(u'location'), max_length=255, blank=True, null=True, help_text=u'用户地址')
  109. class Meta:
  110. verbose_name = _(u'wechatinfo')
  111. verbose_name_plural = _(u'wechatinfo')
  112. def __unicode__(self):
  113. return unicode(self.pk)
  114. class UserInfo(CreateUpdateMixin):
  115. APP_USER = 0
  116. WX_USER = 1
  117. GUEST_USER = 9
  118. LENSMAN_USER = 10
  119. USER_FROM = (
  120. (APP_USER, u'APP 创建用户'),
  121. (WX_USER, u'微信授权用户'),
  122. (GUEST_USER, u'游客用户'),
  123. (LENSMAN_USER, u'摄影师用户'),
  124. )
  125. UNVERIFIED = 0
  126. ACTIVATED = 1
  127. DISABLED = 2
  128. DELETED = 3
  129. ASSIGN = 10
  130. USER_STATUS = (
  131. (UNVERIFIED, u'未验证'),
  132. (ACTIVATED, u'已激活'),
  133. (DISABLED, u'已禁用'),
  134. (DELETED, u'已删除'),
  135. (ASSIGN, u'已分配'),
  136. )
  137. MALE = 1
  138. FEMALE = 0
  139. SEX_TYPE = (
  140. (MALE, u'男'),
  141. (FEMALE, u'女'),
  142. )
  143. user_id = models.CharField(_(u'user_id'), max_length=255, blank=True, null=True, help_text=u'用户唯一标识', db_index=True, unique=True)
  144. user_from = models.IntegerField(_(u'user_from'), choices=USER_FROM, default=APP_USER, help_text=u'用户来源')
  145. uuid = models.CharField(_(u'uuid'), max_length=255, blank=True, null=True, help_text=u'通用唯一识别码 (Universally Unique Identifier)', db_index=True)
  146. # APP 创建用户
  147. username = models.CharField(_(u'username'), max_length=255, blank=True, null=True, help_text=u'用户用户名', db_index=True, unique=True)
  148. password = models.CharField(_(u'password'), max_length=255, blank=True, null=True, help_text=u'用户密码')
  149. # 微信授权用户
  150. openid = models.CharField(_(u'openid'), max_length=255, blank=True, null=True, help_text=u'微信 Open ID', db_index=True, unique=True)
  151. unionid = models.CharField(_(u'unionid'), max_length=255, blank=True, null=True, help_text=u'微信 Union ID', db_index=True, unique=True)
  152. # 用户基本信息
  153. name = models.CharField(_(u'name'), max_length=255, blank=True, null=True, help_text=u'用户姓名')
  154. sex = models.IntegerField(_(u'sex'), choices=SEX_TYPE, default=MALE, help_text=u'用户性别')
  155. nickname = models.CharField(_(u'nickname'), max_length=255, blank=True, null=True, help_text=u'用户昵称')
  156. avatar = models.CharField(_(u'avatar'), max_length=255, blank=True, null=True, help_text=u'用户头像')
  157. phone = models.CharField(_(u'phone'), max_length=255, blank=True, null=True, help_text=u'用户电话', db_index=True, unique=True)
  158. country = models.CharField(_(u'country'), max_length=255, blank=True, null=True, help_text=u'用户国家')
  159. province = models.CharField(_(u'province'), max_length=255, blank=True, null=True, help_text=u'用户省份')
  160. city = models.CharField(_(u'city'), max_length=255, blank=True, null=True, help_text=u'用户城市')
  161. location = models.CharField(_(u'location'), max_length=255, blank=True, null=True, help_text=u'用户地址')
  162. balance = models.IntegerField(_(u'balance'), default=0, help_text=u'用户余额(分)')
  163. user_status = models.IntegerField(_(u'user_status'), choices=USER_STATUS, default=UNVERIFIED)
  164. assign_ip = models.CharField(_(u'assign_ip'), max_length=255, blank=True, null=True, help_text=_(u'分配IP'))
  165. assign_at = models.DateTimeField(_(u'assign_at'), blank=True, null=True, help_text=_(u'分配时间'))
  166. signup_ip = models.CharField(_(u'signup_ip'), max_length=255, blank=True, null=True, help_text=_(u'注册IP'))
  167. signup_at = models.DateTimeField(_(u'signup_at'), blank=True, null=True, help_text=_(u'注册时间'))
  168. login_ip = models.CharField(_(u'login_ip'), max_length=255, blank=True, null=True, help_text=_(u'登录IP'))
  169. login_at = models.DateTimeField(_(u'login_at'), blank=True, null=True, help_text=_(u'登录时间'))
  170. class Meta:
  171. verbose_name = _(u'userinfo')
  172. verbose_name_plural = _(u'userinfo')
  173. def __unicode__(self):
  174. return unicode(self.pk)
  175. @property
  176. def final_nickname(self):
  177. if self.user_from == self.APP_USER:
  178. return self.username
  179. elif self.user_from == self.WX_USER:
  180. return self.nickname
  181. elif self.user_from == self.GUEST_USER:
  182. return self.nickname
  183. elif self.user_from == self.LENSMAN_USER:
  184. return self.name
  185. return self.nickname
  186. @property
  187. def data(self):
  188. return {
  189. 'user_id': self.user_id,
  190. 'username': self.username,
  191. 'nickname': self.nickname,
  192. }
  193. class UserLoginLogInfo(CreateUpdateMixin):
  194. SUCCESS = 0
  195. PWD_ERROR = 1
  196. OTHER = 2
  197. LOGIN_RESULT = (
  198. (SUCCESS, u'登录成功'),
  199. (PWD_ERROR, u'密码错误'),
  200. (OTHER, u'其他'),
  201. )
  202. user_id = models.CharField(_(u'user_id'), max_length=255, blank=True, null=True, help_text=u'用户唯一标识', db_index=True)
  203. login_ip = models.CharField(_(u'login_ip'), max_length=255, blank=True, null=True, help_text=_(u'登录IP'))
  204. login_result = models.IntegerField(_(u'login_result'), choices=LOGIN_RESULT, default=SUCCESS)
  205. class Meta:
  206. verbose_name = _(u'userloginloginfo')
  207. verbose_name_plural = _(u'userloginloginfo')
  208. def __unicode__(self):
  209. return unicode(self.pk)
  210. class UserIncomeExpensesInfo(CreateUpdateMixin):
  211. INCOME = 0
  212. EXPENSE = 1
  213. TYPE = (
  214. (INCOME, u'收入'),
  215. (EXPENSE, u'支出'),
  216. )
  217. user_id = models.CharField(_(u'user_id'), max_length=255, blank=True, null=True, help_text=u'用户唯一标识', db_index=True)
  218. photo_id = models.CharField(_(u'photo_id'), max_length=255, blank=True, null=True, help_text=u'照片唯一标识', db_index=True)
  219. type = models.IntegerField(_(u'type'), choices=TYPE, default=INCOME, help_text=u'收支类别')
  220. amount = models.IntegerField(_(u'amount'), default=0, help_text=u'余额增减数量(分)')
  221. balance = models.IntegerField(_(u'balance'), default=0, help_text=u'余额增减后数量(分)')
  222. remark = models.CharField(_(u'remark'), max_length=255, blank=True, null=True, help_text=u'备注')
  223. class Meta:
  224. verbose_name = _(u'userincomeexpensesinfo')
  225. verbose_name_plural = _(u'userincomeexpensesinfo')
  226. def __unicode__(self):
  227. return unicode(self.pk)