Esempio n. 1
0
class ComponentAuthedAppid(models.Model):
    """
    参数  说明
    authorization_info  授权信息
    authorizer_appid    授权方appid
    authorizer_access_token 授权方令牌(在授权的公众号具备API权限时,才有此返回值)
    expires_in  有效期(在授权的公众号具备API权限时,才有此返回值)
    authorizer_refresh_token    刷新令牌(在授权的公众号具备API权限时,才有此返回值),刷新令牌主要用于公众号第三方平台获取和刷新已授权用户的access_token,只会在授权时刻提供,请妥善保存。 一旦丢失,只能让用户重新授权,才能再次拿到新的刷新令牌
    func_info   公众号授权给开发者的权限集列表(请注意,当出现用户已经将消息与菜单权限集授权给了某个第三方,再授权给另一个第三方时,由于该权限集是互斥的,后一个第三方的授权将去除此权限集,开发者可以在返回的func_info信息中验证这一点,避免信息遗漏),
    1到8分别代表:
    1消息与菜单权限集
    2用户管理权限集
    3帐号管理权限集
    4网页授权权限集
    5微信小店权限集
    6多客服权限集
    7业务通知权限集
    8微信卡券权限集

    """
    component_info = models.ForeignKey(ComponentInfo)
    auth_code = models.TextField(default='')
    user_id = models.IntegerField(default=0)  #对应帐号user id
    last_update_time = models.DateTimeField(default=datetime.now())
    authorizer_appid = models.CharField(max_length=255, default='')
    authorizer_access_token = models.TextField(default='')
    authorizer_refresh_token = models.TextField(default='')
    func_info = models.TextField(default='')
    created_at = models.DateTimeField(auto_now=True)
    is_active = models.BooleanField(default=False)

    class Meta(object):
        db_table = 'component_authed_appid'
        verbose_name = '委托授权帐号基本信息'
        verbose_name_plural = '委托授权帐号基本信息'
Esempio n. 2
0
class ComponentInfo(models.Model):
    """
    <xml><AppId><![CDATA[wx984abb2d00cc47b8]]></AppId>
    <CreateTime>1427710810</CreateTime>
    <InfoType><![CDATA[component_verify_ticket]]></InfoType>
    <ComponentVerifyTicket><![CDATA[Z8RBNjttRu3P5eM8rPe9TW3dA09yuAequP1BmbHhITxs8lZ-
    X-Gxwaegr5lcPkfJ4VAiRLiuLlCrhKmIz-oSpw]]></ComponentVerifyTicket>
    </xml>

    <xml><AppId><![CDATA[wx984abb2d00cc47b8]]></AppId>
    <CreateTime>1427710810</CreateTime>
    <InfoType><![CDATA[component_verify_ticket]]></InfoType>
    <ComponentVerifyTicket><![CDATA[Z8RBNjttRu3P5eM8rPe9TW3dA09yuAequP1BmbHhITxs8lZ-
    X-Gxwaegr5lcPkfJ4VAiRLiuLlCrhKmIz-oSpw]]></ComponentVerifyTicket>
    </xml>
    """
    app_id = models.CharField(max_length=64)
    app_secret = models.CharField(max_length=64)
    component_verify_ticket = models.TextField()
    token = models.TextField()
    ase_key = models.TextField()
    last_update_time = models.DateTimeField(default=datetime.now())
    component_access_token = models.TextField()
    is_active = models.BooleanField(default=True)
    access_token_update_time = models.DateTimeField(default=datetime.now())
    verify_ticket_update_time = models.DateTimeField(default=datetime.now())

    def __unicode__(self):
        return self.app_id

    class Meta(object):
        db_table = 'component_info'
        verbose_name = '第三方帐号信息'
        verbose_name_plural = '第三方帐号信息'
Esempio n. 3
0
class UserOrderNotifySettings(models.Model):
    user = models.ForeignKey(User)
    emails = models.TextField(default='')  # '|'分割
    black_member_ids = models.TextField(default='')  # '|'分割,会员id
    status = models.IntegerField(default=0)
    is_active = models.BooleanField(default=False)
    created_at = models.DateTimeField(auto_now_add=True)

    class Meta(object):
        db_table = 'user_order_notify_setting'
