Exemple #1
0
        public ResultLogin Login(Model.DB.User model)
        {
            ApiResultEnum result = UserDA.Login(ref model, platform);

            if (result == ApiResultEnum.Success)
            {
                string user_token = UserRA.Get(model.id.ToString(), "platform_" + platform);
                if (string.IsNullOrWhiteSpace(user_token))
                {
                    user_token = FuncHelper.GetUniqueString();
                    Dictionary <string, string> dic = new Dictionary <string, string>();
                    dic.Add("platform_" + platform, user_token);
                    dic.Add("name", model.name);
                    dic.Add("status_order", model.status_order.ToString());
                    dic.Add("role", model.role.ToString());
                    dic.Add("login_time_" + platform, DateTime.Now.Format());
                    UserRA.Set(model.id.ToString(), dic);
                    UserRA.SetExpire(model.id.ToString());
                }
                return(new ResultLogin(result, model, model.id + "-" + user_token));
            }
            else
            {
                return(new ResultLogin(result, null, null));
            }
        }
Exemple #2
0
        public Result UpdateUnits(UserUnits model)
        {
            ApiResultEnum result = UnitDA.UpdateUserID(model);

            if (result == ApiResultEnum.Success && MonitorRA.GetStatusTrade() != 0)
            {
                string[] keys = TradeRA.KeySearch("U_*");
                foreach (string key in keys)
                {
                    string _user_id = TradeRA.Get(key, "user_id");
                    if (model.unit_ids.Contains(int.Parse(key.Substring(2))))
                    {
                        if (model.id != _user_id)
                        {
                            UnitRA.UpdateUserID(model.id, key);
                        }
                    }
                    else
                    {
                        if (model.id == _user_id)
                        {
                            UnitRA.UpdateUserID("0", key);
                        }
                    }
                }
            }
            return(Result(result));
        }
Exemple #3
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="resultEnum"></param>
 /// <param name="resultMsg"></param>
 /// <param name="data"></param>
 /// <returns></returns>
 public static ApiResult Write(ApiResultEnum resultEnum, string resultMsg, object data)
 {
     return(new ApiResult
     {
         resultCode = (int)resultEnum,
         resultMsg = resultMsg,
         data = data
     });
 }
Exemple #4
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="resultEnum"></param>
 /// <returns></returns>
 public static ApiResult Write(ApiResultEnum resultEnum)
 {
     return(new ApiResult
     {
         resultCode = (int)resultEnum,
         resultMsg = resultEnum.ToString(),
         data = new object()
     });
 }
Exemple #5
0
        public Result <int> Add(Model.DB.AccountGroup model)
        {
            int id = 0;

            model.created_by = user_id;
            ApiResultEnum result = AccountGroupDA.Add(model, ref id);

            return(Result(result, id));
        }
Exemple #6
0
        public Result <int> Add(Model.DB.User model)
        {
            int id = 0;

            model.created_by = user_id;
            ApiResultEnum result = UserDA.Add(model, ref id);

            return(Result(result, id));
        }
Exemple #7
0
        public Result UpdateRatioFreezing(Model.DB.Unit model)
        {
            ApiResultEnum result = UnitDA.UpdateRatioFreezing(model);

            if (result == ApiResultEnum.Success && MonitorRA.GetStatusTrade() != 0)
            {
                UnitRA.UpdateRatioFreezing(model.ratio_freezing, "U_" + model.id);
            }
            return(Result(result));
        }
Exemple #8
0
        public Result UpdateStatus(Status model)
        {
            ApiResultEnum result = UnitDA.UpdateStatus(model);

            if (result == ApiResultEnum.Success && MonitorRA.GetStatusTrade() != 0)
            {
                UnitRA.UpdateStatus(model.status, "U_" + model.id);
            }
            return(Result(result));
        }
Exemple #9
0
        public Result Update(Model.DB.Unit model)
        {
            ApiResultEnum result = UnitDA.Update(model);

            if (result == ApiResultEnum.Success && MonitorRA.GetStatusTrade() != 0)
            {
                OpenCloseBiz.LoadUnit(model, false);
            }
            return(Result(result));
        }
