Esempio n. 1
0
        /// <summary>
        /// 保存spreadinfo
        /// </summary>
        /// <param name="spreadInfo"></param>
        /// <param name="isDeleteOld">是否删除同类型的旧数据</param>
        public void BuildSaveSpreadInfo(SpreadInfoDTO spreadInfo, bool isDeleteOld = false)
        {
            if (spreadInfo == null || spreadInfo.SpreadId == Guid.Empty || spreadInfo.SpreadCode == Guid.Empty)
            {
                return;
            }
            ContextSession contextSession = ContextFactory.CurrentThreadContext;

            if (isDeleteOld)
            {
                //插入SpreadInfo数据库表
                var oldSpreadInfo = SpreadInfo.ObjectSet().FirstOrDefault(c => c.SpreadId == spreadInfo.SpreadId && c.IsDel == 0);

                if (oldSpreadInfo != null)
                {
                    if ((oldSpreadInfo.SpreadId == spreadInfo.SpreadId) && (oldSpreadInfo.SpreadType == spreadInfo.SpreadType))
                    {
                        oldSpreadInfo.EntityState = EntityState.Deleted;
                    }
                }
            }
            SpreadInfo newSpreadInfo = SpreadInfo.CreateSpreadInfo();

            newSpreadInfo.SpreadId   = spreadInfo.SpreadId;
            newSpreadInfo.SpreadCode = spreadInfo.SpreadCode;
            newSpreadInfo.SpreadUrl  = spreadInfo.SpreadUrl;
            newSpreadInfo.IsDel      = spreadInfo.IsDel;
            newSpreadInfo.SpreadType = spreadInfo.SpreadType;
            newSpreadInfo.SpreadDesc = spreadInfo.SpreadDesc;
            newSpreadInfo.AppId      = spreadInfo.AppId;
            contextSession.SaveObject(newSpreadInfo);
            UpdateRalationUserSpread(spreadInfo.SpreadId, spreadInfo.SpreadCode, spreadInfo.SpreadType);
        }
Esempio n. 2
0
        private SpreadInfo ProcessHQ(CustomMarketData m1, CustomMarketData m2)
        {
            SpreadInfo hqInfo = new SpreadInfo();

            hqInfo.Time         = m1.Time;
            hqInfo.LastIF1Price = (lastHQInfo == null) ? 0 : lastHQInfo.IF1Price;
            hqInfo.LastIF2Price = (lastHQInfo == null) ? 0 : lastHQInfo.IF2Price;
            hqInfo.IF1Price     = (m1 == null) ? double.NaN : m1.NewPrice;
            hqInfo.IF2Price     = (m2 == null) ? double.NaN : m2.NewPrice;

            if (m1 == null || m2 == null || m1.Buy.Length <= 0 || m1.Sell.Length <= 0 || m2.Buy.Length <= 0 || m2.Sell.Length <= 0)
            {
                hqInfo.IF1OpenPrice  = hqInfo.IF1ClosePrice = hqInfo.IF2OpenPrice = hqInfo.IF2ClosePrice = double.NaN;
                hqInfo.CurrentSpread = hqInfo.CloseSpread = hqInfo.OpenSpread = double.NaN;

                UpdateLogInfo(string.Format("当前行情异常:无法获得{0}的买卖盘口", (m1 == null || m1.Buy.Length <= 0 || m1.Sell.Length <= 0) ? param.InIF1 : param.InIF2));
            }
            else
            {
                hqInfo.IF1OpenPrice  = m1.Sell[0];
                hqInfo.IF1ClosePrice = m1.Buy[0];
                hqInfo.IF2OpenPrice  = m2.Buy[0];
                hqInfo.IF2ClosePrice = m2.Sell[0];
                hqInfo.MaxOpenVol    = (int)Math.Min(m1.SellVol[0], m2.BuyVol[0]);
                hqInfo.MaxCloseVol   = (int)Math.Min(m1.BuyVol[0], m2.SellVol[0]);

                hqInfo.LastSpread    = (lastHQInfo == null) ? 0 : lastHQInfo.CurrentSpread;
                hqInfo.CurrentSpread = m1.NewPrice - m2.NewPrice;                           // 实时最新价差
                hqInfo.OpenSpread    = hqInfo.IF1OpenPrice - hqInfo.IF2OpenPrice;           // 实时开仓价差
                hqInfo.CloseSpread   = hqInfo.IF1ClosePrice - hqInfo.IF2ClosePrice;         // 实时平仓价差
            }

            lastHQInfo = hqInfo;
            return(hqInfo);
        }
Esempio n. 3
0
        bool HQTest(SpreadInfo hqInfo)
        {
            // 行情信息不能缺失
            if (double.IsNaN(hqInfo.CurrentSpread) || double.IsNaN(hqInfo.OpenSpread) || double.IsNaN(hqInfo.CloseSpread))
            {
                errorMsg = "行情缺失:当前价差为NaN";
                return(false);
            }

            // 判断是否异常行情
            if (Math.Abs(hqInfo.LastIF1Price - hqInfo.IF1Price) >= inParam.InEPrice)
            {
                errorMsg = "IF1最新价变动异常,超过设定最新价变动" + inParam.InEPrice + ",last:" + hqInfo.LastIF1Price + ",current:" + hqInfo.IF1Price;
                return(false);
            }
            if (Math.Abs(hqInfo.LastIF2Price - hqInfo.IF2Price) >= inParam.InEPrice)
            {
                errorMsg = "IF2最新价变动异常,超过设定最新价变动" + inParam.InEPrice + ",last:" + hqInfo.LastIF2Price + ",current:" + hqInfo.IF2Price;
                return(false);
            }
            if (Math.Abs(hqInfo.LastSpread - hqInfo.CurrentSpread) >= inParam.InESpread)
            {
                errorMsg = "价差变动超过设定异常价差变动值" + inParam.InESpread + ",last:" + hqInfo.LastSpread + ",current:" + hqInfo.CurrentSpread;
                return(false);
            }

            return(true);
        }
