Exemple #1
0
    def closeOrder(self, pay_order_id=0):
        if pay_order_id < 1:
            return False
        pay_order_info = PayOrder.query.filter_by(id=pay_order_id,
                                                  status=-8).first()
        if not pay_order_info:
            return False

        pay_order_items = PayOrderItem.query.filter_by(
            pay_order_id=pay_order_id).all()
        if pay_order_items:
            # 需要归还库存
            for item in pay_order_items:
                tmp_food_info = Food.query.filter_by(id=item.food_id).first()
                if tmp_food_info:
                    tmp_food_info.stock = tmp_food_info.stock + item.quantity
                    tmp_food_info.updated_time = geneTime()
                    db.session.add(tmp_food_info)
                    db.session.commit()
                    FoodService.setStockChangeLog(item.food_id, item.quantity,
                                                  "订单取消")

        pay_order_info.status = 0
        pay_order_info.updated_time = geneTime()
        db.session.add(pay_order_info)
        db.session.commit()
        return True
Exemple #2
0
    def getAccessToken(self):
        token = None
        token_info = OauthAccessToken.query.filter(OauthAccessToken.expired_time >= geneTime()).first()
        if token_info:
            token = token_info.access_token
            return token

        config_mina = app.config['MINA_APP']
        url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}" \
            .format(config_mina['appid'], config_mina['appkey'])

        r = requests.get(url=url)
        if r.status_code != 200 or not r.text:
            return token

        data = json.loads(r.text)
        now = datetime.datetime.now()
        date = now + datetime.timedelta(seconds=data['expires_in'] - 200)
        model_token = OauthAccessToken()
        model_token.access_token = data['access_token']
        model_token.expired_time = date.strftime("%Y-%m-%d %H:%M:%S")
        model_token.created_time = geneTime()
        db.session.add(model_token)
        db.session.commit()

        return data['access_token']
Exemple #3
0
def cat_set():
    if request.method == 'GET':
        resp_data = {}
        req = request.args
        query = FoodCat.query
        id = req['id'] if 'id' in req else 0
        foodcat_info = None
        if id:
            foodcat_info = query.filter_by(id=id).first()
        resp_data['info'] = foodcat_info
        resp_data['current'] = 'set'
        return ops_render('food/cat_set.html', resp_data)
    resp = {'code': 200, 'msg': '成功', 'data': {}}
    req = request.values
    id = req['id'] if 'id' in req else 0
    name = req['name'] if 'name' in req else ''
    weight = int(req['weight']) if ('weight' in req
                                    and int(req['weight']) > 0) else 1

    if not weight:
        resp['code'] = -1
        resp['msg'] = '权重错误,重新输入'
        return jsonify(resp)
    food_info = FoodCat.query.filter_by(id=id).first()
    if food_info:
        foodcat_info = food_info
    else:
        foodcat_info = FoodCat()
        foodcat_info.created_time = geneTime()
    foodcat_info.name = name
    foodcat_info.weight = weight
    foodcat_info.updated_time = geneTime()
    db.session.add(foodcat_info)
    db.session.commit()
    return jsonify(resp)
Exemple #4
0
def myAddressOps():
    resp = {'code': 200, 'msg': '操作成功~', 'data': {}}
    req = request.values
    id = int(req['id']) if 'id' in req else 0
    act = req['act'] if 'act' in req else ''
    member_info = g.member_info

    if id < 1 or not member_info:
        resp['code'] = -1
        resp['msg'] = "系统繁忙,请稍后再试~~"
        return jsonify(resp)

    address_info = MemberAddress.query.filter_by(
        id=id, member_id=member_info.id).first()
    if not address_info:
        resp['code'] = -1
        resp['msg'] = "系统繁忙,请稍后再试~~"
        return jsonify(resp)

    if act == "del":
        address_info.status = 0
        address_info.updated_time = geneTime()
        db.session.add(address_info)
        db.session.commit()
    elif act == "default":
        MemberAddress.query.filter_by(member_id=member_info.id) \
            .update({'is_default': 0})
        address_info.is_default = 1
        address_info.updated_time = geneTime()
        db.session.add(address_info)
        db.session.commit()
    return jsonify(resp)
