示例#1
0
class AccountBaseHandler(BaseHandler):
    """
    用户管理微信号的base handler
    用户进入/account/{aid}/*的页面,保证获取的access_token可用
    """

    account = None
    fans_manager = None
    message_manager = None
    article_manager = None
    account_manager = None
    menu_manager = None
    image_article_manager = None
    auto_manager = None
    form_manager = None
    card_manager = None
    impact_manager = None
    auto_keyword_manager = None
    site_manager = None
    event_manager = None
    template_manager = None
    canyin_manager = None

    @authenticated
    @asynchronous
    def prepare(self):
        self.fans_manager = FansManager(self.db)
        self.message_manager = MessageManager(self.db)
        self.article_manager = ArticleManager(self.db)
        self.account_manager = AccountManager(self.db)
        self.menu_manager = MenuManager(self.db)
        self.image_article_manager = ImageArticleManager(self.db)
        self.auto_manager = AutoManager(self.db)
        self.form_manager = FormManager(self.db)
        self.card_manager = CardManager(self.db)
        self.impact_manager = ImpactManager(self.db)
        self.auto_keyword_manager = AutoKeywordManager(self.db)
        self.site_manager = SiteManager(self.db)
        self.event_manager = EventManager(self.db)
        self.template_manager = TemplateManager(self.db)
        self.canyin_manager = CanyinManager(self.db)

        aid = self.request.uri.split('/')[2]
        if not aid:
            raise HTTPError(404)
        account = self.account_manager.get_account_by_aid(aid)
        if not account:
            raise HTTPError(404)
        if account.user_id != self.current_user.id:
            raise HTTPError(403)
        if self.get_cookie('aid', None) != account.aid:
            self.set_cookie('aid', aid)
        if not wei_api.access_token_available(account):
            wei_api.get_access_token(account, self.account_manager.update_account_token)
            self.account = self.account_manager.get_account_by_aid(aid)
        AccountBaseHandler.account = account
示例#2
0
    def prepare(self):
        self.fans_manager = FansManager(self.db)
        self.message_manager = MessageManager(self.db)
        self.article_manager = ArticleManager(self.db)
        self.account_manager = AccountManager(self.db)
        self.menu_manager = MenuManager(self.db)
        self.image_article_manager = ImageArticleManager(self.db)
        self.auto_manager = AutoManager(self.db)
        self.form_manager = FormManager(self.db)
        self.card_manager = CardManager(self.db)
        self.impact_manager = ImpactManager(self.db)
        self.auto_keyword_manager = AutoKeywordManager(self.db)
        self.site_manager = SiteManager(self.db)
        self.event_manager = EventManager(self.db)
        self.template_manager = TemplateManager(self.db)
        self.canyin_manager = CanyinManager(self.db)

        aid = self.request.uri.split('/')[2]
        if not aid:
            raise HTTPError(404)
        account = self.account_manager.get_account_by_aid(aid)
        if not account:
            raise HTTPError(404)
        if account.user_id != self.current_user.id:
            raise HTTPError(403)
        if self.get_cookie('aid', None) != account.aid:
            self.set_cookie('aid', aid)
        if not wei_api.access_token_available(account):
            wei_api.get_access_token(account, self.account_manager.update_account_token)
            self.account = self.account_manager.get_account_by_aid(aid)
        AccountBaseHandler.account = account
示例#3
0
class EventBaseHandler(BaseHandler):
    """
    用户管理微信号的base handler
    用户进入/account/{aid}/*的页面,保证获取的access_token可用
    """

    account = None
    fans_manager = None
    account_manager = None
    card_manager = None
    event_manager = None

    TYPE_SCRATCH = 'scratch'
    TYPE_LOTTERY = 'lottery'

    def prepare(self):
        self.fans_manager = FansManager(self.db)
        self.account_manager = AccountManager(self.db)
        self.card_manager = CardManager(self.db)
        self.event_manager = EventManager(self.db)

        aid = self.request.uri.split('/')[2]
        if not aid:
            raise HTTPError(404)
        self.account = self.account_manager.get_account_by_aid(aid)
