拍爱

models.py 17KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403
  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. USER_USER = 8
  178. GUEST_USER = 9
  179. LENSMAN_USER = 10
  180. TOURGUIDE_USER = 11
  181. MINIAPP_USER = 12
  182. OAUTH_USER = 13
  183. USER_FROM = (
  184. (APP_USER, u'APP 创建用户'),
  185. (WX_USER, u'微信授权用户'),
  186. (USER_USER, u'用户端用户'),
  187. (GUEST_USER, u'游客用户'),
  188. (LENSMAN_USER, u'摄影师端用户'),
  189. (TOURGUIDE_USER, u'导游端用户'),
  190. (MINIAPP_USER, u'小程序端用户'),
  191. (OAUTH_USER, u'网页授权用户'),
  192. )
  193. UNVERIFIED = 0
  194. ACTIVATED = 1
  195. DISABLED = 2
  196. DELETED = 3
  197. ASSIGN = 10
  198. USER_STATUS = (
  199. (UNVERIFIED, u'未验证'),
  200. (ACTIVATED, u'已激活'),
  201. (DISABLED, u'已禁用'),
  202. (DELETED, u'已删除'),
  203. (ASSIGN, u'已分配'),
  204. )
  205. MALE = 1
  206. FEMALE = 0
  207. SEX_TYPE = (
  208. (MALE, u'男'),
  209. (FEMALE, u'女'),
  210. )
  211. user_id = models.CharField(_(u'user_id'), max_length=255, blank=True, null=True, help_text=u'用户唯一标识', db_index=True, unique=True)
  212. user_from = models.IntegerField(_(u'user_from'), choices=USER_FROM, default=APP_USER, help_text=u'用户来源')
  213. uuid = models.CharField(_(u'uuid'), max_length=255, blank=True, null=True, help_text=u'通用唯一识别码 (Universally Unique Identifier)', db_index=True)
  214. # APP 创建用户
  215. username = models.CharField(_(u'username'), max_length=255, blank=True, null=True, help_text=u'用户用户名', db_index=True, unique=True)
  216. password = models.CharField(_(u'password'), max_length=255, blank=True, null=True, help_text=u'用户密码')
  217. # 微信授权用户
  218. unionid = models.CharField(_(u'unionid'), max_length=255, blank=True, null=True, help_text=u'微信 Unionid', db_index=True, unique=True)
  219. openid = models.CharField(_(u'openid'), max_length=255, blank=True, null=True, help_text=u'微信 Openid,拍爱用户端', db_index=True, unique=True)
  220. openid_lensman = models.CharField(_(u'openid_lensman'), max_length=255, blank=True, null=True, help_text=u'微信 Openid,拍爱摄影师端', db_index=True, unique=True)
  221. openid_tourguide = models.CharField(_(u'openid_tourguide'), max_length=255, blank=True, null=True, help_text=u'微信 Openid,拍爱导游端', db_index=True, unique=True)
  222. openid_miniapp = models.CharField(_(u'openid_miniapp'), max_length=255, blank=True, null=True, help_text=u'微信 Openid,拍爱小程序', db_index=True, unique=True)
  223. openid_oauth = models.CharField(_(u'openid_oauth'), max_length=255, blank=True, null=True, help_text=u'微信 Openid,拍爱用户授权', db_index=True, unique=True)
  224. # 用户基本信息
  225. name = models.CharField(_(u'name'), max_length=255, blank=True, null=True, help_text=u'用户姓名')
  226. sex = models.IntegerField(_(u'sex'), choices=SEX_TYPE, default=MALE, help_text=u'用户性别')
  227. nickname = models.CharField(_(u'nickname'), max_length=255, blank=True, null=True, help_text=u'用户昵称')
  228. avatar = models.CharField(_(u'avatar'), max_length=255, blank=True, null=True, help_text=u'用户头像')
  229. phone = models.CharField(_(u'phone'), max_length=255, blank=True, null=True, help_text=u'用户电话', db_index=True, unique=True)
  230. country = models.CharField(_(u'country'), max_length=255, blank=True, null=True, help_text=u'用户国家')
  231. province = models.CharField(_(u'province'), max_length=255, blank=True, null=True, help_text=u'用户省份')
  232. city = models.CharField(_(u'city'), max_length=255, blank=True, null=True, help_text=u'用户城市')
  233. location = models.CharField(_(u'location'), max_length=255, blank=True, null=True, help_text=u'用户地址')
  234. # 用户身份
  235. islensman = models.BooleanField(_(u'islensman'), default=False, help_text=_(u'摄影师?'), db_index=True)
  236. istourguide = models.BooleanField(_(u'istourguide'), default=False, help_text=_(u'导游?'), db_index=True)
  237. balance = models.IntegerField(_(u'balance'), default=0, help_text=u'用户余额(分)')
  238. freeze_income_balance = models.IntegerField(_(u'freeze_income_balance'), default=0, help_text=u'用户收入冻结余额(分)')
  239. freeze_expense_balance = models.IntegerField(_(u'freeze_expense_balance'), default=0, help_text=u'用户支出冻结余额(分)')
  240. user_status = models.IntegerField(_(u'user_status'), choices=USER_STATUS, default=UNVERIFIED)
  241. assign_ip = models.CharField(_(u'assign_ip'), max_length=255, blank=True, null=True, help_text=_(u'分配IP'))
  242. assign_at = models.DateTimeField(_(u'assign_at'), blank=True, null=True, help_text=_(u'分配时间'))
  243. signup_ip = models.CharField(_(u'signup_ip'), max_length=255, blank=True, null=True, help_text=_(u'注册IP'))
  244. signup_at = models.DateTimeField(_(u'signup_at'), blank=True, null=True, help_text=_(u'注册时间'))
  245. login_ip = models.CharField(_(u'login_ip'), max_length=255, blank=True, null=True, help_text=_(u'登录IP'))
  246. login_at = models.DateTimeField(_(u'login_at'), blank=True, null=True, help_text=_(u'登录时间'))
  247. class Meta:
  248. verbose_name = _(u'userinfo')
  249. verbose_name_plural = _(u'userinfo')
  250. def __unicode__(self):
  251. return unicode(self.pk)
  252. @property
  253. def final_nickname(self):
  254. if self.user_from == self.APP_USER:
  255. return self.username
  256. elif self.user_from == self.WX_USER:
  257. return self.nickname
  258. elif self.user_from == self.GUEST_USER:
  259. return self.nickname
  260. elif self.user_from == self.LENSMAN_USER:
  261. return self.name
  262. elif self.user_from == self.TOURGUIDE_USER:
  263. return self.name
  264. elif self.user_from == self.MINIAPP_USER:
  265. return self.nickname
  266. return self.nickname
  267. @property
  268. def data(self):
  269. return {
  270. 'user_id': self.user_id,
  271. 'name': self.name,
  272. 'username': self.username,
  273. 'nickname': self.nickname,
  274. 'avatar': self.avatar,
  275. }
  276. class UserLoginLogInfo(CreateUpdateMixin):
  277. SUCCESS = 0
  278. PWD_ERROR = 1
  279. OTHER = 2
  280. LOGIN_RESULT = (
  281. (SUCCESS, u'登录成功'),
  282. (PWD_ERROR, u'密码错误'),
  283. (OTHER, u'其他'),
  284. )
  285. user_id = models.CharField(_(u'user_id'), max_length=255, blank=True, null=True, help_text=u'用户唯一标识', db_index=True)
  286. login_ip = models.CharField(_(u'login_ip'), max_length=255, blank=True, null=True, help_text=_(u'登录IP'))
  287. login_result = models.IntegerField(_(u'login_result'), choices=LOGIN_RESULT, default=SUCCESS)
  288. class Meta:
  289. verbose_name = _(u'userloginloginfo')
  290. verbose_name_plural = _(u'userloginloginfo')
  291. def __unicode__(self):
  292. return unicode(self.pk)
  293. class UserIncomeExpensesInfo(CreateUpdateMixin):
  294. INCOME = 0
  295. EXPENSE = 1
  296. UNFREEZE = 2
  297. TYPE = (
  298. (INCOME, u'收入'),
  299. (EXPENSE, u'支出'),
  300. (UNFREEZE, u'解冻'),
  301. )
  302. user_id = models.CharField(_(u'user_id'), max_length=255, blank=True, null=True, help_text=u'用户唯一标识', db_index=True)
  303. photo_id = models.CharField(_(u'photo_id'), max_length=255, blank=True, null=True, help_text=u'照片唯一标识', db_index=True)
  304. type = models.IntegerField(_(u'type'), choices=TYPE, default=INCOME, help_text=u'收支类别')
  305. amount = models.IntegerField(_(u'amount'), default=0, help_text=u'余额增减数量(分)')
  306. balance = models.IntegerField(_(u'balance'), default=0, help_text=u'余额增减后数量(分)')
  307. freeze_income_amount = models.IntegerField(_(u'freeze_income_amount'), default=0, help_text=u'收入冻结余额增减数量(分)')
  308. freeze_income_balance = models.IntegerField(_(u'freeze_income_balance'), default=0, help_text=u'收入冻结余额增减后数量(分)')
  309. freeze_expense_amount = models.IntegerField(_(u'freeze_expense_amount'), default=0, help_text=u'支出冻结余额增减数量(分)')
  310. freeze_expense_balance = models.IntegerField(_(u'freeze_expense_balance'), default=0, help_text=u'支出冻结余额增减后数量(分)')
  311. remark = models.CharField(_(u'remark'), max_length=255, blank=True, null=True, help_text=u'备注')
  312. class Meta:
  313. verbose_name = _(u'userincomeexpensesinfo')
  314. verbose_name_plural = _(u'userincomeexpensesinfo')
  315. def __unicode__(self):
  316. return unicode(self.pk)