コード例 #1
0
def user_charge(user_id, charge_num):
    try:

        # 检查支付账户余额是否满足此次充值
        payment_account = SysUser().get_one8id(settings.PaymentAccount)
        if payment_account.balance - charge_num < 0:
            # 支付账户余额不足
            return False

        # 更新支付账户余额
        res = SysUser().update(
            where={"id": payment_account.id},
            data={"balance": payment_account.balance - Decimal(charge_num)})
        if not res:
            return False

        # 更新待充值账户余额
        user = SysUser().get_one8id(user_id)
        res = SysUser().update(
            where={"id": user_id},
            data={"balance": user.balance + Decimal(charge_num)})
        if not res:
            return False

        return True
    except:
        return False
コード例 #2
0
    def get(self, *args, **kwargs):
        try:
            user_id = self.get_args("id", "")
            if not user_id:
                self.send_fail_json("id不能为空")
                return

            user_model = SysUser()
            res = user_model.delete(where={"id": user_id})
            if not res:
                self.send_fail_json("删除失败")
                return

            write_log("'{}'删除了一个用户(ID为:{})".format(self.user["id"], user_id),
                      LOG_TYPE_OPERATE)
            self.send_ok_json("")
        except Exception as ex:
            write_log("{}.{} raise exception, ex={}".format(
                self.__class__.__name__,
                sys._getframe().f_code.co_name, repr(ex)))
            self.send_fail_json("系统错误,稍会儿再试")
コード例 #3
0
def main():
    data = dict(
        role_id=1,
        name="admin",
        pwd=hashlib.md5("000000{}".format(
            settings.PLATFORM_USER_PASSWORD_SECRET).encode(
                "utf-8")).hexdigest(),
        enable=True,
        comments="超管",
        create_time=datetime.datetime.now(),
    )

    SysUser().add(data=data)
コード例 #4
0
    def post(self, *args, **kwargs):
        """
        执行充值
        :param args:
        :param kwargs:
        :return:
        """
        try:
            user_id = self.get_args("user_id", "")
            if is_empty(user_id):
                self.send_fail_json("用户id不能为空")
                return

            # 充值数量
            charge_num = self.get_args("charge_num")
            if is_empty(charge_num):
                # 充值数量不能为空
                self.send_fail_json("充值数量不能为空")
                return
            charge_num = Decimal(charge_num)

            # 查询支付账户余额是否满足此次充值
            payment_account = SysUser().get_one8id(settings.PaymentAccount)
            if payment_account.balance - charge_num < 0:
                # 支付账户余额不足
                self.send_fail_json("支付账户余额不足")
                return

            # 用户充值
            res = db_engine.transaction(dbengine_transaction,
                                        func=user_charge,
                                        user_id=user_id,
                                        charge_num=charge_num)
            if not res:
                self.send_fail_json("充值失败")
                return

            write_log(
                "'{}'给用户(ID为:{})充值了{} {}".format(
                    self.user["id"],
                    user_id,
                    charge_num,
                    settings.COIN_NAME,
                ), LOG_TYPE_OPERATE)
            self.send_ok_json("")
        except Exception as ex:
            write_log("{}.{} raise exception, ex={}".format(
                self.__class__.__name__,
                sys._getframe().f_code.co_name, repr(ex)))
            self.send_fail_json("系统错误,稍会儿再试")
コード例 #5
0
ファイル: base.py プロジェクト: nightqiuhua/MarketingManager
 def get_template_namespace(self):
     """ 添加额外的模板变量, 默认有:
      handler=self,
      request=self.request,
      current_user=self.current_user,
      locale=self.locale,
       _=self.locale.translate,
      static_url=self.static_url,
      xsrf_form_html=self.xsrf_form_html,
      reverse_url=self.reverse_url
     """
     user = SysUser().get_one8id(self.user["id"]) if self.user else dict()
     add_names = dict(
         filter_none=myfilter.filter_none,
         json_loads=myjson.loads,
         settings=settings,
         user=user,
     )
     name = super().get_template_namespace()
     name.update(add_names)
     return name
コード例 #6
0
    def get(self, *args, **kwargs):
        """
        加载修改用户表单页
        :param args:
        :param kwargs:
        :return:
        """
        # 获取用户
        user_id = self.get_args("id", "")
        if is_empty(user_id):
            self.send_fail_json("用户id不能为空")
            return
        user = SysUser().get_one8id(user_id)

        # 获取角色
        roles = Role().get_all()

        self.render("system/user-add.html",
                    one=user,
                    roles=roles,
                    user_init_pwd=settings.PLATFORM_USER_INITIAL_PWD)