Esempio n. 4
0
        /// <summary>
        ///  删除
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public Jinher.AMP.BTP.Deploy.CustomDTO.ResultDTO DeleteExt(System.Guid id)
        {
            try
            {
                ResultDTO result = new ResultDTO {
                    isSuccess = true, Message = "success"
                };

                ContextSession contextSession = ContextFactory.CurrentThreadContext;
                var            spreadCategory = SpreadCategory.ObjectSet().FirstOrDefault(c => c.Id == id);
                if (spreadCategory == null)
                {
                    return(result);
                }
                var usedCount = SpreadInfo.ObjectSet().Count(c => c.IsDel == 1 && c.SpreadType == spreadCategory.SpreadType);
                if (usedCount > 0)
                {
                    result.ResultCode = 2;
                    result.isSuccess  = false;
                    result.Message    = "该分类已被使用,无法删除";
                }
                spreadCategory.EntityState = EntityState.Deleted;
                contextSession.SaveChanges();
                return(result);
            }
            catch (Exception ex)
            {
                LogHelper.Error(string.Format("SpreadCategoryBP.DeleteExt 异常:dto:{0}", id), ex);
                return(new ResultDTO {
                    ResultCode = -1, Message = "操作失败"
                });
            }
        }
Esempio n. 5
0
 public void OnSpreadData(SpreadInfo spInfo)
 {
     // 判断是否到达交易条件
     if (CanSpreadTrade(spInfo))
     {
         ThreadPool.QueueUserWorkItem(new WaitCallback(StartSpreadTrade), spInfo);
     }
 }
Esempio n. 6
0
        /// <summary>
        /// 更新用户为推广主
        /// </summary>
        /// <param name="spreaderDto">推广者dto</param>
        /// <returns></returns>
        public ResultDTO UpdateToSpreaderExt(SpreaderAndBuyerWxDTO spreaderDto)
        {
            ResultDTO result = new ResultDTO {
                Message = "Success"
            };

            if (spreaderDto == null || spreaderDto.SpreaderId == Guid.Empty || spreaderDto.SpreadCode == Guid.Empty)
            {
                return(new ResultDTO {
                    ResultCode = 1, Message = "id为空或推广码为空"
                });
            }
            try
            {
                ContextSession contextSession = ContextFactory.CurrentThreadContext;
                //插入SpreadInfo数据库表
                var oldSpreadInfo = SpreadInfo.ObjectSet().FirstOrDefault(c => c.SpreadId == spreaderDto.SpreaderId && c.SpreadCode == spreaderDto.SpreadCode && c.IsDel == 0);
                if (oldSpreadInfo == null)
                {
                    SpreadInfo newSpreadInfo = SpreadInfo.CreateSpreadInfo();
                    newSpreadInfo.SpreadId   = spreaderDto.SpreaderId;
                    newSpreadInfo.SpreadCode = spreaderDto.SpreadCode;
                    newSpreadInfo.IsDel      = 0;
                    newSpreadInfo.SpreadType = 0;
                    contextSession.SaveObject(newSpreadInfo);
                    contextSession.SaveChanges();
                }
                var createUser      = EBCSV.GetOrgCreateUser(spreaderDto.SpreaderId);
                var oldUserSpreader = UserSpreader.ObjectSet().FirstOrDefault(c => c.UserId == createUser);
                if (oldUserSpreader != null)
                {
                    var createUsers = EBCSV.GetMyCreateAccountList(createUser);
                    if (createUsers != null && createUsers.Contains(oldUserSpreader.SpreaderId))
                    {
                        return(result);
                    }
                    oldUserSpreader.EntityState = EntityState.Deleted;
                }
                UserSpreader newUserSpreader = UserSpreader.CreateUserSpreader();
                newUserSpreader.SpreaderId = spreaderDto.SpreaderId;
                newUserSpreader.UserId     = createUser;
                newUserSpreader.SpreadCode = spreaderDto.SpreadCode;
                contextSession.SaveObject(newUserSpreader);
                contextSession.SaveChanges();
            }
            catch (Exception ex)
            {
                LogHelper.Error(string.Format("UserSpreaderSV.UpdateToSpreaderExt异常:spreaderDto:{0}", JsonHelper.JsonSerializer(spreaderDto)), ex);
                return(result);
            }
            return(result);
        }
Esempio n. 7
0
        private void updateRalationUserSpread(ContextSession contextSession, SpreadInfo spreadInfo)
        {
            var createOrgUserId = EBCSV.GetOrgCreateUser(spreadInfo.SpreadId);

            var userSpreader = UserSpreader.ObjectSet().FirstOrDefault(c => c.UserId == createOrgUserId);

            if (userSpreader == null)
            {
                UserSpreader uSpreaderNew = UserSpreader.CreateUserSpreader();
                uSpreaderNew.UserId        = createOrgUserId;
                uSpreaderNew.SpreaderId    = spreadInfo.SpreadId;
                uSpreaderNew.SpreadCode    = spreadInfo.SpreadCode;
                uSpreaderNew.CreateOrderId = new Guid("00000000-0000-0000-0000-000000000000");
                contextSession.SaveObject(uSpreaderNew);
            }
        }
