2023-12-14 13:22:07 +08:00
|
|
|
|
import uuid
|
|
|
|
|
|
|
|
|
|
from .choices import *
|
2023-12-19 16:03:02 +08:00
|
|
|
|
from ..warning.models import WarningSetting
|
2023-12-14 13:22:07 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class QcCorpinfo(models.Model):
|
|
|
|
|
id = models.AutoField(primary_key=True)
|
|
|
|
|
uid = models.IntegerField(verbose_name='用户id')
|
|
|
|
|
corpname = models.CharField(max_length=128, verbose_name='自建应用名称')
|
|
|
|
|
corpid = models.CharField(max_length=32, verbose_name='企业微信corpid')
|
|
|
|
|
agentid = models.CharField(
|
|
|
|
|
max_length=128, verbose_name='自建应用agentid', null=True, blank=True)
|
|
|
|
|
appsecret = models.CharField(max_length=128, verbose_name='自建应用密钥', null=True, blank=True)
|
|
|
|
|
token = models.CharField(verbose_name='客户联系回调配置token',
|
|
|
|
|
max_length=128, null=True, blank=True)
|
|
|
|
|
encodingaeskey = models.CharField(
|
|
|
|
|
max_length=128, verbose_name='客户联系回调配置EncodingAesKey', null=True, blank=True)
|
|
|
|
|
ctime = models.DateTimeField(verbose_name='创建时间', auto_now_add=True)
|
|
|
|
|
utime = models.DateTimeField(verbose_name='更新时间', auto_now=True)
|
|
|
|
|
callbackstatus = models.IntegerField(
|
|
|
|
|
verbose_name='客户联系回调验证状态', choices=QcCorpInfoCallbackStatusChoices.choices,
|
|
|
|
|
default=QcCorpInfoCallbackStatusChoices.UN_VALIDATE)
|
|
|
|
|
callback_validate_time = models.DateTimeField(null=True, blank=True, verbose_name='回调验证时间')
|
|
|
|
|
business_type = models.IntegerField(
|
|
|
|
|
verbose_name='业务类型', choices=QcCorpInfoBusinessTypeChoices.choices)
|
|
|
|
|
taggroupid = models.CharField(
|
|
|
|
|
max_length=32, verbose_name='标签组id', null=True, blank=True)
|
|
|
|
|
settletaggroupid = models.CharField(
|
|
|
|
|
max_length=32, verbose_name='结算标签组id', null=True, blank=True)
|
|
|
|
|
|
|
|
|
|
class Meta:
|
|
|
|
|
db_table = 'pb_corpinfo'
|
|
|
|
|
verbose_name_plural = 'Qc Corpinfo'
|
|
|
|
|
ordering = ['-ctime']
|
|
|
|
|
unique_together = ('agentid', 'corpid', 'uid', 'business_type')
|
|
|
|
|
|
2023-12-14 18:43:01 +08:00
|
|
|
|
def to_dict(self, fields=None):
|
|
|
|
|
if fields:
|
|
|
|
|
return {
|
|
|
|
|
field: getattr(self, field)
|
|
|
|
|
for field in fields
|
|
|
|
|
}
|
|
|
|
|
return {
|
|
|
|
|
'id': self.id,
|
|
|
|
|
'uid': self.uid,
|
|
|
|
|
'corpname': self.corpname,
|
|
|
|
|
'corpid': self.corpid,
|
|
|
|
|
'agentid': self.agentid,
|
|
|
|
|
'appsecret': self.appsecret,
|
|
|
|
|
'token': self.token,
|
|
|
|
|
'encodingaeskey': self.encodingaeskey,
|
|
|
|
|
'ctime': self.ctime,
|
|
|
|
|
'utime': self.utime,
|
|
|
|
|
'callbackstatus': self.callbackstatus,
|
|
|
|
|
'callback_validate_time': self.callback_validate_time,
|
|
|
|
|
'business_type': self.business_type,
|
|
|
|
|
'taggroupid': self.taggroupid,
|
|
|
|
|
'settletaggroupid': self.settletaggroupid,
|
|
|
|
|
}
|
|
|
|
|
|
2023-12-14 13:22:07 +08:00
|
|
|
|
|
|
|
|
|
class QcQrcodes(models.Model):
|
|
|
|
|
id = models.BigAutoField(primary_key=True)
|
|
|
|
|
uid = models.IntegerField(verbose_name='用户Id')
|
|
|
|
|
corpid = models.CharField(max_length=32, verbose_name='企业微信corpid')
|
|
|
|
|
agentid = models.CharField(
|
|
|
|
|
max_length=128, verbose_name='自建应用agentid', null=True, blank=True)
|
|
|
|
|
name = models.CharField(max_length=64, verbose_name='名称')
|
|
|
|
|
configid = models.CharField(max_length=64, verbose_name='企微二维码配置id')
|
|
|
|
|
qrcodeurl = models.CharField(max_length=128, verbose_name='二维码地址')
|
|
|
|
|
skipverify = models.IntegerField(verbose_name='自动通过验证', default=0)
|
|
|
|
|
isautoremark = models.IntegerField(verbose_name='自动打标签', default=0)
|
|
|
|
|
remark = models.CharField(
|
|
|
|
|
max_length=128, verbose_name='备注模板', null=True, blank=True)
|
|
|
|
|
userids = models.JSONField(verbose_name='活码成员')
|
|
|
|
|
checkminutes = models.IntegerField(verbose_name='检测间隔分钟')
|
|
|
|
|
lastchecktime = models.DateTimeField(
|
|
|
|
|
verbose_name='最近检测时间', null=True, blank=True)
|
|
|
|
|
isneedwelcome = models.IntegerField(verbose_name='是否需要欢迎语', default=0)
|
|
|
|
|
welcomecontent = models.JSONField(verbose_name='欢迎语模板', null=True, blank=True)
|
|
|
|
|
state = models.CharField(max_length=50, verbose_name='二维码自定义参数,回调唯一标识')
|
|
|
|
|
isautotag = models.IntegerField(verbose_name='自动打标签')
|
|
|
|
|
tags = models.JSONField(verbose_name='标签', null=True, blank=True)
|
|
|
|
|
ctime = models.DateTimeField(verbose_name='创建时间', auto_now_add=True)
|
|
|
|
|
utime = models.DateTimeField(verbose_name='更新时间', auto_now=True)
|
|
|
|
|
offlinechecknum = models.IntegerField(verbose_name='同组进粉差()人时报警')
|
2023-12-19 16:03:02 +08:00
|
|
|
|
warning_setting = models.ForeignKey(WarningSetting, on_delete=models.DO_NOTHING, db_constraint=False,
|
|
|
|
|
verbose_name='报警配置', related_name='qrcodes', null=True, blank=True)
|
2023-12-14 13:22:07 +08:00
|
|
|
|
|
|
|
|
|
class Meta:
|
|
|
|
|
db_table = 'qc_qrcodes'
|
|
|
|
|
verbose_name_plural = 'Qc Qrcodes'
|
|
|
|
|
ordering = ['-ctime']
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class QcQrcodesEditLog(models.Model):
|
|
|
|
|
id = models.BigAutoField(primary_key=True)
|
|
|
|
|
uid = models.IntegerField(verbose_name='用户Id')
|
|
|
|
|
corpid = models.CharField(max_length=32, verbose_name='企业微信corpid')
|
|
|
|
|
agentid = models.CharField(
|
|
|
|
|
max_length=128, verbose_name='自建应用agentid', null=True, blank=True)
|
|
|
|
|
qrcodeid = models.BigIntegerField(verbose_name='二维码表主键')
|
|
|
|
|
type = models.IntegerField(
|
|
|
|
|
verbose_name='类型,0=手动,1=自动', choices=QcQrcodesEditLogTypeChoices.choices)
|
|
|
|
|
content = models.CharField(
|
|
|
|
|
max_length=255, verbose_name='修改内容', blank=True, null=True)
|
|
|
|
|
detail = models.JSONField(verbose_name='详情说明', blank=True, null=True)
|
|
|
|
|
userid = models.CharField(max_length=50, verbose_name="企业用户id")
|
|
|
|
|
operatetime = models.DateTimeField(verbose_name='操作时间', auto_now_add=True)
|
|
|
|
|
operatetype = models.IntegerField(
|
|
|
|
|
verbose_name='操作类型', choices=QcQrcodesEditLogOperateTypeChoices.choices)
|
|
|
|
|
|
|
|
|
|
class Meta:
|
|
|
|
|
db_table = 'qc_qrcodes_editlog'
|
|
|
|
|
verbose_name = 'qc_qrcodes_editlog'
|
|
|
|
|
verbose_name_plural = 'qc_qrcodes_editlogs'
|
|
|
|
|
ordering = ['-operatetime']
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class QcWechatbizeventAddcontact(models.Model):
|
|
|
|
|
id = models.BigAutoField(primary_key=True, verbose_name="ID")
|
2023-12-21 17:20:03 +08:00
|
|
|
|
uid = models.IntegerField(verbose_name="用户id", null=True, blank=True, default=0)
|
2023-12-14 13:22:07 +08:00
|
|
|
|
corpid = models.CharField(max_length=32, verbose_name='企业微信corpid')
|
|
|
|
|
agentid = models.CharField(
|
|
|
|
|
max_length=128, verbose_name='自建应用agentid', null=True, blank=True)
|
|
|
|
|
fromusername = models.CharField(
|
|
|
|
|
max_length=20, verbose_name="此事件该值固定为sys,表示该消息由系统生成")
|
|
|
|
|
createtime = models.BigIntegerField(verbose_name="消息创建时间")
|
|
|
|
|
msgtype = models.CharField(max_length=50, verbose_name="消息的类型,此时固定为event")
|
|
|
|
|
event = models.CharField(
|
|
|
|
|
max_length=50, verbose_name="事件的类型,此时固定为change_external_contact")
|
|
|
|
|
changetype = models.CharField(
|
|
|
|
|
max_length=50, verbose_name="此时固定为add_external_contact")
|
|
|
|
|
userid = models.CharField(max_length=50, verbose_name="企业服务人员的UserID")
|
|
|
|
|
externaluserid = models.CharField(
|
|
|
|
|
max_length=50, verbose_name="外部联系人的userid")
|
|
|
|
|
state = models.CharField(max_length=50, verbose_name="state参数")
|
|
|
|
|
welcomecode = models.TextField(verbose_name="欢迎语code")
|
|
|
|
|
ctime = models.DateTimeField(verbose_name="创建时间")
|
|
|
|
|
isdelete = models.IntegerField(default=QcWechatbizeventAddcontactIsDeleteChoices.NOT_DELETE,
|
|
|
|
|
verbose_name="是否删除", choices=QcWechatbizeventAddcontactIsDeleteChoices.choices)
|
|
|
|
|
deletetime = models.DateTimeField(null=True, verbose_name="删除时间")
|
2023-12-14 18:43:01 +08:00
|
|
|
|
qrcodeid = models.IntegerField(verbose_name='二维码id', default=0)
|
|
|
|
|
|
|
|
|
|
# hook_starttime = models.DateTimeField(null=True, verbose_name="hook最近一次启动时间", blank=True)
|
|
|
|
|
# hook_wstime = models.DateTimeField(null=True, verbose_name="hook最近一次websocket首发消息时间", blank=True)
|
|
|
|
|
# hook_connecttime = models.DateTimeField(null=True, verbose_name="hook最近一次通信时间", blank=True)
|
|
|
|
|
# isfirststart = models.BooleanField(verbose_name="是否首次启动", null=True, blank=True)
|
2023-12-14 13:22:07 +08:00
|
|
|
|
|
|
|
|
|
class Meta:
|
|
|
|
|
db_table = 'qc_wechatbizevent_addcontact'
|
|
|
|
|
ordering = ['-ctime']
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class QcWechatbizuserinfo(models.Model):
|
|
|
|
|
id = models.BigAutoField(primary_key=True)
|
|
|
|
|
corpid = models.CharField(max_length=32, verbose_name='企业微信corpid')
|
|
|
|
|
userid = models.CharField(max_length=50, verbose_name='UserId')
|
|
|
|
|
username = models.CharField(
|
|
|
|
|
max_length=50, verbose_name='用户名', null=True, blank=True)
|
|
|
|
|
alias = models.CharField(
|
|
|
|
|
max_length=64, verbose_name='别名', null=True, blank=True)
|
|
|
|
|
department = models.JSONField(verbose_name='部门ID集合')
|
|
|
|
|
maindepartment = models.IntegerField(verbose_name='主部门ID')
|
|
|
|
|
telephone = models.CharField(max_length=20, verbose_name='座机')
|
|
|
|
|
position = models.CharField(max_length=64, verbose_name='职位')
|
|
|
|
|
external_position = models.CharField(max_length=64, verbose_name='对外职务')
|
|
|
|
|
direct_leader = models.JSONField(verbose_name='直属上级userid')
|
|
|
|
|
is_leader_in_dept = models.JSONField(
|
|
|
|
|
verbose_name='表示在所在的部门内是否为部门负责人,数量与department一致')
|
|
|
|
|
status = models.IntegerField(
|
|
|
|
|
verbose_name='激活状态: 1=已激活,2=已禁用,4=未激活,5=退出企业',
|
|
|
|
|
choices=QcWechatbizuserinfoStatusChoices.choices)
|
|
|
|
|
ctime = models.DateTimeField(verbose_name='创建时间', auto_now_add=True)
|
|
|
|
|
utime = models.DateTimeField(verbose_name='更新时间', auto_now=True)
|
|
|
|
|
limitaddusercount = models.IntegerField(
|
|
|
|
|
verbose_name='每天限制加好友人数', null=True, blank=True, default=0)
|
|
|
|
|
totallimitaddusercount = models.IntegerField(
|
|
|
|
|
default=0, verbose_name='总限制加好友人数')
|
|
|
|
|
|
|
|
|
|
class Meta:
|
|
|
|
|
db_table = 'qc_wechatbizuserinfo'
|
|
|
|
|
ordering = ['-ctime']
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class QcSendCorpMedia(models.Model):
|
|
|
|
|
id = models.BigAutoField(primary_key=True)
|
|
|
|
|
uid = models.IntegerField(verbose_name='用户Id')
|
|
|
|
|
corpid = models.CharField(max_length=32, verbose_name='企业微信corpid')
|
|
|
|
|
agentid = models.CharField(
|
|
|
|
|
max_length=128, verbose_name='自建应用agentid', null=True, blank=True)
|
|
|
|
|
corpid = models.CharField(max_length=32, verbose_name='企业微信corpid')
|
|
|
|
|
url = models.CharField(max_length=128, verbose_name='文件地址')
|
|
|
|
|
media_id = models.CharField(max_length=128, verbose_name='媒体文件id')
|
|
|
|
|
utime = models.DateTimeField(verbose_name='更新时间', auto_now=True)
|
|
|
|
|
media_type = models.IntegerField(
|
|
|
|
|
verbose_name='媒体文件类型', default=QcSendCorpMediaTypeChoices.IMAGE,
|
|
|
|
|
choices=QcSendCorpMediaTypeChoices.choices)
|
|
|
|
|
sendtype = models.IntegerField(
|
|
|
|
|
verbose_name='发送类型', choices=QcSendCorpMediaSendTypeChoices.choices)
|
|
|
|
|
sourcetype = models.IntegerField(
|
|
|
|
|
verbose_name='发送类型', choices=QcSendCorpSourceTypeChoices.choices)
|
|
|
|
|
|
|
|
|
|
class Meta:
|
|
|
|
|
db_table = 'qc_sendcorpmedia'
|