models.py 153 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796
  1. from itertools import chain
  2. from django.contrib.auth.models import BaseUserManager, AbstractBaseUser
  3. from django.db import models
  4. from django.utils import six
  5. from django.utils import timezone
  6. from django.utils.encoding import python_2_unicode_compatible
  7. from imagekit.models import ProcessedImageField
  8. from imagekit.processors import ResizeToFill
  9. from Ansjer.config import SERVER_DOMAIN
  10. class PermissionsManager(models.Manager):
  11. use_in_migrations = True
  12. def get_by_natural_key(self, permName):
  13. return self.get(
  14. permName=permName
  15. )
  16. class RoleManager(models.Manager):
  17. """
  18. The manager for the auth's Role model..
  19. """
  20. use_in_migrations = True
  21. def get_by_natural_key(self, roleName):
  22. return self.get(roleName=roleName)
  23. class UserManager(BaseUserManager):
  24. def create_user(self, username, password, userID, is_active,
  25. user_isValid, **extra_fields):
  26. user = self.model(
  27. username=username,
  28. userID=userID,
  29. is_active=is_active,
  30. user_isValid=user_isValid,
  31. **extra_fields
  32. )
  33. user.set_password(password)
  34. user.save(using=self._db)
  35. role = Role.objects.get(rid=1)
  36. user.role.add(role)
  37. return user
  38. def create_superuser(self, username, password, userID, is_active,
  39. user_isValid, **extra_fields):
  40. # extra_fields.setdefault('is_superuser', is_superuser)
  41. is_superuser = extra_fields.get('is_superuser', None)
  42. if is_superuser != 100 and is_superuser != 1:
  43. raise ValueError('Superuser must have is_superuser=1 or 100.')
  44. return self.create_user(username, password, userID, is_active,
  45. user_isValid, **extra_fields)
  46. @python_2_unicode_compatible
  47. class Permissions(models.Model):
  48. permName = models.CharField(blank=True, null=True, max_length=32, unique=True, verbose_name=u'权限名称')
  49. description = models.CharField(blank=True, null=True, max_length=128, verbose_name=u'描述信息', default='')
  50. objects = PermissionsManager()
  51. def __str__(self):
  52. return "%s" % (
  53. six.text_type(self.description))
  54. class Meta:
  55. ordering = ['permName']
  56. db_table = 'permissions'
  57. verbose_name = u'role permission'
  58. verbose_name_plural = verbose_name
  59. unique_together = (('permName'),)
  60. def natural_key(self):
  61. return (self.permName)
  62. class MenuModel(models.Model):
  63. id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
  64. parentId = models.IntegerField(default=0, verbose_name='父节点ID')
  65. name = models.CharField(max_length=50, null=True, default='',
  66. verbose_name='名称') # 首字母大写,一定要与vue文件的name对应起来,用于noKeepAlive缓存控制(该项特别重要)
  67. path = models.CharField(max_length=100, null=True, default='', verbose_name='路径')
  68. component = models.CharField(max_length=100, null=True, default='', verbose_name='vue文件路径') # 所谓的vue 组件
  69. hidden = models.BooleanField(blank=True, default=False, verbose_name=u'是否隐藏')
  70. alwaysShow = models.BooleanField(blank=True, default=False, verbose_name=u'始终显示当前节点')
  71. levelHidden = models.BooleanField(blank=True, default=False, verbose_name=u'是否隐藏一级路由')
  72. title = models.CharField(max_length=50, default='', verbose_name='标题')
  73. icon = models.CharField(max_length=50, default='', verbose_name='图标名')
  74. isCustomSvg = models.BooleanField(blank=True, default=False, verbose_name=u'是否是自定义svg图标')
  75. noKeepAlive = models.BooleanField(blank=True, default=False, verbose_name=u'当前路由是否不缓存')
  76. noClosable = models.BooleanField(blank=True, default=False, verbose_name=u'当前路由是否可关闭多标签页')
  77. badge = models.CharField(max_length=10, default='', verbose_name='badge小标签(只支持子级)')
  78. tabHidden = models.BooleanField(blank=True, default=False, verbose_name=u'当前路由是否不显示多标签页')
  79. activeMenu = models.CharField(max_length=50, default='', verbose_name='高亮指定菜单')
  80. dot = models.BooleanField(blank=True, default=False, verbose_name=u'小圆点')
  81. dynamicNewTab = models.BooleanField(blank=True, default=False, verbose_name=u'动态传参路由是否新开标签页')
  82. redirect = models.CharField(max_length=50, default='', verbose_name='重定向')
  83. menu_code = models.CharField(max_length=100, default='', verbose_name='菜单编码')
  84. menutype = models.SmallIntegerField(default=1, verbose_name=u'类型') # 类型: 1-菜单 2-按钮
  85. sort = models.IntegerField(default=0, verbose_name='排序')
  86. class Meta:
  87. db_table = 'menu'
  88. verbose_name = u'菜单表'
  89. verbose_name_plural = verbose_name
  90. class Role(models.Model):
  91. rid = models.SmallIntegerField(primary_key=True, unique=True, verbose_name=u'用户角色组ID')
  92. roleName = models.CharField(max_length=32, unique=True,
  93. default='User', verbose_name=u'角色名称')
  94. permission = models.ManyToManyField(to='Permissions', blank=True, verbose_name=u'权限', db_table='role_permissions')
  95. menu = models.ManyToManyField(to='MenuModel', blank=True, verbose_name=u'后台菜单权限', db_table='role_menu')
  96. Description = models.TextField(blank=True, default='', verbose_name=u'描述信息')
  97. objects = RoleManager()
  98. class Meta:
  99. ordering = ['roleName']
  100. db_table = 'role'
  101. verbose_name = u'用户角色'
  102. verbose_name_plural = verbose_name
  103. def __str__(self):
  104. return self.roleName
  105. def natural_key(self):
  106. return (self.roleName,)
  107. def get_all_permission(self):
  108. perms = self.permission.all()
  109. permslist = []
  110. if self.rid == 100:
  111. perms = Permissions.objects.all()
  112. for perm in perms:
  113. permslist.append(perm.permName)
  114. return permslist
  115. else:
  116. permlist_tmp = []
  117. for perm in perms:
  118. permlist_tmp.append(perm.permName)
  119. permSet = set(permlist_tmp)
  120. permslist = list(permSet)
  121. permslist.sort()
  122. return permslist
  123. class Device_User(AbstractBaseUser):
  124. userID = models.CharField(blank=True, max_length=32, primary_key=True,
  125. verbose_name=u'用户ID', unique=True)
  126. role = models.ManyToManyField(to='Role', blank=True, verbose_name=u'用户角色', db_table='user_role')
  127. username = models.CharField(max_length=64, db_index=True, verbose_name=u'用户名', default='', blank=True)
  128. password = models.CharField(max_length=128, verbose_name=u'密码')
  129. userEmail = models.EmailField(max_length=64, db_index=True, verbose_name=u'邮箱', default='', blank=True)
  130. # 实际的路径就是 MEDIA_ROOT/Image/filename,所以可用upload_to来指定文件存放的前缀路径
  131. userIconPath = ProcessedImageField(blank=True, upload_to='User/Images/', default='static/User/default.png',
  132. verbose_name=u'头像',
  133. # 图片将处理成85x85的尺寸
  134. processors=[ResizeToFill(85, 85)], )
  135. userIconUrl = models.URLField(blank=True, max_length=128, default=SERVER_DOMAIN
  136. + 'account/getAvatar/User/defaultUser.png')
  137. NickName = models.CharField(blank=True, max_length=64, default='', verbose_name=u'用户昵称')
  138. is_superuser = models.IntegerField(blank=True, default=0, verbose_name=u'用户类型')
  139. is_active = models.BooleanField(blank=True, default=False, verbose_name=u'用户活动状态')
  140. data_joined = models.DateTimeField(blank=True, verbose_name=u'加入时间', auto_now_add=True)
  141. last_login = models.DateTimeField(blank=True, verbose_name='u最后登录时间', auto_now=True)
  142. user_isValid = models.BooleanField(blank=True, default=False, verbose_name=u'用户有效性', help_text=u'是否是认证通过的用户')
  143. online = models.BooleanField(blank=True, default=False, verbose_name=u'用户登录状态')
  144. machine_code = models.CharField(blank=True, max_length=128, default='', verbose_name=u'机械码')
  145. language = models.CharField(blank=True, max_length=16, default='en', verbose_name=u'语言地区')
  146. # 手机注册增加字段
  147. phone = models.CharField(max_length=16, db_index=True, verbose_name=u'手机号', default='', blank=True)
  148. fingerprint_enable = models.SmallIntegerField(default=0, verbose_name=u'是否开启了指纹登录') # 0:未开启,1:已开启
  149. fingerprint_key = models.CharField(max_length=128, default='', verbose_name=u'客户端用于解码的密钥等信息')
  150. is_local = models.BooleanField(blank=True, default=False, verbose_name=u'是否是本地登录用户') # False:账号登录,1:本地登录
  151. subscribe_email = models.SmallIntegerField(default=0, verbose_name=u'是否订阅营销邮件') # 0:未订阅,1:订阅,2:不订阅
  152. region_country = models.IntegerField(blank=True, default=0, verbose_name='地区表唯一标识')
  153. objects = UserManager()
  154. USERNAME_FIELD = 'userID' # 必须有一个唯一标识
  155. REQUIRED_FIELDS = ['is_superuser'] # 创建superuser时的必须字段
  156. class Meta:
  157. ordering = ('-data_joined',)
  158. verbose_name = u'用户信息'
  159. db_table = 'device_user'
  160. get_latest_by = 'last_login'
  161. def __str__(self):
  162. return self.username
  163. def get_role_id(self):
  164. rids = []
  165. roles = self.role.all()
  166. for role in roles:
  167. rids.append(role.rid)
  168. return rids
  169. def get_all_permission(self):
  170. roles = self.role.all()
  171. perms = self.permission.all()
  172. permslist = []
  173. for role in roles:
  174. if role.rid == 100:
  175. perms = Permissions.objects.all()
  176. for perm in perms:
  177. permslist.append(perm.permName)
  178. return permslist
  179. for perm in perms:
  180. permslist.append(perm.permName)
  181. permSet = set(permslist)
  182. for role in roles:
  183. permlist_tmp = []
  184. for perm in role.permission.all():
  185. permlist_tmp.append(perm.permName)
  186. permSet_tmp = set(permlist_tmp)
  187. permSet = permSet.union(permSet_tmp)
  188. permslist = list(permSet)
  189. permslist.sort()
  190. return permslist
  191. @property
  192. def is_staff(self):
  193. return self.is_superuser
  194. # 设备表是建项目开发者设计的,自己看着办
  195. # 谢谢提醒!我选择凉拌。
  196. # 我选择狗带
  197. class Device_Info(models.Model):
  198. id = models.CharField(blank=True, max_length=32, primary_key=True)
  199. userID = models.ForeignKey(Device_User, blank=True, to_field='userID', on_delete=models.CASCADE)
  200. NickName = models.CharField(blank=True, max_length=32, verbose_name=u'设备名称')
  201. UID = models.CharField(blank=True, max_length=32, verbose_name=u'设备UID', default='')
  202. SID = models.CharField(blank=True, max_length=32, verbose_name=u'服务器ID', default='')
  203. View_Account = models.CharField(blank=True, max_length=32, verbose_name=u'设备用户名称', default='')
  204. View_Password = models.CharField(blank=True, max_length=32, verbose_name=u'设备密码', default='')
  205. AudioFormat = models.IntegerField(blank=True, default=1, verbose_name=u'初始化影像')
  206. EventNotification = models.IntegerField(blank=True, verbose_name=u'报警类型', default=0)
  207. ChannelIndex = models.IntegerField(blank=True, verbose_name=u'通道号', default=0)
  208. Online = models.BooleanField(blank=True, default=False, verbose_name=u'设备是否在线')
  209. mMonitorIndex = models.IntegerField(blank=True, default=-1)
  210. Type = models.IntegerField(blank=True, verbose_name='设备类型')
  211. DebugMode = models.IntegerField(blank=True, verbose_name=u'调试模式', default=0)
  212. NotificationMode = models.IntegerField(blank=True, verbose_name=u'是否报警', default=0)
  213. qvgaLevel = models.BooleanField(blank=True, verbose_name=u'SD与HD画面', default=0,
  214. help_text=u'0代表:SD、1代表:HD')
  215. isShare = models.BooleanField(blank=True, verbose_name=u'共享设备',
  216. help_text=u'是否为共享获取的设备', default=False)
  217. primaryUserID = models.CharField(blank=True, verbose_name='主用户id', max_length=32, default='')
  218. primaryMaster = models.CharField(max_length=64, verbose_name=u'主用户名', default='')
  219. vodPrimaryUserID = models.CharField(blank=True, verbose_name='云存主用户id', max_length=32, default='')
  220. vodPrimaryMaster = models.CharField(max_length=64, verbose_name=u'云存主用户名', default='')
  221. data_joined = models.DateTimeField(blank=True, verbose_name=u'设备添加时间', auto_now_add=True)
  222. update_time = models.DateTimeField(blank=True, verbose_name=u'更新时间', auto_now=True, null=True)
  223. ip = models.CharField(blank=True, max_length=20, default='', verbose_name=u'设备区域ip')
  224. area = models.CharField(blank=True, max_length=100, default='', verbose_name=u'设备区域area')
  225. # ios要求新增字段
  226. version = models.CharField(blank=True, max_length=20, default='', verbose_name=u'版本号')
  227. iSNotification = models.BooleanField(blank=True, verbose_name=u'报警通知 0:关闭,1:开启)', default=False)
  228. isVod = models.SmallIntegerField(blank=True, default=0, verbose_name='是否支持云存') # 是否支持云存设备
  229. isExist = models.SmallIntegerField(blank=True, default=1, verbose_name='是否被删除') # 是否被删除了(需主用户交互) 1存在,0不存在,2设备被重置
  230. isCameraOpenCloud = models.SmallIntegerField(blank=True, default=1, verbose_name='是否开启云存') # 0:不开启 1:开启
  231. serial_number = models.CharField(blank=True, max_length=9, default='', verbose_name='关联序列号')
  232. ###
  233. REQUIRED_FIELDS = []
  234. def __str__(self):
  235. return self.NickName
  236. def model_to_dict(self, fields=None, exclude=None):
  237. opts = self._meta
  238. data = {}
  239. for f in chain(opts.concrete_fields, opts.private_fields, opts.many_to_many):
  240. if not getattr(f, 'editable', False):
  241. continue
  242. if fields and f.name not in fields:
  243. continue
  244. if exclude and f.name in exclude:
  245. continue
  246. data[f.name] = f.value_from_object(self)
  247. return data
  248. class Meta:
  249. db_table = 'device_info'
  250. ordering = ('-data_joined',)
  251. verbose_name = u'用户设备信息表'
  252. verbose_name_plural = verbose_name
  253. class Access_Log(models.Model):
  254. id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
  255. user = models.CharField(max_length=100, default='', db_index=True, blank=True, verbose_name=u'用户')
  256. operation = models.CharField(max_length=100, db_index=True, default='', blank=True, verbose_name=u'操作')
  257. ip = models.CharField(max_length=100, default='', db_index=True, blank=True, verbose_name=u'访问ip地址')
  258. url = models.CharField(max_length=150, default='', blank=True, verbose_name=u'访问路径')
  259. status = models.IntegerField(default=0, blank=True, verbose_name=u'状态')
  260. time = models.DateTimeField(null=True, blank=True, db_index=True, verbose_name=u'访问时间')
  261. content = models.TextField(blank=True, default='', verbose_name=u'参数内容')
  262. class Meta:
  263. db_table = 'access_log'
  264. verbose_name = u'访问日志表'
  265. verbose_name_plural = verbose_name
  266. class Equipment_Info(models.Model):
  267. id = models.BigAutoField(primary_key=True, verbose_name=u'自增标记ID')
  268. devUid = models.CharField(default='', db_index=True, blank=True, max_length=32, verbose_name=u'设备ID')
  269. devNickName = models.CharField(blank=True, max_length=32, default='', verbose_name=u'设备昵称')
  270. Channel = models.IntegerField(default=1, blank=True, verbose_name=u'设备通道')
  271. eventType = models.IntegerField(default=0, blank=True, verbose_name=u'事件类型')
  272. status = models.BooleanField(blank=True, default=False, verbose_name=u'事件状态')
  273. alarm = models.CharField(blank=True, max_length=256, verbose_name=u'报警信息')
  274. eventTime = models.CharField(blank=True, db_index=True, default='', max_length=16, verbose_name=u'设备报警时间')
  275. receiveTime = models.CharField(blank=True, default='', max_length=16, verbose_name=u'接收到报警时间')
  276. userID_id = models.CharField(default='', db_index=True, blank=True, max_length=32, verbose_name=u'用户ID')
  277. is_st = models.SmallIntegerField(default=0, verbose_name='是否截图') # 0 否,1 是图,2,视频
  278. storage_location = models.SmallIntegerField(default=1, verbose_name='数据信息存储位置。1:阿里云oss,2:aws')
  279. borderCoords = models.TextField(default='', blank=True, verbose_name=u'ai类型图片边框位置信息')
  280. addTime = models.IntegerField(verbose_name='添加时间', db_index=True, default=0)
  281. def __str__(self):
  282. return self.id
  283. class Meta:
  284. db_table = 'equipment_info'
  285. verbose_name = u'设备信息推送表'
  286. verbose_name_plural = verbose_name
  287. ordering = ('-id',)
  288. app_label = "PushModel"
  289. class EquipmentInfoMonday(models.Model):
  290. id = models.BigAutoField(primary_key=True, verbose_name=u'自增标记ID')
  291. device_user_id = models.CharField(default='', db_index=True, blank=True, max_length=32, verbose_name=u'用户id')
  292. device_uid = models.CharField(default='', db_index=True, blank=True, max_length=32, verbose_name=u'设备uid')
  293. device_nick_name = models.CharField(blank=True, max_length=32, default='', verbose_name=u'设备昵称')
  294. channel = models.IntegerField(default=1, blank=True, verbose_name=u'设备通道')
  295. event_type = models.IntegerField(default=0, blank=True,
  296. verbose_name=u'事件类型(0:代表空字符,1:ai人,2:ai动物,3:车,123:组合类型(人/车/动物),51:移动侦测,'
  297. u'52:传感器报警,53:影像遗失,54:PIR,55:门磁报警, 56:外部发报, 57:人型报警,'
  298. u'702:摄像头休眠,703:摄像头唤醒,'
  299. u'704:电量过低)')
  300. status = models.BooleanField(blank=True, default=False, verbose_name=u'事件状态(0,1)')
  301. alarm = models.CharField(blank=True, max_length=256, verbose_name=u'报警信息')
  302. event_time = models.CharField(blank=True, db_index=True, default='', max_length=16, verbose_name=u'设备报警时间')
  303. receive_time = models.CharField(blank=True, default='', max_length=16, verbose_name=u'接收到报警时间')
  304. is_st = models.SmallIntegerField(default=0, verbose_name='是否截图(0:否,1:图片,2:视频)') # 0 否,1 是图,2,视频
  305. storage_location = models.SmallIntegerField(default=1, verbose_name='数据信息存储位置。1:阿里云oss,2:aws')
  306. border_coords = models.TextField(default='', blank=True, verbose_name=u'ai类型图片边框位置信息')
  307. add_time = models.IntegerField(verbose_name='添加时间', db_index=True, default=0)
  308. def __str__(self):
  309. return self.id
  310. class Meta:
  311. db_table = 'equipment_info_monday'
  312. verbose_name = u'星期一设备信息推送表'
  313. verbose_name_plural = verbose_name
  314. ordering = ('-id',)
  315. app_label = "PushModel"
  316. class EquipmentInfoTuesday(models.Model):
  317. id = models.BigAutoField(primary_key=True, verbose_name=u'自增标记ID')
  318. device_user_id = models.CharField(default='', db_index=True, blank=True, max_length=32, verbose_name=u'用户id')
  319. device_uid = models.CharField(default='', db_index=True, blank=True, max_length=32, verbose_name=u'设备uid')
  320. device_nick_name = models.CharField(blank=True, max_length=32, default='', verbose_name=u'设备昵称')
  321. channel = models.IntegerField(default=1, blank=True, verbose_name=u'设备通道')
  322. event_type = models.IntegerField(default=0, blank=True,
  323. verbose_name=u'事件类型(0:代表空字符,1:ai人,2:ai动物,3:车,123:组合类型(人/车/动物),51:移动侦测,'
  324. u'52:传感器报警,53:影像遗失,54:PIR,55:门磁报警, 56:外部发报, 57:人型报警,'
  325. u'702:摄像头休眠,703:摄像头唤醒,'
  326. u'704:电量过低)')
  327. status = models.BooleanField(blank=True, default=False, verbose_name=u'事件状态(0,1)')
  328. alarm = models.CharField(blank=True, max_length=256, verbose_name=u'报警信息')
  329. event_time = models.CharField(blank=True, db_index=True, default='', max_length=16, verbose_name=u'设备报警时间')
  330. receive_time = models.CharField(blank=True, default='', max_length=16, verbose_name=u'接收到报警时间')
  331. is_st = models.SmallIntegerField(default=0, verbose_name='是否截图(0:否,1:图片,2:视频)') # 0 否,1 是图,2,视频
  332. storage_location = models.SmallIntegerField(default=1, verbose_name='数据信息存储位置。1:阿里云oss,2:aws')
  333. border_coords = models.TextField(default='', blank=True, verbose_name=u'ai类型图片边框位置信息')
  334. add_time = models.IntegerField(verbose_name='添加时间', db_index=True, default=0)
  335. def __str__(self):
  336. return self.id
  337. class Meta:
  338. db_table = 'equipment_info_tuesday'
  339. verbose_name = u'星期二设备信息推送表'
  340. verbose_name_plural = verbose_name
  341. ordering = ('-id',)
  342. app_label = "PushModel"
  343. class EquipmentInfoWednesday(models.Model):
  344. id = models.BigAutoField(primary_key=True, verbose_name=u'自增标记ID')
  345. device_user_id = models.CharField(default='', db_index=True, blank=True, max_length=32, verbose_name=u'用户id')
  346. device_uid = models.CharField(default='', db_index=True, blank=True, max_length=32, verbose_name=u'设备uid')
  347. device_nick_name = models.CharField(blank=True, max_length=32, default='', verbose_name=u'设备昵称')
  348. channel = models.IntegerField(default=1, blank=True, verbose_name=u'设备通道')
  349. event_type = models.IntegerField(default=0, blank=True,
  350. verbose_name=u'事件类型(0:代表空字符,1:ai人,2:ai动物,3:车,123:组合类型(人/车/动物),51:移动侦测,'
  351. u'52:传感器报警,53:影像遗失,54:PIR,55:门磁报警, 56:外部发报, 57:人型报警,'
  352. u'702:摄像头休眠,703:摄像头唤醒,'
  353. u'704:电量过低)')
  354. status = models.BooleanField(blank=True, default=False, verbose_name=u'事件状态(0,1)')
  355. alarm = models.CharField(blank=True, max_length=256, verbose_name=u'报警信息')
  356. event_time = models.CharField(blank=True, db_index=True, default='', max_length=16, verbose_name=u'设备报警时间')
  357. receive_time = models.CharField(blank=True, default='', max_length=16, verbose_name=u'接收到报警时间')
  358. is_st = models.SmallIntegerField(default=0, verbose_name='是否截图(0:否,1:图片,2:视频)') # 0 否,1 是图,2,视频
  359. storage_location = models.SmallIntegerField(default=1, verbose_name='数据信息存储位置。1:阿里云oss,2:aws')
  360. border_coords = models.TextField(default='', blank=True, verbose_name=u'ai类型图片边框位置信息')
  361. add_time = models.IntegerField(verbose_name='添加时间', db_index=True, default=0)
  362. def __str__(self):
  363. return self.id
  364. class Meta:
  365. db_table = 'equipment_info_wednesday'
  366. verbose_name = u'星期三设备信息推送表'
  367. verbose_name_plural = verbose_name
  368. ordering = ('-id',)
  369. app_label = "PushModel"
  370. class EquipmentInfoThursday(models.Model):
  371. id = models.BigAutoField(primary_key=True, verbose_name=u'自增标记ID')
  372. device_user_id = models.CharField(default='', db_index=True, blank=True, max_length=32, verbose_name=u'用户id')
  373. device_uid = models.CharField(default='', db_index=True, blank=True, max_length=32, verbose_name=u'设备uid')
  374. device_nick_name = models.CharField(blank=True, max_length=32, default='', verbose_name=u'设备昵称')
  375. channel = models.IntegerField(default=1, blank=True, verbose_name=u'设备通道')
  376. event_type = models.IntegerField(default=0, blank=True,
  377. verbose_name=u'事件类型(0:代表空字符,1:ai人,2:ai动物,3:车,123:组合类型(人/车/动物),51:移动侦测,'
  378. u'52:传感器报警,53:影像遗失,54:PIR,55:门磁报警, 56:外部发报, 57:人型报警,'
  379. u'702:摄像头休眠,703:摄像头唤醒,'
  380. u'704:电量过低)')
  381. status = models.BooleanField(blank=True, default=False, verbose_name=u'事件状态(0,1)')
  382. alarm = models.CharField(blank=True, max_length=256, verbose_name=u'报警信息')
  383. event_time = models.CharField(blank=True, db_index=True, default='', max_length=16, verbose_name=u'设备报警时间')
  384. receive_time = models.CharField(blank=True, default='', max_length=16, verbose_name=u'接收到报警时间')
  385. is_st = models.SmallIntegerField(default=0, verbose_name='是否截图(0:否,1:图片,2:视频)') # 0 否,1 是图,2,视频
  386. storage_location = models.SmallIntegerField(default=1, verbose_name='数据信息存储位置。1:阿里云oss,2:aws')
  387. border_coords = models.TextField(default='', blank=True, verbose_name=u'ai类型图片边框位置信息')
  388. add_time = models.IntegerField(verbose_name='添加时间', db_index=True, default=0)
  389. def __str__(self):
  390. return self.id
  391. class Meta:
  392. db_table = 'equipment_info_thursday'
  393. verbose_name = u'星期四设备信息推送表'
  394. verbose_name_plural = verbose_name
  395. ordering = ('-id',)
  396. app_label = "PushModel"
  397. class EquipmentInfoFriday(models.Model):
  398. id = models.BigAutoField(primary_key=True, verbose_name=u'自增标记ID')
  399. device_user_id = models.CharField(default='', db_index=True, blank=True, max_length=32, verbose_name=u'用户id')
  400. device_uid = models.CharField(default='', db_index=True, blank=True, max_length=32, verbose_name=u'设备uid')
  401. device_nick_name = models.CharField(blank=True, max_length=32, default='', verbose_name=u'设备昵称')
  402. channel = models.IntegerField(default=1, blank=True, verbose_name=u'设备通道')
  403. event_type = models.IntegerField(default=0, blank=True,
  404. verbose_name=u'事件类型(0:代表空字符,1:ai人,2:ai动物,3:车,123:组合类型(人/车/动物),51:移动侦测,'
  405. u'52:传感器报警,53:影像遗失,54:PIR,55:门磁报警, 56:外部发报, 57:人型报警,'
  406. u'702:摄像头休眠,703:摄像头唤醒,'
  407. u'704:电量过低)')
  408. status = models.BooleanField(blank=True, default=False, verbose_name=u'事件状态(0,1)')
  409. alarm = models.CharField(blank=True, max_length=256, verbose_name=u'报警信息')
  410. event_time = models.CharField(blank=True, db_index=True, default='', max_length=16, verbose_name=u'设备报警时间')
  411. receive_time = models.CharField(blank=True, default='', max_length=16, verbose_name=u'接收到报警时间')
  412. is_st = models.SmallIntegerField(default=0, verbose_name='是否截图(0:否,1:图片,2:视频)') # 0 否,1 是图,2,视频
  413. storage_location = models.SmallIntegerField(default=1, verbose_name='数据信息存储位置。1:阿里云oss,2:aws')
  414. border_coords = models.TextField(default='', blank=True, verbose_name=u'ai类型图片边框位置信息')
  415. add_time = models.IntegerField(verbose_name='添加时间', db_index=True, default=0)
  416. def __str__(self):
  417. return self.id
  418. class Meta:
  419. db_table = 'equipment_info_friday'
  420. verbose_name = u'星期五设备信息推送表'
  421. verbose_name_plural = verbose_name
  422. ordering = ('-id',)
  423. app_label = "PushModel"
  424. class EquipmentInfoSaturday(models.Model):
  425. id = models.BigAutoField(primary_key=True, verbose_name=u'自增标记ID')
  426. device_user_id = models.CharField(default='', db_index=True, blank=True, max_length=32, verbose_name=u'用户id')
  427. device_uid = models.CharField(default='', db_index=True, blank=True, max_length=32, verbose_name=u'设备uid')
  428. device_nick_name = models.CharField(blank=True, max_length=32, default='', verbose_name=u'设备昵称')
  429. channel = models.IntegerField(default=1, blank=True, verbose_name=u'设备通道')
  430. event_type = models.IntegerField(default=0, blank=True,
  431. verbose_name=u'事件类型(0:代表空字符,1:ai人,2:ai动物,3:车,123:组合类型(人/车/动物),51:移动侦测,'
  432. u'52:传感器报警,53:影像遗失,54:PIR,55:门磁报警, 56:外部发报, 57:人型报警,'
  433. u'702:摄像头休眠,703:摄像头唤醒,'
  434. u'704:电量过低)')
  435. status = models.BooleanField(blank=True, default=False, verbose_name=u'事件状态(0,1)')
  436. alarm = models.CharField(blank=True, max_length=256, verbose_name=u'报警信息')
  437. event_time = models.CharField(blank=True, db_index=True, default='', max_length=16, verbose_name=u'设备报警时间')
  438. receive_time = models.CharField(blank=True, default='', max_length=16, verbose_name=u'接收到报警时间')
  439. is_st = models.SmallIntegerField(default=0, verbose_name='是否截图(0:否,1:图片,2:视频)') # 0 否,1 是图,2,视频
  440. storage_location = models.SmallIntegerField(default=1, verbose_name='数据信息存储位置。1:阿里云oss,2:aws')
  441. border_coords = models.TextField(default='', blank=True, verbose_name=u'ai类型图片边框位置信息')
  442. add_time = models.IntegerField(verbose_name='添加时间', db_index=True, default=0)
  443. def __str__(self):
  444. return self.id
  445. class Meta:
  446. db_table = 'equipment_info_saturday'
  447. verbose_name = u'星期六设备信息推送表'
  448. verbose_name_plural = verbose_name
  449. ordering = ('-id',)
  450. app_label = "PushModel"
  451. class EquipmentInfoSunday(models.Model):
  452. id = models.BigAutoField(primary_key=True, verbose_name=u'自增标记ID')
  453. device_user_id = models.CharField(default='', db_index=True, blank=True, max_length=32, verbose_name=u'用户id')
  454. device_uid = models.CharField(default='', db_index=True, blank=True, max_length=32, verbose_name=u'设备uid')
  455. device_nick_name = models.CharField(blank=True, max_length=32, default='', verbose_name=u'设备昵称')
  456. channel = models.IntegerField(default=1, blank=True, verbose_name=u'设备通道')
  457. event_type = models.IntegerField(default=0, blank=True,
  458. verbose_name=u'事件类型(0:代表空字符,1:ai人,2:ai动物,3:车,123:组合类型(人/车/动物),51:移动侦测,'
  459. u'52:传感器报警,53:影像遗失,54:PIR,55:门磁报警, 56:外部发报, 57:人型报警,'
  460. u'702:摄像头休眠,703:摄像头唤醒,'
  461. u'704:电量过低)')
  462. status = models.BooleanField(blank=True, default=False, verbose_name=u'事件状态(0,1)')
  463. alarm = models.CharField(blank=True, max_length=256, verbose_name=u'报警信息')
  464. event_time = models.CharField(blank=True, db_index=True, default='', max_length=16, verbose_name=u'设备报警时间')
  465. receive_time = models.CharField(blank=True, default='', max_length=16, verbose_name=u'接收到报警时间')
  466. is_st = models.SmallIntegerField(default=0, verbose_name='是否截图(0:否,1:图片,2:视频)') # 0 否,1 是图,2,视频
  467. storage_location = models.SmallIntegerField(default=1, verbose_name='数据信息存储位置。1:阿里云oss,2:aws')
  468. border_coords = models.TextField(default='', blank=True, verbose_name=u'ai类型图片边框位置信息')
  469. add_time = models.IntegerField(verbose_name='添加时间', db_index=True, default=0)
  470. def __str__(self):
  471. return self.id
  472. class Meta:
  473. db_table = 'equipment_info_sunday'
  474. verbose_name = u'星期天设备信息推送表'
  475. verbose_name_plural = verbose_name
  476. ordering = ('-id',)
  477. app_label = "PushModel"
  478. class Ai_Push_Info(models.Model):
  479. id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
  480. devUid = models.CharField(default='', db_index=True, blank=True, max_length=32, verbose_name=u'设备ID')
  481. devNickName = models.CharField(blank=True, max_length=32, default='', verbose_name=u'设备昵称')
  482. Channel = models.IntegerField(default=1, blank=True, verbose_name=u'设备通道')
  483. eventType = models.CharField(blank=True, max_length=100, default='', verbose_name=u'事件类型')
  484. status = models.BooleanField(blank=True, default=False, verbose_name=u'事件状态')
  485. alarm = models.CharField(blank=True, max_length=256, verbose_name=u'报警信息')
  486. eventTime = models.CharField(blank=True, default='', max_length=16, verbose_name=u'设备报警时间')
  487. receiveTime = models.CharField(blank=True, default='', max_length=16, verbose_name=u'接收到报警时间')
  488. userID_id = models.CharField(default='', db_index=True, blank=True, max_length=32, verbose_name=u'用户ID')
  489. is_st = models.SmallIntegerField(default=0, verbose_name='是否截图') # 0 否,1 是图,2,视频
  490. storage_location = models.SmallIntegerField(default=1, db_index=True, verbose_name='数据信息存储位置。1:阿里云oss,2:aws')
  491. # message_id = models.CharField(blank=True, max_length=32, default='', verbose_name='第三方推送服务器返回的id')
  492. # push_type = models.SmallIntegerField(blank=True, default=0, verbose_name='第三方推送服务器标志。0:APNS推送,1:谷歌推送,2:极光推送')
  493. # push_server_status = models.IntegerField(blank=True, default=200, verbose_name='是否成功推送到第三方服务器。200:成功,other:失败')
  494. # push_device_status = models.SmallIntegerField(blank=True, default=-1, verbose_name='是否成功推送到目标设备。0:失败,1:成功')
  495. addTime = models.IntegerField(verbose_name='添加时间', default=0)
  496. def __str__(self):
  497. return self.id
  498. class Meta:
  499. db_table = 'ai_push_info'
  500. verbose_name = u'ai信息推送表'
  501. verbose_name_plural = verbose_name
  502. ordering = ('-id',)
  503. class StatResModel(models.Model):
  504. id = models.AutoField(primary_key=True, verbose_name='自动ID')
  505. name = models.CharField(default='', max_length=120, verbose_name='图片名称', unique=True)
  506. addTime = models.IntegerField(verbose_name='添加时间', default=0)
  507. def __str__(self):
  508. return self.name
  509. class Meta:
  510. db_table = 'statres'
  511. verbose_name = '静态资源表'
  512. verbose_name_plural = verbose_name
  513. ordering = ('id',)
  514. class FeedBackModel(models.Model):
  515. id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
  516. userID = models.ForeignKey(Device_User, null=True, blank=True, to_field='userID', on_delete=models.CASCADE)
  517. type = models.SmallIntegerField(default=0, verbose_name='反馈类型') # 【0:产品建议,1:功能异常,2:安全问题】
  518. status = models.SmallIntegerField(default=0, verbose_name='状态:0未解决/解决')
  519. content = models.TextField(blank=True, null=True, verbose_name=u'反馈描述')
  520. addTime = models.IntegerField(verbose_name='添加时间', default=0)
  521. updTime = models.IntegerField(verbose_name='更新时间', default=0)
  522. FS = models.ManyToManyField(to='StatResModel', blank=True, verbose_name=u'用户反馈关联资源',
  523. db_table='fb_res')
  524. app = models.CharField(max_length=8, default='', verbose_name='类型') # [ios,android]
  525. phone_model = models.CharField(max_length=64, default='', verbose_name='手机型号') # [小米,android]
  526. os_version = models.CharField(max_length=16, default='', verbose_name='系统版本')
  527. uid = models.CharField(max_length=20, default='', verbose_name='设备uid')
  528. product_type = models.CharField(max_length=32, default='', verbose_name='设备uid')
  529. app_version = models.CharField(max_length=32, default='', verbose_name='app版本信息')
  530. appBundleId = models.CharField(max_length=32, default='', verbose_name='app版本appBundleId')
  531. email = models.CharField(max_length=32, default='', verbose_name='app版本email')
  532. score = models.CharField(max_length=32, default='0', verbose_name='评分--星星数')
  533. def __str__(self):
  534. return self.id
  535. class Meta:
  536. db_table = 'feedback'
  537. verbose_name = u'用户反馈信息表'
  538. verbose_name_plural = verbose_name
  539. ordering = ('-id',)
  540. class User_Brand(models.Model):
  541. id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
  542. # 关联用户
  543. userID = models.ForeignKey(Device_User, to_field='userID', on_delete=models.CASCADE)
  544. deviceSupplier = models.CharField(max_length=32, default='', verbose_name='(必填)设备供应商 string (例:华为、小米...)')
  545. deviceModel = models.CharField(max_length=64, default='', verbose_name='(必填)设备型号 string @mock=HM NOTE 1TD')
  546. osType = models.CharField(max_length=32, default='', verbose_name='(必填)操作系统名称 string @mock=Android')
  547. osVersion = models.CharField(max_length=32, default='', verbose_name='(必填)操作系统版本号 string @mock=4.0')
  548. country = models.CharField(max_length=200, default='', verbose_name='国家')
  549. province = models.CharField(max_length=150, default='', verbose_name='省')
  550. city = models.CharField(max_length=132, default='', verbose_name='市')
  551. area = models.CharField(max_length=132, default='', verbose_name='区')
  552. street = models.CharField(max_length=132, default='', verbose_name='街道')
  553. longitude = models.CharField(max_length=30, default='', verbose_name='经度')
  554. latitude = models.CharField(max_length=30, default='', verbose_name='纬度')
  555. appId = models.CharField(max_length=50, default='', verbose_name='appid_值')
  556. status = models.IntegerField(default=0, verbose_name='传国家省市信息过来就为状态:1 ,不传就为状态:0')
  557. ip = models.CharField(blank=True, max_length=20, default='', verbose_name=u'区域ip')
  558. addTime = models.IntegerField(verbose_name='添加时间', default=0)
  559. def __str__(self):
  560. return self.id
  561. class Meta:
  562. db_table = 'user_brand'
  563. verbose_name = u'用户登录手机端手机品牌统计表'
  564. verbose_name_plural = verbose_name
  565. ordering = ('id',)
  566. # 存储通表
  567. class VodBucketModel(models.Model):
  568. id = models.AutoField(primary_key=True, verbose_name='主键')
  569. bucket = models.CharField(max_length=60, verbose_name='存储桶名称')
  570. storeDay = models.IntegerField(default=0, verbose_name='存储生命周期(天)')
  571. content = models.TextField(verbose_name='描述', default='')
  572. endpoint = models.CharField(max_length=125, default='', verbose_name='存储节点')
  573. area = models.CharField(max_length=16, default='', verbose_name='区域')
  574. region = models.CharField(max_length=16, default='', verbose_name='regionID')
  575. is_free = models.SmallIntegerField(default=0, verbose_name='是否为免费存储桶[0:否,1:是]')
  576. addTime = models.IntegerField(verbose_name='添加时间', default=0)
  577. updTime = models.IntegerField(verbose_name='更新时间', default=0)
  578. mold = models.SmallIntegerField(default=0, verbose_name='存储区域类型') # 0:国内阿里 1:国外aws
  579. region_id = models.IntegerField(default=1, verbose_name='大洲编号')
  580. def __str__(self):
  581. return self.id
  582. class Meta:
  583. db_table = 'vod_bucket'
  584. verbose_name = u'存储通信息'
  585. verbose_name_plural = verbose_name
  586. ordering = ('-id',)
  587. class Store_Meal(models.Model):
  588. id = models.AutoField(primary_key=True, verbose_name=u'自增ID')
  589. # title = models.CharField(blank=True, max_length=32, verbose_name=u'标题')
  590. currency = models.CharField(blank=True, default='$', max_length=32, verbose_name=u'货币符号')
  591. symbol = models.CharField(blank=True, default='$', max_length=32, verbose_name=u'符号')
  592. price = models.CharField(blank=True, max_length=32, verbose_name=u'价格')
  593. virtual_price = models.CharField(blank=True, max_length=32, verbose_name=u'虚拟价格')
  594. is_discounts = models.SmallIntegerField(default=0, verbose_name=u'该套餐是否有优惠 [0=否,1是]') # 0没有;1有
  595. discount_price = models.CharField(blank=True, max_length=32, verbose_name=u'第二年优惠价格')
  596. day = models.IntegerField(default=0, blank=True, verbose_name=u'云存录像保存天数(循环)') # 7,30,180,360
  597. expire = models.IntegerField(default=0, blank=True, verbose_name=u'有效期') # 单位月
  598. # content = models.TextField(blank=True, null=True, verbose_name=u'描述')
  599. add_time = models.DateTimeField(blank=True, null=True, verbose_name=u'加入时间', auto_now_add=True)
  600. # type = models.SmallIntegerField(default=0, verbose_name='付款类型') # 0是paypal,1为支付宝
  601. pay_type = models.ManyToManyField(to='Pay_Type', verbose_name='付款类型', db_table='store_meal_pay')
  602. update_time = models.DateTimeField(blank=True, verbose_name=u'更新时间', auto_now=True)
  603. bucket = models.ForeignKey(VodBucketModel, blank=True, to_field='id', on_delete=models.CASCADE,
  604. default=1, verbose_name='存储空间')
  605. commodity_type = models.SmallIntegerField(default=0, verbose_name='云存储套餐类型') # 0:事件型 1:连续型
  606. commodity_code = models.CharField(default='', max_length=32, verbose_name='套餐规格码')
  607. is_show = models.SmallIntegerField(default=0, verbose_name=u'是否隐藏 [0=否,1是]')
  608. # lang = models.CharField(default='', max_length=20, verbose_name='语言/国家')
  609. lang = models.ManyToManyField(to='Lang', verbose_name='套餐语言', db_table='store_meal_lang')
  610. cycle_config_id = models.IntegerField(null=True, verbose_name='周期付款配置表id')
  611. sort = models.IntegerField(default=99, blank=True, verbose_name=u'排序,越小越靠前') # 单位月
  612. # 备用字段
  613. spare_3 = models.CharField(default='', blank=True, max_length=64, db_index=True, verbose_name=u'备用字段3')
  614. spare_4 = models.CharField(default='', blank=True, max_length=64, db_index=True, verbose_name=u'备用字段4')
  615. def __str__(self):
  616. return self.id
  617. class Meta:
  618. db_table = 'store_meal'
  619. verbose_name = u'存储套餐'
  620. verbose_name_plural = verbose_name
  621. ordering = ('id',)
  622. class AiStoreMeal(models.Model):
  623. id = models.AutoField(primary_key=True, verbose_name=u'自增ID')
  624. price = models.CharField(blank=True, max_length=32, verbose_name=u'价格')
  625. virtual_price = models.CharField(blank=True, max_length=32, verbose_name=u'虚拟价格')
  626. symbol = models.CharField(blank=True, default='$', max_length=32, verbose_name=u'符号')
  627. currency = models.CharField(blank=True, default='$', max_length=32, verbose_name=u'货币符号')
  628. is_show = models.SmallIntegerField(default=0, verbose_name=u'是否显示') # 0: 否, 1: 是
  629. is_discounts = models.SmallIntegerField(default=0, verbose_name=u'是否有优惠') # 0: 没有, 1: 有
  630. discount_price = models.CharField(blank=True, max_length=32, verbose_name=u'第二年优惠价格')
  631. effective_day = models.IntegerField(default=0, blank=True, verbose_name=u'有效天数') # 7, 30
  632. pay_type = models.ManyToManyField(to='Pay_Type', verbose_name='付款类型', db_table='ai_store_meal_pay')
  633. lang = models.ManyToManyField(to='Lang', verbose_name='套餐语言', db_table='ai_store_meal_lang')
  634. add_time = models.DateTimeField(blank=True, verbose_name=u'添加时间', auto_now_add=True)
  635. update_time = models.DateTimeField(blank=True, verbose_name=u'更新时间', auto_now=True)
  636. def __str__(self):
  637. return self.id
  638. class Meta:
  639. db_table = 'ai_store_meal'
  640. verbose_name = u'AI套餐'
  641. verbose_name_plural = verbose_name
  642. ordering = ('id',)
  643. class Pay_Type(models.Model):
  644. id = models.AutoField(primary_key=True, verbose_name=u'自增ID')
  645. payment = models.CharField(max_length=32, verbose_name=u'支付方式')
  646. def __str__(self):
  647. return self.id
  648. class Meta:
  649. db_table = 'pay_type'
  650. verbose_name = u'付款类型'
  651. verbose_name_plural = verbose_name
  652. ordering = ('id',)
  653. # 套餐语言表
  654. class Lang(models.Model):
  655. id = models.AutoField(primary_key=True, verbose_name='自增ID')
  656. lang = models.CharField(default='', max_length=20, db_index=True, verbose_name='语言/国家')
  657. title = models.CharField(blank=True, max_length=320, verbose_name='标题')
  658. content = models.TextField(blank=True, null=True, verbose_name='描述')
  659. discount_content = models.CharField(blank=True, max_length=320, verbose_name=u'优惠信息描述')
  660. def __str__(self):
  661. return self.id
  662. class Meta:
  663. db_table = 'lang'
  664. verbose_name = '套餐语言'
  665. verbose_name_plural = verbose_name
  666. ordering = ('id',)
  667. class Equipment_Version(models.Model):
  668. eid = models.CharField(blank=True, max_length=32, primary_key=True)
  669. ESN = models.CharField(blank=True, max_length=32, verbose_name=u'设备规格名称')
  670. code = models.CharField(blank=True, max_length=64, verbose_name=u'设备规格代码')
  671. version = models.CharField(blank=True, max_length=64, verbose_name=u'设备版本')
  672. softwareVersion = models.CharField(blank=True, max_length=32, verbose_name=u'软件版本')
  673. chipModelList2Code = models.CharField(max_length=32, blank=True, verbose_name=u'主芯片码')
  674. channel = models.IntegerField(blank=True, verbose_name=u'通道数')
  675. resolutionRatio = models.IntegerField(blank=True, verbose_name=u'分辨率')
  676. type = models.CharField(blank=True, max_length=16, verbose_name=u'设备机型')
  677. companyCode = models.CharField(blank=True, max_length=128, verbose_name=u'用户公司名称')
  678. data_joined = models.DateTimeField(blank=True, verbose_name=u'加入时间', auto_now_add=True)
  679. fileSize = models.IntegerField(blank=True, verbose_name=u'文件总大小')
  680. filePath = models.CharField(blank=True, max_length=256, verbose_name=u'升级文件路径')
  681. Description = models.TextField(blank=True, default='', verbose_name=u'描述信息')
  682. fileMd5 = models.CharField(blank=True, max_length=32, default='', verbose_name=u'上传文件MD5加密')
  683. status = models.BooleanField(blank=True, default=True, verbose_name=u'是否开启更新状态')
  684. update_time = models.DateTimeField(blank=True, verbose_name=u'更新时间', auto_now=True)
  685. lang = models.CharField(blank=True, default='en', max_length=32, verbose_name=u'ota包内置语言')
  686. mci = models.CharField(default='', blank=True, max_length=10, verbose_name='设备类型')
  687. img = models.CharField(max_length=300, blank=True, default='', verbose_name=u'图片路径')
  688. max_ver = models.CharField(default='', max_length=16, verbose_name='最大版本号')
  689. def __str__(self):
  690. return self.eid
  691. class Meta:
  692. verbose_name = '设备版本信息'
  693. ordering = ('-data_joined',)
  694. db_table = 'equipment_version'
  695. class App_Info(models.Model):
  696. id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
  697. appBundleId = models.CharField(blank=True, max_length=32, verbose_name=u'appID')
  698. appName = models.CharField(blank=True, max_length=32, verbose_name=u'app名称')
  699. systemLanguage = models.CharField(blank=True, max_length=32, verbose_name=u'系统语言')
  700. newAppversion = models.CharField(blank=True, max_length=12, verbose_name=u'系统版本')
  701. minAppversion = models.CharField(default='', blank=True, max_length=12, verbose_name=u'最小系统版本')
  702. bundleVersion = models.CharField(blank=True, max_length=12, verbose_name=u'项目版本')
  703. content = models.TextField(blank=True, default='', verbose_name=u'更新内容')
  704. app_type = models.IntegerField(default=0, blank=True, verbose_name=u'app类型') # ios 1,android 2
  705. add_time = models.DateTimeField(blank=True, null=True, verbose_name=u'加入时间', auto_now_add=True)
  706. update_time = models.DateTimeField(blank=True, verbose_name=u'更新时间', auto_now=True)
  707. downloadLink = models.CharField(max_length=300, blank=True, default='', verbose_name='升级')
  708. img = models.CharField(default='', max_length=128, verbose_name='图片路径')
  709. def __str__(self):
  710. return self.id
  711. class Meta:
  712. db_table = 'app_info'
  713. verbose_name = u'app信息表'
  714. verbose_name_plural = verbose_name
  715. ordering = ('id',)
  716. class App_Colophon(models.Model):
  717. id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
  718. app_id = models.ForeignKey(App_Info, to_field='id', on_delete=models.CASCADE, verbose_name='appid编号', blank=True,
  719. default=1)
  720. lang = models.CharField(blank=True, max_length=32, verbose_name=u'系统语言')
  721. newApp_version = models.CharField(blank=True, max_length=12, verbose_name=u'系统版本')
  722. content = models.TextField(blank=True, default='', verbose_name=u'更新内容')
  723. version_time = models.IntegerField(default=0, blank=True, verbose_name=u'版本更新的时间')
  724. def __str__(self):
  725. return self.id
  726. class Meta:
  727. db_table = 'app_colophon'
  728. verbose_name = u'app信息表的记录关联到App_Info'
  729. verbose_name_plural = verbose_name
  730. ordering = ('id',)
  731. class Order_Model(models.Model):
  732. orderID = models.CharField(blank=True, max_length=20, primary_key=True, verbose_name=u'订单id')
  733. paymentID = models.CharField(blank=True, max_length=64, default='', verbose_name='付款id')
  734. trade_no = models.CharField(blank=True, max_length=32, default='', verbose_name='第三方订单号')
  735. userID = models.ForeignKey(Device_User, to_field='userID', on_delete=models.CASCADE) # 订单关联用户
  736. UID = models.CharField(max_length=20, verbose_name='设备UID')
  737. channel = models.SmallIntegerField(default=0, verbose_name=u'通道数')
  738. desc = models.CharField(max_length=50, default='', verbose_name='商品描述')
  739. price = models.CharField(default='', max_length=16, verbose_name='价格')
  740. refunded_amount = models.FloatField(default=0, verbose_name=u'已退款金额')
  741. currency = models.CharField(blank=True, default='$', max_length=32, verbose_name=u'货币')
  742. addTime = models.IntegerField(verbose_name='添加时间', default=0)
  743. updTime = models.IntegerField(verbose_name='更新时间', default=0)
  744. isSelectDiscounts = models.SmallIntegerField(default=0, verbose_name=u'用户是否选择了第二年优惠 [0=否,1是]')
  745. # 0: 待支付, 1:支付成功, 2: 取消支付, 4: 退款失败, 5: 全额退款, 6: 部分退款, 7: PayPal已退款, 9:处理中, 10:支付失败
  746. status = models.SmallIntegerField(default=0, verbose_name='付款状态')
  747. # 1: PayPal, 2: 支付宝, 3: 微信, 10: 免费体验, 11: 激活码
  748. payType = models.SmallIntegerField(default=0, verbose_name='支付方式')
  749. payTime = models.IntegerField(verbose_name='支付成功时间', default=0)
  750. rank = models.ForeignKey(Store_Meal, to_field='id', default='', on_delete=models.CASCADE, verbose_name='关联云存套餐表')
  751. ai_rank = models.ForeignKey(AiStoreMeal, to_field='id', default='', on_delete=models.CASCADE,
  752. verbose_name='关联ai套餐表')
  753. order_type = models.SmallIntegerField(default=0, verbose_name='订单类型:0:云存,1:ai,2:联通4G')
  754. unify_combo_id = models.CharField(blank=True, default='', max_length=32, verbose_name=u'统一套餐id')
  755. nickname = models.CharField(default='', max_length=64, verbose_name='设备昵称')
  756. uid_bucket_id = models.IntegerField(default=0, verbose_name='关联uid_bucket的字段')
  757. commodity_type = models.SmallIntegerField(default=0, verbose_name='云存储套餐类型')
  758. commodity_code = models.CharField(default='', max_length=32, verbose_name='套餐规格码')
  759. pay_url = models.CharField(max_length=2000, default='', verbose_name='支付url')
  760. paypal = models.CharField(max_length=500, null=True, blank=True, verbose_name='支付批准url')
  761. promotion_rule_id = models.CharField(blank=True, max_length=64, default='', verbose_name='促销id')
  762. plan_id = models.CharField(default='', blank=True, max_length=64, verbose_name=u'paypal计划id')
  763. agreement_id = models.CharField(default='', blank=True, max_length=64, verbose_name=u'paypal协议id')
  764. coupon_id = models.CharField(default='', blank=True, max_length=10, verbose_name=u'优惠券id')
  765. # 备用字段
  766. spare_4 = models.CharField(default='', blank=True, max_length=64, db_index=True, verbose_name=u'备用字段4')
  767. def __str__(self):
  768. return self.orderID
  769. class Meta:
  770. db_table = 'orders'
  771. verbose_name = u'订单信息表'
  772. verbose_name_plural = verbose_name
  773. ordering = ('-orderID',)
  774. # 优惠券文案语言表
  775. class CouponLang(models.Model):
  776. id = models.AutoField(primary_key=True, verbose_name='自增ID')
  777. lang = models.CharField(default='', max_length=20, db_index=True, verbose_name='语言/国家')
  778. instruction = models.CharField(blank=True, default='', max_length=200, verbose_name=u'用法')
  779. quota = models.CharField(blank=True, default='', max_length=200, verbose_name=u'优惠额度, 例如20.0%')
  780. unit = models.CharField(blank=True, default='', max_length=200, verbose_name=u'优惠单位, 例如off, 折')
  781. remark = models.CharField(blank=True, default='', max_length=200, verbose_name=u'备注')
  782. def __str__(self):
  783. return self.id
  784. class Meta:
  785. db_table = 'coupon_lang'
  786. verbose_name = '套餐语言'
  787. verbose_name_plural = verbose_name
  788. ordering = ('id',)
  789. class CouponConfigModel(models.Model):
  790. id = models.AutoField(primary_key=True, verbose_name='主键')
  791. type = models.SmallIntegerField(default=0, verbose_name='优惠类型') # 1打折; 2抵扣
  792. use_range = models.CharField(default=0, max_length=100, verbose_name='使用限制') # 0:所有服务都可使用; 1:云存;2:ai;多种1,2,3
  793. coupon_discount = models.CharField(blank=True, max_length=32, verbose_name=u'折扣力度')
  794. lang = models.ManyToManyField(to='CouponLang', verbose_name='套餐语言', db_table='coupon_lang_associated')
  795. def __str__(self):
  796. return self.id
  797. class Meta:
  798. db_table = 'coupon_config'
  799. verbose_name = u'优惠券配置表'
  800. verbose_name_plural = verbose_name
  801. class CouponModel(models.Model):
  802. id = models.AutoField(primary_key=True, verbose_name='主键')
  803. use_status = models.SmallIntegerField(default=0, verbose_name='使用状态') # 0未使用;1冻结;2已使用
  804. distribute_time = models.IntegerField(verbose_name='发放到用户账户时间', default=0)
  805. valid_time = models.PositiveIntegerField(default=9999999999, verbose_name='有效期间') # 超过有效期不可在使用;0永久
  806. # userID = models.ForeignKey(Device_User, to_field='userID', on_delete=models.CASCADE) # 关联用户
  807. userID = models.CharField(blank=True, max_length=32, db_index=True, verbose_name=u'用户ID')
  808. coupon_config = models.ForeignKey(CouponConfigModel, null=True, blank=True, to_field='id', on_delete=models.CASCADE,
  809. verbose_name='关联优惠券配置表的id')
  810. update_time = models.IntegerField(verbose_name='更新时间', default=0)
  811. create_time = models.IntegerField(verbose_name='添加时间', default=0)
  812. def __str__(self):
  813. return self.id
  814. class Meta:
  815. db_table = 'coupon'
  816. verbose_name = u'优惠券'
  817. verbose_name_plural = verbose_name
  818. class PayCycleConfigModel(models.Model):
  819. id = models.AutoField(primary_key=True, verbose_name='主键')
  820. # name = models.CharField(default='',max_length=200, verbose_name='计划名字')
  821. # tax = models.CharField(max_length=2000, default='', verbose_name='税金')
  822. cycles = models.IntegerField(verbose_name='周期:0代表无限期', default=0)
  823. frequency = models.CharField(max_length=50, verbose_name='频率,MONTH,WEEK,YEAR', default=0)
  824. frequencyInterval = models.IntegerField(default=0, verbose_name='频率周期')
  825. remark = models.CharField(max_length=1000, default='', verbose_name='备注')
  826. def __str__(self):
  827. return self.id
  828. class Meta:
  829. db_table = 'pay_cycle_config'
  830. verbose_name = u'周期付款计划'
  831. verbose_name_plural = verbose_name
  832. class PromotionRuleModel(models.Model):
  833. id = models.AutoField(primary_key=True, verbose_name='主键')
  834. ruleName = models.TextField(default='', verbose_name='规则名字') # json格式, 例: {"cn":"黑色星期五","en":"Black Friday"}
  835. ruleDesc = models.TextField(default='',
  836. verbose_name='规则描述') # json格式, 例: {"cn":"买一送一","en":"buy one get one free"}
  837. ruleConfig = models.CharField(max_length=2000, default='', verbose_name='规则配置') # json格式, 例: {"buy": 1, "get": 1}
  838. startTime = models.IntegerField(verbose_name='促销活动开始时间', default=0)
  839. endTime = models.IntegerField(verbose_name='促销活动结束时间', default=0)
  840. status = models.SmallIntegerField(default=0, verbose_name='活动状态:0未进行;1进行中')
  841. remark = models.CharField(max_length=50, default='', verbose_name='备注')
  842. popups = models.CharField(max_length=2000, default='',
  843. verbose_name='app弹窗消息') # json格式 ,例: {"cn":"买一送一","en":"buy one get one free"}
  844. def __str__(self):
  845. return self.id
  846. class Meta:
  847. db_table = 'promotion_rule'
  848. verbose_name = u'促销规则表'
  849. verbose_name_plural = verbose_name
  850. ordering = ('-id',)
  851. class VodHlsModel(models.Model):
  852. id = models.AutoField(primary_key=True, verbose_name='回放列表主键')
  853. uid = models.CharField(max_length=20, verbose_name='设备UID', db_index=True)
  854. channel = models.SmallIntegerField(default=0, verbose_name='通道')
  855. time = models.IntegerField(verbose_name='播放列表名字时间戳', default=0, db_index=True)
  856. endTime = models.IntegerField(verbose_name='云存储删除时间(周期)', default=0, db_index=True)
  857. sec = models.IntegerField(verbose_name='秒数', default=0)
  858. bucket = models.ForeignKey(VodBucketModel, blank=True, to_field='id', on_delete=models.CASCADE, default=1,
  859. verbose_name='存储空间')
  860. fg = models.CharField(max_length=20, verbose_name='ts个数,时间描述片段数') # 阿里为时间片段数,亚马逊为一个32bit整型,前28bit代表ts文件的时长
  861. def __str__(self):
  862. return self.id
  863. class Meta:
  864. db_table = 'vod_hls'
  865. verbose_name = u'云存回放信息表'
  866. verbose_name_plural = verbose_name
  867. ordering = ('-id',)
  868. class OssCrdModel(models.Model):
  869. id = models.AutoField(primary_key=True, verbose_name='主键')
  870. uid = models.CharField(max_length=20, verbose_name='设备UID')
  871. channel = models.SmallIntegerField(default=0, verbose_name='通道')
  872. data = models.TextField(verbose_name='设备sts')
  873. addTime = models.IntegerField(verbose_name='添加时间', default=0)
  874. bucket = models.ForeignKey(VodBucketModel, blank=True, to_field='id', on_delete=models.CASCADE, default=1,
  875. verbose_name='存储空间')
  876. def __str__(self):
  877. return self.id
  878. class Meta:
  879. db_table = 'osscrd'
  880. verbose_name = u'设备证书'
  881. verbose_name_plural = verbose_name
  882. ordering = ('-id',)
  883. class StsCrdModel(models.Model):
  884. id = models.AutoField(primary_key=True, verbose_name='主键')
  885. uid = models.CharField(max_length=20, verbose_name='设备UID', db_index=True)
  886. channel = models.SmallIntegerField(default=0, verbose_name='通道')
  887. data = models.TextField(verbose_name='设备sts')
  888. addTime = models.IntegerField(verbose_name='添加时间', default=0)
  889. bucket = models.ForeignKey(VodBucketModel, blank=True, to_field='id', on_delete=models.CASCADE, default=1,
  890. verbose_name='存储空间')
  891. type = models.SmallIntegerField(default=0, verbose_name='sts类型') # 0:阿里云,1:s3
  892. def __str__(self):
  893. return self.id
  894. class Meta:
  895. db_table = 'stscrd'
  896. verbose_name = u'设备证书'
  897. verbose_name_plural = verbose_name
  898. ordering = ('-id',)
  899. class UID_Bucket(models.Model):
  900. id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
  901. uid = models.CharField(max_length=20, verbose_name='设备UID', db_index=True)
  902. channel = models.SmallIntegerField(default=0, verbose_name='通道')
  903. bucket = models.ForeignKey(VodBucketModel, blank=True, to_field='id', on_delete=models.CASCADE, verbose_name='存储空间')
  904. status = models.SmallIntegerField(default=0, verbose_name='状态[0:开启,1:关闭]')
  905. endTime = models.BigIntegerField(verbose_name='套餐结束时间', db_index=True, default=0)
  906. addTime = models.IntegerField(verbose_name='添加时间', default=0)
  907. updateTime = models.BigIntegerField(verbose_name='更新时间', default=0)
  908. use_status = models.IntegerField(verbose_name='使用状态[1:使用中,2已过期]', default=0)
  909. has_unused = models.SmallIntegerField(default=0, verbose_name='是否拥有其它未使用的套餐[0:否,1:是]')
  910. class Meta:
  911. db_table = 'vod_uid_bucket'
  912. verbose_name = '设备关联套餐表'
  913. verbose_name_plural = verbose_name
  914. ordering = ('id',)
  915. class Unused_Uid_Meal(models.Model):
  916. id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
  917. uid = models.CharField(max_length=20, verbose_name='设备UID', db_index=True)
  918. channel = models.SmallIntegerField(default=0, verbose_name='通道')
  919. bucket = models.ForeignKey(VodBucketModel, blank=True, to_field='id', on_delete=models.CASCADE, verbose_name='存储空间')
  920. addTime = models.IntegerField(verbose_name='添加时间', default=0)
  921. expire = models.IntegerField(verbose_name='存储桶存储时长[月份]', default=0)
  922. num = models.IntegerField(verbose_name='个数', default=0)
  923. # effect_time = models.BigIntegerField(verbose_name='生效时间', db_index=True, default=0)
  924. # uid_bucket = models.ForeignKey(UID_Bucket, blank=True, to_field='id', on_delete=models.CASCADE, default=0,
  925. # verbose_name='uid_bucket关联')
  926. class Meta:
  927. db_table = 'unused_uid_Meal'
  928. verbose_name = '未使用的设备关联套餐表'
  929. verbose_name_plural = verbose_name
  930. ordering = ('id',)
  931. class UID_Preview(models.Model):
  932. id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
  933. uid = models.CharField(default='', max_length=20, db_index=True, verbose_name='设备UID')
  934. channel = models.SmallIntegerField(verbose_name=u'通道号', default=0)
  935. addTime = models.IntegerField(verbose_name='添加时间', default=0)
  936. updTime = models.IntegerField(verbose_name='更新时间', default=0)
  937. class Meta:
  938. db_table = 'uid_preview'
  939. verbose_name = '设备预览图'
  940. verbose_name_plural = verbose_name
  941. ordering = ('id',)
  942. # 系统发送信息新到用户
  943. class SysMsgModel(models.Model):
  944. id = models.AutoField(primary_key=True, verbose_name='自增id')
  945. userID_id = models.CharField(default='', db_index=True, blank=True, max_length=32, verbose_name=u'用户ID')
  946. msg = models.TextField(blank=True, default='', verbose_name=u'发送内容')
  947. status = models.SmallIntegerField(verbose_name='是否已读', default=0) # 0:否,1:是
  948. addTime = models.IntegerField(verbose_name='添加时间', default=0)
  949. updTime = models.IntegerField(verbose_name='更新时间', default=0)
  950. eventType = models.IntegerField(verbose_name='消息类型', default=0) # 默认系统消息类型,0系统消息,1 ipcamera消息
  951. uid = models.CharField(default='', max_length=20, db_index=True, verbose_name='设备UID')
  952. class Meta:
  953. db_table = 'sys_msg'
  954. verbose_name = '系统消息'
  955. verbose_name_plural = verbose_name
  956. ordering = ('-id',)
  957. app_label = "PushModel"
  958. # 设备推送重构
  959. # 设备配置表,新
  960. class UidSetModel(models.Model):
  961. id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
  962. uid = models.CharField(max_length=20, db_index=True, unique=True, verbose_name='设备UID')
  963. channel = models.SmallIntegerField(default=0, verbose_name='通道数量') #
  964. detect_status = models.SmallIntegerField(default=0, verbose_name='推送开关') # 状态[0:关闭,1:开启,2:用户解绑]
  965. detect_interval = models.IntegerField(verbose_name='推送间隔', default=60) # 秒
  966. addTime = models.IntegerField(verbose_name='添加时间', default=0)
  967. updTime = models.IntegerField(verbose_name='更新时间', default=0)
  968. ucode = models.CharField(max_length=32, verbose_name='设备产品码', default='')
  969. version = models.CharField(max_length=32, verbose_name='设备版本', default='')
  970. p2p_region = models.CharField(max_length=16, verbose_name='设备p2p区域', default='ALL') # ALL CN EU US
  971. cloud_vod = models.SmallIntegerField(default=2, verbose_name='云存开关') # 0,关闭,1开启,2,不支持
  972. tz = models.CharField(default='', max_length=16, verbose_name='设备时区') # +8
  973. video_code = models.SmallIntegerField(default=0, verbose_name='编码类型') # 0:264,1:265
  974. nickname = models.CharField(default='', max_length=64, verbose_name='设备昵称')
  975. ip = models.CharField(max_length=20, default='', verbose_name=u'设备ip')
  976. # 设备重置后第一次启动时间
  977. is_alexa = models.IntegerField(default=0, verbose_name='是否支持alexa') # 0为不支持,1为支持,2为开启alexa发现
  978. detect_group = models.CharField(default='', max_length=32, verbose_name=u'检测类型')
  979. pwd = models.CharField(max_length=32, default='', verbose_name=u'设备密码') # 暂时是预留字段
  980. resetTime = models.IntegerField(default=0, verbose_name='设备重置时间')
  981. region_alexa = models.CharField(max_length=8, verbose_name='设备alexa区域', default='ALL') # ALL CN EU US
  982. deviceModel = models.CharField(blank=True, max_length=64, default='', verbose_name=u'设备型号')
  983. TimeZone = models.CharField(blank=True, max_length=50, default='', verbose_name=u'时区')
  984. TimeStatus = models.SmallIntegerField(default=0, verbose_name='同步手机时间开关。0:关闭,1:开启')
  985. SpaceUsable = models.CharField(blank=True, max_length=20, default='', verbose_name=u'可用空间')
  986. SpaceSum = models.CharField(blank=True, max_length=20, default='', verbose_name=u'总空间')
  987. MirrorType = models.IntegerField(blank=True, default=0, verbose_name=u'镜像类型 0:关闭镜像,1:上下镜像,2:左右镜像,3:上下左右镜像')
  988. RecordType = models.IntegerField(blank=True, default=0, verbose_name=u'录像模式(0:关闭,1:全是录像,3:报警录像)')
  989. OutdoorModel = models.IntegerField(blank=True, default=0, verbose_name=u'室外模式 0:关闭,1:开启')
  990. WIFIName = models.CharField(blank=True, max_length=50, default='', verbose_name=u'无线名称')
  991. isDetector = models.SmallIntegerField(default=0, verbose_name=u'侦测开关0:关闭,1:开启')
  992. DetectorRank = models.IntegerField(default=0, verbose_name=u'侦测灵敏度 0:低,1:中,2:高,3:最高')
  993. is_human = models.IntegerField(default=0, verbose_name='是否支持人形追踪。0:不支持,1:支持')
  994. is_custom_voice = models.IntegerField(default=0, verbose_name='是否支持自定义语音。0:不支持,1:支持')
  995. double_wifi = models.IntegerField(default=0, verbose_name='是否支持双频wifi。0:不支持,1:支持')
  996. mobile_4g = models.IntegerField(default=0, verbose_name='是否支持4g。0:不支持,1:支持')
  997. is_ptz = models.IntegerField(default=0, verbose_name='是否支持云台。0:不支持,1:支持')
  998. is_ai = models.IntegerField(default=2, verbose_name='是否支持ai') # 0,关闭,1开启,2,不支持
  999. is_notification = models.IntegerField(blank=True, default=1, verbose_name='新加-消息提醒开关') # 0:关闭,1:开启
  1000. new_detect_interval = models.IntegerField(blank=True, verbose_name='新加-消息提醒间隔', default=60) # 秒
  1001. class Meta:
  1002. db_table = 'uid_set'
  1003. verbose_name = u'设备配置表'
  1004. verbose_name_plural = verbose_name
  1005. ordering = ('id',)
  1006. # 设备关联用户推送
  1007. class UidPushModel(models.Model):
  1008. id = models.AutoField(primary_key=True, verbose_name='自增id')
  1009. userID = models.ForeignKey(Device_User, to_field='userID', on_delete=models.CASCADE)
  1010. uid_set = models.ForeignKey(UidSetModel, to_field='id', on_delete=models.CASCADE)
  1011. appBundleId = models.CharField(blank=True, max_length=32, verbose_name=u'appID')
  1012. app_type = models.IntegerField(default=0, verbose_name=u'app类型 1:ios,2:安卓')
  1013. push_type = models.IntegerField(default=0, verbose_name=u'推送类型') # 0,apns 1,安卓gcm 2,极光
  1014. token_val = models.CharField(default='', max_length=500, verbose_name=u'设备验证令牌')
  1015. m_code = models.CharField(default='', max_length=64, verbose_name='手机唯一标识')
  1016. addTime = models.IntegerField(verbose_name='添加时间', default=0)
  1017. updTime = models.IntegerField(verbose_name='更新时间', default=0)
  1018. lang = models.CharField(max_length=8, verbose_name='推送语言类型', default='en') # en英文 cn中文
  1019. tz = models.CharField(max_length=8, verbose_name='utc时区', default='0')
  1020. class Meta:
  1021. db_table = 'uid_push'
  1022. verbose_name = '设备绑定'
  1023. verbose_name_plural = verbose_name
  1024. ordering = ('-id',)
  1025. class GatewayPush(models.Model):
  1026. id = models.AutoField(primary_key=True, verbose_name='自增id')
  1027. user_id = models.CharField(default='', max_length=32, verbose_name=u'用户id')
  1028. app_bundle_id = models.CharField(default='', max_length=32, verbose_name=u'app包id')
  1029. app_type = models.IntegerField(default=0, verbose_name=u'app类型') # 1: ios, 2: 安卓
  1030. push_type = models.IntegerField(default=0, verbose_name=u'推送类型') # 0: apns, 1: 安卓gcm, 2: 极光
  1031. token_val = models.CharField(default='', max_length=500, verbose_name=u'设备验证令牌')
  1032. m_code = models.CharField(default='', max_length=64, verbose_name='手机唯一标识')
  1033. lang = models.CharField(default='en', max_length=8, verbose_name='推送语言')
  1034. tz = models.CharField(default='0', max_length=8, verbose_name='时区')
  1035. logout = models.BooleanField(default=False, verbose_name=u'退出登录')
  1036. class Meta:
  1037. db_table = 'gateway_push'
  1038. verbose_name = '网关推送'
  1039. verbose_name_plural = verbose_name
  1040. app_label = 'PushModel'
  1041. # 设备通道配置
  1042. class UidChannelSetModel(models.Model):
  1043. id = models.AutoField(primary_key=True, verbose_name='自增id')
  1044. uid = models.ForeignKey(UidSetModel, to_field='id', on_delete=models.CASCADE)
  1045. channel = models.IntegerField(default=1, verbose_name='通道号')
  1046. channel_name = models.CharField(blank=True, default='', max_length=20, verbose_name=u'通道名')
  1047. pir_audio = models.SmallIntegerField(default=0, verbose_name='pir声音。0:关闭,1:开启')
  1048. mic_audio = models.SmallIntegerField(default=0, verbose_name='mic声音。0:关闭,1:开启')
  1049. battery_status = models.SmallIntegerField(default=0, verbose_name='低电量提醒状态。0:关闭,1:开启')
  1050. battery_level = models.SmallIntegerField(default=0, verbose_name='低电量提醒级别。0: 低于10%;1:低于25%;2:低于50%;3:低于75%')
  1051. sleep_status = models.SmallIntegerField(default=0, verbose_name='是否开启【休眠通知】。0:关闭;1:开启')
  1052. sleep_time = models.SmallIntegerField(default=0, verbose_name='摄像机进入休眠时间。0:不休眠;1:10秒;2:20秒;3:30秒')
  1053. light_night_model = models.IntegerField(default=0, verbose_name='夜视模式') # 0:全彩模式,1:黑白模式,2:智能夜视模式
  1054. light_alarm_type = models.IntegerField(default=0, verbose_name='警报人形类型') # 0为人形,1为移动,3是人形和移动侦测0x0f
  1055. # 声光报警级别: 0: 关闭,1:强烈声光告警,2:轻微声光告警,3: 强烈声告警,4:轻微声告警,5:强烈光告警
  1056. light_alarm_level = models.IntegerField(default=0, verbose_name='声光报警级别')
  1057. light_alarm_man_en = models.IntegerField(default=0, verbose_name='人为告警状态') # 0:关,1:开
  1058. light_alarm_vol = models.IntegerField(default=0, verbose_name='报警音量') # 音量值0-100
  1059. light_long_light = models.IntegerField(default=0, verbose_name='长亮')
  1060. voice_prompt_status = models.SmallIntegerField(default=0, verbose_name='个性语音提示快关。0:关闭,1:开启')
  1061. voice_prompt_enter = models.IntegerField(default=0, verbose_name='进入铃声id')
  1062. voice_prompt_leave = models.IntegerField(default=0, verbose_name='离开铃声id')
  1063. voice_prompt_intelligent_mute = models.SmallIntegerField(default=0, verbose_name='智能静音。0:关闭,1:开启')
  1064. voice_start_x = models.FloatField(default=0, verbose_name='起始坐标的x')
  1065. voice_start_y = models.FloatField(default=18, verbose_name='起始坐标的y')
  1066. voice_end_x = models.FloatField(default=44, verbose_name='结束坐标的x')
  1067. voice_end_y = models.FloatField(default=18, verbose_name='结束坐标的y')
  1068. voice_start_time = models.IntegerField(default=0, verbose_name='语音执行的起始时间')
  1069. voice_end_time = models.IntegerField(default=0, verbose_name='语音执行的结束时间')
  1070. voice_repeat_day = models.IntegerField(default=127, verbose_name='语音执行的日期,周几')
  1071. voice_direction = models.IntegerField(default=0, verbose_name='语音方向。')
  1072. class Meta:
  1073. db_table = 'uid_channel'
  1074. verbose_name = '设备通道设置'
  1075. verbose_name_plural = verbose_name
  1076. # oauth2 第三方登录补全信息
  1077. class UserExModel(models.Model):
  1078. id = models.AutoField(primary_key=True, verbose_name='自增id')
  1079. userID = models.ForeignKey(Device_User, to_field='userID', on_delete=models.CASCADE)
  1080. appBundleId = models.CharField(default='', max_length=32, verbose_name=u'appID')
  1081. region = models.CharField(default='', max_length=16, verbose_name='区域语言')
  1082. addTime = models.IntegerField(verbose_name='添加时间', default=0)
  1083. updTime = models.IntegerField(verbose_name='更新时间', default=0)
  1084. # {'cn': '简体中文', 'tc': '繁体中文', 'fr': '法文', 'ru': '俄文', 'es': '西班牙文', 'pl': '波兰文', 'ja': '日文', 'de': '德文', 'en': '英文'}
  1085. class Meta:
  1086. db_table = 'user_ex'
  1087. verbose_name = '用户扩展信息表'
  1088. verbose_name_plural = verbose_name
  1089. ordering = ('-id',)
  1090. # oauth2 第三方登录补全信息
  1091. class UserOauth2Model(models.Model):
  1092. id = models.AutoField(primary_key=True, verbose_name='自增id')
  1093. userID = models.ForeignKey(Device_User, to_field='userID', on_delete=models.CASCADE)
  1094. authType = models.SmallIntegerField(default=0, verbose_name=0) # 授权类型 0 非授权,1 微信授权,2 苹果授权
  1095. unionID = models.CharField(default='', max_length=64, verbose_name='唯一标记') # 绑定唯一标记 unionID
  1096. addTime = models.IntegerField(verbose_name='添加时间', default=0)
  1097. updTime = models.IntegerField(verbose_name='更新时间', default=0)
  1098. # {'cn': '简体中文', 'tc': '繁体中文', 'fr': '法文', 'ru': '俄文', 'es': '西班牙文', 'pl': '波兰文', 'ja': '日文', 'de': '德文', 'en': '英文'}
  1099. class Meta:
  1100. db_table = 'user_oauth2'
  1101. verbose_name = '用户oauth2关联'
  1102. verbose_name_plural = verbose_name
  1103. ordering = ('-id',)
  1104. class SysMassModel(models.Model):
  1105. id = models.AutoField(primary_key=True, verbose_name='主键自增id')
  1106. sender = models.ForeignKey(Device_User, to_field='userID', on_delete=models.CASCADE) # 发送人
  1107. platform = models.CharField(default='', verbose_name='平台', max_length=16)
  1108. lang = models.TextField(blank=True, default='', verbose_name=u'语种')
  1109. recever = models.TextField(blank=True, default='', verbose_name=u'接受者')
  1110. msg = models.TextField(blank=True, default='', verbose_name=u'发送内容')
  1111. addTime = models.IntegerField(verbose_name='添加时间', default=0)
  1112. updTime = models.IntegerField(verbose_name='修改时间', default=0)
  1113. class Meta:
  1114. db_table = 'sys_mass'
  1115. verbose_name = '群发消息记录表'
  1116. verbose_name_plural = verbose_name
  1117. ordering = ('-id',)
  1118. class UidUserModel(models.Model):
  1119. id = models.CharField(max_length=32, primary_key=True)
  1120. userID = models.ForeignKey(Device_User, to_field='userID', on_delete=models.CASCADE)
  1121. NickName = models.CharField(max_length=32, verbose_name=u'设备名称')
  1122. UID = models.CharField(max_length=32, verbose_name=u'设备UID', default='')
  1123. View_Account = models.CharField(max_length=32, verbose_name=u'设备用户名称', default='')
  1124. View_Password = models.CharField(max_length=32, verbose_name=u'设备密码', default='')
  1125. ChannelIndex = models.IntegerField(verbose_name=u'通道号', default=0)
  1126. Type = models.IntegerField(verbose_name='设备类型')
  1127. NotificationMode = models.IntegerField(verbose_name=u'是否报警', default=0)
  1128. isShare = models.BooleanField(verbose_name=u'共享设备', default=False)
  1129. primaryUserID = models.CharField(verbose_name='主用户id', max_length=32, default='')
  1130. primaryMaster = models.CharField(max_length=64, verbose_name=u'主用户名', default='')
  1131. data_joined = models.DateTimeField(verbose_name=u'设备添加时间', auto_now_add=True)
  1132. version = models.CharField(max_length=20, default='', verbose_name=u'版本号')
  1133. isVod = models.SmallIntegerField(default=0, verbose_name='是否支持云存') # 是否支持云存设备
  1134. isExist = models.SmallIntegerField(default=1, verbose_name='是否被删除') # 是否被删除了(需主用户交互) 1存在,0不存在
  1135. is_ap = models.SmallIntegerField(default=1, verbose_name='是否为ap模式添加') # 1为ap模式添加,0为非ap模式添加
  1136. class Meta:
  1137. db_table = 'uid_user'
  1138. ordering = ('-data_joined',)
  1139. verbose_name = u'用户设备ap表'
  1140. verbose_name_plural = verbose_name
  1141. class pushDeployModel(models.Model):
  1142. id = models.AutoField(primary_key=True, verbose_name='主键自增id')
  1143. name = models.CharField(max_length=32, default='', verbose_name=u'推送配置名称')
  1144. key = models.CharField(max_length=32, default='', verbose_name=u'推送配置key')
  1145. secret = models.CharField(max_length=32, default='', verbose_name=u'推送配置密钥')
  1146. pem = models.CharField(max_length=32, default='', verbose_name=u'推送配置路径')
  1147. type = models.CharField(max_length=32, default='', verbose_name=u'推送配置类型') # ios 1,android 2
  1148. addTime = models.IntegerField(verbose_name='添加时间', default=0)
  1149. updTime = models.IntegerField(verbose_name='修改时间', default=0)
  1150. class Meta:
  1151. db_table = 'push_deploy'
  1152. verbose_name = '推送配置表'
  1153. verbose_name_plural = verbose_name
  1154. ordering = ('-id',)
  1155. class AppSetModel(models.Model):
  1156. id = models.AutoField(primary_key=True, verbose_name='主键自增id')
  1157. appBundleId = models.CharField(max_length=64, default='', verbose_name=u'APPid')
  1158. content = models.TextField(default='', verbose_name=u'里面包含评分,用户帮助,ap添加方式,ap工具,广告模块等json字段值')
  1159. addTime = models.IntegerField(verbose_name='添加时间', default=0)
  1160. updTime = models.IntegerField(verbose_name='修改时间', default=0)
  1161. class Meta:
  1162. db_table = 'app_set'
  1163. verbose_name = 'app的各个版本控制表'
  1164. verbose_name_plural = verbose_name
  1165. ordering = ('-id',)
  1166. # 认证客户端类型表
  1167. class ApplicationModel(models.Model):
  1168. CLIENT_TYPES = (
  1169. ('confidential', 'confidential'),
  1170. ('public', 'public'),
  1171. )
  1172. # authorization_code
  1173. # 授权码模式(即先登录获取code, 再获取token)
  1174. # password
  1175. # 密码模式(将用户名, 密码传过去, 直接获取token)
  1176. # client_credentials
  1177. # 客户端模式(无用户, 用户向客户端注册, 然后客户端以自己的名义向’服务端’获取资源)
  1178. # implicit
  1179. # 简化模式(在redirect_uri
  1180. # 的Hash传递token;
  1181. # Auth客户端运行在浏览器中, 如JS, Flash)
  1182. # refresh_token
  1183. # 刷新access_token
  1184. GRANT_TYPES = (
  1185. ('authorization_code', "authorization_code"),
  1186. ('password', "password"),
  1187. ('client_credentials', "client_credentials"),
  1188. ('implicit', "implicit"),
  1189. ('refresh_token', "refresh_token"),
  1190. )
  1191. id = models.BigAutoField(primary_key=True)
  1192. name = models.CharField(max_length=128, blank=True, verbose_name='client名字描述')
  1193. client_id = models.CharField(max_length=50, unique=True, verbose_name='客户端id')
  1194. client_secret = models.CharField(max_length=50, unique=True, verbose_name='客户端secret')
  1195. client_type = models.CharField(max_length=32, choices=CLIENT_TYPES, verbose_name='客户端类型')
  1196. grant_type = models.CharField(max_length=32, choices=GRANT_TYPES, blank=True, null=True)
  1197. redirect_uri = models.TextField(blank=True, null=True, verbose_name='重定向url')
  1198. skip_auth = models.BooleanField(default=False, verbose_name='是否跳过点击授权')
  1199. add_time = models.IntegerField(verbose_name='添加时间', default=0)
  1200. update_time = models.IntegerField(verbose_name='更新时间', default=0)
  1201. class Meta:
  1202. ordering = ('-add_time',)
  1203. verbose_name = u'可授权客户端表'
  1204. db_table = 'oauth_application'
  1205. # 授权码信息表
  1206. class GrantCodeModel(models.Model):
  1207. id = models.BigAutoField(primary_key=True)
  1208. userID = models.ForeignKey(Device_User, verbose_name="用户表userID", to_field='userID', on_delete=models.CASCADE)
  1209. code = models.CharField(max_length=32, unique=True)
  1210. app_id = models.CharField(max_length=100, default='', verbose_name="appBundleId")
  1211. application = models.ForeignKey(ApplicationModel, verbose_name="用户表id", to_field='id', on_delete=models.CASCADE)
  1212. expire_time = models.IntegerField(verbose_name='过期时间', default=0)
  1213. add_time = models.IntegerField(verbose_name='添加时间', default=0)
  1214. update_time = models.IntegerField(verbose_name='更新时间', default=0)
  1215. # 输出的永远是本地时间输出的永远是本地时间
  1216. def is_expired(self):
  1217. return timezone.now() >= self.expire_time
  1218. class Meta:
  1219. ordering = ('-add_time',)
  1220. verbose_name = u'授权码表'
  1221. db_table = 'oauth_grant_code'
  1222. class UserAppFrequencyModel(models.Model):
  1223. id = models.AutoField(primary_key=True)
  1224. user = models.ForeignKey(Device_User, to_field='userID', on_delete=models.CASCADE, verbose_name='关联设备用户表')
  1225. type = models.SmallIntegerField(default=0, verbose_name='使用频率类型') # 1:每天,2:三天,3:一周,4:两周,5:一个月,6:一个月以上
  1226. data_time = models.IntegerField(default=0, verbose_name='数据时间')
  1227. add_time = models.IntegerField(default=0, verbose_name='添加时间')
  1228. update_time = models.IntegerField(default=0, verbose_name='更新时间')
  1229. class Meta:
  1230. verbose_name = '用户使用APP频率表'
  1231. verbose_name_plural = verbose_name
  1232. db_table = 'user_app_frequency'
  1233. ordering = ('-add_time',)
  1234. class AppFrequencyStatisticsModel(models.Model):
  1235. id = models.AutoField(primary_key=True)
  1236. data = models.TextField(default='', verbose_name='统计好的数据')
  1237. month = models.IntegerField(default=0, verbose_name='月份')
  1238. year = models.IntegerField(default=0, verbose_name='年份')
  1239. class Meta:
  1240. verbose_name = 'app月使用频率统计表'
  1241. verbose_name_plural = verbose_name
  1242. db_table = 'app_frequency_statistics'
  1243. class AppFrequencyYearStatisticsModel(models.Model):
  1244. id = models.AutoField(primary_key=True)
  1245. data = models.TextField(default='', verbose_name='统计好的数据')
  1246. year = models.IntegerField(default=0, verbose_name='年份')
  1247. num = models.IntegerField(default=0, verbose_name='总人数')
  1248. class Meta:
  1249. verbose_name = 'app使用频率统计表,年度统计'
  1250. verbose_name_plural = verbose_name
  1251. db_table = 'app_frequency_year_statistics'
  1252. # alexa连接数统计表
  1253. class AlexaConnectStatisticsModel(models.Model):
  1254. id = models.AutoField(primary_key=True)
  1255. num = models.IntegerField(default=0, verbose_name='总人数')
  1256. data_time = models.IntegerField(default=0, verbose_name='数据时间')
  1257. class Meta:
  1258. verbose_name = 'alexa连接数统计表'
  1259. verbose_name_plural = verbose_name
  1260. db_table = 'alexa_statistics'
  1261. class FAQModel(models.Model):
  1262. id = models.AutoField(primary_key=True)
  1263. title = models.CharField(max_length=64, default='', unique=True, verbose_name='标题')
  1264. content = models.TextField(default='', verbose_name='内容')
  1265. add_time = models.IntegerField(default=0, verbose_name='添加时间')
  1266. update_time = models.IntegerField(default=0, verbose_name='更新时间')
  1267. class Meta:
  1268. db_table = 'tb_faq'
  1269. verbose_name = '问题帮助表'
  1270. verbose_name_plural = verbose_name
  1271. class AppLogModel(models.Model):
  1272. id = models.AutoField(primary_key=True)
  1273. user = models.ForeignKey(Device_User, to_field='userID', on_delete=models.CASCADE, verbose_name='关联设备用户表')
  1274. uid = models.CharField(max_length=20, default='', verbose_name='设备uid')
  1275. average_delay = models.CharField(max_length=32, default='', verbose_name='最高平均延时')
  1276. status = models.SmallIntegerField(default=0, verbose_name='失败状态') # 0: 成功,1: 失败
  1277. filename = models.CharField(max_length=120, default='', verbose_name='文件名')
  1278. add_time = models.IntegerField(default=0, verbose_name='日期')
  1279. class Meta:
  1280. db_table = 'app_log'
  1281. verbose_name = 'APP日志表'
  1282. verbose_name_plural = verbose_name
  1283. class DeviceLogModel(models.Model):
  1284. id = models.AutoField(primary_key=True)
  1285. ip = models.CharField(default='', max_length=32, verbose_name='ip')
  1286. uid = models.CharField(max_length=32, default='', verbose_name='设备uid')
  1287. serial_number = models.CharField(max_length=9, default='', verbose_name='序列号')
  1288. status = models.SmallIntegerField(default=0, verbose_name='上传状态') # 0: 成功,1: 失败, 3非文件形式,与error_info相关
  1289. filename = models.CharField(max_length=120, default='', verbose_name='文件名')
  1290. error_info = models.TextField(blank=True, default='', verbose_name='设备异常信息')
  1291. add_time = models.DateTimeField(blank=True, auto_now_add=True, verbose_name=u'添加时间')
  1292. class Meta:
  1293. db_table = 'device_log'
  1294. verbose_name = '设备日志表'
  1295. verbose_name_plural = verbose_name
  1296. class EquipmentInfoExStatisticsModel(models.Model):
  1297. id = models.AutoField(primary_key=True)
  1298. push_type = models.SmallIntegerField(default=0, verbose_name='第三方推送服务器标志。0:APNS推送,1:谷歌推送,2:极光推送')
  1299. number_of_successes = models.IntegerField(default=0, verbose_name='推送成功数量')
  1300. number_of_failures = models.IntegerField(default=0, verbose_name='推送失败数量')
  1301. number_of_arrival = models.IntegerField(default=0, verbose_name='推送到达数量')
  1302. statistics_date = models.IntegerField(default=0, verbose_name='属于哪天、哪月的统计')
  1303. date_type = models.SmallIntegerField(default=0, verbose_name='统计日期的类型。0:天,1:月')
  1304. add_time = models.IntegerField(default=0, verbose_name='添加时间')
  1305. class Meta:
  1306. db_table = 'equipment_info_ex_statistics'
  1307. verbose_name = '推送消息统计表'
  1308. verbose_name_plural = verbose_name
  1309. class CountryIPModel(models.Model):
  1310. id = models.AutoField(primary_key=True)
  1311. ip = models.CharField(default='', max_length=32, verbose_name='ip')
  1312. user_ex = models.ForeignKey(UserExModel, to_field='id', on_delete=models.CASCADE, verbose_name='关联用户扩展信息表id')
  1313. country = models.CharField(default='', max_length=100, verbose_name='国家')
  1314. status = models.SmallIntegerField(default=0, verbose_name='是否已经查找,0:否,1:是')
  1315. add_time = models.IntegerField(default=0, verbose_name='添加时间')
  1316. class Meta:
  1317. db_table = 'country_ip'
  1318. verbose_name = 'ip-国家统计表'
  1319. verbose_name_plural = verbose_name
  1320. class ZositechHelpModel(models.Model):
  1321. id = models.AutoField(primary_key=True)
  1322. locale = models.CharField(default='', db_index=True, max_length=50, verbose_name='语言')
  1323. label_names = models.CharField(default='', db_index=True, max_length=50, verbose_name='标签')
  1324. origin = models.CharField(default='', db_index=True, max_length=50, verbose_name='来源')
  1325. # author_id = models.CharField(default='', max_length=50, verbose_name='管理员id')
  1326. # body = models.TextField(default='', blank=True, verbose_name='内容')
  1327. # comments_disabled = models.CharField(default='', max_length=10, verbose_name='comments')
  1328. # created_at = models.CharField(default='', max_length=50, verbose_name='创建时间')
  1329. # draft = models.CharField(default='', max_length=10, verbose_name='草稿')
  1330. # edited_at = models.CharField(default='',max_length=50, verbose_name='修改时间')
  1331. # html_url = models.CharField(default='', blank=True, verbose_name='跳转路径')
  1332. # body = models.CharField(default='', blank=True, verbose_name='标签')
  1333. # body = models.CharField(default='', blank=True, verbose_name='标签')
  1334. # body = models.TextField(default='', blank=True, verbose_name='标签')
  1335. # body = models.TextField(default='', blank=True, verbose_name='标签')
  1336. # body = models.CharField(default='', blank=True, verbose_name='标签')
  1337. # body = models.CharField(default='', blank=True, verbose_name='标签')
  1338. content = models.TextField(blank=True, default='', verbose_name=u'内容')
  1339. class Meta:
  1340. db_table = 'zositech_help'
  1341. verbose_name = '周视使用帮助表'
  1342. verbose_name_plural = verbose_name
  1343. class EquipmentVersionLimitModel(models.Model):
  1344. id = models.AutoField(primary_key=True)
  1345. type = models.SmallIntegerField(default=0, verbose_name='限制类型')
  1346. content = models.TextField(default='', verbose_name='限制内容')
  1347. equipment_version = models.ForeignKey(Equipment_Version, to_field='eid', on_delete=models.CASCADE,
  1348. verbose_name='关联设备版本信息id')
  1349. status = models.SmallIntegerField(default=0, verbose_name='是否启用。0:不启用,1:启用')
  1350. add_time = models.IntegerField(default=0, verbose_name='添加时间')
  1351. update_time = models.IntegerField(default=0, verbose_name='更新时间')
  1352. class Meta:
  1353. db_table = 'equipment_version_limit'
  1354. verbose_name = '设备版本信息限制表'
  1355. verbose_name_plural = verbose_name
  1356. class ExperienceContextModel(models.Model):
  1357. id = models.AutoField(primary_key=True)
  1358. experience_type = models.SmallIntegerField(default=0, verbose_name='体验类型') # 0: 免费体验套餐, 1: 激活码
  1359. uid = models.CharField(max_length=20, default='', verbose_name='设备uid')
  1360. do_time = models.IntegerField(default=0, verbose_name='激活时间')
  1361. # is_experience = models.SmallIntegerField(default=0, verbose_name=u'是否云存体验用户') # 0:不是体验用户,1:是体验用户
  1362. class Meta:
  1363. db_table = 'experience_context'
  1364. verbose_name = '设备体验表'
  1365. verbose_name_plural = verbose_name
  1366. class ExperienceAiModel(models.Model):
  1367. id = models.AutoField(primary_key=True)
  1368. experience_type = models.SmallIntegerField(default=0, verbose_name='体验类型') # 0: 免费体验, 1: 激活码
  1369. uid = models.CharField(max_length=20, default='', verbose_name='设备uid')
  1370. do_time = models.IntegerField(default=0, verbose_name='激活时间')
  1371. class Meta:
  1372. db_table = 'experience_ai'
  1373. verbose_name = 'ai体验表'
  1374. verbose_name_plural = verbose_name
  1375. class CDKcontextModel(models.Model):
  1376. id = models.AutoField(primary_key=True)
  1377. cdk = models.CharField(max_length=50, unique=True, verbose_name='激活码')
  1378. create_time = models.IntegerField(default=0, verbose_name='创建时间')
  1379. valid_time = models.IntegerField(default=0, verbose_name='有效期间') # 超过有效期激活码不可在激活 ,0:永久
  1380. is_activate = models.SmallIntegerField(default=0, verbose_name='是否已激活') # 0 未激活 1 已激活
  1381. is_down = models.SmallIntegerField(default=0, verbose_name='是否已下载') # 0 未下载 1 已下载
  1382. rank = models.ForeignKey(Store_Meal, to_field='id', default='', on_delete=models.CASCADE, verbose_name='套餐类型')
  1383. # order = models.ForeignKey(Order_Model, blank=True, max_length=20, to_field='orderID', on_delete=models.CASCADE, verbose_name='订单id', unique=True)
  1384. order = models.CharField(max_length=20, blank=True, unique=True, verbose_name='订单id')
  1385. # 备用字段
  1386. spare_1 = models.CharField(default='', blank=True, max_length=64, verbose_name=u'备用字段1')
  1387. spare_2 = models.CharField(default='', blank=True, max_length=64, verbose_name=u'备用字段2')
  1388. spare_3 = models.CharField(default='', blank=True, max_length=64, db_index=True, verbose_name=u'备用字段3')
  1389. spare_4 = models.CharField(default='', blank=True, max_length=64, db_index=True, verbose_name=u'备用字段4')
  1390. class Meta:
  1391. db_table = 'cdk_context'
  1392. verbose_name = '激活码表'
  1393. verbose_name_plural = verbose_name
  1394. class VoicePromptModel(models.Model):
  1395. id = models.AutoField(primary_key=True)
  1396. title = models.CharField(max_length=128, default='', verbose_name='语音标题')
  1397. type = models.SmallIntegerField(default=0, verbose_name='语音类型。0:进入语音,1:离开语音')
  1398. filename = models.CharField(max_length=120, default='', verbose_name='文件名')
  1399. language = models.CharField(max_length=16, default='', verbose_name='语言类型')
  1400. classification = models.SmallIntegerField(default=1, verbose_name='语音分类。0:系统,1:自定义')
  1401. add_time = models.IntegerField(default=0, verbose_name='添加时间')
  1402. uid = models.CharField(max_length=20, default='0', verbose_name='关联设备UID')
  1403. channel = models.IntegerField(default=0, verbose_name='通道号')
  1404. status = models.SmallIntegerField(default=1, verbose_name='是否启用。0:不启用,1:启用')
  1405. class Meta:
  1406. db_table = 'voice_prompt'
  1407. verbose_name = '语音提示表'
  1408. verbose_name_plural = verbose_name
  1409. class DeviceTypeModel(models.Model):
  1410. id = models.AutoField(primary_key=True)
  1411. name = models.CharField(max_length=64, default='', verbose_name='设备名称')
  1412. model = models.SmallIntegerField(default=0, verbose_name='设备大类。1:dvr,2:ipc')
  1413. type = models.IntegerField(default=0, verbose_name='设备类型')
  1414. ptz_type = models.IntegerField(default=0, verbose_name='ptz类型。1:dvr球机,2:IPCPTZ,3:同轴菜单')
  1415. icon = models.CharField(max_length=120, default='', verbose_name='文件名')
  1416. add_time = models.IntegerField(default=0, verbose_name='添加时间')
  1417. update_time = models.IntegerField(default=0, verbose_name='更新时间')
  1418. class Meta:
  1419. db_table = 'device_type'
  1420. verbose_name = '设备类型表'
  1421. verbose_name_plural = verbose_name
  1422. class AppBundle(models.Model):
  1423. id = models.AutoField(primary_key=True)
  1424. app_bundle_id = models.CharField(default='', max_length=32, verbose_name='app版本id')
  1425. app_device_type = models.ManyToManyField(to='AppDeviceType', db_table='app_bundle_device_type',
  1426. verbose_name='APP版本-设备类型')
  1427. class Meta:
  1428. db_table = 'app_bundle'
  1429. verbose_name = 'APP版本表'
  1430. verbose_name_plural = verbose_name
  1431. class AppDeviceType(models.Model):
  1432. id = models.AutoField(primary_key=True)
  1433. model = models.SmallIntegerField(default=0, verbose_name='设备类型') # 1:DVR, 2:IPC
  1434. type = models.IntegerField(default=0, verbose_name='设备型号')
  1435. icon = models.CharField(default='', max_length=200, verbose_name='图标文件路径')
  1436. class Meta:
  1437. db_table = 'app_device_type'
  1438. verbose_name = 'APP设备类型表'
  1439. verbose_name_plural = verbose_name
  1440. class DeviceNameLanguage(models.Model):
  1441. id = models.AutoField(primary_key=True)
  1442. app_device_type = models.ForeignKey(AppDeviceType, to_field='id', default='', on_delete=models.CASCADE,
  1443. verbose_name='关联APP设备类型表id')
  1444. lang = models.CharField(default='', max_length=10, verbose_name='语言')
  1445. name = models.CharField(default='', max_length=32, verbose_name='设备名称')
  1446. sort = models.SmallIntegerField(default=0, verbose_name=u'升序排序')
  1447. class Meta:
  1448. ordering = ('sort',)
  1449. db_table = 'device_name_language'
  1450. verbose_name = '设备名称语言表'
  1451. verbose_name_plural = verbose_name
  1452. class OperatingLogsModel(models.Model):
  1453. id = models.AutoField(primary_key=True)
  1454. userId = models.CharField(blank=False, max_length=32, db_index=True, verbose_name=u'操作人')
  1455. operatingtime = models.DateTimeField(blank=True, verbose_name=u'操作时间', auto_now=True)
  1456. operatingcontent = models.TextField(blank=True, default='', verbose_name=u'操作内容')
  1457. operatingtype = models.CharField(blank=True, verbose_name=u'操作类型', max_length=32)
  1458. is_saveprocessinfo = models.SmallIntegerField(default=1, verbose_name=u'是否保存过程信息。1:保存,2:不保存')
  1459. devUid = models.CharField(default='', blank=True, max_length=32, verbose_name=u'设备ID')
  1460. userIp = models.CharField(blank=True, max_length=20, default='', verbose_name=u'用户ip')
  1461. class Meta:
  1462. db_table = 'operating_logs'
  1463. verbose_name = '操作数据表'
  1464. verbose_name_plural = verbose_name
  1465. class ProcessInfoLogsModel(models.Model):
  1466. id = models.AutoField(primary_key=True)
  1467. userId = models.CharField(blank=False, max_length=32, db_index=True, verbose_name=u'操作人')
  1468. devUid = models.CharField(default='', blank=True, max_length=32, verbose_name=u'设备ID')
  1469. operatingcontent = models.TextField(blank=True, default='', verbose_name=u'操作内容')
  1470. operatingtime = models.DateTimeField(blank=True, verbose_name=u'操作时间', auto_now=True)
  1471. class Meta:
  1472. db_table = 'processinfo_logs'
  1473. verbose_name = '过程信息表'
  1474. verbose_name_plural = verbose_name
  1475. class EquipmentLogModel(models.Model):
  1476. id = models.AutoField(primary_key=True)
  1477. user = models.CharField(blank=False, max_length=32, db_index=True, verbose_name=u'操作用户')
  1478. uid = models.CharField(default='', blank=True, max_length=32, verbose_name=u'设备uid')
  1479. equipmentid = models.CharField(blank=False, max_length=100, db_index=True, verbose_name=u'设备主键id')
  1480. NickName = models.CharField(blank=True, max_length=32, verbose_name=u'设备名称')
  1481. ip = models.CharField(max_length=100, default='', db_index=True, blank=True, verbose_name=u'访问ip地址')
  1482. time = models.DateTimeField(null=True, blank=True, db_index=True, verbose_name=u'访问时间')
  1483. operatingcontent = models.TextField(blank=True, default='', verbose_name=u'操作内容')
  1484. url = models.CharField(max_length=150, default='', blank=True, verbose_name=u'访问路径')
  1485. class Meta:
  1486. db_table = 'equipment_log'
  1487. verbose_name = '设备日志表'
  1488. verbose_name_plural = verbose_name
  1489. class UserModel(models.Model):
  1490. id = models.AutoField(primary_key=True)
  1491. username = models.CharField(unique=True, max_length=128, null=False, verbose_name='用户名')
  1492. password = models.CharField(max_length=128, null=False, verbose_name='密码')
  1493. permission = models.CharField(max_length=24, null=False, verbose_name='权限')
  1494. login_time = models.IntegerField(blank=True, default=0, verbose_name='登录时间')
  1495. online = models.SmallIntegerField(default=0, verbose_name='是否在线')
  1496. phone = models.CharField(max_length=11, default='', verbose_name='手机号')
  1497. add_time = models.IntegerField(default=0, verbose_name='添加时间')
  1498. class Meta:
  1499. verbose_name = '用户表'
  1500. verbose_name_plural = verbose_name
  1501. db_table = 'user'
  1502. class CompanyModel(models.Model):
  1503. id = models.AutoField(primary_key=True)
  1504. name = models.CharField(max_length=64, unique=True, default='', verbose_name='企业名称')
  1505. mark = models.CharField(max_length=3, unique=True, default='', verbose_name='企业标志,用于序列号的后三位')
  1506. secret = models.CharField(max_length=10, db_index=True, default='', verbose_name='企业秘钥')
  1507. quantity = models.IntegerField(default=0, verbose_name='已购买的序列号的数量')
  1508. add_time = models.IntegerField(default=0, verbose_name='添加时间')
  1509. update_time = models.IntegerField(default=0, verbose_name='更新时间')
  1510. class Meta:
  1511. db_table = 'tb_company'
  1512. verbose_name = '企业表'
  1513. verbose_name_plural = verbose_name
  1514. class RegionModel(models.Model):
  1515. id = models.AutoField(primary_key=True)
  1516. name = models.CharField(max_length=32, default='', verbose_name='区域名称')
  1517. continent_code = models.CharField(max_length=3, default='', verbose_name='洲代码')
  1518. api = models.CharField(max_length=50, default='', verbose_name='请求地址')
  1519. class Meta:
  1520. db_table = 'tb_region'
  1521. verbose_name = '区域表'
  1522. verbose_name_plural = verbose_name
  1523. class VPGModel(models.Model):
  1524. id = models.AutoField(primary_key=True)
  1525. name = models.CharField(max_length=32, default='', verbose_name='群组名称')
  1526. uid_count = models.IntegerField(default=0, verbose_name='uid数量')
  1527. region = models.ForeignKey(RegionModel, to_field='id', on_delete=models.DO_NOTHING, verbose_name='群组用于的地区')
  1528. company = models.ForeignKey(CompanyModel, to_field='id', on_delete=models.DO_NOTHING, verbose_name='关联企业表')
  1529. add_time = models.IntegerField(default=0, verbose_name='添加时间')
  1530. update_time = models.IntegerField(default=0, verbose_name='更新时间')
  1531. class Meta:
  1532. db_table = 'tb_vpg'
  1533. verbose_name = 'vpg表'
  1534. verbose_name_plural = verbose_name
  1535. class UIDModel(models.Model):
  1536. id = models.AutoField(primary_key=True)
  1537. uid = models.CharField(max_length=20, null=False, db_index=True, unique=True, verbose_name='设备id')
  1538. mac = models.CharField(max_length=17, null=True, default='', verbose_name='设备id对应的mac地址')
  1539. uid_extra = models.TextField(default='', verbose_name='uid的额外描述')
  1540. status = models.SmallIntegerField(default=0, verbose_name='使用状态') # 0:未使用, 2:已使用
  1541. add_time = models.IntegerField(default=0, verbose_name='添加时间')
  1542. update_time = models.IntegerField(default=0, verbose_name='更新时间')
  1543. area = models.SmallIntegerField(default=0, verbose_name='区域') # 0:国内, 1:国外
  1544. vpg = models.ForeignKey(VPGModel, to_field='id', default=1, on_delete=models.DO_NOTHING, verbose_name='关联VPG表的id')
  1545. p2p_type = models.IntegerField(default=1, verbose_name='p2p类型。1:宸云,2:tutk')
  1546. full_uid_code = models.CharField(max_length=256, default='', verbose_name='宸云完整uid')
  1547. platform = models.CharField(max_length=10, default='', verbose_name='平台')
  1548. init_string = models.CharField(max_length=256, default='', verbose_name='尚云设备初始化字符')
  1549. init_string_app = models.CharField(max_length=256, default='', verbose_name='尚云设备app初始化字符')
  1550. class Meta:
  1551. ordering = ('-add_time',)
  1552. verbose_name = 'uid表'
  1553. verbose_name_plural = verbose_name
  1554. db_table = 'uid'
  1555. class UserUIDModel(models.Model):
  1556. id = models.AutoField(primary_key=True)
  1557. user = models.ForeignKey(UserModel, to_field='id', on_delete=models.CASCADE, verbose_name='关联用户表id')
  1558. uid = models.ForeignKey(UIDModel, to_field='id', on_delete=models.CASCADE, verbose_name='关联uid表id')
  1559. add_time = models.IntegerField(default=0, verbose_name='添加时间')
  1560. update_time = models.IntegerField(default=0, verbose_name='更新时间')
  1561. class Meta:
  1562. verbose_name = '用户与UID的关联表'
  1563. verbose_name_plural = verbose_name
  1564. db_table = 'user_uid'
  1565. class PermissionModel(models.Model):
  1566. id = models.AutoField(primary_key=True)
  1567. type = models.SmallIntegerField(null=False, verbose_name='权限枚举')
  1568. description = models.TextField(default='', verbose_name='权限描述')
  1569. class Meta:
  1570. verbose_name = '权限表'
  1571. verbose_name_plural = verbose_name
  1572. db_table = 'permission'
  1573. class LogModel(models.Model):
  1574. id = models.AutoField(primary_key=True)
  1575. operation = models.CharField(max_length=100, default='', verbose_name='操作描述')
  1576. time = models.IntegerField(default=0, verbose_name='操作时间')
  1577. ip = models.CharField(default='', max_length=24, verbose_name='用户ip')
  1578. user = models.ForeignKey(UserModel, to_field='id', on_delete=models.CASCADE, verbose_name='关联用户id')
  1579. content = models.TextField(default='', verbose_name='请求参数')
  1580. status = models.IntegerField(default=0, verbose_name='请求状态')
  1581. url = models.CharField(max_length=150, default='', verbose_name='请求路径')
  1582. class Meta:
  1583. ordering = ('-time',)
  1584. verbose_name = '日志表'
  1585. verbose_name_plural = verbose_name
  1586. db_table = 'log'
  1587. class HistoryUIDModel(models.Model):
  1588. id = models.AutoField(primary_key=True)
  1589. uid = models.CharField(max_length=20, null=False, db_index=True, verbose_name='设备id')
  1590. uid_extra = models.TextField(default='', verbose_name='uid的额外描述')
  1591. status = models.SmallIntegerField(default=0, verbose_name='使用状态')
  1592. add_time = models.IntegerField(default=0, verbose_name='添加时间')
  1593. update_time = models.IntegerField(default=0, verbose_name='更新时间')
  1594. area = models.SmallIntegerField(default=0, verbose_name='区域') # 0:国内;1:国外
  1595. class Meta:
  1596. verbose_name = '历史UID表'
  1597. verbose_name_plural = verbose_name
  1598. db_table = 'history_uid'
  1599. class MacModel(models.Model):
  1600. id = models.AutoField(primary_key=True)
  1601. value = models.CharField(max_length=17, null=False, verbose_name='最新的mac地址')
  1602. is_active = models.BooleanField(default=True, verbose_name='当前mac地址是否可用')
  1603. add_time = models.IntegerField(default=0, verbose_name='添加时间')
  1604. update_time = models.IntegerField(default=0, verbose_name='更新时间')
  1605. class Meta:
  1606. verbose_name = '最新的mac地址表'
  1607. verbose_name_plural = verbose_name
  1608. db_table = 'tb_mac'
  1609. class OrderTaskModel(models.Model):
  1610. id = models.AutoField(primary_key=True)
  1611. order_number = models.CharField(max_length=32, verbose_name='订单号')
  1612. board = models.CharField(max_length=32, verbose_name='主板')
  1613. plan = models.CharField(max_length=32, verbose_name='配置方案')
  1614. checksum = models.CharField(max_length=32, verbose_name='校验和')
  1615. ic_model = models.CharField(max_length=32, verbose_name='ic型号')
  1616. quantity = models.IntegerField(default=0, verbose_name='通知单上的生成数量')
  1617. add_time = models.IntegerField(default=0, verbose_name='添加时间')
  1618. class Meta:
  1619. db_table = 'order_task'
  1620. verbose_name = '订单任务表'
  1621. verbose_name_plural = verbose_name
  1622. class CountryModel(models.Model):
  1623. id = models.AutoField(primary_key=True)
  1624. number = models.IntegerField(unique=True, verbose_name='区号')
  1625. add_time = models.IntegerField(default=0, verbose_name='添加时间')
  1626. update_time = models.IntegerField(default=0, verbose_name='更新时间')
  1627. region = models.ForeignKey(RegionModel, to_field='id', on_delete=models.DO_NOTHING, verbose_name='关联区域表')
  1628. country_code = models.CharField(max_length=2, default='', verbose_name='国家iso2代码')
  1629. country_name = models.CharField(max_length=20, default='', verbose_name='国家名')
  1630. class Meta:
  1631. db_table = 'tb_country'
  1632. verbose_name = '地区表'
  1633. verbose_name_plural = verbose_name
  1634. class LanguageModel(models.Model):
  1635. id = models.AutoField(primary_key=True)
  1636. lang = models.CharField(max_length=16, default='', verbose_name='语种')
  1637. lang_youdao = models.CharField(max_length=16, default='', verbose_name='有道的语种')
  1638. add_time = models.IntegerField(default=0, verbose_name='添加时间')
  1639. update_time = models.IntegerField(default=0, verbose_name='更新时间')
  1640. class Meta:
  1641. db_table = 'tb_language'
  1642. verbose_name = '语言表'
  1643. verbose_name_plural = verbose_name
  1644. class CountryLanguageModel(models.Model):
  1645. id = models.AutoField(primary_key=True)
  1646. country_name = models.CharField(max_length=64, default='', verbose_name='国家名称')
  1647. language = models.ForeignKey(LanguageModel, to_field='id', on_delete=models.CASCADE, verbose_name='关联语言表的id')
  1648. country = models.ForeignKey(CountryModel, to_field='id', on_delete=models.CASCADE, verbose_name='关联地区表的id')
  1649. add_time = models.IntegerField(default=0, verbose_name='添加时间')
  1650. update_time = models.IntegerField(default=0, verbose_name='更新时间')
  1651. class Meta:
  1652. db_table = 'tb_country_language'
  1653. verbose_name = '不同语言的地区名称表'
  1654. verbose_name_plural = verbose_name
  1655. class SerialNumberModel(models.Model):
  1656. id = models.AutoField(primary_key=True)
  1657. serial_number = models.CharField(max_length=9, db_index=True, unique=True, verbose_name='序列号')
  1658. status = models.SmallIntegerField(default=1, verbose_name='可用状态。0:不可用,1:可用')
  1659. use_status = models.SmallIntegerField(default=0, db_index=True, verbose_name='使用状态, 0: 未使用, 1: 已分配')
  1660. add_time = models.IntegerField(default=0, verbose_name='添加时间')
  1661. class Meta:
  1662. db_table = 'tb_serial_number'
  1663. verbose_name = '序列号表'
  1664. verbose_name_plural = verbose_name
  1665. class CompanySerialModel(models.Model):
  1666. id = models.AutoField(primary_key=True)
  1667. company = models.ForeignKey(CompanyModel, to_field='id', on_delete=models.CASCADE, verbose_name='关联企业表的id')
  1668. serial_number = models.CharField(max_length=11, db_index=True, blank=True, default='', verbose_name=u'6位数序列号')
  1669. status = models.SmallIntegerField(default=0, verbose_name='使用状态, 0:未使用,1:已分配,2:绑定uid,3:已占用')
  1670. add_time = models.IntegerField(default=0, verbose_name='添加时间')
  1671. update_time = models.IntegerField(default=0, verbose_name='更新时间')
  1672. class Meta:
  1673. db_table = 'tb_company_serial'
  1674. verbose_name = '企业关联序列号表'
  1675. verbose_name_plural = verbose_name
  1676. class UIDCompanySerialModel(models.Model):
  1677. id = models.AutoField(primary_key=True)
  1678. uid = models.ForeignKey(UIDModel, to_field='id', on_delete=models.CASCADE, verbose_name='关联UID表')
  1679. company_serial = models.ForeignKey(CompanySerialModel, to_field='id', on_delete=models.CASCADE,
  1680. verbose_name='6位数序列号')
  1681. add_time = models.IntegerField(default=0, verbose_name='添加时间')
  1682. update_time = models.IntegerField(default=0, verbose_name='更新时间')
  1683. class Meta:
  1684. db_table = 'tb_uid_company_serial'
  1685. verbose_name = 'UID关联【企业关联序列号】表'
  1686. verbose_name_plural = verbose_name
  1687. class iotdeviceInfoModel(models.Model):
  1688. id = models.AutoField(primary_key=True)
  1689. serial_number = models.CharField(max_length=11, blank=True, default='', db_index=True,
  1690. verbose_name=u'关联Device_Info表的序列号')
  1691. uid = models.CharField(blank=True, max_length=32, default='', db_index=True, verbose_name=u'设备UID')
  1692. certificate_id = models.CharField(blank=True, max_length=256, default='', verbose_name=u'证书id')
  1693. certificate_pem = models.TextField(blank=True, default='', verbose_name=u'证书项目')
  1694. public_key = models.TextField(blank=True, default='', verbose_name=u'公有密钥')
  1695. private_key = models.TextField(blank=True, default='', verbose_name=u'私有密钥')
  1696. thing_name = models.CharField(blank=True, max_length=256, default='', verbose_name=u'IoT Thing Name')
  1697. thing_groups = models.CharField(blank=True, max_length=256, default='', verbose_name=u'IoT Thing Groups')
  1698. endpoint = models.CharField(blank=True, max_length=256, db_index=True, default='', verbose_name=u'iot端点')
  1699. token_iot_number = models.CharField(blank=True, db_index=True, default='', max_length=50, verbose_name='连接iot令牌')
  1700. add_time = models.DateTimeField(blank=True, auto_now_add=True, verbose_name=u'添加时间')
  1701. update_time = models.DateTimeField(blank=True, auto_now=True, verbose_name=u'更新时间')
  1702. class Meta:
  1703. db_table = 'iot_deviceInfo'
  1704. verbose_name = 'iot设备信息表'
  1705. verbose_name_plural = verbose_name
  1706. ordering = ('-add_time',)
  1707. class UIDMainUser(models.Model):
  1708. id = models.AutoField(primary_key=True)
  1709. UID = models.CharField(blank=True, max_length=32, verbose_name=u'设备UID', default='')
  1710. user_id = models.CharField(blank=True, max_length=32, verbose_name=u'用户ID', default='')
  1711. class Meta:
  1712. db_table = 'uid_mainuser'
  1713. verbose_name = '设备主用户表'
  1714. verbose_name_plural = verbose_name
  1715. class Pc_Info(models.Model):
  1716. id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
  1717. pc_name = models.CharField(blank=True, max_length=32, verbose_name=u'软件名称')
  1718. bundle_version = models.IntegerField(default=0, verbose_name=u'项目类型。0:Zosi;149:COCOON HD; 150:Loocam; 151:中性')
  1719. pc_version = models.CharField(blank=True, max_length=12, verbose_name=u'版本号')
  1720. pc_test = models.SmallIntegerField(default=0, verbose_name='测试版。0:否,1:是')
  1721. lang = models.CharField(blank=True, max_length=32, verbose_name=u'语言类型')
  1722. download_link = models.CharField(max_length=300, blank=True, default='', verbose_name='下载链接')
  1723. add_time = models.IntegerField(verbose_name='添加时间', default=0)
  1724. update_time = models.IntegerField(verbose_name='更新时间', default=0)
  1725. file_type = models.CharField(blank=True, max_length=32, verbose_name=u'文件类型')
  1726. package = models.CharField(blank=True, max_length=32, verbose_name=u'整合包id')
  1727. explain = models.TextField(blank=True, default='', verbose_name=u'更新内容')
  1728. is_update = models.SmallIntegerField(blank=True, default=0, verbose_name='强制更新。0:否,1:是')
  1729. is_open = models.SmallIntegerField(blank=True, default=0, verbose_name='是否开启版本。0:否,1:是')
  1730. content = models.TextField(blank=True, default='', verbose_name=u'内容信息')
  1731. authority = models.SmallIntegerField(blank=True, default=0, verbose_name='权限')
  1732. class Meta:
  1733. db_table = 'pc_info'
  1734. verbose_name = u'pc信息表'
  1735. verbose_name_plural = verbose_name
  1736. ordering = ('id',)
  1737. class CloudLogModel(models.Model):
  1738. id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
  1739. user = models.CharField(max_length=100, default='', db_index=True, blank=True, verbose_name=u'用户')
  1740. uid = models.CharField(blank=True, max_length=32, db_index=True, verbose_name=u'uid', default='')
  1741. operation = models.CharField(max_length=100, db_index=True, default='', blank=True, verbose_name=u'操作')
  1742. ip = models.CharField(max_length=100, default='', db_index=True, blank=True, verbose_name=u'访问ip地址')
  1743. url = models.CharField(max_length=150, default='', blank=True, verbose_name=u'访问路径')
  1744. time = models.IntegerField(null=True, blank=True, db_index=True, verbose_name=u'访问时间')
  1745. content = models.TextField(blank=True, default='', verbose_name=u'参数内容')
  1746. class Meta:
  1747. db_table = 'cloud_log'
  1748. verbose_name = '云存api记录表'
  1749. verbose_name_plural = verbose_name
  1750. class VideoPlaybackTimeModel(models.Model):
  1751. id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
  1752. userID = models.CharField(max_length=100, default='', db_index=True, blank=True, verbose_name=u'用户ID')
  1753. uid = models.CharField(max_length=32, default='', db_index=True, verbose_name=u'uid')
  1754. playMode = models.CharField(max_length=10, default='', verbose_name=u'播放模式')
  1755. startTime = models.IntegerField(default=0, verbose_name=u'开始播放时间')
  1756. duration = models.SmallIntegerField(default=0, verbose_name='播放时长')
  1757. class Meta:
  1758. db_table = 'video_playback_time'
  1759. verbose_name = '视频播放时长表'
  1760. verbose_name_plural = verbose_name
  1761. class PctestjobModel(models.Model):
  1762. id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
  1763. jobname = models.CharField(blank=True, max_length=32, verbose_name=u'岗位名字')
  1764. jobcode = models.SmallIntegerField(default=3, verbose_name='岗位code 。1:管理员,3:普通人员')
  1765. class Meta:
  1766. db_table = 'pctest_job'
  1767. verbose_name = u'pc岗位表'
  1768. verbose_name_plural = verbose_name
  1769. ordering = ('id',)
  1770. class PctestdeviceModel(models.Model):
  1771. id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
  1772. devicename = models.CharField(blank=True, max_length=32, verbose_name=u'设备名字')
  1773. class Meta:
  1774. db_table = 'pctest_device'
  1775. verbose_name = u'pc测试设备表'
  1776. verbose_name_plural = verbose_name
  1777. ordering = ('id',)
  1778. class OrderUIDModel(models.Model):
  1779. id = models.AutoField(primary_key=True)
  1780. uid = models.ForeignKey(UIDModel, to_field='id', on_delete=models.CASCADE, verbose_name='关联uid表')
  1781. order = models.ForeignKey(OrderTaskModel, to_field='id', on_delete=models.CASCADE, verbose_name='关联订单任务表')
  1782. add_time = models.IntegerField(default=0, verbose_name='添加时间')
  1783. update_time = models.IntegerField(default=0, verbose_name='更新时间')
  1784. class Meta:
  1785. db_table = 'order_uid'
  1786. verbose_name = '订单与uid关联表'
  1787. verbose_name_plural = verbose_name
  1788. class PctestfunctionModel(models.Model):
  1789. id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
  1790. functionname = models.CharField(blank=True, max_length=32, verbose_name=u'职能名字')
  1791. functioncode = models.SmallIntegerField(default=1, verbose_name='职能code 。PC端自己逻辑判断')
  1792. class Meta:
  1793. db_table = 'pctest_function'
  1794. verbose_name = u'pc设备职能表'
  1795. verbose_name_plural = verbose_name
  1796. ordering = ('id',)
  1797. class PctestuserModel(models.Model):
  1798. id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
  1799. username = models.CharField(blank=True, max_length=32, verbose_name=u'用户名字')
  1800. password = models.CharField(blank=True, max_length=32, verbose_name=u'用户名字')
  1801. job = models.ForeignKey(PctestjobModel, to_field='id', on_delete=models.DO_NOTHING, verbose_name='关联pc岗位表')
  1802. class Meta:
  1803. db_table = 'pctest_user'
  1804. verbose_name = u'pc角色岗位表'
  1805. verbose_name_plural = verbose_name
  1806. ordering = ('id',)
  1807. class PctestlogModel(models.Model):
  1808. id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
  1809. user = models.ForeignKey(PctestuserModel, to_field='id', on_delete=models.DO_NOTHING, verbose_name='关联pc岗位表')
  1810. content = models.TextField(blank=True, default='', verbose_name=u'测试日志')
  1811. addtime = models.IntegerField(verbose_name='添加时间', default=0)
  1812. class Meta:
  1813. db_table = 'pctest_log'
  1814. verbose_name = u'pc测试日志表'
  1815. verbose_name_plural = verbose_name
  1816. ordering = ('id',)
  1817. class PctestjobdeviceModel(models.Model):
  1818. id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
  1819. job = models.ForeignKey(PctestjobModel, to_field='id', on_delete=models.DO_NOTHING, verbose_name='关联pc岗位表')
  1820. device = models.ForeignKey(PctestdeviceModel, to_field='id', on_delete=models.DO_NOTHING, verbose_name='关联pc测试设备表')
  1821. class Meta:
  1822. db_table = 'pctest_job_device'
  1823. verbose_name = u'pc岗位设备关联表'
  1824. verbose_name_plural = verbose_name
  1825. ordering = ('id',)
  1826. class PctestModel(models.Model):
  1827. id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
  1828. device = models.ForeignKey(PctestdeviceModel, to_field='id', on_delete=models.DO_NOTHING, verbose_name='关联pc测试设备表')
  1829. function = models.ForeignKey(PctestfunctionModel, to_field='id', on_delete=models.DO_NOTHING,
  1830. verbose_name='关联pc设备职能表')
  1831. class Meta:
  1832. db_table = 'pctest_device_function'
  1833. verbose_name = u'pc岗位设备关联表'
  1834. verbose_name_plural = verbose_name
  1835. ordering = ('id',)
  1836. class P2PIpModel(models.Model):
  1837. id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
  1838. uid = models.CharField(max_length=20, default='', unique=True, db_index=True, verbose_name='设备uid')
  1839. ip = models.CharField(default='', max_length=32, verbose_name='ip')
  1840. p2p_request_times = models.IntegerField(default=0, verbose_name='p2p请求次数')
  1841. relay_request_times = models.IntegerField(default=0, verbose_name='relay请求次数')
  1842. continent_name = models.CharField(default='', max_length=10, verbose_name='大洲')
  1843. country_name = models.CharField(default='', max_length=100, verbose_name='国家')
  1844. region_name = models.CharField(default='', max_length=100, verbose_name='地区')
  1845. city_name = models.CharField(default='', max_length=100, verbose_name='城市')
  1846. add_time = models.IntegerField(default=0, verbose_name='添加时间')
  1847. update_time = models.IntegerField(default=0, verbose_name='更新时间')
  1848. class Meta:
  1849. db_table = 'p2p_ip'
  1850. verbose_name = u'设备p2p_ip地区表'
  1851. verbose_name_plural = verbose_name
  1852. class DeviceDomainModel(models.Model):
  1853. id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
  1854. ip = models.CharField(default='', max_length=32, verbose_name='ip')
  1855. country_name = models.CharField(max_length=20, default='', verbose_name='国家名')
  1856. api = models.CharField(max_length=50, default='', verbose_name='使用的域名')
  1857. add_time = models.DateTimeField(blank=True, auto_now_add=True, verbose_name=u'添加时间')
  1858. update_time = models.DateTimeField(blank=True, auto_now=True, verbose_name=u'更新时间')
  1859. class Meta:
  1860. db_table = 'device_domain'
  1861. verbose_name = u'设备域名表'
  1862. verbose_name_plural = verbose_name
  1863. class DeviceDomainRegionModel(models.Model):
  1864. id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
  1865. serial_number = models.CharField(max_length=9, default='', verbose_name='序列号')
  1866. ip = models.CharField(default='', max_length=32, verbose_name='ip')
  1867. country_name = models.CharField(max_length=20, default='', verbose_name='国家名')
  1868. api = models.CharField(max_length=50, default='', verbose_name='使用的域名')
  1869. region_id = models.SmallIntegerField(default=0, verbose_name='地区id')
  1870. add_time = models.DateTimeField(blank=True, auto_now_add=True, verbose_name=u'添加时间')
  1871. update_time = models.DateTimeField(blank=True, auto_now=True, verbose_name=u'更新时间')
  1872. class Meta:
  1873. db_table = 'device_domain_region'
  1874. verbose_name = u'设备域名地区表'
  1875. verbose_name_plural = verbose_name
  1876. class RequestRecordModel(models.Model):
  1877. id = models.AutoField(primary_key=True, verbose_name=u'自增ID')
  1878. method = models.CharField(max_length=10, default='', verbose_name='请求类型')
  1879. url = models.CharField(max_length=200, default='', verbose_name='请求路径')
  1880. parameter = models.CharField(max_length=200, default='', verbose_name='请求参数')
  1881. execute_time = models.FloatField(default=0, verbose_name='执行时间')
  1882. status_code = models.CharField(max_length=10, default='', verbose_name='响应状态码')
  1883. reason_phrase = models.CharField(max_length=200, default='', verbose_name='错误信息')
  1884. add_time = models.DateTimeField(blank=True, auto_now_add=True, verbose_name=u'添加时间')
  1885. class Meta:
  1886. db_table = 'request_record'
  1887. verbose_name = u'请求记录表'
  1888. verbose_name_plural = verbose_name
  1889. ordering = ('-add_time',)
  1890. class AiService(models.Model):
  1891. id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
  1892. uid = models.CharField(max_length=20, verbose_name='设备UID', db_index=True)
  1893. channel = models.SmallIntegerField(default=0, verbose_name='通道')
  1894. orders = models.ForeignKey(Order_Model, to_field='orderID', default='', on_delete=models.CASCADE,
  1895. verbose_name='关联订单表')
  1896. detect_status = models.SmallIntegerField(default=0, verbose_name='状态') # 0:关闭, 1:开启
  1897. endTime = models.BigIntegerField(verbose_name='套餐结束时间', db_index=True, default=0)
  1898. addTime = models.IntegerField(verbose_name='添加时间', default=0)
  1899. updTime = models.BigIntegerField(verbose_name='更新时间', default=0)
  1900. use_status = models.IntegerField(verbose_name='使用状态', default=0) # 0:未使用, 1:使用中, 2:已过期
  1901. # 1:人, 2:动物, 3:车, 4:包裹
  1902. detect_group = models.CharField(blank=True, default='1', max_length=100, verbose_name='侦测类型')
  1903. detect_interval = models.IntegerField(verbose_name='推送间隔', default=60) # 秒
  1904. class Meta:
  1905. db_table = 'ai_service'
  1906. verbose_name = 'ai设备服务表'
  1907. verbose_name_plural = verbose_name
  1908. ordering = ('id',)
  1909. class AiProcessTime(models.Model):
  1910. id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
  1911. msg_id = models.CharField(max_length=50, verbose_name='消息id', default=0)
  1912. detectTime = models.BigIntegerField(verbose_name='设备侦测时间', default=0)
  1913. receiveTime = models.BigIntegerField(verbose_name='接口调用时间', default=0)
  1914. aiTime = models.BigIntegerField(verbose_name='ai识别上传开始时间', default=0)
  1915. aiEndTime = models.BigIntegerField(verbose_name='ai识别结束时间', default=0)
  1916. pushTime = models.BigIntegerField(verbose_name='推送开始时间', default=0)
  1917. pushEndTime = models.BigIntegerField(verbose_name='推送结束时间', default=0)
  1918. picUploadTime = models.BigIntegerField(verbose_name='图片上传开始时间', default=0)
  1919. picUploadEndTime = models.BigIntegerField(verbose_name='图片上传结束结束时间', default=0)
  1920. serverCountTime = models.BigIntegerField(verbose_name='服务器总花时间', default=0)
  1921. appPushTime = models.IntegerField(verbose_name='添加时间', default=0)
  1922. endTime = models.IntegerField(verbose_name='接口结束时间', default=0)
  1923. class Meta:
  1924. db_table = 'ai_process_time'
  1925. verbose_name = 'ai设备服务表'
  1926. verbose_name_plural = verbose_name
  1927. ordering = ('id',)
  1928. class Surveys(models.Model):
  1929. id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
  1930. no = models.CharField(max_length=10, unique=True, verbose_name='编号', default=0)
  1931. user_type = models.SmallIntegerField(default=0, verbose_name='调查用户对象[1:云存储用户,2:AI用户,3:所有APP用户]')
  1932. start_time = models.IntegerField(default=0, verbose_name='开始显示时间')
  1933. end_time = models.IntegerField(default=0, verbose_name='显示结束时间')
  1934. is_show = models.SmallIntegerField(default=0, verbose_name='是否显示[0:隐藏,1:显示]')
  1935. created_time = models.IntegerField(default=0, verbose_name='创建时间')
  1936. class Meta:
  1937. db_table = 'surveys'
  1938. verbose_name = '问卷调查—问卷调查表'
  1939. verbose_name_plural = verbose_name
  1940. ordering = ('id',)
  1941. class SurveysUserLog(models.Model):
  1942. id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
  1943. user = models.ForeignKey(Device_User, to_field='userID', default='', on_delete=models.CASCADE,
  1944. verbose_name='关联用户表ID')
  1945. type = models.SmallIntegerField(default=0, verbose_name='调查用户对象[1:云存储用户,2:AI用户,3:所有APP用户]')
  1946. is_filled = models.SmallIntegerField(default=0, verbose_name='是否填写[0:未填,1:已填]')
  1947. created_time = models.IntegerField(default=0, verbose_name='创建时间')
  1948. class Meta:
  1949. db_table = 'surveys_user_log'
  1950. verbose_name = '问卷调查—用户记录'
  1951. verbose_name_plural = verbose_name
  1952. ordering = ('id',)
  1953. class SurveysTitle(models.Model):
  1954. id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
  1955. surveys = models.ForeignKey(Surveys, to_field='id', default='', on_delete=models.CASCADE, verbose_name='关联问卷表ID')
  1956. title_content = models.TextField(blank=True, verbose_name='题目内容', default=0)
  1957. created_time = models.IntegerField(default=0, verbose_name='创建时间')
  1958. class Meta:
  1959. db_table = 'surveys_title'
  1960. verbose_name = '问卷调查—题目表'
  1961. verbose_name_plural = verbose_name
  1962. ordering = ('id',)
  1963. class CloudVodSurveysAnswer(models.Model):
  1964. id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
  1965. title = models.ForeignKey(SurveysTitle, to_field='id', default='', on_delete=models.CASCADE, verbose_name='关联题目表ID')
  1966. user = models.ForeignKey(Device_User, to_field='userID', default='', on_delete=models.CASCADE,
  1967. verbose_name='关联用户表ID')
  1968. answer1 = models.SmallIntegerField(verbose_name='答案1 (分数)')
  1969. answer2 = models.CharField(max_length=500, blank=True, verbose_name='答案2', default='')
  1970. answer3 = models.CharField(max_length=500, blank=True, verbose_name='答案3', default='')
  1971. answer4 = models.CharField(max_length=500, blank=True, verbose_name='答案4', default='')
  1972. answer5 = models.CharField(max_length=500, blank=True, verbose_name='答案5', default='')
  1973. answer6 = models.CharField(max_length=500, blank=True, verbose_name='答案6', default='')
  1974. ip = models.CharField(max_length=32, default='', db_index=True, blank=True, verbose_name=u'访问ip地址')
  1975. country_name = models.CharField(max_length=20, default='', verbose_name='国家名')
  1976. created_time = models.IntegerField(default=0, verbose_name='创建时间')
  1977. class Meta:
  1978. db_table = 'cloud_vod_surveys_answer'
  1979. verbose_name = '云存问卷调查—答案表'
  1980. verbose_name_plural = verbose_name
  1981. ordering = ('id',)
  1982. class CloudVodSurveysOperateLog(models.Model):
  1983. id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
  1984. user = models.ForeignKey(Device_User, to_field='userID', default='', on_delete=models.CASCADE,
  1985. verbose_name='关联用户表ID')
  1986. status = models.SmallIntegerField(default=0, verbose_name='状态{0:未处理,1:提交,2:关闭}')
  1987. updated_time = models.IntegerField(default=0, verbose_name='更新时间')
  1988. created_time = models.IntegerField(default=0, verbose_name='创建时间')
  1989. class Meta:
  1990. db_table = 'cloud_vod_surveys_operate_log'
  1991. verbose_name = '云存问卷调查—操作日志'
  1992. verbose_name_plural = verbose_name
  1993. ordering = ('id',)
  1994. class DeviceOTAUpgradeRecord(models.Model):
  1995. id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
  1996. created_time = models.IntegerField(default=0, verbose_name='创建时间')
  1997. old_version = models.CharField(max_length=22, blank=True, verbose_name='原版本号', default='')
  1998. new_version = models.CharField(max_length=22, blank=True, verbose_name='升级后版本号', default='')
  1999. user_id = models.CharField(max_length=32, blank=True, verbose_name='用户ID', default='')
  2000. serial_number = models.CharField(max_length=11, blank=True, verbose_name='序列号', default='')
  2001. uid = models.CharField(max_length=22, blank=True, verbose_name='设备UID', default='')
  2002. mci = models.CharField(max_length=10, blank=True, verbose_name='设备大类:IPC/NVR/DVR', default='')
  2003. class Meta:
  2004. db_table = 'device_OTA_upgrade_record'
  2005. verbose_name = '设备OTA升级记录'
  2006. verbose_name_plural = verbose_name
  2007. ordering = ('id',)
  2008. class PaypalWebHookEvent(models.Model):
  2009. id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
  2010. webhook_event_id = models.CharField(max_length=200, blank=True, verbose_name='webhook事件ID', default='')
  2011. resource_type = models.CharField(max_length=11, verbose_name='资源类型', blank=True, default='')
  2012. ## event_type: 1=PAYMENT.SALE.COMPLETED(付款,订阅成功后钩子),2=PAYMENT.SALE.REVERSED(付款撤销)
  2013. ## event_type: 3=BILLING.SUBSCRIPTION.CANCELLED(订阅取消),4=BILLING.SUBSCRIPTION.SUSPENDED(订阅暂停),
  2014. # event_type: 5=BILLING.SUBSCRIPTION.PAYMENT.FAILED(订阅付款失败),6=PAYMENT.SALE.REFUNDED(退款)
  2015. event_type = models.SmallIntegerField(default=0, verbose_name='事件类型')
  2016. summary = models.CharField(max_length=500, verbose_name='事件概要', blank=True, default='')
  2017. agreement_id = models.CharField(max_length=22, db_index=True, verbose_name='订阅ID', blank=True, default='')
  2018. trade_no = models.CharField(max_length=22, db_index=True, verbose_name='交易ID', blank=True, default='')
  2019. orderID = models.CharField(max_length=30, db_index=True, verbose_name='订单ID', blank=True, default='')
  2020. resource = models.TextField(blank=True, default='', verbose_name=u'资源详情')
  2021. agreement_desc = models.TextField(blank=True, default='', verbose_name=u'订阅详情')
  2022. created_time = models.IntegerField(default=0, db_index=True, verbose_name='创建时间')
  2023. class Meta:
  2024. db_table = 'paypal_webhook_event'
  2025. verbose_name = 'paypal钩子事件记录表'
  2026. verbose_name_plural = verbose_name
  2027. ordering = ('id',)
  2028. class PopupsConfig(models.Model):
  2029. id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
  2030. title = models.CharField(max_length=1000, verbose_name='弹窗标题', blank=True, default='')
  2031. content = models.CharField(max_length=1000, verbose_name='弹窗内容', blank=True, default='')
  2032. tag = models.SmallIntegerField(default=0, verbose_name='app跳转页面标签{1:云存储购 2:AI购买 3:优惠券}')
  2033. start_time = models.IntegerField(default=0, verbose_name='更新时间')
  2034. end_time = models.IntegerField(default=0, verbose_name='创建时间')
  2035. lang = models.CharField(blank=True, max_length=16, default='en', verbose_name=u'语言地区')
  2036. class Meta:
  2037. db_table = 'popups_config'
  2038. verbose_name = 'app弹窗设置'
  2039. verbose_name_plural = verbose_name
  2040. ordering = ('id',)
  2041. class RedDotsConfig(models.Model):
  2042. id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
  2043. module = models.CharField(max_length=1000, verbose_name='app模块', blank=True, default='')
  2044. start_time = models.IntegerField(default=0, verbose_name='更新时间')
  2045. end_time = models.IntegerField(default=0, verbose_name='创建时间')
  2046. class Meta:
  2047. db_table = 'red_dots_config'
  2048. verbose_name = '红点标记配置'
  2049. verbose_name_plural = verbose_name
  2050. ordering = ('id',)
  2051. class UserFamily(models.Model):
  2052. id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
  2053. user = models.ForeignKey(Device_User, to_field='userID', default='', on_delete=models.CASCADE,
  2054. verbose_name='关联用户表ID')
  2055. name = models.CharField(max_length=50, db_index=True, verbose_name=u'家庭名称', default='', blank=True)
  2056. location = models.CharField(max_length=100, verbose_name='位置', blank=True, default='')
  2057. sort = models.IntegerField(default=99, blank=True, verbose_name=u'排序,越小越靠前')
  2058. updated_time = models.IntegerField(default=0, verbose_name='更新时间')
  2059. created_time = models.IntegerField(default=0, verbose_name='创建时间')
  2060. class Meta:
  2061. db_table = 'user_family'
  2062. verbose_name = '用户家庭'
  2063. verbose_name_plural = verbose_name
  2064. class FamilyMemberPermission(models.Model):
  2065. id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
  2066. no = models.CharField(max_length=10, unique=True, verbose_name='编号', default=0)
  2067. name = models.CharField(max_length=50, verbose_name=u'权限名称', default='')
  2068. sort = models.IntegerField(default=99, blank=True, verbose_name=u'排序,越小越靠前')
  2069. describe = models.CharField(max_length=128, blank=True, verbose_name='权限描述', default=0)
  2070. updated_time = models.IntegerField(default=0, verbose_name='更新时间')
  2071. created_time = models.IntegerField(default=0, verbose_name='创建时间')
  2072. class Meta:
  2073. db_table = 'family_member_permission'
  2074. verbose_name = '家庭成员权限'
  2075. verbose_name_plural = verbose_name
  2076. class FamilyMember(models.Model):
  2077. id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
  2078. user = models.ForeignKey(Device_User, to_field='userID', default='', on_delete=models.CASCADE,
  2079. verbose_name='关联用户表id')
  2080. user_name = models.CharField(max_length=64, db_index=True, verbose_name=u'用户名', default='', blank=True)
  2081. family = models.ForeignKey(UserFamily, to_field='id', default='', on_delete=models.CASCADE,
  2082. verbose_name='关联用户家庭id')
  2083. sort = models.IntegerField(default=99, blank=True, verbose_name=u'排序,越小越靠前')
  2084. identity = models.SmallIntegerField(default=0, verbose_name='状态{0:普通成员,1:屋主}')
  2085. permission = models.ForeignKey(FamilyMemberPermission, to_field='id', default='', on_delete=models.CASCADE,
  2086. verbose_name='关联用户家庭id')
  2087. updated_time = models.IntegerField(default=0, verbose_name='更新时间')
  2088. created_time = models.IntegerField(default=0, verbose_name='创建时间')
  2089. class Meta:
  2090. db_table = 'family_member'
  2091. verbose_name = '家庭成员'
  2092. verbose_name_plural = verbose_name
  2093. class FamilyRoom(models.Model):
  2094. id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
  2095. name = models.CharField(max_length=128, verbose_name=u'房间名称', default='', blank=True)
  2096. family = models.ForeignKey(UserFamily, to_field='id', default='', on_delete=models.CASCADE,
  2097. verbose_name='关联用户家庭id')
  2098. sort = models.IntegerField(default=99, blank=True, verbose_name=u'排序,越小越靠前')
  2099. updated_time = models.IntegerField(default=0, verbose_name='更新时间')
  2100. created_time = models.IntegerField(default=0, verbose_name='创建时间')
  2101. class Meta:
  2102. db_table = 'family_room'
  2103. verbose_name = '家庭房间'
  2104. verbose_name_plural = verbose_name
  2105. class GatewaySubDevice(models.Model):
  2106. id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
  2107. device = models.ForeignKey(Device_Info, to_field='id', default='', on_delete=models.CASCADE,
  2108. verbose_name='关联设备信息id')
  2109. device_type = models.SmallIntegerField(default=0, verbose_name=u'设备类型')
  2110. nickname = models.CharField(default='', max_length=32, verbose_name=u'设备名称')
  2111. ieee_addr = models.CharField(default='', max_length=64, verbose_name=u'长地址')
  2112. src_addr = models.CharField(default='', max_length=16, verbose_name=u'短地址')
  2113. status = models.SmallIntegerField(default=0, verbose_name='状态') # 0:关闭, 1:开启
  2114. is_tampered = models.SmallIntegerField(default=0, verbose_name='拆动状态') # 0:正常, 1:被拆动
  2115. mac = models.CharField(default='', max_length=32, verbose_name=u'mac地址')
  2116. device_model = models.CharField(default='', max_length=16, verbose_name=u'设备型号')
  2117. manufacturer = models.CharField(default='', max_length=16, verbose_name=u'制造商')
  2118. sensor_serial = models.CharField(default='', max_length=32, verbose_name=u'传感器序列号')
  2119. firmware_version = models.CharField(default='', max_length=32, verbose_name=u'固件版本')
  2120. hardware_version = models.CharField(default='', max_length=32, verbose_name=u'硬件版本')
  2121. created_time = models.IntegerField(default=0, verbose_name='创建时间')
  2122. updated_time = models.IntegerField(default=0, verbose_name='更新时间')
  2123. class Meta:
  2124. db_table = 'gateway_sub_device'
  2125. verbose_name = '网关子设备'
  2126. verbose_name_plural = verbose_name
  2127. class FamilyRoomDevice(models.Model):
  2128. id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
  2129. room_id = models.IntegerField(default=0, blank=True, verbose_name=u'房间id')
  2130. family_id = models.IntegerField(default=0, blank=True, verbose_name=u'家庭id')
  2131. device = models.ForeignKey(Device_Info, to_field='id', default='', on_delete=models.CASCADE,
  2132. verbose_name='关联设备信息id')
  2133. sub_device = models.IntegerField(default=0, blank=True, verbose_name='关联子设备信息id')
  2134. sort = models.IntegerField(default=0, blank=True, verbose_name=u'排序,越小越靠前')
  2135. updated_time = models.IntegerField(default=0, verbose_name='更新时间')
  2136. created_time = models.IntegerField(default=0, verbose_name='创建时间')
  2137. class Meta:
  2138. db_table = 'family_room_device'
  2139. verbose_name = '家庭房间关联设备'
  2140. verbose_name_plural = verbose_name
  2141. class FamilyMemberJoin(models.Model):
  2142. id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
  2143. user = models.ForeignKey(Device_User, to_field='userID', default='', on_delete=models.CASCADE,
  2144. verbose_name='关联用户表id')
  2145. family = models.ForeignKey(UserFamily, to_field='id', default='', on_delete=models.CASCADE,
  2146. verbose_name='关联用户家庭id')
  2147. status = models.SmallIntegerField(default=0, verbose_name='状态{0:未确认,1:拒绝,2:同意}')
  2148. # 0:家庭所有者搜索邀请,1:成员扫码加入
  2149. type = models.SmallIntegerField(default=0, verbose_name='类型')
  2150. updated_time = models.IntegerField(default=0, verbose_name='更新时间')
  2151. created_time = models.IntegerField(default=0, verbose_name='创建时间')
  2152. class Meta:
  2153. db_table = 'family_member_join'
  2154. verbose_name = '家庭成员加入'
  2155. verbose_name_plural = verbose_name
  2156. class SensorRecord(models.Model):
  2157. id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
  2158. gateway_sub_device_id = models.IntegerField(default=0, blank=True, verbose_name=u'网关子设备id')
  2159. alarm = models.CharField(default='', max_length=32, verbose_name=u'消息内容')
  2160. event_type = models.SmallIntegerField(default=0, verbose_name=u'消息类型')
  2161. created_time = models.IntegerField(default=0, verbose_name='创建时间')
  2162. class Meta:
  2163. db_table = 'sensor_record'
  2164. verbose_name = '传感器记录'
  2165. verbose_name_plural = verbose_name
  2166. app_label = 'PushModel'
  2167. class SmartScene(models.Model):
  2168. id = models.AutoField(primary_key=True, verbose_name=u'自增标记id')
  2169. user = models.ForeignKey(Device_User, to_field='userID', default='', on_delete=models.CASCADE,
  2170. verbose_name='关联用户表id')
  2171. device_id = models.CharField(default='', max_length=32, verbose_name=u'关联设备信息id')
  2172. sub_device_id = models.IntegerField(default=0, verbose_name=u'关联子设备表id')
  2173. scene_name = models.CharField(default='', max_length=100, verbose_name=u'场景名称')
  2174. conditions = models.TextField(default='', verbose_name=u'条件')
  2175. tasks = models.TextField(default='', verbose_name=u'任务')
  2176. is_all_day = models.SmallIntegerField(default=0, verbose_name=u'是否全天') # 0: 不设置时间, 1: 全天, 2: 非全天
  2177. effective_time_id = models.IntegerField(default=0, verbose_name=u'关联场景执行时间id')
  2178. is_enable = models.BooleanField(default=True, verbose_name=u'是否开启')
  2179. device_data = models.CharField(default='', max_length=255, verbose_name=u'设备场景数据')
  2180. created_time = models.IntegerField(default=0, verbose_name='创建时间')
  2181. updated_time = models.IntegerField(default=0, verbose_name='更新时间')
  2182. class Meta:
  2183. db_table = 'smart_scene'
  2184. verbose_name = '智能场景'
  2185. verbose_name_plural = verbose_name
  2186. class EffectiveTime(models.Model):
  2187. id = models.AutoField(primary_key=True, verbose_name=u'自增标记id')
  2188. start_time = models.SmallIntegerField(default=0, verbose_name=u'开始时间')
  2189. end_time = models.SmallIntegerField(default=0, verbose_name=u'结束时间')
  2190. repeat = models.SmallIntegerField(default=0, verbose_name=u'重复周期')
  2191. class Meta:
  2192. db_table = 'effective_time'
  2193. verbose_name = '场景执行时间'
  2194. verbose_name_plural = verbose_name
  2195. class UnicomCombo(models.Model):
  2196. id = models.AutoField(primary_key=True, verbose_name=u'自增标记Id')
  2197. package_id = models.CharField(default='', max_length=32, verbose_name=u'联通套餐id')
  2198. combo_name = models.CharField(default='', max_length=32, verbose_name=u'套餐名称')
  2199. status = models.SmallIntegerField(default=0, verbose_name='状态{0:开启,1:停用}')
  2200. # 套餐类型 0:商用,1:初始化赠送
  2201. combo_type = models.SmallIntegerField(default=0, verbose_name='套餐类型')
  2202. flow_total = models.IntegerField(default=0, blank=True, verbose_name=u'流量总量值 单位(MB)')
  2203. expiration_days = models.IntegerField(default=0, blank=True, verbose_name=u'有效期天数')
  2204. expiration_type = models.SmallIntegerField(default=0, verbose_name=u'有效期类型,0=天,1=月,2=年')
  2205. pay_type = models.ManyToManyField(to='Pay_Type', verbose_name='付款类型', db_table='unicom_combo_pay_type')
  2206. price = models.CharField(blank=True, max_length=32, verbose_name=u'价格')
  2207. sort = models.IntegerField(default=0, blank=True, verbose_name=u'排序,越小越靠前')
  2208. remark = models.TextField(blank=True, default='', verbose_name=u'描述信息')
  2209. updated_time = models.IntegerField(default=0, verbose_name='更新时间')
  2210. created_time = models.IntegerField(default=0, verbose_name='创建时间')
  2211. is_show = models.SmallIntegerField(default=1, verbose_name=u'是否显示,0:不显示,1:显示')
  2212. is_del = models.BooleanField(blank=True, default=False, verbose_name=u'是否删除默认false')
  2213. class Meta:
  2214. db_table = 'unicom_combo'
  2215. verbose_name = '联通套餐表'
  2216. verbose_name_plural = verbose_name
  2217. class UnicomComboOrderInfo(models.Model):
  2218. id = models.AutoField(primary_key=True, verbose_name=u'自增标记Id')
  2219. iccid = models.CharField(default='', max_length=32, verbose_name=u'完整的20位纯数字ICCID')
  2220. renew_list_id = models.CharField(blank=True, default='', max_length=32, verbose_name=u'联通订购成功套餐队列id')
  2221. status = models.SmallIntegerField(default=0, verbose_name='状态{0:未使用,1:已使用,2:已过期}')
  2222. order_id = models.CharField(blank=True, default='', max_length=32, verbose_name=u'关联订单表')
  2223. combo = models.ForeignKey(UnicomCombo, to_field='id', default='', on_delete=models.CASCADE,
  2224. verbose_name=u'联通套餐表')
  2225. year = models.IntegerField(default=0, verbose_name='使用年')
  2226. month = models.IntegerField(default=0, verbose_name='使用月')
  2227. flow_total_usage = models.CharField(blank=True, default='', max_length=32, verbose_name=u'激活时当月已用流量')
  2228. sort = models.IntegerField(default=99, blank=True, verbose_name=u'排序')
  2229. next_month_activate = models.BooleanField(blank=True, default=False, verbose_name=u'下月激活')
  2230. activation_time = models.IntegerField(default=0, verbose_name='激活时间')
  2231. expire_time = models.IntegerField(default=0, verbose_name='过期时间')
  2232. updated_time = models.IntegerField(default=0, verbose_name='更新时间')
  2233. created_time = models.IntegerField(default=0, verbose_name='创建时间')
  2234. is_del = models.BooleanField(blank=True, default=False, verbose_name=u'是否删除')
  2235. class Meta:
  2236. db_table = 'unicom_combo_order_info'
  2237. verbose_name = '联通套餐订单信息表'
  2238. verbose_name_plural = verbose_name
  2239. class UnicomDeviceInfo(models.Model):
  2240. id = models.AutoField(primary_key=True, verbose_name=u'自增标记Id')
  2241. iccid = models.CharField(db_index=True, unique=True, max_length=32, verbose_name=u'完整的20位纯数字ICCID')
  2242. status = models.SmallIntegerField(default=0, verbose_name=u'状态{0:可测试,1:测试完成,2:已使用}')
  2243. serial_no = models.CharField(default='', max_length=32, verbose_name=u'设备序列号')
  2244. user_id = models.CharField(blank=True, max_length=32, verbose_name=u'用户id')
  2245. main_card = models.SmallIntegerField(default=0, verbose_name=u'状态{0:主卡,1:拔插卡}')
  2246. updated_time = models.IntegerField(default=0, verbose_name='更新时间')
  2247. created_time = models.IntegerField(default=0, verbose_name='创建时间')
  2248. class Meta:
  2249. db_table = 'unicom_device_info'
  2250. verbose_name = '联通设备信息'
  2251. verbose_name_plural = verbose_name
  2252. class UnicomDeviceQueueMonitoringPush(models.Model):
  2253. id = models.AutoField(primary_key=True, verbose_name=u'自增标记Id')
  2254. iccid = models.CharField(default='', max_length=32, verbose_name=u'完整的20位纯数字ICCID')
  2255. serial_no = models.CharField(default='', max_length=32, verbose_name=u'序列号')
  2256. sign = models.CharField(default='', max_length=128, verbose_name=u'验证签名')
  2257. time = models.CharField(default='', max_length=32, verbose_name=u'推送时间(yyyymmddhhmiss)')
  2258. type = models.CharField(default='', max_length=32, verbose_name=u'推送类型:DEVICE_QUEUE_MONITORING:设队列监控;')
  2259. current_renew_list_id = models.CharField(default='', max_length=32, verbose_name=u'队列ID')
  2260. no_queue_available = models.SmallIntegerField(default=0, verbose_name=u'是否无可用队列;1:是;0:否')
  2261. updated_time = models.IntegerField(default=0, verbose_name='更新时间')
  2262. created_time = models.IntegerField(default=0, verbose_name='创建时间')
  2263. class Meta:
  2264. db_table = 'unicom_device_queue_monitoring_push'
  2265. verbose_name = '联通设备队列监控推送表'
  2266. verbose_name_plural = verbose_name
  2267. class UnicomDeviceStatusChangePush(models.Model):
  2268. id = models.AutoField(primary_key=True, verbose_name=u'自增标记Id')
  2269. iccid = models.CharField(default='', max_length=32, verbose_name=u'完整的20位纯数字ICCID')
  2270. serial_no = models.CharField(default='', max_length=32, verbose_name=u'序列号')
  2271. sign = models.CharField(default='', max_length=128, verbose_name=u'验证签名')
  2272. time = models.CharField(default='', max_length=32, verbose_name=u'推送时间(yyyymmddhhmiss)')
  2273. # 变更类型: DEVICE_REAL_NAME_STATUS_CHANGE:实名状态变更;DEVICE_STATUS_CHANGE:设备状态变更;
  2274. type = models.CharField(default='', max_length=32, verbose_name=u'变更类型')
  2275. # 之前值:设备状态变更 1: 已激活;2: 可激活;3: 已停用;4: 已失效;5: 可测试;6: 库存;7: 已更换;8: 已清除;
  2276. previous_val = models.CharField(default='', max_length=32, verbose_name=u'之前值:')
  2277. # 当前值:设备状态变更 1:已激活;2:可激活;3:已停用;4:已失效;5:可测试;6:库存;7:已更换;8:已清除;
  2278. current_val = models.CharField(default='', max_length=32, verbose_name=u'当前值:')
  2279. reason = models.SmallIntegerField(default=0, verbose_name=u'变更原因编码:请查看【信息提示码】')
  2280. updated_time = models.IntegerField(default=0, verbose_name='更新时间')
  2281. created_time = models.IntegerField(default=0, verbose_name='创建时间')
  2282. class Meta:
  2283. db_table = 'unicom_device_status_change_push'
  2284. verbose_name = '联通设备状态变更推送表'
  2285. verbose_name_plural = verbose_name
  2286. class UnicomComboExperienceHistory(models.Model):
  2287. id = models.AutoField(primary_key=True)
  2288. # 0: 免费体验, 1: 激活码
  2289. experience_type = models.SmallIntegerField(default=0, verbose_name='体验类型')
  2290. iccid = models.CharField(max_length=32, default='', verbose_name='联通20位ICCID')
  2291. do_time = models.IntegerField(default=0, verbose_name='激活时间')
  2292. class Meta:
  2293. db_table = 'unicom_combo_experience_history'
  2294. verbose_name = '联通套餐体验历史表'
  2295. verbose_name_plural = verbose_name
  2296. class UnicomFlowPush(models.Model):
  2297. id = models.AutoField(primary_key=True)
  2298. user_id = models.CharField(default='', max_length=32, verbose_name=u'用户id')
  2299. # 0: 剩余10%流量预警, 1: 流量到期
  2300. type = models.SmallIntegerField(default=0, verbose_name='流量推送类型')
  2301. combo_order_id = models.CharField(max_length=32, default='', verbose_name='当前订单套餐id')
  2302. serial_no = models.CharField(max_length=32, default='', verbose_name='序列号')
  2303. flow_total_usage = models.IntegerField(default=0, verbose_name=u'当月实际流量用量 单位(MB)')
  2304. flow_total = models.IntegerField(default=0, verbose_name=u'流量总量 单位(MB)')
  2305. status = models.SmallIntegerField(default=0, verbose_name=u'状态{0:待推送,1:已推送}')
  2306. updated_time = models.IntegerField(default=0, verbose_name='更新时间')
  2307. created_time = models.IntegerField(default=0, verbose_name='创建时间')
  2308. class Meta:
  2309. db_table = 'unicom_flow_push'
  2310. verbose_name = '联通流量用量推送'
  2311. verbose_name_plural = verbose_name
  2312. app_label = "PushModel"