Esempio n. 8
0
        public ResultDTO BindWeChatQrCodeExt(SpreadBindWeChatQrCodeDTO search)
        {
            if (search == null || search.Id == Guid.Empty || search.AppId == Guid.Empty)
            {
                return new ResultDTO {
                           ResultCode = 1, Message = "参数为空"
                }
            }
            ;
            try
            {
                ContextSession contextSession = ContextFactory.CurrentThreadContext;

                var spreadInfo = SpreadInfo.ObjectSet().FirstOrDefault(c => c.IsDel != 1 && c.Id == search.Id);
                if (spreadInfo == null)
                {
                    return new ResultDTO {
                               ResultCode = 2, Message = "推广主不存在"
                    }
                }
                ;
                var weChatQrCode = WeChatQRCode.ObjectSet().Where(c => c.AppId == search.AppId && c.IsDel != 1 && !c.IsUse && c.QRType.Value == search.QRType && c.QRNo == search.QRNo).FirstOrDefault();
                if (weChatQrCode == null)
                {
                    return new ResultDTO {
                               ResultCode = 3, Message = "没有找到可使用的带参数二维码,请到“App后台-微信公众号”中生成二维码"
                    }
                }
                ;
                weChatQrCode.SpreadInfoId = search.Id;
                weChatQrCode.IsUse        = true;
                weChatQrCode.Name         = getQrCodeName(spreadInfo);
                weChatQrCode.ModifiedOn   = DateTime.Now;
                weChatQrCode.EntityState  = EntityState.Modified;
                contextSession.SaveChanges();
                return(new ResultDTO {
                    isSuccess = true, Message = "success"
                });
            }
            catch (Exception ex)
            {
                LogHelper.Error(string.Format("SpreadInfoBP.BindWeChatQrCodeExt异常,dto={0}", JsonHelper.JsonSerializer(search)), ex);
                return(new ResultDTO {
                    ResultCode = 1, Message = "Error"
                });
            }
        }
Esempio n. 9
0
        bool CanSpreadTrade(SpreadInfo spInfo)
        {
            // 判断当前自动单是否开启
            if (!enable)
            {
                return(false);
            }

            // 是否在错误状态
            if (IsErrorState())
            {
                return(false);
            }

            // 判断当前行情是否异常
            if (!HQTest(spInfo))
            {
                return(false);
            }

            // 行情时间必须在设定的正常交易时间范围内
            if (!(spInfo.Time > VALID_START_TIME_AM && spInfo.Time < VALID_END_TIME_AM) &&
                !(spInfo.Time > VALID_START_TIME_PM && spInfo.Time < VALID_END_TIME_PM))
            {
                return(false);
            }

            // 是否满足开仓条件
            if (spInfo.OpenSpread < inParam.InKC || Math.Abs(spInfo.OpenSpread - inParam.InKC) <= DOUBLE_COMPARE_MARGIN)
            {
                if (TradeSummary.Position < inParam.InMaxP && RiskTest(OC_CODE.Open))
                {
                    return(true);
                }
            }

            // 是否满足平仓条件
            if (spInfo.CloseSpread > inParam.InPC || Math.Abs(spInfo.CloseSpread - inParam.InPC) <= DOUBLE_COMPARE_MARGIN)
            {
                if (TradeSummary.Position > 0 && RiskTest(OC_CODE.Close))
                {
                    return(true);
                }
            }

            return(false);
        }
Esempio n. 10
0
        /// <summary>
        /// 修改总代分佣比例
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        public Jinher.AMP.BTP.Deploy.CustomDTO.ResultDTO UpdateDividendPercentExt(Jinher.AMP.BTP.Deploy.CustomDTO.SpreadUpdateDividendPercentDTO dto)
        {
            if (dto == null || dto.Id == Guid.Empty)
            {
                return new ResultDTO {
                           ResultCode = 1, Message = "参数为空"
                }
            }
            ;
            if (dto.Percent < 0 || dto.Percent > 100)
            {
                return(new ResultDTO {
                    ResultCode = 1, Message = "分佣比例只能在0-100之间"
                });
            }
            try
            {
                ContextSession contextSession = ContextFactory.CurrentThreadContext;
                var            spreadInfo     = SpreadInfo.ObjectSet().FirstOrDefault(c => c.IsDel != 1 && c.Id == dto.Id);
                if (spreadInfo == null)
                {
                    return new ResultDTO {
                               ResultCode = 2, Message = "推广主不存在"
                    }
                }
                ;

                spreadInfo.DividendPercent = dto.Percent;
                spreadInfo.EntityState     = EntityState.Modified;
                contextSession.SaveChanges();
                return(new ResultDTO {
                    isSuccess = true, Message = "success"
                });
            }
            catch (Exception ex)
            {
                LogHelper.Error(string.Format("SpreadInfoBP.UpdateDividendPercentExt异常,search={0}", JsonHelper.JsonSerializer(dto)), ex);
                return(new ResultDTO {
                    ResultCode = 1, Message = "Error"
                });
            }
        }