Exemple #5
0
 def uploadByFile(file):
     resp = {'code': 200, 'msg': '操作成功', 'data': {}}
     filename = secure_filename(file.filename)
     ext = filename.rsplit('.', 1)[1]
     # 取出上传文件的扩展名
     if ext not in app.config['UPLOAD']['ext']:
         resp['code'] = -1
         resp['msg'] = '不允许的扩展类型文件'
         return resp
     print('app.root_path',
           app.root_path)  # D:\Flask\weix + '/web/static/upload/'
     root_path = app.root_path + app.config['UPLOAD'][
         'prefix_path']  # 获取绝对路径
     file_dir = geneTime("%Y%m%d")
     save_dir = root_path + file_dir  # 上传一个时间的 目录
     if not os.path.exists(save_dir):
         os.mkdir(save_dir)
         os.chmod(save_dir,
                  stat.S_IRWXU | stat.S_IRGRP | stat.S_IRWXO)  # 赋权限
     file_name = str(uuid.uuid4()).replace('-', '') + '.' + ext
     file.save("{0}/{1}".format(save_dir, file_name))  # 调用此方法 可直接进行保存
     resp['data'] = {'file_key': file_dir + '/' + file_name}
     model_image = Image()
     model_image.file_key = file_dir + '/' + file_name
     model_image.created_time = geneTime()
     db.session.add(model_image)
     db.session.commit()
     return resp
Exemple #6
0
def login():
    resp = {'code': 200, 'msg': '操作成功', 'data': {}}
    req = request.values
    nickname = req['nickName'] if 'nickName' in req else ''
    sex = req['gender'] if 'gender' in req else 0
    avatar = req['avatarUrl'] if 'avatarUrl' in req else ''
    code = req['code'] if 'code' in req else ''
    if not code or len(code) < 1:
        resp['code'] = -1
        resp['msg'] = '需要code'
        return jsonify(resp)
    # url = 'https://api.weixin.qq.com/sns/jscode2session?appid={0}&secret={1}&js_code={2}&grant_type=authorization_code'.format(
    # 	app.config['MINA_APP']['appid'], app.config['MINA_APP']['appkey'], code)
    # r = requests.get(url)
    # content = r.text
    # # app.logger.info(content) # {"session_key":"VZQjfF1ebiHhyTHgm4LfFg==","openid":"omXHE5AoiI3c8AlSF2e8IGv7tdq8"}
    # res = json.loads(content)  # <class 'dict'>
    # openid = res['openid'] if 'openid' in res else ''
    # 封装了代码
    openid = MemberService.getWeChatOppenid(code)
    if not openid:
        resp['code'] = -1
        resp['msg'] = '授权失败1'
        return jsonify(resp)
    bind_info = OauthMemberBind.query.filter_by(openid=openid, type=1).first()
    if bind_info:
        # 如果根据 openid 能查到信息 则 用户已经授权过 直接返回用户信息即可
        member_info = Member.query.filter_by(id=bind_info.member_id).first()
        resp['code'] = 200
        resp['msg'] = '已经存在,无需重新授权'
        resp['data'] = {'nickname': member_info.nickname}
        return jsonify(resp)

    # 走到这一步 说明 用户 没授权过 则 新生产一个
    member_info = Member()
    member_info.nickname = nickname
    member_info.sex = sex
    member_info.avatar = avatar
    member_info.salt = MemberService.geneSalt()
    member_info.updated_time = member_info.created_time = geneTime()
    db.session.add(member_info)
    db.session.commit()

    model_bind = OauthMemberBind()
    model_bind.openid = openid
    model_bind.member_id = member_info.id
    model_bind.type = 1
    model_bind.updated_time = model_bind.created_time = geneTime()
    model_bind.extra = ''
    db.session.add(model_bind)
    db.session.commit()

    # resp['data'] = {'nickname': model_bind.openid}
    token = "{0}#{1}".format(MemberService.geneAuthCode(member_info),
                             member_info.id)
    resp['data'] = {"token": token}
    return jsonify(resp)