示例#4
0
    def prepare(self):
        self.fans_manager = FansManager(self.db)
        self.account_manager = AccountManager(self.db)
        self.card_manager = CardManager(self.db)
        self.event_manager = EventManager(self.db)

        aid = self.request.uri.split('/')[2]
        if not aid:
            raise HTTPError(404)
        self.account = self.account_manager.get_account_by_aid(aid)
示例#5
0
 def prepare(self):
     self.fans_manager = FansManager(self.db)
     self.card_manager = CardManager(self.db)
     self.account_manager = AccountManager(self.db)
示例#6
0
class CardHandler(BaseHandler):
    """会员卡服务"""

    fans_manager = None
    card_manager = None
    account_manager = None

    def prepare(self):
        self.fans_manager = FansManager(self.db)
        self.card_manager = CardManager(self.db)
        self.account_manager = AccountManager(self.db)

    def get(self, cid):
        """
        用户访问会员卡页面
        1. 如果已经有会员卡,返回信息
        2. 如果没有
            1. 如果会员卡允许自动创建,则自动创建
            2. 如果不允许自动创建,按照要求填写表单
        """
        card = self.card_manager.get_card_by_cid(cid)
        openid = self.get_argument('i', None)
        if not openid or not card:
            raise HTTPError(404)
        fans = self.fans_manager.get_fans_by_openid(openid)
        if not fans:
            pass
        account = self.account_manager.get_account_by_aid(card.aid)
        card_member = self.card_manager.get_user_card_info(cid, openid)
        rule = self.card_manager.get_account_card_rule(card.aid)
        if card_member:
            historys = self.card_manager.get_history_by_openid(card.aid, openid)
            self.render('front/card.html', member=card_member, card=card, account=account, rule=rule, historys=historys)
            return
        if card.register == 1:
            # 自动注册
            card_id = card.id
            num = key_util.generate_digits_starts_with(str(card_id), 7)
            num = str(card_id) + num
            self.card_manager.save_member(card.aid, cid, num, openid, '', '', '')
            card_member = self.card_manager.get_user_card_info(cid, openid)
            self.render('front/card.html', member=card_member, account=account, card=card)
            return
        else:
            # 返回注册卡片页面
            m = self.get_argument('m', None)
            self.render('front/card_reg.html', card=card, openid=openid, account=account, m=m)

    def post(self, *args, **kwargs):
        """提交领取会员卡的表单"""
        result = {'r': 0}
        openid = self.get_argument('openid', None)
        mobile = self.get_argument('mobile', None)
        address = self.get_argument('address', None)
        sex = self.get_argument('sex', None)
        birthday = self.get_argument('birthday', None)
        name = self.get_argument('name', '')
        if not openid:
            result['error'] = '出了点错误,重新注册吧~'
            self.write(result)
            return
        card = self.card_manager.get_card_by_cid(args[0])
        if not card:
            result['error'] = '你来到了一个不存在的页面~'
            self.write(result)
            return
        if card.mobile and not mobile:
            result['error'] = '手机号一定要填哦~'
            self.write(result)
            return
        if card.address and not address:
            result['error'] = '地址一定要填哦~'
            self.write(result)
            return
        if card.sex and not sex:
            result['error'] = '性别一定要选哦~'
            self.write(result)
            return
        if card.birthday and not birthday:
            result['error'] = '生日一定要填哦~'
            self.write(result)
            return
        card_id = card.id
        num = key_util.generate_digits_starts_with(str(card_id), 7)
        num = str(card_id) + num
        self.card_manager.save_member(card.aid, card.cid, num, openid, name, mobile, address, sex, birthday)
        result['r'] = 1
        result['openid'] = openid
        self.write(result)
        return