Ejemplo n.º 1
0
 def _data_deal(cls, args):
     # 数据处理类,需重写
     data = {}
     keys = r.keys(pattern='group_category:*')
     for key in keys:
         data[key.split(':')[-1]] = r.hgetall(key)
     return data
Ejemplo n.º 2
0
 def __code_count(cls, phone):
     # 验证有效验证码数量是否超过最大限制,最多有3个有效验证码同时存在
     code_count = len(
         r.keys(pattern=cls.key_set + ':' + str(phone) + ':[0123456789]*'))
     if code_count > 2:
         return False
     else:
         return True
Ejemplo n.º 3
0
 def _data_deal(cls, args):
     good_id = args['good_id']
     data = {}
     group = []
     pattern = cls.set + '*:' + good_id
     good = r.hgetall(r.keys(pattern=pattern)[0])
     if good:
         keys = r.keys(pattern=cls.group_info + good_id + ':*')
         for k in keys:
             group_info = r.hgetall(k)
             group.append(group_info)
         data = {
             'group_price': good['group_price'],
             'group': group,
             'people_count': good['people_count']
         }
     return data
Ejemplo n.º 4
0
 def group_valid(cls, group_id, good_id, phone):
     # 验证团购订单是否合法
     group = r.hgetall(cls.set + good_id + ":" + group_id)
     if group:
         if r.keys(pattern='group_good:*' + ':' +
                   group['good']) and group['phone'] != phone:
             return True
     else:
         return False
Ejemplo n.º 5
0
 def _data_deal(cls, args):
     # 数据处理类,需重写
     data = {}
     page = args['page']
     if page:
         keys = r.keys(pattern='home_good:*')
         for key in keys[(int(page) - 1) * 10:int(page) * 10]:
             data[key.split(':')[1]] = r.hgetall(key)
     return data
Ejemplo n.º 6
0
 def _data_deal(cls, args, user):
     data = {}
     # 根据用户最近加车商品推荐
     good_list = []
     cart = mongo[cls.collect_set].find_one({'phoneNum': user['phoneNum']})
     cart_list = cart['cart_list'] if cart else {}
     if cart_list:
         # 通过最近加车的5件商品筛选
         cart_list = list(cart_list.keys())[-5:]
         for i in cart_list:
             temp = mongo[cls.category_set].find_one({'item_id': i})
             category = temp['sub_category_id'] if temp else 0
             if category != 0:
                 good_list = good_list + list(
                     mongo[cls.category_set].aggregate([{
                         "$match": {
                             'sub_category_id': category
                         }
                     }, {
                         '$sample': {
                             'size': 5
                         }
                     }]))
         if len(good_list) > 10:
             # 随机取10个商品
             good_list = random.sample(good_list, 10)
         else:
             # 不足10个商品,使用首页上新商品补至10个
             home_good = r.keys(pattern='home_good:*')
             goods = random.sample(home_good, 10 - len(good_list))
             for key in goods:
                 good_list.append(r.hgetall(key))
     else:
         home_good = r.keys(pattern='home_good:*')
         goods = random.sample(home_good, 10)
         for key in goods:
             good_list.append(r.hgetall(key))
     for good in good_list:
         good['_id'] = str(good['_id']) if good['_id'] else ''
         for k in good.keys():
             if not good[k]:
                 good[k] = ''
         data[str(good['item_id'])] = good
     return data
Ejemplo n.º 7
0
 def _data_deal(cls, args):
     # 数据处理类,需重写
     data = {}
     group_id = args['group_id']
     page = args['page']
     count = args['count']
     if group_id:
         pattern = 'group_good:' + group_id + ':*'
     else:
         pattern = 'group_good:*'
     keys = r.keys(pattern=pattern)
     for key in keys[(int(page) - 1) * 10:int(page) * 10]:
         data[key.split(':')[-1]] = r.hgetall(key)
     return data
Ejemplo n.º 8
0
 def __last_time(cls, phone):
     # 验证发送时间间隔,每个号码发送时间间隔为1分钟
     code_keys = r.keys(pattern=cls.key_set + ':' + str(phone) +
                        ':[0123456789]*')
     now = int(time.time())
     s = 1
     if code_keys:
         for key in code_keys:
             code = r.hgetall(key)
             if now - int(code['timestamp']) > 60:
                 pass
             else:
                 s = 0
     if s == 1:
         return True
     else:
         return False
Ejemplo n.º 9
0
    def _data_deal(cls, args, user):
        data = {}
        good_list = []
        history_key = cls.history_set + ':' + user['phoneNum']
        history_list = r.lrange(history_key, 0, 5)
        for item in history_list:
            item_id = json.loads(item.replace("'", '"'))['good_id']
            temp = mongo[cls.category_set].find_one({'item_id': item_id})
            category = temp['sub_category_id'] if temp else 0
            if category != 0:
                good_list = good_list + list(mongo[cls.category_set].aggregate(
                    [{
                        "$match": {
                            'sub_category_id': category
                        }
                    }, {
                        '$sample': {
                            'size': 5
                        }
                    }]))

        if len(good_list) > 10:
            # 随机取10个商品
            good_list = random.sample(good_list, 10)
        else:
            home_good = r.keys(pattern='home_good:*')
            goods = random.sample(home_good, 10 - len(good_list))
            for key in goods:
                good_list.append(r.hgetall(key))

        for good in good_list:
            good['_id'] = str(good['_id'])
            for k in good.keys():
                if not good[k]:
                    good[k] = ''
            data[str(good['item_id'])] = good
        return data
Ejemplo n.º 10
0
 def verify_message(cls, phone, code):
     # 验证短信验证码是否正确
     if not cls.__wrong_count(phone):
         return 3
     else:
         code_keys = r.keys(pattern=cls.key_set + ':' + str(phone) +
                            ':[0123456789]*')
         for key in code_keys:
             code_val = r.hgetall(key)
             if str(code) == code_val['num']:
                 r.delete(key)
                 return 0
             else:
                 code_val['wrong_count'] = str(
                     int(code_val['wrong_count']) + 1)
                 if int(code_val['wrong_count']) >= 3:
                     r.delete(key)
                     fail_key = cls.key_set + ':' + str(
                         phone) + ':fail_count'
                     fail_count = int(r.get(fail_key))\
                         if(r.get(fail_key)) else 0
                     r.set(fail_key, str(fail_count + 1))
                 else:
                     r.hmset(key, code_val)
Ejemplo n.º 11
0
 def _del_cache(cls):
     # 删除现有活动
     if r.keys(pattern='home_act:*'):
         r.delete(*r.keys(pattern='home_act:*'))
Ejemplo n.º 12
0
 def _del_cache(cls):
     # 删除现有活动
     if r.keys(pattern='lottery:*'):
         r.delete(*r.keys(pattern='lottery:*'))
Ejemplo n.º 13
0
 def _del_cache(cls):
     # 删除现有分类
     if r.keys(pattern='category:*'):
         r.delete(*r.keys(pattern='category:*'))
Ejemplo n.º 14
0
 def good_valid(cls, good_id):
     # 验证商品是否为团购商品
     if r.keys(pattern='group_good:*' + ':' + good_id):
         return True
Ejemplo n.º 15
0
 def _del_cache(cls):
     # 删除现有分类
     if r.keys(pattern='mine:*'):
         r.delete(*r.keys(pattern='mine:*'))
Ejemplo n.º 16
0
 def _del_cache(cls):
     # 删除现有商品
     if r.keys(pattern='group_good:*'):
         r.delete(*r.keys(pattern='group_good:*'))