def post(self, request, **payload): self.params = {} self.params['user_id'] = payload.get('user_id') self.params['sales'] = float(request.POST.get('sales')) / 100 self.params['sum_money'] = request.POST.get('sum_money') self.params['mer_id'] = request.POST.get('mer_id') self.params['order_num'] = Basedmethod.OrderNum() print(self.params) cache_name = 'mer_pay-' + self.params['order_num'] if not self.params['mer_id'] or not self.params['user_id']: return HttpResponse(0) if self.params['sum_money'] <= 0: return HttpResponse(0) mysql = Mysql() hhcoin = int(self.params['sum_money'] - (self.params['sum_money'] * self.params['sales'])) if hhcoin < 1: hhcoin = 0 price = self.params['sum_money'] # ---------------------插入订单表--------------------- sql = "INSERT INTO mer_pay SET mer_id = %s, user_id = %s,\ order_num = %s, order_money = %s, state = 0" order_id = mysql.insertOne(sql, param=[ self.params['mer_id'], self.params['user_id'], self.params['order_num'], price ]) # ----------------------余额支付---------------------- user_info = mysql.getOne("SELECT money, hhcoin \ FROM userInfo WHERE id = %s", param=[self.params['user_id']]) user_price = int(user_info.get('money')) user_hhcoin = int(user_info.get('hhcoin')) #--------------------初始化参数----------------- real_coin = 0 #实际要扣除的盒盒币 real_balance = 0 #实际要支付的盒盒余额 real_wxprice = 0 #额外需要微信支付价格 #-------------抵扣盒盒币-------------------- real_coin = hhcoin if user_hhcoin >= hhcoin else user_hhcoin if real_coin > 0: # 扣盒盒币 up_sql, log_sql = Type_Log.coin_handle(user_id=self.params['user_id'], handle=1, num=real_coin, asd=0) mysql.update(up_sql) mysql.update(log_sql) real_wxprice = price - real_coin #-----------抵扣余额--------------- real_balance = real_wxprice if user_price >= real_wxprice else user_price if real_balance > 0: #扣余额 up_sql, log_sql = Type_Log.balance_log(user_id=self.params['user_id'], handle=1, money=real_balance, asd=0, order_num=self.params['order_num']) mysql.update(up_sql) mysql.update(log_sql) #(实际需要支付的微信价钱) real_wxprice = real_wxprice - real_balance #---------微信支付尾款(是否需要微信支付)------- data = {} data['order_num'] = self.params['order_num'] data['balance'] = real_balance data['hhcoin'] = real_coin state = 1 if real_wxprice == 0 else 0 #订单状态 0未付款 1代发货 pay_time = 'NOW()' if state == 1 else 'NULL' if state==1: #微信不需要再付钱 data['msg'] = 'OK' else: #需要微信支付尾款 data['msg'] = 'FAIL' data['res_price'] = real_wxprice data['erro_info'] = '已扣除盒盒币,请微信支付尾款!' # 挂起待支付订单 t = Open_Redis(2) open_redis = t.getConn() cache = callJson(data) open_redis.set(cache_name, cache, ex=900) sql = "UPDATE mer_pay SET order_money=%s, wx_money='0', \ balance=%s, hhcoin=%s, state=%s, pay_time=%s WHERE id=%s" mysql.update(sql, param=[ self.params['sum_money'], real_balance, real_coin, state, pay_time, order_id ]) mysql.dispose() data = callJson(data) return HttpResponse(data)
def cancel(self): data = {} mysql = Mysql() sql = "SELECT o.createUser, o.state, o.wxMoney, o.balance, \ o.heheCoin,p.id product_id,p.user_goods_limit FROM orders o \ LEFT JOIN ordergoods og on o.orderNum=og.order_id \ LEFT JOIN product p on og.product_id=p.id \ WHERE orderNum =%s AND (o.state = 1 OR o.state = 0)" info = mysql.getAll(sql, param=[self.info['order_num']]) if not info: return HttpResponse(returnJson(-2, '订单号不存在')) sum_balance = int(info[0].get('balance')) sum_hhcoin = int(info[0].get('heheCoin')) #已付款限量不回滚 state = '未定义' if int(info[0].get('state')) == 1: state = '已付款订单' sum_balance += int(info[0].get('wxMoney')) #待支付限量回滚 holds=[] if int(info[0].get('state')) == 0: state = '未付款订单' for limit_numb in info: if limit_numb.get('user_goods_limit') != 0: limit_data = {} limit_data['key'] = 'product_1909_' + str(limit_numb.get('product_id')) holds.append(limit_data) if holds: #此处关闭了数据库连接 check_limit = hold_huigun(holds=holds, mysql=mysql, user_id=info[0].get('createUser') ) if check_limit['ret'] == -2: return JsonResponse(check_limit) mysql = Mysql() if sum_balance != 0: #退余额 up_sql, log_sql = Type_Log.balance_log( user_id=info[0].get('createUser'), handle=3, money=sum_balance, asd=1, order_num=self.info['order_num'] ) mysql.update(up_sql) mysql.insertOne(log_sql) if sum_hhcoin != 0: #退盒盒币 up_sql, log_sql = Type_Log.coin_handle( user_id=info[0].get('createUser'), handle=9, num=sum_hhcoin, asd=1) mysql.update(up_sql) mysql.getOne(log_sql) #改状态 sql = "UPDATE orders SET state = '5' WHERE orderNum = %s" check = mysql.update(sql, param=[self.info['order_num']]) if check: mysql.dispose() return HttpResponse(returnJson(0, f'{state}取消订单成功')) mysql.errdispose() return HttpResponse(returnJson(-2, f'{state}取消订单失败'))
def placeOrder(self): cache_name = getOrderNum('ShopOrder') #----------------------2019-09-16限量---------------------- mysql = Mysql() holds = [] for i in self.info['stock_list']: stock_num = int(i.get('num')) if not isinstance(stock_num, int) or stock_num <= 0: mysql.dispose() return HttpResponse(returnJson(-2, '商品数量出现错误')) sql = "SELECT product_id, stock_name FROM stock WHERE id = %s" stock_info = mysql.getOne(sql, param=[i.get('stock_id')]) sql = "SELECT user_goods_limit FROM product WHERE id = %s" limit_numb = mysql.getOne(sql, param=[stock_info.get('product_id')]) if limit_numb.get('user_goods_limit') != 0: limit_data = {} limit_data['key'] = 'product_1909_' + str(stock_info.get('product_id')) limit_data['use'] = stock_num limit_data['total'] = limit_numb.get('user_goods_limit') limit_data['ext'] = stock_info.get('stock_name') holds.append(limit_data) if holds: check_limit = hold_yukou(holds=holds, mysql=mysql, user_id=self.info['user_id'], source='商城购买') if check_limit['ret'] == -2: return JsonResponse(check_limit) #----------------------插入到订单表---------------------- print('插入订单表') mysql = Mysql() sql = "INSERT INTO orders SET orderNum=%s, store_id=%s, \ createUser=%s, address=%s,Consignee=%s, mobile=%s, \ sendTime=%s, remark=%s, state=0, freight=%s" order_id = mysql.insertOne(sql, param=[ self.info['order_num'], self.info['stock_list'][0].get('store_id'), self.info['user_id'], self.info['address'], self.info['Consignee'], self.info['phone'], self.info['sendTime'], self.info['remark'], int(self.info['freight']) ]) price = 0 hhcoin = 0 #插入到订单商品表 for i in self.info['stock_list']: stock_num = int(i.get('num')) sql = "SELECT stock_name, img, price, hehecoin, store_id,\ stock_detail, product_id FROM stock WHERE id = %s" stock_info = mysql.getOne(sql, param=[i.get('stock_id')]) price += int(stock_info.get('price')) * stock_num hhcoin += int(stock_info.get('hehecoin')) * stock_num sql = "INSERT INTO ordergoods SET order_id=%s, \ stock_id=%s, num=%s, money=%s, stock_hhcoin=%s, \ stock_img=%s, product_id=%s, stock_detail=%s, \ stock_name=%s, store_id=%s" mysql.insertOne(sql, param=[ self.info['order_num'], i.get('stock_id'), stock_num, stock_info.get('price'), stock_info.get('hehecoin'), stock_info.get('img'), stock_info.get('product_id'), stock_info.get('stock_detail'), stock_info.get('stock_name'), stock_info.get('store_id') ]) # ----------------------余额支付---------------------- user_info = mysql.getOne("SELECT money, hhcoin \ FROM userInfo WHERE id = %s", param=[self.info['user_id']]) user_price = int(user_info.get('money')) user_hhcoin = int(user_info.get('hhcoin')) #初始化参数 real_coin = 0 #实际要扣除的盒盒币 real_balance = 0 #实际要支付的盒盒余额 real_wxprice = 0 #额外需要微信支付价格 #抵扣盒盒币 real_coin = hhcoin if user_hhcoin >= hhcoin else user_hhcoin if real_coin > 0: # 扣盒盒币 up_sql, log_sql = Type_Log.coin_handle(user_id=self.info['user_id'], handle=1, num=real_coin, asd=0) mysql.update(up_sql) mysql.update(log_sql) real_wxprice = price - real_coin #抵扣余额 real_balance = real_wxprice if user_price >= real_wxprice else user_price if real_balance > 0: #扣余额 up_sql, log_sql = Type_Log.balance_log(user_id=self.info['user_id'], handle=1, money=real_balance, asd=0, order_num=self.info['order_num']) mysql.update(up_sql) mysql.update(log_sql) mysql.dispose() #(实际需要支付的微信价钱) real_wxprice = real_wxprice - real_balance #微信支付尾款(是否需要微信支付) data = {} data['order_num'] = self.info['order_num'] data['balance'] = real_balance data['hhcoin'] = real_coin state = 1 if real_wxprice == 0 else 0 #订单状态 0未付款 1代发货 if state == 1: #微信不需要再付钱 data['msg'] = 'OK' #实扣限量 if holds: shikou_data = hold_shikou(holds=holds, user_id=self.info['user_id']) if shikou_data['ret'] == -2: return JsonResponse(shikou_data) else: #需要微信支付尾款 data['msg'] = 'FAIL' data['res_price'] = real_wxprice data['erro_info'] = '已扣除盒盒币,请微信支付尾款!' #挂起待支付订单 open_redis = Open_Redis().getConn(2) cache = json.dumps(callJson(data)) open_redis.set(cache_name, cache, ex=900) mysql = Mysql() sql = "UPDATE orders SET orderMoney=%s, wxMoney=%s, \ balance=%s, heheCoin=%s, state=%s WHERE id=%s" mysql.update(sql, param=[price, real_wxprice, real_balance, real_coin, state, order_id]) mysql.dispose() return HttpResponse(callJson(data))
def post(self, request): user_id = request.POST.get('user_id') bu_id = request.POST.get('bu_id') try: mysql = Mysql() sql = "SELECT * FROM bargain_user WHERE id = %s AND state = 1 FOR UPDATE" check = mysql.getOne(sql, param=[bu_id]) # print('用户', user_id, datetime.datetime.now()) # time.sleep(3) # print('用户', user_id, datetime.datetime.now()) if not check: mysql.dispose() return JsonResponse({'ret': -2, 'msg': '不存在该砍价'}) if int(check.get('user_id')) == int(user_id): mysql.dispose() return JsonResponse({'ret': -2, 'msg': '自己发起的砍价活动不能砍价'}) # sql = "SELECT * FROM(SELECT COUNT(*) AS c FROM bargain_log \ # WHERE bu_id = %s AND user_id = %s) as bl WHERE c >= 3" sql = "SELECT * FROM bargain_log WHERE \ bu_id = %s AND user_id = %s" ck_bl = mysql.getOne(sql, param=[bu_id, user_id]) if ck_bl: mysql.dispose() return JsonResponse({'ret': -2, 'msg': '该商品个人砍价次数达到上限'}) sql = "SELECT * FROM (SELECT \ COUNT(*) AS c \ FROM \ bargain_log \ WHERE \ user_id = %s \ AND to_days(create_time) = to_days(now())) AS numbs WHERE c > 4" ck_bl = mysql.getOne(sql, param=[user_id]) if ck_bl: mysql.dispose() return JsonResponse({'ret': -2, 'msg': '一天最多砍五个商品'}) #查询必要数据 sql = "SELECT lowest_price, need_hhcoin, original_price FROM \ bargain_product WHERE id = %s" bp_info = mysql.getOne(sql, param=[check.get('bp_id')]) #最低价钱 lowest_price = int(bp_info.get('lowest_price')) #每刀所需盒盒币 need_hhcoin = int(bp_info.get('need_hhcoin')) #查询盒盒币是否够 sql = "SELECT hhcoin FROM userInfo WHERE id = %s FOR UPDATE" hhcoin = mysql.getOne(sql, param=[user_id]) hhcoin = hhcoin.get('hhcoin') if hhcoin < need_hhcoin: mysql.errdispose() return JsonResponse({'ret': -2, 'msg': '盒盒币不足'}) #是否第一次砍价 sql = "SELECT id FROM bargain_log WHERE bu_id = %s" first = mysql.getOne(sql=sql, param=[bu_id]) print(190) print(first) is_first = False if first else True #原价 original_price = int(bp_info.get('original_price')) #现价 present_price = int(check.get('present_price')) #剩余可砍价 print(present_price - lowest_price) #五毛直接砍掉 if present_price - lowest_price < 50: cut_price = present_price - lowest_price #砍掉的价钱和增加的价钱 else: cut_price = self.bargain(bg_price=present_price - lowest_price, first=is_first) #加钱 add_price = self.rand_pick() #砍掉后的价钱 real_price = present_price - cut_price print('砍掉后的价钱') print(real_price) print('增加的价钱') print(add_price) #如果砍超 # if lowest_price > real_price: # print("砍过头了", cut_price) # cut_price = present_price - lowest_price # real_price = lowest_price # mysql.errdispose() # return HttpResponse("砍过头了") #砍价日志 sql = "INSERT INTO bargain_log SET bu_id = %s, user_id = %s, \ bargain_money = %s , obtain_money = %s, consume_hhcoin = %s, \ current_price = %s" mysql.insertOne(sql, param=[ bu_id, user_id, cut_price, add_price, need_hhcoin, real_price ]) sql = "UPDATE bargain_user SET nowcut_price = nowcut_price + %s, \ present_price = %s WHERE id = %s" mysql.update(sql, param=[cut_price, real_price, bu_id]) #日志 #增加余额 up_sql, log_sql = Type_Log.balance_log(user_id=user_id, handle=4, money=add_price * 0.01, asd=1) mysql.update(up_sql) mysql.insertOne(log_sql) #减少盒盒币 up_sql, log_sql = Type_Log.coin_handle(user_id=user_id, handle=11, num=need_hhcoin, asd=0) mysql.update(up_sql) mysql.insertOne(log_sql) mysql.dispose() return JsonResponse({ 'ret': 0, 'msg': "砍价成功", 'add_price': add_price, 'cut_price': cut_price, 'now_price': real_price, 'nowcut_price': original_price - real_price }) except Exception as e: print(e) mysql.errdispose() return JsonResponse({'ret': -2, 'msg': '网络繁忙'})
def turntable_prize(self, user_id): turntable_id = self.turntable() mysql = Mysql() sql = "SELECT prize.id, prize_type, prize_detail FROM probability as p \ LEFT JOIN prize ON p.prize_id = prize.id WHERE p.id = {turntable}".format(turntable=turntable_id) print(sql) info = mysql.getOne(sql) data = {} data['turntable_id'] = turntable_id data['prize_id'] = info.get('id') data['prize_type'] = info.get('prize_type') data['prize_detail'] = info.get('prize_detail') #查询限量总数 sql = "SELECT all_limit, one_limit FROM prize WHERE id = '{prize_id}'".format(prize_id=data['prize_id']) #奖品限量字典 limit_num = mysql.getOne(sql) all_limit_num = int(limit_num.get('all_limit')) one_limit_num = int(limit_num.get('one_limit')) sql = "SELECT COUNT(id) as count FROM reward_log WHERE prize_id = '{prize_id}'".format(prize_id=data['prize_id']) #全部已抽中奖品总数 all_num = mysql.getOne(sql) sql = "SELECT COUNT(id) as count FROM reward_log WHERE prize_id = '{prize_id}' \ AND user_id = '{user_id}'".format(prize_id=data['prize_id'], user_id=user_id) #个人抽中奖品总数 one_num = mysql.getOne(sql) if all_num: all_num = all_num.get('count') if all_num >= all_limit_num and all_limit_num != 0: print('总数被抽完') #商品已被抽完 mysql.dispose() return 2 else: pass if one_num: one_num = one_num.get('count') if one_num >= one_limit_num and one_limit_num != 0: #个人中奖次数已达上限 print('个人次数抽完') mysql.dispose() return 3 else: pass #还有剩余总数 继续抽奖 try: #自营类商品 if int(data['prize_type']) == 1: #查询商品相关信息 sql = "SELECT prize_stock.stock_numb, stock.id, stock.stock_name \ FROM prize_stock LEFT JOIN stock ON prize_stock.stock_id = stock.id \ WHERE prize_stock.prize_id={prize_id}".format(prize_id=data['prize_id']) stock_info = mysql.getOne(sql) data['stock_numb'] = int(stock_info.get('stock_numb')) data['stock.id'] = stock_info.get('id') data['stock_name'] = stock_info.get('stock_name') + data['prize_detail'] #查询以中总量 sql = "SELECT COUNT(id) as count FROM reward_log WHERE prize_id = '{prize_id}'".format(prize_id=data['prize_id']) real_numb = mysql.getOne(sql) real_numb = int(real_numb.get('count')) #如果超过限量返回谢谢惠顾 if real_numb >= data['stock_numb']: sql = "SELECT probability.id, probability.prize_id FROM probability LEFT JOIN prize \ ON prize.id = probability.prize_id WHERE prize.prize_type =8" # probability_info = mysql.getOne(sql) # data['turntable_id'] = probability_info.get('id') # data['prize_id'] = probability_info.get('prize_id') data['prize_type'] = 9 # data['prize_detail'] = '谢谢惠顾' # data['warning_info'] = '其实我是自营商品 但是我没有了' int(data['prize_type']) == 9 #没超过 让他中奖 else: re_log = Type_Log.reward_log(user_id=user_id, prize_id=data['prize_id'], detail=data['stock_name'], prize_type=1, get=0) mysql.insertOne(re_log) mysql.dispose() return data #外部类商品 if int(data['prize_type']) == 2: re_log = Type_Log.reward_log(user_id=user_id, prize_id=data['prize_id'], detail=data['prize_detail'], prize_type=2, get=0) mysql.insertOne(re_log) mysql.dispose() return data #卷码类型 if int(data['prize_type']) == 3: sql = "SELECT * FROM prize_coupon WHERE prize_id = '{prize_id}' \ AND `get` = '1' ORDER BY id".format(prize_id=info.get('id')) coupon = mysql.getOne(sql) print('卷码') if coupon: print('还有卷码') coupon_detail = coupon.get('coupon') sql = "UPDATE prize_coupon SET `get` = 1 WHERE id = '{coupon_id}'".format(coupon_id=coupon.get('id')) mysql.update(sql) detail = data['prize_detail'] + coupon_detail data['prize_detail'] = detail re_log = Type_Log.reward_log(user_id=user_id, prize_id=data['prize_id'], detail=detail, prize_type=3, get=1) mysql.insertOne(re_log) mysql.dispose() return data else: print('卷码不够') sql = "SELECT probability.id, probability.prize_id FROM probability LEFT JOIN prize \ ON prize.id = probability.prize_id WHERE prize.prize_type =8" probability_info = mysql.getOne(sql) data['turntable_id'] = probability_info.get('id') data['prize_id'] = probability_info.get('prize_id') data['prize_type'] = 9 data['prize_detail'] = '谢谢惠顾' data['warning_info'] = '其实我是优惠卷 但是我没有了' int(data['prize_type']) == 9 #二维码类型 if int(data['prize_type']) == 4: print('测试二维码') re_log = Type_Log.reward_log(user_id=user_id, prize_id=data['prize_id'], detail=data['prize_detail'], prize_type=4, get=1) mysql.insertOne(re_log) mysql.dispose() new_data = data return new_data #盒盒币 if int(data['prize_type']) == 5: sql = "SELECT num FROM prize_phv WHERE prize_id = {prize_id}".format(prize_id=data['prize_id']) num = mysql.getOne(sql) num = int(num.get('num')) up_sql, log_sql = Type_Log.coin_handle(user_id=user_id, handle=6, num=num, asd=1) mysql.update(up_sql) mysql.insertOne(log_sql) re_log = Type_Log.reward_log(user_id=user_id, prize_id=data['prize_id'], detail=data['prize_detail'], prize_type=5, get=1) mysql.insertOne(re_log) mysql.dispose() return data #账号vip if int(data['prize_type']) == 6: print('账号vip') sql = "SELECT num FROM prize_phv WHERE prize_id = {prize_id}".format(prize_id=info.get('id')) vip_time = mysql.getOne(sql) vip_time = int(vip_time.get('num')) sql = "UPDATE userInfo SET vipEndTime = DATE_ADD(vipEndTime,INTERVAL {vip_time} MONTH) \ WHERE id = '{user_id}'".format(vip_time=vip_time, user_id=user_id) mysql.update(sql) re_log = Type_Log.reward_log(user_id=user_id, prize_id=data['prize_id'], detail=data['prize_detail'], prize_type=6, get=1) mysql.insertOne(re_log) mysql.dispose() new_data = data return new_data #余额 if int(data['prize_type']) == 7: print('余额') sql = "SELECT num FROM prize_phv WHERE prize_id = {prize_id}".format(prize_id=info.get('id')) money = mysql.getOne(sql) money = float(money.get('num')) up_sql, log_sql = Type_Log.balance_log(user_id=user_id, handle=2, money=money, asd=1) mysql.update(up_sql) mysql.insertOne(log_sql) re_log = Type_Log.reward_log(user_id=user_id, prize_id=data['prize_id'], detail=data['prize_detail'], prize_type=7, get=1) mysql.insertOne(re_log) mysql.dispose() return data #谢谢惠顾 if int(data['prize_type']) == 8: print('谢谢惠顾') re_log = Type_Log.reward_log(user_id=user_id, prize_id=data['prize_id'], detail=data['prize_detail'], prize_type=8, get=1) mysql.insertOne(re_log) mysql.dispose() return data #商品没了 继续抽 抽中为止 if int(data['prize_type']) == 9: print('商品没了 继续抽 抽中为止') return self.turntable_prize(user_id=user_id) except Exception as e: print(e) mysql.errdispose() return False
def payOrder(self): self.params['order_num'] = getOrderNum('MerOrder-') self.params['stock_list'] = json.loads(request.POST.get('stock_list')) #[{'stockid':1, 'product_img':sss,'stocknum':33}, {'stockid':1, 'stocknum':33}] print(self.params) cache_name = 'mer_order-' + self.params['order_num'] mysql = Mysql() # -------------------先做限量判定 如果 超过 返回2------------------- for x in self.params['stock_list']: sql = "SELECT min_buy, max_buy FROM mer_stock WHERE stock_id = %s" check = mysql.getOne(sql, param=[x.get('stockid')]) min_buy = int(check.get('min_buy')) max_buy = int(check.get('max_buy')) stock_num = int(x.get('stocknum')) if (min_buy > stock_num or max_buy < stock_num) and min_buy != 0 and max_buy != 0: mysql.dispose() return HttpResponse(2) # -------------------插入到订单表----------------- sql = "INSERT INTO mer_orders SET order_num=%s, \ mer_id=%s, user_id=%s, `name`=%s, phone=%s" order_id = mysql.insertOne(sql, param=[ self.params['order_num'], self.params['mer_id'], self.params['user_id'], self.params['name'], self.params['phone'] ]) price_list = [] hhcoin_list = [] for i in self.params['stock_list']: sql = "SELECT price, hhcoin, stock_name FROM mer_stock WHERE \ stock_id = %s" stock_info = mysql.getOne(sql, param=[i.get('stockid')]) price_list.append( int(stock_info.get('price')) * int(i.get('stocknum'))) hhcoin_list.append( int(stock_info.get('hhcoin')) * int(i.get('stocknum'))) sql = "INSERT INTO mer_ordergoods SET order_num=%s, \ mer_stockid=%s, mer_stockprice=%s, mer_stockhhcoin=%s, \ mer_stockname=%s, mer_stocknum=%s, mer_product_img=%s " mysql.insertOne(sql=sql, param=[ self.params['order_num'], i.get('stockid'), stock_info.get('price'), stock_info.get('hhcoin'), stock_info.get('stock_name'), i.get('stocknum'), i.get('product_img') ]) # 一个盒盒币0.1元 price = sum(price_list) hhcoin = sum(hhcoin_list) # ----------------------余额支付---------------------- user_info = mysql.getOne("SELECT money, hhcoin \ FROM userInfo WHERE id = %s", param=[self.params['user_id']]) user_price = int(user_info.get('money')) user_hhcoin = int(user_info.get('hhcoin')) #--------------------初始化参数----------------- real_coin = 0 #实际要扣除的盒盒币 real_balance = 0 #实际要支付的盒盒余额 real_wxprice = 0 #额外需要微信支付价格 #-------------抵扣盒盒币-------------------- real_coin = hhcoin if user_hhcoin >= hhcoin else user_hhcoin if real_coin > 0: # 扣盒盒币 up_sql, log_sql = Type_Log.coin_handle( user_id=self.params['user_id'], handle=1, num=real_coin, asd=0) mysql.update(up_sql) mysql.update(log_sql) real_wxprice = price - real_coin #-----------抵扣余额--------------- real_balance = real_wxprice if user_price >= real_wxprice else user_price if real_balance > 0: #扣余额 up_sql, log_sql = Type_Log.balance_log( user_id=self.params['user_id'], handle=1, money=real_balance, asd=0, order_num=self.params['order_num']) mysql.update(up_sql) mysql.update(log_sql) #(实际需要支付的微信价钱) real_wxprice = real_wxprice - real_balance #---------微信支付尾款(是否需要微信支付)------- data = {} data['order_num'] = self.params['order_num'] data['balance'] = real_balance data['hhcoin'] = real_coin state = 1 if real_wxprice == 0 else 0 #订单状态 0未付款 1代发货 pay_time = 'NOW()' if state == 1 else 'NULL' if state == 1: #微信不需要再付钱 data['msg'] = 'OK' else: #需要微信支付尾款 data['msg'] = 'FAIL' data['res_price'] = real_wxprice data['erro_info'] = '已扣除盒盒币,请微信支付尾款!' open_redis = Open_Redis().getConn(2) cache = callJson(data) open_redis.set(cache_name, cache, ex=900) sql = "UPDATE mer_orders SET order_money=%s, wx_money='0', \ balance=%s, hh_coin=%s, state=%s, `get`=0, \ pay_time=%s WHERE order_id=%s" mysql.update(sql, param=[ real_balance + real_wxprice, real_balance, real_coin, state, pay_time, order_id ]) mysql.dispose() return HttpResponse(callJson(data))