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))
Exemple #9
0
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()