def order(): orders = Orders.objects(opareteUser=current_user.realname) drugs = {} for x in orders: for y in x.buyDetail: drugs[y] = Commodity.objects(id=ObjectId(y)).first().name return render_template('doctor/order.html', orders=orders, bought=drugs)
def get_shop_list(): ''' 商品库信息组合去重及商品库模糊搜索功能 ''' # 查询参数 ww_id = request.args.get('wwId') or '' store_name = request.args.get('storeName') or '' goods_title = request.args.get('goodsTitle') or '' sku_id = request.args.get('skuId') or '' # 分页参数 page_num = int(request.args.get('pageNum') or 1) page_size = int(request.args.get('pageSize') or 20) # 从历史订单数据库更新数据到商品库,不覆盖原有数据,保证卖家sku的完整保留 one_record = Shop.objects.order_by('-_id').first() # 筛选shop中_id最大值的记录 max_id = one_record['_id'] if one_record else None if max_id: # 取出历史订单orders中大于此_id的记录 query_set = Orders.objects(_id__gt=max_id) else: # 商品库为空,取出历史订单所有记录 query_set = Orders.objects() if query_set: # 将查询结果去重并保存至shop中 only_records = query_set.aggregate( # 组合去重 { '$group': { '_id': {'goods_url': "$goods_url", 'goods_sku1': "$goods_sku1", 'goods_sku2': "$goods_sku2"}, 'id': {'$max': "$_id"}, # 取_id最大值 'goods_url': {'$first': "$goods_url"}, 'goods_title': {'$first': "$goods_title"}, 'goods_img': {'$first': "$goods_img"}, 'store_name': {'$first': "$store_name"}, 'ww_name': {'$first': "$ww_name"}, 'real_per_price': {'$first': "$real_per_price"}, 'goods_sku1': {'$first': "$goods_sku1"}, 'goods_sku2': {'$first': "$goods_sku2"} } } ) for item in only_records: item.pop('_id') item['_id'] = item.pop('id') item['sku_id'] = '' if not max_id: # 商品库为空,直接保存 Shop(**item).save() else: # 商品库不为空,查询无重复再保存 if not Shop.objects(goods_url=item['goods_url'], goods_sku1=item['goods_sku1'], goods_sku2=item['goods_sku2']): Shop(**item).save() # 商品库展示 if ww_id or store_name or goods_title or sku_id: # 条件查询(模糊查询) page_data = Shop.objects( Q(__raw__={'ww_name': { '$regex': ww_id }}) & Q(__raw__={'store_name': { '$regex': store_name }}) & Q(__raw__={'goods_title': { '$regex': goods_title }}) & Q(__raw__={'sku_id': { '$regex': sku_id }})).paginate(page=page_num, per_page=page_size) else: # 一般情况(无查询) page_data = Shop.objects().paginate(page=page_num, per_page=page_size) list_all_query = [] for item in page_data.items: new_each_result = OrderedDict() for k, v in MAPPING.items(): new_each_result[k] = str(item[v]) if item[v] else '' list_all_query.append(new_each_result) result = { 'status': 0, 'total': page_data.total, 'pageSize': page_size, 'pageNum': page_data.page, 'data': { 'list': list_all_query }, 'msg': '请求成功' } return Response(json.dumps(result), mimetype='application/json')