def get(self): get_class = self.get_argument('class') ukid = self.get_argument('ukid') AccountNumber = self.get_argument('f2') md5_from = self.get_argument('f5') # Master_flag = self.get_argument('f6') key_ma = self.get_argument('f10', "") R = RedisClass() uaid = yield R.chick_MD5_uaid(AccountNumber, md5_from, ukid) etext = "" if uaid > 0: #验证通过 # M = MasterModel() followid = R.get_Mater_uaid(key_ma) # followid = yield M.getMaterUaid(R, key_ma) if followid != None: Mflag = yield R.chick_MaterAuthorize(followid, uaid) if Mflag == True: order_arr = yield R.get_orders_redis(followid) etext2 = yield self.format_ordertext(order_arr) etext = etext + "1,0,0,0,0,0,0,0,0," + etext2 else: etext = etext + "-2,0,0,0,0,0,0,0,0," else: etext = etext + "-1,0,0,0,0,0,0,0,0," else: etext = etext + "0,0,0,0,0,0,0,0,0," self.write(etext + config.StringEnd) self.finish()
def get(self): get_class = self.get_argument('class') ukid = self.get_argument('ukid') AccountNumber = self.get_argument('f2') md5_from = self.get_argument('f5') Master_flag = self.get_argument('f6') Master_key = self.get_argument('f10') OrderTicket = self.get_arguments('S0') OrderQsid = self.get_arguments('S1') # 验证 R = RedisClass() uaid = yield R.chick_MD5_uaid(AccountNumber, md5_from, ukid) followid = yield R.get_Mater_uaid(Master_key) followid = 0 if followid == None else followid logger.debug("uaid:%s" % uaid) if uaid > 0 and int(followid) > 0: #验证通过 S = SeperateModel() fid = yield S.CheckFollowID(uaid, followid) if get_class == "set": yield S.delSeperateList(fid) order_Tuple_add = [] for i in range(len(OrderTicket)): #增加订单,元组列表 tupleList = (fid, int(OrderTicket[i]), int(OrderQsid[i])) order_Tuple_add.append(tupleList) if len(order_Tuple_add) > 0: # 批量增加订单 add_flag = yield S.AddSeperateList(order_Tuple_add) if add_flag == True: url_text = "1," else: url_text = "-4," else: url_text = "0," elif get_class == "get": # 获得缓存的分仓数组 order_dist = yield S.getSeperateOrder(fid) if len(order_dist) > 0: url_text = "2," for order_3 in order_dist: url_text = url_text + str( order_3['orderid']) + "," + str( order_3['qsid']) + "," # upnew_flag = upnew_flag + 1 else: url_text = "0," else: # MD5不相符 url_text = '-1,' logger.debug(url_text) self.write(url_text + config.StringEnd) self.finish()
def get(self): F = ErrorForm(self.request.arguments) if F.validate() and F.cla.data == "SendError": #交易失败发送提示 ukid = F.ukid.data AccountNumber = F.f2.data md5_from = F.f5.data key_ma = F.f10.data ErrorNumber = F.f8.data Language = F.f7.data strtext = F.f9.data R = RedisClass() uaid = yield R.chick_MD5_uaid(str(AccountNumber), md5_from, ukid) followid = yield R.get_Mater_uaid(key_ma) if int(uaid) > 0 and followid != None: M = MasterModel() Master_data = yield M.getMasterEmail(followid) E = OrderError() err_text = E.getErrorText(ErrorNumber, Language) sendH = SendmailModel() tomail = [] tomail.append(Master_data['email']) if Language == 0: mail_text = ""#跟单账号提示:<BR> mail_text = mail_text + err_text + "<BR>" mail_text = mail_text + strtext + "<BR>" mail_text = mail_text + "请人工检查跟单账号MT4的网络与交易平台是否正常运行.<BR>" mail_text = mail_text + "-----来自[提示发送系统]<BR>" mail_title = "跟单账号" + str(AccountNumber) + "的提示" else: mail_text = "Documentary account message:<BR>" mail_text = mail_text + err_text + "<BR>" mail_text = mail_text + strtext + "<BR>" mail_text = mail_text + "Please manually check if the MT4 network and Broker of the documentary account are running normally.<BR>" mail_text = mail_text + "-----From [Prompt Sending System]<BR>" mail_title = "Documentary account " + str(AccountNumber) + " message" send_flag = yield sendH.email_send(tomail, mail_text, mail_title) if send_flag == True: url_text = "1,1," else: url_text = "0,0," else: url_text = "0,0," else: # 表单错误 from models.public.confrom_model import get_ErrorForm echo = get_ErrorForm(F) logger.error("[SendOrderErrorHandler]:" + echo) url_text = "0,0," self.write(url_text + config.StringEnd) self.finish()
def get(self): get_class = self.get_argument('class') ukid = self.get_argument('ukid') AccountNumber = self.get_argument('f2') md5_from = self.get_argument('f5') umail = self.get_argument('f11', "") par = r'^[\.a-zA-Z0-9_\-]{1,30}@[a-zA-Z0-9_\-]+\.([a-zA-Z0-9_\-]{1,5})$' par2 = r'.*\.(com|cn|net|org|gov|edu|top)$' if re.match(par, umail) and re.match(par2, umail): #邮箱验证成功 R = RedisClass() uaid = yield R.chick_MD5_uaid(AccountNumber, md5_from, ukid) # print(uaid) if uaid > 0: sendH = SendmailModel() # mail_key = str(random.randint(100000, 999999)) mail_key = "".join(random.sample('123567890', 6)) mail_text = """验证码: """ mail_text = mail_text + mail_key mail_text = mail_text + """ 主策略账号注册或登陆使用,请不要将验证码转发或给其他人查看!!!!! -----来自[跟单交易多账户管理系统]""" tomail = [] tomail.append(umail) send_flag = yield sendH.email_send(tomail, mail_text, "主策略账号登陆验证码") if send_flag == True: md5_str = mail_key + AccountNumber + str( config.TineMd5Info) str_md5 = hashlib.md5( md5_str.encode(encoding='UTF-8')).hexdigest() R.RH.set(config.redis_session_uaid_set + str(uaid), mail_key, ex=config.SessionsOutTime) url_text = "1," + str_md5 + "," else: url_text = "0,-1," else: url_text = "0,-2," else: url_text = "0,-3," self.write(url_text + config.StringEnd) self.finish()
def get(self): get_class = self.get_argument('class') ukid = self.get_argument('ukid') AccountNumber = self.get_argument('f2') md5_from = self.get_argument('f5') umail = self.get_argument('f11', "") Ckey = self.get_argument('f12', "") pid = self.get_argument('s0', "0") par = r'^[\.a-zA-Z0-9_\-]{1,30}@[a-zA-Z0-9_\-]+\.([a-zA-Z0-9_\-]{1,5})$' echotext = "" if re.match(par, umail): #邮箱验证成功 R = RedisClass() uaid = yield R.chick_MD5_uaid(AccountNumber, md5_from, ukid) if uaid > 0: mail_key = R.RH.get(config.redis_session_uaid_set + str(uaid)) if mail_key == Ckey: #验证成功 M = MasterModel() #检查email账号注册并登陆 key_ma = yield M.getVcmial(umail, uaid) if key_ma != None: # 提取跟单的账号列表 yield R.insert_master_uaid(key_ma, uaid) datas = yield M.getMaterFollow(uaid) echotext2 = yield R.getRedisMaterFollow(datas) maxnum = yield M.getMaterCopyNum(config.PID, uaid) echotext = echotext + str(maxnum) + "_" + str( config.ERROR_TIME) + "," + key_ma + "," + echotext2 else: echotext = "-2,0," else: echotext = "-3,0," else: echotext = "-4,0," else: echotext = "-5,0," self.write(echotext + config.StringEnd) self.finish()
def get(self): get_class = self.get_argument('class') ukid = self.get_argument('ukid') AccountNumber = self.get_argument('f2') md5_from = self.get_argument('f5') copy_account = self.get_argument('f11', "") edit_flag = self.get_argument('f12', "") md5_from2 = self.get_argument('f13', "") MasterKey = self.get_argument('f14', "") pid = self.get_argument('s0', 0) echotext = "" if get_class == "edit": # 修改授权 # 二次较检 md5_str = AccountNumber + copy_account + str(config.TineMd5Info) str_md5 = hashlib.md5(md5_str.encode(encoding='UTF-8')).hexdigest() if str_md5 == md5_from2: # 信息验证成功,进行相关操作 R = RedisClass() followid = yield R.chick_MD5_uaid(AccountNumber, md5_from, ukid) if followid > 0: m_flag = yield R.chick_MaterAuthorize( followid, copy_account) if edit_flag == "1" and m_flag == True: echotext = "0,0," elif edit_flag == "0" and m_flag == False: echotext = "0,0," else: #需要修改授权 M = MasterModel() flag = R.RH.hget( config.redis_master_uaid_Hash + str(followid), str(copy_account)) if flag == 1 or flag == "1": mflag = yield M.setMaterAuthorize( followid, copy_account, 0) if mflag == True: R.RH.hset( config.redis_master_uaid_Hash + str(followid), str(copy_account), "0") echotext = "1,0," else: echotext = "-3,0," else: # 判断超过授权数量 copy_max_num = yield M.get_copy_num( R.RH.hgetall(config.redis_master_uaid_Hash + str(followid))) master_max_num = yield M.getMaterCopyNum( pid, followid) if copy_max_num >= master_max_num: # 授权数量超过 echotext = "-6,0," else: mflag = yield M.setMaterAuthorize( followid, copy_account, 1) if mflag == True: R.RH.hset( config.redis_master_uaid_Hash + str(followid), str(copy_account), "1") echotext = "1,1," else: echotext = "-3,0," else: echotext = "-4,0," else: echotext = "-5,0," elif get_class == "apply": # 申请授权 # 二次较检 md5_str = AccountNumber + MasterKey + str(config.TineMd5Info) str_md5 = hashlib.md5(md5_str.encode(encoding='UTF-8')).hexdigest() if str_md5 == md5_from2: #信息验证成功 R = RedisClass() uaid = yield R.chick_MD5_uaid(AccountNumber, md5_from, ukid) if uaid > 0: M = MasterModel() followid = yield R.get_Mater_uaid(MasterKey) if followid == None: mflag = False else: mflag = yield R.chick_MaterAuthorize(followid, uaid) if mflag == True: #已经授权 echotext = "2," + str( config.ERROR_TIME) + ",9947" + str(followid) + "," else: if followid != None: # 有MasterKey的策略,进行申请操作 yield R.insert_master_uaid(MasterKey, followid) #检查数据库 # print(followid,uaid) yield M.checkMaterFollow(followid, uaid) # 更新Redis yield R.set_MaterFollow(followid, uaid, 0) echotext = "1,0," else: #无效MasterKey,找不到相关策略 echotext = "-3,0," else: echotext = "-4,0," else: echotext = "-5,0," self.write(echotext + config.StringEnd) self.finish()
def get(self): #self.render("user/login.html", next=self.get_argument("next")) get_class = self.get_argument('class') ukid = self.get_argument('ukid') AccountNumber = self.get_argument('f2') md5_from = self.get_argument('f5') Master_flag = self.get_argument('f6') OrderTicket = self.get_arguments('H0') OpenT = self.get_arguments('H1') OrderComment = self.get_arguments('H2') # print(type(OrderComment)) # for ii in OrderComment: # print(ii) account = self.get_arguments('H3') OrderProfit = self.get_arguments('H4') proxy_from_orderid = self.get_arguments('H5') # 验证 R = RedisClass() uaid = yield R.chick_MD5_uaid(AccountNumber, md5_from, ukid) # print("uaid:", uaid) if uaid > 0: #验证通过 O = ProxyOrderModel() url_text = "2," upnew_flag = 0 #把OrderTicket转成元组 TicketTuple = yield O.FormatTuple(OrderTicket) accountTuple = yield O.FormatTuple(account) Order_datas = yield O.CheckOrderList(uaid, TicketTuple) order_Tuple_add = [] order_Tuple_edit = [] GradePrice = yield O.findProxyGradePrice(accountTuple) # print(GradePrice) for i in range(len(OrderTicket)): edit_flag = 0 for Order_data in Order_datas: if str(OrderTicket[i]) == str(Order_data['orderid']): #存在订单 if OpenT[i] != str(Order_data['stime']): edit_flag = 1 if account[i] != str(Order_data['account']): edit_flag = 1 if OrderProfit[i] != str(Order_data['profit']): edit_flag = 1 if proxy_from_orderid[i] != str(Order_data['proxy_from_orderid']): edit_flag = 1 # print(OrderComment[i]) # print(Order_data['comment']) if OrderComment[i] != str(Order_data['comment']): edit_flag = 1 if Order_data['proxy_profit'] > 0 or str(Order_data['proxy_profit']) != "0.00": edit_flag = 2 if edit_flag == 1: # 修改订单,元组列表 tupleList2 = (int(OpenT[i]), int(proxy_from_orderid[i]), OrderComment[i], int(account[i]), float(OrderProfit[i]), float(OrderProfit[i]) / config.PROXY_PRICE * GradePrice[i], 1, uaid, int(OrderTicket[i])) order_Tuple_edit.append(tupleList2) else: #无须修改的 url_text = url_text + OrderTicket[i] + ",1," edit_flag = 2 break if edit_flag == 0: #增加订单,元组列表 tupleList = (int(OrderTicket[i]), int(proxy_from_orderid[i]), int(account[i]), int(OpenT[i]), float(OrderProfit[i]), float(OrderProfit[i]) / config.PROXY_PRICE * GradePrice[i], OrderComment[i], uaid, 1) order_Tuple_add.append(tupleList) if len(order_Tuple_add) > 0: # 批量增加订单 add_flag = yield O.AddOrderList(order_Tuple_add) if add_flag == True: orderid_str = "" add_edit_flag = 0 for order_1 in order_Tuple_add: url_text = url_text + str(order_1[0]) + ",1," # print("==%s" % type(order_1[18])) else: for order_2 in order_Tuple_add: url_text = url_text + str(order_2[0]) + ",0," if len(order_Tuple_edit) > 0: # 修改订单 up_flag = yield O.UpOrderList(order_Tuple_edit) if up_flag == True: for order_3 in order_Tuple_edit: url_text = url_text + str(order_3[8]) + ",1," upnew_flag = upnew_flag + 1 else: for order_4 in order_Tuple_edit: url_text = url_text + str(order_4[8]) + ",0," else: if uaid == -1: # MD5不相符 url_text = '-1,-1,0,0,0,0,0,0,0,' else: #不存在或是没有登陆 url_text = '-1,-2,0,0,0,0,0,0,0,' # print(url_text) self.write(url_text + config.StringEnd) self.finish() # #整理数据 # if users['ea'] =="true" or users['ea'] == 1: # users['ea'] == 1 # else: # users['ea'] == 0 # if users['moni'] == "true": # users['moni'] == 1 # else: # users['moni'] == 0 # # # md5_str = users['account'] + users['version'] # str_md5 = hashlib.md5(md5_str.encode(encoding='UTF-8')).hexdigest() # # 验证 # #datas = "" # y = UserModel() # if users['md5_from'] == str_md5: # if get_class == "check": # datas = yield y.GetAccount(users)#tornado.gen.Task # # 执行Task函数,内部还是返回future对象。Task函数上第一个参数是要执行的函数,第二个是参数 # # self.write(datas) # else: # self.write('-1,0,0,0,0,0,0,0,0,') # self.finish() #登录成功附加别的属性 # def success_login(self, user): # user.last_login = datetime.now() # user.loginnum += 1 # self.db.add(user) # self.db.commit() # self.session.set('username', user.user_name)
import config import time from tornado import ioloop, gen, iostream # import datetime # import tormysql # import pymysql # from tornado import gen from handlers.myredis.redis_class import RedisClass from models.public.headers_model import global_Models import config from models.my_socket.my_socket_model import MySocketModel # def main(): # # from models.user.order_model import OrderModel # # O = OrderModel() # # order_num = yield O.get_PositionOrderNum(4490) # # S = MySocketModel() # # pp = yield S.get_chick_orders2(4495, "089bb6b18604cda2fd8611e085a289c8") # print("11") # if __name__ == '__main__': # main()yy = R.RH.hget(config.redis_acount_md5_dic, "449a5dc904bef5315828a0d3ee7dd857") #getCopyText:{"type":"copyorder","ukid":"449a5dc904bef5315828a0d3ee7dd857","f2":"861649","f5":"e94fe0343a3e495b740419d83343bd2d","f10":""} R = RedisClass() yy = R.chick_MD5_uaid("861649", "e94fe0343a3e495b740419d83343bd2d", "449a5dc904bef5315828a0d3ee7dd857") print(yy)
def get(self): #self.render("user/login.html", next=self.get_argument("next")) get_class = self.get_argument('class') ukid = self.get_argument('ukid') AccountNumber = self.get_argument('f2') md5_from = self.get_argument('f5') Master_flag = self.get_argument('f6') OrderSymbol = self.get_arguments('H0') OrderTicket = self.get_arguments('H1') OrderOpenPrice = self.get_arguments('H2') OpenT = self.get_arguments('H3') OrderClosePrice = self.get_arguments('H4') CloseT = self.get_arguments('H5') OrderType = self.get_arguments('H6') OrderLots = self.get_arguments('H7') OrderStopLoss = self.get_arguments('H8') OrderTakeProfit = self.get_arguments('H9') OComment = self.get_arguments('HA') OrderCommission = self.get_arguments('HB') OrderSwap = self.get_arguments('HC') OrderMagicNumber = self.get_arguments('HD') MaxProfit = self.get_arguments('HE') MinProfit = self.get_arguments('HF') OrderProfit = self.get_arguments('HG') followid = self.get_arguments('HJ') # 验证 R = RedisClass() uaid = yield R.chick_MD5_uaid(AccountNumber, md5_from, ukid) # print("uaid:", uaid) if uaid > 0: #验证通过 O = OrderModel() url_text = "2," upnew_flag = 0 #把OrderTicket转成元组 TicketTuple = yield O.FormatTuple(OrderTicket) Order_datas = yield O.CheckOrderList(uaid, TicketTuple) order_Tuple_add = [] order_Tuple_edit = [] for i in range(len(OrderSymbol)): edit_flag = 0 for Order_data in Order_datas: if OrderTicket[i] == str(Order_data['orderid']): #存在订单 if CloseT[i] != str(Order_data['etime']): edit_flag = 1 if OrderStopLoss[i] != str(Order_data['sl']): edit_flag = 1 if OrderTakeProfit[i] != str(Order_data['tp']): edit_flag = 1 if edit_flag == 1: # 修改订单,元组列表 tupleList2 = (OrderSymbol[i], float(OrderLots[i]), int(OrderType[i]), int(OpenT[i]), float(OrderOpenPrice[i]), int(CloseT[i]), float(OrderClosePrice[i]), float(OrderStopLoss[i]), float(OrderTakeProfit[i]), float(OrderCommission[i]), float(OrderSwap[i]), float(OrderProfit[i]), float(MaxProfit[i]), float(MinProfit[i]), OComment[i], int(OrderMagicNumber[i]), uaid, int(OrderTicket[i])) order_Tuple_edit.append(tupleList2) else: #无须修改的 url_text = url_text + OrderTicket[i] + ",1," edit_flag = 2 break if edit_flag == 0: #增加订单,元组列表 if "from" in OComment[i]: follow_id = yield O.findFollowid(OComment[i], uaid) else: follow_id = followid[i] tupleList = (uaid, int(OrderTicket[i]), OrderSymbol[i], float(OrderLots[i]), int(OrderType[i]), int(OpenT[i]), float(OrderOpenPrice[i]), int(CloseT[i]), float(OrderClosePrice[i]), float(OrderStopLoss[i]), float(OrderTakeProfit[i]), float(OrderCommission[i]), float(OrderSwap[i]), float(OrderProfit[i]), float(MaxProfit[i]), float(MinProfit[i]), OComment[i], int(OrderMagicNumber[i]), int(follow_id)) order_Tuple_add.append(tupleList) if len(order_Tuple_add) > 0: # 批量增加订单 add_flag = yield O.AddOrderList(order_Tuple_add) if add_flag == True: orderid_str = "" add_edit_flag = 0 for order_1 in order_Tuple_add: url_text = url_text + str(order_1[1]) + ",1," # print("==%s" % type(order_1[18])) if order_1[18] == "0" or order_1[18] == 0: # print(order_1[1]) orderid_str = orderid_str + str(order_1[1]) + "," add_edit_flag = 1 upnew_flag = upnew_flag + 1 #修改跟单ID # print("edit_tuple=%s" % edit_tuple) if add_edit_flag == 1: # print("orderid_str=%s" % orderid_str) O.UpOrderFollowID(orderid_str[0:-1], uaid) else: for order_2 in order_Tuple_add: url_text = url_text + str(order_2[1]) + ",0," if len(order_Tuple_edit) > 0: # 修改订单 up_flag = yield O.UpOrderList(order_Tuple_edit) if up_flag == True: for order_3 in order_Tuple_edit: url_text = url_text + str(order_3[17]) + ",1," upnew_flag = upnew_flag + 1 else: for order_4 in order_Tuple_edit: url_text = url_text + str(order_4[17]) + ",0," # 判断是不是主策略账户 if upnew_flag > 0 and Master_flag == "1" and R.RH.sismember( config.redis_master_uaid_set, uaid): # 得到账户的持仓订单 datas = yield O.get_PositionOrder(uaid) # 进行更新redis持仓 yield R.set_Master_order(uaid, datas) # 加入socket队列 yield R.insertMaterAuthorizeSocketQueue(str(uaid)) else: if uaid == -1: # MD5不相符 url_text = '-1,-1,0,0,0,0,0,0,0,' else: #不存在或是没有登陆 url_text = '-1,-2,0,0,0,0,0,0,0,' # print(url_text) self.write(url_text + config.StringEnd) self.finish()
# os.system("python msgfmt.py -o en_US.mo en_US.po") # pp = ["ii",'99'] # if "99" in pp: # pp.append("fxcns") # print(pp.remove(3)) # exit() # strComment = "from 63829971" # par = "([0-9].+)" # arr1 = re.compile(par).findall(strComment) # print(time.time()-10) # password_md5 = hashlib.md5("2204SN48".encode(encoding='UTF-8')).hexdigest() # print(password_md5) # exit() #"ukid":"71a76f0e7a6a6e2e3fd48ab15b45fd33","f2":"861649","f5":"e94fe0343a3e495b740419d83343bd2d", R = RedisClass() yy = R.chick_MD5_uaid("861649", "e94fe0343a3e495b740419d83343bd2d", "71a76f0e7a6a6e2e3fd48ab15b45fd33") print(yy) exit() # R.RH.set("jj4264", 0) # print(R.RH.get("jj4264")) # exit() # from models.public.headers_model import global_Models # import config # from models.my_socket.my_socket_model import MySocketModel # import datetime # now = datetime.datetime.now() # today = datetime.date.today() # print(now - datetime.timedelta(days=now.weekday() + 7)) # print(int(time.mktime((today - datetime.timedelta(days=today.weekday() - 7)).timetuple()))) # exit() # def main():