Esempio n. 11
0
 private void UpdateHQ(SpreadInfo spInfo)
 {
     if (lb_Time1.InvokeRequired)
     {
         var updateHQ = new UpdateHQDelegate(UpdateHQ);
         this.BeginInvoke(updateHQ, new object[] { spInfo });
     }
     else
     {
         lb_IF1.Text         = (latestM1 == null) ? "N/A" : latestM1.StockCode;
         lb_IF2.Text         = (latestM2 == null) ? "N/A" : latestM2.StockCode;
         lb_Time1.Text       = (latestM1 == null) ? "N/A" : latestM1.Time + "." + latestM1.MilliSec;
         lb_Time2.Text       = (latestM2 == null) ? "N/A" : latestM2.Time + "." + latestM2.MilliSec;
         lb_IF1Price.Text    = spInfo.IF1Price.ToString();
         lb_IF2Price.Text    = spInfo.IF2Price.ToString();
         lb_Diff1.Text       = spInfo.CurrentSpread.ToString("F2");
         lb_OpenSpread.Text  = spInfo.OpenSpread.ToString("F2");
         lb_CloseSpread.Text = spInfo.CloseSpread.ToString("F2");
     }
 }
Esempio n. 12
0
        /// <summary>
        /// 时间处理
        /// </summary>
        /// <returns></returns>
        protected virtual void DealEvent()
        {
            if (string.IsNullOrEmpty(Log.Ticket))
            {
                return;
            }
            var qrcode = WeChatQRCode.ObjectSet().FirstOrDefault(c => c.QRType.Value == (int)QrType.SpreadManager && c.WeChatTicket == Log.Ticket);

            if (qrcode == null || qrcode.SpreadInfoId == Guid.Empty)
            {
                return;
            }
            var url = SpreadInfo.ObjectSet().Where(c => c.Id == qrcode.SpreadInfoId).Select(c => c.SpreadUrl).FirstOrDefault();

            Jinher.AMP.WCP.Deploy.CustomDTO.CusNewsPushDTO msgDto = new CusNewsPushDTO()
            {
                AppId   = CustomConfig.WeChatSpreader.AppId.ToString(),
                Content = getMessageContent(url),
            };
            WCPSV.Instance.PushSysMessageToUsers(msgDto);
        }
Esempio n. 13
0
        private string getQrCodeName(SpreadInfo spreadInfo)
        {
            string result = string.Empty;

            if (spreadInfo == null)
            {
                return(result);
            }
            List <Guid> appIds = new List <Guid>();

            if (spreadInfo.SpreadAppId != Guid.Empty)
            {
                appIds.Add(spreadInfo.SpreadAppId);
            }
            if (spreadInfo.HotshopId != Guid.Empty)
            {
                appIds.Add(spreadInfo.HotshopId);
            }
            var appDict = APPSV.GetAppNameListByIds(appIds);

            return(SpreadSV.Instance.BuildQrCodeName(spreadInfo, appDict));
        }
Esempio n. 14
0
        public ResultDTO UpdateStateExt(SpreadUpdateStateDTO search)
        {
            if (search == null || search.Id == Guid.Empty)
            {
                return new ResultDTO {
                           ResultCode = 1, Message = "参数为空"
                }
            }
            ;
            try
            {
                ContextSession contextSession = ContextFactory.CurrentThreadContext;

                var spreadInfo = SpreadInfo.ObjectSet().FirstOrDefault(c => c.IsDel != 1 && c.Id == search.Id);
                if (spreadInfo == null)
                {
                    return new ResultDTO {
                               ResultCode = 2, Message = "推广主不存在"
                    }
                }
                ;

                spreadInfo.IsDel       = search.IsDel ? 2 : 0;
                spreadInfo.EntityState = EntityState.Modified;
                contextSession.SaveChanges();
                return(new ResultDTO {
                    isSuccess = true, Message = "success"
                });
            }
            catch (Exception ex)
            {
                LogHelper.Error(string.Format("SpreadInfoBP.UpdateStateExt异常,search={0}", JsonHelper.JsonSerializer(search)), ex);
                return(new ResultDTO {
                    ResultCode = 1, Message = "Error"
                });
            }
        }
Esempio n. 15
0
        /// <summary>
        /// 生成微信二维码名称
        /// </summary>
        /// <param name="spreadInfo"></param>
        /// <param name="appDict"></param>
        /// <returns></returns>
        public string BuildQrCodeName(SpreadInfo spreadInfo, Dictionary <Guid, string> appDict)
        {
            string result = string.Empty;

            if (spreadInfo == null)
            {
                return(result);
            }
            if (appDict == null || !appDict.Any())
            {
                return(result);
            }
            StringBuilder sb = new StringBuilder();

            sb.Append(spreadInfo.Name);
            if (!string.IsNullOrEmpty(spreadInfo.UserCode))
            {
                sb.Append("_");
                sb.Append(spreadInfo.UserCode);
            }
            if (spreadInfo.SpreadAppId != Guid.Empty && appDict.ContainsKey(spreadInfo.SpreadAppId))
            {
                sb.Append("_");
                sb.Append(appDict[spreadInfo.SpreadAppId]);
            }
            if (spreadInfo.HotshopId != Guid.Empty && appDict.ContainsKey(spreadInfo.HotshopId))
            {
                sb.Append("_");
                sb.Append(appDict[spreadInfo.HotshopId]);
            }
            result = sb.ToString();
            if (string.IsNullOrEmpty(result))
            {
                result = "推广主";
            }
            return(result);
        }
