Ejemplo n.º 1
0
 def _initSetting(self):
     #初始根目录信息
     strDir, strName = myIO.getPath_ByFile(__file__)
     Dir_Base = os.path.abspath(os.path.join(strDir, ".."))
     Dir_DataDB = Dir_Base + "/Data/DB_Trade/"
     gol._Set_Setting('manageBills_Stock',
                      myManager_Bill.myManager_Bill(Dir_DataDB))  #实例 交易管理器
Ejemplo n.º 2
0
def Debug_byTag(tag, msg = "", bRecord = False, bTitle = True):
    nTime = time.time()
    ms_Deepth = gol._Get_Setting('Debug_Depth') 
    if(bRecord):        #记录信息
        ms_Msgs[tag] = nTime
        Debug(tag, "", msg, "\n              ", "--Start at", datetime.datetime.fromtimestamp(nTime).strftime('%H:%M:%S.%f')) 
        ms_Deepth += 1
        gol._Set_Setting('Debug_Depth', ms_Deepth) 
         
    elif(ms_Msgs.__contains__(tag)):
        nInterval = nTime - ms_Msgs[tag]
        ms_Deepth -= 1
        gol._Set_Setting('Debug_Depth', ms_Deepth) 
        if(bTitle):
            Debug(tag, "", msg, "\n              ", "--End at", datetime.datetime.fromtimestamp(nTime).strftime('%H:%M:%S.%f'), "\n      ", "--耗时:", round(nInterval, 3), "秒")  
        return nInterval
Ejemplo n.º 3
0
    def __init__(self, useID):
        self.usrID = useID  #用户名
        self.usrTime = ""  #数据日期(月)
        self.remark = ""  #备注

        #初始数据路径
        strDir, strName = myIO.getPath_ByFile(__file__)
        self.Dir_Base = os.path.abspath(os.path.join(strDir, "../../.."))
        self.Dir_DataDB = self.Dir_Base + "/Data/DB_Trade/"

        #初始全局账单管理器
        from myGlobal import gol
        gol._Init()  #先必须在主模块初始化(只在Main模块需要一次即可)
        gol._Set_Setting('manageBills',
                         myManager_Bill.myManager_Bill(
                             self.Dir_DataDB))  #实例 账单管理器
        self.billManager = gol._Get_Setting('manageBills', None)
Ejemplo n.º 4
0
 def Init_UserInfo(self, usrName, usrNameNick, usrID):
     if (usrName == "zxcRobot" and usrID == "zxcRobotID"
             and usrNameNick == "zxc机器人"):
         strDir, strName = myIO.getPath_ByFile(__file__)
         strDir_Base = os.path.abspath(os.path.join(strDir, "../../.."))
         content = myIO.getContent(
             strDir_Base + '\zxcPy.Weixin\Data\zxcWeixin.cache', True,
             False, True)
         if (content != ""):
             dictUser = myData_Trans.Tran_ToDict(content)
             self.usrName = usrName
             self.usrNameNick = dictUser.get("NickName", "zxc机器人")  #归属用户昵称
             self.usrID = dictUser.get("UserName", "zxcRobotID")  #归属用户昵称
     gol._Set_Setting('usrName', self.usrName)
     gol._Set_Setting('usrNameNick', self.usrNameNick)
     gol._Set_Setting('usrID', self.usrID)
     self.Init()