Esempio n. 4
0
class CouponRule(models.Model):
    """
	优惠券规则
	"""
    owner = models.ForeignKey(User)
    name = models.CharField(max_length=20)  #名称
    valid_days = models.IntegerField(default=0)  #过期天数
    is_active = models.BooleanField(default=True)  #是否可用
    created_at = models.DateTimeField(auto_now_add=True)  #添加时间
    start_date = models.DateTimeField()  #有效期开始时间
    end_date = models.DateTimeField()  #有效期结束时间
    # v2
    valid_restrictions = models.IntegerField(default=-1)  #订单满多少可以使用规则
    money = models.DecimalField()  #金额
    count = models.IntegerField(default=0)  #发放总数量
    remained_count = models.IntegerField(default=0)  #剩余数量
    limit_counts = models.IntegerField(default=0)  #每人限领
    limit_product = models.BooleanField(default=False)  #限制指定商品
    limit_product_id = models.CharField(max_length=2048, default=0)  #限制指定商品ID
    remark = models.TextField(default='')  #备注
    get_person_count = models.IntegerField(default=0)  #领取人数
    get_count = models.IntegerField(default=0)  #领取次数
    use_count = models.IntegerField(default=0)  #使用次数
    receive_rule = models.BooleanField(default=False)  #领取规则,仅未下单用户可领取

    class Meta(object):
        db_table = 'market_tool_coupon_rule'
Esempio n. 5
0
class MarketToolsIndustry(models.Model):
    industry_type = models.IntegerField(default=INDUSTR_IT)
    industry_name = models.TextField()  #模版id

    class Meta(object):
        db_table = 'market_tools_industry'
        verbose_name = '行业信息'
        verbose_name_plural = '行业信息'
Esempio n. 6
0
class MemberBrowseRecord(models.Model):
    member = models.ForeignKey(Member)
    title = models.CharField(max_length=256, default='')  #页面标题
    url = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)

    class Meta(object):
        db_table = 'member_browse_record'
        verbose_name = '会员浏览记录'
        verbose_name_plural = '会员浏览记录'
Esempio n. 7
0
class MarketToolsTemplateMessageSendRecord(models.Model):
    owner = models.ForeignKey(User, related_name='user')
    template_id = models.TextField()  #模版id
    member_id = models.IntegerField(default=0)
    status = models.IntegerField(default=0)
    order_id = models.CharField(max_length=200, default='')
    created_at = models.DateTimeField(auto_now_add=True)  #添加时间

    class Meta(object):
        db_table = 'market_tools_template_message_send_record'
        verbose_name = '模板消息发送记录'
        verbose_name_plural = 'market_tools_template_message_send_record'
Esempio n. 8
0
class MarketToolsTemplateMessage(models.Model):
    industry = models.IntegerField(default=INDUSTR_IT)
    title = models.CharField(max_length=256)  #标题
    send_point = models.IntegerField(default=PAY_ORDER_SUCCESS)  #发送点
    attribute = models.TextField()  #属性1  orderProductPrice:final_price,

    created_at = models.DateTimeField(auto_now_add=True)  #添加时间

    class Meta(object):
        db_table = 'market_tools_template_message'
        verbose_name = '模板消息'
        verbose_name_plural = 'template_message'