コード例 #7
0
def create_orders(user={}, order_data={}):
    """
    创建订单
    :param user:
    :param order_data:
    :return:
    """
    now = datetime.now()

    amount = Decimal(order_data["product_numbers"]) * Decimal(
        order_data["product_price"])
    balance_after = Decimal(user["balance"]) - amount

    if not user or not order_data or balance_after < 0:
        return False
    try:
        # 第一步:更新用户账户余额信息
        now_timestamp = int(time.time() * (10**6))
        res = SysUser().update({"id": user["id"]}, {"balance": balance_after})
        if not res:
            return False

        # 第二步:创建订单
        # 更新订单字典
        order_data.update(create_time=now, order_number=now_timestamp)
        # 实例化订单实体
        orders = get_orders_obj(order_data["product_types"])
        order_res = orders.add(order_data)
        if not order_res:
            return False

        # 第三步:插入日志到用户消费日志表
        consume_log_data = {
            "user_id":
            user["id"],
            "amount":
            amount,
            "create_time":
            now,
            "comments":
            "购买“{}”产品,订单号为:{}".format(order_data["product_name"],
                                      now_timestamp)
        }
        log_res = SysUserConsumeLog().add(consume_log_data)
        if not log_res:
            return False

        # 第四步:将订单信息插入到消息队列rabbitmq中
        # 消息队列名称
        rabbit_exchange_name = get_rabbitmq_exchange_name(
            product_types=order_data["product_types"])
        # 待插入到消息队列中的数据
        rabbit_msg = dict(product_types=order_data["product_types"],
                          product_numbers=order_data["product_numbers"],
                          weibo_url=order_data["weibo_url"],
                          order_id=order_res.lastrowid,
                          comment_id=order_data.get("comment_id", ""))
        # 插入消息到消息队列
        res_status = ExchangeRabbitMQ(
            rabbitmq_host=settings.RABBITMQ_HOST,
            rabbitmq_port=settings.RABBITMQ_PORT,
            user_name=settings.RABBITMQ_USER,
            user_pwd=settings.RABBITMQ_PWD,
            virtual_host=settings.RABBITMQ_VIRTUAL_HOST).sender(
                body=myjson.dumps(rabbit_msg),
                exchange_name=rabbit_exchange_name)
        if not res_status:
            return False

        return True
    except:
        return False
コード例 #8
0
    def post(self, *args, **kwargs):
        """
        执行修改用户
        :param args:
        :param kwargs:
        :return:
        """
        try:
            user_id = self.get_args("user_id", "")
            if is_empty(user_id):
                self.send_fail_json("用户id不能为空")
                return

            # 用户角色
            role_id = self.get_args("role_id")
            if is_empty(role_id):
                # 角色不能为空
                self.send_fail_json("角色不能为空")
                return

            # 用户名
            name = self.get_args("name")
            if is_empty(name):
                # 用户名不能为空
                self.send_fail_json("用户名不能为空")
                return

            # 登录密码
            pwd = self.md5_password(
                self.get_args("pwd", "") if self.
                get_args("pwd", "") else settings.PLATFORM_USER_INITIAL_PWD)

            # 是否启用
            enable = self.get_args("enable", "0")

            data = dict(
                role_id=role_id,
                name=name.lower(),
                pwd=pwd,
                enable=enable,
                update_time=datetime.now(),
            )

            # 父级id
            fid = self.get_args("fid", "")
            if fid:
                data["fid"] = fid

            # 备注
            comments = self.get_args("comments")
            if comments:
                data["comments"] = comments

            res = SysUser().update(where={"id": user_id}, data=data)
            if not res:
                self.send_fail_json("更新失败")
                return

            write_log("'{}'修改了一个用户(ID为:{})".format(self.user["id"], user_id),
                      LOG_TYPE_OPERATE)
            self.send_ok_json("")
        except Exception as ex:
            write_log("{}.{} raise exception, ex={}".format(
                self.__class__.__name__,
                sys._getframe().f_code.co_name, repr(ex)))
            self.send_fail_json("系统错误,稍会儿再试")
コード例 #9
0
    def post(self, *args, **kwargs):
        try:
            # 产品id
            product_id = self.get_args("product_id")
            if is_empty(product_id):
                self.send_fail_json("产品id不能为空")
                return

            product = Product().get_one8id(product_id)

            # 微博地址
            weibo_url = self.get_args("weibo_url")
            res = re.match(r'^https://weibo\.com/\S*', weibo_url)
            if res is None:
                self.send_fail_json("微博地址不正确")
                return

            # 产品数量
            product_numbers = self.get_args("amount")
            res = re.match(r'^\d+$', str(product_numbers))
            if res is None:
                self.send_fail_json("数量必须为整数")
                return
            # 数量处理,乘以精度
            product_numbers = int(product_numbers) * settings.PRODUCT_BUY_PRECISION

            data = dict(
                user_id=self.user["id"],
                product_id=product_id,
                product_name=product.name,
                product_types=self.product_types,
                product_price=product.price,
                product_numbers=product_numbers,
                weibo_url=weibo_url,
            )

            if product.types == PRODUCT_TYPES_WEIBO_COMMENT_LIKE:
                # 如果是微博评论赞,则必须要一个评论id
                comment_id = self.get_args("comment_id", "")
                if not comment_id:
                    self.send_fail_json("评论id不能为空")
                    return
                data.update(comment_id=comment_id)

            # 备注
            comments = self.get_args("comments")
            if not is_empty(comments):
                data.update(comments=comments)

            # 查看用户账户余额是否足够支撑本次订单
            user = SysUser().get_one8id(self.user["id"])
            if (user.balance - product_numbers * product.price) < 0:
                self.send_fail_json("创建订单失败,账户余额不足")
                return

            # 创建订单
            res = db_engine.transaction(
                dbengine_transaction,
                func=create_orders,
                user=user,
                order_data=data)
            if not res:
                self.send_fail_json("创建订单失败")
                return

            write_log("'{}'添加了一个订单(product_id:{},产品名为:{},数量为:{},单价为:{})".format(
                user["id"], product_id, product.name, product_numbers, product.price),
                LOG_TYPE_OPERATE)
            self.send_ok_json("创建订单成功,可去\"个人中心->我的订单\"中查看")
        except Exception as ex:
            write_log("{}.{} raise exception, ex={}".format(
                self.__class__.__name__,
                sys._getframe().f_code.co_name,
                repr(ex)
            ))
            self.send_fail_json("系统错误,稍会儿再试")