Ejemplo n.º 5
0
def _initMsg_Swap(useMQ=False):
    if (gol._Get_Setting('dirMsgsSwaps', None) == None):
        gol._Set_Setting(
            'dirMsgsSwaps',
            "D:/myCode/zxcProj/src/Zxc.Python/zxcPy.Weixin/Data/Swaps"
        )  #实例 消息缓存

    gol._Set_Setting('bufferMsgs', myMsgs("zxc", "zxc", "", ""))  #实例 消息缓存
    gol._Set_Setting('manageMsgs', myManager_Msg())  #实例 消息管理器并初始消息api及消息队列
    if (useMQ):
        gol._Get_Setting('manageMsgs',
                         None)._Init_MQ(plat=myMsgPlat.robot,
                                        msgMQ_Sender=myMQ_Rabbit.myMQ_Rabbit(
                                            True, 'zxcMQ_robot'),
                                        msgUrl_API="")  #不使用api回调
        gol._Get_Setting('manageMsgs',
                         None)._Init_MQ(plat=myMsgPlat.wx,
                                        msgMQ_Sender=myMQ_Rabbit.myMQ_Rabbit(
                                            True, 'zxcMQ_wx'),
                                        msgUrl_API="",
                                        usrHelper='filehelper')  #不使用api回调
        gol._Get_Setting('manageMsgs',
                         None)._Init_MQ(plat=myMsgPlat.usrWin,
                                        msgMQ_Sender=myMQ_Rabbit.myMQ_Rabbit(
                                            True, 'zxcMQ_usrWin'),
                                        msgUrl_API="",
                                        isAuto_ack=True)  #不使用api回调
    else:
        dirMsgsSwaps = gol._Get_Setting('dirMsgsSwaps')
        pDataSwap_In = myData_Swap.myData_Swap_FileIO("msgWx",
                                                      dirMsgsSwaps +
                                                      "/SwapMsg",
                                                      stepSwaps=1,
                                                      delayedTime=0,
                                                      useAck=True,
                                                      nameSwap="zxcSwap_wx")
        gol._Get_Setting('manageMsgs')._Init_Swap(plat=myMsgPlat.wx,
                                                  msgSwap_Sender=pDataSwap_In,
                                                  isAuto_ack=True,
                                                  msgUrl_API="")
        pass
Ejemplo n.º 6
0
    @author: zhang bin
    @email:  [email protected]

    Rest Server --服务启动,