Esempio n. 9
0
class ComponentAuthedAppidInfo(models.Model):
    """
    参数  说明
    authorizer_info 授权方昵称
    head_img    授权方头像
    service_type_info   授权方公众号类型,0代表订阅号,1代表由历史老帐号升级后的订阅号,2代表服务号
    verify_type_info    授权方认证类型,-1代表未认证,0代表微信认证,1代表新浪微博认证,2代表腾讯微博认证,3代表已资质认证通过但还未通过名称认证,4代表已资质认证通过、还未通过名称认证,但通过了新浪微博认证,5代表已资质认证通过、还未通过名称认证,但通过了腾讯微博认证
    user_name   授权方公众号的原始ID
    alias   授权方公众号所设置的微信号,可能为空
    qrcode_url  二维码图片的URL,开发者最好自行也进行保存
    authorization_info  授权信息
    appid   授权方appid
    func_info   公众号授权给开发者的权限集列表(请注意,当出现用户已经将消息与菜单权限集授权给了某个第三方,再授权给另一个第三方时,由于该权限集是互斥的,后一个第三方的授权将去除此权限集,开发者可以在返回的func_info信息中验证这一点,避免信息遗漏),1到9分别代表:
    消息与菜单权限集
    用户管理权限集
    帐号管理权限集
    网页授权权限集
    微信小店权限集
    多客服权限集
    业务通知权限集
    微信卡券权限集
    微信扫一扫权限集

    """
    auth_appid = models.ForeignKey(ComponentAuthedAppid)
    nick_name = models.CharField(max_length=255)
    head_img = models.CharField(max_length=255)
    service_type_info = models.CharField(max_length=255)
    verify_type_info = models.CharField(max_length=255)
    user_name = models.CharField(max_length=255)  #授权方公众号的原始ID
    alias = models.TextField()
    qrcode_url = models.CharField(max_length=255)
    appid = models.CharField(max_length=255)
    func_info = models.TextField()
    created_at = models.DateTimeField(auto_now=True)

    class Meta(object):
        db_table = 'component_authed_appid_info'
        verbose_name = '委托授权帐号详细信息'
        verbose_name_plural = '委托授权帐号详细信息'
Esempio n. 10
0
class ExpressDelivery(models.Model):
    owner = models.ForeignKey(User)
    display_index = models.IntegerField(default=1, db_index=True)  # 显示的排序
    name = models.CharField(max_length=1024, verbose_name='名称')
    express_number = models.CharField(max_length=1024, verbose_name='编号')
    express_value = models.CharField(max_length=1024, verbose_name='快递value')
    remark = models.TextField(default='', verbose_name='备注')
    created_at = models.DateTimeField(auto_now_add=True, verbose_name='添加时间')

    class Meta(object):
        db_table = 'mall_express_delivery'
        verbose_name = '物流名称'
        verbose_name_plural = '物流名称'
Esempio n. 11
0
class MemberBrowseProductRecord(models.Model):
    member = models.ForeignKey(Member)
    owner_id = models.IntegerField(default=0)  #商家id
    product_id = models.IntegerField(default=0)  #商品id
    referer = models.CharField(max_length=256, default='')  #从哪个页面过来的
    title = models.CharField(max_length=256, default='')  #页面标题
    url = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)

    class Meta(object):
        db_table = 'member_browse_product_record'
        verbose_name = '会员浏览商品详情记录'
        verbose_name_plural = '会员浏览商品详情记录'
Esempio n. 12
0
class TemplateGlobalNavbar(models.Model):
    '''
	全局导航
	'''
    owner = models.ForeignKey(User,
                              related_name='owned_template_global_navbar')
    is_enable = models.BooleanField(default=True, verbose_name='是否启用')
    content = models.TextField(default='', verbose_name='navbar的json字符串')
    created_at = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")
    updated_at = models.DateTimeField(auto_now=True, verbose_name="修改时间")

    class Meta(object):
        db_table = 'template_global_navbar'
