def get(self, request, **payload): self.params = {} self.params['product_id'] = request.GET.get('product_id') data = {} mysql = Mysql() sql = "SELECT * FROM mer_stock WHERE product_id = %s" stock = mysql.getAll(sql, param=[self.params['product_id']]) if stock: data['stock'] = stock sql = "SELECT spec_id, spec_name FROM mer_spec WHERE product_id = %s" spec_name = mysql.getAll(sql, param=[self.params['product_id']]) spec_info = [] if stock[0].get('stock_specs'): for i in spec_name: spec_deatil_dic = {} spec_deatil_dic['spec'] = i sql = "SELECT spec_detail_id, detail_name FROM mer_specdetail \ WHERE spec_id = %s" spec_detail = mysql.getAll(sql, param=[i.get('spec_id')]) spec_deatil_dic['spec_detail'] = spec_detail spec_info.append(spec_deatil_dic) data['spec_info'] = spec_info return HttpResponse(callJson(data)) mysql.dispose() return HttpResponse(0)
def get(self, request, **payload): self.params = {} self.params['mer_id'] = request.GET.get('mer_id') mysql = Mysql() sql = "SELECT * FROM mer_product WHERE mer_id = %s" info = mysql.getAll(sql, param=[self.params['mer_id']]) mysql.dispose() if info: return HttpResponse(callJson(info)) return HttpResponse(0)
def get(self, request, **payload): mer_id = request.GET.get('mer_id') # list mer_id = json.loads(mer_id) mysql = Mysql() data = {} for i in mer_id: sql = "SELECT * FROM mer_product WHERE mer_id = %s" product = mysql.getAll(sql, param=i) product = product if product else [] data[i] = product mysql.dispose() return HttpResponse(callJson(data))
def post(self, request): self._data_list = json.loads(request.POST.get('data_list')) new_list = [] for item in itertools.product(*self._data_list): new_list.append(list(item)) return HttpResponse(callJson(new_list)) # car = cartesian() # car.add_data([1,2]) # car.add_data([3,4]) # car.add_data([5,6,7]) # car.add_data([8,9]) # car.build()
def get(self, request, **payload): self.params = {} self.params['mer_name'] = request.GET.get('mer_name') self.params['mer_id'] = request.GET.get('mer_id') self.params['mer_type'] = request.GET.get('mer_type') mysql = Mysql() if self.params['mer_id']: sql = f"SELECT * FROM merchant WHERE mer_id={self.params['mer_id']}" else: sql = "SELECT * FROM merchant WHERE mer_name LIKE '%{mer_name}%' \ AND mer_type LIKE '%{mer_type}%' ORDER BY mer_hot DESC".format(mer_name=self.params['mer_name'], mer_type=self.params['mer_type']) info = mysql.getAll(sql) mysql.dispose() if info: return HttpResponse(callJson(info)) return HttpResponse(0)
def get(self, request, **payload): try: user_id = payload.get('user_id') mysql = Mysql() data = {} sql = "SELECT * FROM user_star_sign WHERE user_id = %s" result = mysql.getAll(sql, param=[user_id]) data = {'ret': 0, 'result': result} if not result: sql = "INSERT INTO user_star_sign SET user_id = %s " mysql.insertOne(sql, param=[user_id]) sql = "SELECT * FROM user_star_sign WHERE user_id = %s" info = mysql.getAll(sql, param=[user_id]) data = {'ret': 0, 'msg': '查询成功', 'result': info} sql = "SELECT unionId FROM userInfo WHERE id = %s" user_info = mysql.getOne(sql, param=[user_id]) if user_info.get('unionId'): sql = "SELECT * FROM h5_luckdraw_log WHERE unionid = %s AND state = 0" luckdraw_log = mysql.getAll(sql, param=[user_info.get('unionId')]) if luckdraw_log: patch_list = [] for i in luckdraw_log: patch_list.append(i.get('patch_id')) sql = 'UPDATE h5_luckdraw_log SET state = 1 WHERE id = %s' mysql.update(sql, param=[i.get('id')]) getPatch(user_id, patch_list, 3, 1, mysql) data['msg'] = '查询成功 碎片领取成功' sql = "SELECT * FROM user_star_sign WHERE user_id = %s" info = mysql.getAll(sql, param=[user_id]) data['result'] = info else: data['msg'] = '查询成功 无碎片领取' else: data['ret'] = -1 data['msg'] = '查询成功 但未绑定unionid 可能会导致h5抽奖碎片领取失败' mysql.dispose() return HttpResponse(callJson(data)) except Exception as e: print(e) mysql.errdispose() erroLog(e) return JsonResponse({'ret': -2, 'msg': '网络错误'})
def get(self, request, **payload): user_id = payload.get('user_id') row = request.GET.get('row') page = request.GET.get('page') mysql = Mysql() page, row = Pagings.mysqlPagings(page=page, row=row) sql = f"SELECT mp.order_num, mp.order_money, mp.wx_money, mp.balance, \ mp.hhcoin, mp.state, mp.create_time, mr.mer_name FROM mer_pay \ AS mp LEFT JOIN merchant AS mr ON mp.mer_id = mr.mer_id WHERE \ mr.mer_id IS NOT NULL AND mp.user_id = {user_id} limit {page}, {row}" info = mysql.getAll(sql) if info: # 总页数 sql = f"SELECT ceil(COUNT(mp.id) / 5) AS sum_page \ FROM mer_pay AS mp WHERE mp.user_id = {user_id} " sum_page = mysql.getOne(sql) # 总金额 sql = f"SELECT sum(wx_money+balance+0.1*hhcoin) AS sum_money \ FROM mer_pay WHERE user_id = {user_id}" sum_money = mysql.getOne(sql) # 本月订单数 sql = f"SELECT COUNT(*) AS month_orders FROM mer_pay \ WHERE DATE_FORMAT( create_time, '%Y%m' ) = \ DATE_FORMAT( CURDATE( ) , '%Y%m' ) AND user_id = {user_id}" month_orders = mysql.getOne(sql) # 总订单数 sql = f"SELECT COUNT(id) AS sum_order FROM mer_pay WHERE user_id = {user_id}" sum_order = mysql.getOne(sql) # 本月金额 sql = f"SELECT SUM(wx_money+balance) AS month_money \ FROM mer_pay WHERE DATE_FORMAT( create_time, '%Y%m' ) \ = DATE_FORMAT( CURDATE( ) , '%Y%m' ) AND user_id = {user_id}" month_money = mysql.getOne(sql) data = {} data['sum_page'] = sum_page.get('sum_page') data['sum_money'] = sum_money.get('sum_money') data['month_orders'] = month_orders.get('month_orders') data['sum_order'] = sum_order.get('sum_order') data['month_money'] = month_money.get('month_money') data['info'] = info mysql.dispose() return HttpResponse(callJson(data)) mysql.dispose() return HttpResponse(0)
def get(self, request, **payload): self.params = {} self.params['user_id'] = payload.get('user_id') mysql = Mysql() sql = "SELECT mer_orders.*, merchant.mer_name FROM mer_orders \ LEFT JOIN merchant ON mer_orders.mer_id = merchant.mer_id \ WHERE mer_orders.user_id = %s ORDER BY create_time DESC" order_info = mysql.getAll(sql, param=[self.params['user_id']]) if order_info: order_list = [] for i in order_info: data = {} data['orders'] = i sql = "SELECT * FROM mer_ordergoods WHERE order_num = %s" order_goods = mysql.getAll(sql, param=[i.get('order_num')]) data['order_goods'] = order_goods order_list.append(data) mysql.dispose() return HttpResponse(callJson(order_list)) mysql.dispose() return HttpResponse(0)
def see(self): cache_name = str(self.info['user_id']) + 'daily_quiz' mysql = Mysql() # 总数 sql = "SELECT COUNT(id) AS right_numbs FROM quiz_log WHERE user_id = %s and is_right = 1" right_numbs = mysql.getOne(sql, param=[self.info['user_id']]) right_numbs = right_numbs.get('right_numbs') if right_numbs else 0 # 连续正确回答数 sql = "SELECT correct FROM userInfo WHERE id = %s" serial_numbs = mysql.getOne(sql, param=[self.info['user_id']]) serial_numbs = serial_numbs.get('correct') # 检查是否参加 sql = "SELECT * FROM quiz_log WHERE user_id = %s \ AND to_days(create_time) = to_days(now())" check = mysql.getOne(sql, param=[self.info['user_id']]) # 已经参加过 if check: sql = "SELECT id, quiz_name FROM daily_quiz WHERE id = %s" info = mysql.getOne(sql, param=[check.get('quiz_id')]) sql = "SELECT id, answer, is_right FROM quiz_bank WHERE quiz_id =%s" answer = mysql.getAll(sql, param=[info.get('id')]) mysql.dispose() info['answer'] = answer info['right_numbs'] = right_numbs info['serial_numbs'] = serial_numbs info['choice_id'] = check.get('answer_id') return HttpResponse(returnJson(0, '查询成功', info)) # 没有参加过 随机抽一题 sql = "SELECT id, quiz_name FROM daily_quiz WHERE id NOT \ IN (SELECT quiz_id FROM quiz_log WHERE user_id = %s)" info = mysql.getAll(sql, param=[self.info['user_id']]) # 返回题目 if info: if cache.has_key(cache_name): data = json.loads(cache.get(cache_name)) return HttpResponse(returnJson(0, '查询成功', data)) info = random.choice(info) sql = "SELECT id, answer FROM quiz_bank WHERE quiz_id = %s" answer = mysql.getAll(sql, param=[info.get('id')]) mysql.dispose() info['answer'] = answer info['right_numbs'] = right_numbs info['serial_numbs'] = serial_numbs data = callJson(info) # 计算当时时间差 now = datetime.datetime.now() zero_today = now - datetime.timedelta(hours=now.hour, minutes=now.minute, seconds=now.second, microseconds=now.microsecond) + datetime.timedelta(days=1) t = (zero_today-now).seconds cache.set(cache_name, data, t) return HttpResponse(returnJson(0, '查询成功', info)) else: return HttpResponse(returnJson(-2, '每日一答出现错误'))
def get(self, request, **payload): mysql = Mysql() info = mysql.getAll(sql="SELECT * FROM merchant ORDER BY RAND() LIMIT 3") mysql.dispose() return HttpResponse(callJson(info))
def post(self, request, **payload): self.params = {} self.params['user_id'] = payload.get('user_id') self.params['order_num'] = Basedmethod.OrderNum() self.params['mer_id'] = request.POST.get('mer_id') #self.params['address'] = request.POST.get('address') self.params['phone'] = request.POST.get('phone') self.params['name'] = request.POST.get('name') 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() if not self.params['name']: return HttpResponse(3) # -------------------先做限量判定 如果 超过 返回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() data = callJson(data) return HttpResponse(data)
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 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))