Exemple #10
0
        public Result UpdateStatusOrder(StatusOrder model)
        {
            ApiResultEnum result = AccountDA.UpdateStatusOrder(model);

            if (result == ApiResultEnum.Success && MonitorRA.GetStatusTrade() != 0)
            {
                AccountRA.UpdateStatusOrder(model.status, "A_" + model.id);
            }
            return(Result(result));
        }
Exemple #11
0
        public Result Update(Model.DB.Account model)
        {
            model.created_by = user_id;
            ApiResultEnum result = AccountDA.Update(model);

            if (result == ApiResultEnum.Success && MonitorRA.GetStatusTrade() != 0)
            {
                OpenCloseBiz.LoadAccount(model, false);
            }
            return(Result(result));
        }
Exemple #12
0
        public Result CapitalInOut(LogCapital model)
        {
            model.@operator = user_id;
            decimal       delta;
            ApiResultEnum result = LogCapitalDA.Add(model, out delta);

            if (result == ApiResultEnum.Success && MonitorRA.GetStatusTrade() != 0)
            {
                UnitRA.UpdateCapitalInOut(delta, "U_" + model.unit_id);
            }
            return(Result(result));
        }
Exemple #13
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="resultEnum"></param>
        /// <param name="resultMsg"></param>
        /// <param name="key"></param>
        /// <param name="data"></param>
        /// <returns></returns>
        public static ApiResult Write(ApiResultEnum resultEnum, string resultMsg, string key, object data)
        {
            Dictionary <string, object> dict = new Dictionary <string, object>();

            dict[key] = data;
            return(new ApiResult
            {
                resultCode = (int)resultEnum,
                resultMsg = string.IsNullOrEmpty(resultMsg) ? resultEnum.ToString() : resultMsg,
                data = dict
            });
        }
Exemple #14
0
        public Result <int> Add(Model.DB.Account model)
        {
            int id = 0;

            model.created_by = user_id;
            ApiResultEnum result = AccountDA.Add(model, ref id);

            if (result == ApiResultEnum.Success && MonitorRA.GetStatusTrade() != 0)
            {
                model.id = id;
                OpenCloseBiz.LoadAccount(model);
            }
            return(Result(result, id));
        }
Exemple #15
0
        public Result <int> Add(Model.DB.Unit model)
        {
            int id = 0;

            model.created_by        = user_id;
            model.status_order_enum = StatusOrderEnum.Allowed;
            ApiResultEnum result = UnitDA.Add(model, ref id);

            if (result == ApiResultEnum.Success && MonitorRA.GetStatusTrade() != 0)
            {
                model.id = id;
                OpenCloseBiz.LoadUnit(model);
            }
            return(Result(result, id));
        }
Exemple #16
0
        public Result <long> OrderAutoAdd(OrderAutoAdd model)
        {
            if (model.count_min > model.count_max || model.price_min > model.price_max || model.time_min > model.time_max)
            {
                return(Result(ApiResultEnum.Parameter_Error, 0L));
            }

            HQItem hq    = HQService.Get(model.code);
            Order  order = new Order()
            {
                user_id  = user_id,
                unit_id  = model.unit_id,
                code     = model.code,
                price    = hq.Last,
                count    = model.count_total,
                type     = model.type,
                platform = platform
            };

            ApiResultEnum result = LimitBiz.CheckStatus(order);

            if (result != ApiResultEnum.Success)
            {
                return(Result(result, 0L));
            }
            result = LimitBiz.CheckUnit(order);
            if (result != ApiResultEnum.Success)
            {
                return(Result(result, 0L));
            }

            model.name     = StockInfoBiz.GetStock(model.code).name;
            model.id       = FuncHelper.GetUniqueID();
            model.user_id  = user_id;
            model.platform = platform;
            if (model.account_id > 0)
            {
                model.account_name = AccountRA.GetName(model.account_id);
            }
            else
            {
                model.account_name = "";
            }
            string key = "S_" + model.id + "_U_" + model.unit_id + "_D_0";

            OrderAutoRA.Add(model, key);
            return(Result(ApiResultEnum.Success, model.id));
        }