Esempio n. 13
0
class Member(models.Model):
    """
	会员
	"""
    token = models.CharField(max_length=255)
    webapp_id = models.CharField(max_length=16)
    username_hexstr = models.CharField(max_length=2048,
                                       verbose_name='会员名称的hex str')
    user_icon = models.CharField(max_length=1024,
                                 verbose_name='会员头像',
                                 default='')
    integral = models.IntegerField(default=0, verbose_name='积分')
    created_at = models.DateTimeField(auto_now_add=True)
    grade = models.ForeignKey(MemberGrade)
    experience = models.IntegerField(default=0, verbose_name='经验值')
    remarks_name = models.CharField(max_length=32,
                                    verbose_name='备注名',
                                    default='')
    remarks_extra = models.TextField(verbose_name='备注信息', default='')
    last_visit_time = models.DateTimeField(auto_now_add=True)
    last_message_id = models.IntegerField(default=-1, verbose_name="最近一条消息id")
    session_id = models.IntegerField(default=-1, verbose_name="会话id")
    is_for_test = models.BooleanField(default=False)
    is_subscribed = models.BooleanField(default=True)
    friend_count = models.IntegerField(default=0)  #好友数量
    factor = models.FloatField(default=0.00)  #社会因子
    source = models.IntegerField(default=-1)  #会员来源
    is_for_buy_test = models.BooleanField(default=False)
    update_time = models.DateTimeField(
        default=datetime.now())  #会员信息更新时间 2014-11-11
    pay_money = models.FloatField(default=0.0)
    pay_times = models.IntegerField(default=0)
    last_pay_time = models.DateTimeField(default=None)  #会员信息更新时间 2014-11-11
    unit_price = models.FloatField(default=0.0)  #ke dan jia
    city = models.CharField(default='', max_length=50)
    province = models.CharField(default='', max_length=50)
    country = models.CharField(default='', max_length=50)
    sex = models.IntegerField(default=0, verbose_name='性别')
    status = models.IntegerField(default=1)
    purchase_frequency = models.IntegerField(default=0)  # 30天购买次数
    cancel_subscribe_time = models.DateTimeField(blank=True,
                                                 null=True,
                                                 default=None,
                                                 verbose_name="取消关注时间")
    fans_count = models.IntegerField(default=0)  #粉丝数量

    class Meta(object):
        db_table = 'member_member'

    def __unicode__(self):
        return u'<member: %s %s>' % (self.webapp_id, self.token)
Esempio n. 14
0
class Message(models.Model):
    modules = models.IntegerField(default=MODULES['DATA'])  # 选择模块
    message_type = models.BooleanField(default=True)  # 默认消息中心
    title = models.CharField(max_length=128)  # 标题名
    file_url = models.CharField(max_length=256)  # 上传文件地址
    content = models.TextField()  # 内容
    file_type = models.BooleanField(default=True)  # 上传类型(默认word)
    created_at = models.DateTimeField(auto_now_add=True)  # 添加时间
    owner = models.ForeignKey(User)

    class Meta(object):
        db_table = 'message_message'
        verbose_name = '系统消息'
        verbose_name_plural = '系统消息'
Esempio n. 15
0
class ChannelDistributionQrcodeSettings(models.Model):
    """
	渠道分销二维码
	"""
    owner = models.ForeignKey(User)  # 所有者?
    bing_member_title = models.CharField(max_length=512)  # 关联会员头衔
    award_prize_info = models.TextField(
        default='{"id":-1,"name":"no-prize"}')  # 关注奖励,奖品信息
    reply_type = models.IntegerField(default=0)  # 扫码后行为:0普通关注一致,1回复文字,2回复图文
    reply_detail = models.TextField(default='')  # 回复文字, 当reply_type为1时有效
    reply_material_id = models.IntegerField(
        default=0)  # 图文id,reply_type为2时有效 ?
    coupon_ids = models.TextField()  # 配置过的优惠券id集合
    bing_member_id = models.IntegerField(default=0)  # 关联会员:创建二维码时选择关联的会员的ID
    return_standard = models.IntegerField(default=0)  # 多少天结算标准
    group_id = models.IntegerField(default=-1)  # 会员分组
    distribution_rewards = models.BooleanField(
        default=False)  # 分销奖励 False:没有 True:佣金
    commission_rate = models.IntegerField()  # 佣金返现率
    minimun_return_rate = models.IntegerField()  # 最低返现折扣
    commission_return_standard = models.DecimalField(
        max_digits=65, decimal_places=2)  # 佣金返现标准
    ticket = models.CharField(default='', max_length=256)  # ticket

    bing_member_count = models.IntegerField(default=0)  # 关注数量,该二维码下边的关注人数
    total_transaction_volume = models.DecimalField(
        max_digits=65, decimal_places=2, default=0)  # 总交易额:二维码自创建以来的所有交易额
    total_return = models.DecimalField(
        max_digits=65, decimal_places=2,
        default=0)  # 返现总额: 二维码所有的返现总额, 只包含已经体现的金额
    will_return_reward = models.DecimalField(max_digits=65,
                                             decimal_places=2,
                                             default=0)  # 实施奖励
    created_at = models.DateTimeField(auto_now_add=True)  # 添加时间

    class Meta:
        db_table = 'market_tool_channel_distribution_qrcode_setting'