Exemple #7
0
def ops():
    resp = {'code': 200, 'msg': '用户修改成功', 'data': {}}
    res = request.values
    act = res['act'] if 'act' in res else ''
    id = res['id'] if 'id' in res else 0
    # 取出参数值 然后 开始 对 值的各种判断
    # 1 是否为空,2是否是指定内容 3给了id能否过滤出用户 是否存在
    # 判断了各种可能后 才执行后面真正的内容

    if not id:
        resp['code'] = -1
        resp['msg'] = '请选择要操作的账号~~'
        return jsonify(resp)
    if act not in ['remove', 'recover']:
        resp['code'] = -1
        resp['msg'] = '操作有误,请重试1~~'
        return jsonify(resp)

    user_info = User.query.filter_by(uid=id).first()
    if not user_info:
        resp['code'] = -1
        resp['msg'] = '操作有误,请重试2~~'
        return jsonify(resp)

    if act == 'remove':
        user_info.status = 0

    elif act == 'recover':
        user_info.status = 1

    user_info.updated_time = geneTime()
    db.session.add(user_info)
    db.session.commit()
    return jsonify(resp)
Exemple #8
0
def orderOps():
    resp = {'code': 200, 'msg': '操作成功~', 'data': {}}
    req = request.values
    member_info = g.member_info
    order_sn = req['order_sn'] if 'order_sn' in req else ''
    act = req['act'] if 'act' in req else ''
    pay_order_info = PayOrder.query.filter_by(
        order_sn=order_sn, member_id=member_info.id).first()
    if not pay_order_info:
        resp['code'] = -1
        resp['msg'] = "系统繁忙。请稍后再试~~"
        return jsonify(resp)

    if act == "cancel":
        target_pay = PayService()
        ret = target_pay.closeOrder(pay_order_id=pay_order_info.id)
        if not ret:
            resp['code'] = -1
            resp['msg'] = "系统繁忙。请稍后再试~~"
            return jsonify(resp)
    elif act == "confirm":
        pay_order_info.express_status = 1
        pay_order_info.updated_time = geneTime()
        db.session.add(pay_order_info)
        db.session.commit()

    return jsonify(resp)
Exemple #9
0
def ops():
    resp = {'code': 200, 'msg': '修改成功', 'data': {}}
    req = request.values

    act = req['act'] if 'act' in req else ''
    id = req['id'] if 'id' in req else 0
    if int(id) < 1:
        resp['code'] = -1
        resp['msg'] = '用户名错误,重新输入'
        return jsonify(resp)
    if act not in ['recover', 'remove']:
        resp['code'] = -1
        resp['msg'] = '操作有误,请重新操作'
        return jsonify(resp)
    query = Member.query
    member_info = query.filter_by(id=id).first()
    if not member_info:
        resp['code'] = -1
        resp['msg'] = '用户不存在'
        return jsonify(resp)
    if act == 'remove':
        member_info.status = 0
    elif act == 'recover':
        member_info.status = 1
    member_info.updated_time = geneTime()
    db.session.add(member_info)
    db.session.commit()
    return jsonify(resp)
Exemple #10
0
def ops():
    resp = {'code': 200, 'msg': '操作成功~~', 'data': {}}
    req = request.values

    id = req['id'] if 'id' in req else 0
    act = req['act'] if 'act' in req else ''

    if not id:
        resp['code'] = -1
        resp['msg'] = "请选择要操作的账号~~"
        return jsonify(resp)

    if act not in ['remove', 'recover']:
        resp['code'] = -1
        resp['msg'] = "操作有误,请重试~~"
        return jsonify(resp)

    food_info = Food.query.filter_by(id=id).first()
    if not food_info:
        resp['code'] = -1
        resp['msg'] = "指定美食不存在~~"
        return jsonify(resp)

    if act == "remove":
        food_info.status = 0
    elif act == "recover":
        food_info.status = 1

    food_info.updated_time = geneTime()
    db.session.add(food_info)
    db.session.commit()
    return jsonify(resp)
Exemple #11
0
    def setItems(member_id=0, food_id=0, number=0):
        if member_id < 1 or food_id < 1 or number < 1:
            return False
        cart_info = MemberCart.query.filter_by(food_id=food_id,
                                               member_id=member_id).first()
        if cart_info:
            model_cart = cart_info
        else:
            model_cart = MemberCart()
            model_cart.member_id = member_id
            model_cart.created_time = geneTime()

        model_cart.food_id = food_id
        model_cart.quantity = number
        model_cart.updated_time = geneTime()
        db.session.add(model_cart)
        db.session.commit()
        return True