Esempio n. 16
0
        /// <summary>
        /// 查询推广主信息
        /// </summary>
        /// <param name="spreadInfoSearchDTO"></param>
        /// <returns></returns>
        public Jinher.AMP.BTP.Deploy.CustomDTO.SpreadInfoResultDTO GetSpreadInfoExt(Jinher.AMP.BTP.Deploy.CustomDTO.SpreadInfoSearchDTO spreadInfoSearchDTO)
        {
            if (spreadInfoSearchDTO == null || spreadInfoSearchDTO.SpreadCode == Guid.Empty)
            {
                return(null);
            }
            var spreadInfo = SpreadInfo.ObjectSet().Where(t => t.SpreadCode == spreadInfoSearchDTO.SpreadCode && t.IsDel == 0).FirstOrDefault();

            if (spreadInfo == null)
            {
                return(null);
            }
            Jinher.AMP.BTP.Deploy.CustomDTO.SpreadInfoResultDTO result = new SpreadInfoResultDTO();

            result.SpreadId   = spreadInfo.SpreadId;
            result.SpreadUrl  = spreadInfo.SpreadUrl;
            result.SpreadCode = spreadInfo.SpreadCode;
            result.SpreadDesc = spreadInfo.SpreadDesc;
            result.SpreadType = spreadInfo.SpreadType;
            result.IsDel      = spreadInfo.IsDel;
            result.AppId      = spreadInfo.AppId;

            return(result);
        }
Esempio n. 17
0
        /// <summary>
        /// 查询一级代理指定APP的旺铺列表
        /// </summary>
        /// <param name="iwId">组织ID</param>
        /// <param name="appId">应用ID</param>
        /// <returns></returns>
        public ResultDTO <List <SpreadAppDTO> > GetLv1SpreadHotshopsExt(Guid iwId, Guid appId)
        {
            var data   = new List <SpreadAppDTO>();
            var appIds = SpreadInfo.ObjectSet().
                         Where(s => s.IsDel != 1 && s.SpreadType == 5 && s.IWId == iwId && s.SpreadAppId == appId).
                         Select(s => s.HotshopId).ToList();

            if (appIds.Count > 0)
            {
                var appDict = APPSV.GetAppNameListByIds(appIds);
                foreach (var item in appIds)
                {
                    data.Add(new SpreadAppDTO {
                        Id = item, Name = appDict.ContainsKey(item) ? appDict[item] : null
                    });
                }
            }
            return(new ResultDTO <List <SpreadAppDTO> >
            {
                isSuccess = true,
                Message = "success",
                Data = data
            });
        }
Esempio n. 18
0
        /// <summary>
        /// 删除多个自提点
        /// </summary>
        /// <param name="ids">自提点ID集合</param>
        public Jinher.AMP.BTP.Deploy.CustomDTO.ResultDTO DeleteSelfTakeStationsExt(System.Collections.Generic.List <System.Guid> ids)
        {
            if (ids == null || ids.Count < 1)
            {
                return(new ResultDTO {
                    ResultCode = 1, Message = "自提点实体不能为空"
                });
            }
            Guid cityOwnerId         = Guid.Empty;
            Guid appId               = Guid.Empty;
            int  selfTakeStationType = 0;

            try
            {
                ContextSession contextSession = ContextFactory.CurrentThreadContext;
                var            models         = SelfTakeStation.ObjectSet().Where(s => ids.Contains(s.Id) && !s.IsDel).ToList();
                if (models != null && models.Count > 0)
                {
                    var first = models.FirstOrDefault();
                    cityOwnerId         = first.CityOwnerId;
                    appId               = first.AppId.HasValue ? first.AppId.Value : Guid.Empty;
                    selfTakeStationType = first.SelfTakeStationType;
                    //删除自提点
                    foreach (var item in models)
                    {
                        item.IsDel       = true;
                        item.EntityState = System.Data.EntityState.Modified;
                        contextSession.SaveObject(item);
                    }

                    var selfTakeStationManager = SelfTakeStationManager.ObjectSet().Where(s => ids.Contains(s.SelfTakeStationId) && !s.IsDel).ToList();
                    if (selfTakeStationManager != null && selfTakeStationManager.Count > 0)
                    {
                        //删除负责人
                        foreach (var manager in selfTakeStationManager)
                        {
                            manager.IsDel       = true;
                            manager.EntityState = System.Data.EntityState.Modified;
                            contextSession.SaveObject(manager);
                        }
                    }

                    //删除推广表信息
                    List <Guid> spreadCodeList = models.Select(t => t.SpreadCode).ToList();
                    var         spreadInfo     = SpreadInfo.ObjectSet().Where(s => spreadCodeList.Contains(s.SpreadCode) && s.IsDel != 1).ToList();
                    foreach (var item in spreadInfo)
                    {
                        item.IsDel       = 1;
                        item.EntityState = System.Data.EntityState.Modified;
                        contextSession.SaveObject(item);
                    }

                    contextSession.SaveObject(spreadInfo);
                }
                contextSession.SaveChanges();
            }
            catch (Exception ex)
            {
                LogHelper.Error(string.Format("删除自提点服务异常。ids:{0}", JsonHelper.JsonSerializer(ids)), ex);
                return(new ResultDTO {
                    ResultCode = 1, Message = "Error"
                });
            }

            //更新已建体验柜数量
            try
            {
                int count = 0;
                Jinher.AMP.ZPH.Deploy.CustomDTO.ProxyCabinetNumParam prarm = new ZPH.Deploy.CustomDTO.ProxyCabinetNumParam();
                prarm.ChangeOrg = cityOwnerId;
                prarm.BelongTo  = appId;

                if (selfTakeStationType == 0)
                {
                    //总数量
                    count = SelfTakeStation.ObjectSet().Where(t => t.CityOwnerId == cityOwnerId && t.SelfTakeStationType == selfTakeStationType && !t.IsDel).Count();
                    prarm.IsSelfPavilion = false;
                }
                else if (selfTakeStationType == 1)
                {
                    //总数量
                    count = SelfTakeStation.ObjectSet().Where(t => t.CityOwnerId == cityOwnerId && t.SelfTakeStationType == selfTakeStationType && t.AppId == appId && !t.IsDel).Count();
                    prarm.IsSelfPavilion = true;
                }
                prarm.CabinetNum = count;
                LogHelper.Debug(string.Format("删除自提点时更新已建体验柜数量。prarm:{0}", JsonHelper.JsonSerializer(prarm)));
                var resultProxy = Jinher.AMP.BTP.TPS.ZPHSV.Instance.UpdateProxyCabinetNum(prarm);
                if (!resultProxy.isSuccess)
                {
                    LogHelper.Error(string.Format("删除自提点成功,但更新已建体验柜数量服务失败。ids:{0}", JsonHelper.JsonSerializer(ids)));
                }
            }
            catch (Exception ex)
            {
                LogHelper.Error(string.Format("删除自提点时更新已建体验柜数量服务异常。ids:{0}", JsonHelper.JsonSerializer(ids)), ex);
            }

            return(new ResultDTO {
                ResultCode = 0, Message = "Success"
            });
        }