Esempio n. 16
0
class MarketToolsTemplateMessageDetail(models.Model):
    owner = models.ForeignKey(User, related_name='owner')
    template_message = models.ForeignKey(MarketToolsTemplateMessage)
    industry = models.IntegerField(default=INDUSTR_IT)
    template_id = models.TextField()  #模版id
    first_text = models.CharField(max_length=1024)
    remark_text = models.CharField(max_length=1024)
    type = models.IntegerField(default=MAJOR_INDUSTRY_TYPE)
    status = models.IntegerField(default=0)
    created_at = models.DateTimeField(auto_now_add=True)  #添加时间

    class Meta(object):
        db_table = 'market_tools_template_message_detail'
        verbose_name = '模板消息详情'
        verbose_name_plural = 'market_tools_template_message_detail'
        ordering = ['-status', 'type']
Esempio n. 17
0
class ExpressHasOrderPushStatus(models.Model):
    order_id = models.IntegerField(verbose_name="订单id,以后暂不使用", default=-1)
    express_company_name = models.CharField(max_length=50,
                                            default='',
                                            verbose_name="快递公司名称")
    express_number = models.CharField(max_length=100, verbose_name="快递单号")
    status = models.IntegerField(default=EXPRESS_PULL_NOT_STATUS,
                                 verbose_name="状态")
    send_count = models.IntegerField(default=0, verbose_name="发送订阅请求次数")
    receive_count = models.IntegerField(default=0, verbose_name="接收推送请求次数")
    created_at = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")
    # 重新订阅的依据信息(当重推后,该两字段的信息,将被清空)
    # abort_receive_at: 第一次接收 失败信息的时间
    # abort_receive_message 第一次接收 "status":"abort"而且message中包含“3天”关键字的数据
    abort_receive_at = models.DateTimeField(null=True,
                                            blank=True,
                                            verbose_name="接收信息时间")
    abort_receive_message = models.TextField(verbose_name="接收的信息")
    service_type = models.IntegerField(default=0, verbose_name="快递服务类型")
    webapp_id = models.CharField(max_length=20,
                                 default='',
                                 db_index=True,
                                 verbose_name='店铺ID')  # webapp

    class Meta(object):
        db_table = 'tool_express_has_order_push_status'
        verbose_name = '订单的推送状态'
        verbose_name_plural = '订单的推送状态'

    @staticmethod
    def get(id):
        express = ExpressHasOrderPushStatus.objects.filter(id=id)
        if express.count() > 0:
            return express[0]
        else:
            return None

    @staticmethod
    def get_by_order(order):
        express = ExpressHasOrderPushStatus.objects.filter(
            express_company_name=order.express_company_name,
            express_number=order.express_number)
        if express.count() > 0:
            return express[0]
        else:
            return None
Esempio n. 18
0
class News(models.Model):
    material = models.ForeignKey(Material)  #素材外键
    display_index = models.IntegerField()  #显示顺序
    title = models.CharField(max_length=40)  #标题
    summary = models.CharField(max_length=120)  #摘要
    text = models.TextField(default='')  #正文
    pic_url = models.CharField(max_length=1024)  #图片url地址
    url = models.CharField(max_length=1024)  #目标地址
    link_target = models.CharField(max_length=2048)  #链接目标
    is_active = models.BooleanField(default=True)  #是否启用
    created_at = models.DateTimeField(auto_now_add=True)  #添加时间
    is_show_cover_pic = models.BooleanField(default=True,
                                            verbose_name=u"是否在详情中显示封面图片")

    class Meta(object):
        db_table = 'material_news'
        verbose_name = '图文消息'
        verbose_name_plural = '图文消息'
