def order_invoice(request): p = {} p['code'] = 0 if request.method != 'GET': p['msg'] = 'Only POSTs are allowed' return HttpResponse(json.dumps(p), content_type="application/json") cds = request.GET user_id = cds.get('user_id', '') invoi = NewOrder.objects.filter(order_pay_status=20) if user_id: p['code'] = 1 p['msg'] = 'request success' p['data'] = [] for inv in invoi.filter(order_userid=user_id).order_by('-id'): p['data'].append(output_invoice(inv)) return HttpResponse(json.dumps(p), content_type="application/json") phone = cds.get('phone', '') order_number = cds.get('order_number', '') if phone: invoi += invoi.filter(order_tel=phone) if order_number: invoi += invoi.filter(order_number=order_number) if phone or order_number: p['code'] = 1 p['msg'] = 'request success' p['data'] = [] p['event'] = [] p['order'] = [] for inv in invoi.filter(user__id=user_id).order_by('-id'): NewOrder.objects state = 0 if invoi.invoicerecord_set.count() > 0: try: ce = invoi.invoicerecord_set.all()[0] state = ce.state except: pass p['data'].append({ 'event': getevent(inv.event_id), 'order': output_order(inv), 'state': state, 'money': float(inv.order_totalpay) }) p['order'].append(output_order(inv)) p['event'].append(getevent(inv.event_id)) return HttpResponse(json.dumps(p), content_type="application/json")
def search_geo(request): var = {} var['code'] = 1 var['msg'] = '' var['list'] = [] lat = request.GET.get('lat') lon = request.GET.get('lon') kw = request.GET.get('keywords', '') radius = float(request.GET.get('rad', 10000.)) (page, offset) = getPageAndOffset(request.GET) start = (page - 1) * offset end = page * offset if kw: kw = re.sub(r'[-~!@#$%^&*()_=+\[\]{};\':",.<>/?]+', ' ', kw) kw = '|'.join(kw.split()) if lat and lon: lat = math.radians(float(lat)) lon = math.radians(float(lon)) ids = search_dis(lat, lon, kw, radius) var['list'] = [ getevent(old_id, request.GET.get('new', False), request.GET.get('version', '')) for old_id in ids[start:end] ] else: var['msg'] = u'没有经纬度' return HttpResponse(json.dumps(var), content_type="application/json")
def search_geo(request): var = {} var['code'] = 1 var['msg'] = '' var['list'] = [] lat = request.GET.get('lat') lon = request.GET.get('lon') kw = request.GET.get('keywords', '') radius = float(request.GET.get('rad', 10000.)) (page,offset) = getPageAndOffset(request.GET) start = (page-1)*offset end = page*offset if kw: kw = re.sub(r'[-~!@#$%^&*()_=+\[\]{};\':",.<>/?]+', ' ', kw) kw = '|'.join(kw.split()) if lat and lon: lat = math.radians(float(lat)) lon = math.radians(float(lon)) ids = search_dis(lat, lon, kw, radius) var['list'] = [getevent(old_id, request.GET.get('new',False), request.GET.get('version','')) for old_id in ids[start:end]] else: var['msg'] = u'没有经纬度' return HttpResponse(json.dumps(var), content_type="application/json")
def order_invoice(request): p={} p['code']=0 if request.method != 'GET': p['msg']='Only POSTs are allowed' return HttpResponse(json.dumps(p), content_type="application/json") cds = request.GET user_id = cds.get('user_id','') invoi=NewOrder.objects.filter(order_pay_status = 20) if user_id: p['code']=1 p['msg']='request success' p['data']=[] for inv in invoi.filter(order_userid=user_id).order_by('-id'): p['data'].append(output_invoice(inv)) return HttpResponse(json.dumps(p), content_type="application/json") phone = cds.get('phone','') order_number = cds.get('order_number','') if phone: invoi+=invoi.filter(order_tel=phone) if order_number: invoi+=invoi.filter(order_number=order_number) if phone or order_number: p['code']=1 p['msg']='request success' p['data']=[] p['event']=[] p['order']=[] for inv in invoi.filter(user__id=user_id).order_by('-id'): NewOrder.objects state=0 if invoi.invoicerecord_set.count()>0: try: ce=invoi.invoicerecord_set.all()[0] state=ce.state except: pass p['data'].append({'event':getevent(inv.event_id),'order':output_order(inv),'state':state,'money':float(inv.order_totalpay)}) p['order'].append(output_order(inv)) p['event'].append(getevent(inv.event_id)) return HttpResponse(json.dumps(p), content_type="application/json")
def SearchKey(request): cds = request.GET keyword = cds.get('keywords',None) cityid = cds.get('city',None) p={} p['code']=1 p['cat']=getcat(4) p['city']=getCity() if not keyword: p['msg']='keyword Fail' return HttpResponse(json.dumps(p), content_type="application/json") if len(keyword) > 20: p['msg']='keyword Fail' return HttpResponse(json.dumps(p), content_type="application/json") else: #events_lis = mc.get(keyword+'_search_lis') keyword= keyword.replace('/',' ') keyword= keyword.replace(',',' ') events_lis = cache.get('_'.join(keyword.split())+'_search_lis') p['code']=1 p['msg']='Request is successful' p['keys']=keyword p['list'] =[] if not events_lis: ids=[] for key in keyword.split(): ids.extend(search(key)) if ids: try: tag=NewEventTag.objects.get(name=keyword) tag.hot=tag.hot+1 tag.save() except: try: NewEventTag.objects.create(name=keyword,hot=1) except: pass cache.set('_'.join(keyword.split())+'_search_lis',events_lis,300) events_lis = feelnum.objects.filter(event__old_event__in = ids)#.order_by('district_id='+str(district_id),'event_begin_time') if cityid: try: events_lis = events_lis.filter(event__city__in=cityid.split(',')) except: pass p['list'] = [getevent(item.event.old_event_id) for item in events_lis[0:10]] response = json.dumps(p) return HttpResponse(response, mimetype="application/json")
def EventInfoApi(request): if request.method != 'GET': return HttpResponse(json.dumps({"code":0,"msg":"Only GETs are allowed","list":[]}), content_type="application/json") cds = request.GET eventid = cds.get('eventid',None) p={} p['code']=1 p['msg']='Request is successful' p['data']=getevent(eventid,cds.get('new',False),cds.get('version','')) response = json.dumps(p) return HttpResponse(response, mimetype="application/json")
def EventInfoApi(request): if request.method != 'GET': return HttpResponse(json.dumps({"code":0,"msg":"Only GETs are allowed","list":[]}), content_type="application/json") cds = request.GET eventid = cds.get('eventid',None) p={} p['code']=1 p['msg']='Request is successful' # always use the newest version:for now, it is v1.2 p['data']=getevent(eventid,cds.get('new',False), '1.2') p['data']=test_xml(eventid) response = json.dumps(p) return HttpResponse(response, mimetype="application/json")
def searchOrder(request): cds = request.GET key = cds.get('key') order_list = [] data = cds['data'] if key == 'user_id': order_list = NewOrder.objects.filter(order_userid=int(data)) elif key == 'phone': order_list = NewOrder.objects.filter(order_tel=data) elif key == 'order_number': order_list = NewOrder.objects.filter(order_number=data) else: return HttpResponse(json.dumps({ "code": 0, "msg": 'key error' }), content_type="application/json") list = [] for item in order_list.order_by('-order_addtime'): order_pay_status = "未付款" if item.order_pay_status == 20: order_pay_status = '已付款' elif item.order_pay_status == 30: order_pay_status = '退款' else: pass order_status = '未处理' if item.order_status == 10: order_status = '正在处理' dicOrder = { 'price': float(item.order_price), 'order_id': item.order_number, 'user_id': item.order_userid, 'addtime': item.order_addtime, 'name': item.order_user_name, 'phone': item.order_tel, 'address': item.order_address, 'message': item.order_text, "total": float(item.order_totalpay), "amount": item.order_amount, "order_pay_status": order_pay_status, "order_status": order_status, } event = getevent(item.event_id) list.append({'order': dicOrder, 'event': event}) res = {'code': 1, 'message': 'request success', 'list': list} return HttpResponse(json.dumps(res), content_type="application/json")
def searchOrder(request): cds = request.GET key = cds.get('key') order_list = [] data = cds['data'] if key == 'user_id': order_list = NewOrder.objects.filter(order_userid = int(data)) elif key == 'phone': order_list = NewOrder.objects.filter(order_tel = data) elif key == 'order_number': order_list = NewOrder.objects.filter(order_number = data) else: return HttpResponse(json.dumps({"code":0,"msg":'key error'}), content_type="application/json") list = [] for item in order_list.order_by('-order_addtime'): order_pay_status="未付款" if item.order_pay_status == 20: order_pay_status = '已付款' elif item.order_pay_status == 30: order_pay_status = '退款' else: pass order_status = '未处理' if item.order_status == 10: order_status = '正在处理' dicOrder = { 'price':float(item.order_price), 'order_id':item.order_number, 'user_id':item.order_userid, 'addtime':item.order_addtime, 'name':item.order_user_name, 'phone':item.order_tel, 'address':item.order_address, 'message':item.order_text, "total":float(item.order_totalpay), "amount":item.order_amount, "order_pay_status":order_pay_status, "order_status":order_status, } event =getevent(item.event_id) list.append({'order':dicOrder,'event':event}) res = {'code':1,'message':'request success','list':list} return HttpResponse(json.dumps(res), content_type="application/json")
def get_event_format(c): r = dict() r['id'] = c.id # 映射 2 -> 0 别问我0怎么办,废了 r['coupon_type'] = 0 if c.coupon_type == 2 else c.coupon_type r['coupon_value'] = c.coupon_value r['start_time'] =datetime.datetime.strftime(c.begin_time,'%Y-%m-%d') if c.begin_time else '' r['end_time'] =datetime.datetime.strftime(c.end_time,'%Y-%m-%d') if c.end_time else '' r['is_general'] = c.is_general r['range_comment'] = c.range_comment if c.range_comment else 0 r['cost_threshold'] = c.cost_threshold if c.cost_threshold else 0 if c.is_general: return r events= list() for event in c.for_events.all(): ev_r={} ev_r=r ev_r['event']=getevent(event.old_event_id) events.append(ev_r) return events
def find_user_collect(request,userid): if not userid: return {'code':-1,'message':'没有用户id'} try: #u=UserInfo.objects.get(user_id=int(userid)) arr={'code':1,'message':'查询成功'} #arr['list']=[]; cds = request.GET (page,offset) = getPageAndOffset(cds) #event_id_u=[] arr['list']=[] for bm in UserInfoEvent.objects.filter(userinfo_id=userid).order_by('-id')[offset*(page-1):offset*page]: #event_id_u.append(bm.sysspotevent_id) try: arr['list'].append(getevent(bm.sysspotevent_id)) except: pass #arr['list']=[eventDic(item) for item in NewEventTable.objects.get(old_event_id=bm.sysspotevent_id)[offset*(page-1):offset*page]] return arr except: return {'code':1,'message':'无数据'}
def DateApi(request): p={} p['code']=1 p['msg']='Request is successful' p['list']=[] cds = request.GET date = cds.get('date',None) try: day = int(cds.get('day',10)) except: p['code']=0 p['msg']='url err' response = json.dumps(p) return HttpResponse(response, mimetype="application/json") orders = cds.get('order',None) cityid = cds.get('cityid',None) price_type = cds.get('price_type',None) #random = cds.get('random',None) new = cds.get('new',None) if not date: date=datetime.date.today() else: try: date=datetime.datetime.strptime( date, "%Y-%m-%d").date() except: try: date = time.strptime(date,"%Y-%m-%d %H:%M:%S") date=datetime.datetime(* date[:6]) except: date=datetime.date.today() oneday = datetime.timedelta(days=1) for da in range(day): info={} info['daytitle']='' info['events']=[] if cityid: fe0 = feelnum.objects.filter(event__city=cityid) else: fe0 = feelnum.objects fe=fe0.filter(showtime=date).order_by('-feelnum').distinct() if not fe.count(): if orders: fe1=fe0.filter(showtime__lt=date).order_by('-showtime') else: fe1=fe0.filter(showtime__gt=date).order_by('showtime') #fe1.query.group_by=['showtime'] try: date=fe1[0].showtime fe=fe0.filter(showtime=date).order_by('-feelnum').distinct() except: break info['date']=datetime.datetime.strftime(date,'%Y-%m-%d') if orders: date=date-oneday else: date=date+oneday #info['count']=fe.count() for ev in fe: event=getevent(ev.event.old_event_id,new,cds.get('version','')) info['events'].append(event) if not info['daytitle']: info['daytitle']=event['feeltitle'] if event['feeltitle'] else '' #cou=len(info['events']) if da==0 and '1.2' in cds.get('version',''): info['events'].append(getevent(245504,new,cds.get('version',''))) p['list'].append(info) #p['category']=getcat() p['newdate']=datetime.datetime.strftime(date,'%Y-%m-%d') response = json.dumps(p) return HttpResponse(response, mimetype="application/json")
def submitOrder_with_coupon(request, coupon_record): if request.method != 'GET': return HttpResponse(json.dumps({"code":0,"msg":"Only GETs are allowed","list":[]}), content_type="application/json") cds = request.GET price =cds['price'] price = round( float(price),2) eventId = int(cds['eventid']) event=NewAppEvent(None,eventId) ''' pr_ok=False for i in range(len(event['price_unit_info'])): pr1=round(float(event['price_unit_info'][i]['price'])*float(event['price_unit_info'][i]['discount']),1) if price is pr1: pr_ok=True break if not pr_ok: return HttpResponse(json.dumps({"code":0,"msg":"price is wrong %s,%s" % (price,pr1),"list":[]}), content_type="application/json") ''' import random number = '%s%s'%(int(time.time()),random.randint(100,1000)) if int(cds['amount']) < 1: return HttpResponse(json.dumps({"code":0,"msg":"amount must be bigger than 1","list":[]}), content_type="application/json") totalpay = float(price)*int(cds['amount']) #print cds['payMode'] # 使用了优惠券 totalpay = coupon_record.cost if request.META.has_key('HTTP_X_FORWARDED_FOR'): ip = request.META['HTTP_X_FORWARDED_FOR'] else: ip = request.META['REMOTE_ADDR'] userid = cds.get('userid') if not userid: userid = 0 else: userid = int(userid) try: NewOrder.objects.create( order_number=number, order_user_name=cds.get('name',''), order_tel = cds.get('phone',''), order_email = cds.get('email',''), order_totalpay = totalpay, order_price = float(price), order_amount = cds['amount'], order_address = cds.get('address',''), order_payment = 'alipay', order_telphone = cds.get('phone',''), order_pay_status = 0, order_status = 0, event_id = eventId, event_name = event['title'], city_title = event['district_name'], order_reg_fields = 0, order_addtime = time.time(), order_addip = ip, order_text = cds.get('message',''), order_userid = userid, event_to=4, ) except: return HttpResponse(json.dumps({"code":0,"msg":"err","list":[]}), content_type="application/json") subject = '来自闲时app的订单通知.客户:%s,电话:%s'%(cds.get('name','').encode('utf-8'),cds.get('mobilphone','').encode('utf-8')) content = '点单号:%s\n总价:%s\n活动链接:http://www.huodongjia.com/event-%s.html'%(number,totalpay,eventId) content += dic2text(cds) sendMail(subject,content) order = { 'price':price, 'order_id':number, 'user_id':cds.get('userid',''), 'addtime':int(time.time()), 'name':cds.get('name',u'匿名'), 'phone':cds['phone'], 'address':cds.get('address',''), 'message':cds.get('message',''), "total":totalpay, "amount":cds['amount'], "order_pay_status":u"未付款", "order_status":u"未处理", } # 记录order_number coupon_record.order_id = number coupon_record.save() eventdic = getevent(eventId) return HttpResponse(json.dumps({"code":1,"msg":u"下单成功","data":{'order':order,'event':eventdic}}), content_type="application/json")
def DateApiT(request): p={} p['code']=1 p['msg']='Request is successful' p['list']=[] cds = request.GET date = cds.get('date',None) try: day = int(cds.get('day',10)) except: p['code']=0 p['msg']='url err' response = json.dumps(p) return HttpResponse(response, mimetype="application/json") orders = cds.get('order',None) cityid = cds.get('cityid',None) price_type = cds.get('price_type',None) #random = cds.get('random',None) new = cds.get('new',None) if not date: date=datetime.date.today() else: try: date=datetime.datetime.strptime( date, "%Y-%m-%d").date() except: try: date = time.strptime(date,"%Y-%m-%d %H:%M:%S") date=datetime.datetime(* date[:6]) except: date=datetime.date.today() oneday = datetime.timedelta(days=1) for da in range(day): info={} fe0 = get_time_line(0, city_id = cityid, new = False) fe = [] date_str = datetime.datetime.strftime(date, '%Y-%m-%d') if fe0.has_key(date_str): fe = fe0[date_str] if not fe: date_str_list = [] for cur_date_str in fe0.keys(): cur_date = datetime.datetime.strptime(cur_date_str, "%Y-%m-%d").date() if orders: if cur_date < date: date_str_list.append(cur_date_str) else: if cur_date > date: date_str_list.append(cur_date_str) if orders: date_str_list.sort(reverse=True) else: date_str_list.sort() try: candidate_date_str = date_str_list[0] fe = fe0[candidate_date_str] except IndexError: break info = fe[0] info['events'] = [] if orders: date=date-oneday else: date=date+oneday for ev in fe: event = getevent(ev['id'], new, cds.get('version','')) info['events'].append(event) if da==0 and '1.2' in cds.get('version',''): info['events'].append(getevent(245504,new,cds.get('version',''))) p['list'].append(info) p['newdate']=datetime.datetime.strftime(date,'%Y-%m-%d') response = json.dumps(p) return HttpResponse(response, mimetype="application/json")
def SearchKey(request): cds = request.GET keyword = cds.get('keywords',None) cityid = cds.get('city',None) p={} p['code']=1 p['cat']=getcat(4) p['city']=getCity() (page,offset) = getPageAndOffset(cds) start = (page-1)*offset end = page*offset if not keyword and not cityid: p['msg']='keyword Fail' return HttpResponse(json.dumps(p), content_type="application/json") if len(keyword) > 20: p['msg']='keyword Fail' return HttpResponse(json.dumps(p), content_type="application/json") else: #events_lis = mc.get(keyword+'_search_lis') keyword= keyword.replace('/',' ') keyword= keyword.replace(',',' ') events = cache.get('_'.join(keyword.split())+'_search_lis_life') p['code']=1 p['msg']='Request is successful' p['keys']=keyword p['ids']=[] p['list'] =[] if not events: events_lis=feelnum.objects.filter(event__end_time__gt=datetime.date.today()).filter( event__isshow__in=(1,8)).order_by('feelnum') if keyword: or_queries=[] for se in keyword.split(): or_queries += [models.Q(**{orm_lookup: se}) for orm_lookup in ['event__fname__icontains','event__search__icontains']] #arg+=[Q(address__icontains=qu)|Q(title__icontains=qu)|Q(city__district_name__icontains=qu)] if or_queries: events_lis = events_lis.filter(reduce(operator.or_, or_queries)) if cityid: try: events_lis = events_lis.filter(event__city__in=cityid.split(',')) except: pass events = [item.event.old_event_id for item in events_lis] cache.set('_'.join(keyword.split())+'_search_lis_life',events,300) p['list'] = [getevent(item,cds.get('new',False),cds.get('version','')) for item in events[start:end]] ''' if not events_lis: ids=[] for key in keyword.split(): ids.extend(search(key)) if ids: p['ids']=ids try: tag=NewEventTag.objects.get(name=keyword) tag.hot=tag.hot+1 tag.save() except: try: NewEventTag.objects.create(name=keyword,hot=1) except: pass cache.set('_'.join(keyword.split())+'_search_lis_life',events_lis,300) events_lis = NewEventTable.objects.filter(event__old_event__in = ids)#.order_by('district_id='+str(district_id),'event_begin_time') if cityid: try: events_lis = events_lis.filter(event__city__in=cityid.split(',')) except: pass NewAppEvent(None,id,cds.get('new',False)) p['list'] = [getevent(item.event.old_event_id,cds.get('new',False),cds.get('version','')) for item in events_lis[0:10]] ''' response = json.dumps(p) return HttpResponse(response, mimetype="application/json")
def SearchKey(request): cds = request.GET keyword = cds.get('keywords', None) cityid = cds.get('city', None) p = {} p['code'] = 1 p['cat'] = getcat(4) p['city'] = getCity() (page, offset) = getPageAndOffset(cds) start = (page - 1) * offset end = page * offset if not keyword and not cityid: p['msg'] = 'keyword Fail' return HttpResponse(json.dumps(p), content_type="application/json") if len(keyword) > 20: p['msg'] = 'keyword Fail' return HttpResponse(json.dumps(p), content_type="application/json") else: #events_lis = mc.get(keyword+'_search_lis') keyword = keyword.replace('/', ' ') keyword = keyword.replace(',', ' ') events = cache.get('_'.join(keyword.split()) + '_search_lis_life') p['code'] = 1 p['msg'] = 'Request is successful' p['keys'] = keyword p['ids'] = [] p['list'] = [] if not events: events_lis = feelnum.objects.filter( event__end_time__gt=datetime.date.today()).filter( event__isshow__in=(1, 8)).order_by('feelnum') if keyword: or_queries = [] for se in keyword.split(): or_queries += [ models.Q(**{orm_lookup: se}) for orm_lookup in [ 'event__fname__icontains', 'event__search__icontains' ] ] #arg+=[Q(address__icontains=qu)|Q(title__icontains=qu)|Q(city__district_name__icontains=qu)] if or_queries: events_lis = events_lis.filter( reduce(operator.or_, or_queries)) if cityid: try: events_lis = events_lis.filter( event__city__in=cityid.split(',')) except: pass events = [item.event.old_event_id for item in events_lis] cache.set('_'.join(keyword.split()) + '_search_lis_life', events, 300) p['list'] = [ getevent(item, cds.get('new', False), cds.get('version', '')) for item in events[start:end] ] ''' if not events_lis: ids=[] for key in keyword.split(): ids.extend(search(key)) if ids: p['ids']=ids try: tag=NewEventTag.objects.get(name=keyword) tag.hot=tag.hot+1 tag.save() except: try: NewEventTag.objects.create(name=keyword,hot=1) except: pass cache.set('_'.join(keyword.split())+'_search_lis_life',events_lis,300) events_lis = NewEventTable.objects.filter(event__old_event__in = ids)#.order_by('district_id='+str(district_id),'event_begin_time') if cityid: try: events_lis = events_lis.filter(event__city__in=cityid.split(',')) except: pass NewAppEvent(None,id,cds.get('new',False)) p['list'] = [getevent(item.event.old_event_id,cds.get('new',False),cds.get('version','')) for item in events_lis[0:10]] ''' response = json.dumps(p) return HttpResponse(response, mimetype="application/json")