Exemple #12
0
    def addQueue(queue_name, data=None):
        model_queue = QueueList()
        model_queue.queue_name = queue_name
        if data:
            model_queue.data = json.dumps(data)

        model_queue.created_time = model_queue.updated_time = geneTime()
        db.session.add(model_queue)
        db.session.commit()
        return True
Exemple #13
0
 def addErrorLog(content):
     target = AppErrorLog()
     target.referer_url = request.referrer
     target.target_url = request.url
     target.query_params = json.dumps(request.values.to_dict())
     target.content = content
     target.created_time = geneTime()
     db.session.add(target)
     db.session.commit()
     return True
Exemple #14
0
 def addAccessLog():
     target = AppAccessLog()
     target.referer_url = request.referrer
     target.target_url = request.url
     target.query_params = json.dumps(request.values.to_dict())
     target.ua = request.headers.get('user_agent')
     target.ip = request.remote_addr
     if 'current_user' in g and g.current_user is not None:
         target.uid = g.current_user.uid
     target.created_time = geneTime()
     db.session.add(target)
     db.session.commit()
     return True
Exemple #15
0
def memberShare():
    resp = {'code': 200, 'msg': '操作成功~', 'data': {}}
    req = request.values
    url = req['url'] if 'url' in req else ''
    member_info = g.member_info
    model_share = WxShareHistory()
    if member_info:
        model_share.member_id = member_info.id
    model_share.share_url = url
    model_share.created_time = geneTime()
    db.session.add(model_share)
    db.session.commit()
    return jsonify(resp)
Exemple #16
0
    def addPayCallbackData(self, pay_order_id=0, type='pay', data=''):
        model_callback = PayOrderCallbackData()
        model_callback.pay_order_id = pay_order_id
        if type == "pay":
            model_callback.pay_data = data
            model_callback.refund_data = ''
        else:
            model_callback.refund_data = data
            model_callback.pay_data = ''

        model_callback.created_time = model_callback.updated_time = geneTime()
        db.session.add(model_callback)
        db.session.commit()
        return True
Exemple #17
0
    def orderSuccess(self, pay_order_id=0, params=None):
        try:
            pay_order_info = PayOrder.query.filter_by(id=pay_order_id).first()
            if not pay_order_info or pay_order_info.status not in [-8, -7]:
                return True

            pay_order_info.pay_sn = params[
                'pay_sn'] if params and 'pay_sn' in params else ''
            pay_order_info.status = 1
            pay_order_info.express_status = -7
            pay_order_info.updated_time = geneTime()
            db.session.add(pay_order_info)

            pay_order_items = PayOrderItem.query.filter_by(
                pay_order_id=pay_order_id).all()
            for order_item in pay_order_items:
                tmp_model_sale_log = FoodSaleChangeLog()
                tmp_model_sale_log.food_id = order_item.food_id
                tmp_model_sale_log.quantity = order_item.quantity
                tmp_model_sale_log.price = order_item.price
                tmp_model_sale_log.member_id = order_item.member_id
                tmp_model_sale_log.created_time = geneTime()
                db.session.add(tmp_model_sale_log)

            db.session.commit()
        except Exception as e:
            db.session.rollback()
            print(e)
            return False

        # 加入通知队列,做消息提醒和
        QueueService.addQueue(
            "pay", {
                "member_id": pay_order_info.member_id,
                "pay_order_id": pay_order_info.id
            })
        return True
Exemple #18
0
    def setStockChangeLog( food_id = 0,quantity = 0,note = '' ):

        if food_id < 1:
            return False

        food_info = Food.query.filter_by( id = food_id ).first()
        if not food_info:
            return False

        model_stock_change = FoodStockChangeLog()
        model_stock_change.food_id = food_id
        model_stock_change.unit = quantity
        model_stock_change.total_stock = food_info.stock
        model_stock_change.note = note
        model_stock_change.created_time = geneTime()
        db.session.add(model_stock_change)
        db.session.commit()
        return True
