コード例 #1
0
ファイル: comm.py プロジェクト: TianJin85/mall
def del_comm():
    """
    删除商品信息
    :return:
    """
    id = request.args["id"]
    if id:
        comm = Commodity.del_comm(id)
        if comm:
            return Success(msg="删除商品成功")
        else:
            return Failed(msg="此商品不存在")
    else:
        return Failed(msg="请传入商品id")
コード例 #2
0
ファイル: user.py プロジェクト: TianJin85/mall
def login():

    data = eval(str(request.data, encoding='utf-8'))
    form = Login(ImmutableMultiDict(data))

    if form.validate():     # 数据校验
        user = db.session.query(UserInfo).filter(UserInfo.nickName == form.nickName.data).first()
        if user and user.check_password(form.passWord.data):
            identity['uid'] = user.id
            access_token = create_access_token(identity=identity)
            refresh_token = create_refresh_token(identity=identity)
            return {"access_token": access_token, "refresh_token": refresh_token}
        else:
            return Failed(msg="获取token失败")
    else:
        return Failed(msg=form.errors)
コード例 #3
0
 def place(self):
     if not self.mid or not self.products:
         raise Failed(msg='缺少会员ID和商品参数, 下单失败')
     with db.auto_commit():
         self.o_products = self._get_o_products()
         order_snap = self._snap_order()
         res = self._create_order(order_snap)
     return res
コード例 #4
0
ファイル: user.py プロジェクト: vonfly/lin-cms-flask
def change_password():
    form = ChangePasswordForm().validate_for_api()
    user = get_current_user()
    ok = user.change_password(form.old_password.data, form.new_password.data)
    if ok:
        db.session.commit()
        return Success(msg='密码修改成功')
    else:
        return Failed(msg='修改密码失败')
コード例 #5
0
ファイル: user.py プロジェクト: TianJin85/mall
    def register_user(cls, form):
        nickName = UserInfo.query.filter_by(
            nickName=form.nickName.data).first()
        if nickName:
            raise Failed("名称以被使用")

        phoneCode = UserInfo.query.filter_by(
            phoneCode=form.phoneCode.data).first()

        if phoneCode:
            raise Failed("用户以注册")

        user = UserInfo()
        user.password = form.passWord.data
        UserInfo.create(nickName=form.nickName.data,
                        _passWord=user._passWord,
                        phoneCode=form.phoneCode.data,
                        commit=True)
コード例 #6
0
def bind_mini():
    form = BindMiniForm().validate_for_api()
    user = manager.user_model.verify(form.username.data, form.password.data)

    appid = current_app.config.get('APP_ID')
    secret = current_app.config.get('APP_SECRET')
    code = form.code.data
    url = 'https://api.weixin.qq.com/sns/jscode2session?appid=' + appid + '&secret=' + secret + '&js_code=' + code + \
          '&grant_type=authorization_code'
    res = requests.get(url)
    if 'openid' not in res.json().keys():
        return Failed('小程序用户异常')
    openid = res.json()['openid']
    if manager.user_model.query.filter_by(openid=openid).first():
        return Failed('小程序已经与其他账号绑定')
    if user.openid:
        return Failed('当前账号已经被其他用户绑定')
    with db.auto_commit():
        user.openid = openid

    return Success('绑定成功')
コード例 #7
0
ファイル: comm.py プロジェクト: TianJin85/mall
def add_comm():
    """
    添加商品信息
    :return:
    """
    data = eval(str(request.data, encoding='utf-8'))
    form = CommForm(ImmutableMultiDict(data))
    if form.validate():
        Commodity.insert_comm(data)     # 添加商品到数据库
        return Success(msg="添加商品成功")
    else:
        return Failed(msg=form.errors)
コード例 #8
0
ファイル: comm.py プロジェクト: TianJin85/mall
def put_comm():
    """
    更新商品信息
    :return:
    """
    data = eval(str(request.data, encoding='utf-8'))
    form = PutCommForm(ImmutableMultiDict(data))
    if form.validate():
        if Commodity.update_comm(data):
            return Success(msg="更新商品成功")

    else:
        return Failed(msg=form.errors)
