def send_message(uids: list, content: str): """发送消息 :param uids: 待接收消息用户id :param uid 用户的key :param content 内容 """ WxPusher.send_message(content, uids=uids, token=token)
def show_result(stocks, action, args): """Show results.""" # Return for empty result when set to ignore empty. if args.ignore_empty and stocks.index.empty: return # Output a file when output is set. if args.output: utils.export_ebk(stocks.index, args.output) # Send notification if token and (uids or topic_ids) is set. if args.token and (args.uids or args.topic_ids): # Format title. title = args.title if not title: if stocks.index.empty: title = f'{args.period}级别无可能{action}点' else: title = f'{args.period}级别可能{action}点' content = combine_content(title, stocks) WxPusher.send_message(content, token=args.token, uids=args.uids, topic_ids=args.topic_ids)
def test_create_qrcode(self): """Positive case for creating qrcode.""" res = WxPusher.create_qrcode( self.test_create_qrcode.__doc__ ) self.assertIsInstance(res, dict) self.assertIn('code', res) self.assertEqual(1000, res['code'])
def test_query_user(self): """Positive case for querying user.""" res = WxPusher.query_user( 1, random.randint(1, 99), ) self.assertIsInstance(res, dict) self.assertIn('code', res) self.assertEqual(1000, res['code'])
def push_wechat(token, uids, push_content, url=None, content_type=3): response = WxPusher.send_message( content=push_content, token=token, content_type=content_type, topic_ids=[], uids=uids, url=url, ) return response
def test_send_message(self): """Positive case for sending message.""" res = WxPusher.send_message( self.test_send_message.__doc__, config.UIDS, url='http://example.com/' ) self.assertIsInstance(res, dict) self.assertIn('code', res) self.assertEqual(1000, res['code'])
def get(self, request): extra = request.user.username # {'code': 1000, 'msg': '处理成功', # 'data': # {'expires': 1610079780214, # 'code': 'VTofGQDeSo3ezYYfzs1akLQ0vCTKqvM5O35z9iey2TdknDiwQRhdaUhEa98u9vEW', # 'shortUrl': 'https://mmbizurl.cn/s/Ognm4CzsM', # 'extra': 'hello', # 'url': # 'https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=gQE38DwAAAAAAAAAAS5odHRwOi8vd2VpeGluLnFxLmNvbS9xLzAyNFpSSFZNSVFjWWoxWUF1VE52Y1QAAgQc1-dfAwQIBwAA'}, # 'success': True} payload = WxPusher.create_qrcode(extra=extra, valid_time=600) return JsonResponse(payload)
def post(self, request): """ Example POST payload: { "action":"app_subscribe",//动作,app_subscribe 表示用户关注应用回调,后期可能会添加其他动作,请做好兼容。 "data":{ "appId":123,//创建的应用ID "appKey":"AK_xxxxxx", //关注应用的appKey,请不要再使用,将来可能会被删除 "appName":"应用名字", "source":"scan", //用户关注渠道,scan表示扫码关注,link表示链接关注,command表示通过消息关注应用,后期可能还会添加其他渠道。 "userName":"******", "userHeadImg":"http://xxxxx/132",//最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像),用户没有头像时该项为空 "time":1569416451573, //消息发生时间 "uid":"UID_xxxxxx", //用户uid "extra":"xxx" //用户扫描带参数的二维码,二维码携带的参数。扫描默认二维码为空 } } """ data_payload = json.loads(request.body) data_action = data_payload['action'] data = data_payload['data'] if data['appId'] != CONFIG.WXPUSHER_APPID: raise RuntimeError("回调APPID校验错误!") if data_action == 'app_subscribe': uid, user_param = data['uid'], data['extra'] user_profile = UserProfile.objects.get( stu_id=user_param) # raise DoesNotExist if with no luck user_profile.wx_uid = uid user_profile.valid = True user_profile.save() WxPusher.send_message("SCU健康报绑定成功,请继续在平台上进行相关操作,并阅读使用说明。", uids=[uid]) else: raise NotImplementedError
def create_qrcode(username): """创建二维码 :param extra 额外参数,可以用手机号 """ return WxPusher.create_qrcode(extra=username, token=token)