"""    
import mySystem

mySystem.Append_Us("", False)    
import myWeb, myDataDB_Company
from myGlobal import gol 
gol._Init()             #先必须在主模块初始化(只在Main模块需要一次即可)


#提取端口号(环境变量)
HOST, PORT, dirBase = myWeb.get_InfoServer(__file__, 'SERVER_HOST', 'SERVER_PORT', 5555)  
gol._Set_Setting("serverUrl", "http://" + HOST + ":" + str(PORT))
gol._Set_Setting("serverBaseDir", dirBase)

#初始Web程序
appWeb = myWeb.myWeb("0.0.0.0", PORT, webFolder = dirBase + "/" )
appWeb.add_Web()
appWeb.add_API(myWeb.myAPI, '/test') 

#载入web页面类
import zxcPy_Form.infoCompany


#公司信息数据初始
dbCompany = myDataDB_Company.myDataDB_Company("dbCompany", dirBase + "/Data/DB_Company/")
gol._Set_Value("dbCompany", dbCompany)
Ejemplo n.º 7
0
# 自定义简易库表操作-股票收益排名(按月更新)
class myDataDB_StockReturns_Rank(myData_DB.myData_Table):
    def __init__(self, nameDB="zxcDB_StockReturns_Rank", dir=""):
        #初始根目录信息
        if (dir == ""):
            strDir, strName = myIO.getPath_ByFile(__file__)
            self.Dir_Base = os.path.abspath(os.path.join(strDir, "../../.."))
            self.Dir_DataDB = self.Dir_Base + "/Data/DB_Data/"
            myIO.mkdir(self.Dir_DataDB, False)
        super().__init__(nameDB, self.Dir_DataDB, False)


#初始全局消息管理器
from myGlobal import gol
gol._Init()  #先必须在主模块初始化(只在Main模块需要一次即可)
gol._Set_Setting('zxcdbStockReturns', myDataDB_StockReturns())  #实例 股票收益库对象
gol._Get_Setting('zxcdbStockReturns').Add_Fields(
    ['用户名', '姓名', '收益', '日期'], ['string', 'string', 'float', 'datetime'], [])

#主启动程序
if __name__ == "__main__":
    #测试库表操作
    pDB = gol._Get_Setting('zxcdbStockReturns')

    # 添加行数据
    print(pDB.Add_Row({'用户名': '茶叶一主号', '收益': 0.1576, '日期': '2019-08-27'}))
    print(pDB.Add_Row({'用户名': '墨紫', '收益': '0.1476', '日期': '2019-08-26'}))
    print(pDB.Add_Row({'用户名': '墨紫', '收益': '0.1976', '日期': '2019-08-27'}))
    print(pDB.Add_Row({'用户名': '墨紫', '收益': '0.2976', '日期': '2019-08-27'}, True))

    # 自定义筛选
Ejemplo n.º 8
0
#引用根目录类文件夹--必须,否则非本地目录起动时无法找到自定义类
mySystem.Append_Us("/zxcPy.APIs", False, __file__)
mySystem.Append_Us("/zxcPy.Webs", False, __file__)
mySystem.Append_Us("", False)
import myWeb
from myGlobal import gol

#主程序启动
if __name__ == '__main__':
    gol._Init()  #先必须在主模块初始化(只在Main模块需要一次即可)
    #单例运行检测
    if (gol._Run_Lock(__file__) == False):
        exit(0)
    #gol._Set_Setting("CanPrint", False)
    gol._Set_Setting("serverUrl", 'http://106.13.206.223:8668/')

    import myRobot_Updata  #更新说明
    import myAPI_Robot, myWeb_Order, myWeb_Stock  #会重启导致多次输出信息,调整为不输出打印信息
    pWeb = myWeb.myWeb("0.0.0.0",
                       8668,
                       webFolder=myRobot_Updata.myUpdata.Dir_Base +
                       "/zxcPy.Webs/")
    pWeb.add_API(myWeb.myAPI, '/test')

    # 添加Robot接口并启动API、Webs
    myAPI_Robot.add_APIs(pWeb)
    myWeb_Order.add_Webs(pWeb)
    myWeb_Stock.add_Webs(pWeb)
    pWeb.run()
Ejemplo n.º 9
0
    #查询、统计
    def _Find(self, usrID, bAuto_Creat=False):
        bills = self.usrBills.get(usrID, None)
        if (bills == None and bAuto_Creat == True):
            bills = myObj_Bills(usrID, self.Dir_DataDB)
        return bills

    #用户账单
    def __getitem__(self, usrID):
        return self._Find(usrID, True)


#初始全局消息管理器
from myGlobal import gol
gol._Init()  #先必须在主模块初始化(只在Main模块需要一次即可)
gol._Set_Setting('manageBills', myManager_Bill(""))  #实例 账单管理器

#主启动程序
if __name__ == "__main__":
    #测试红包记录
    pManager = gol._Get_Setting('manageBills', None)
    pBills = pManager['Test']
    #pManager['朱美娜'].Save_DB()

    pBills.Add("", "门口超市", 10.2, "蔬菜", "", "", "", "")
    pBills.Add("", "门口超市", 20.4, "菜", "", "", "", "2018-8-20")
    pBills.Add("", "西边菜市场", 10.4, "菜", "", "", "", "2018-8-22")
    pBills.Add("", "西边菜市场", 10.4, "菜", "", "", "", "2018-8-23")
    pBills.Add("", "西边菜市场", 10.4, "菜", "", "", "", "2018-8-16")
    pBills.Add("", "西边菜市场", 16.5, "猪肉", "", "", "", "2018-8-29")
Ejemplo n.º 10
0
            noteMsg['payTransferid'] = myData.Cut_str(msg['Content'],"<transferid><![CDATA[","]]></transferid>")[2]
            noteMsg['payTransfertime'] = myData.Cut_str(msg['Content'],"<begintransfertime><![CDATA[","]]></begintransfertime>")[2]
            noteMsg['payUser'] = myData.iif(noteMsg['paySubType'] == "1", msg['FromUserName'], msg['ToUserName'])
            if(noteMsg['payUser'] == self.usrID):
                noteMsg['payUser'] = "******"         # 主动转账
        return noteMsg
    
    #消息超时校检
    def Check_TimeOut(self, msg, nTimeOut = 600): 
        return self.usrMMsg.Check_TimeOut(msg, nTimeOut)


#主启动程序
if __name__ == "__main__":
    gol._Init()             #先必须在主模块初始化(只在Main模块需要一次即可)
    gol._Set_Setting("CanPrint_Debug", False)

    #消息处理
    pWxReply = myWx_Reply("zxcc")
    pWxReply._Init("zxc", "墨紫")

    #权限初始
    pWxReply.Done('zxc_ID','zxc_0',"墨紫",'@@Repeater')
    pWxReply.Done('zxc_ID','zxc_0',"墨紫",'@@Repeater')
    print()

     

 
 
Ejemplo n.º 11
0
            strDir, strName = myIO.getPath_ByFile(__file__)
            strDir_Base = os.path.abspath(os.path.join(strDir, "../../.."))
            content = myIO.getContent(
                strDir_Base + '\zxcPy.Weixin\Data\zxcWeixin.cache', True,
                False, True)
            if (content != ""):
                dictUser = myData_Trans.Tran_ToDict(content)
                self.usrName = usrName
                self.usrNameNick = dictUser.get("NickName", "zxc机器人")  #归属用户昵称
                self.usrID = dictUser.get("UserName", "zxcRobotID")  #归属用户昵称
        gol._Set_Setting('usrName', self.usrName)
        gol._Set_Setting('usrNameNick', self.usrNameNick)
        gol._Set_Setting('usrID', self.usrID)
        self.Init()


#定义全局方法集并缓存
gol._Init()  #先必须在主模块初始化(只在Main模块需要一次即可)
gol._Set_Value('rootRobot', myRoot())

#主启动程序
if __name__ == "__main__":
    pRoot = gol._Get_Value('rootRobot', None)
    print(pRoot.usrName)

    gol._Set_Setting('usrName', "zxcRobot2")
    gol._Set_Setting('usrNameNick', "zxc机器人2")
    gol._Set_Setting('usrID', "zxcRobotID2")
    pRoot.Init()
    print(pRoot.usrName)
Ejemplo n.º 12
0
    #消息超时校检
    def Check_TimeOut(self, msg, nTimeOut = 600, nTimeNow = -1):  
        #时间校检, 十分钟内缓存数据有效(过早时间数据忽略)
        msgTime = msg.get('time', -1)
        if(nTimeNow < 0): nTimeNow = myData_Trans.Tran_ToTime_int()
        if(abs(msgTime - nTimeNow) >= 600): 
            myDebug.Warnning("已超时::", nTimeNow, ",", msgTime)
            return True
        return False
    
              
#初始全局消息管理器
from myGlobal import gol 
gol._Init()     #先必须在主模块初始化(只在Main模块需要一次即可)
gol._Set_Setting('bufferMsgs', myMsgs("zxc", "zxc", "", ""))    #实例 消息缓存
gol._Set_Setting('manageMsgs', myManager_Msg())                 #实例 消息管理器并初始消息api及消息队列 
gol._Get_Setting('manageMsgs', None)._Init(plat = myMsgPlat.robot, msgMQ_Sender = myMQ_Rabbit.myMQ_Rabbit(True, 'zxcMQ_robot'), msgUrl_API = "")    #不使用api回调
gol._Get_Setting('manageMsgs', None)._Init(plat = myMsgPlat.wx, msgMQ_Sender = myMQ_Rabbit.myMQ_Rabbit(True, 'zxcMQ_wx'), msgUrl_API = "", usrHelper = 'filehelper')    #不使用api回调


if __name__ == '__main__':
   pMMsg = gol._Get_Setting('manageMsgs')
   pMMsg.Init_LogDir("D:/myGit/zxcProj/src/Zxc.Python/zxcPy.Robot/Log/Msgs/")

   #组装消息 
   msg = pMMsg.OnCreatMsg()
   msg["usrName"] = "茶叶一主号"
   msg["usrID"] = "zxcID"
   msg["msg"] = "测试消息py"
   msg["msgID"] = "msgID-***"
Ejemplo n.º 13
0
    @email:  [email protected]

    Python的数据交换接口实现
"""
import sys, os, ast, re, mySystem

