def get_courses(request): shengjing_course_configs = ShengjingCourseConfig.objects.filter( owner=request.user).order_by('-update_time') count_per_page = int(request.GET.get('count_per_page', 15)) cur_page = int(request.GET.get('page', '1')) pageinfo, shengjing_course_configs = paginator.paginate( shengjing_course_configs, cur_page, count_per_page, query_string=request.META['QUERY_STRING']) response = create_response(200) cur_shengjing_course_configs = [] for config in shengjing_course_configs: cur_course_config = JsonResponse() cur_course_config.id = config.id cur_course_config.name = config.name cur_course_config.created_at = config.created_at.strftime('%Y-%m-%d') cur_course_config.update_time = config.update_time.strftime('%Y-%m-%d') cur_shengjing_course_configs.append(cur_course_config) response.data.items = cur_shengjing_course_configs response.data.sortAttr = request.GET.get('sort_attr', '-display_index') response.data.pageinfo = paginator.to_dict(pageinfo) return response.get_response()
def get_weizoom_card_rules(request): count_per_page = int(request.GET.get('count_per_page', '1')) cur_page = int(request.GET.get('page', '1')) weizoom_card_rule_id = int(request.GET.get('weizoom_card_rule_id', '-1')) weizoom_card_rules = WeizoomCardRule.objects.filter(owner=request.user).order_by('-created_at') pageinfo, weizoom_card_rules = paginator.paginate(weizoom_card_rules, cur_page, count_per_page, query_string=request.META['QUERY_STRING']) cur_weizoom_card_rules = [] for c in weizoom_card_rules: cur_weizoom_card_rule = JsonResponse() cur_weizoom_card_rule.id = c.id cur_weizoom_card_rule.name = c.name cur_weizoom_card_rule.count = c.count cur_weizoom_card_rule.remark = c.remark cur_weizoom_card_rule.money = '%.2f' % c.money cur_weizoom_card_rule.expired_time = datetime.strftime(c.expired_time, '%Y-%m-%d %H:%M') cur_weizoom_card_rule.created_at = datetime.strftime(c.created_at, '%Y-%m-%d %H:%M') cur_weizoom_card_rules.append(cur_weizoom_card_rule) response = create_response(200) response.data.items = cur_weizoom_card_rules response.data.sortAttr = request.GET.get('sort_attr', '-created_at') response.data.pageinfo = paginator.to_dict(pageinfo) return response.get_response()
def get_red_envelopes(request): red_envelopes = RedEnvelope.objects.filter(owner=request.user, is_deleted=False) response = create_response(200) #进行分页 count_per_page = int(request.GET.get('count_per_page', 15)) cur_page = int(request.GET.get('page', '1')) pageinfo, red_envelopes = paginator.paginate( red_envelopes, cur_page, count_per_page, query_string=request.META['QUERY_STRING']) response.data.items = [] for red_envelope in red_envelopes: cur_red_envelope = JsonResponse() cur_red_envelope.id = red_envelope.id cur_red_envelope.name = red_envelope.name response.data.items.append(cur_red_envelope) response.data.pageinfo = paginator.to_dict(pageinfo) response.data.sortAttr = request.GET.get('sort_attr', '-created_at') return response.get_response()
def get_records(request): user = request.user.get_profile() records = ShakeRecord.objects.filter(owner=request.user).order_by('-created_at') #进行分页 count_per_page = int(request.GET.get('count_per_page', 15)) cur_page = int(request.GET.get('page', '1')) pageinfo, records = paginator.paginate(records, cur_page, count_per_page, query_string=request.META['QUERY_STRING']) response = create_response(200) response.data.items = [] for record in records: member = record.member one_record = JsonResponse() if member: one_record.username = member.username_for_html one_record.user_id = member.id else: one_record.username = u'未知' one_record.user_id = 0 one_record.money = str(record.money) one_record.name = record.shake_detail.shake.name one_record.is_sended = record.is_sended one_record.created_at = record.created_at.strftime('%Y-%m-%d %H:%M:%S') one_record.id = record.id response.data.items.append(one_record) response.data.pageinfo = paginator.to_dict(pageinfo) response.data.sortAttr = request.GET.get('sort_attr', '-created_at') return response.get_response()
def get_store(request): count_per_page = int(request.GET.get('count_per_page', '1')) cur_page = int(request.GET.get('page', '1')) filter_attr = request.GET.get('filter_attr') if filter_attr == 'city': stores =Store.objects.filter(owner=request.user, city=request.GET.get('filter_value')).order_by('-created_at') else: stores = Store.objects.filter(owner=request.user).order_by('-created_at') pageinfo, stores = paginator.paginate(stores, cur_page, count_per_page, query_string=request.META['QUERY_STRING']) cur_stores = [] for c in stores: cur_store = JsonResponse() cur_store.id = c.id cur_store.name = c.name cur_store.city = c.city cur_store.created_at = datetime.strftime(c.created_at, '%Y-%m-%d %H:%M') cur_stores.append(cur_store) cur_citys = list(Store.objects.filter(owner=request.user).values('city').distinct()) response = create_response(200) response.data.items = cur_stores response.data.all_city = cur_citys response.data.sortAttr = request.GET.get('sort_attr', '-created_at') response.data.pageinfo = paginator.to_dict(pageinfo) return response.get_response()
def get_weizoom_cards(request): count_per_page = int(request.GET.get('count_per_page', '1')) cur_page = int(request.GET.get('page', '1')) weizoom_card_rule_id = int(request.GET.get('weizoom_card_rule_id', '-1')) query = request.GET.get('query', None) weizoom_cards = WeizoomCard.objects.filter(owner=request.user, weizoom_card_rule_id=weizoom_card_rule_id) #获得已经过期的微众卡id today = datetime.today() card_ids_need_expire = [] for card in weizoom_cards: #记录过期并且是未使用的微众卡id if card.expired_time < today: card_ids_need_expire.append(card.id) if len(card_ids_need_expire) > 0: WeizoomCard.objects.filter(id__in=card_ids_need_expire).update(is_expired=True) #处理过滤 filter_attr = request.GET.get('filter_attr', None) filter_value = int(request.GET.get('filter_value', -1)) if filter_attr and (filter_value != -1): params = {filter_attr: filter_value} weizoom_cards = weizoom_cards.filter(**params) if query: weizoom_cards = weizoom_cards.filter(weizoom_card_id=query) pageinfo, weizoom_cards = paginator.paginate(weizoom_cards, cur_page, count_per_page, query_string=request.META['QUERY_STRING']) target_user_ids = [] for weizoom_card in weizoom_cards: target_user_ids.append(weizoom_card.target_user_id) card_has_accounts = WeizoomCardHasAccount.objects.filter(owner=request.user, account__in=target_user_ids) user2name = {} for card_has_account in card_has_accounts: user2name[card_has_account.account_id] = card_has_account.account_name cur_weizoom_cards = [] for c in weizoom_cards: cur_weizoom_card = JsonResponse() cur_weizoom_card.id = c.id cur_weizoom_card.status = c.status cur_weizoom_card.weizoom_card_id = c.weizoom_card_id cur_weizoom_card.password = c.password cur_weizoom_card.money = '%.2f' % c.money if c.activated_at: cur_weizoom_card.activated_at = c.activated_at.strftime('%Y-%m-%d %H:%M:%S') else: cur_weizoom_card.activated_at = '' cur_weizoom_card.target_name = user2name.get(c.target_user_id, u'') cur_weizoom_card.is_expired = c.is_expired cur_weizoom_cards.append(cur_weizoom_card) response = create_response(200) response.data.items = cur_weizoom_cards response.data.sortAttr = request.GET.get('sort_attr', '-created_at') response.data.pageinfo = paginator.to_dict(pageinfo) return response.get_response()
def get_managers(request): count_per_page = int(request.GET.get('count_per_page', '1')) cur_page = int(request.GET.get('page', '1')) is_manage = 'manage' in request.GET if is_manage: card_managers = WeiZoomCardManager.objects.all() else: card_managers = WeiZoomCardManager.objects.exclude( user_id=request.user.id) pageinfo, card_managers = paginator.paginate( card_managers, cur_page, count_per_page, query_string=request.META['QUERY_STRING']) weizoomcardpermissions = WeiZoomCardPermission.objects.all() card_manager2weizoomcardpermission = {} for weizoomcardpermission in weizoomcardpermissions: card_manager2weizoomcardpermission[ weizoomcardpermission.user_id] = weizoomcardpermission cur_card_managers = [] for card_manager in card_managers: cur_card_manager = JsonResponse() cur_card_manager.id = card_manager.id cur_card_manager.user_id = card_manager.user_id cur_card_manager.username = card_manager.username cur_card_manager.nickname = card_manager.nickname try: cur_card_manager.can_create_card = card_manager2weizoomcardpermission[ card_manager.user_id].can_create_card cur_card_manager.can_export_batch_card = card_manager2weizoomcardpermission[ card_manager.user_id].can_export_batch_card cur_card_manager.can_add_card = card_manager2weizoomcardpermission[ card_manager.user_id].can_add_card cur_card_manager.can_batch_stop_card = card_manager2weizoomcardpermission[ card_manager.user_id].can_batch_stop_card cur_card_manager.can_batch_active_card = card_manager2weizoomcardpermission[ card_manager.user_id].can_batch_active_card cur_card_manager.can_view_card_details = card_manager2weizoomcardpermission[ card_manager.user_id].can_view_card_details cur_card_manager.can_stop_card = card_manager2weizoomcardpermission[ card_manager.user_id].can_stop_card cur_card_manager.can_active_card = card_manager2weizoomcardpermission[ card_manager.user_id].can_active_card cur_card_manager.can_delay_card = card_manager2weizoomcardpermission[ card_manager.user_id].can_delay_card cur_card_manager.can_change_shop_config = card_manager2weizoomcardpermission[ card_manager.user_id].can_change_shop_config cur_card_manager.can_view_statistical_details = card_manager2weizoomcardpermission[ card_manager.user_id].can_view_statistical_details cur_card_manager.can_export_statistical_details = card_manager2weizoomcardpermission[ card_manager.user_id].can_export_statistical_details except: pass cur_card_managers.append(cur_card_manager) response = create_response(200) response.data.items = cur_card_managers response.data.pageinfo = paginator.to_dict(pageinfo) return response.get_response()
def edit_red_envelope_view(request, id): if int(id) > 0: try: red_envelope = RedEnvelope.objects.get(id=id) except: raise Http404('不存在该微信红包') relations = RedEnvelopeHasPrize.objects.filter(red_envelope=red_envelope) prize_ids = [r.prize_id for r in relations] prizes = Prize.objects.filter(id__in=prize_ids) id2prize = dict([(p.id, p) for p in prizes]) red_envelope.prizes = [] for r in relations: prize = id2prize[r.prize_id] prize.prize_source = r.prize_source prize.prize_type = r.prize_type red_envelope.prizes.append(prize) red_envelope.prizes.sort(lambda x,y: cmp(x.level, y.level)) #转换为json response = JsonResponse() response.id = red_envelope.id response.name = red_envelope.name response.total_award_value = red_envelope.total_award_value response.desc = red_envelope.desc response.can_repeat = red_envelope.can_repeat response.daily_play_count = red_envelope.daily_play_count response.prizes = {} for prize in red_envelope.prizes: prize_json = {} prize_json['prize_source'] = prize.prize_source prize_json['prize_type'] = prize.prize_type prize_json['prize_name'] = prize.name prize_json['prize_level'] = prize.level prize_json['prize_odds'] = prize.odds prize_json['prize_count'] = prize.count response.prizes[prize.id] = prize_json lottery_json = response.get_json() else: red_envelope = {'can_update': True} lottery_json = '' coupon_rules = get_coupon_rules(request.user) c = RequestContext(request, { 'first_nav_name': MARKET_TOOLS_NAV, 'second_navs': export.get_second_navs(request), 'second_nav_name': SECOND_NAV_NAME, 'red_envelope': red_envelope, 'lottery_json':lottery_json, 'coupon_rules':coupon_rules }) return render_to_response('red_envelope/editor/edit_red_envelope.html', c)
def get_records(request): """ 获取中奖记录 举例:http://weapp.weizoom.com/market_tools/lottery/api/records/get/?version=1&sort_attr=-created_at&count_per_page=15&page=1&enable_paginate=1×tamp=1434434567924 """ user = request.user.get_profile() lotteries = Lottery.objects.filter(owner=request.user, is_deleted=False) lottery_ids = [l.id for l in lotteries] #处理搜索 query = request.GET.get('query', None) if query: query_hex = byte_to_hex(query) records = LotteryRecord.objects.filter(lottery_id__in=lottery_ids, prize_level__gt=0, prize_number=query_hex) else: records = LotteryRecord.objects.filter(lottery_id__in=lottery_ids, prize_level__gt=0) #进行分页 count_per_page = int(request.GET.get('count_per_page', 15)) cur_page = int(request.GET.get('page', '1')) pageinfo, records = paginator.paginate( records, cur_page, count_per_page, query_string=request.META['QUERY_STRING']) response = create_response(200) response.data.items = [] for record in records: one_record = JsonResponse() one_record.username = record.member.username_for_html one_record.user_id = record.member.id one_record.prize_number = record.prize_number one_record.prize_money = str(record.prize_money) one_record.lottery_name = record.lottery_name one_record.prize_name = record.prize_name one_record.prize_type = record.prize_type one_record.prize_detail = record.prize_detail one_record.created_at = record.created_at.strftime('%Y-%m-%d') one_record.awarded_at = record.awarded_at.strftime('%Y-%m-%d') one_record.is_awarded = record.is_awarded one_record.id = record.id response.data.items.append(one_record) response.data.pageinfo = paginator.to_dict(pageinfo) response.data.sortAttr = request.GET.get('sort_attr', '-created_at') return response.get_response()
def get_records(request): user = request.user.get_profile() red_envelopes = RedEnvelope.objects.filter(owner=request.user, is_deleted=False) red_envelope_ids = [r.id for r in red_envelopes] #处理搜索 query = request.GET.get('query', None) if query: query_hex = byte_to_hex(query) records = RedEnvelopeRecord.objects.filter( red_envelope_id__in=red_envelope_ids, prize_level__gt=0, prize_number=query_hex) else: records = RedEnvelopeRecord.objects.filter( red_envelope_id__in=red_envelope_ids, prize_level__gt=0) #进行分页 count_per_page = int(request.GET.get('count_per_page', 15)) cur_page = int(request.GET.get('page', '1')) pageinfo, records = paginator.paginate( records, cur_page, count_per_page, query_string=request.META['QUERY_STRING']) response = create_response(200) response.data.items = [] for record in records: member = WebAppUser.get_member_by_webapp_user_id(record.webapp_user_id) one_record = JsonResponse() if member: one_record.username = member.username_for_html one_record.user_id = member.id else: one_record.username = u'未知' one_record.user_id = 0 one_record.prize_number = record.prize_number one_record.red_envelope_name = record.red_envelope_name one_record.prize_money = str(record.prize_money) one_record.prize_name = record.prize_name one_record.prize_type = record.prize_type one_record.prize_detail = record.prize_detail one_record.created_at = record.created_at.strftime('%Y-%m-%d') one_record.awarded_at = record.awarded_at.strftime('%Y-%m-%d') one_record.is_awarded = record.is_awarded one_record.id = record.id response.data.items.append(one_record) response.data.pageinfo = paginator.to_dict(pageinfo) response.data.sortAttr = request.GET.get('sort_attr', '-created_at') return response.get_response()
def get_prize(request): webapp_user = request.webapp_user lottery_id = int(request.GET['lottery_id']) prize_position = int(request.GET.get('prize_position', 0)) try: lottery = Lottery.objects.get(id=lottery_id) except: raise Http404(u"该活动信息不存在") member = request.member if not member: raise Http404(u"会员信息不存在") relations = LotteryHasPrize.objects.filter(lottery=lottery) prize_ids = [r.prize_id for r in relations] prizes = Prize.objects.filter(id__in=prize_ids) #定义奖项: if lottery.can_repeat: play_times = lottery.daily_play_count else: play_times = 1 #根据发奖规则发奖 prize = _get_prize(lottery, member, prizes) response = create_response(200) prize = __record_prize(webapp_user, lottery, member, prize, prize_position) if prize: cur_prize = JsonResponse() cur_prize.name = prize.name cur_prize.id = prize.id cur_prize.level = prize.level response.data.prize = cur_prize else: response.data.prize = None cur_member = JsonResponse() cur_member.integral = webapp_user.integral_info['count'] response.data.member = cur_member return response.get_response()
def get_operation_infos(request): secrect = request.GET.get('secrect', '') from_id = int(request.GET.get('from', 0)) if secrect == 'i@love*tiger(': result = JsonResponse() result.code = 200 result.operations = [] for message in Message.objects.filter(severity=WATCHDOG_OPERATION, id__gt=from_id): operation = JsonResponse() operation.id = message.id operation.message = message.message operation.create_time = message.create_time.strftime('%H:%M') result.operations.append(operation) return result.get_response() else: return HttpResponse('{"code":200, "result":"success"}', 'application/json')
def get_shakes(request): shakes = Shake.objects.filter(owner=request.user, is_deleted=False).order_by('-created_at') response = create_response(200) #进行分页 count_per_page = int(request.GET.get('count_per_page', 15)) cur_page = int(request.GET.get('page', '1')) pageinfo, shakes = paginator.paginate(shakes, cur_page, count_per_page, query_string=request.META['QUERY_STRING']) response.data.items = [] for shake_setting in shakes: shake = JsonResponse() shake.id = shake_setting.id shake.name = shake_setting.name response.data.items.append(shake) response.data.pageinfo = paginator.to_dict(pageinfo) response.data.sortAttr = '-created_at' return response.get_response()
def edit_customer(request): if request.GET: customer_id = request.GET.get('customer_id','') customer = Customer.objects.get(id=customer_id) customer_json = JsonResponse() customer_json.id = customer.id customer_json.name = customer.name customer_json.tel_number = customer.tel_number customer_json.plate_number = customer.plate_number customer_json.vehicle_brand = customer.vehicle_brand customer_json.motorcycle_type = customer.motorcycle_type customer_json.mileage = customer.mileage customer_json.adress = customer.adress customer_json.remark = customer.remark response = create_response(200) response.data.customer = customer_json return response.get_jsonp_response(request) elif request.POST: customer_id = request.POST.get('customer_id','') name = request.POST.get('name','') tel_number = request.POST.get('tel_number','') plate_number = request.POST.get('plate_number','') vehicle_brand = request.POST.get('vehicle_brand','') motorcycle_type = request.POST.get('motorcycle_type','') mileage = request.POST.get('mileage','') adress = request.POST.get('adress','') remark = request.POST.get('remark','') Customer.objects.filter(id=customer_id).update( name = name, tel_number = tel_number, plate_number = plate_number, vehicle_brand = vehicle_brand, motorcycle_type = motorcycle_type, mileage = mileage, adress = adress, remark = remark ) response = create_response(200) return response.get_response()
def edit_lottery_view(request, id): id = int(id) if id: lottery = Lottery.objects.get(id=id) lottery.can_update = False if lottery.status == LOTTERY_STATUS_NO_START: lottery.can_update = True relations = LotteryHasPrize.objects.filter(lottery=lottery) prize_ids = [r.prize_id for r in relations] prizes = Prize.objects.filter(id__in=prize_ids) id2prize = dict([(p.id, p) for p in prizes]) lottery.prizes = [] for r in relations: prize = id2prize[r.prize_id] prize.prize_source = r.prize_source prize.prize_type = r.prize_type lottery.prizes.append(prize) lottery.prizes.sort(lambda x,y: cmp(x.level, y.level)) #转换为json response = JsonResponse() response.id = lottery.id response.name = lottery.name response.detail = lottery.detail response.expend_integral = lottery.expend_integral response.can_repeat = lottery.can_repeat response.daily_play_count = lottery.daily_play_count response.type = lottery.type response.award_hour = lottery.award_hour response.not_win_desc = lottery.not_win_desc if lottery.award_type: response.award_type = lottery.award_type else: response.award_type = '' response.start_at = lottery.start_at.strftime("%Y-%m-%d") response.end_at = lottery.end_at.strftime("%Y-%m-%d") response.prizes = {} for prize in lottery.prizes: prize_json = {} prize_json['prize_source'] = prize.prize_source prize_json['prize_type'] = prize.prize_type prize_json['prize_name'] = prize.name prize_json['prize_level'] = prize.level prize_json['prize_odds'] = prize.odds prize_json['prize_count'] = prize.count response.prizes[prize.id] = prize_json lottery_json = response.get_json() else: lottery = {'can_update': True} lottery_json = '' coupon_rules = get_coupon_rules(request.user) c = RequestContext(request, { 'first_nav_name': MARKET_TOOLS_NAV, 'second_navs': export.get_second_navs(request), 'second_nav_name': SECOND_NAV_NAME, 'lottery': lottery, 'lottery_json':lottery_json, 'coupon_rules':coupon_rules }) return render_to_response('lottery/editor/edit_lottery.html', c)
def get_sessions(request): response = JsonResponse() response.code = 200 response.data = JsonResponse() response.data.items = [] mpuser = get_system_user_binded_mpuser(request.user) if mpuser is None: return response.get_response() #获取当前页数 cur_page = int(request.GET.get('page', '1')) #获取每页个数 count = int(request.GET.get('count', COUNT_PER_PAGE)) is_debug = (request.GET.get('dbg', '0') == '1') #收藏记录 is_collected = request.GET.get('is_collected', '0') start_time = request.GET.get('start_time', '').strip() end_time = request.GET.get('end_time', '').strip() search_content = request.GET.get('search_content', '').strip() if is_debug: sessions = Session.objects.select_related().filter(mpuser=mpuser) else: sessions = Session.objects.select_related().filter(mpuser=mpuser, is_show=True) if start_time and end_time: start_time = '%s 0:0:0' % start_time end_time = '%s 23:59:59' % end_time sessions = sessions.filter(latest_contact_created_at__gte=start_time, latest_contact_created_at__lte=end_time) pageinfo, sessions = paginate(sessions, cur_page, count, query_string=request.META['QUERY_STRING']) #清空未读消息数量 RealTimeInfo.objects.filter(mpuser=mpuser).update(unread_count=0) webapp_id = request.user_profile.webapp_id weixin_user_usernames = [s.weixin_user_id for s in sessions] weixin_users = WeixinUser.objects.filter( username__in=weixin_user_usernames) username2weixin_user = dict([(u.username, u) for u in weixin_users]) # session2member = dict([(member_has_social_account.account.openid, member_has_social_account.member) for member_has_social_account \ # in MemberHasSocialAccount.objects.filter()]) for session in sessions: weixin_user = username2weixin_user[session.weixin_user_id] one_session = JsonResponse() one_session.id = session.id one_session.session_id = session.id one_session.sender_fake_id = weixin_user.fake_id one_session.sender_username = weixin_user.username one_session.sender_name = weixin_user.nickname_for_html if weixin_user.weixin_user_icon: one_session.weixin_user_icon = weixin_user.weixin_user_icon if len( weixin_user.weixin_user_icon.strip()) > 0 else DEFAULT_ICON else: one_session.weixin_user_icon = DEFAULT_ICON one_session.content = emotion.change_emotion_to_img( session.latest_contact_content) one_session.created_at = __format_datetime( session.latest_contact_created_at) one_session.unread_count = session.unread_count one_session.message_id = session.message_id one_session.is_collected = CollectMessage.is_collected( session.message_id) one_session.for_collected = False one_session.hidden_a = False try: if session.message_id != 0: message = Message.objects.get(id=session.message_id) one_session.message_type = message.message_type one_session.pic_url = message.pic_url one_session.audio_url = message.audio_url else: one_session.message_type = 'text' one_session.pic_url = '' one_session.audio_url = '' except: one_session.message_type = 'text' one_session.pic_url = '' one_session.audio_url = '' one_session.is_subscribed = is_subscribed(weixin_user) one_session.is_active = True if datetime.now( ) < session.latest_contact_created_at + timedelta( hours=EXPIRED_TIME) and datetime.now( ) > session.latest_contact_created_at else False try: account = SocialAccount.objects.get(webapp_id=webapp_id, openid=weixin_user.username) member = MemberHasSocialAccount.objects.filter( account=account)[0].member #member = session2member[session.weixin_user_id] if member: one_session.member_id = member.id one_session.member_remarks_name = member.remarks_name if member.user_icon and len(member.user_icon.strip()) > 0: one_session.weixin_user_icon = member.user_icon if member.username_for_html: one_session.sender_name = member.username_for_html except: notify_message = u"设置会话信息失败, weixin_user_openid:{}, webapp_id:{},cause:\n{}".format( session.weixin_user_id, webapp_id, unicode_full_stack()) watchdog_notice(notify_message) continue response.data.items.append(one_session) response.data.page_info = __package_pageinfo(pageinfo) return response.get_response()
def get_messages(request): response = JsonResponse() response.code = 200 response.data = JsonResponse() response.data.items = [] mpuser = get_system_user_binded_mpuser(request.user) if mpuser is None: return response.get_response() #获取当前页数 cur_page = int(request.GET.get('page', '1')) #获取每页个数 count = int(request.GET.get('count', COUNT_PER_PAGE)) is_debug = (request.GET.get('dbg', '0') == '1') is_collected = request.GET.get('is_collected', '') search_content = request.GET.get('search_content', '') if is_collected: collected_message_ids = CollectMessage.get_message_ids(request.user) ordering = 'FIELD(`id`, %s)' % ','.join( str(id) for id in collected_message_ids) messages = Message.objects.filter(id__in=collected_message_ids).extra( select={'ordering': ordering}, order_by=('ordering', )) elif search_content: data_before_tow_days = dateutil.get_previous_date('today', 2) messages = Message.objects.belong_to(request.user_profile.webapp_id, mpuser, search_content) else: messages = [] pageinfo, messages = paginate(messages, cur_page, count, query_string=request.META['QUERY_STRING']) webapp_id = request.user_profile.webapp_id for message in messages: weixin_user = message.session.weixin_user one_session = JsonResponse() one_session.id = message.id one_session.session_id = message.session.id one_session.sender_fake_id = weixin_user.fake_id one_session.sender_username = weixin_user.username one_session.sender_name = weixin_user.nickname_for_html if weixin_user.weixin_user_icon: one_session.weixin_user_icon = weixin_user.weixin_user_icon if len( weixin_user.weixin_user_icon.strip()) > 0 else DEFAULT_ICON else: one_session.weixin_user_icon = DEFAULT_ICON one_session.content = emotion.change_emotion_to_img(message.content) one_session.is_active = True if datetime.now( ) < message.created_at + timedelta( hours=EXPIRED_TIME) and datetime.now( ) > message.created_at else False if is_collected: one_session.is_active = False try: collect_message = CollectMessage.objects.get( message_id=message.id) one_session.created_at = __format_datetime( collect_message.created_at) except: one_session.created_at = __format_datetime(message.created_at) else: one_session.created_at = __format_datetime(message.created_at) one_session.message_id = message.id one_session.is_collected = CollectMessage.is_collected(message.id) one_session.message_type = message.message_type one_session.pic_url = message.pic_url one_session.audio_url = message.audio_url one_session.for_collected = is_collected one_session.hidden_a = True if message.message_type == IMAGE: one_session.content = message.pic_url if message.message_type == VOICE: one_session.content = message.audio_url one_session.is_subscribed = is_subscribed(weixin_user) try: account = SocialAccount.objects.get(webapp_id=webapp_id, openid=weixin_user.username) member = MemberHasSocialAccount.objects.filter( account=account)[0].member #member = session2member[session.weixin_user_id] if member: one_session.member_id = member.id one_session.member_remarks_name = member.remarks_name if member.user_icon and len(member.user_icon.strip()) > 0: one_session.weixin_user_icon = member.user_icon if member.username_for_html: one_session.sender_name = member.username_for_html except: notify_message = u"设置会话信息失败, weixin_user_openid:{}, cause:\n{}".format( session.weixin_user_id, unicode_full_stack()) watchdog_notice(notify_message) continue response.data.items.append(one_session) response.data.page_info = __package_pageinfo(pageinfo) return response.get_response()
def get_session_histories(request): session_id = request.GET['session_id'] messages = Message.objects.filter(session=session_id).order_by('-id') sender_usernames = [m.from_weixin_user_username for m in messages] recevier_usernames = [m.to_weixin_user_username for m in messages] weixin_user_usernames = set(sender_usernames + recevier_usernames) weixin_users = WeixinUser.objects.filter( username__in=weixin_user_usernames) username2weixin_user = dict([u.username, u] for u in weixin_users) mpuser = get_system_user_binded_mpuser(request.user) try: mpuser_preview_info = MpuserPreviewInfo.objects.get(mpuser=mpuser) except: response = create_response(500) response.errMsg = u'获取公众号预览信息失败' return response.get_response() response = create_response(200) response.data.items = [] session = Session.objects.get(id=session_id) webapp_id = request.user_profile.webapp_id is_active = True if datetime.now( ) < session.latest_contact_created_at + timedelta( hours=EXPIRED_TIME) and datetime.now( ) > session.latest_contact_created_at else False response.data.is_active = is_active for message in messages: sender = username2weixin_user[message.from_weixin_user_username] one_message = JsonResponse() one_message.id = message.id one_message.weixin_message_id = message.weixin_message_id one_message.is_reply = message.is_reply one_message.content = emotion.change_emotion_to_img(message.content) if one_message.content == None: one_message.content = '' one_message.weixin_created_at = __format_datetime( message.weixin_created_at) one_message.is_collected = CollectMessage.is_collected(message.id) one_message.message_type = message.message_type one_message.pic_url = message.pic_url one_message.audio_url = message.audio_url if message.message_type == IMAGE: one_message.content = message.pic_url if message.message_type == VOICE: one_message.content = message.audio_url if message.is_reply: one_message.sender_icon = mpuser_preview_info.image_path #sender.weixin_user_icon one_message.sender_name = mpuser_preview_info.name else: account = SocialAccount.objects.get(webapp_id=webapp_id, openid=sender.username) member = MemberHasSocialAccount.objects.filter( account=account)[0].member if member: if member.user_icon: one_message.sender_icon = member.user_icon if len( member.user_icon.strip()) > 0 else DEFAULT_ICON else: one_message.sender_icon = DEFAULT_ICON one_message.sender_name = member.username_for_html one_message.member_id = member.id if one_message.sender_icon != sender.weixin_user_icon: sender.weixin_user_icon = member.user_icon else: if sender.weixin_user_icon: one_message.sender_icon = sender.weixin_user_icon if len( sender.weixin_user_icon.strip()) > 0 else DEFAULT_ICON one_message.sender_name = sender.weixin_user_nick_name response.data.items.append(one_message) return response.get_response()
def list_messages(request): page = request.GET.get('page', 1) count = int(request.GET.get('count', 10)) mpuser = get_system_user_binded_mpuser(request.user) isManager = request.GET.get('isManager', 'false') isSystemMenager = request.GET.get('isSystemMenager', 'false') if mpuser is None: response = create_response(500) response.errMsg = u'没有该用户的消息' return response.get_jsonp_response(request) sessions = Session.objects.select_related().filter(mpuser=mpuser, is_show=True) #分页信息 pageinfo, sessions = paginate(sessions, page, count, query_string=request.META['QUERY_STRING']) webapp_id = request.user_profile.webapp_id if isManager == "false" and isSystemMenager == "false": #清空未读消息数量 RealTimeInfo.objects.filter(mpuser=mpuser).update(unread_count=0) weixin_user_usernames = [s.weixin_user_id for s in sessions] weixin_users = WeixinUser.objects.filter( username__in=weixin_user_usernames) username2weixin_user = dict([(u.username, u) for u in weixin_users]) sessions_list_json = [] for session in sessions: weixin_user = username2weixin_user[session.weixin_user_id] content = session.latest_contact_content one_session = JsonResponse() one_session.id = session.id one_session.sender_fake_id = weixin_user.fake_id one_session.sender_username = weixin_user.username one_session.sender_name = weixin_user.nickname_for_html one_session.weixin_user_icon = weixin_user.weixin_user_icon if len( weixin_user.weixin_user_icon.strip()) > 0 else DEFAULT_ICON messages = Message.objects.filter( session=session.id).order_by('-created_at') message_st_type = messages[0].message_type if message_st_type == 'text': if len(content) > 10: content = content[0:10] + '...' elif len(content.strip()) <= 0: #如果类型为text但是内容为空,则视为voice,有问题? content = '[语音]' elif message_st_type == 'image': content = '[图片]' elif message_st_type == 'voice': content = '[语音]' elif message_st_type == 'video': content = '[视频]' one_session.content = content one_session.created_at = __format_datetime( session.latest_contact_created_at) one_session.unread_count = session.unread_count one_session.is_subscribed = is_subscribed(weixin_user) one_session.is_active = True if datetime.now( ) < session.latest_contact_created_at + timedelta( hours=EXPIRED_TIME) and datetime.now( ) > session.latest_contact_created_at else False try: account = SocialAccount.objects.get(webapp_id=webapp_id, openid=weixin_user.username) member = MemberHasSocialAccount.objects.filter( account=account)[0].member # member = Member.get_member_by_weixin_user_id(weixin_user.id) if member: one_session.member_id = member.id one_session.member_remarks_name = member.remarks_name if len(member.user_icon.strip()) > 0: one_session.weixin_user_icon = member.user_icon if member.username_for_html: one_session.sender_name = member.username_for_html except: # notify_message = u"设置会话信息失败, weixin_user_openid:{}, cause:\n{}".format( # session.weixin_user_id, unicode_full_stack()) # watchdog_notice(notify_message) continue #raise sessions_list_json.append(one_session) response = create_response(200) response.data.iterms = sessions_list_json response.data.pressed_link = 'message' response.data.page_info = __package_pageinfo(pageinfo) return response.get_jsonp_response(request)
def mui_get_additional_histories(request): end_id = request.GET['end_id'] session_id = request.GET['s_id'] current_page = 1 count = int(request.GET.get('count', 10)) isManager = request.GET.get('isManager', 'false') isSystemMenager = request.GET.get('isSystemMenager', 'false') # user_id = request.GET['user_id'] session = Session.objects.get(id=session_id) messages = Message.objects.filter(session=session_id).order_by('-id') #进行分页 pageinfo, messages = paginator.paginate(messages, current_page, count) sender_usernames = [m.from_weixin_user_username for m in messages] recevier_usernames = [m.to_weixin_user_username for m in messages] weixin_user_usernames = set(sender_usernames + recevier_usernames) weixin_users = WeixinUser.objects.filter( username__in=weixin_user_usernames) username2weixin_user = dict([u.username, u] for u in weixin_users) mpuser = get_system_user_binded_mpuser(request.user) try: mpuser_preview_info = MpuserPreviewInfo.objects.get(mpuser=mpuser) except: response = create_response(500) response.errMsg = u'获取公众号预览信息失败' return response.get_jsonp_response(request) if isManager == "false" and isSystemMenager == "false": #清空未读消息 Session.objects.filter(mpuser=mpuser, id=session_id).update(unread_count=0) sender_name_response = "" messages_list_json = [] is_active = True if datetime.now( ) < session.latest_contact_created_at + timedelta( hours=EXPIRED_TIME) and datetime.now( ) > session.latest_contact_created_at else False r_messages = [] for message in messages: if message.id == end_id: break else: r_messages.append(message) if not r_messages: response = create_response(500) return response.get_jsonp_response(request) for message in reversed(r_messages): sender = username2weixin_user[message.from_weixin_user_username] one_message = JsonResponse() one_message.id = message.id one_message.weixin_message_id = message.weixin_message_id one_message.is_reply = message.is_reply one_message.message_type = message.message_type one_message.pic_url = message.pic_url one_message.audio_url = message.audio_url one_message.content = emotion.mui_change_emotion_to_img( message.content) one_message.weixin_created_at = __format_datetime( message.weixin_created_at) if message.is_reply: one_message.sender_icon = mpuser_preview_info.image_path one_message.sender_name = mpuser_preview_info.name else: member = Member.get_member_by_weixin_user_id(sender.id) if member: one_message.sender_icon = member.user_icon if len( member.user_icon.strip()) > 0 else DEFAULT_ICON one_message.sender_name = member.username_for_html sender_name_response = one_message.sender_name if one_message.sender_icon != sender.weixin_user_icon: sender.weixin_user_icon = member.user_icon else: one_message.sender_icon = sender.weixin_user_icon if len( sender.weixin_user_icon.strip()) > 0 else DEFAULT_ICON one_message.sender_name = sender.weixin_user_nick_name messages_list_json.append(one_message) response = create_response(200) response.data = messages_list_json response.is_login = True response.is_active = is_active response.session_id = session_id response.weixin_user_id = session.weixin_user_id response.pressed_link = 'message' response.send_user_name = sender_name_response if sender_name_response != "" else session.weixin_user.weixin_user_nick_name response.page_info = __package_pageinfo(pageinfo) response.r_messages_count = len(r_messages) return response.get_jsonp_response(request)
def get_cards(request): """ 卡规则列表 """ count_per_page = int(request.GET.get('count_per_page', '1')) cur_page = int(request.GET.get('page', '1')) card_name = request.GET.get('cardName', '').strip() weizoom_card_rule_id = int(request.GET.get('weizoom_card_rule_id', '-1')) weizoom_card_rules = WeizoomCardRule.objects.all().order_by('-created_at') weizoomcardpermission = WeiZoomCardPermission.objects.filter( user_id=request.user.id) can_export_batch_card = 0 can_delay_card = 0 if weizoomcardpermission: can_export_batch_card = weizoomcardpermission[0].can_export_batch_card can_delay_card = weizoomcardpermission[0].can_delay_card if card_name: weizoom_card_rules = weizoom_card_rules.filter( name__icontains=card_name) # 时间区间 date_interval = request.GET.get('date_interval', '') if date_interval: date_interval = get_datetime_from_date_interval(date_interval) weizoom_card_rules = weizoom_card_rules.filter( valid_time_from__gte=date_interval[0], valid_time_to__lte=date_interval[1]) filter_value = request.GET.get('filter_value', '') card_type = _get_type_value(filter_value) card_attr = _get_attr_value(filter_value) if card_type != -1: weizoom_card_rules = weizoom_card_rules.filter(card_type=card_type) if card_attr != -1: weizoom_card_rules = weizoom_card_rules.filter(card_attr=card_attr) #卡号区间查询 card_num_min = request.GET.get('card_num_min', '') card_num_max = request.GET.get('card_num_max', '') if card_num_min or card_num_max: card_rule_ids = [int(r.id) for r in weizoom_card_rules] all_cards = WeizoomCard.objects.filter( weizoom_card_rule_id__in=card_rule_ids) rule_id2cards = {} for c in all_cards: card_rule_id = c.weizoom_card_rule_id if card_rule_id not in rule_id2cards: rule_id2cards[card_rule_id] = [c] else: rule_id2cards[card_rule_id].append(c) weizoom_card_id2rule_ids = {} for rule_id in rule_id2cards: for card in rule_id2cards[rule_id]: weizoom_card_id2rule_ids[card.weizoom_card_id] = rule_id card_num_set = set(int(i) for i in weizoom_card_id2rule_ids.keys()) if card_num_min and card_num_max: max_num = int(card_num_max) min_num = int(card_num_min) search_set = set(range(min_num, max_num + 1)) elif card_num_max: search_set = set([int(card_num_max)]) elif card_num_min: search_set = set([int(card_num_min)]) else: search_set = set([]) result_set = search_set & card_num_set result_list = list(result_set) if len(result_list) > 0: filter_cards_id_list = [] for card_num in result_list: filter_cards_id_list.append(u'%07d' % card_num) filter_rule_ids = [] for card in filter_cards_id_list: r_id = weizoom_card_id2rule_ids[card] filter_rule_ids.append(r_id) filter_rule_ids = list(set(filter_rule_ids)) weizoom_card_rules = weizoom_card_rules.filter( id__in=filter_rule_ids) if len(result_list) == 0: weizoom_card_rules = [] pageinfo, weizoom_card_rules = paginator.paginate( weizoom_card_rules, cur_page, count_per_page, query_string=request.META['QUERY_STRING']) card_rule_ids = [] user_ids = [] for r in weizoom_card_rules: card_rule_ids.append(int(r.id)) belong_to_owner_list = str(r.shop_limit_list).split(',') for a in belong_to_owner_list: if a != '-1': user_ids.append(a) user_id2store_name = {} user_profiles = UserProfile.objects.filter(user_id__in=user_ids) for user_profile in user_profiles: if user_profile.store_name: user_id2store_name[str( user_profile.user_id)] = user_profile.store_name all_cards = WeizoomCard.objects.filter( weizoom_card_rule_id__in=card_rule_ids) rule_id2card_ids = {} rule_id2cards = {} for c in all_cards: card_rule_id = c.weizoom_card_rule_id if card_rule_id not in rule_id2cards: rule_id2cards[card_rule_id] = [c] else: rule_id2cards[card_rule_id].append(c) for r_id in card_rule_ids: if r_id in rule_id2cards: weizoom_cards = rule_id2cards[r_id] weizoom_card_ids = [ int(weizoom_cards[0].weizoom_card_id), int(weizoom_cards[::-1][0].weizoom_card_id) ] rule_id2card_ids[r_id] = weizoom_card_ids cur_weizoom_card_rules = [] for rule in weizoom_card_rules: belong_to_owner_list2store_names = [] belong_to_owner_list = str(rule.shop_limit_list).split(',') for a in belong_to_owner_list: if a != '-1': belong_to_owner_list2store_name = user_id2store_name.get( a, None) belong_to_owner_list2store_names.append( belong_to_owner_list2store_name) cur_weizoom_card_rule = JsonResponse() cur_weizoom_card_rule.id = rule.id cur_weizoom_card_rule.name = rule.name cur_weizoom_card_rule.count = rule.count cur_weizoom_card_rule.remark = rule.remark cur_weizoom_card_rule.money = '%.2f' % rule.money cur_weizoom_card_rule.card_type = rule.card_type cur_weizoom_card_rule.is_new_member_special = rule.is_new_member_special cur_weizoom_card_rule.card_attr = rule.card_attr cur_weizoom_card_rule.belong_to_owner = belong_to_owner_list2store_names cur_weizoom_card_rule.valid_time_from = rule.valid_time_from.strftime( '%Y-%m-%d %H:%M') cur_weizoom_card_rule.valid_time_to = rule.valid_time_to.strftime( '%Y-%m-%d %H:%M') cur_weizoom_card_rule.created_at = rule.created_at.strftime( '%Y-%m-%d %H:%M') #卡号区间 try: weizoom_card_ids = rule_id2card_ids[cur_weizoom_card_rule.id] weizoom_card_id_start = weizoom_card_ids[0] weizoom_card_id_end = weizoom_card_ids[1] card_num_range = '%07d-%07d' % (weizoom_card_id_start, weizoom_card_id_end) cur_weizoom_card_rule.card_range = card_num_range except: pass # 卡类型 if cur_weizoom_card_rule.card_type == WEIZOOM_CARD_EXTERNAL: cur_weizoom_card_rule.card_type = TYPE2NAME[ 'WEIZOOM_CARD_EXTERNAL'] elif cur_weizoom_card_rule.card_type == WEIZOOM_CARD_INTERNAL: cur_weizoom_card_rule.card_type = TYPE2NAME[ 'WEIZOOM_CARD_INTERNAL'] else: cur_weizoom_card_rule.card_type = TYPE2NAME['WEIZOOM_CARD_GIFT'] cur_weizoom_card_rules.append(cur_weizoom_card_rule) response = create_response(200) response.data.items = cur_weizoom_card_rules response.data.sortAttr = request.GET.get('sort_attr', '-created_at') response.data.pageinfo = paginator.to_dict(pageinfo) response.data.can_delay_card = can_delay_card response.data.can_export_batch_card = can_export_batch_card return response.get_response()
def get_channel_qrcode_settings(request): """ 获取渠道扫码配置列表 """ #处理搜索 query = request.GET.get('query', '').strip() if query: settings = ChannelQrcodeSettings.objects.filter(owner=request.user, name__contains=query) else: settings = ChannelQrcodeSettings.objects.filter(owner=request.user) setting_ids = [s.id for s in settings] relations = ChannelQrcodeHasMember.objects.filter( channel_qrcode_id__in=setting_ids) setting_id2count = {} member_id2setting_id = {} member_ids = [] for r in relations: member_ids.append(r.member_id) member_id2setting_id[r.member_id] = r.channel_qrcode_id if r.channel_qrcode_id in setting_id2count: setting_id2count[r.channel_qrcode_id] += 1 else: setting_id2count[r.channel_qrcode_id] = 1 webapp_users = member_model.WebAppUser.objects.filter( member_id__in=member_ids) webapp_user_id2member_id = dict([(u.id, u.member_id) for u in webapp_users]) webapp_user_ids = set(webapp_user_id2member_id.keys()) orders = mall_model.Order.by_webapp_user_id(webapp_user_ids).filter( status=mall_model.ORDER_STATUS_SUCCESSED) member_id2total_final_price = {} for order in orders: member_id = webapp_user_id2member_id[order.webapp_user_id] if member_id in member_id2total_final_price: member_id2total_final_price[member_id] += order.final_price else: member_id2total_final_price[member_id] = order.final_price setting_id2total_final_price = {} for member_id in member_id2total_final_price.keys(): final_price = member_id2total_final_price[member_id] setting_id = member_id2setting_id[member_id] if setting_id in setting_id2total_final_price: setting_id2total_final_price[setting_id] += final_price else: setting_id2total_final_price[setting_id] = final_price response = create_response(200) response.data.items = [] items = [] mp_user = get_binding_weixin_mpuser(request.user) mpuser_access_token = get_mpuser_accesstoken(mp_user) for setting in settings: cur_setting = JsonResponse() prize_info = decode_json_str(setting.award_prize_info) if prize_info['name'] == '_score-prize_': setting.cur_prize = '[%s]%d' % (prize_info['type'], prize_info['id']) elif prize_info['name'] == 'non-prize': setting.cur_prize = prize_info['type'] else: setting.cur_prize = '[%s]%s' % (prize_info['type'], prize_info['name']) if setting.id in setting_id2count: setting.count = setting_id2count[setting.id] else: setting.count = 0 if setting.id in setting_id2total_final_price: setting.total_final_price = setting_id2total_final_price[ setting.id] else: setting.total_final_price = 0 #如果没有ticket信息则获取ticket信息 if not setting.ticket: try: if mp_user.is_certified and mp_user.is_service and mpuser_access_token.is_active: weixin_api = get_weixin_api(mpuser_access_token) qrcode_ticket = weixin_api.create_qrcode_ticket( int(setting.id), QrcodeTicket.PERMANENT) try: ticket = qrcode_ticket.ticket except: ticket = '' setting.ticket = ticket setting.save() except: pass cur_setting.id = setting.id cur_setting.name = setting.name cur_setting.count = setting.count cur_setting.total_final_price = round(setting.total_final_price, 2) cur_setting.cur_prize = setting.cur_prize cur_setting.ticket = setting.ticket cur_setting.remark = setting.remark items.append(cur_setting) #进行分页 response.data.sortAttr = request.GET.get('sort_attr', 'count') if '-' in response.data.sortAttr: sorter = response.data.sortAttr[1:] is_reverse = True else: sorter = response.data.sortAttr is_reverse = False items = sorted(items, reverse=is_reverse, key=lambda b: getattr(b, sorter)) count_per_page = int(request.GET.get('count_per_page', 15)) cur_page = int(request.GET.get('page', '1')) pageinfo, items = paginator.paginate( items, cur_page, count_per_page, query_string=request.META['QUERY_STRING']) # response.data.items = items response.data.pageinfo = paginator.to_dict(pageinfo) return response.get_response()
def get_records(request): sort_attr = request.GET.get('sort_attr', '-created_at') point_cards = PointCard.objects.filter( owner=request.user).order_by(sort_attr) point_card_rule_id2point_card_rule = dict([ (rule.id, rule) for rule in PointCardRule.get_all_point_card_rules_list(request.user) ]) roles = [] for id in point_card_rule_id2point_card_rule: cur_point_card = JsonResponse() cur_point_card.name = point_card_rule_id2point_card_rule[id].name cur_point_card.id = point_card_rule_id2point_card_rule[id].id roles.append(cur_point_card) member_ids = [c.member_id for c in point_cards] members = get_member_by_id_list(member_ids) member_id2member = dict([(m.id, m) for m in members]) has_active_point_card = False #处理过滤 filter_attr = request.GET.get('filter_attr', None) filter_value = int(request.GET.get('filter_value', -1)) if filter_attr and (filter_value != -1): params = {filter_attr: filter_value} point_cards = point_cards.filter(**params) #进行分页 count_per_page = int(request.GET.get('count_per_page', 15)) cur_page = int(request.GET.get('page', '1')) pageinfo, point_cards = paginator.paginate( point_cards, cur_page, count_per_page, query_string=request.META['QUERY_STRING']) items = [] for point_card in point_cards: cur_point_card = JsonResponse() cur_point_card.id = point_card.id cur_point_card.point_card_rule_name = point_card_rule_id2point_card_rule[ point_card.point_card_rule_id].name if point_card.status == POINT_CARD_STATUS_UNUSED: has_active_point_card = True cur_member = JsonResponse() member_id = int(point_card.member_id) if member_id in member_id2member: member = member_id2member[member_id] cur_member.username_for_html = member.username_for_html else: member = '' cur_member.username_for_html = '' cur_point_card.member = cur_member cur_point_card.status = point_card.status cur_point_card.point_card_id = point_card.point_card_id cur_point_card.created_at = point_card.created_at.strftime("%Y-%m-%d") cur_point_card.password = point_card.password cur_point_card.point = int(point_card.point) items.append(cur_point_card) response = create_response(200) data = JsonResponse() data.items = items data.has_active_point_card = has_active_point_card data.sortAttr = request.GET.get('sort_attr', '-created_at') response.data = data response.data.pageinfo = paginator.to_dict(pageinfo) response.data.roles = roles return response.get_response()
def get_weizoom_cards(request): """ 卡列表 """ count_per_page = int(100) cur_page = int(request.GET.get('page', '1')) weizoom_card_rule_id = int(request.GET.get('weizoom_card_rule_id', '-1')) weizoom_cards = WeizoomCard.objects.filter( weizoom_card_rule_id=weizoom_card_rule_id) weizoomcardpermission = WeiZoomCardPermission.objects.filter( user_id=request.user.id) can_active_card = 0 can_stop_card = 0 can_view_card_details = 0 if weizoomcardpermission: can_active_card = weizoomcardpermission[0].can_active_card can_stop_card = weizoomcardpermission[0].can_stop_card can_view_card_details = weizoomcardpermission[0].can_view_card_details #获得已经过期的微众卡id today = datetime.today() card_ids_need_expire = [] for card in weizoom_cards: #记录过期并且是未使用的微众卡id if card.expired_time < today: card_ids_need_expire.append(card.id) if len(card_ids_need_expire) > 0: WeizoomCard.objects.filter(id__in=card_ids_need_expire).update( is_expired=True) # weizoom_cards = WeizoomCard.objects.filter(weizoom_card_rule_id=weizoom_card_rule_id) filter_value = request.GET.get('filter_value', '') card_number = _get_cardNumber_value(filter_value) cardStatus = _get_status_value(filter_value) try: if card_number != -1: weizoom_cards = weizoom_cards.filter( weizoom_card_id__contains=str(card_number)) if cardStatus != -1: weizoom_cards = weizoom_cards.filter(status=cardStatus) except: pass #卡号区间查询 card_num_min = request.GET.get('card_num_min', '') card_num_max = request.GET.get('card_num_max', '') if card_num_min or card_num_max: weizoom_card_id_set = set( [int(c.weizoom_card_id) for c in weizoom_cards]) if card_num_min and card_num_max: min_num = int(card_num_min) max_num = int(card_num_max) search_set = set(range(min_num, max_num + 1)) elif card_num_max: search_set = set([int(card_num_max)]) elif card_num_min: search_set = set([int(card_num_min)]) else: search_set = set([]) result_set = search_set & weizoom_card_id_set result_list = list(result_set) if len(result_list) > 0: filter_cards_id_list = [] for card_num in result_list: filter_cards_id_list.append(u'%07d' % card_num) weizoom_cards = weizoom_cards.filter( weizoom_card_id__in=filter_cards_id_list) if len(result_list) == 0: weizoom_cards = [] pageinfo, weizoom_cards = paginator.paginate( weizoom_cards, cur_page, count_per_page, query_string=request.META['QUERY_STRING']) weizoom_card_rule = WeizoomCardRule.objects.filter(id=weizoom_card_rule_id) rule_id2rule = {rule.id: rule for rule in weizoom_card_rule} card_recharge = WeizoomCardRecharge.objects.all() id2recharge_money = {} for card in card_recharge: if card.card_id not in id2recharge_money: id2recharge_money[card.card_id] = card.recharge_money else: id2recharge_money[card.card_id] += card.recharge_money cur_weizoom_cards = [] for c in weizoom_cards: cur_weizoom_card = JsonResponse() cur_weizoom_card.id = c.id cur_weizoom_card.status = c.status cur_weizoom_card.weizoom_card_id = c.weizoom_card_id cur_weizoom_card.password = c.password cur_weizoom_card.active_card_user_id = c.active_card_user_id #激活卡用户的id cur_weizoom_card.user_id = request.user.id #当前用户的id cur_weizoom_card.money = '%.2f' % c.money # 余额 rule_money = 0.0 if c.weizoom_card_rule_id not in rule_id2rule else rule_id2rule[ c.weizoom_card_rule_id].money money = '%.2f' % c.money # 余额 recharge_money = 0 if c.id not in id2recharge_money else id2recharge_money[ c.id] total_money = '%.2f' % (float(rule_money) + recharge_money) #总额 used_money = '%.2f' % (float(total_money) - float(money)) #已使用金额 if c.activated_at: cur_weizoom_card.activated_at = c.activated_at.strftime( '%Y-%m-%d %H:%M:%S') else: cur_weizoom_card.activated_at = '' valid_time_from = '' if c.weizoom_card_rule_id not in rule_id2rule else rule_id2rule[ c.weizoom_card_rule_id].valid_time_from valid_time_to = '' if c.weizoom_card_rule_id not in rule_id2rule else rule_id2rule[ c.weizoom_card_rule_id].valid_time_to cur_weizoom_card.total_money = total_money #总额 cur_weizoom_card.used_money = used_money #已使用金额 cur_weizoom_card.remark = c.remark cur_weizoom_card.activated_to = c.activated_to cur_weizoom_card.department = c.department cur_weizoom_card.valid_time_from = datetime.strftime( valid_time_from, '%Y-%m-%d %H:%M') cur_weizoom_card.valid_time_to = datetime.strftime( c.expired_time, '%Y-%m-%d %H:%M') cur_weizoom_card.is_expired = c.is_expired if (c.is_expired and cardStatus == -1) or not c.is_expired: cur_weizoom_cards.append(cur_weizoom_card) else: pageinfo.object_count -= 1 response = create_response(200) response.data.items = cur_weizoom_cards response.data.sortAttr = request.GET.get('sort_attr', '-created_at') response.data.pageinfo = paginator.to_dict(pageinfo) response.data.can_active_card = can_active_card response.data.can_stop_card = can_stop_card response.data.can_view_card_details = can_view_card_details return response.get_response()
def post_all_cards(request): count_per_page = int(15) cur_page = int(request.GET.get('page', '1')) search_query = request.GET.get('query', '') orgin_card_list = request.GET.get('orginCardList', '') #获得已经过期的微众卡id today = datetime.today() WeizoomCard.objects.filter(expired_time__lte=today, is_expired=False).update(is_expired=True) card_status = [ WEIZOOM_CARD_STATUS_UNUSED, WEIZOOM_CARD_STATUS_USED, WEIZOOM_CARD_STATUS_EMPTY ] weizoom_cards = WeizoomCard.objects.filter(status__in=card_status, is_expired=False) if search_query: search_query_dict = json.loads(search_query) card_filter_id = search_query_dict['cardIds'] if card_filter_id: weizoom_cards = WeizoomCard.objects.filter( weizoom_card_id__contains=card_filter_id) can_active_card = 0 can_stop_card = 0 can_view_card_details = 0 pageinfo, weizoom_cards = paginator.paginate( weizoom_cards, cur_page, count_per_page, query_string=request.META['QUERY_STRING']) rule_card_ids = set( [weizoom_card.weizoom_card_rule_id for weizoom_card in weizoom_cards]) w_card_ids = set([weizoom_card.id for weizoom_card in weizoom_cards]) weizoom_card_rule = WeizoomCardRule.objects.filter(id__in=rule_card_ids) card_recharge = WeizoomCardRecharge.objects.filter(card_id__in=w_card_ids) id2recharge_money = {} for card in card_recharge: if card.card_id not in id2recharge_money: id2recharge_money[card.card_id] = card.recharge_money else: id2recharge_money[card.card_id] += card.recharge_money id2total_money = { card_rule.id: card_rule.money for card_rule in weizoom_card_rule } cur_weizoom_cards = [] for c in weizoom_cards: cur_weizoom_card = JsonResponse() cur_weizoom_card.id = c.id cur_weizoom_card.status = c.status cur_weizoom_card.weizoom_card_id = c.weizoom_card_id cur_weizoom_card.user_id = request.user.id #当前用户的id cur_weizoom_card.money = '%.2f' % c.money # 余额 if c.activated_at: cur_weizoom_card.activated_at = c.activated_at.strftime( '%Y-%m-%d %H:%M:%S') else: cur_weizoom_card.activated_at = '' recharge_money = 0 if c.id not in id2recharge_money else id2recharge_money[ c.id] cur_weizoom_card.total_money = '%.2f' % ( 0 if c.weizoom_card_rule_id not in id2total_money else id2total_money[c.weizoom_card_rule_id]) #总额 cur_weizoom_card.used_money = '%.2f' % ( float(cur_weizoom_card.total_money) - float(cur_weizoom_card.money) + recharge_money) #已使用金额 cur_weizoom_card.is_expired = c.is_expired cur_weizoom_card.recharge_money = '%.2f' % recharge_money if (c.is_expired) or not c.is_expired: cur_weizoom_cards.append(cur_weizoom_card) else: pageinfo.object_count -= 1 response = create_response(200) response.data.items = cur_weizoom_cards response.data.sortAttr = request.GET.get('sort_attr', '-created_at') response.data.pageinfo = paginator.to_dict(pageinfo) response.data.can_active_card = can_active_card response.data.can_stop_card = can_stop_card response.data.can_view_card_details = can_view_card_details response.data.orgin_card_list = orgin_card_list return response.get_response()
response.errMsg = u'获取公众号预览信息失败' return response.get_jsonp_response(request) if isManager == "false" and isSystemMenager == "false": #清空未读消息 Session.objects.filter(mpuser=mpuser, id=session_id).update(unread_count=0) sender_name_response = "" messages_list_json = [] is_active = True if datetime.now( ) < session.latest_contact_created_at + timedelta( hours=EXPIRED_TIME) and datetime.now( ) > session.latest_contact_created_at else False for message in reversed(messages): sender = username2weixin_user[message.from_weixin_user_username] one_message = JsonResponse() one_message.id = message.id one_message.weixin_message_id = message.weixin_message_id one_message.is_reply = message.is_reply one_message.message_type = message.message_type one_message.pic_url = message.pic_url one_message.audio_url = message.audio_url one_message.content = emotion.mui_change_emotion_to_img( message.content) one_message.weixin_created_at = __format_datetime( message.weixin_created_at) if message.is_reply: one_message.sender_icon = mpuser_preview_info.image_path one_message.sender_name = mpuser_preview_info.name else: member = Member.get_member_by_weixin_user_id(sender.id)
def get_member_records(request): activity_id = int(request.GET['activity_id']) activity = Activity.objects.get(id=activity_id) query = request.GET.get('query', None) filter_attr = request.GET.get('filter_attr', None) filter_value = request.GET.get('filter_value', None) is_enable_offline_sign = activity.is_enable_offline_sign weapp_users = activity.joined_weapp_users webapp_user_ids = [user.id for user in weapp_users] weapp_user_id_2_values = {} for item_value in ActivityItemValue.objects.filter( activity=activity, webapp_user_id__in=webapp_user_ids): weapp_user_id_2_values.setdefault(item_value.webapp_user_id, {})[item_value.item_id] = item_value items = list(ActivityItem.objects.filter(activity=activity)) if activity.is_enable_offline_sign: activity_user_codes = ActivityUserCode.objects.filter( activity=activity, webapp_user_id__in=webapp_user_ids) if query: activity_user_codes = activity_user_codes.filter(sign_code=query) #处理过滤 if filter_attr: if filter_value != '-1': activity_user_codes = activity_user_codes.filter( sign_status=int(filter_value)) user_id2code = dict([(a.webapp_user_id, a.sign_code) for a in activity_user_codes]) user_id2sign_status = dict([(a.webapp_user_id, a.sign_status) for a in activity_user_codes]) weapp_users = [user for user in weapp_users if user.id in user_id2code] #进行分页 count_per_page = int(request.GET.get('count_per_page', 15)) cur_page = int(request.GET.get('page', '1')) pageinfo, weapp_users = paginator.paginate( weapp_users, cur_page, count_per_page, query_string=request.META['QUERY_STRING']) response = create_response(200) cur_weapp_users = [] for weapp_user in weapp_users: cur_weapp_user = JsonResponse() cur_weapp_user.id = weapp_user.id member = weapp_user.get_member_by_webapp_user_id(weapp_user.id) if not activity.is_enable_offline_sign and query: if member: if member.username_for_html != query: continue else: continue cur_member = JsonResponse() if member: cur_member.id = member.id cur_member.user_icon = member.user_icon cur_member.username_for_html = member.username_for_html else: cur_member = '' cur_weapp_user.member = cur_member try: sign_code = user_id2code[weapp_user.id] sign_status = user_id2sign_status[weapp_user.id] except: sign_code = '' sign_status = 0 cur_weapp_user.sign_code = sign_code cur_weapp_user.sign_status = sign_status cur_weapp_user.item_values = [] item_values = [] for item in items: id2value = weapp_user_id_2_values[weapp_user.id] if not item.id in id2value: #存在非必填项 continue value = id2value[item.id] user_input_value = value.value is_image = False if item.type == ACTIVITYITEM_TYPE_IMAGE: is_image = True cur_item = JsonResponse() cur_item.title = item.title cur_item.is_image = is_image cur_item.user_input_value = user_input_value item_values.append(cur_item) cur_weapp_user.item_values = item_values cur_weapp_users.append(cur_weapp_user) response.data.weapp_users = cur_weapp_users cur_activity = JsonResponse() cur_activity.id = activity.id cur_activity.name = activity.name cur_activity.start_date = activity.start_date cur_activity.end_date = activity.end_date cur_activity.is_enable_offline_sign = activity.is_enable_offline_sign response.data.activity = cur_activity response.data.pageinfo = paginator.to_dict(pageinfo) response.data.sortAttr = request.GET.get('sort_attr', '-created_at') return response.get_response()
def _get_channel_qrcode_items(request): #处理搜索 from mall.models import * query = request.GET.get('query', '').strip() sort_attr = request.GET.get('sort_attr', '-created_at') created_at = '-created_at' if 'created_at' in sort_attr: created_at = sort_attr setting = MemberChannelQrcodeSettings.objects.filter(owner=request.manager) if setting.count() > 0: member_channel_qrcodes = MemberChannelQrcode.objects.filter( member_channel_qrcode_setting=setting[0]) if query: member_ids = [ qrcode.member_id for qrcode in member_channel_qrcodes ] query_hex = byte_to_hex(query) members = member_model.Member.objects.filter( id__in=member_ids).filter(username_hexstr__contains=query_hex) member_ids = [m.id for m in members] member_channel_qrcodes = member_channel_qrcodes.filter( member_id__in=member_ids) else: return create_response(500).get_response() member_channel_qrcode_ids = [ qrcode.id for qrcode in member_channel_qrcodes ] relations = MemberChannelQrcodeHasMember.objects.filter( member_channel_qrcode__in=member_channel_qrcode_ids) member_channel_qrcode_id2count = {} member_id2member_channel_qrcode_id = {} member_id2relation = {} member_ids = [] for r in relations: member_ids.append(r.member_id) member_id2member_channel_qrcode_id[ r.member_id] = r.member_channel_qrcode_id member_id2relation[r.member_id] = r if r.member_channel_qrcode_id in member_channel_qrcode_id2count: member_channel_qrcode_id2count[r.member_channel_qrcode_id] += 1 else: member_channel_qrcode_id2count[r.member_channel_qrcode_id] = 1 webapp_users = member_model.WebAppUser.objects.filter( member_id__in=member_ids) webapp_user_id2member_id = dict([(u.id, u.member_id) for u in webapp_users]) webapp_user_ids = set(webapp_user_id2member_id.keys()) orders = Order.by_webapp_user_id(webapp_user_ids).filter( status__in=(ORDER_STATUS_PAYED_SUCCESSED, ORDER_STATUS_PAYED_NOT_SHIP, ORDER_STATUS_PAYED_SHIPED, ORDER_STATUS_SUCCESSED)) member_id2total_final_price = {} member_id2cash_money = {} member_id2weizoom_card_money = {} for order in orders: member_id = webapp_user_id2member_id[order.webapp_user_id] if member_id2relation[member_id].is_new or member_id2relation[ member_id].created_at <= order.created_at: if member_id in member_id2total_final_price: member_id2total_final_price[ member_id] += order.final_price + order.weizoom_card_money member_id2cash_money[member_id] += order.final_price member_id2weizoom_card_money[ member_id] += order.weizoom_card_money else: member_id2total_final_price[ member_id] = order.final_price + order.weizoom_card_money member_id2cash_money[member_id] = order.final_price member_id2weizoom_card_money[ member_id] = order.weizoom_card_money member_channel_qrcode_id2total_final_price = {} member_channel_qrcode_id2cash_money = {} member_channel_qrcode_id2weizoom_card_money = {} for member_id in member_id2total_final_price.keys(): final_price = member_id2total_final_price[member_id] cash_money = member_id2cash_money[member_id] weizoom_card_money = member_id2weizoom_card_money[member_id] member_channel_qrcode_id = member_id2member_channel_qrcode_id[ member_id] if member_channel_qrcode_id in member_channel_qrcode_id2total_final_price: member_channel_qrcode_id2total_final_price[ member_channel_qrcode_id] += final_price member_channel_qrcode_id2cash_money[ member_channel_qrcode_id] += cash_money member_channel_qrcode_id2weizoom_card_money[ member_channel_qrcode_id] += weizoom_card_money else: member_channel_qrcode_id2total_final_price[ member_channel_qrcode_id] = final_price member_channel_qrcode_id2cash_money[ member_channel_qrcode_id] = cash_money member_channel_qrcode_id2weizoom_card_money[ member_channel_qrcode_id] = weizoom_card_money response = create_response(200) #response.data.items = [] items = [] mp_user = get_binding_weixin_mpuser(request.manager) mpuser_access_token = get_mpuser_accesstoken(mp_user) for qrcode in member_channel_qrcodes: current_qrcode = JsonResponse() if qrcode.id in member_channel_qrcode_id2count: qrcode.count = member_channel_qrcode_id2count[qrcode.id] else: qrcode.count = 0 if qrcode.id in member_channel_qrcode_id2total_final_price: qrcode.total_final_price = member_channel_qrcode_id2total_final_price[ qrcode.id] qrcode.cash_money = member_channel_qrcode_id2cash_money[qrcode.id] qrcode.weizoom_card_money = member_channel_qrcode_id2weizoom_card_money[ qrcode.id] else: qrcode.total_final_price = 0 qrcode.cash_money = 0 qrcode.weizoom_card_money = 0 #如果没有ticket信息则获取ticket信息 if not qrcode.ticket: try: if mp_user.is_certified and mp_user.is_service and mpuser_access_token.is_active: weixin_api = get_weixin_api(mpuser_access_token) qrcode_ticket = weixin_api.create_qrcode_ticket( int(qrcode.id), QrcodeTicket.PERMANENT) try: ticket = qrcode_ticket.ticket except: ticket = '' qrcode.ticket = ticket qrcode.save() except: pass current_qrcode.id = qrcode.id current_qrcode.name = qrcode.member.username_for_html current_qrcode.count = qrcode.count current_qrcode.total_final_price = round(qrcode.total_final_price, 2) current_qrcode.ticket = qrcode.ticket current_qrcode.created_at = qrcode.created_at.strftime( '%Y-%m-%d %H:%M:%S') items.append(current_qrcode) return items
def api_get(request): """ 获取优惠券advanced table """ coupon_code = request.GET.get('couponCode', '') use_status = request.GET.get('useStatus', '') member_name = request.GET.get('memberName', '') #是否显示最后一页 is_max_page = int(request.GET.get('is_max_page', 0)) is_fetch_all_coupon = (not coupon_code) and (use_status == 'all') and ( not member_name) # 处理排序 sort_attr = request.GET.get('sort_attr', '-id') coupon_rule_id = request.GET.get('id') if coupon_rule_id: coupons = Coupon.objects.filter( owner=request.manager, coupon_rule_id=coupon_rule_id).order_by(sort_attr) # 获取coupon所属的rule的name id2rule = dict([ (rule.id, rule) for rule in CouponRule.objects.filter(owner=request.manager) ]) if is_fetch_all_coupon: # 进行分页 count_per_page = int(request.GET.get('count_per_page', 15)) cur_page = int(request.GET.get('page', '1')) pageinfo, coupons = paginator.paginate( coupons, cur_page, count_per_page, query_string=request.META['QUERY_STRING']) else: coupons_data = _filter_reviews(request, coupons) count_per_page = int(request.GET.get('count_per_page', 15)) cur_page = request.GET.get('page', '1') t_max_page = False if cur_page == "true": t_max_page = True cur_page = 1 pageinfo, coupons = paginator.paginate( coupons_data, cur_page, count_per_page, query_string=request.META['QUERY_STRING']) ##是否从最后一页开始显示 if is_max_page: max_page = int(pageinfo.max_page) if max_page != cur_page and t_max_page: cur_page = max_page pageinfo, coupons = paginator.paginate( coupons_data, cur_page, count_per_page, query_string=request.META['QUERY_STRING']) # 避免便利整个优惠券列表 member_ids = [c.member_id for c in coupons] members = get_member_by_id_list(member_ids) member_id2member = dict([(m.id, m) for m in members]) # 获取被使用的优惠券使用者信息 coupon_ids = [c.id for c in coupons if c.status == COUPON_STATUS_USED] orders = Order.get_orders_by_coupon_ids(coupon_ids) if orders: coupon_id2webapp_user_id = dict([(o.coupon_id, \ {'id': o.id, 'user': o.webapp_user_id, 'order_id': o.order_id, 'created_at': o.created_at}) \ for o in orders]) else: coupon_id2webapp_user_id = {} response = create_response(200) response.data.items = [] #统计是否有active的coupon # has_active_coupon = False now = datetime.today() for coupon in coupons: cur_coupon = JsonResponse() cur_coupon.id = coupon.id cur_coupon.coupon_id = coupon.coupon_id cur_coupon.provided_time = coupon.provided_time.strftime( "%Y-%m-%d %H:%M") cur_coupon.created_at = coupon.created_at.strftime( "%Y-%m-%d %H:%M") cur_coupon.money = str(coupon.money) cur_coupon.is_manual_generated = coupon.is_manual_generated cur_member = JsonResponse() member_id = int(coupon.member_id) # if coupon.status == COUPON_STATUS_UNUSED: # has_active_coupon = True if member_id in member_id2member: member = member_id2member[member_id] cur_member.username_truncated = member.username_truncated cur_member.username_for_html = member.username_for_html else: member = '' cur_member.username_truncated = '' cur_member.username_for_html = '' cur_member.id = member_id consumer = JsonResponse() consumer.username_truncated = '' consumer.username_for_html = '' if coupon.status == COUPON_STATUS_USED: if coupon.id in coupon_id2webapp_user_id: order = coupon_id2webapp_user_id[coupon.id] cur_coupon.order_id = order['id'] cur_coupon.order_fullid = order['order_id'] cur_coupon.use_time = order['created_at'].strftime( "%Y-%m-%d %H:%M") webapp_user_id = order['user'] member = WebAppUser.get_member_by_webapp_user_id( webapp_user_id) if member: consumer.username_truncated = member.username_truncated consumer.username_for_html = member.username_for_html consumer.id = member.id else: consumer.username_truncated = '未知' consumer.username_for_html = '未知' else: consumer.username_truncated = '未知' consumer.username_for_html = '未知' cur_coupon.status = COUPONSTATUS.get(coupon.status)['name'] elif coupon.expired_time <= now: cur_coupon.status = COUPONSTATUS.get( COUPON_STATUS_EXPIRED)['name'] else: cur_coupon.status = COUPONSTATUS.get(coupon.status)['name'] cur_coupon.member = cur_member cur_coupon.consumer = consumer cur_coupon.rule_name = id2rule[coupon.coupon_rule_id].name response.data.items.append(cur_coupon) response.data.sortAttr = request.GET.get('sort_attr', '-created_at') response.data.pageinfo = paginator.to_dict(pageinfo) return response.get_response()