Exemple #19
0
def set():
    if request.method == 'GET':
        resp_data = {}
        req = request.args
        query = Member.query
        id = req['id'] if 'id' in req else 0
        if int(id) < 1:
            return redirect(UrlManager.buildUrl('/member/index'))
        member_info = query.filter_by(id=id).first()
        if not member_info:
            return redirect(UrlManager.buildUrl('/member/index'))

        resp_data['member_info'] = member_info
        resp_data['current'] = 'set'
        return ops_render('member/set.html', resp_data)
    query = Member.query
    resp = {'code': 200, 'msg': '修改成功', 'data': {}}
    req = request.values
    nickname = req['nickname'] if 'nickname' in req else ''
    id = req['id'] if 'id' in req else 0
    if int(id) < 1:
        resp['code'] = -1
        resp['msg'] = '用户名错误,重新输入'
        return jsonify(resp)

    if not nickname:
        resp['code'] = -1
        resp['msg'] = '用户名错误,重新输入'
        return jsonify(resp)
    member_info = query.filter_by(id=id).first()
    if not member_info:
        resp['code'] = -1
        resp['msg'] = '用户不存在'
        return jsonify(resp)
    member_info.nickname = nickname
    member_info.updated_time = geneTime()
    db.session.add(member_info)
    db.session.commit()
    return jsonify(resp)
Exemple #20
0
    def createOrder(self, member_id, items=None, params=None):
        resp = {'code': 200, 'msg': '操作成功~', 'data': {}}
        pay_price = decimal.Decimal(0.00)
        continue_cnt = 0
        food_ids = []
        for item in items:
            if decimal.Decimal(item['price']) < 0:
                continue_cnt += 1
                continue

            pay_price = pay_price + decimal.Decimal(item['price']) * int(
                item['number'])
            food_ids.append(item['id'])

        if continue_cnt >= len(items):
            resp['code'] = -1
            resp['msg'] = '商品items为空~~'
            return resp

        yun_price = params[
            'yun_price'] if params and 'yun_price' in params else 0
        note = params['note'] if params and 'note' in params else ''
        express_address_id = params[
            'express_address_id'] if params and 'express_address_id' in params else 0
        express_info = params[
            'express_info'] if params and 'express_info' in params else {}
        print('express_info', type(express_info))
        yun_price = decimal.Decimal(yun_price)
        total_price = pay_price + yun_price
        try:
            # 为了防止并发库存出问题了,我们坐下selectfor update, 这里可以给大家演示下
            tmp_food_list = db.session.query(Food).filter(Food.id.in_(food_ids)) \
             .with_for_update().all()

            tmp_food_stock_mapping = {}
            for tmp_item in tmp_food_list:
                tmp_food_stock_mapping[tmp_item.id] = tmp_item.stock

            model_pay_order = PayOrder()
            model_pay_order.order_sn = self.geneOrderSn()
            model_pay_order.member_id = member_id
            model_pay_order.total_price = total_price
            model_pay_order.yun_price = yun_price
            model_pay_order.pay_price = pay_price
            model_pay_order.note = note
            model_pay_order.status = -8
            model_pay_order.express_status = -8
            model_pay_order.express_address_id = express_address_id
            model_pay_order.express_info = json.dumps(express_info)
            model_pay_order.updated_time = model_pay_order.created_time = geneTime(
            )
            db.session.add(model_pay_order)
            # db.session.flush()
            for item in items:
                tmp_left_stock = tmp_food_stock_mapping[item['id']]

                if decimal.Decimal(item['price']) < 0:
                    continue

                if int(item['number']) > int(tmp_left_stock):
                    raise Exception("您购买的这美食太火爆了,剩余:%s,你购买%s~~" %
                                    (tmp_left_stock, item['number']))

                tmp_ret = Food.query.filter_by(id=item['id']).update(
                    {"stock": int(tmp_left_stock) - int(item['number'])})
                if not tmp_ret:
                    raise Exception("下单失败请重新下单")

                tmp_pay_item = PayOrderItem()
                tmp_pay_item.pay_order_id = model_pay_order.id
                tmp_pay_item.member_id = member_id
                tmp_pay_item.quantity = item['number']
                tmp_pay_item.price = item['price']
                tmp_pay_item.food_id = item['id']
                tmp_pay_item.note = note
                tmp_pay_item.updated_time = tmp_pay_item.created_time = geneTime(
                )
                db.session.add(tmp_pay_item)
                # db.session.flush()

                FoodService.setStockChangeLog(item['id'], -item['number'],
                                              "在线购买")
            db.session.commit()
            resp['data'] = {
                'id': model_pay_order.id,
                'order_sn': model_pay_order.order_sn,
                'total_price': str(total_price)
            }
        except Exception as e:
            db.session.rollback()
            print(e)
            resp['code'] = -1
            resp['msg'] = "下单失败请重新下单"
            resp['msg'] = str(e)
            return resp
        return resp
