Example #1
0
    def send(self):
        """
        发红包
        :return:
        """

        time.sleep(3)

        if self.wbOUser and self.wbOTask:
            pass
        else:
            return


        wbHbClass = WeiboHb(sessionRes=json.loads(self.wbOUser.session))
        wbSLObj = WeiboSendList.objects.filter(status='1',umark='1').order_by('setid')
        if not wbSLObj.exists():
            return

        for item in wbSLObj:
            try:
                with transaction.atomic():
                    wbHbClass.send(item)
                    item.umark='0'
                    item.save()
            except Exception as e:
                logger.error(str(e))
Example #2
0
    def requestHandlerForJson(self):
        """
        "request":{
            "url":"http://localhost:8000",
            "method" : "POST",
            "type":"json",
        },
        """
        logger.info("向上游请求的值:{}".format(json.dumps(self.request_data)))

        try:
            if self.rules.get("request").get("type") == 'json':
                result = request(
                    url=self.rules.get("request").get("url"),
                    method=self.rules.get("request").get("method"),
                    json=self.request_data,
                    headers={"Content-Type": 'application/json'},
                    verify=False,
                    timeout=5)
            elif self.rules.get("request").get("type") == 'body':
                result = request(
                    url=self.rules.get("request").get("url"),
                    method=self.rules.get("request").get("method"),
                    data=self.request_data,
                    verify=False,
                    timeout=5)
            elif self.rules.get("request").get("type") == 'params':
                if self.passid == 76:
                    url = self.rules.get("request").get(
                        "url") + "?params={}".format(
                            json.dumps(self.request_data))
                    # data['params'] = self.request_data
                    print(url)
                    result = request(
                        url=url,
                        method=self.rules.get("request").get("method"),
                        verify=False,
                        timeout=5)
                else:
                    result = request(
                        url=self.rules.get("request").get("url"),
                        method=self.rules.get("request").get("method"),
                        params=self.request_data,
                        verify=False,
                        timeout=5)
            else:
                raise PubErrorCustom("请求参数错误!")
        except Exception as e:
            logger.error(str(e))
            raise PubErrorCustom(
                "上游系统很慢,超时了,麻烦别找我,发给上游,谢谢!!!!!!!(慢到什么程度 5秒没有反应,5秒是什么概念,基本上系统已经瘫痪了!!!!!)"
            )

        try:
            self.response = json.loads(result.content.decode('utf-8'))
            logger.info("上游返回值:{}".format(result.content.decode('utf-8')))
        except Exception as e:
            raise PubErrorCustom("返回JSON错误!{}".format(result.text))
Example #3
0
    def handler_before_check(self):
        """
        业务处理之前校验处理
        :return:
        """
        if not self.qr_class.qrcode_valid(self.order_obj.createtime):
            logger.error("二维码已过期!")
            raise PubErrorCustom("二维码已过期!")

        if float(self.order_obj.amount) - self.amount != 0.0:
            logger.error("金额不符!{},{}".format(float(self.order_obj.amount), self.amount))
            raise PubErrorCustom("金额不符!{},{}".format(float(self.order_obj.amount), self.amount))
Example #4
0
 def init_order_obj(self,ordercode=None):
     """
     初始化订单结构
     :return:
     """
     if ordercode:
         try:
             self.order_obj = Order.objects.select_for_update().get(ordercode=ordercode)
         except Order.DoesNotExist:
             raise PubErrorCustom("无此订单号")
     else:
         self.order_obj = Order.objects.select_for_update().filter(status=1, qr_id=self.qrcode_obj.id,amount=str(self.amount)).order_by("-createtime")
         if not self.order_obj.exists():
             logger.error("无对应订单, qr_id:{} amount:{}".format(self.qrcode_obj.id,self.amount))
             raise PubErrorCustom("无对应订单")
         self.order_obj = self.order_obj[0]
Example #5
0
 def init_qrcode_obj(self,id=None):
     """
     初始化二维码结构
     :return:
     """
     if id:
         try:
             self.qrcode_obj = Qrcode.objects.select_for_update().get(id=id)
         except Qrcode.DoesNotExist:
             raise PubErrorCustom("无此二维码")
     else:
         self.qrcode_obj = Qrcode.objects.select_for_update().filter(name=self.name,status='0',type=self.type)
         if not self.qrcode_obj.exists():
             logger.error("无对应二维码, name{},type{}".format(self.name,self.type))
             raise PubErrorCustom("无对应二维码")
         self.qrcode_obj = self.qrcode_obj[0]
 def wrapper(outside_self, request, *args, **kwargs):
     try:
         self.start = time.time()
         self.__request_validate(request)
         response = self.__run(func, outside_self, request, *args,
                               **kwargs)
         self.end = time.time()
         return response
     except PubErrorCustom as e:
         logger.error('[%s : %s  ] : [%s]' %
                      (outside_self.__class__.__name__,
                       getattr(func, '__name__'), e.msg))
         return HttpResponse(success=False, msg=e.msg, data=None)
     except InnerErrorCustom as e:
         logger.error('[%s : %s  ] : [%s]' %
                      (outside_self.__class__.__name__,
                       getattr(func, '__name__'), e.msg))
         return HttpResponse(success=False,
                             msg=e.msg,
                             rescode=e.code,
                             data=None)
     except Exception as e:
         logger.error('[%s : %s  ] : [%s]' %
                      (outside_self.__class__.__name__,
                       getattr(func, '__name__'), str(e)))
         return HttpResponse(success=False, msg=str(e), data=None)