Exemple #17
0
        public Result Delete(Model.DB.AccountGroup model)
        {
            var units = UnitDA.List4AccountGroup(model.id);

            if (units.Count > 0)
            {
                return(Result(ApiResultEnum.Cited, string.Join(",", units.Select(u => u.code))));
            }

            model.created_by = user_id;
            ApiResultEnum result = AccountGroupDA.Delete(model);

            if (result == ApiResultEnum.Success && MonitorRA.GetStatusTrade() != 0)
            {
                AccountGroupRA.Delete4AccountGroup(model.id);
            }
            return(Result(result, string.Empty));
        }
Exemple #18
0
        public Result Delete(Model.DB.Account model)
        {
            var account_groups = AccountGroupDA.List4Account(model.id);

            if (account_groups.Count > 0)
            {
                return(Result(ApiResultEnum.Cited, string.Join(",", account_groups.Select(u => u.code))));
            }

            model.created_by = user_id;
            ApiResultEnum result = AccountDA.Delete(model);

            if (result == ApiResultEnum.Success && MonitorRA.GetStatusTrade() != 0)
            {
                TradeBiz.RemoveAccount(model.id);
                AccountRA.Delete("A_" + model.id);
            }
            return(Result(result));
        }
Exemple #19
0
        public Result UpdateItems(Model.DB.AccountGroup model)
        {
            model.items = model.items.OrderBy(i => i.sort_buy).AsEnumerable().DistinctBy(i => i.account_id).ToList();
            ApiResultEnum result = AccountGroupDA.UpdateItems(model);

            if (result == ApiResultEnum.Success && MonitorRA.GetStatusTrade() != 0)
            {
                var units = UnitDA.List4AccountGroup(model.id);
                foreach (var kvp in units)
                {
                    UnitRA.UpdatePriorityStrategy(model.priority_strategy, "U_" + kvp.id);
                }
                AccountGroupRA.Delete4AccountGroup(model.id);
                List <Model.DB.AccountGroupItem> items = AccountGroupDA.ListItems4AccountGroup(model.id);
                foreach (Model.DB.AccountGroupItem item in items)
                {
                    OpenCloseBiz.LoadAccountGroupItem(item);
                }
                TradeBiz.RunCalculateValue();
            }
            return(Result(result));
        }
Exemple #20
0
        public Result <int> Count(Order model)
        {
            model.user_id = user_id;
            ApiResultEnum result = LimitBiz.CheckStatus(model);

            if (result != ApiResultEnum.Success && result != ApiResultEnum.Order_Count_Error && (result != ApiResultEnum.Order_Price_Error || model.type_enum == OrderTypeEnum.Buy))
            {
                return(Result(ApiResultEnum.Success, 0));
            }

            int unit_count = LimitBiz.GetUnitCount(model);

            if (unit_count == 0)
            {
                return(Result(ApiResultEnum.Success, 0));
            }

            List <int> order_items;
            int        account_count = 0;

            if (model.account_id == 0)
            {
                order_items = AccountGroupRA.List4Unit(model.unit_id).Select(g => g.account_id).ToList();
            }
            else
            {
                order_items = new List <int> {
                    model.account_id
                }
            };
            foreach (int account_id in order_items)
            {
                model.account_id = account_id;
                account_count   += LimitBiz.GetAccountCount(model);
            }
            return(Result(ApiResultEnum.Success, Math.Min(unit_count, account_count)));
        }
Exemple #21
0
 public ResultOrder(ApiResultEnum code) : base(code)
 {
 }
Exemple #22
0
 public ResultLogin(ApiResultEnum code, User data, string token) : base(code, data)
 {
     Token = token;
 }
Exemple #23
0
 public Base(ApiResultEnum code = ApiResultEnum.Success)
 {
     Code    = code;
     Message = Messages[code.ToString()];
 }