Exemple #21
0
def myAddressSet():
    resp = {'code': 200, 'msg': '操作成功~', 'data': {}}
    req = request.values
    id = int(req['id']) if 'id' in req and req.get('id') != 'undefined' else 0
    nickname = req['nickname'] if 'nickname' in req else ''
    address = req['address'] if 'address' in req else ''
    mobile = req['mobile'] if 'mobile' in req else ''

    province_id = int(req['province_id']) if ('province_id' in req
                                              and req['province_id']) else 0
    province_str = req['province_str'] if 'province_str' in req else ''
    city_id = int(req['city_id']) if ('city_id' in req
                                      and req['city_id']) else 0
    city_str = req['city_str'] if 'city_str' in req else ''
    district_id = int(req['district_id']) if ('district_id' in req
                                              and req['district_id']) else 0
    district_str = req['district_str'] if 'district_str' in req else ''

    member_info = g.member_info

    if not nickname:
        resp['code'] = -1
        resp['msg'] = "请填写联系人姓名~~"
        return jsonify(resp)

    if not mobile:
        resp['code'] = -1
        resp['msg'] = "请填写手机号码~~"
        return jsonify(resp)

    if province_id < 1:
        resp['code'] = -1
        resp['msg'] = "请选择地区~~"
        return jsonify(resp)

    if city_id < 1:
        resp['code'] = -1
        resp['msg'] = "请选择地区~~"
        return jsonify(resp)

    if district_id < 1:
        district_str = ''

    if not address:
        resp['code'] = -1
        resp['msg'] = "请填写详细地址~~"
        return jsonify(resp)

    if not member_info:
        resp['code'] = -1
        resp['msg'] = "系统繁忙,请稍后再试~~"
        return jsonify(resp)

    address_info = MemberAddress.query.filter_by(
        id=id, member_id=member_info.id).first()
    if address_info:
        model_address = address_info
    else:
        MemberAddress.query.filter_by(is_default=1,
                                      member_id=member_info.id,
                                      status=1).update({'is_default': 0})
        model_address = MemberAddress()
        model_address.member_id = member_info.id
        model_address.is_default = 1
        model_address.created_time = geneTime()

    model_address.nickname = nickname
    model_address.mobile = mobile
    model_address.address = address
    model_address.province_id = province_id
    model_address.province_str = province_str
    model_address.city_id = city_id
    model_address.city_str = city_str
    model_address.area_id = district_id
    model_address.area_str = district_str
    model_address.updated_time = geneTime()
    db.session.add(model_address)
    db.session.commit()
    return jsonify(resp)
