Exemplo n.º 1
0
    def get(self):
        node_id = self.get_argument('node_id',None)
        day_code = self.get_argument('day_code',None)
        opr_nodes = self.get_opr_nodes()
        if not day_code:
            day_code = utils.get_currdate()
        begin = datetime.datetime.strptime("%s 00:00:00" % day_code, "%Y-%m-%d %H:%M:%S")
        end = datetime.datetime.strptime("%s 23:59:59" % day_code, "%Y-%m-%d %H:%M:%S")
        begin_time, end_time = time.mktime(begin.timetuple()), time.mktime(end.timetuple())
        _query = self.db.query(models.TrFlowStat)

        if node_id:
            _query = _query.filter(models.TrFlowStat.node_id == node_id)
        else:
            _query = _query.filter(models.TrFlowStat.node_id.in_([i.id for i in opr_nodes]))

        _query = _query.filter(
            models.TrFlowStat.stat_time >= begin_time,
            models.TrFlowStat.stat_time <= end_time,
        )

        in_data = {"name": u"上行流量", "data": []}
        out_data = {"name": u"下行流量", "data": []}

        for q in _query:
            _stat_time = q.stat_time * 1000
            in_data['data'].append([_stat_time, float(utils.kb2mb(q.input_total))])
            out_data['data'].append([_stat_time, float(utils.kb2mb(q.output_total))])

        self.render_json(code=0, data=[in_data, out_data])
Exemplo n.º 2
0
 def get(self):
     product_id = self.get_argument("product_id")
     form = product_forms.product_update_form()
     product = self.db.query(models.TrProduct).get(product_id)
     form.fill(product)
     form.product_policy_name.set_value(product_forms.product_policy[product.product_policy])
     form.fee_times.set_value(utils.sec2hour(product.fee_times))
     form.fee_flows.set_value(utils.kb2mb(product.fee_flows))
     form.input_max_limit.set_value(utils.bps2mbps(product.input_max_limit))
     form.output_max_limit.set_value(utils.bps2mbps(product.output_max_limit))
     form.fee_price.set_value(utils.fen2yuan(product.fee_price))
     return self.render("product_form.html", form=form)
Exemplo n.º 3
0
 def get(self):
     product_id = self.get_argument("product_id")
     form = product_forms.product_update_form()
     product = self.db.query(models.TrProduct).get(product_id)
     form.fill(product)
     form.product_policy_name.set_value(
         product_forms.product_policy[product.product_policy])
     form.fee_times.set_value(utils.sec2hour(product.fee_times))
     form.fee_flows.set_value(utils.kb2mb(product.fee_flows))
     form.input_max_limit.set_value(utils.bps2mbps(product.input_max_limit))
     form.output_max_limit.set_value(
         utils.bps2mbps(product.output_max_limit))
     form.fee_price.set_value(utils.fen2yuan(product.fee_price))
     return self.render("product_form.html", form=form)
Exemplo n.º 4
0
    def get(self):
        node_id = self.get_argument('node_id', None)
        day_code = self.get_argument('day_code', None)
        opr_nodes = self.get_opr_nodes()
        if not day_code:
            day_code = utils.get_currdate()
        begin = datetime.datetime.strptime("%s 00:00:00" % day_code,
                                           "%Y-%m-%d %H:%M:%S")
        end = datetime.datetime.strptime("%s 23:59:59" % day_code,
                                         "%Y-%m-%d %H:%M:%S")
        begin_time, end_time = time.mktime(begin.timetuple()), time.mktime(
            end.timetuple())
        _query = self.db.query(models.TrFlowStat)

        if node_id:
            _query = _query.filter(models.TrFlowStat.node_id == node_id)
        else:
            _query = _query.filter(
                models.TrFlowStat.node_id.in_([i.id for i in opr_nodes]))

        _query = _query.filter(
            models.TrFlowStat.stat_time >= begin_time,
            models.TrFlowStat.stat_time <= end_time,
        )

        in_data = {"name": u"上行流量", "data": []}
        out_data = {"name": u"下行流量", "data": []}

        for q in _query:
            _stat_time = q.stat_time * 1000
            in_data['data'].append(
                [_stat_time, float(utils.kb2mb(q.input_total))])
            out_data['data'].append(
                [_stat_time, float(utils.kb2mb(q.output_total))])

        self.render_json(code=0, data=[in_data, out_data])
Exemplo n.º 5
0
            account.status = 1
            account.expire_date = new_expire_date
            if product.product_policy == BOTimes:
                account.time_length += product.fee_times
            elif product.product_policy == BOFlows:
                account.flow_length += product.fee_flows

            if product.product_policy in (PPMonth,BOMonth):
                order.order_desc = u"用户续费,续费前到期:%s,续费后到期:%s, 赠送天数: %s" % (
                    old_expire_date, account.expire_date, giftdays)
            elif product.product_policy == BOTimes:
                order.order_desc = u"用户续费,续费前时长:%s小时,续费后时长:%s小时" % (
                    utils.sec2hour(old_time_length), utils.sec2hour(account.time_length))
            elif product.product_policy == BOFlows:
                order.order_desc = u"用户续费,续费前流量:%sMB,续费后流量:%sMB" % (
                    utils.kb2mb(old_flow_length), utils.kb2mb(account.flow_length))

            self.db.add(order)
            self.add_oplog(order.order_desc)
            self.db.commit()
            self.cache.delete("renew_order_%s"%order_id)
            self.render_success()
            dispatch.pub(ACCOUNT_NEXT_EVENT,order.account_number, async=True)
            dispatch.pub(CACHE_DELETE_EVENT,account_cache_key(account.account_number), async=True)
        except Exception as err:
            self.render_unknow(err)
            import traceback
            traceback.print_exc()