#引用根目录类文件夹--必须,否则非本地目录起动时无法找到自定义类
mySystem.Append_Us("", False)
import myWeb, myIO
from myGlobal import gol
gol._Init()  #先必须在主模块初始化(只在Main模块需要一次即可)
gol._Set_Value("msgSet_usrMQ", False)

strDir, strName = myIO.getPath_ByFile(__file__)
dirBase = os.path.abspath(os.path.join(strDir, ".."))
gol._Set_Setting('dirMsgsSwaps', dirBase + "/Data/Swaps")  #实例 消息缓存

#初始数据教会对象
import myData_Swap
pDataSwap_In = myData_Swap.myData_Swap_FileIO("msgWx",
                                              dirBase + "/Data/Swaps/SwapMsg",
                                              isSender=True,
                                              stepSwaps=1,
                                              delayedTime=0,
                                              useAck=True,
                                              nameSwap="zxcSwap_wx")
pDataSwap_Out = myData_Swap.myData_Swap_FileIO(
    "msgWx", dirBase + "/Data/Swaps/SwapMsg_Out")
gol._Set_Value('dataSwap_msgWx', pDataSwap_In, True)
gol._Set_Value('dataSwap_msgWx_out', pDataSwap_Out, True)
Ejemplo n.º 14
0
                time.sleep(nSleep)
                pass

    # 变动信息装饰函数
    def changeDataSwap(self):
        # 定义一个嵌套函数
        def _change(fn):
            self.funChange = fn

        return _change


