def POST(self): args = web.input() logger.info(u'入参:%s' %args) userCode = args.get('usercode') result = {} try: self.db.execute('SELECT flag FROM %s WHERE usercode = ?' %Global.GLOBAL_TABLE_PAYMENT_USER, (userCode,)) userInfo = self.db.fetchone() dbFlag = userInfo['flag'] if dbFlag == 1: dbFlag = 0 result['busStatus'] = '一直可以缴费' else: dbFlag = 1 result['busStatus'] = '缴费成功后无欠费' self.db.execute('UPDATE %s SET flag = ?, queryresultcode = ?, updatetime = ? WHERE usercode = ?' %Global.GLOBAL_TABLE_PAYMENT_USER, (dbFlag, '0000000', DateUtil.getDate(format='%Y-%m-%d %H:%M:%S'), userCode)) self.conn.commit() result['status'] = 'SUCCESS' result['msg'] = '修改成功' except Exception, e: logger.error(u'切换状态失败') result['msg'] = u'修改失败'
def POST(self): args = web.input() logger.info(u'入参:%s' %args) amount = args.get('amount') result = {} if not amount or len(amount) == 0: result['status'] = 'FAIL' return try: addbalance = float(amount) if addbalance <=0: result['status'] = 'FAIL' return self.db.execute('SELECT balance FROM %s WHERE merchantkey = ? ORDER BY updatetime desc limit 1' %Global.GLOBAL_TABLE_BALANCE, (Global.GLOBAL_MERCHANTS.get('lencee'),)) querybalance = self.db.fetchone() balance = querybalance['balance'] balance = float(format(balance + addbalance, '.2f')) self.db.execute('UPDATE %s SET balance = ?, updatetime = ? WHERE merchantkey = ?' %Global.GLOBAL_TABLE_BALANCE, (balance, DateUtil.getDate(format='%Y-%m-%d %H:%M:%S'), Global.GLOBAL_MERCHANTS.get('lencee'))) self.conn.commit() result['status'] = 'SUCCESS' result['balance'] = balance except Exception, err: result['status'] = 'ABNORMAL' logger.error(u'增加商户预存款异常:%s' %err)
def POST(self): args = web.input() logger.info(u'入参:%s' %args) userCode = args.get('usercode') channelCode = args.get('channelcode') result = {} try: # 修改欠费明细滞纳金 self.db.execute('UPDATE %s SET breach = ?, updatetime = ? WHERE channelcode = ? AND usercode = ?' %Global.GLOBAL_TABLE_USER_ARREARS, ('0.0', DateUtil.getDate(format='%Y-%m-%d %H:%M:%S'), channelCode, userCode)) self.conn.commit() # 查询用户总欠费、滞纳金 self.db.execute('SELECT sum(itemmoney) paymentmoney, sum(breach) breach FROM %s WHERE usercode = ?' %Global.GLOBAL_TABLE_USER_ARREARS, (userCode, )) newInfo = self.db.fetchone() # 返回结果 result['status'] = 'SUCCESS' result['breach'] = '0.0' result['totalmoney'] = float(format(newInfo['paymentmoney'], '.2f')) result['totalbreach'] = float(format(newInfo['breach'], '.2f')) result['msg'] = '修改成功' except Exception, e: logger.error(u'清空滞纳金失败') result['msg'] = u'修改失败'
def applyBill(self, args): self.db.execute('SELECT * FROM %s WHERE usercode = ?' %Global.GLOBAL_TABLE_PAYMENT_USER, (args.get('userCode'),)) resultInfo = self.db.fetchone() if resultInfo == None: return None # 查询用户欠费信息 self.db.execute('SELECT * FROM %s WHERE usercode = ?' %Global.GLOBAL_TABLE_USER_ARREARS, (args.get('userCode'), )) userArrears = self.db.fetchall() paymentResultInfos = [] for arrear in userArrears: channelCode = arrear['channelcode'] itemOutSerialNo = '' for paymentItem in json.loads(args.get('paymentOrderItemList')): if str(channelCode) == str(paymentItem.get('channelCode')): itemOutSerialNo = paymentItem.get('itemOutSerialNo') info = { 'itemOutSerialNo': itemOutSerialNo, 'agencyCode': args.get('agencyCode'), 'userCode': args.get('userCode'), 'charge': arrear['breach'], 'itemNo': RandomUtil.random20Str(), 'money': arrear['itemmoney'], 'month': arrear['month'], 'count': str(arrear['count']), 'startCount': str(arrear['startcount']), 'endCount': str(arrear['endcount']), 'status': resultInfo['querystatus'], 'type': resultInfo['paymentType'], 'memo': resultInfo['memo'], 'address': resultInfo['address'], #'price': resultInfo['price'], 'username': resultInfo['username']} paymentResultInfos.append(info) easyLifeOrderNo = RandomUtil.random32Str() self.db.execute('SELECT balance FROM %s WHERE merchantkey = ? ORDER BY updatetime desc limit 1' %Global.GLOBAL_TABLE_BALANCE, (Global.GLOBAL_MERCHANTS.get('lencee'),)) querybalance = self.db.fetchone() if not querybalance: # 商户预存款未找到 pass balance = querybalance['balance'] if resultInfo['paymentstatus'] == 'SUCCESS': orderStatus = 'SUCCESS' resultCode = '0000000' # 修改商户预存款 balance = float(format(balance - float(args.get('paymentAmount')), '.2f')) self.db.execute('UPDATE %s SET balance = ?, updatetime = ? WHERE merchantkey = ?' %Global.GLOBAL_TABLE_BALANCE, (balance, DateUtil.getDate(format='%Y-%m-%d %H:%M:%S'), Global.GLOBAL_MERCHANTS.get('lencee'))) self.conn.commit() elif resultInfo['paymentstatus'] == 'FAIL': orderStatus = 'FAIL' resultCode = resultInfo['paymentresultcode'] elif resultInfo['paymentstatus'] == 'HANGUP': orderStatus = 'PROCESSING' resultCode = '0000107' # 是否保持挂起状态 if resultInfo['ishangup']: iskeephangup = 1 else: iskeephangup = 0 self.db.execute('INSERT INTO easylife_payment_order(easylifeorderno, outbizno, status, paymenttype, usercode, resultcode, paymentamount, iskeephangup, addtime, updatetime) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', (easyLifeOrderNo, args.get('outBizNo'), orderStatus, resultInfo['paymenttype'], args.get('userCode'), resultCode, float(args.get('paymentAmount')), iskeephangup, DateUtil.getDate(format='%Y-%m-%d %H:%M:%S'), DateUtil.getDate(format='%Y-%m-%d %H:%M:%S'))) self.conn.commit() # 如果用户表flag=1,更新用户查询结果码为:0000121 if resultInfo['flag'] == 1: self.db.execute('UPDATE %s SET queryresultcode = ? WHERE usercode = ?' %Global.GLOBAL_TABLE_PAYMENT_USER, ('0000121', args.get('userCode'),)) self.conn.commit() logger.info(u'更新用户%s查询结果码:%s' %(args.get('userCode'), '0000121')) result = { 'success': 'T', 'signType': 'MD5', 'outBizNo': args.get('outBizNo'), 'orderStatus': orderStatus, 'orderNo': args.get('orderNo'), 'easyLifeOrderNo': easyLifeOrderNo, 'channelId': RandomUtil.random6Str(), 'balance': balance, 'resultCode': resultInfo['paymentresultcode'], 'paymentResultInfos': '%s' %json.dumps(paymentResultInfos, ensure_ascii=False) } from operator import itemgetter import urllib sortList = sorted(result.iteritems(), key=lambda d:d[0]) sign = '&'.join(['%s=%s' %(k,v) for k,v in sortList]) sign += Global.GLOBAL_MERCHANTS.get('lencee') result['sign'] = MD5Util.md5(sign) return result
def init(): conn = SQLite.conn() conn.text_factory = str cursor = conn.cursor() # 创建缴费信息表 cursor.execute('''CREATE TABLE IF NOT EXISTS %s(easylifeorderno text, outbizno text, status text, paymenttype text, usercode text, resultcode text, paymentamount real, iskeephangup integer, addtime datetime, updatetime datetime)''' %(Global.GLOBAL_TABLE_PAYMENT)) # 创建商户预存款表 cursor.execute('''CREATE TABLE IF NOT EXISTS %s(merchantkey text, balance real, addtime datetime, updatetime datetime)''' %(Global.GLOBAL_TABLE_BALANCE)) # 创建缴费用户信息表 cursor.execute('''CREATE TABLE IF NOT EXISTS %s(usercode text, username text, querystatus text, queryresultcode text, address text, memo text, flag INTEGER, paymentstatus text, paymenttype text, paymentresultcode text, ishangup int, rechangestatus text, addtime datetime, updatetime datetime)''' %(Global.GLOBAL_TABLE_PAYMENT_USER)) # 创建用户欠费信息表 cursor.execute('''CREATE TABLE IF NOT EXISTS %s(channelcode test, usercode text, count real, startcount real, endcount real, price real, breach text, itemmoney real, month text, addtime datetime, updatetime datetime)''' %Global.GLOBAL_TABLE_USER_ARREARS) # 增加商户预存款信息 for mer in Global.GLOBAL_MERCHANTS: cursor.execute('SELECT * FROM %s WHERE merchantkey = ?' %Global.GLOBAL_TABLE_BALANCE, (Global.GLOBAL_MERCHANTS.get(mer),)) if cursor.fetchone(): continue cursor.execute('INSERT INTO %s(merchantkey, balance, addtime, updatetime) VALUES("%s", %.2f, "%s", "%s")' %(Global.GLOBAL_TABLE_BALANCE, Global.GLOBAL_MERCHANTS.get(mer), 10000, DateUtil.getDate(format='%Y-%m-%d %H:%M:%S'), DateUtil.getDate(format='%Y-%m-%d %H:%M:%S'))) cursor.execute('SELECT * FROM %s' %(Global.GLOBAL_TABLE_PAYMENT_USER)) if not cursor.fetchone(): for user in Global.GLOBAL_ACCOUNT: # 设置用户缴费后是否没有欠费信息标识 flag = 0 if user.get('flag'): flag = 1 # 添加用户数据 userCode = user.get('userCode') cursor.execute('INSERT INTO %s(usercode, username, querystatus, queryresultcode, address, memo, flag, paymentstatus, paymenttype, paymentresultcode, ishangup, rechangestatus, addtime, updatetime) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)' %Global.GLOBAL_TABLE_PAYMENT_USER, (userCode, user.get('userName'), user.get('queryStatus'), user.get('queryResultCode'), user.get('address'), user.get('memo'), flag, user.get('paymentStatus'), user.get('paymentType'), user.get('paymentResultCode'), user.get('isHangup'), user.get('rechangeStatus'), DateUtil.getDate(format='%Y-%m-%d %H:%M:%S'), DateUtil.getDate(format='%Y-%m-%d %H:%M:%S'))) conn.commit() # 增加用户欠费信息 userArrears = Global.GLOBAL_ACCOUNT_ARREARS.get(userCode) index = 0 if userArrears: for arrear in userArrears: itemMoney = float(format((arrear.get('count') * arrear.get('price')), '.2f')) cursor.execute('INSERT INTO easylife_user_arrears(channelcode, usercode, count, startcount, endcount, price, breach, itemmoney, month, addtime, updatetime) VALUES(?, ?, ?, ?, ?,?, ?, ?, ?, ?, ?)' %Global.GLOBAL_ACCOUNT_ARREARS, (RandomUtil.random9Str(), userCode, arrear.get('count'), arrear.get('startCount'), (arrear.get('count') + arrear.get('startCount')), arrear.get('price'), str(arrear.get('breach')), itemMoney, DateUtil.getCutDate(month=index), DateUtil.getDate(format='%Y-%m-%d %H:%M:%S'), DateUtil.getDate(format='%Y-%m-%d %H:%M:%S'))) conn.commit() index = index + 1 SQLite.close(conn)
def execute(self): self.db.execute('SELECT * FROM easylife_payment_order WHERE status=? AND iskeephangup=?', ('PROCESSING', 0)) procs = self.db.fetchall() account = {} for info in procs: self.db.execute('SELECT * FROM %s WHERE usercode = ?' %Global.GLOBAL_TABLE_PAYMENT_USER, (info['usercode'],)) account = self.db.fetchone() flagNum = 0 if account['rechangeStatus']: if account['rechangeStatus'] == 'SUCCESS': flagNum = 1 else: flagNum = 2 res = self.getresult(info['paymentAmount'], flagNum) self.db.execute('UPDATE easylife_payment_order SET status = ?, resultcode = ?, updatetime = ? WHERE easylifeorderno = ?', (res.get('status'), res.get('resultCode'), DateUtil.getDate(format='%Y-%m-%d %H:%M:%S'), info['easyLifeOrderNo'])) self.conn.commit() # 如果用户表flag=1,更新用户查询结果码为:0000121 if account['flag'] == 1: self.db.execute('UPDATE %s SET queryresultcode = ? WHERE usercode = ?' %Global.GLOBAL_TABLE_PAYMENT_USER, ('0000121', info['usercode'])) self.conn.commit() logger.info(u'更新用户%s查询结果码:%s' %(info['usercode'], '0000121')) logger.info(u'修改订单:%s状态为%s,剩余备付金:%s' %(info['easyLifeOrderNo'], res.get('status'), res.get('balance')))
def getresult(self, money, flagNum=0): result = {} if flagNum: num = flagNum else: num = random.randint(1,2) self.db.execute('SELECT balance FROM %s WHERE merchantkey = ? ORDER BY updatetime desc limit 1' %Global.GLOBAL_TABLE_BALANCE, (Global.GLOBAL_MERCHANTS.get('lencee'),)) querybalance = self.db.fetchone() if not querybalance: # 商户预存款未找到 pass balance = querybalance['balance'] if num == 1: result['status'] = 'SUCCESS' result['resultCode'] = '0000000' balance = float(format(balance - float(money), '.2f')) self.db.execute('UPDATE %s SET balance = ?, updatetime = ? WHERE merchantkey = ?' %Global.GLOBAL_TABLE_BALANCE, (balance, DateUtil.getDate(format='%Y-%m-%d %H:%M:%S'), Global.GLOBAL_MERCHANTS.get('lencee'))) self.conn.commit() else: result['status'] = 'FAIL' result['resultCode'] = '0000106' result['balance'] = balance return result