Example #7
0
 def wrapper(outside_self, request, *args, **kwargs):
     try:
         # self.start = time.time()
         self.__request_validate(request)
         response = self.__run(func, outside_self, request, *args,
                               **kwargs)
         # self.end=time.time()
         return response
     except PubErrorCustom as e:
         print("PubErrorCustom")
         print(e.msg)
         logger.error('[%s : %s  ] : [%s]' %
                      (outside_self.__class__.__name__,
                       getattr(func, '__name__'), e.msg))
         return render(request, 'error.html', {'error': e.msg})
     except InnerErrorCustom as e:
         print(1)
         logger.error('[%s : %s  ] : [%s]' %
                      (outside_self.__class__.__name__,
                       getattr(func, '__name__'), e.msg))
         return render(request, 'error.html', {'error': e.msg})
     except Exception as e:
         logger.error('[%s : %s  ] : [%s]' %
                      (outside_self.__class__.__name__,
                       getattr(func, '__name__'), str(e)))
         return render(request, 'error.html', {'error': str(e)})
Example #8
0
    def rob(self):

        time.sleep(5)

        if self.wbOUser and self.wbOTask:
            pass
        else:
            return

        WbSLObj = WeiboSendList.objects.filter(status=1,taskid=self.wbOTask.taskid)

        if WbSLObj.exists():
            for item in WbSLObj:
                uidsObj=json.loads(item.uids)
                print(uidsObj)
                print(item.groupid)
                for item_member in WeiboGroupMember.objects.filter(group_id=item.groupid):

                    if len(item.uids) and item_member.son_uid in uidsObj['uids']:
                        continue

                    time.sleep(20)

                    wbUserObj = WeiboUser.objects.get(uid=item_member.son_uid)
                    try:
                        print(item_member.son_uid)
                        rFlag = WeiboHbGet(sessionRes=json.loads(wbUserObj.session)).rob(url=item.url)
                        if rFlag:
                            uidsObj['uids'].append(item_member.son_uid)
                            item.getcount +=1
                    except Exception as e:
                        logger.error("抢红包失败",str(e),item_member.son_uid,item.url)

                if item.getcount>=item.sendcount:
                    item.status = '0'

                print(uidsObj)
                item.uids = json.dumps(uidsObj)
                item.save()
Example #9
0
    def gethb(self):
        time.sleep(2)

        if self.wbOUser and self.wbOTask:
            pass
        else:
            print("无可用用户或可用任务")
            return

        wbHbClass = WeiboHb(sessionRes=json.loads(self.wbOUser.session))
        wbSLObj = WeiboSendList.objects.filter().order_by('-setid')
        if not wbSLObj.exists():
            max_set_id = 0
        else:
            max_set_id = wbSLObj[0].setid

        try:
            sendlist = wbHbClass.getlistAll(year="2019", type="2", max_set_id=max_set_id)
            with transaction.atomic():
                for item in sendlist:
                    WeiboSendList.objects.create(**{
                        "groupid":self.wbOTask.groupid,
                        "setid":item['set_id'],
                        "uid":self.wbOUser.uid,
                        "uids":json.dumps({"uids":[]}),
                        "swithurl":item['url'],
                        "taskid":self.wbOTask.taskid,
                        "userid":self.wbOTask.userid,
                        "amount":item['amount'],
                        "getcount":item['getcount'],
                        "sendcount":item['sendcount'],
                        "status": '0' if item['getcount'] == item['sendcount'] else '1'
                    })
        except Exception as e:
            logger.error(str(e))
            self.gethb()
Example #10
0
    def __init__(self,isQueryTask=True):

        self.ut = UtilTime()

        self.wbOUser = None
        self.wbOTask = None

        if isQueryTask:
            wbOTasks = WeiboTask.objects.filter(umark='0',status='1',date=self.ut.arrow_to_string(format_v="YYYY-MM-DD")).order_by('sort')
            if not wbOTasks.exists():
                logger.error("无任务可执行!")
                return

            self.wbOTask = wbOTasks[0]

            try:
                self.wbOUser = WeiboUser.objects.get(uid=self.wbOTask.uid,status='0')
            except WeiboUser.DoesNotExist:
                logger.error("无可用组长!")
                return

            self.robnumber = self.wbOTask.robnumber
            self.minamount = self.wbOTask.minamount
            self.maxamount = self.wbOTask.maxamount