#主启动程序
if __name__ == "__main__":
    gol._Init()  #先必须在主模块初始化(只在Main模块需要一次即可)
    gol._Set_Setting("CanPrint_Debug", True)

    # 装饰函数,文件变动触发
    pDataSwap = myData_Swap_FileIO(
        "Quote",
        "D:/myCode/zxcProj/src/Zxc.Python/zxcPy.Robot.Spider/Data/Swaps")

    @pDataSwap.changeDataSwap()
    def Reply(lstData):
        for x in lstData:
            print(lstData)
            pDataSwap.ackDataSwap(x)
            pass

    #文件交换处理
    pDataSwap.SwapData_In(1)
Ejemplo n.º 15
0
        pUser = self._Find(usrID, usrName, usrName_Nick, "", "", False)
        if (pUser == None): return False
        self.usrList.pop(pUser.usrInd)
        self.usrList_Name.pop(pUser.usrName)
        self.usrList_Name_Nick.pop(pUser.usrName_Nick)
        self.usrList_usrID.pop(pUser.usrID)
        self.usrList_usrID_sys.pop(pUser.usrID_sys)
        return True

    # 用户关联关系校正
    def Check_RelationID_sys(self, pUser):
        return True


#初始全局用户管理
gol._Set_Setting('sysUsers', myRoot_Usrs("@@zxcPy", "zxcPy",
                                         "zxcPy_sys"))  #实例 用户对象集

#主启动程序
if __name__ == "__main__":
    pUsers = myRoot_Usrs("@@zxcPy", "zxcPy", "zxcPy_sys")
    pUsers._Save()
    exit(0)

    print(
        pUsers.Add(
            {
                'usrName': "Test",
                'usrName_Nick': "测试",
                'usrID': "@@1",
                'usrType': "wx"
            }, True))
Ejemplo n.º 16
0
            except Exception as ex:
                myError.Error(ex)
                return True
        return False

    #运行-开始
    def Start(self):
        self.isRunning = True
        self._Init_MQ(self.isRunning)


#初始全局消息管理器
from myGlobal import gol
gol._Init()  #先必须在主模块初始化(只在Main模块需要一次即可)
if (gol._Get_Setting('robotReply', None) == None):
    gol._Set_Setting('robotReply', myRobot_Reply_MQ(True))  #实例 机器人消息处理工厂类
    myDebug.Print("消息处理工厂类::", "MQ" + ">> ", "--已开启\r\n")

#主启动程序
if __name__ == "__main__":
    #机器人消息处理
    pWxReply = gol._Get_Setting('robotReply')

    #实例生产者、消费者
    from myGlobal import gol
    pMMsg = gol._Get_Setting('manageMsgs')

    #用户信息
    msg = {
        "usrID": 'zxc_0',
        "usrName": '墨紫',