Esempio n. 19
0
        /// <summary>
        /// 保存推广信息
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        public Jinher.AMP.BTP.Deploy.CustomDTO.ResultDTO SaveSpreadInfoExt(Jinher.AMP.BTP.Deploy.CustomDTO.SpreadSaveDTO dto)
        {
            if (dto == null || dto.SpreadAppId == Guid.Empty || dto.HotshopId == Guid.Empty)
            {
                return new ResultDTO {
                           ResultCode = 1, Message = "参数为空"
                }
            }
            ;

            Guid userId = Guid.Empty;
            Guid iwId   = Guid.Empty;

            // 一级代理
            if (dto.SpreadType == 5)
            {
                if (dto.SubSpreadCount < 0 || dto.SubSpreadCount > 999)
                {
                    return(new ResultDTO {
                        ResultCode = 1, Message = "子代理数量仅允许输入0~999"
                    });
                }
                if (dto.IWCode == null)
                {
                    return new ResultDTO {
                               ResultCode = 1, Message = "参数为空"
                    }
                }
                ;

                iwId = EBCSV.GetOrgIdByIwCode(dto.IWCode);
                if (iwId == Guid.Empty)
                {
                    return new ResultDTO {
                               ResultCode = 2, Message = "该组织不存在"
                    }
                }
                ;
                // 同一个推广主或推广组织,同一个推广App,同一个旺铺仅能生成一个推广码;已存在则提示:已存在相同的推广码;
                var spreadInfoCount = SpreadInfo.ObjectSet().Count(c => c.IsDel != 1 && c.SpreadType == 5 && c.IWId == iwId && c.SpreadAppId == dto.SpreadAppId && c.HotshopId == dto.HotshopId);
                if (spreadInfoCount > 0)
                {
                    return(new ResultDTO {
                        ResultCode = 2, Message = "已存在相同的推广码"
                    });
                }
            }
            // 二级代理
            else if (dto.SpreadType == 6)
            {
                if (dto.UserCode == null || dto.IWId == Guid.Empty || string.IsNullOrEmpty(dto.IWCode))
                {
                    return new ResultDTO {
                               ResultCode = 1, Message = "参数为空"
                    }
                }
                ;
                iwId   = dto.IWId;
                userId = CBCSV.GetUserIdByAccount(dto.UserCode);
                if (userId == Guid.Empty)
                {
                    return new ResultDTO {
                               ResultCode = 2, Message = "该用户未注册"
                    }
                }
                ;

                // 同一个推广主,同一个推广App,同一个旺铺仅能生成一个推广码;已存在则提示:已存在相同的推广码;
                var spreadUserCount = SpreadInfo.ObjectSet().Count(c => c.IsDel != 1 && c.SpreadType == 6 && c.SpreadId == userId && c.SpreadAppId == dto.SpreadAppId && c.HotshopId == dto.HotshopId);
                if (spreadUserCount > 0)
                {
                    return(new ResultDTO {
                        ResultCode = 2, Message = "已存在相同的推广码"
                    });
                }

                // 查询一级代理
                var lv1Spread = SpreadInfo.ObjectSet().FirstOrDefault(s => s.IsDel != 1 && s.SpreadType == 5 && s.IWId == iwId && s.SpreadAppId == dto.SpreadAppId && s.HotshopId == dto.HotshopId);
                if (lv1Spread == null)
                {
                    return(new ResultDTO {
                        ResultCode = 2, Message = "未创建一级代理"
                    });
                }
                // 同一组织、同一个推广App,同一个旺铺的子代理数量限制
                var lv2SpreadCount = SpreadInfo.ObjectSet().Count(c => c.IsDel != 1 && c.SpreadType == 6 && c.IWId == iwId && c.SpreadAppId == dto.SpreadAppId && c.HotshopId == dto.HotshopId);
                if (lv2SpreadCount >= lv1Spread.SubSpreadCount)
                {
                    return(new ResultDTO {
                        ResultCode = 2, Message = "生成的推广码已经达到限制数量"
                    });
                }
            }
            else
            {
                if (dto.UserCode == null)
                {
                    return new ResultDTO {
                               ResultCode = 1, Message = "参数为空"
                    }
                }
                ;
                userId = CBCSV.GetUserIdByAccount(dto.UserCode);
                if (userId == Guid.Empty)
                {
                    return new ResultDTO {
                               ResultCode = 2, Message = "该用户未注册"
                    }
                }
                ;
            }

            try
            {
                ContextSession contextSession = ContextFactory.CurrentThreadContext;
                Guid           spreadCode     = Guid.NewGuid();
                string         spreadUrl      = getSpreadUrl(dto.SpreadAppId, dto.HotshopId, spreadCode);
                var            qrCodeUrl      = BaseAppToolsSV.GenerateQrCode(spreadUrl, dto.QrCodeFileImg);
                if (string.IsNullOrEmpty(qrCodeUrl))
                {
                    return(new ResultDTO {
                        ResultCode = 2, Message = "生成二维码失败"
                    });
                }
                SpreadInfo spreadInfo = new SpreadInfo
                {
                    Id              = Guid.NewGuid(),
                    SpreadId        = userId,
                    SpreadUrl       = ShortUrlSV.Instance.GenShortUrl(spreadUrl),
                    SpreadCode      = spreadCode,
                    SpreadDesc      = dto.SpreadDesc,
                    SpreadType      = dto.SpreadType,
                    QrCodeUrl       = qrCodeUrl,
                    SpreadAppId     = dto.SpreadAppId,
                    HotshopId       = dto.HotshopId,
                    UserCode        = dto.UserCode,
                    Name            = dto.Name ?? "",
                    IWId            = iwId,
                    IWCode          = dto.IWCode,
                    SubSpreadCount  = dto.SubSpreadCount,
                    DividendPercent = dto.DividendPercent,
                    EntityState     = EntityState.Added
                };
                contextSession.SaveObject(spreadInfo);

                updateRalationUserSpread(contextSession, spreadInfo);

                contextSession.SaveChanges();

                return(new ResultDTO {
                    isSuccess = true, ResultCode = 0, Message = "Success"
                });
            }
            catch (Exception ex)
            {
                LogHelper.Error(string.Format("SpreadInfoBP.SaveSpreadInfoExt异常,dto={0}", JsonHelper.JsonSerializer(dto)), ex);
                return(new ResultDTO {
                    ResultCode = 1, Message = "Error"
                });
            }
        }