Esempio n. 19
0
class WeixinMpUser(models.Model):
    """
    微信公众账号
    """
    owner = models.ForeignKey(User, unique=True)
    username = models.CharField(default='', max_length=50)  #用户名
    password = models.CharField(default='', max_length=50)  #密码
    is_certified = models.BooleanField(default=False, verbose_name='是否进行过微信认证')
    is_service = models.BooleanField(default=False, verbose_name='是否为服务号')
    is_active = models.BooleanField(default=True)  #公众号是否有效
    aeskey = models.IntegerField(default=AESKEY_NORMAL)
    encode_aeskey = models.TextField(default='')
    created_at = models.DateTimeField(auto_now=True)  #公众号添加的时间

    def __unicode__(self):
        return self.username

    class Meta(object):
        db_table = 'account_weixin_mp_user'
Esempio n. 20
0
class Svsmon(models.Model):
    """
	对运行时产生的log信息的封装
	"""
    task_id = models.CharField(blank=False, max_length=64, db_index=True)
    pid = models.IntegerField()
    status = models.IntegerField(default=TASK_STATUS, db_index=True)
    task = models.CharField(max_length=512)
    task_name = models.CharField(null=True, max_length=512)  #
    message = models.TextField()
    create_time = models.DateTimeField(auto_now_add=True)

    #TODO 根据数据量是否需要使用mongodb?
    #是否需要针对不同级别进行分开存储?
    # def save(self, *args, **kwargs):
    # 	self.save_base(*args, **kwargs)

    class Meta(object):
        verbose_name = 'Celery日志'
        verbose_name_plural = 'Celery日志'
Esempio n. 21
0
class MemberGrade(models.Model):
    """
    会员等级
    """
    webapp_id = models.CharField(max_length=16, verbose_name='所关联的app id')
    name = models.TextField()
    is_auto_upgrade = models.BooleanField(default=False, verbose_name='是否凭经验值自动升级')
    upgrade_lower_bound = models.IntegerField(default=0, verbose_name='该等级的经验值下限')
    shop_discount = models.IntegerField(default=100, verbose_name='购物折扣')
    is_default_grade = models.BooleanField(default=False)
    usable_integral_percentage_in_order = models.IntegerField(verbose_name='一笔交易中能使用的多少积分', default=100) # -1 无限制
    pay_money = models.FloatField(default=0.00)
    pay_times = models.IntegerField(default=0)
    integral = models.IntegerField(default=0)
    created_at = models.DateTimeField(auto_now_add=True)

    class Meta(object):
        db_table = 'member_grade'

    def __unicode__(self):
        return u"{}-{}".format(self.webapp_id, self.name)
Esempio n. 22
0
class RedEnvelopeRule(models.Model):
    """
	红包规则
	"""
    owner = models.ForeignKey(User)
    name = models.CharField(max_length=128)
    coupon_rule_id = models.IntegerField(default=0)
    limit_time = models.BooleanField(default=False)
    start_time = models.DateTimeField(default=DEFAULT_DATETIME)
    end_time = models.DateTimeField(default=DEFAULT_DATETIME)
    limit_order_money = models.DecimalField(default=0.0)
    use_info = models.TextField()
    share_title = models.CharField(max_length=256)
    share_pic = models.CharField(max_length=256)
    is_delete = models.BooleanField(default=False)
    status = models.BooleanField(default=False)  #状态默认关闭
    receive_method = models.BooleanField(default=False)  #领取方式默认为下单领取
    order_index = models.IntegerField(default=0)  #记录排序,置后为-1
    created_at = models.DateTimeField(auto_now_add=True)

    class Meta(object):
        db_table = 'mall_red_envelope_rule'