Example #11
0
    def callback_request_to_server(self):
        """
        进行回调操作
        :return:
        """

        try:
            user = Users.objects.get(userid=self.order_obj.userid)
        except Users.DoesNotExist:
            logger.error("订单用户不存在! 用户:{}".format(self.order_obj.userid))
            raise PubErrorCustom("订单用户不存在!")

        if self.order_obj.lock == '0':

            data_request = {
                "rescode": "10000",
                "msg": "回调成功!",
                "data": {
                    "ordercode": self.order_obj.ordercode,
                    "status": '0',
                    "confirm_amount": float(self.amount),
                    "pay_time": time.mktime(timezone.now().timetuple()),
                    "keep_info": demjson.decode(self.order_obj.keep_info)
                },
                "ordercode":str(self.order_obj.down_ordercode)
            }

            headers={
                "token" : str(self.order_obj.userid),
                "ordercode": str(self.order_obj.down_ordercode)
            }

            #天宝报文不加密
            if user.userid != 4:
                data_request['data'] = encrypt(json.dumps(data_request['data'], cls=DjangoJSONEncoder),
                                               user.google_token).decode('utf-8')

            result = send_request(url=urllib.parse.unquote(self.order_obj.notifyurl), method='POST', data=data_request,headers=headers)
            if not result[0]:
                logger.error("请求对方服务器错误{}".format(str(result)))
                self.order_obj.down_status = '2'
            else:
                self.order_obj.down_status = '0'
        else:

            request_data = {
                "businessid" : str(user.userid),
                "ordercode" : str(self.order_obj.ordercode),
                "down_ordercode" : str(self.order_obj.down_ordercode),
                # "amount1": str(self.order_obj.amount),
                "amount" : str(self.amount),
                "pay_time" : str(UtilTime().timestamp),
                "status" : "00"
            }
            md5params = "{}{}{}{}{}{}{}".format(
                user.google_token,
                request_data['businessid'],
                request_data['ordercode'],
                request_data['down_ordercode'],
                request_data['amount'],
                request_data['pay_time'],
                user.google_token)
            md5params = md5params.encode("utf-8")
            request_data['sign'] = hashlib.md5(md5params).hexdigest()

            logger.info("验签回调参数:{}{}".format(self.order_obj.notifyurl,request_data))

            try:
                result = request('POST', url=urllib.parse.unquote(self.order_obj.notifyurl), data=request_data , json=request_data, verify=False)
                logger.info("返回值:{}".format(result.text))
                if result.text.strip() != 'SUCCESS':
                    logger.error("请求对方服务器错误{}".format(str(result.text)))
                    self.order_obj.down_status = '2'
                else:
                    self.order_obj.down_status = '0'

            except Exception as e:
                logger.info("下游错误:{}".format(str(e)))
                self.order_obj.down_status = '2'
Example #12
0
import time
Example #13
0
    def pclogin(self,datas):

        rdatas=[]
        for item in datas:
            try:
                wbUserObj = WeiboUser.objects.get(username=item['username'])
            except WeiboUser.DoesNotExist:
                rdatas.append({
                    "username":wbUserObj.username,
                    "code":"10001",
                    "msg":"账号不存在系统登录失败!"
                })
                continue
            wbLFPClass = WeiboLoginForPc(username=wbUserObj.username,password=wbUserObj.password)
            if 'params' in item and item['params']['showpin'] == '1':
                wbLFPClass.login_params = item['params']
                wbLFPClass.login_params['vercode'] = item['vercode']
                try:
                    if wbUserObj.session:
                        session = json.loads(wbUserObj.session)
                    else:
                        session = {}
                        session['cookie'] = {}
                    res = wbLFPClass.login()
                    print(res)
                    session['uid'] = res['uid']
                    session['cookie']['pccookie'] = res['cookie']['pccookie']

                    wbUserObj.session = json.dumps(session)
                    wbUserObj.uid = session['uid']
                    wbUserObj.logintime = UtilTime().timestamp
                    wbUserObj.save()
                except Exception as e:
                    logger.error(str(e))
                    rdatas.append({
                        "username": wbUserObj.username,
                        "code": "10002",
                        "msg": "密码或验证码错误,请重新输入!",
                        "url": wbLFPClass.getvercodeUrl(),
                        "params" : wbLFPClass.login_params
                    })
                    continue
            else:
                wbLFPClass.preLogin()
                if wbLFPClass.login_params['showpin'] == '1':
                    rdatas.append({
                        "username": wbUserObj.username,
                        "code": "10002",
                        "msg": "需要获取验证码登录!",
                        "url": wbLFPClass.getvercodeUrl(),
                        "params" : wbLFPClass.login_params
                    })
                    continue
                else:
                    try:
                        if wbUserObj.session:
                            session = json.loads(wbUserObj.session)
                        else:
                            session = {}
                            session['cookie'] = {}
                        res = wbLFPClass.login()
                        print(res)
                        session['uid'] = res['uid']
                        session['cookie']['pccookie'] = res['cookie']['pccookie']

                        wbUserObj.session = json.dumps(session)
                        wbUserObj.uid = session['uid']
                        wbUserObj.logintime = UtilTime().timestamp
                        wbUserObj.save()
                    except Exception as e:
                        logger.error(str(e))
                        rdatas.append({
                            "username":wbUserObj.username,
                            "code": "10001",
                            "msg":"账号或密码错误!"
                        })
                        continue
        print(rdatas)
        return rdatas