class NginxCoupon(object): def __init__(self, cf): self.act_id = cf.getint('coupon', 'act_id') self.page_size = cf.getint('online_db', 'page_size') self.date_period = [cf.getint('coupon', 'start_date'), cf.getint('coupon', 'end_date')] conf = dict() conf['host'] = cf.get('online_db', 'host') conf['user'] = cf.get('online_db', 'user') conf['passwd'] = cf.get('online_db', 'passwd') conf['name'] = cf.get('online_db', 'name') conf['port'] = cf.getint('online_db', 'port') conf['charset'] = cf.get('online_db', 'charset') self.dao = MysqlDao(conf) self.hits_conf = dict() self.hits_conf[30] = cf.getfloat('coupon', 'hits_30') self.hits_conf[50] = cf.getfloat('coupon', 'hits_50') self.hits_conf[100] = cf.getfloat('coupon', 'hits_100') self.hits_conf[300] = cf.getfloat('coupon', 'hits_300') self.hits_conf[500] = cf.getfloat('coupon', 'hits_500') def run(self): start = 0 user_hits = self.dao.select_hits_by_actid(self.act_id, start, self.page_size) unique_key = ['user_id', 'act_id'] hits_key = self.hits_conf.keys() hits_key.sort() user_totle = 0 while user_hits: user_totle += len(user_hits) for e in user_hits: if e['hits'] < hits_key[0]: continue db_dict = dict() db_dict['user_id'] = e['user_id'] db_dict['act_id'] = self.act_id db_dict['effective_date'] = self.date_period[0] db_dict['expiry_date'] = self.date_period[1] db_dict['status'] = 0 db_dict['is_deleted'] = 'N' index = -1 for k in hits_key[::-1]: if e['hits'] >= k: break index -= 1 db_dict['face_value'] = self.hits_conf[hits_key[index]] self.dao.insert_or_update_template('db_hd_coupon', db_dict, unique_key) start += self.page_size user_hits = self.dao.select_hits_by_actid(self.act_id, start, self.page_size) print '插入用户优惠劵条目: %d 张' % user_totle
def stat_result(self): conf = dict() conf['host'] = self.cf.get('online_db', 'host') conf['user'] = self.cf.get('online_db', 'user') conf['passwd'] = self.cf.get('online_db', 'passwd') conf['name'] = self.cf.get('online_db', 'name') conf['charset'] = self.cf.get('online_db', 'charset') conf['port'] = self.cf.getint('online_db', 'port') dao = MysqlDao(conf) unique_key = ['user_id', 'act_id'] for user_id, hits in self.user_hits.items(): db_dict = dict() db_dict['user_id'] = user_id db_dict['act_id'] = self.act_id db_dict['hits'] = hits db_dict['is_deleted'] = 'N' dao.insert_or_update_template('db_hd_share_hits', db_dict, unique_key) print '统计nginx log得到%d位用户的点击量' % len(self.user_hits)