コード例 #9
0
def upload_to_ali():
    image = request.files.get('image', None)
    if not image:
        raise ParameterException(msg='没有找到图片')
    if image and allowed_file(image.filename):
        url = upload_image_bytes(image.filename, image)
        if url:
            res = {'url': url}
            with db.auto_commit():
                exist = Image.get(url=url)
                if not exist:
                    data = {'from': LocalOrCloud.CLOUD.value, 'url': url}
                    one = Image.create(**data)
                    db.session.flush()
                    res['id'] = one.id
                else:
                    res['id'] = exist.id
            return jsonify(res)
    return Failed(msg='上传图片失败,请检查图片路径')
コード例 #10
0
def upload_to_ali():
    image = request.files.get("image", None)
    if not image:
        raise ParameterError("没有找到图片")
    if image and allowed_file(image.filename):
        url = upload_image_bytes(image.filename, image)
        if url:
            res = {"url": url}
            with db.auto_commit():
                exist = OSS.get(url=url)
                if not exist:
                    data = {"url": url}
                    one = OSS.create(**data)
                    db.session.flush()
                    res["id"] = one.id
                else:
                    res["id"] = exist.id
            return jsonify(res)
    return Failed("上传图片失败,请检查图片路径")
コード例 #11
0
def login_mini():
    form = LoginMiniForm().validate_for_api()
    appid = current_app.config.get('APP_ID')
    secret = current_app.config.get('APP_SECRET')
    code = form.code.data
    url = 'https://api.weixin.qq.com/sns/jscode2session?appid=' + appid + '&secret=' + secret + '&js_code=' + code + \
          '&grant_type=authorization_code'
    res = requests.get(url)
    if 'openid' not in res.json().keys():
        return Failed('小程序用户异常')
    openid = res.json()['openid']
    user = manager.user_model.query.filter_by(openid=openid).first_or_404()
    # 此处不能用装饰器记录日志
    Log.create_log(
        message=f'{user.username}小程序登陆成功获取了令牌',
        user_id=user.id, user_name=user.username,
        status_code=200, method='post', path='/cms/user/login/mini',
        authority='无', commit=True
    )
    access_token, refresh_token = get_tokens(user)
    return json_res(access_token=access_token, refresh_token=refresh_token)
コード例 #12
0
 def _get_product_status(self, product, o_product):
     total_price = (o_product.price * product['count']).quantize(
         Decimal('0.00'))
     old_price = o_product.old_price if o_product.old_price else o_product.price
     old_total_price = (old_price * product['count']).quantize(
         Decimal('0.00'))
     p_status = dict()
     p_status['id'] = o_product.id
     p_status['name'] = o_product.name
     p_status['count'] = product['count']
     p_status['image'] = o_product.image
     p_status['price_str'] = o_product.price_str
     p_status['old_price_str'] = o_product.old_price_str
     p_status['total_price_str'] = str(total_price)
     p_status['old_total_price_str'] = str(old_total_price)
     have_stock = o_product.stock >= product['count']
     if not have_stock:
         raise Failed(msg='{}的库存不足, 下单失败'.format(o_product.name))
     stock = o_product.stock - product['count']
     o_product.update(stock=stock)
     return p_status
コード例 #13
0
ファイル: user.py プロジェクト: aodic/jw-flask
def login():
    form = LoginForm().validate_for_api()
    # 校对验证码
    if current_app.config.get("LOGIN_CAPTCHA"):
        tag = request.headers.get("tag")
        secret_key = current_app.config.get("SECRET_KEY")
        serializer = JWSSerializer(secret_key)
        if form.captcha.data != serializer.loads(tag):
            raise Failed("验证码校验失败")

    user = manager.user_model.verify(form.username.data, form.password.data)
    # 用户未登录,此处不能用装饰器记录日志
    Log.create_log(
        message=f"{user.username}登录成功获取了令牌",
        user_id=user.id,
        username=user.username,
        status_code=200,
        method="post",
        path="/cms/user/login",
        permission="",
        commit=True,
    )
    access_token, refresh_token = get_tokens(user)
    return {"access_token": access_token, "refresh_token": refresh_token}