Exemplo n.º 6
0
            account.expire_date = new_expire_date
            if product.product_policy == BOTimes:
                account.time_length += product.fee_times
            elif product.product_policy == BOFlows:
                account.flow_length += product.fee_flows

            if product.product_policy in (PPMonth, BOMonth):
                order.order_desc = u"用户续费,续费前到期:%s,续费后到期:%s, 赠送天数: %s" % (
                    old_expire_date, account.expire_date, giftdays)
            elif product.product_policy == BOTimes:
                order.order_desc = u"用户续费,续费前时长:%s小时,续费后时长:%s小时" % (
                    utils.sec2hour(old_time_length),
                    utils.sec2hour(account.time_length))
            elif product.product_policy == BOFlows:
                order.order_desc = u"用户续费,续费前流量:%sMB,续费后流量:%sMB" % (
                    utils.kb2mb(old_flow_length),
                    utils.kb2mb(account.flow_length))

            self.db.add(order)
            self.add_oplog(order.order_desc)
            self.db.commit()
            self.cache.delete("renew_order_%s" % order_id)
            self.render_success()
            dispatch.pub(ACCOUNT_NEXT_EVENT, order.account_number, async=True)
            dispatch.pub(CACHE_DELETE_EVENT,
                         account_cache_key(account.account_number),
                         async=True)
        except Exception as err:
            self.render_unknow(err)
            import traceback
            traceback.print_exc()
Exemplo n.º 7
0
    def post(self):
        node_id = self.get_argument('node_id', None)
        realname = self.get_argument('realname', None)
        idcard = self.get_argument('idcard', None)
        mobile = self.get_argument('mobile', None)
        user_name = self.get_argument('user_name', None)
        status = self.get_argument('status', None)
        product_id = self.get_argument('product_id', None)
        address = self.get_argument('address', None)
        expire_days = self.get_argument('expire_days', None)
        opr_nodes = self.get_opr_nodes()
        _query = self.db.query(
            models.TrCustomer,
            models.TrAccount,
            models.TrProduct.product_name,
            models.TrNode.node_desc
        ).filter(
            models.TrProduct.id == models.TrAccount.product_id,
            models.TrCustomer.customer_id == models.TrAccount.customer_id,
            models.TrNode.id == models.TrCustomer.node_id
        )

        _now = datetime.datetime.now()

        if idcard:
            _query = _query.filter(models.TrCustomer.idcard == idcard)
        if mobile:
            _query = _query.filter(models.TrCustomer.mobile == mobile)
        if node_id:
            _query = _query.filter(models.TrCustomer.node_id == node_id)
        else:
            _query = _query.filter(models.TrCustomer.node_id.in_([i.id for i in opr_nodes]))
        if realname:
            _query = _query.filter(models.TrCustomer.realname.like('%' + realname + '%'))
        if user_name:
            _query = _query.filter(models.TrAccount.account_number.like('%' + user_name + '%'))

        #用户状态判断
        if status:
            if status == '4':
                _query = _query.filter(models.TrAccount.expire_date <= _now.strftime("%Y-%m-%d"))
            elif status == '1':
                _query = _query.filter(
                    models.TrAccount.status == status,
                    models.TrAccount.expire_date >= _now.strftime("%Y-%m-%d")
                )
            else:
                _query = _query.filter(models.TrAccount.status == status)

        if product_id:
            _query = _query.filter(models.TrAccount.product_id == product_id)
        if address:
            _query = _query.filter(models.TrCustomer.address.like('%' + address + '%'))
        if expire_days:
            _days = int(expire_days)
            td = datetime.timedelta(days=_days)
            edate = (_now + td).strftime("%Y-%m-%d")
            _query = _query.filter(models.TrAccount.expire_date <= edate)
            _query = _query.filter(models.TrAccount.expire_date >= _now.strftime("%Y-%m-%d"))

        if self.request.path == '/admin/customer':
            return self.render("customer_list.html",
                          page_data=self.get_page_data(_query),
                          node_list=opr_nodes,
                          products=self.db.query(models.TrProduct),
                          **self.get_params())
        elif self.request.path == "/admin/customer/export":
            data = Dataset()
            data.append((
                u'区域', u'姓名', u'证件号', u'邮箱', u'联系电话', u'地址',
                u'用户账号', u'密码', u'资费', u'过期时间', u'余额(元)',
                u'时长(小时)', u'流量(MB)', u'并发数', u'ip地址', u'状态', u'创建时间'
            ))
            for i, j, _product_name, _node_desc in _query:
                data.append((
                    _node_desc, i.realname, i.idcard, i.email, i.mobile, i.address,
                    j.account_number, self.aes.decrypt(j.password), _product_name,
                    j.expire_date, utils.fen2yuan(j.balance),
                    utils.sec2hour(j.time_length), utils.kb2mb(j.flow_length), j.user_concur_number, j.ip_address,
                    customer_forms.user_state[j.status], j.create_time
                ))
            name = u"RADIUS-USER-" + datetime.datetime.now().strftime("%Y%m%d-%H%M%S") + ".xls"
            self.export_file(name, data)