Beispiel #1
0
    def post(self, request):

        username = request.POST.get('username')
        feed_id = request.POST.get('feed_id')
        title = request.POST.get('title')
        reco_num = int(request.POST.get('reco_num'))
        # calc_num = request.POST.get('calc_num')
        display_time = request.POST.get('display_time')
        user = get_object_or_none(User, email=username)
        weixin_user = WeixinService.get_weixin_user_by_uid(user=user)
        if not weixin_user:
            return JsonResponse(
                {
                    'msg': 'not found weixin user',
                    'status': 'error'
                }
            )

        openid = weixin_user.openid

        send_data = WeixinService.get_feed_notify_msg_tpl()
        url = '{0}{1}/'.format(
            WeixinService.get_recommand_url(),
            feed_id
        )

        send_data['first']['value'] = "聘宝刚刚为您推荐了{0}封简历,优质候选人不能等,请尽快查阅简历".format(reco_num),
        send_data['remark']['value'] = "小宝提示:手机上每个职位定制只能浏览最多5封简历哦,请返回PC上查看全部的简历推荐."
        if reco_num == 0:
            send_data['first']['value'] = "小宝遗憾的通知您,以下职位暂时没有合适的人才匹配:",
            send_data['remark']['value'] = "不要气馁!小宝秘籍在此:你可以尝试修改定制内容,可能会有惊喜哦!"
            url = WeixinService.get_customize_url()

        send_data['keyword1']['value'] = title
        send_data['keyword2']['value'] = reco_num
        send_data['keyword3']['value'] = display_time

        ret = WxUtils.send_tpl_msg(
            openid=openid,
            tpl_id=WeixinService.get_template_msg_id(),
            data=send_data,
            url=url,
        )

        if ret.get('errcode') != 0:
            return JsonResponse(
                {
                    'status': 'error',
                    'msg': ret.get('errmsg')
                }
            )

        return JsonResponse(
            {
                'status': 'ok',
                'msg': 'success'
            }
        )
Beispiel #2
0
    def get(self, request):
        user = request.user
        ret = WeixinService.is_bind(user=user)
        nickname = '' if not ret else ret.nickname
        ret = True if WeixinService.is_bind(user=user) else False

        return JsonResponse({
            'status': 'ok',
            'msg': '',
            'is_bind': ret,
            'nickname': nickname,
        })
    def get(self, request):
        user = request.user
        ret = WeixinService.is_bind(user=user)
        nickname = '' if not ret else ret.nickname
        ret = True if WeixinService.is_bind(user=user) else False

        return JsonResponse(
            {
                'status': 'ok',
                'msg': '',
                'is_bind': ret,
                'nickname': nickname,
            }
        )
Beispiel #4
0
def update_weixin():

    weixin_users = WeixinUser.objects.all()
    for weixin_user in weixin_users:
        openid = weixin_user.openid
        weixin_user_doc = WeixinService.get_user_info(openid=openid)
        weixin_user_doc.pop('openid')
        print weixin_user_doc
        WeixinUser.objects.filter(openid=openid).update(**weixin_user_doc)
        print 'weixin user info: %s update success' % (openid)
Beispiel #5
0
    def post(self, request):

        if not self.validate():
            return HttpResponseBadRequest('Verify Failed')

        response = WeixinService.process_request_msg(
            recv_body=request.body
        )

        return HttpResponse(response, content_type="application/xml")
Beispiel #6
0
    def send_tpl_msg(cls, openid, tpl_id, data, url, msg_type=1):

        ret = WeixinService.send_template_message(openid=openid,
                                                  template_id=tpl_id,
                                                  data=data,
                                                  url=url)

        weixin_user = WeixinService.get_weixin_user(openid=openid)

        msg_log = MsgSendLog(weixin_user=weixin_user,
                             msg_type=msg_type,
                             title=data['keyword1']['value'],
                             reco_num=data['keyword2']['value'],
                             display_time=data['keyword3']['value'],
                             url=url,
                             errcode=ret.get('errcode'),
                             errmsg=ret.get('errmsg'))
        msg_log.save()
        return ret
