示例#1
0
    def get_access_token(self):
        token = None
        token_info = OauthAccessToken.query.filter(
            OauthAccessToken.expired_time >= get_current_date()).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 = get_current_date()
        db.session.add(model_token)
        db.session.commit()

        return data['access_token']
示例#2
0
文件: Address.py 项目: paulRoux/Order
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 = get_current_date()
        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 = get_current_date()
        db.session.add(address_info)
        db.session.commit()
    return jsonify(resp)
示例#3
0
    def close_order(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 = get_current_date()
                    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 = get_current_date()
        db.session.add(pay_order_info)
        db.session.commit()
        return True
示例#4
0
    def order_success(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 = get_current_date()
            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 = get_current_date()
                db.session.add(tmp_model_sale_log)

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

        # 加入通知队列,做消息提醒和
        QueueService.add_queue("pay", {
            "member_id": pay_order_info.member_id,
            "pay_order_id": pay_order_info.id
        })
        return True
示例#5
0
    def statSite(self, params):
        act = params['act']
        date = params['date']
        date_from = params['date_from']
        date_to = params['date_to']
        app.logger.info("act:{0},from:{1},to:{2}".format(
            act, date_from, date_to))

        stat_pay = db.session.query(func.sum(PayOrder.total_price).label("total_pay_money")) \
            .filter(PayOrder.status == 1) \
            .filter(PayOrder.created_time >= date_from, PayOrder.created_time <= date_to).first()

        stat_member_count = Member.query.count()
        stat_new_member_count = Member.query.filter(
            Member.created_time >= date_from,
            Member.created_time <= date_to).count()

        stat_order_count = PayOrder.query.filter_by( status = 1 )\
            .filter(PayOrder.created_time >= date_from, PayOrder.created_time <= date_to)\
            .count()

        stat_share_count = WxShareHistory.query.filter(
            WxShareHistory.created_time >= date_from,
            WxShareHistory.created_time <= date_to).count()

        tmp_stat_site = StatDailySite.query.filter_by(date=date).first()
        if tmp_stat_site:
            tmp_model_stat_site = tmp_stat_site
        else:
            tmp_model_stat_site = StatDailySite()
            tmp_model_stat_site.date = date
            tmp_model_stat_site.created_time = get_current_date()

        tmp_model_stat_site.total_pay_money = stat_pay[0] if stat_pay[
            0] else 0.00
        tmp_model_stat_site.total_new_member_count = stat_new_member_count
        tmp_model_stat_site.total_member_count = stat_member_count
        tmp_model_stat_site.total_order_count = stat_order_count
        tmp_model_stat_site.total_shared_count = stat_share_count
        tmp_model_stat_site.updated_time = get_current_date()
        '''
        为了测试效果模拟数据
        '''
        tmp_model_stat_site.total_pay_money = random.randint(1000, 1010)
        tmp_model_stat_site.total_new_member_count = random.randint(50, 100)
        tmp_model_stat_site.total_member_count += tmp_model_stat_site.total_new_member_count
        tmp_model_stat_site.total_order_count = random.randint(900, 1000)
        tmp_model_stat_site.total_shared_count = random.randint(1000, 2000)
        db.session.add(tmp_model_stat_site)
        db.session.commit()
示例#6
0
文件: Member.py 项目: paulRoux/Order
def login():
    resp = {'code': 200, 'msg': '操作成功~', 'data': {}}
    req = request.values
    code = req['code'] if 'code' in req else ''
    if not code or len(code) < 1:
        resp['code'] = -1
        resp['msg'] = "需要code"
        return jsonify(resp)

    openid = MemberService.get_wechat_open_id(code)
    if openid is None:
        resp['code'] = -1
        resp['msg'] = "调用微信出错"
        return jsonify(resp)

    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 ''
    '''
        判断是否已经测试过,注册了直接返回一些信息
    '''
    bind_info = OauthMemberBind.query.filter_by(openid=openid, type=1).first()
    if not bind_info:
        model_member = Member()
        model_member.nickname = nickname
        model_member.sex = sex
        model_member.avatar = avatar
        model_member.salt = MemberService.generate_salt()
        model_member.updated_time = model_member.created_time = get_current_date(
        )
        db.session.add(model_member)
        db.session.commit()

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

        bind_info = model_bind

    member_info = Member.query.filter_by(id=bind_info.member_id).first()
    token = "%s#%s" % (MemberService.generate_auth_code(member_info),
                       member_info.id)
    resp['data'] = {'token': token}
    return jsonify(resp)
示例#7
0
    def task( self ):
        """
        自动抓取微信群消息
        """
        app.logger.info( 'executing %s' % ( __name__ ) )

        try:
            app.logger.info( "正在建立Appium会话..." )
            self.driver = webdriver.Remote( self.appium_server, self.desired_capability )  # Appium会话配置
            self.wait=WebDriverWait(self.driver, self.timeout)        

            app.logger.info( "正在点击微信首页消息列表第一条,进入群消息对话框..." )
            self.wait.until( EC.presence_of_element_located( ( By.ID,'com.tencent.mm:id/as4' ) ) ).click()

            # 获取群聊名称
            group_name = self.wait.until( EC.presence_of_element_located( ( By.ID,'com.tencent.mm:id/hm' ) ) ).get_attribute( 'text' )
            if not group_name or not re.compile( self.group_tag_pattern ).findall( group_name ):
                app.logger.info( "当前会话不是群聊,即将关闭..." )
                return
            group_name = re.sub( self.group_tag_pattern, "", group_name )
            app.logger.info( "当前群聊名称为:" + group_name )

            current_simulator_window_size = get_simulator_window_size( self.driver )
            app.logger.info( "当前屏幕尺寸为:{0}".format( current_simulator_window_size ) )

            time.sleep( 1 )  # 强制等待1秒

            # 消息发布时间
            send_time = get_current_date()
            app.logger.info( '消息发布时间:%s' %( send_time )  )   

            # 不断向下滑屏,获取当前屏消息
            while True:
                self.get_current_page_msgs( group_name=group_name, send_time=send_time )
                try:
                    self.driver.find_element_by_id( 'com.tencent.mm:id/abj' )
                    app.logger.info( "发现新消息提示框,正在继续向下滑屏..." )
                    driver_swipe_down( current_simulator_window_size, self.driver )
                except NoSuchElementException:
                    app.logger.info( "没有找到新消息提示框,只向下滑屏3次..." )
                    for i in range(0, 3):
                        driver_swipe_down( current_simulator_window_size, self.driver )
                        self.get_current_page_msgs( group_name=group_name, send_time=send_time )
                    break

            # 一次过滤,first_filter_keys表, 并保存到数据库(messages表),调用公共方法
            app.logger.info( "正在根据关键词过滤原始消息记录表..." )
            MessagesService.filter_by_keys()

            # 二次过滤,second_filter_qqnumber表、second_filter_groupnumber表, 并保存到数据库(messages表),调用公共方法
            app.logger.info( "根据给定的QQ/微信群号码或者QQ/微信号过滤消息记录表" )
            MessagesService.filter_by_numbers()                    

        except:
            app.logger.info( traceback.format_exc() )
        finally:
            app.logger.info( "正在关闭当前Appium会话..." )  # 关闭当前会话
            self.driver.quit()

        app.logger.info( "finished %s" % ( __name__ ) )
示例#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.close_order(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 = get_current_date()
		db.session.add( pay_order_info )
		db.session.commit()

	return jsonify(resp)
示例#9
0
    def upload_by_file(file):
        config_upload = app.config['UPLOAD']
        resp = {'code': 200, 'msg': '操作成功~~', 'data': {}}
        filename = secure_filename(file.filename)
        ext = filename.rsplit(".", 1)[1]
        if ext not in config_upload['ext']:
            resp['code'] = -1
            resp['msg'] = "不允许的扩展类型文件"
            return resp

        root_path = app.root_path + config_upload['prefix_path']
        # 不使用getCurrentDate创建目录,为了保证其他写的可以用,这里改掉,服务器上好像对时间不兼容
        file_dir = datetime.datetime.now().strftime("%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))

        model_image = Image()
        model_image.file_key = file_dir + "/" + file_name
        model_image.created_time = get_current_date()
        db.session.add(model_image)
        db.session.commit()

        resp['data'] = {'file_key': model_image.file_key}
        return resp
示例#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 = get_current_date()
    db.session.add(food_info)
    db.session.commit()
    return jsonify(resp)
示例#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 = get_current_date()

        model_cart.food_id = food_id
        model_cart.quantity = number
        model_cart.updated_time = get_current_date()
        db.session.add(model_cart)
        db.session.commit()
        return True
示例#12
0
    def statMember(self, params):
        act = params['act']
        date = params['date']
        date_from = params['date_from']
        date_to = params['date_to']
        app.logger.info("act:{0},from:{1},to:{2}".format(
            act, date_from, date_to))

        member_list = Member.query.all()
        if not member_list:
            app.logger.info("no member list")
            return

        for member_info in member_list:
            tmp_stat_member = StatDailyMember.query.filter_by(
                date=date, member_id=member_info.id).first()
            if tmp_stat_member:
                tmp_model_stat_member = tmp_stat_member
            else:
                tmp_model_stat_member = StatDailyMember()
                tmp_model_stat_member.date = date
                tmp_model_stat_member.member_id = member_info.id
                tmp_model_stat_member.created_time = get_current_date()

            tmp_stat_pay =  db.session.query( func.sum(PayOrder.total_price).label("total_pay_money")) \
                    .filter( PayOrder.member_id  == member_info.id ,PayOrder.status == 1 )\
                    .filter( PayOrder.created_time >= date_from,PayOrder.created_time <= date_to ).first()
            tmp_stat_share_count = WxShareHistory.query.filter( PayOrder.member_id  == member_info.id  )\
                    .filter( PayOrder.created_time >= date_from,PayOrder.created_time <= date_to ).count()

            tmp_model_stat_member.total_shared_count = tmp_stat_share_count
            tmp_model_stat_member.total_pay_money = tmp_stat_pay[
                0] if tmp_stat_pay[0] else 0.00
            '''
            为了测试效果模拟数据
            '''
            tmp_model_stat_member.total_shared_count = random.randint(50, 100)
            tmp_model_stat_member.total_pay_money = random.randint(1000, 1010)
            tmp_model_stat_member.updated_time = get_current_date()
            db.session.add(tmp_model_stat_member)
            db.session.commit()

        return
示例#13
0
    def add_queue(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 = get_current_date()
        db.session.add(model_queue)
        db.session.commit()
        return True
示例#14
0
    def statFood(self, params):
        act = params['act']
        date = params['date']
        date_from = params['date_from']
        date_to = params['date_to']
        app.logger.info("act:{0},from:{1},to:{2}".format(
            act, date_from, date_to))

        stat_food_list = db.session.query(FoodSaleChangeLog.food_id, func.sum(FoodSaleChangeLog.quantity).label("total_count"),
                         func.sum(FoodSaleChangeLog.price).label("total_pay_money")) \
            .filter(FoodSaleChangeLog.created_time >= date_from, FoodSaleChangeLog.created_time <= date_to)\
            .group_by( FoodSaleChangeLog.food_id ).all()

        if not stat_food_list:
            app.logger.info("no data")
            return

        for item in stat_food_list:
            tmp_food_id = item[0]
            tmp_stat_food = StatDailyFood.query.filter_by(
                date=date, food_id=tmp_food_id).first()
            if tmp_stat_food:
                tmp_model_stat_food = tmp_stat_food
            else:
                tmp_model_stat_food = StatDailyFood()
                tmp_model_stat_food.date = date
                tmp_model_stat_food.food_id = tmp_food_id
                tmp_model_stat_food.created_time = get_current_date()

            tmp_model_stat_food.total_count = item[1]
            tmp_model_stat_food.total_pay_money = item[2]
            tmp_model_stat_food.updated_time = get_current_date()
            '''
            为了测试效果模拟数据
            '''
            tmp_model_stat_food.total_count = random.randint(50, 100)
            tmp_model_stat_food.total_pay_money = random.randint(1000, 1010)

            db.session.add(tmp_model_stat_food)
            db.session.commit()

        return
示例#15
0
文件: index.py 项目: paulRoux/Order
    def run(self, params):
        list = QueueList.query.filter_by(status = -1 )\
            .order_by( QueueList.id.asc() ).limit(1).all()
        for item in list:
            if item.queue_name == "pay":
                self.handlePay(item)

            item.status = 1
            item.updated_time = get_current_date()
            db.session.add(item)
            db.session.commit()
示例#16
0
 def add_error_log(content):
     if 'favicon.ico' in request.url:
         return
     target = AppErrorLog()
     target.target_url = request.url
     target.referer_url = request.referrer
     target.query_params = json.dumps(request.values.to_dict())
     target.content = content
     target.created_time = get_current_date()
     db.session.add(target)
     db.session.commit()
     return True
示例#17
0
 def add_access_log():
     target = AppAccessLog()
     target.target_url = request.url
     target.referer_url = request.referrer
     target.ip = request.remote_addr
     target.query_params = json.dumps(request.values.to_dict())
     if 'current_user' in g and g.current_user is not None:
         target.uid = g.current_user.uid
     target.ua = request.headers.get("User-Agent")
     target.created_time = get_current_date()
     db.session.add(target)
     db.session.commit()
     return True
示例#18
0
文件: Member.py 项目: paulRoux/Order
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 = get_current_date()
    db.session.add(model_share)
    db.session.commit()
    return jsonify(resp)
示例#19
0
    def add_pay_call_back_data(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 = get_current_date()
        db.session.add(model_callback)
        db.session.commit()
        return True
示例#20
0
def catSet():
    if request.method == "GET":
        resp_data = {}
        req = request.args
        id = int(req.get("id", 0))
        info = None
        if id:
            info = FoodCat.query.filter_by(id=id).first()
        resp_data['info'] = info
        resp_data['current'] = 'cat'
        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 name is None or len(name) < 1:
        resp['code'] = -1
        resp['msg'] = "请输入符合规范的分类名称~~"
        return jsonify(resp)

    food_cat_info = FoodCat.query.filter_by(id=id).first()
    if food_cat_info:
        model_food_cat = food_cat_info
    else:
        model_food_cat = FoodCat()
        model_food_cat.created_time = get_current_date()
    model_food_cat.name = name
    model_food_cat.weight = weight
    model_food_cat.updated_time = get_current_date()
    db.session.add(model_food_cat)
    db.session.commit()
    return jsonify(resp)
示例#21
0
    def save_wechat_group_msg(**kwargs):
        """
        微信群消息入库
        """
        app.logger.info("executing %s.MessagesService.save_wechat_group_msg" %
                        (__name__))

        group_name = kwargs.get('group_name', None)  # 群聊名称
        group_number = kwargs.get('group_number', None)  # 群聊号码
        sender_name = kwargs.get('sender_name', None)  # 用户昵称
        content = kwargs.get('content', None)  # 消息内容
        send_time = kwargs.get('send_time', None)  # 消息发布时间
        qq_number = kwargs.get('qq_number', None)  # 微信号

        if group_name:
            group_name += "(微信群)"
            qq_group_model = QqGroup.query.filter_by(
                group_name=group_name).first()
            if not qq_group_model:
                app.logger.info('新的微信群正在入库...')
                qq_group_model = QqGroup()
                qq_group_model.group_name = group_name
                if group_number:
                    qq_group_model.group_number = group_number
                db.session.add(qq_group_model)
                db.session.commit()

            if sender_name and content:
                fingerprint = md5_hash(sender_name + content)  # 计算当前消息的指纹
                app.logger.info('当前群消息的指纹是:%s' % (fingerprint))
                original_message_model = OriginalMessage.query.filter_by(
                    fingerprint=fingerprint).first()
                if not original_message_model:
                    app.logger.info('新的群消息正在入库...')
                    original_message_model = OriginalMessage()
                    original_message_model.group_id = qq_group_model.id
                    original_message_model.sender_name = sender_name
                    original_message_model.qq_number = qq_number if qq_number else '微信号暂无'
                    original_message_model.content = content
                    original_message_model.send_time = send_time if send_time else get_current_date(
                    )
                    original_message_model.fingerprint = fingerprint
                    db.session.add(original_message_model)
                    db.session.commit()

        app.logger.info("finished %s.MessagesService.save_wechat_group_msg" %
                        (__name__))
示例#22
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 = get_current_date()
        db.session.add(model_stock_change)
        db.session.commit()
        return True
示例#23
0
文件: Finance.py 项目: paulRoux/Order
def orderOps():
    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 ''
    pay_order_info = PayOrder.query.filter_by(id=id).first()
    if not pay_order_info:
        resp['code'] = -1
        resp['msg'] = "系统繁忙。请稍后再试~~"
        return jsonify(resp)

    if act == "express":
        pay_order_info.express_status = -6
        pay_order_info.updated_time = get_current_date()
        db.session.add(pay_order_info)
        db.session.commit()

    return jsonify(resp)
示例#24
0
def set():
    if request.method == "GET":
        resp_data = {}
        req = request.args
        id = int(req.get("id", 0))
        reback_url = UrlManager.build_url("/member/index")
        if id < 1:
            return redirect(reback_url)

        info = Member.query.filter_by(id=id).first()
        if not info:
            return redirect(reback_url)

        if info.status != 1:
            return redirect(reback_url)

        resp_data['info'] = info
        resp_data['current'] = 'index'
        return ops_render("member/set.html", resp_data)

    resp = {'code': 200, 'msg': '操作成功~~', 'data': {}}
    req = request.values
    id = req['id'] if 'id' in req else 0
    nickname = req['nickname'] if 'nickname' in req else ''
    if nickname is None or len(nickname) < 1:
        resp['code'] = -1
        resp['msg'] = "请输入符合规范的姓名~~"
        return jsonify(resp)

    member_info = Member.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 = get_current_date()
    db.session.add(member_info)
    db.session.commit()
    return jsonify(resp)
示例#25
0
def myCommentAdd():
    resp = {'code': 200, 'msg': '操作成功~', 'data': {}}
    member_info = g.member_info
    req = request.values
    order_sn = req['order_sn'] if 'order_sn' in req else ''
    score = req['score'] if 'score' in req else 10
    content = req['content'] if 'content' in req else ''

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

    if pay_order_info.comment_status:
        resp['code'] = -1
        resp['msg'] = "已经评价过了~~"
        return jsonify(resp)

    pay_order_items = PayOrderItem.query.filter_by(
        pay_order_id=pay_order_info.id).all()
    food_ids = select_filter_obj(pay_order_items, "food_id")
    tmp_food_ids_str = '_'.join(str(s) for s in food_ids if s not in [None])
    model_comment = MemberComments()
    model_comment.food_ids = "_%s_" % tmp_food_ids_str
    model_comment.member_id = member_info.id
    model_comment.pay_order_id = pay_order_info.id
    model_comment.score = score
    model_comment.content = content
    db.session.add(model_comment)

    pay_order_info.comment_status = 1
    pay_order_info.updated_time = get_current_date()
    db.session.add(pay_order_info)

    db.session.commit()
    return jsonify(resp)
示例#26
0
文件: Account.py 项目: paulRoux/Order
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)

    user_info = User.query.filter_by(uid=id).first()
    if not user_info:
        resp['code'] = -1
        resp['msg'] = "指定账号不存在~~"
        return jsonify(resp)

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

    if user_info and user_info.uid == 1:
        resp['code'] = -1
        resp['msg'] = "该用户是演示账号,不准操作账号~~"
        return jsonify(resp)

    user_info.update_time = get_current_date()
    db.session.add(user_info)
    db.session.commit()
    return jsonify(resp)
示例#27
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.build_url("/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 = get_current_date()

    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 = get_current_date()

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

    FoodService.setStockChangeLog(model_food.id, int(stock) - int(before_stock), "后台修改")
    return jsonify(resp)
示例#28
0
文件: Account.py 项目: paulRoux/Order
def set():
    default_pwd = "******"
    if request.method == "GET":
        resp_data = {}
        req = request.args
        uid = int(req.get("id", 0))
        info = None
        if uid:
            info = User.query.filter_by(uid=uid).first()
        resp_data['info'] = info
        return ops_render("account/set.html", resp_data)

    resp = {'code': 200, 'msg': '操作成功~~', 'data': {}}
    req = request.values

    id = req['id'] if 'id' in req else 0
    nickname = req['nickname'] if 'nickname' in req else ''
    mobile = req['mobile'] if 'mobile' in req else ''
    email = req['email'] if 'email' in req else ''
    login_name = req['login_name'] if 'login_name' in req else ''
    login_pwd = req['login_pwd'] if 'login_pwd' in req else ''

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

    if mobile is None or len(mobile) < 1:
        resp['code'] = -1
        resp['msg'] = "请输入符合规范的手机号码~~"
        return jsonify(resp)

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

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

    if login_pwd is None or len(email) < 6:
        resp['code'] = -1
        resp['msg'] = "请输入符合规范的登录密码~~"
        return jsonify(resp)

    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)

    user_info = User.query.filter_by(uid=id).first()
    if user_info:
        model_user = user_info
    else:
        model_user = User()
        model_user.created_time = get_current_date()
        model_user.login_salt = UserService.generate_salt()

    model_user.nickname = nickname
    model_user.mobile = mobile
    model_user.email = email
    model_user.login_name = login_name
    if login_pwd != default_pwd:
        if user_info and user_info.uid == 1:
            resp['code'] = -1
            resp['msg'] = "该用户是演示账号,不允许修改密码和登录用户名~~"
            return jsonify(resp)

        model_user.login_pwd = UserService.generate_password(
            login_pwd, model_user.login_salt)

    model_user.updated_time = get_current_date()
    db.session.add(model_user)
    db.session.commit()
    return jsonify(resp)
示例#29
0
文件: Address.py 项目: paulRoux/Order
def myAddressSet():
    resp = {'code': 200, 'msg': '操作成功~', 'data': {}}
    req = request.values
    id = int(req['id']) if 'id' in req and req['id'] 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:
        default_address_count = MemberAddress.query.filter_by(
            is_default=1, member_id=member_info.id, status=1).count()
        model_address = MemberAddress()
        model_address.member_id = member_info.id
        model_address.is_default = 1 if default_address_count == 0 else 0
        model_address.created_time = get_current_date()

    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 = get_current_date()
    db.session.add(model_address)
    db.session.commit()
    return jsonify(resp)
示例#30
0
    def create_order(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 {}
        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.generate_order_sn()
            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 = get_current_date(
            )
            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 = get_current_date(
                )
                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