拍爱

models.py 17KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395
  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. nomark = models.IntegerField(_(u'nomark'), default=299, help_text=u'摄影师无水印价格(分)')
  38. origin = models.IntegerField(_(u'origin'), default=999, help_text=u'摄影师高清图价格(分)')
  39. balance = models.IntegerField(_(u'balance'), default=0, help_text=u'摄影师余额(分)')
  40. freeze_income_balance = models.IntegerField(_(u'freeze_income_balance'), default=0, help_text=u'摄影师收入冻结余额(分)')
  41. freeze_expense_balance = models.IntegerField(_(u'freeze_expense_balance'), default=0, help_text=u'摄影师支出冻结余额(分)')
  42. user_status = models.IntegerField(_(u'user_status'), choices=USER_STATUS, default=UNVERIFIED)
  43. refused_reason = models.TextField(_(u'refused_reason'), blank=True, null=True, help_text=u'审核拒绝原因')
  44. signup_ip = models.CharField(_(u'signup_ip'), max_length=255, blank=True, null=True, help_text=_(u'注册IP'))
  45. login_ip = models.CharField(_(u'login_ip'), max_length=255, blank=True, null=True, help_text=_(u'登录IP'))
  46. login_at = models.DateTimeField(_(u'login_at'), blank=True, null=True, help_text=_(u'登录时间'))
  47. class Meta:
  48. verbose_name = _(u'lensmaninfo')
  49. verbose_name_plural = _(u'lensmaninfo')
  50. def __unicode__(self):
  51. return unicode(self.pk)
  52. @property
  53. def data(self):
  54. return {
  55. 'name': self.name,
  56. 'sex': self.sex,
  57. 'phone': self.phone,
  58. 'location': self.location,
  59. 'status': self.user_status,
  60. 'refused_reason': self.refused_reason,
  61. }
  62. class LensmanLoginLogInfo(CreateUpdateMixin):
  63. SUCCESS = 0
  64. PWD_ERROR = 1
  65. OTHER = 2
  66. LOGIN_RESULT = (
  67. (SUCCESS, u'登录成功'),
  68. (PWD_ERROR, u'密码错误'),
  69. (OTHER, u'其他'),
  70. )
  71. lensman_id = models.CharField(_(u'lensman_id'), max_length=255, blank=True, null=True, help_text=u'摄影师唯一标识', db_index=True)
  72. login_ip = models.CharField(_(u'login_ip'), max_length=255, blank=True, null=True, help_text=_(u'登录IP'))
  73. login_result = models.IntegerField(_(u'login_result'), choices=LOGIN_RESULT, default=SUCCESS)
  74. class Meta:
  75. verbose_name = _(u'lensmanloginloginfo')
  76. verbose_name_plural = _(u'lensmanloginloginfo')
  77. def __unicode__(self):
  78. return unicode(self.pk)
  79. class LensmanIncomeExpensesInfo(CreateUpdateMixin):
  80. INCOME = 0
  81. EXPENSE = 1
  82. UNFREEZE = 2
  83. TYPE = (
  84. (INCOME, u'收入'),
  85. (EXPENSE, u'支出'),
  86. (UNFREEZE, u'解冻'),
  87. )
  88. lensman_id = models.CharField(_(u'lensman_id'), max_length=255, blank=True, null=True, help_text=u'摄影师唯一标识', db_index=True)
  89. photo_id = models.CharField(_(u'photo_id'), max_length=255, blank=True, null=True, help_text=u'照片唯一标识', db_index=True)
  90. type = models.IntegerField(_(u'type'), choices=TYPE, default=INCOME, help_text=u'收支类别')
  91. amount = models.IntegerField(_(u'amount'), default=0, help_text=u'余额增减数量(分)')
  92. balance = models.IntegerField(_(u'balance'), default=0, help_text=u'余额增减后数量(分)')
  93. freeze_income_amount = models.IntegerField(_(u'freeze_income_amount'), default=0, help_text=u'收入冻结余额增减数量(分)')
  94. freeze_income_balance = models.IntegerField(_(u'freeze_income_balance'), default=0, help_text=u'收入冻结余额增减后数量(分)')
  95. freeze_expense_amount = models.IntegerField(_(u'freeze_expense_amount'), default=0, help_text=u'支出冻结余额增减数量(分)')
  96. freeze_expense_balance = models.IntegerField(_(u'freeze_expense_balance'), default=0, help_text=u'支出冻结余额增减后数量(分)')
  97. remark = models.CharField(_(u'remark'), max_length=255, blank=True, null=True, help_text=u'备注')
  98. class Meta:
  99. verbose_name = _(u'lensmanincomeexpensesinfo')
  100. verbose_name_plural = _(u'lensmanincomeexpensesinfo')
  101. def __unicode__(self):
  102. return unicode(self.pk)
  103. class TourGuideInfo(CreateUpdateMixin):
  104. MALE = 1
  105. FEMALE = 0
  106. SEX_TYPE = (
  107. (MALE, u'男'),
  108. (FEMALE, u'女'),
  109. )
  110. REFUSED = -1
  111. UNVERIFIED = 0
  112. ACTIVATED = 1
  113. DISABLED = 2
  114. DELETED = 3
  115. ASSIGN = 10
  116. USER_STATUS = (
  117. (REFUSED, u'已拒绝'),
  118. (UNVERIFIED, u'未验证'),
  119. (ACTIVATED, u'已激活'),
  120. (DISABLED, u'已禁用'),
  121. (DELETED, u'已删除'),
  122. (ASSIGN, u'已分配'),
  123. )
  124. tourguide_id = models.CharField(_(u'tourguide_id'), max_length=255, blank=True, null=True, help_text=u'导游唯一标识', db_index=True, unique=True)
  125. unionid = models.CharField(_(u'unionid'), max_length=255, blank=True, null=True, help_text=u'微信 Union ID', db_index=True, unique=True)
  126. name = models.CharField(_(u'name'), max_length=255, blank=True, null=True, help_text=u'导游姓名')
  127. sex = models.IntegerField(_(u'sex'), choices=SEX_TYPE, default=MALE, help_text=u'导游性别')
  128. phone = models.CharField(_(u'phone'), max_length=255, blank=True, null=True, help_text=u'导游电话', db_index=True, unique=True)
  129. location = models.CharField(_(u'location'), max_length=255, blank=True, null=True, help_text=u'导游地址')
  130. no = models.CharField(_(u'no'), max_length=255, blank=True, null=True, help_text=u'导游证编号')
  131. user_status = models.IntegerField(_(u'user_status'), choices=USER_STATUS, default=UNVERIFIED)
  132. refused_reason = models.TextField(_(u'refused_reason'), blank=True, null=True, help_text=u'审核拒绝原因')
  133. class Meta:
  134. verbose_name = _(u'tourguideinfo')
  135. verbose_name_plural = _(u'tourguideinfo')
  136. def __unicode__(self):
  137. return unicode(self.pk)
  138. @property
  139. def photo_url(self):
  140. return ''
  141. @property
  142. def data(self):
  143. return {
  144. 'name': self.name,
  145. 'sex': self.sex,
  146. 'phone': self.phone,
  147. 'location': self.location,
  148. 'no': self.no,
  149. 'photo': self.photo_url,
  150. 'status': self.user_status,
  151. 'refused_reason': self.refused_reason,
  152. }
  153. class WechatInfo(CreateUpdateMixin):
  154. MALE = 1
  155. FEMALE = 0
  156. SEX_TYPE = (
  157. (MALE, u'男'),
  158. (FEMALE, u'女'),
  159. )
  160. unionid = models.CharField(_(u'unionid'), max_length=255, blank=True, null=True, help_text=u'微信 Union ID')
  161. openids = JSONField(_(u'openids'), blank=True, null=True, help_text=u'微信 Open IDs')
  162. sex = models.IntegerField(_(u'sex'), choices=SEX_TYPE, default=MALE, help_text=u'用户性别')
  163. nickname = models.CharField(_(u'nickname'), max_length=255, blank=True, null=True, help_text=u'用户昵称')
  164. headimgurl = models.CharField(_(u'headimgurl'), max_length=255, blank=True, null=True, help_text=u'用户头像')
  165. country = models.CharField(_(u'country'), max_length=255, blank=True, null=True, help_text=u'用户国家')
  166. province = models.CharField(_(u'province'), max_length=255, blank=True, null=True, help_text=u'用户省份')
  167. city = models.CharField(_(u'city'), max_length=255, blank=True, null=True, help_text=u'用户城市')
  168. location = models.CharField(_(u'location'), max_length=255, blank=True, null=True, help_text=u'用户地址')
  169. class Meta:
  170. verbose_name = _(u'wechatinfo')
  171. verbose_name_plural = _(u'wechatinfo')
  172. def __unicode__(self):
  173. return unicode(self.pk)
  174. class UserInfo(CreateUpdateMixin):
  175. APP_USER = 0
  176. WX_USER = 1
  177. GUEST_USER = 9
  178. LENSMAN_USER = 10
  179. TOURGUIDE_USER = 11
  180. WEAPP_USER = 12
  181. USER_FROM = (
  182. (APP_USER, u'APP 创建用户'),
  183. (WX_USER, u'微信授权用户'),
  184. (GUEST_USER, u'游客用户'),
  185. (LENSMAN_USER, u'摄影师用户'),
  186. (TOURGUIDE_USER, u'导游用户'),
  187. (WEAPP_USER, u'小程序用户'),
  188. )
  189. UNVERIFIED = 0
  190. ACTIVATED = 1
  191. DISABLED = 2
  192. DELETED = 3
  193. ASSIGN = 10
  194. USER_STATUS = (
  195. (UNVERIFIED, u'未验证'),
  196. (ACTIVATED, u'已激活'),
  197. (DISABLED, u'已禁用'),
  198. (DELETED, u'已删除'),
  199. (ASSIGN, u'已分配'),
  200. )
  201. MALE = 1
  202. FEMALE = 0
  203. SEX_TYPE = (
  204. (MALE, u'男'),
  205. (FEMALE, u'女'),
  206. )
  207. user_id = models.CharField(_(u'user_id'), max_length=255, blank=True, null=True, help_text=u'用户唯一标识', db_index=True, unique=True)
  208. user_from = models.IntegerField(_(u'user_from'), choices=USER_FROM, default=APP_USER, help_text=u'用户来源')
  209. uuid = models.CharField(_(u'uuid'), max_length=255, blank=True, null=True, help_text=u'通用唯一识别码 (Universally Unique Identifier)', db_index=True)
  210. # APP 创建用户
  211. username = models.CharField(_(u'username'), max_length=255, blank=True, null=True, help_text=u'用户用户名', db_index=True, unique=True)
  212. password = models.CharField(_(u'password'), max_length=255, blank=True, null=True, help_text=u'用户密码')
  213. # 微信授权用户
  214. openid = models.CharField(_(u'openid'), max_length=255, blank=True, null=True, help_text=u'微信 Open ID', db_index=True, unique=True)
  215. unionid = models.CharField(_(u'unionid'), max_length=255, blank=True, null=True, help_text=u'微信 Union ID', db_index=True, unique=True)
  216. # 用户基本信息
  217. name = models.CharField(_(u'name'), max_length=255, blank=True, null=True, help_text=u'用户姓名')
  218. sex = models.IntegerField(_(u'sex'), choices=SEX_TYPE, default=MALE, help_text=u'用户性别')
  219. nickname = models.CharField(_(u'nickname'), max_length=255, blank=True, null=True, help_text=u'用户昵称')
  220. avatar = models.CharField(_(u'avatar'), max_length=255, blank=True, null=True, help_text=u'用户头像')
  221. phone = models.CharField(_(u'phone'), max_length=255, blank=True, null=True, help_text=u'用户电话', db_index=True, unique=True)
  222. country = models.CharField(_(u'country'), max_length=255, blank=True, null=True, help_text=u'用户国家')
  223. province = models.CharField(_(u'province'), max_length=255, blank=True, null=True, help_text=u'用户省份')
  224. city = models.CharField(_(u'city'), max_length=255, blank=True, null=True, help_text=u'用户城市')
  225. location = models.CharField(_(u'location'), max_length=255, blank=True, null=True, help_text=u'用户地址')
  226. # 用户身份
  227. islensman = models.BooleanField(_(u'islensman'), default=False, help_text=_(u'摄影师?'), db_index=True)
  228. istourguide = models.BooleanField(_(u'istourguide'), default=False, help_text=_(u'导游?'), db_index=True)
  229. balance = models.IntegerField(_(u'balance'), default=0, help_text=u'用户余额(分)')
  230. freeze_income_balance = models.IntegerField(_(u'freeze_income_balance'), default=0, help_text=u'用户收入冻结余额(分)')
  231. freeze_expense_balance = models.IntegerField(_(u'freeze_expense_balance'), default=0, help_text=u'用户支出冻结余额(分)')
  232. user_status = models.IntegerField(_(u'user_status'), choices=USER_STATUS, default=UNVERIFIED)
  233. assign_ip = models.CharField(_(u'assign_ip'), max_length=255, blank=True, null=True, help_text=_(u'分配IP'))
  234. assign_at = models.DateTimeField(_(u'assign_at'), blank=True, null=True, help_text=_(u'分配时间'))
  235. signup_ip = models.CharField(_(u'signup_ip'), max_length=255, blank=True, null=True, help_text=_(u'注册IP'))
  236. signup_at = models.DateTimeField(_(u'signup_at'), blank=True, null=True, help_text=_(u'注册时间'))
  237. login_ip = models.CharField(_(u'login_ip'), max_length=255, blank=True, null=True, help_text=_(u'登录IP'))
  238. login_at = models.DateTimeField(_(u'login_at'), blank=True, null=True, help_text=_(u'登录时间'))
  239. class Meta:
  240. verbose_name = _(u'userinfo')
  241. verbose_name_plural = _(u'userinfo')
  242. def __unicode__(self):
  243. return unicode(self.pk)
  244. @property
  245. def final_nickname(self):
  246. if self.user_from == self.APP_USER:
  247. return self.username
  248. elif self.user_from == self.WX_USER:
  249. return self.nickname
  250. elif self.user_from == self.GUEST_USER:
  251. return self.nickname
  252. elif self.user_from == self.LENSMAN_USER:
  253. return self.name
  254. elif self.user_from == self.TOURGUIDE_USER:
  255. return self.name
  256. elif self.user_from == self.WEAPP_USER:
  257. return self.nickname
  258. return self.nickname
  259. @property
  260. def data(self):
  261. return {
  262. 'user_id': self.user_id,
  263. 'name': self.name,
  264. 'username': self.username,
  265. 'nickname': self.nickname,
  266. 'avatar': self.avatar,
  267. }
  268. class UserLoginLogInfo(CreateUpdateMixin):
  269. SUCCESS = 0
  270. PWD_ERROR = 1
  271. OTHER = 2
  272. LOGIN_RESULT = (
  273. (SUCCESS, u'登录成功'),
  274. (PWD_ERROR, u'密码错误'),
  275. (OTHER, u'其他'),
  276. )
  277. user_id = models.CharField(_(u'user_id'), max_length=255, blank=True, null=True, help_text=u'用户唯一标识', db_index=True)
  278. login_ip = models.CharField(_(u'login_ip'), max_length=255, blank=True, null=True, help_text=_(u'登录IP'))
  279. login_result = models.IntegerField(_(u'login_result'), choices=LOGIN_RESULT, default=SUCCESS)
  280. class Meta:
  281. verbose_name = _(u'userloginloginfo')
  282. verbose_name_plural = _(u'userloginloginfo')
  283. def __unicode__(self):
  284. return unicode(self.pk)
  285. class UserIncomeExpensesInfo(CreateUpdateMixin):
  286. INCOME = 0
  287. EXPENSE = 1
  288. UNFREEZE = 2
  289. TYPE = (
  290. (INCOME, u'收入'),
  291. (EXPENSE, u'支出'),
  292. (UNFREEZE, u'解冻'),
  293. )
  294. user_id = models.CharField(_(u'user_id'), max_length=255, blank=True, null=True, help_text=u'用户唯一标识', db_index=True)
  295. photo_id = models.CharField(_(u'photo_id'), max_length=255, blank=True, null=True, help_text=u'照片唯一标识', db_index=True)
  296. type = models.IntegerField(_(u'type'), choices=TYPE, default=INCOME, help_text=u'收支类别')
  297. amount = models.IntegerField(_(u'amount'), default=0, help_text=u'余额增减数量(分)')
  298. balance = models.IntegerField(_(u'balance'), default=0, help_text=u'余额增减后数量(分)')
  299. freeze_income_amount = models.IntegerField(_(u'freeze_income_amount'), default=0, help_text=u'收入冻结余额增减数量(分)')
  300. freeze_income_balance = models.IntegerField(_(u'freeze_income_balance'), default=0, help_text=u'收入冻结余额增减后数量(分)')
  301. freeze_expense_amount = models.IntegerField(_(u'freeze_expense_amount'), default=0, help_text=u'支出冻结余额增减数量(分)')
  302. freeze_expense_balance = models.IntegerField(_(u'freeze_expense_balance'), default=0, help_text=u'支出冻结余额增减后数量(分)')
  303. remark = models.CharField(_(u'remark'), max_length=255, blank=True, null=True, help_text=u'备注')
  304. class Meta:
  305. verbose_name = _(u'userincomeexpensesinfo')
  306. verbose_name_plural = _(u'userincomeexpensesinfo')
  307. def __unicode__(self):
  308. return unicode(self.pk)