def get(self): """ 合作商获取所有商品 --- tags: - 合作商商品管理 parameters: - name: brand_name in: query type: string required: false description: 品牌名称 - name: page_size in: query type: int required: false default: 10 description: 每页展示数量 - name: page in: query type: int required: ture default: 1 description: 页数 - name: token in: query type: string required: ture description: token responses: 500: description: Server Error ! """ # try: brand_name = request.args.get("brand_name", None) page = request.args.get("page", 1) page_size = int(request.args.get("page_size", 10)) brand_id = None if brand_name: query_res = Brand.select().where(Brand.name == brand_name) if query_res: brand_id = query_res[0].id all_count = Product.select( Product.sku_id, ).where(Product.brand_id == brand_id if brand_id is not None else 1 == 1).count() total_page = get_pagesize(page_size, all_count) query_res = Product.select().where( (Product.brand_id == brand_id if brand_id is not None else 1 == 1)).order_by(Product.create_time.desc()).paginate( int(page), int(page_size)).dicts() query_res = list(query_res) return self.make_response(reult=query_res, total_page=total_page, count=all_count)
def delete(self): """ 删除商品 --- tags: - 商品管理 parameters: - name: sku_id in: query type: int required: true description: 商品id responses: 500: description: Server Error ! """ try: sku_id = request.args.get("sku_id") query_res = Product.select().where(Product.sku_id == sku_id) for i in query_res: i.delete_instance() return self.make_response() except Exception as e: logging.error(e) return self.make_response(error_id=IntervalServerError.code, error_msg=str(e))
def get(self): """ 获取所有商品 --- tags: - 商品管理 parameters: - name: brand_id in: query type: string required: false description: 品牌id - name: page_size in: query type: integer required: false description: 页面展示数量 - name: page_number in: query type: integer required: false description: 页数 responses: 500: description: Server Error ! """ try: brand_id = request.args.get("brand_id", None) page_size = int(request.args.get("page_size", 40)) page_number = int(request.args.get("page_number", 1)) all_count = Product.select( Product.sku_id).where(Product.brand_id == int( brand_id) if brand_id is not None else 1 == 1).count() total_page = get_pagesize(page_size, all_count) query_res = Product.select().where(Product.brand_id == int( brand_id) if brand_id is not None else 1 == 1).order_by( -Product.sku_id).paginate(int(page_number), int(page_size)).dicts() result = [query_obj for query_obj in query_res] return self.make_response(reult=result, total_page=total_page, all_count=all_count) except Exception as e: logging.error(e) return self.make_response(error_id=IntervalServerError.code, error_msg=str(e))
def post(self): """ 下单 --- tags: - 合作商订单管理 parameters: - name: skus in: body type: array required: ture description: 下单商品列表 example: [ {"sku_id" : 1 , "volume" : 3}] - name: token in: query type: string required: ture description: token responses: 500: description: Server Error ! """ # try: token = request.args.get("token", None) json_parameter = request.get_json(force=True) skus = json_parameter["skus"] print(skus) print(type(skus)) data = REDIS.hgetall(token) parter_id = int(data["user_id"]) amount = 0 for sku in skus: sku_id = sku["sku_id"] volume = sku["volume"] amount += (list( Product.select(Product.price).where( Product.sku_id == int(sku_id)).dicts())[0]["price"] * int(volume)) with DBCONN.atomic(): order_id = Order.insert({ "amount": Decimal(amount), "partner_id": parter_id, "status": 0, "create_time": datetime.datetime.now(), }).execute() for sku in skus: OrderDetail.insert({ "order_id": int(order_id), "sku_id": int(sku["sku_id"]), "volume": int(sku["volume"]), }).execute() return self.make_response()
def put(self): """ 修改商品价格 --- tags: - 商品管理 parameters: - name: token in: query type: string required: ture description: token - name: brand_id in: body type: int required: true description: 商品品牌id,品牌表外键 - name: sku_id in: body type: int required: true description: 商品id - name: name in: body type: string required: true description: 商品名称 - name: unit in: body type: string required: true description: 商品计件单位 - name: price in: body type: decimal required: true default: 1.77 description: 商品单价,类型小数 - name: stock in: body type: int required: true description: 商品库存 - name: status in: body type: int required: true description: 商品状态 0-下架 1-上架 - name: image in: body type: string required: true description: 商品主图http链接(nginx服务器代理) - name: image_thumbnail in: body type: string required: true description: 商品缩略图http链接 - name: image_list in: body type: string required: true description: 商品详情图http链接,逗号分隔 - name: description in: body type: string required: true description: 商品详情介绍(后台网页提供html格式的文本编辑器,存escape后的文字) - name: keywords in: body type: string required: true description: 关键词,逗号分隔 responses: 500: description: Server Error ! """ try: json_parameter = request.get_json(force=True) json_parameter["update_time"] = datetime.datetime.now() json_parameter["price"] = Decimal(json_parameter["price"]) sku_id = json_parameter["sku_id"] del json_parameter["sku_id"] Product.update(json_parameter).where( Product.sku_id == sku_id).execute() return self.make_response() except Exception as e: logging.error(e) return self.make_response(error_id=IntervalServerError.code, error_msg=str(e))
def get(self): """ 查看订单 --- tags: - 订单管理 parameters: - name: partner_id in: query type: int required: false description: 合作商id - name: page_size in: query type: int required: false default: 10 description: 每页展示数量 - name: start_time in: query type: string required: false default: "" description: 起始时间 - name: end_time in: query type: string required: false default: "" description: 结束时间 - name: page in: query type: int required: ture default: 1 description: 页数 - name: token in: query type: string required: ture description: token responses: 500: description: Server Error ! """ # try: page = int(request.args.get("page", 1)) partner_id = request.args.get("partner_id", None) start_time = request.args.get("start_time", None) end_time = request.args.get("end_time", None) if start_time: start_time = datetime.datetime.strptime(start_time, "%Y-%m-%d %H:%M:%S") if end_time: end_time = datetime.datetime.strptime(end_time, "%Y-%m-%d %H:%M:%S") page_size = int(request.args.get("page_size", 10)) all_count = Order.select(Order.id).count() total_page = get_pagesize(page_size, all_count) query_res = Order.select().where( (Order.id == int(partner_id) if partner_id is not None else 1 == 1) & (Order.create_time >= start_time if start_time else 1 == 1) & (Order.create_time <= end_time if end_time else 1 == 1)).order_by( Order.create_time.desc()).paginate(int(page), page_size).dicts() query_res = list(query_res) for q in query_res: orderdetail_query = OrderDetail.select().where( OrderDetail.order_id == q["id"]).dicts() sku_msg = [] for oq in orderdetail_query: sku_query = list(Product.select().where( Product.sku_id == oq["sku_id"]).dicts())[0] oq["sku_detail"] = sku_query sku_msg.append(oq) q["sku_msg"] = sku_msg partner_query = Partner.select( Partner.name).where(Partner.id == q["partner_id"]).dicts() q["partner_msg"] = list(partner_query)[0] result = [query_obj for query_obj in query_res] return self.make_response(reult=result, total_page=total_page)
def post(self): """ 订单导出xls --- tags: - 订单管理 parameters: - name: partner_id in: query type: int required: false description: 合作商id - name: token in: query type: string required: ture description: token - name: start_time in: query type: string required: false default: "" description: 起始时间 - name: end_time in: query type: string required: false default: "" description: 结束时间 responses: 500: description: Server Error ! """ try: workbook = xlwt.Workbook(encoding='utf-8') booksheet = workbook.add_sheet('Sheet 1', cell_overwrite_ok=True) partner_id = request.args.get("partner_id", None) start_time = request.args.get("start_time", None) end_time = request.args.get("end_time", None) if start_time: start_time = datetime.datetime.strptime( start_time, "%Y-%m-%d %H:%M:%S") if end_time: end_time = datetime.datetime.strptime(end_time, "%Y-%m-%d %H:%M:%S") query_res = Order.select().where( (Order.id == int(partner_id) if partner_id is not None else 1 == 1) & (Order.create_time >= start_time if start_time else 1 == 1) & (Order.create_time <= end_time if end_time else 1 == 1) ).order_by(Order.create_time.desc()).dicts() query_res = list(query_res) for q in query_res: orderdetail_query = OrderDetail.select().where( OrderDetail.order_id == q["id"]).dicts() sku_msg = [] for oq in orderdetail_query: sku_query = list(Product.select().where( Product.sku_id == oq["sku_id"]).dicts())[0] oq["sku_detail"] = sku_query sku_msg.append(oq) q["sku_msg"] = sku_msg partner_query = Partner.select( Partner.name).where(Partner.id == q["partner_id"]).dicts() q["partner_msg"] = list(partner_query)[0] result = [query_obj for query_obj in query_res] export_data = [] export_data.append([ "创建时间", "订单id", "合作商id", "合作商名称", "物流订单号", "商品名称", "下单数量", "单价", "订单价格" ]) for i in result: for skm in i["sku_msg"]: export_data.append([ i["create_time"], i["id"], i["create_time"], i["partner_msg"]["name"], i["order_delivery_id"], skm["sku_detail"]["name"], skm["volume"], skm["sku_detail"]["price"], i["amount"] ]) for i, row in enumerate(export_data): for j, col in enumerate(row): booksheet.write(i, j, col) filename = "{}.xls".format(str(uuid.uuid4())) workbook.save(os.path.join(FILE_PATH, filename)) return self.make_response(filename=filename) except Exception as e: logging.error(e) return self.make_response(error_id=IntervalServerError.code, error_msg=str(e))
def post(self): """ 创建商品 --- tags: - 商品管理 parameters: - name: brand_id in: body type: int required: true description: 商品品牌id,品牌表外键 - name: name in: body type: string required: true description: 商品名称 - name: unit in: body type: string required: true description: 商品计件单位 - name: price in: body type: decimal required: true default: 1.77 description: 商品单价,类型小数 - name: stock in: body type: int required: true description: 商品库存 - name: status in: body type: int required: true description: 商品状态 0-下架 1-上架 - name: image in: body type: string required: true description: 商品主图名 - name: image_thumbnail in: body type: string required: true description: 商品缩略图名 - name: image_list in: body type: string required: true description: 商品详情图文件名,逗号分隔 - name: description in: body type: string required: true description: 商品详情介绍(后台网页提供html格式的文本编辑器,存escape后的文字) - name: keywords in: body type: string required: true description: 关键词,逗号分隔 responses: 500: description: Server Error ! """ try: json_parameter = request.get_json(force=True) json_parameter["create_time"] = datetime.datetime.now() json_parameter["update_time"] = datetime.datetime.now() json_parameter["price"] = Decimal(json_parameter["price"]) Product.insert(json_parameter).execute() return self.make_response() except Exception as e: logging.error(e) return self.make_response(error_id=IntervalServerError.code, error_msg=str(e))
from app.models.orm import User, Product, Partner, PartnerHistory, Order, OrderDetail, Brand from app.models.orm_sqlite import User as user, Product as product, Partner as partner, \ PartnerHistory as partnerhistory, Order as order, OrderDetail as orderdetail, Brand as brand res = user.select().dicts() for i in res: User.insert(i).execute() res = product.select().dicts() for i in res: i["image"] = i["image"].replace("http://122.51.70.209:8081/", "") i["image_thumbnail"] = i["image_thumbnail"].replace( "http://122.51.70.209:8081/", "") i["image_list"] = i["image_list"].replace("http://122.51.70.209:8081/", "") Product.insert(i).execute() res = partner.select().dicts() for i in res: Partner.insert(i).execute() res = partnerhistory.select().dicts() for i in res: PartnerHistory.insert(i).execute() res = order.select().dicts() for i in res: Order.insert(i).execute() res = orderdetail.select().dicts() for i in res: OrderDetail.insert(i).execute() res = brand.select().dicts() for i in res: Brand.insert(i).execute()