def _get_send_message_dict(user_profile, member_id, model, template_message): template_data = dict() social_account = member_model_api.get_social_account_by_member_id( member_id) member = member_model_api.get_member_by_id(member_id) if social_account and social_account.openid: template_data['touser'] = social_account.openid template_data['template_id'] = template_message.template_id template_data['topcolor'] = "#FF0000" template_data['url'] = __get_template_url(template_message.send_point, user_profile, member, model) detail_data = {} detail_data["first"] = { "value": template_message.first_text, "color": "#000000" } detail_data["remark"] = { "value": template_message.remark_text, "color": "#000000" } customer_data = __get_detail_data_by_template( template_message.template_message, model) detail_data = dict(detail_data, **customer_data) template_data['data'] = detail_data return template_data
def get_study_plan(request): if hasattr(request, 'member'): member = request.member else: member_id = request.GET.get('member_id', '') try: member = member_module_api.get_member_by_id(int(member_id)) except: response = create_response(500) response.errmsg = u'获取不到会员信息' return response.get_response() company = request.GET.get('company_name') status = request.GET.get('status', 0) _, member_info = get_binding_info_by_member(member) if member_info: phone_number = member_info.phone_number else: phone_number = None # 向盛景 发送请求 获取学习计划 items = shengjing_api.mobile_get_learn_plan_list(phone_number, company) try: if int(items.get('Header').get('Code')) == 0: response = create_response(200) response.data = items.get("Data", []) else: response = create_response(501) msg = u'code:{}, info:{}'.format(items.get('Header').get('Code'), items.get('Header').get('Info')) response.data['msg'] = msg response.errMsg = msg except: response = create_response(500) response.data['msg'] = u'获取数据失败,请重试' response.errMsg = u'获取数据失败,请重试' #是否是决策人 # try: # is_leader = crm_api_views.is_leader(member_info.phone_number, company) # except: # watchdog_error(u'盛景获取课程计划判断是否是决策人API出错') # is_leader = False # if is_leader: # try: # courses = crm_api_views.get_learning_plan(phone_number, company, status) # response = create_response(200) # response.data.items = courses # except: # response = create_response(500) # response.errMsg = u'获取数据失败' # else: # response = create_response(501) # response.errMsg = u'您尚未购买盛景课程<br/>或者您不是企业决策人' return response.get_response()
def list_order(request): company = request.GET.get('company') #得到会员信息 member = None if hasattr(request, 'member'): member = request.member else: member_id = request.GET.get('member_id', '') try: member = member_module_api.get_member_by_id(int(member_id)) except: response = create_response(500) response.errmsg = u'获取不到会员信息' return response.get_response() binding_member, member_info = get_binding_info_by_member(member) if not crm_apis.is_leader(member_info.phone_number, company): response = create_response(200) data = {} data['is_leader'] = False data['info'] = u'您尚未购买盛景课程<br/>或者您不是企业决策人' response.data = data return response.get_response() order_status = request.GET.get('status', ORDER_USING) #订单状态 #获取人次卡 cards = None try: cards = crm_apis.get_time_person_cards(member_info.phone_number, company, int(order_status)) except: alert_message = u'获取时间卡信息失败.\n couse: {}'.format(unicode_full_stack()) watchdog_alert(alert_message) has_orders = True if cards == None or len(cards) == 0: has_orders = False response = create_response(200) data = {} data['has_orders'] = has_orders data['is_leader'] = True data['cards'] = cards response.data = data return response.get_response()
def get_confirm_study_plan(request): if hasattr(request, 'member'): member = request.member else: member_id = request.GET.get('member_id', '') try: member = member_module_api.get_member_by_id(int(member_id)) except: response = create_response(500) response.errmsg = u'获取不到会员信息' return response.get_response() _, member_info = get_binding_info_by_member(member) if member_info: phone_number = member_info.phone_number else: phone_number = None study_id = request.GET.get('study_id', 0) webapp_user_ids = member.get_webapp_user_ids # 确认学习计划 items = shengjing_api.mobile_get_confirm_learn_plan(phone_number, study_id, webapp_user_ids[0]) try: if int(items.get('Header').get('Code')) == 0: response = create_response(200) else: response = create_response(501) response.data.msg = u'{}'.format(items.get('Header').get('Info')) response.errMsg = u'{}'.format(items.get('Header').get('Info')) except: response = create_response(500) response.data.msg = u'获取数据失败,请重试' response.errMsg = u'获取数据失败,请重试' response.return_info = items response.data.webapp_user_ids = webapp_user_ids response.data.study_id = study_id return response.get_response()
def update_activity_sign_status(request, sign_code): activity_user_code = ActivityUserCode.objects.filter(sign_code=sign_code) activity_user_code.update(sign_status=1) if activity_user_code: activity = activity_user_code[0].activity member_id = int(request.GET.get('member_id', -1)) member = member_module_api.get_member_by_id(member_id) if member: #给予奖励 #无奖励 if activity.prize_type == -1: pass #优惠券 elif activity.prize_type == 1: rule_id = activity.prize_source # coupons = create_coupons(activity.owner, rule_id, 1, member.id) consume_coupon(activity.owner.id, rule_id, member.id) #积分 elif activity.prize_type == 3: prize_detail = activity.prize_source #增加积分 member.consume_integral(-int(prize_detail), u'参加获得,获得积分') return HttpResponseRedirect(request.META['HTTP_REFERER'])
def inner(*args, **kwargs): #判断是否配置了新的模版 coupon_rule = args[0] woid = coupon_rule.owner_id member_id = args[1] if has_new_tmpl(woid, tmpl_name): all_member_noused_coupons = mall_models.Coupon.objects.filter( member_id=member_id, status=mall_models.COUPON_STATUS_UNUSED) total_money = 0 for coupon in all_member_noused_coupons: total_money += coupon.money #商家配置了新的模板消息,则使用mns,并返回空函数 member = member_model_api.get_member_by_id(member_id) send_weixin_template_msg({ 'user_id': woid, 'member_id': member_id, 'name': tmpl_name, 'url': u'{}/mall/my_coupons/?woid={}&fmt={}'.format( settings.H5_HOST, woid, member.token), 'items': { 'keyword1': u'个人中心-我的优惠券', 'keyword2': str(coupon_rule.money), 'keyword3': str(total_money), 'keyword4': get_current_datetime(), } }) return empty_func() else: return func(*args, **kwargs)
def apply_course(request): #获取当前会员 try: member = request.member member_id = member.id member_name = member.username except: member_id = request.GET.get('member_id', '') member = member_module_api.get_member_by_id(int(member_id)) course_name = request.GET.get('course_name', '') apply_number = int(request.GET.get('count', 0)) owner_id = request.webapp_owner_id course_id = int(request.GET.get('course_id', 0)) referrer = request.GET.get('referrer', '') cousrses= ShengjingCourseRegistration.objects.filter(member_id=member_id, course_id=course_id) if cousrses: course = cousrses[0] course.apply_number = apply_number course.save() else: course = ShengjingCourseRegistration() course.member_id = member_id course.course_id = course_id course.apply_number = apply_number course.owner_id = owner_id course.referrer = referrer course.save() _, member_info = get_binding_info_by_member(member) if member_info: companys = member_info.companys company_names = [c.name for c in companys] phone = member_info.phone_number member_name = member_info.name else: #没获取到对应的会员信息 watchdog_error(u'报名时没有对应的盛景会员的信息 系统会员ID: %s' % member_id, user_id=request.user.id) company_names = [] phone = '' member_name = '' company_name_strs = '_'.join(company_names) content = u'报名时间: %s<br>报名课程:%s<br>报名人:%s<br>所属公司:%s<br>电话:%s<br>预计参课人数: %s' % (datetime.today().strftime("%Y-%m-%d %H:%M"), course_name, member_name, company_name_strs, phone, apply_number) #是否是决策人 try: items = crm_api_views.get_userinfo_by_phone_number(member_info.phone_number) except: watchdog_error(u'盛景获取课程详情判断是否是决策人API出错') items = [] try: phone_number = items['phone'] except: phone_number = '' if not phone_number: content = content + u'<br>推荐人:%s' % referrer # try: # webapp_owner_id = request.webapp_owner_id # except: webapp_owner_id = request.GET.get('webapp_owner_id', '') emails = ShengjingEmailSettings.objects.filter(owner_id=webapp_owner_id) # 增加积分 after_applied_course = ShengjingIntegralStrategySttings.objects.get(webapp_id=member.webapp_id).after_applied_course integral_caculator = IntegralCaculator() integral_caculator.increase_member_integral(member, after_applied_course, u'在线预约课程 获得积分') if emails: email= emails[0].course_registration_email else: watchdog_error(u'没有设置课程报名邮箱 邮箱内容: %s' % content, user_id=request.user.id) email = u'' if email: sendmail(email, u'%s 报名' % course_name, content) response = create_response(200) return response.get_response()
def get_order(request): response_data, template_name = _get_template_name_and_response_data( request) if template_name: c = RequestContext(request, response_data) return render_to_response(template_name, c) else: #得到会员信息 member = None if hasattr(request, 'member'): member = request.member else: member_id = request.GET.get('member_id', '') try: member = member_module_api.get_member_by_id(int(member_id)) except: fatal_message = u'账单(获取时间卡、人次卡信息), 未获取到 member_id:{};'.format( member_id) watchdog_fatal(fatal_message, user_id=211) c = RequestContext( request, { 'page_title': u'查看账单', 'error_info': u'获取会员信息失败', 'is_hide_weixin_option_menu': True }) return render_to_response('webapp/order_error.html', c) binding_member, member_info = get_binding_info_by_member(member) # #不是决策人 # if not is_leader(member_info): # c = RequestContext(request, { # 'page_title': u'查看账单', # 'error_info': u'您尚未购买盛景课程或者您不是企业决策人,所以您无法看到此信息!', # 'is_hide_weixin_option_menu': True # }) # return render_to_response('webapp/order_error.html', c) #获取公司信息 company_objects = member_info.companys companys = [] for company_obj in company_objects: companys.append(company_obj.name) company = request.GET.get('company', '') if company == '': try: company = companys[0] except: fatal_message = u'账单(获取时间卡、人次卡信息), 查看账单, 您尚未购买盛景课程, 公司 company:{}; member_id:{}'.format( company, member_id) watchdog_fatal(fatal_message, user_id=211) c = RequestContext( request, { 'page_title': u'查看账单', 'error_info': u'您尚未购买盛景课程!', 'is_hide_weixin_option_menu': True }) return render_to_response('webapp/order_error.html', c) c = RequestContext( request, { 'page_title': u'账单明细', 'companys': companys, 'member': member, 'is_hide_weixin_option_menu': True }) return render_to_response('webapp/order.html', c)
def handle(self, **options): """ 优惠券到期前36小时提醒用户有优惠券即将过期。 """ user_ids = [] owner_id2ahth_appid = dict() for component in ComponentAuthedAppid.objects.all(): user_ids.append(component.user_id) owner_id2ahth_appid[component.user_id] = component expired_time_g = datetime.now() + timedelta(hours=36) expired_time_l = datetime.now() + timedelta(hours=37) coupons = promotion_models.Coupon.objects.filter( owner_id__in=user_ids, expired_time__gte=expired_time_g, expired_time__lt=expired_time_l, status=promotion_models.COUPON_STATUS_UNUSED) print 'has{} to be handled'.format(coupons.count()) for coupon in coupons: try: model_data = { "coupon_store": u'下单即可使用', "coupon_rule": u'%s至%s有效' % (coupon.coupon_rule.start_date.strftime("%Y-%m-%d"), coupon.coupon_rule.end_date.strftime("%Y-%m-%d")) } if coupon.coupon_rule.valid_restrictions > -1: model_data["coupon_store"] = u"满%s元即可使用" % str( coupon.coupon_rule.valid_restrictions) print u"给用户{}发优惠券过期提醒!".format(coupon.member_id) new_tmpl_name = u'过期提醒' if mns_utils.has_new_tmpl(coupon.owner_id, new_tmpl_name): print 'use mns----------------' mp_info = ComponentAuthedAppidInfo.objects.get( auth_appid=owner_id2ahth_appid[coupon.owner_id]) member = member_model_api.get_member_by_id( coupon.member_id) mns_utils.send_weixin_template_msg({ 'user_id': coupon.owner_id, 'member_id': coupon.member_id, 'name': new_tmpl_name, 'url': u'{}/mall/my_coupons/?woid={}&fmt={}'.format( settings.H5_HOST, coupon.owner_id, member.token), 'items': { 'keyword1': mp_info.nick_name, 'keyword2': coupon.expired_time.strftime('%Y-%m-%d %H:%M:%S') } }) else: print 'use celery----------------' template_message_api.send_weixin_template_message( coupon.owner_id, coupon.member_id, model_data, template_message_model.COUPON_EXPIRED_REMIND) except: print unicode_full_stack() alert_message = u"ship_order 发送模板消息失败, cause:\n{}".format( unicode_full_stack()) watchdog_warning(alert_message) return u"Succeed in sending a hint message to members who have a coupon will expire!"
def _is_member_subscribed(member_id): member = member_model_api.get_member_by_id(member_id) if member and member.is_subscribed is True: return False return True