Esempio n. 20
0
        /// <summary>
        /// 绑定关系
        /// </summary>
        /// <param name="userSpreaderBindDTO">参数只传SpreadCode、UserID</param>
        /// <returns></returns>
        public Jinher.AMP.BTP.Deploy.CustomDTO.ResultDTO SaveUserSpreaderCodeExt(Jinher.AMP.BTP.Deploy.CustomDTO.UserSpreaderBindDTO userSpreaderBindDTO)
        {
            ResultDTO result = new ResultDTO();

            if (userSpreaderBindDTO == null)
            {
                result.ResultCode = 1;
                result.Message    = "参数错误,参数不能为空!";
                return(result);
            }
            if (userSpreaderBindDTO.SpreadCode == Guid.Empty)
            {
                result.ResultCode = 2;
                result.Message    = "参数错误,推广码不能为空!";
                return(result);
            }

            if (userSpreaderBindDTO.UserId == Guid.Empty)
            {
                result.ResultCode = 2;
                result.Message    = "参数错误,买家ID不能为空!";
                return(result);
            }

            try
            {
                //一个买家只能属于一个推广主。
                var usCount = (from us in UserSpreader.ObjectSet()
                               where us.UserId == userSpreaderBindDTO.UserId
                               select us).Count();
                if (usCount > 0)
                {
                    result.ResultCode = 0;
                    result.Message    = "已存在当前买家和推广主信息!";
                    return(result);
                }

                var spreadInfo = SpreadInfo.ObjectSet().FirstOrDefault(t => t.SpreadCode == userSpreaderBindDTO.SpreadCode && t.IsDel == 0);
                if (spreadInfo == null)
                {
                    result.ResultCode = 3;
                    result.Message    = "没有此推广码的信息!";
                    return(result);
                }

                ContextSession contextSession = ContextFactory.CurrentThreadContext;

                UserSpreader uSpreaderNew = new UserSpreader();
                uSpreaderNew.Id            = Guid.NewGuid();
                uSpreaderNew.UserId        = userSpreaderBindDTO.UserId;
                uSpreaderNew.SpreaderId    = spreadInfo.SpreadId;
                uSpreaderNew.SpreadCode    = userSpreaderBindDTO.SpreadCode;
                uSpreaderNew.IsDel         = false;
                uSpreaderNew.CreateOrderId = new Guid("00000000-0000-0000-0000-000000000000");
                uSpreaderNew.SubTime       = DateTime.Now;
                uSpreaderNew.ModifiedOn    = DateTime.Now;
                uSpreaderNew.WxOpenId      = "";

                uSpreaderNew.EntityState = System.Data.EntityState.Added;
                contextSession.SaveObject(uSpreaderNew);
                contextSession.SaveChanges();

                result.ResultCode = 0;
                result.Message    = "成功!";
                return(result);
            }
            catch (Exception ex)
            {
                LogHelper.Error(string.Format("UserSpreaderSVExt异常。userSpreaderBindDTO:{0}", JsonHelper.JsonSerializer(userSpreaderBindDTO)), ex);
                result.ResultCode = 4;
                result.Message    = "接口异常,请稍后重试!";
                return(result);
            }
        }
