Пример #1
0
    def get(self, aid):
        """访问抽奖页面"""
        account = self.account_manager.get_account_by_aid(aid)
        if not account:
            raise HTTPError(404)
        scratch = self.event_manager.get_event(aid, self.TYPE_SCRATCH)
        if not scratch:
            raise HTTPError(404)
        openid = self.get_argument('i', None)
        fans = self.fans_manager.get_fans_by_openid(openid)
        if not fans:
            raise HTTPError('无效的用户')
        member = self.card_manager.get_card_member_by_openid(aid, openid)
        if not member and scratch.member:
            self.redirect('/card/%s?i=%s&m=%s' % (self.card_manager.get_card_by_aid(aid).cid, openid, u'注册为会员后参与活动'))
            return
        num = self.event_manager.get_event_num_by_openid(openid, aid, self.TYPE_SCRATCH)
        hit_num = self.event_manager.get_hit_event_num_by_openid(openid, aid, self.TYPE_SCRATCH)
        # 抽奖活动持续总时间
        current = int(time.time())
        hit = 0
        hit_prize = ''
        sn = 0
        _id = 0

        if not hit_num and num < scratch.times and scratch.start < current < scratch.end and scratch.active:
            # 去抽奖
            length = scratch.length
            num_sum = scratch.num_sum
            # 抽奖间隔
            offset = int(length) / int(num_sum)
            count_start = current - offset
            since = datetime.datetime.fromtimestamp(count_start)
            since_hit_num = self.event_manager.hit_num_since_date(aid, since, self.TYPE_SCRATCH)
            if not since_hit_num:
                # 之前的没被抽中,中奖
                sn = generate_digits(8)
                num_limit = [scratch.num_1, scratch.num_2, scratch.num_3]
                for i in range(3, 0, -1):
                    if num_limit[i - 1] > self.event_manager.hit_num_by_pirze(aid, i, self.TYPE_SCRATCH):
                        hit = 1
                        if i == 3:
                            hit_prize = '三等奖'
                        elif i == 2:
                            hit_prize = '二等奖'
                        elif i == 1:
                            hit_prize = '一等奖'
                        _id = int(self.event_manager.save_event_result(aid, openid, i, sn, self.TYPE_SCRATCH))
                        break
            else:
                self.event_manager.save_event_result(aid, openid, 0, 0, self.TYPE_SCRATCH)
        if not sn:
            self.event_manager.save_event_result(aid, openid, 0, 0, self.TYPE_SCRATCH)
        self.render('event/scratch.html', scratch=scratch, account=account, openid=openid, num=num, hit_num=hit_num,
                    hit=hit, hit_prize=hit_prize, sn=sn, id=_id)
Пример #2
0
 def _process_image_message(self, account, message, path):
     """接收用户发送的图片消息"""
     aid = account.aid
     openid = message['FromUserName']
     self.message_manager.receive_image_message(message, aid)
     auto = self.auto_manager.get_image_auto(aid)
     if auto:
         # 回复验证码
         code = key_util.generate_digits(8)
         if self.auto_manager.has_code(aid, openid):
             content = auto.re_content.split('&&')[2]
         elif self.auto_manager.count_code_response(aid) >= auto.num:
             content = auto.re_content.split('&&')[1]
         else:
             content = auto.re_content.split('&&')[0].replace('#code#', code)
             self.auto_manager.save_code_response(openid, aid, code)
         return message_util.text_response_to_message(content, message, path, account.wei_account)
Пример #3
0
 def post(self, *args, **kwargs):
     aid = args[0]
     account = self.account_manager.get_account_by_aid(aid)
     if not account:
         self.write({'r': 0, 'e': 'invalid account'})
         return
     openid = self.get_argument('openid', None)
     fans = self.fans_manager.get_fans_by_openid_aid(openid, args[0])
     if not fans:
         self.write({'r': 0, 'e': 'invalid user'})
         return
     event = self.event_manager.get_event(aid, self.TYPE_LOTTERY)
     if not event:
         raise HTTPError(404)
     hit_num = self.event_manager.get_hit_event_num_by_openid(openid, aid, self.TYPE_LOTTERY)
     # 抽奖活动持续总时间
     current = int(time.time())
     hit = 0
     hit_class = 0
     hit_prize = ''
     sn = 0
     _id = 0
     num = self.event_manager.get_event_num_by_openid(openid, aid, self.TYPE_LOTTERY)
     if hit_num:
         result = {'r': 0, 'e': u'已经中过奖啦~'}
         self.write(result)
         return
     if num >= event.times:
         result = {'r': 0, 'e': u'超过次数限制啦~'}
         self.write(result)
         return
     if not hit_num and num < event.times and event.start < current < event.end and event.active:
         # 去抽奖
         length = event.length
         num_sum = event.num_sum
         # 抽奖间隔
         offset = int(length) / int(num_sum)
         count_start = current - offset
         since = datetime.datetime.fromtimestamp(count_start)
         since_hit_num = self.event_manager.hit_num_since_date(aid, since, self.TYPE_LOTTERY)
         if not since_hit_num:
             # 之前的没被抽中,中奖
             sn = generate_digits(8)
             num_limit = [event.num_1, event.num_2, event.num_3]
             for i in range(3, 0, -1):
                 if num_limit[i - 1] > self.event_manager.hit_num_by_pirze(aid, i, self.TYPE_LOTTERY):
                     hit = 1
                     if i == 3:
                         hit_prize = '三等奖'
                         hit_class = 3
                     elif i == 2:
                         hit_prize = '二等奖'
                         hit_class = 2
                     elif i == 1:
                         hit_prize = '一等奖'
                         hit_class = 1
                     _id = int(self.event_manager.save_event_result(aid, openid, i, sn, self.TYPE_LOTTERY))
                     break
         else:
             self.event_manager.save_event_result(aid, openid, 0, 0, self.TYPE_LOTTERY)
     if not sn:
         self.event_manager.save_event_result(aid, openid, 0, 0, self.TYPE_LOTTERY)
     result = {'r': 1, 'hit': hit, 'id': _id, 'sn': sn, 'hit_prize': hit_prize, 'hit_num': hit_class}
     self.write(result)