Exemple #24
0
        public static ApiResultEnum Order(Order order)
        {
            ApiResultEnum result = LimitBiz.CheckStatus(order);

            if (result != ApiResultEnum.Success)
            {
                return(result);
            }
            result = LimitBiz.CheckUnit(order);
            if (result != ApiResultEnum.Success)
            {
                return(result);
            }

            Dictionary <int, int> order_items;

            if (order.account_id == 0)
            {
                order_items = LimitBiz.GetOrderAccount(order);
            }
            else
            {
                order_items = new Dictionary <int, int>()
                {
                    { order.account_id, order.count }
                }
            };
            if (order_items.Count == 0)
            {
                return(ApiResultEnum.Order_Unit_No_Account);
            }
            if (order_items.Sum(i => i.Value) == 0)
            {
                return(ApiResultEnum.Order_Group_Negative_Amount);
            }

            int order_count = 0;

            order.trade_no    = FuncHelper.GetUniqueID().ToString();
            order.trade_count = order.count;
            foreach (var kvp in order_items)
            {
                if (kvp.Value == 0)
                {
                    continue;
                }

                order.account_id = kvp.Key;
                order.count      = kvp.Value;
                result           = LimitBiz.CheckAccount(order);
                if (result != ApiResultEnum.Success)
                {
                    continue;
                }

                BlockInfo block = StockInfoBiz.GetBlock(order.code);
                order.price = Math.Round(order.price, block.@decimal);
                jybizs[order.account_id].Order(order);
                order_count += order.count;
            }

            if (order_count == 0)
            {
                return(result);
            }
            if (order_count < order.count)
            {
                return(ApiResultEnum.Success_Portion);
            }
            return(ApiResultEnum.Success);
        }
Exemple #25
0
        public static void RunOrderAuto()
        {
            List <OrderAuto> orders = OrderAutoRA.List4Undone();

            foreach (OrderAuto orderAuto in orders)
            {
                if (orderAuto.status_enum != StatusAutoOrderEnum.Run)
                {
                    continue;
                }
                if (orderAuto.time_next_dt > DateTime.Now)
                {
                    continue;
                }

                string key    = "S_" + orderAuto.id + "_U_" + orderAuto.unit_id + "_D_0";
                Random random = new Random();
                Order  order  = new Order()
                {
                    code       = orderAuto.code,
                    type       = orderAuto.type,
                    unit_id    = orderAuto.unit_id,
                    account_id = orderAuto.account_id,
                    user_id    = orderAuto.user_id,
                    platform   = orderAuto.platform
                };
                order.count            = orderAuto.count_total - orderAuto.order_count;
                orderAuto.time_next_dt = DateTime.MinValue;
                if (order.count > orderAuto.count_max)
                {
                    order.count            = random.Next(orderAuto.count_min / 100, orderAuto.count_max / 100) * 100;
                    orderAuto.time_next_dt = DateTime.Now.AddSeconds(random.Next(orderAuto.time_min, orderAuto.time_max));
                }
                if (orderAuto.time_next_dt >= time_pause && orderAuto.time_next_dt <= time_recovery)
                {
                    orderAuto.time_next_dt = orderAuto.time_next_dt.AddMinutes(90);
                }
                if (orderAuto.time_next_dt >= time_close)
                {
                    OrderAutoRA.UpdateStatus(StatusAutoOrderEnum.Stop, 1, key);
                    continue;
                }
                order.price = DataBiz.GetPriceByPriceType(orderAuto.code, orderAuto.price_type_enum);
                if (order.price < orderAuto.price_min)
                {
                    order.price = orderAuto.price_min;
                }
                else if (order.price > orderAuto.price_max)
                {
                    order.price = orderAuto.price_max;
                }

                ApiResultEnum result = Order(order.Clone() as Order);

                orderAuto.result_prev = new Model.Return.Return(result).Message;
                orderAuto.order_times++;
                orderAuto.order_count += order.count;
                orderAuto.time_prev_dt = DateTime.Now;
                OrderAutoRA.UpdateExecuted(orderAuto, order, key);
            }
        }
Exemple #26
0
 public Result(ApiResultEnum code, T data) : base(code)
 {
     Data = data;
 }
Exemple #27
0
 public Result(ApiResultEnum code) : base(code)
 {
 }
Exemple #28
0
 public ResultLong(ApiResultEnum code, long data) : base(code)
 {
     Data = data;
 }
Exemple #29
0
 protected Result <T> Result <T>(ApiResultEnum code, T data)
 {
     return(new Result <T>(code, data));
 }
Exemple #30
0
 public ResultVersionFiles(ApiResultEnum code, VersionFiles data) : base(code)
 {
     Data = data;
 }