def updateOrder(self, oid, form): dao = OrderDAO() if not dao.getOrderById(oid): return jsonify(Error="Order not found."), 404 else: print(len(form)) if len(form) != 5: return jsonify(Error="Malformed update request"), 400 else: rname = form['rname'] cid = form['cid'] ammountReserved = form['ammountReserved'] ammountBought = form['ammountBought'] date = form['date'] if rname and cid and ammountReserved and ammountBought and date: r = dao.update(oid, cid, rname, ammountReserved, ammountBought, date) if not r: return jsonify(Error="Invalid costumer"), 404 else: result = self.build_order_attributes( oid, cid, rname, ammountReserved, ammountBought, date) return jsonify(Order=result), 200 else: return jsonify( Error="Unexpected attributes in update request"), 400
def get_order_statistic(handler: str = None, source: int = None): try: today = datetime_utils.utc8now().date() periods = [ TodayPeriod(today=today), ThisWeekPeriod(today=today), ThisMonthPeriod(today=today), ThisSeasonPeriod(today=today), HalfyearPeriod(today=today), ThisYearPeriod(today=today) ] statistic = { p.name: OrderDAO.count(handler=handler, source=source, startdate=p.startdate.strftime('%Y-%m-%d'), enddate=p.enddate.strftime('%Y-%m-%d')) for p in periods } for status in [ OrderStatus.WAITING, OrderStatus.WORKING, OrderStatus.DONE ]: statistic[status.name.lower()] = OrderDAO.count( handler=handler, source=source, status=status.value) return ujson.dumps(statistic) except Exception as e: raise RuntimeException('获取订单统计异常', extra={'handler': handler, 'source': source}) \ from e
def _closeorder(order, **kwargs): if order['status'] in [OrderStatus.DONE.value, OrderStatus.CLOSED.value]: return '状态过期,请刷新页面', 412 user = kwargs.get('user') # 更新状态 OrderDAO.update({'status': OrderStatus.CLOSED.value}, id=order['id']) # 添加操作记录 OrderRecordDAO.insert({ 'orderid': order['id'], 'operation': OrderOperation.CLOSE.value, 'opname': user['name'] }) # 发送通知 order_utils.send_order_notify_message( title='订单完成通知', message='%s关闭了订单' % user['name'], tousers=_get_notify_users_when_finish_or_close(order), orderid=order['id'], realname=order['realname'], mobile=order['mobile'], address=order['address'], operatorname=order['operatorname'], bizname=order['bizname']) return '', 201
def deleteOrder(self, oid): dao = OrderDAO() if not dao.getOrderById(oid): return jsonify(Error="Order not found."), 404 else: dao.deleteOrder(oid) return jsonify(DeleteStatus="OK"), 200
def insertOrder(self, json): customer_id = json['customer_id'] payment_id = json['payment_id'] request_id = json['request_id'] order_date = json['order_date'] order_price = json['order_price'] order_status = json['order_status'] resources = json['resources'] if customer_id and payment_id and order_date and order_price and order_status and resources: order_dao = OrderDAO() resourceOrders_dao = ResourceOrdersDAO() order_id = order_dao.insert(customer_id, payment_id, request_id, order_date, order_price, order_status) for resource in resources: resourceOrders_dao.insert(order_id, resource["resource_id"], resource["order_quantity"], resource["discount"]) if request_id: request_dao = RequestDAO() request = request_dao.getRequestById(request_id) request_dao.update(request_id, request[0][1], request[0][2], request[0][3], request[0][4], "Accepted") result = self.build_order_attributes(order_id, customer_id, payment_id, request_id, order_date, order_price, order_status, resources) return jsonify(Order=result), 201 else: return jsonify(Error="Unexpected attributes in post request"), 400
def deleteOrder(self, oid): dao = OrderDAO() if dao.delete(oid): return jsonify(DeleteStatus="Order deleted"), 200 else: return jsonify(Error="Order not found."), 404
def updateOrder(self, order_id, json): order_dao = OrderDAO() resourceOrders_dao = ResourceOrdersDAO() if not order_dao.getOrderById(order_id): return jsonify(Error="Order not found."), 404 else: customer_id = json['customer_id'] payment_id = json['payment_id'] request_id = json['request_id'] order_date = json['order_date'] order_price = json['order_price'] order_status = json['order_status'] resources = json['resources'] if customer_id and payment_id and order_date and order_price and order_status and resources: order_dao.update(order_id, customer_id, payment_id, request_id, order_date, order_price, order_status) for resource in resources: resourceOrders_dao.update(order_id, resource["resource_id"], resource["order_quantity"], resource["discount"]) result = self.build_order_attributes(order_id, customer_id, payment_id, request_id, order_date, order_price, order_status, resources) return jsonify(Order=result), 200 else: return jsonify( Error="Unexpected attributes in update request"), 400
def getOrderStatsPerRegion(self): dao = OrderDAO() order_list = dao.getOrderStatsPerRegion() result_list = [] for row in order_list: result = self.build_reqs_stats_per_region_dict(row) result_list.append(result) return jsonify(Order=result_list)
def getOrderById(self, order_id): dao = OrderDAO() row = dao.getOrderById(order_id) if not row: return jsonify(Error="Order not found"), 404 else: order = self.build_order_dict(row) return jsonify(Order=order)
def getPurchased(self): dao = OrderDAO() order_list = dao.getPurchased() result_list = [] for row in order_list: result = self.build_order_dict(row) result_list.append(result) return jsonify(Order=result_list)
def getAllOrders(self): dao = OrderDAO() orders_list = dao.getAllOrders() result_list = [] for row in orders_list: result = self.build_order_dict(row) result_list.append(result) return jsonify(Orders=result_list)
def getOrdersByConsumerID(self, consumer_id): dao = OrderDAO() order_list = dao.getOrderByConsumerId(consumer_id) result_list = [] for row in order_list: result = self.build_order_dict(row) result_list.append(result) return jsonify(Order=result_list)
def getOrderStatsPerWeek(self): dao = OrderDAO() order_list = dao.getOrderStatsPerWeek() result_list = [] for row in order_list: result = self.build_order_stats_per_date_dict(row) result_list.append(result) return jsonify(order=result_list)
def getOrderById(self, order_id): dao = OrderDAO() row = dao.getOrderById(order_id) if not row: return jsonify(Error="Order Not Found"), 404 else: order = self.fixDict(row) return jsonify(Order=order)
def deleteOrder(self, order_id): order_dao = OrderDAO() resourceOrders_dao = ResourceOrdersDAO() if not order_dao.getOrderById(order_id): return jsonify(Error="Order not found."), 404 else: resourceOrders_dao.delete(order_id) order_dao.delete(order_id) return jsonify(DeleteStatus="OK"), 200
def getResourcesByOrderId(self, order_id): dao = OrderDAO() row = dao.getOrderById(order_id) if not row: return jsonify(Error="Order Not Found"), 404 else: result = self.fixDict(row) resource_list = result[0]["resources"] return jsonify(Resources=resource_list)
def getOrdersByResourceName(self, rname): dao = OrderDAO() row = dao.getOrderByResourceName(rname) print(rname) if not row: return jsonify(Error="Order does not exist"), 404 else: order = self.build_order_dict(row) return jsonify(Order=order)
def getOrderByCustomerId(self, customer_id): customer_dao = CustomerDAO() if not customer_dao.getCustomerById(customer_id): return jsonify(Error="Customer Not Found"), 404 else: orders_list = [] dao = OrderDAO() orders_list = dao.getOrderByCustomerId(customer_id) result_list = self.fixDict(orders_list) return jsonify(Orders=result_list)
def searchOrdersById(self, oid, args): date = args.get("odate") price = args.get("oprice") status = args.get("ostatus") dao = OrderDAO() orders_list = [] if (len(args) == 3) and date and price and status: orders_list = dao.getAllOrdersByIdDatePriceStatus( date, price, status, id) elif (len(args) == 2) and date and price: orders_list = dao.getAllOrdersByIdDatePrice(date, price, id) elif (len(args) == 2) and date and status: orders_list = dao.getAllOrdersByIdDateStatus(date, status, id) elif (len(args) == 2) and price and status: orders_list = dao.getAllOrdersByIdPriceStatus(price, status, id) elif (len(args) == 1) and date: orders_list = dao.getAllOrdersByIdDate(date, id) elif (len(args) == 1) and price: orders_list = dao.getAllOrdersByIdPrice(price, id) elif (len(args) == 1) and status: orders_list = dao.getAllOrdersByIdStatus(status, id) else: return jsonify(Orders="Bad Request"), 400 result_list = [] for row in orders_list: result = self.build_orders_dict(row) result_list.append(result) if not result_list: return jsonify(Error="Order Not Found"), 404 else: return jsonify(Orders=result_list)
def getAllOrders(self): dao = OrderDAO() orders_list = dao.getAllOrders( ) #Select oid, odate, oprice, ostatus from Order_Info result_list = [] for row in orders_list: result = self.build_orders_dict(row) result_list.append(result) if not result_list: return jsonify(Error="Order Not Found"), 404 else: return jsonify(Orders=result_list)
def searchSuppliersOfThisOrderInfo(self, oid, args): daoOI = OrderDAO() dao = SupplierDAO() if not daoOI.getOrderById(oid): return jsonify(Error = 'Order Info Not Found'), 404 afirst = args.get('afirst') alast = args.get('alast') email = args.get('email') phone = args.get('phone') suppliers_list = [] if(len(args) == 4) and afirst and alast and email and phone: suppliers_list = dao.getSupplierOfThisOrderInfoByAfirstAlastEmailPhone(oid, afirst, alast, email, phone) elif(len(args) == 3) and afirst and alast and email: suppliers_list = dao.getSupplierOfThisOrderInfoByAfirstAlastEmail(oid, afirst, alast, email) elif(len(args) == 3) and afirst and alast and phone: suppliers_list = dao.getSupplierOfThisOrderInfoByAfirstAlastPhone(oid, afirst, alast, phone) elif(len(args) == 3) and afirst and phone and email: suppliers_list = dao.getSupplierOfThisOrderInfoByAfirstPhoneEmail(oid, afirst, phone, email) elif(len(args) == 3) and alast and email and phone: suppliers_list = dao.getSupplierOfThisOrderInfoByAlastEmailPhone(oid, alast, email, phone) elif(len(args) == 2) and afirst and alast: suppliers_list = dao.getSupplierOfThisOrderInfoByAfirstAlast(oid, afirst, alast) elif(len(args) == 2) and afirst and email: suppliers_list = dao.getSupplierOfThisOrderInfoByAfirstEmail(oid, afirst, email) elif(len(args) == 2) and afirst and phone: suppliers_list = dao.getSupplierOfThisOrderInfoByAfirstPhone(oid, afirst, phone) elif(len(args) == 2) and alast and email: suppliers_list = dao.getSupplierOfThisOrderInfoByAlastEmail(oid, alast, email) elif(len(args) == 2) and alast and phone: suppliers_list = dao.getSupplierOfThisOrderInfoByAlastPhone(oid, alast, phone) elif(len(args) == 2) and email and phone: suppliers_list = dao.getSupplierOfThisOrderInfoByEmailPhone(oid, email, phone) elif(len(args) == 1) and afirst: suppliers_list = dao.getSupplierOfThisOrderInfoByAfirst(oid, afirst) elif(len(args) == 1) and alast: suppliers_list = dao.getSupplierOfThisOrderInfoByAlast(oid, alast) elif(len(args) == 1) and email: suppliers_list = dao.getSupplierOfThisOrderInfoByEmail(oid, email) elif(len(args) == 1) and phone: suppliers_list = dao.getSupplierOfThisOrderInfoByPhone(oid, phone) else: return jsonify(Error = "Malformed query string"), 400 result_list = [] for row in suppliers_list: result = self.build_supplier_dict(row) result_list.append(result) return jsonify(Suppliers = result_list)
def getRequestersOfThisOrderInfo(self, oid): dao = RequesterDAO() daoO = OrderDAO() if not daoO.getOrderById(oid): return jsonify(Error="Order Info Not Found"), 404 requesters_list = dao.getRequestersOnThisOrderInfo(oid) result_list = [] for row in requesters_list: result = self.build_requester_dict(row) result_list.append(result) return jsonify(Requesters=result_list)
def getSuppliersOfThisOrderInfo(self, oid): daoOI = OrderDAO() dao = SupplierDAO() if not daoOI.getOrderById(oid): return jsonify(Error = 'Order Info Not Found'), 404 suppliers_list = dao.getSupplierOfThisOrderInfo(oid) result_list = [] for row in suppliers_list: result = self.build_supplier_dict(row) result_list.append(result) return jsonify(Supplier = result_list)
def searchOrders(self, args): order_date = args.get("order_date") order_status = args.get("order_status") dao = OrderDAO() orders_list = [] if (len(args) == 2) and order_date and order_status: orders_list = dao.getOrdersByDateAndStatus(order_date, order_status) elif (len(args) == 1) and order_date: orders_list = dao.getOrdersByDate(order_date) elif (len(args) == 1) and order_status: orders_list = dao.getOrdersByStatus(order_status) else: return jsonify(Error="Malformed query string"), 400 result_list = self.fixDict(orders_list) return jsonify(Orders=result_list)
def insertOrder(self, form): if len(form) != 4: print(len(form)) print(form) return jsonify(Error="Malformed post request"), 400 else: odate = form['odate'] oprice = form['oprice'] ostatus = form['ostatus'] payid = form['payid'] if odate and oprice and ostatus and payid: dao = OrderDAO() oid = dao.insertOrder(odate, oprice, ostatus, payid) result = self.build_order_attributes(oid, odate, oprice, ostatus, payid) return jsonify(Order=result), 201 else: return jsonify( Error="Unexpected attributes in post request"), 400
def updateOrder(self, oid, form): dao = OrderDAO() if not dao.getOrderById(oid): return jsonify(Error="Order not found."), 404 else: if len(form) != 3: return jsonify(Error="Malformed update request"), 400 else: odate = form['odate'] oprice = form['oprice'] ostatus = form['ostatus'] if odate and oprice and ostatus: dao.updateOrder(oid, odate, oprice, ostatus) result = self.build_orderUpdate_attributes( oid, odate, oprice, ostatus) return jsonify(Order=result), 200 else: return jsonify( Error="Unexpected attributes in update request"), 400
def getPaymentByOrderId(self, order_id): dao = OrderDAO() row = dao.getOrderById(order_id) if not row: return jsonify(Error="Order Not Found"), 404 else: result = self.fixDict(row) payment_id = result[0]["payment_id"] ath_movil = AthMovilHandler().getAthMovilByPaymentId(payment_id) creditcard = CreditCardHandler().getCreditCardByPaymentId( payment_id) paypal = PaypalHandler().getPaypalByPaymentId(payment_id) if ath_movil: return ath_movil elif creditcard: return creditcard elif paypal: return paypal else: return jsonify(Error="Payment Not Found"), 404
def _dealwithorder(order, **kwargs): if order['status'] != OrderStatus.WAITING.value: return '状态过期,请刷新页面', 412 user = kwargs.get('user') # 更新状态 OrderDAO.update( { 'status': OrderStatus.WORKING.value, 'handler': user['id'] }, id=order['id']) # 添加操作记录 OrderRecordDAO.insert({ 'orderid': order['id'], 'operation': OrderOperation.DEALWITH.value, 'opname': user['name'] }) return user['name'], 201
def insertOrder(self, form): print("form: ", form) if len(form) != 5: return jsonify(Error="Malformed post request"), 400 else: cid = form['cid'] rname = form['rname'] ammountReserved = form['ammountReserved'] ammountBought = form['ammountBought'] date = form['date'] if rname and ammountReserved and ammountBought and date: dao = OrderDAO() oid = dao.insert(cid, rname, ammountReserved, ammountBought, date) if oid: result = self.build_order_attributes( oid, cid, rname, ammountReserved, ammountBought, date) return jsonify(Order=result), 201 else: return jsonify( Error="Unexpected attributes in post request"), 400
def _dispatchorder(order, **kwargs): if order['status'] != OrderStatus.WAITING.value: return '状态过期,请刷新页面', 412 user = kwargs.get('user') handler = kwargs.get('handler') # 更新状态 OrderDAO.update( { 'status': OrderStatus.WORKING.value, 'handler': kwargs.get('handler')['id'] }, id=order['id']) # 添加操作记录 OrderRecordDAO.insert({ 'orderid': order['id'], 'operation': OrderOperation.DISPATCH.value, 'opname': user['name'] + '|' + handler['name'] }) # 发送通知 order_utils.send_order_notify_message(title='订单分配通知', message='%s分了个订单给你' % user['name'], tousers=kwargs.get('handler')['id'], orderid=order['id'], realname=order['realname'], mobile=order['mobile'], address=order['address'], operatorname=order['operatorname'], bizname=order['bizname']) ishandler = user['id'] == handler['id'] return ujson.dumps({'ishandler': ishandler}), 201