SHARE
TWEET

Untitled

a guest Oct 4th, 2017 122 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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.         SP_GetTransactions
  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. getFunctionName = GetFuncByID
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top