Esempio n. 21
0
        public ResultDTO <ListResult <SpreadInfoShowDTO> > GetSpreadInfoListExt(SpreadSearchDTO search)
        {
            if (search == null)
            {
                return new ResultDTO <ListResult <SpreadInfoShowDTO> > {
                           ResultCode = 1, Message = "参数为空"
                }
            }
            ;
            if (search.PageIndex == 0)
            {
                search.PageIndex = 1;
            }
            if (search.PageSize == 0)
            {
                search.PageSize = 20;
            }
            var query = SpreadInfo.ObjectSet().Where(c => c.IsDel != 1);

            if (search.SpreadType.HasValue)
            {
                query = query.Where(c => c.SpreadType == search.SpreadType.Value);
            }
            if (!string.IsNullOrEmpty(search.UserCode))
            {
                query = query.Where(c => c.UserCode.Contains(search.UserCode));
            }
            if (search.SpreadAppId.HasValue && search.SpreadAppId != Guid.Empty)
            {
                query = query.Where(c => c.SpreadAppId == search.SpreadAppId.Value);
            }
            if (search.IWId.HasValue)
            {
                query = query.Where(c => c.IWId == search.IWId.Value);
            }
            ListResult <SpreadInfoShowDTO> data = new ListResult <SpreadInfoShowDTO> {
                List = new List <SpreadInfoShowDTO>()
            };

            data.Count = query.Count();
            data.List  = query.OrderByDescending(c => c.SubTime).Skip((search.PageIndex - 1) * search.PageSize).
                         Take(search.PageSize).Select(c => new SpreadInfoShowDTO
            {
                Id                 = c.Id,
                SpreadId           = c.SpreadId,
                Account            = c.UserCode,
                Name               = c.Name,
                SpreadType         = c.SpreadType,
                SpreadAppId        = c.SpreadAppId,
                HotshopId          = c.HotshopId,
                QrCodeUrl          = c.QrCodeUrl,
                SpreadDesc         = c.SpreadDesc,
                SpreadUrl          = c.SpreadUrl,
                SubTime            = c.SubTime,
                IsDel              = c.IsDel,
                HotshopName        = "",
                IsBindWeChatQrCode = false,
                SpreadAppName      = "",
                SpreadTypeDesc     = "",
                IWCode             = c.IWCode,
                SubSpreadCount     = c.SubSpreadCount,
                DividendPercent    = c.DividendPercent
            }).ToList();
            if (data.List.Any())
            {
                var spreadTypes        = data.List.Select(c => c.SpreadType).Distinct().ToList();
                var spreadCategoryList = SpreadCategory.ObjectSet()
                                         .Where(c => spreadTypes.Contains(c.SpreadType))
                                         .Select(m => new SpreadCategoryDTO {
                    SpreadType = m.SpreadType, CategoryDesc = m.CategoryDesc
                }).ToList();

                var ids       = data.List.Select(c => c.Id).ToList();
                var bindedIds = WeChatQRCode.ObjectSet().Where(c => ids.Contains(c.SpreadInfoId)).Select(m => m.SpreadInfoId).ToList();


                var appIds = data.List.Select(c => c.SpreadAppId).Distinct().ToList();
                appIds.AddRange(data.List.Select(c => c.HotshopId));
                appIds = appIds.Distinct().ToList();
                var appDict = APPSV.GetAppNameListByIds(appIds);
                foreach (var spreadInfoShowDTO in data.List)
                {
                    if (appDict.ContainsKey(spreadInfoShowDTO.SpreadAppId))
                    {
                        spreadInfoShowDTO.SpreadAppName = appDict[spreadInfoShowDTO.SpreadAppId];
                    }
                    if (appDict.ContainsKey(spreadInfoShowDTO.HotshopId))
                    {
                        spreadInfoShowDTO.HotshopName = appDict[spreadInfoShowDTO.HotshopId];
                    }
                    var spreadTypeDto = spreadCategoryList.FirstOrDefault(c => c.SpreadType == spreadInfoShowDTO.SpreadType);
                    if (spreadTypeDto != null)
                    {
                        spreadInfoShowDTO.SpreadTypeDesc = spreadTypeDto.CategoryDesc;
                    }
                    if (bindedIds.Contains(spreadInfoShowDTO.Id))
                    {
                        spreadInfoShowDTO.IsBindWeChatQrCode = true;
                    }
                }
            }

            return(new ResultDTO <ListResult <SpreadInfoShowDTO> >
            {
                isSuccess = true,
                Message = "success",
                Data = data
            });
        }