def send_feed_msg():

    need_send_email = EmailFeedData.objects(
        is_send=False,
    ).distinct('email')

    weixin_users = WeixinUser.objects.filter(
        user__username__in=need_send_email
    )
    for send_user in weixin_users:
        feed_data = get_feed_data(send_user)
        feed_id = feed_data.get('feed_id')
        title = feed_data['title']
        reco_num = feed_data['reco_num']
        display_time = feed_data['display_time']

        send_data = WeixinService.get_feed_notify_msg_tpl()
        send_data['first']['value'] = "聘宝刚刚为您推荐了{0}封简历,优质候选人不能等,请尽快查阅简历".format(feed_data['reco_num'])
        send_data['keyword1']['value'] = title
        send_data['keyword2']['value'] = reco_num
        send_data['keyword3']['value'] = display_time
        send_data['remark']['value'] = "小宝提示:手机上每个职位定制只能浏览最多5封简历哦,请返回PC上查看全部的简历推荐."

        urls = WeixinService.get_recommand_url().split('?from=')
        url = '{0}{1}/?from={2}'.format(urls[0], feed_id, urls[1])

        if reco_num == 0:
            send_data['first']['value'] = "小宝遗憾的通知您,以下职位暂时没有合适的人才匹配:",
            send_data['remark']['value'] = "不要气馁!小宝秘籍在此:你可以尝试修改定制内容,可能会有惊喜哦!"
            url = WeixinService.get_customize_url()

        ret = WxUtils.send_tpl_msg(
            openid=feed_data.get('openid'),
            tpl_id=WeixinService.get_template_msg_id(),
            data=send_data,
            url=url
        )

        if ret.get('errcode') == 0:
            print '%s,(openid:%s) send weixin msg success' % (send_user.user.username, feed_data.get('openid'))
        else:
            print '%s,(openid:%s) send weixin msg error' % (send_user.user.username, feed_data.get('openid'))
Beispiel #8
0
    def validate(self):

        signature = self.request.REQUEST.get('signature', '')
        timestamp = self.request.REQUEST.get('timestamp', '')
        nonce = self.request.REQUEST.get('nonce', '')

        return WeixinService.check_signature(
            signature=signature,
            timestamp=timestamp,
            nonce=nonce
        )
Beispiel #9
0
    def get(self, request):

        # if not self.validate():
        #     return HttpResponseBadRequest('Verify Failed')

        self.request = request

        code = self.request.REQUEST.get('code')
        next_url = self.request.REQUEST.get('next_url')

        if not error_weixin_code(code):
            return HttpResponseBadRequest('Verify Failed')

        user_base = WeixinService.get_openid(
            code=code
        )
        if not user_base:
            return HttpResponseBadRequest('Verify Failed')

        openid = user_base.get('openid')
        access_token = user_base.get('access_token')

        # save session
        self.save_token_to_session(
            openid=openid,
            access_token=access_token
        )

        # get weixin user sns info
        readlly_weixin_user = WeixinService.get_weixin_user(
            openid=openid
        )

        redirect_next_url = self.NEXT_URL_META.get(next_url, REDIRECT_LOGIN_URL)
        redirect_next_url = redirect_next_url[:redirect_next_url.find('?from=weixin')]
        if readlly_weixin_user:
            pinbot_user = readlly_weixin_user.user
            if pinbot_user.is_active:
                return redirect('{0}?is_bind=1&weixin_auth=1'.format(redirect_next_url))

        return redirect(redirect_next_url)
def update_weixin():

    weixin_users = WeixinUser.objects.all()
    for weixin_user in weixin_users:
        openid = weixin_user.openid
        weixin_user_doc = WeixinService.get_user_info(openid=openid)
        weixin_user_doc.pop('openid')
        print weixin_user_doc
        WeixinUser.objects.filter(
            openid=openid
        ).update(
            **weixin_user_doc
        )
        print 'weixin user info: %s update success' % (openid)
Beispiel #11
0
    def send_tpl_msg(cls, openid, tpl_id, data, url, msg_type=1):

        ret = WeixinService.send_template_message(
            openid=openid,
            template_id=tpl_id,
            data=data,
            url=url
        )

        weixin_user = WeixinService.get_weixin_user(openid=openid)

        msg_log = MsgSendLog(
            weixin_user=weixin_user,
            msg_type=msg_type,
            title=data['keyword1']['value'],
            reco_num=data['keyword2']['value'],
            display_time=data['keyword3']['value'],
            url=url,
            errcode=ret.get('errcode'),
            errmsg=ret.get('errmsg')
        )
        msg_log.save()
        return ret
