Advertisement
Guest User

Untitled

a guest
Oct 4th, 2017
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.50 KB | None | 0 0
  1. #!/usr/bin/env python
  2. # encoding: utf-8
  3.  
  4. from Logger import BACKEND_LOGGER as logger
  5. from Config import Config as CONF
  6. sqlmodule = CONF.database.sqlmodule
  7. server = CONF.database.server
  8. port = CONF.database.port
  9. dbname = CONF.database.dbname
  10. username = CONF.database.username
  11. password = CONF.database.password
  12. driver = CONF.database.driver
  13. ver = CONF.database.version
  14.  
  15. SQL = __import__(sqlmodule)
  16. if sqlmodule == 'pymssql':
  17.         conn_args = {'host':server, 'user':username, 'password':password,
  18.                      'database':dbname, 'charset':'UTF-8',}
  19.         paramark = r'%s'
  20. elif sqlmodule == 'pyodbc':
  21.         conn_args = {'driver':driver, 'server':server, 'port':port,
  22.                      'database':dbname, 'uid':username, 'pwd':password,
  23.                      'TDS_Version':ver, 'ClientCharset':'UTF-8', }
  24.         paramark = r'?'
  25.  
  26. CONN = SQL.connect(**conn_args)
  27.  
  28. """
  29. Dịch vụ giao tiếp với Database
  30. """
  31.  
  32. def call_sp(proc, paras, fetchsize=-1):
  33.         ''' Gọi một stored Procedure với tham số paras '''
  34.         sqlcmd = 'exec %s ' %  proc + ','.join(len(paras)*[paramark])        
  35.         try:
  36.                 cur = CONN.cursor()
  37.                 cur.execute(sqlcmd, paras)
  38.                 if fetchsize == -1:
  39.                         ret = cur.fetchall()
  40.                 ret = cur.fetchmany(fetchsize)
  41.                 CONN.commit()
  42.                 return ret
  43.         except SQL.Error, e:
  44.                 logger.debug('Error while executing sql command: %s' % e)
  45.                 return []
  46.  
  47. def getProductTable(kioskID):
  48.         ''' Lấy ra bảng sản phẩm '''
  49.         cmd = 'exec SP_GetProducts ' + ','.join(3*[paramark])
  50.         paras = (kioskID, None, None)
  51.         rows = call_sp('SP_GetProducts', paras)
  52.         return rows
  53.  
  54. def GetFuncByID(_productID):
  55.         ''' Lấy ra tên hàm để mua sản phẩm dựa vào ID của sản phẩm '''
  56.         try:
  57.                 rows = call_sp('SP_GetServices', (_productID,), 1)
  58.                 return rows[0][0]
  59.         except IndexError:
  60.                 return ''
  61.  
  62. def GetCategory(_KioskID, _productID):
  63.         ''' Lấy thông tin Category của sản phẩm thông qua PID '''
  64.         try:
  65.                 rows = call_sp('SP_GetProducts', (_KioskID, None, _productID), 1)
  66.                 return rows[0][6]
  67.         except IndexError:
  68.                 return None
  69.  
  70. def GetRefProductID(_KioskID, _productID):
  71.         ''' Tham chiếu tới ProductID trên Paygate thông qua ProductID trên Kiosk '''
  72.         try:
  73.                 rows = call_sp('SP_GetProducts', (_KioskID, None, _productID), 1)
  74.                 return rows[0][1]
  75.         except IndexError:
  76.                 return 0
  77.  
  78. def checkAmount(_KioskID, _productID, amount):
  79.         ''' Kiểm tra sự hợp lệ của tờ tiền đưa vào stacker so với mệnh giá sản phẩm '''
  80.         try:
  81.                 rows = call_sp('SP_GetProducts', (_KioskID, None, _productID), 1)
  82.                 row = rows[0]
  83.                 return (not row[3]) or (str(row[3]) == str(amount))
  84.         except IndexError:
  85.                 return False
  86.                
  87.  
  88. def CreateKioskTransaction(_KioskID, _ProductID, _Amount, _AttributeValues,
  89.                            _Status, _Description, _ReferenceID, _ClientIP):
  90.         ''' Ghi nhận log giao dịch '''
  91.         paras = (_KioskID, _ProductID, _Amount, _AttributeValues, \
  92.                  _Status, _Description, _ReferenceID, _ClientIP, None)
  93.         return call_sp('SP_CreateKioskTransaction', paras, 1)
  94.  
  95. def UpdateKioskStatus(kioskCode, deviceID, status, cashStatistic, description):
  96.         ''' Cập nhật thông tin thống kê tiền mặt trong stacker '''
  97.         paras = (kioskCode, deviceID, status, cashStatistic, description)
  98.         return call_sp('SP_CreateKioskStatusLog', paras, 1)
  99.        
  100. def GetKioskStatus(kioskCode):
  101.     '''Truy vấn DB để lấy về trạng thái của kiosk
  102.        trả về một tuple (lastseen, stacker)
  103.        lastseen: datetime lần cuối cùng update của kiosk
  104.        stacker: một dict có dạng {'V5': số tờ, 'V10': số tờ, 'V20': số tờ, 'V50': số tờ, 'V100': số tờ, 'V200': số tờ, 'V500': số tờ}'''
  105.         paras =(kioskCode,)
  106.         return call_sp('SP_GetKioskStatus', paras, 1)
  107.  
  108. def GetTransactions(TransactionID):
  109.         ''' Cập nhật thông tin thống kê tiền mặt trong stacker '''
  110.         paras = (TransactionID,)
  111.         return call_sp('SP_GetTransactions', paras, 1)
  112.  
  113. getFunctionName = GetFuncByID
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement