Esempio n. 1
0
    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)
Esempio n. 2
0
    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}取消订单失败'))
Esempio n. 3
0
    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))
Esempio n. 4
0
    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': '网络繁忙'})
Esempio n. 5
0
 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
Esempio n. 6
0
File: mer.py Progetto: echodia/mixed
    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))