Exemple #22
0
def set():
    default_pwd = '******'
    if request.method == 'GET':
        resq_data = {}
        res = request.args
        uid = res.get('id', 0)
        user_info = None
        if uid:
            user_info = User.query.filter_by(uid=uid).first()
        resq_data['user_info'] = user_info
        return ops_render('account/set.html', resq_data)

    resp = {'code': 200, 'msg': '用户创建成功', 'data': {}}
    res = request.values
    nickname = res['nickname'] if 'nickname' in res else False
    if nickname is None or nickname:
        resp['code'] = -1
        resp['msg'] = '用户名错误,重新输入'
        return jsonify(resp), 400
    id = res['id'] if 'id' in res else 0
    mobile = res['mobile'] if 'mobile' in res else False
    if mobile is None or mobile:
        resp['code'] = -1
        resp['msg'] = 'email错误,重新输入'
        return jsonify(resp), 400
    email = res['email'] if 'email' in res else False
    if email is None or email:
        resp['code'] = -1
        resp['msg'] = 'email错误,重新输入'
        return jsonify(resp), 400
    login_name = res['login_name'] if 'login_name' in res else False
    if login_name is None or login_name:
        resp['code'] = -1
        resp['msg'] = '登录名错误,重新输入'
        return jsonify(resp), 400
    login_pwd = res['login_pwd'] if 'login_pwd' in res else False
    if login_pwd is None or login_pwd:
        resp['code'] = -1
        resp['msg'] = '登录名错误,重新输入'
        return jsonify(resp), 400
    has_in = User.query.filter(User.login_name == login_name, User.uid != id).first()
    if has_in:
        resp['code'] = -1
        resp['msg'] = '用户名已存在,重新输入'
        return jsonify(resp), 400
    model_user = User.query.filter_by(uid=id).first()
    if model_user:
        user_info = model_user
    else:
        user_info = User()
        user_info.created_time = geneTime()
        login_salt = UserService.geneSalt()
        user_info.login_salt = login_salt
    user_info.nickname = nickname
    user_info.mobile = mobile
    user_info.email = email
    user_info.login_name = login_name
    if default_pwd != login_pwd:
        user_info.login_pwd = UserService.genePwd(login_pwd, user_info.login_salt)
    user_info.updated_time = geneTime()
    db.session.add(user_info)
    db.session.commit()
    return jsonify(resp)
Exemple #23
0
def set():
    if request.method == "GET":
        resp_data = {}
        req = request.args
        id = int(req.get('id', 0))
        info = Food.query.filter_by(id=id).first()
        if info and info.status != 1:
            return redirect(UrlManager.buildUrl("/food/index"))

        cat_list = FoodCat.query.all()
        resp_data['info'] = info
        resp_data['cat_list'] = cat_list
        resp_data['current'] = 'index'
        return ops_render("food/set.html", resp_data)

    resp = {'code': 200, 'msg': '操作成功~~', 'data': {}}
    req = request.values
    id = int(req['id']) if 'id' in req and req['id'] else 0
    cat_id = int(req['cat_id']) if 'cat_id' in req else 0
    name = req['name'] if 'name' in req else ''
    price = req['price'] if 'price' in req else ''
    main_image = req['main_image'] if 'main_image' in req else ''
    summary = req['summary'] if 'summary' in req else ''
    stock = int(req['stock']) if 'stock' in req else ''
    tags = req['tags'] if 'tags' in req else ''

    if cat_id < 1:
        resp['code'] = -1
        resp['msg'] = "请选择分类~~"
        return jsonify(resp)

    if name is None or len(name) < 1:
        resp['code'] = -1
        resp['msg'] = "请输入符合规范的名称~~"
        return jsonify(resp)

    if not price or len(price) < 1:
        resp['code'] = -1
        resp['msg'] = "请输入符合规范的售卖价格~~"
        return jsonify(resp)

    price = Decimal(price).quantize(Decimal('0.00'))
    if price <= 0:
        resp['code'] = -1
        resp['msg'] = "请输入符合规范的售卖价格~~"
        return jsonify(resp)

    if main_image is None or len(main_image) < 3:
        resp['code'] = -1
        resp['msg'] = "请上传封面图~~"
        return jsonify(resp)

    if summary is None or len(summary) < 3:
        resp['code'] = -1
        resp['msg'] = "请输入图书描述,并不能少于10个字符~~"
        return jsonify(resp)

    if stock < 1:
        resp['code'] = -1
        resp['msg'] = "请输入符合规范的库存量~~"
        return jsonify(resp)

    if tags is None or len(tags) < 1:
        resp['code'] = -1
        resp['msg'] = "请输入标签,便于搜索~~"
        return jsonify(resp)

    food_info = Food.query.filter_by(id=id).first()
    before_stock = 0
    if food_info:
        model_food = food_info
        before_stock = model_food.stock
    else:
        model_food = Food()
        model_food.status = 1
        model_food.created_time = geneTime()

    model_food.cat_id = cat_id
    model_food.name = name
    model_food.price = price
    model_food.main_image = main_image
    model_food.summary = summary
    model_food.stock = stock
    model_food.tags = tags
    model_food.updated_time = geneTime()

    db.session.add(model_food)
    ret = db.session.commit()

    FoodService.setStockChangeLog(model_food.id,
                                  int(stock) - int(before_stock), "后台修改")
    return jsonify(resp)