Beispiel #12
0
    def _get_promotion_link(self):
        promotion_token = self._get_promotion_token()
        login_url = self.request.build_absolute_uri(
            reverse('user-account-reg')
        )
        promotion_link = '%s?promotion_token=%s' % (
            login_url,
            promotion_token.token,
        )

        short_link_ret = WeixinService.get_short_url(promotion_link)
        if short_link_ret.get('errcode') == 0:
            promotion_link = short_link_ret.get('short_url', promotion_link)

        return promotion_link, promotion_token.token
    def send_redpack(self, gift):
        ret = {
            'status': 'ok',
            'msg': 'ok'
        }
        if not gift:
            ret['status'] = 'ok'
            ret['msg'] = '没有微信红包'
            logger.debug('no redpack')
            return ret

        if not gift.egg.code_name.startswith('hongbao_'):
            ret['status'] = 'ok'
            ret['msg'] = '没有微信红包'
            logger.debug('no redpack')
            return ret

        user = self.request.user
        if not WeixinService.is_bind(user=user):
            ret['status'] = 'unbind'
            ret['msg'] = '您还未绑定微信服务号'

        gift_amount = gift.egg.price

        send_ret = WeixinRedPackService.send_feed_redpack(
            user=user,
            act_name='彩蛋红包',
            total_amount=gift_amount
        )
        if not send_ret:
            ret['status'] = 'redpack_send_fail'
            ret['msg'] = '红包发放失败!'

        ret['msg'] = '红包已经发送至聘宝招聘版服务号!'
        ret['status'] = 'redpack_send_success'
        gift.claim_status = 2
        gift.claim_time = datetime.datetime.now()
        gift.save()

        logger.info(
            'redpack for user: {username}  send status: {ret}'.format(
                username=user.username,
                ret=ret
            )
        )

        return ret
Beispiel #14
0
    def _get_qr_code_link(self, token):
        register_link = settings.MOBILE_REGISTER_LINK
        company_name = self.request.user.userprofile.company_name
        name = self.request.user.userprofile.name
        username = '******'.format(company_name, name)

        qr_code_link = '{0}?username={1}&promotion_token={2}'.format(
            register_link,
            username,
            token
        )

        short_link_ret = WeixinService.get_short_url(qr_code_link)
        if short_link_ret.get('errcode') == 0:
            qr_code_link = short_link_ret.get('short_url', qr_code_link)

        return qr_code_link
    def send_redpack(self, gift):
        ret = {'status': 'ok', 'msg': 'ok'}
        if not gift:
            ret['status'] = 'ok'
            ret['msg'] = '没有微信红包'
            logger.debug('no redpack')
            return ret

        if not gift.egg.code_name.startswith('hongbao_'):
            ret['status'] = 'ok'
            ret['msg'] = '没有微信红包'
            logger.debug('no redpack')
            return ret

        user = self.request.user
        if not WeixinService.is_bind(user=user):
            ret['status'] = 'unbind'
            ret['msg'] = '您还未绑定微信服务号'

        gift_amount = gift.egg.price

        send_ret = WeixinRedPackService.send_feed_redpack(
            user=user, act_name='彩蛋红包', total_amount=gift_amount)
        if not send_ret:
            ret['status'] = 'redpack_send_fail'
            ret['msg'] = '红包发放失败!'

        ret['msg'] = '红包已经发送至聘宝招聘版服务号!'
        ret['status'] = 'redpack_send_success'
        gift.claim_status = 2
        gift.claim_time = datetime.datetime.now()
        gift.save()

        logger.info('redpack for user: {username}  send status: {ret}'.format(
            username=user.username, ret=ret))

        return ret
def create_menu():
    return WeixinService.create_menu()
Beispiel #17
0
def get_access_token():
    return WeixinService.get_base_access_token()
Beispiel #18
0
def create_menu():
    return WeixinService.create_menu()
 def test_get_template_msg_id(self):
     self.assertIsNotNone(WeixinService.get_template_msg_id())
 def test_get_recommand_url(self):
     self.assertIsNotNone(WeixinService.get_recommand_url())
 def test_get_feed_notify_msg_tpl(self):
     self.assertIsNotNone(WeixinService.get_feed_notify_msg_tpl())
 def test_get_access_token(self):
     self.assertIsNotNone(WeixinService.get_base_access_token())
 def test_create_menu(self):
     self.assertTrue(WeixinService.create_menu())
def get_access_token():
    return WeixinService.get_base_access_token()