first commit

This commit is contained in:
renjianbo
2026-01-09 18:28:10 +08:00
parent 8ca573e948
commit 5cc088a210
134 changed files with 8730 additions and 0 deletions

139
account/models.py Normal file
View File

@@ -0,0 +1,139 @@
# -*- coding: utf-8 -*-
from django.conf import settings
from django.db import models
from django.utils.translation import ugettext_lazy as _
from shortuuidfield import ShortUUIDField
from TimeConvert import TimeConvert as tc
from utils.basemodels import CreateUpdateMixin, upload_path
class Profile(CreateUpdateMixin):
"""
用户信息类
"""
WX_USER = 1
GUEST_USER = 11
NORMAL_USER = 22
COMPANY_USER = 33
USER_SRC = (
(WX_USER, u'微信授权用户'),
(GUEST_USER, u'游客用户'),
(NORMAL_USER, u'普通用户'),
(COMPANY_USER, u'机构用户'),
)
MALE = 1
FEMALE = 0
GENDER = (
(MALE, u''),
(FEMALE, u''),
)
UNVERIFIED = 0
ACTIVATED = 1
DISABLED = 2
DELETED = 3
ASSIGN = 10
USER_STATUS = (
(UNVERIFIED, u'未验证'),
(ACTIVATED, u'已激活'),
(DISABLED, u'已禁用'),
(DELETED, u'已删除'),
(ASSIGN, u'已分配'),
)
uid = ShortUUIDField(_(u'用户id'), max_length=32, blank=True, null=True, help_text=u'用户唯一标识', db_index=True, unique=True)
# 用户相关
user_src = models.IntegerField(_(u'用户来源'), choices=USER_SRC, default=GUEST_USER, help_text=u'用户来源', db_index=True)
user_status = models.IntegerField(_(u'用户状态'), choices=USER_STATUS, default=ACTIVATED)
# 微信授权用户
unionid = models.CharField(_(u'微信unionid'), max_length=32, blank=True, null=True, help_text=u'微信 Unionid', db_index=True)
# 微信openid
openid = models.CharField(_(u'微信openid'), max_length=32, blank=True, null=True, db_index=True, help_text=u'微信授权Openid')
# 用户基本信息
wxid = models.CharField(_(u'微信号'), max_length=32, blank=True, null=True, help_text=u'用户微信号')
name = models.CharField(_(u'姓名'), max_length=32, blank=True, null=True, help_text=u'用户姓名', db_index=True)
email = models.CharField(_(u'邮箱'), max_length=40, blank=True, null=True, help_text=u'用户邮箱', db_index=True)
sex = models.IntegerField(_(u'性别'), choices=GENDER, default=MALE, help_text=u'用户性别')
age = models.IntegerField(_(u'年龄'), default=0, help_text=u'用户年龄')
nickname = models.CharField(_(u'昵称'), max_length=32, blank=True, null=True, help_text=u'用户昵称')
avatar = models.CharField(_(u'头像地址'), max_length=60, blank=True, null=True, help_text=u'用户头像')
phone = models.CharField(_(u'手机号'), max_length=11, blank=True, null=True, help_text=u'用户电话', db_index=True)
country = models.CharField(_(u'国家'), max_length=32, blank=True, null=True, help_text=u'用户国家')
province = models.CharField(_(u'省份'), max_length=32, blank=True, null=True, help_text=u'用户省份')
city = models.CharField(_(u'城市'), max_length=32, blank=True, null=True, help_text=u'用户城市')
location = models.CharField(_(u'地址'), max_length=60, blank=True, null=True, help_text=u'用户地址')
# 会员相关
is_upgrade = models.IntegerField(_(u'是否升级会员'), default=0, help_text=u'是否升级会员')
upgrade_time = models.DateTimeField(_(u'会员升级时间'), blank=True, null=True, help_text=u'升级日期')
expire_time = models.DateTimeField(_(u'会员过期时间'), blank=True, null=True, help_text=u'过期时间')
upgrade_count = models.IntegerField(_(u'会员升级次数'), default=0, help_text=u'升级次数')
class Meta:
verbose_name = _(u'用户信息')
verbose_name_plural = _(u'用户信息')
unique_together = ('name', 'email')
def __unicode__(self):
return str(self.pk)
@property
def numid(self):
return settings.BASE_NUM_ID + self.pk
@property
def data(self):
return {
'uid': self.uid,
'numid': self.numid,
'name': self.name or '',
'nickname': self.nickname or self.name,
'avatar': self.avatar or '',
}
@property
def final_is_upgrade(self):
return int(self.is_upgrade and tc.utc_datetime() < self.expire_time)
@property
def upgrade_data(self):
return {
'uid': self.uid,
'is_upgrade': self.final_is_upgrade,
'upgrade_time': tc.datetime_to_string(tc.to_local_datetime(self.upgrade_time)) if self.final_is_upgrade and self.upgrade_time else '',
'expire_time': tc.datetime_to_string(tc.to_local_datetime(self.expire_time)) if self.final_is_upgrade and self.expire_time else '',
'upgrade_count': self.upgrade_count,
}
class UserInfo(CreateUpdateMixin):
"""
用户所填表单信息类
"""
# 标识
kind_id = models.CharField(_(u'比赛id'), max_length=32, blank=True, null=True, help_text=u'比赛唯一标识', db_index=True)
uid = models.CharField(_(u'用户id'), max_length=32, blank=True, null=True, help_text=u'用户唯一标识', db_index=True)
# 基本信息
name = models.CharField(_(u'姓名'), max_length=24, blank=True, null=True, help_text=u'name/姓名')
sex = models.CharField(_(u'性别'), max_length=1, blank=True, null=True, help_text=u'sex/性别')
age = models.IntegerField(_(u'年龄'), default=0, blank=True, null=True, help_text=u'age/年龄')
phone = models.CharField(_(u'手机号'), max_length=11, blank=True, null=True, help_text=u'phone/手机号')
wxid = models.CharField(_(u'微信号'), max_length=24, blank=True, null=True, help_text=u'wxid/微信号')
email = models.CharField(_(u'邮箱'), max_length=60, blank=True, null=True, help_text=u'email/邮箱')
pid = models.CharField(_(u'身份证号'), max_length=18, blank=True, null=True, help_text=u'pid/身份证号')
graduated_from = models.CharField(_(u'毕业院校'), max_length=60, blank=True, null=True, help_text=u'graduated_from/毕业院校')
address = models.CharField(_(u'地址'), max_length=60, blank=True, null=True, help_text=u'address/联系地址')
class Meta:
verbose_name = _(u'用户登记信息')
verbose_name_plural = _(u'用户登记信息')
unique_together = ('kind_id', 'uid')
def __unicode__(self):
return self.uid