コード例 #1
0
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
コード例 #2
0
ファイル: mobile_api_views.py プロジェクト: chengdg/weizoom
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()
コード例 #3
0
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()
コード例 #4
0
ファイル: mobile_api_views.py プロジェクト: chengdg/weizoom
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()
コード例 #5
0
ファイル: views.py プロジェクト: chengdg/weizoom
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'])
コード例 #6
0
ファイル: send_mns_message.py プロジェクト: chengdg/weizoom
        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)
コード例 #7
0
ファイル: mobile_api_views.py プロジェクト: chengdg/weizoom
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()
コード例 #8
0
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)
コード例 #9
0
    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!"
コード例 #10
0
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