Example #1
0
        public string CreateNewAreaPoint(string pointName, decimal longitude, decimal latitude, int areaId)
        {
            WorkspaceDataSaveResult saveResult = new WorkspaceDataSaveResult();

            pointName = pointName.Trim();
            var statusId   = SystemStaticData.LookUpSystemIncomeStatusId(SystemStaticData.SystemIncomeDictionary.Normal);
            var existPoint = db.AreaPosition.FirstOrDefault(p => p.Latitude == latitude && p.Longitude == longitude);

            if (existPoint != null)
            {
                saveResult.Status      = (int)DataSaveStatus.DataValidationError;
                saveResult.Description = "该点已存在地标";
                return(new JavaScriptSerializer().Serialize(saveResult));
            }
            AreaPosition model = new AreaPosition();

            model.Status       = statusId;
            model.Latitude     = latitude;
            model.Longitude    = longitude;
            model.CreateAt     = DateTime.Now;
            model.AreaId       = areaId;
            model.PositionName = pointName;
            db.AreaPosition.Add(model);
            db.SaveChanges();
            saveResult.Status      = (int)DataSaveStatus.Success;
            saveResult.Description = "创建成功";
            return(new JavaScriptSerializer().Serialize(saveResult));
        }
Example #2
0
        public string CreateArea(string areaName, int parentId)
        {
            WorkspaceDataSaveResult saveResult = new WorkspaceDataSaveResult();

            areaName = areaName.Trim();
            var statusId  = SystemStaticData.LookUpSystemIncomeStatusId(SystemStaticData.SystemIncomeDictionary.Normal);
            var existArea = db.Area.FirstOrDefault(p => p.AreaName == areaName && p.Status == statusId);

            if (existArea != null)
            {
                saveResult.Status      = (int)DataSaveStatus.DataValidationError;
                saveResult.Description = "已存在相关记录";
                return(new JavaScriptSerializer().Serialize(saveResult));
            }
            Area model = new Area();

            model.AreaName     = areaName;
            model.ParentAreaId = parentId;
            model.CreateAt     = DateTime.Now;
            model.Status       = statusId;
            db.Area.Add(model);
            db.SaveChanges();
            saveResult.Status      = (int)DataSaveStatus.Success;
            saveResult.Description = "保存成功";
            return(new JavaScriptSerializer().Serialize(saveResult));
        }
Example #3
0
        public string GetAreaAdv(string unioId, decimal longitude, decimal latitude)
        {
            WorkspaceDataSaveResult saveResult = new WorkspaceDataSaveResult();
            var     roundValue = decimal.Parse(ConfigurationManager.AppSettings["RoundPostion"]);
            decimal maxLat     = latitude + roundValue;
            decimal minLat     = latitude - roundValue;

            decimal maxLng = longitude + roundValue;
            decimal minLng = longitude - roundValue;
            var     query  = (from ap in db.AreaPosition
                              where ap.Latitude <= maxLat && ap.Latitude >= minLat && ap.Longitude <= maxLng && ap.Longitude >= minLng
                              select ap.AreaId).Distinct();

            var areaIds = query.ToList();

            if (areaIds.Count > 0)
            {
                var accessLog = db.AccessUserLocation.FirstOrDefault(p => p.UserUnioId == unioId);
                if (accessLog == null)
                {
                    db.AccessUserLocation.Add(new AccessUserLocation()
                    {
                        UserUnioId          = unioId,
                        AccessLocatonAreaId = areaIds.First()
                    });
                }
                else
                {
                    accessLog.AccessLocatonAreaId = areaIds.First();
                }
                db.SaveChanges();
            }

            var accessUserHistory = GetAccessedAdvId(unioId);

            var statusId = SystemStaticData.LookUpAdvStatusId(SystemStaticData.AdvDictionary.Normal);
            var nquery   = from ai in db.AdvInfo
                           join aa in db.AdvInfoArea on ai.AdvId equals aa.AdvId
                           where areaIds.Contains(aa.AreaId) && ai.Status == statusId && !accessUserHistory.Contains(ai.AdvId)
                           select new WxReturnAdvInfo()
            {
                Guid       = Guid.NewGuid(),
                AdvId      = ai.AdvId,
                ContentUrl = ai.ContentUrl
            };

            var returnObj   = nquery.OrderBy(p => p.Guid).FirstOrDefault();
            var allGetCount = nquery.Count();

            if (returnObj == null)
            {
                saveResult.Status      = (int)DataSaveStatus.DataValidationError;
                saveResult.Description = "本区已领完,请到其他区域抢更多红包";
            }
            else
            {
                returnObj.TotalCount   = db.AdvHistory.Where(p => p.AdvId == returnObj.AdvId).Count();
                returnObj.CanGetCount  = (allGetCount - 1 <= 0?0:allGetCount - 1);
                saveResult.Status      = (int)DataSaveStatus.Success;
                saveResult.Description = "为你搜索到一个红包";
                saveResult.Data        = returnObj;
            }

            return(new JavaScriptSerializer().Serialize(saveResult));
        }
Example #4
0
        public string CreatePreAdv(string advTitle, string areaId, string rewardStr, int count)
        {
            WorkspaceDataSaveResult saveResult = new WorkspaceDataSaveResult();

            var rewardIds = rewardStr.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
            var allReward = db.RewardType.Where(p => rewardIds.Contains(p.RewardTypeId.ToString())).OrderBy(p => p.RewardValue).ToList();
            //calc totalcost
            var     averageCount = count / rewardIds.Length;
            var     levValue     = count % rewardIds.Length;
            decimal totalValue   = 0;

            for (int i = 0; i < allReward.Count; i++)
            {
                if (i < allReward.Count - 1)
                {
                    totalValue += averageCount * allReward[i].RewardValue;
                }
                else
                {
                    totalValue += (averageCount + levValue) * allReward[i].RewardValue;
                }
            }
            var incomeStatusId = SystemStaticData.LookUpSystemIncomeStatusId(SystemStaticData.SystemIncomeDictionary.Normal);
            var inCo           = db.SystemConfig.FirstOrDefault(p => p.Status == incomeStatusId);

            totalValue += count * inCo.SystemIncomeValue;
            //检测账户余额是否够
            var userAccount = db.UserAccount.First(p => p.UserId == this.CurrentLoginUserId);

            if (userAccount.AccountBalance < totalValue)
            {
                saveResult.Status      = (int)DataSaveStatus.DataValidationError;
                saveResult.Description = "账户余额不足,请联系管理员充值";
                return(new JavaScriptSerializer().Serialize(saveResult));
            }
            //sava adv
            AdvInfo adv = new AdvInfo();

            adv.AdvTitle = advTitle;
            //adv.AreaId = areaId;
            adv.TotalCount    = count;
            adv.TotalCash     = totalValue;
            adv.RemainderCash = totalValue;
            adv.CreateAt      = DateTime.Now;
            adv.UserId        = this.CurrentLoginUserId;
            adv.Status        = SystemStaticData.LookUpAdvStatusId(SystemStaticData.AdvDictionary.Prepare);
            db.AdvInfo.Add(adv);
            db.SaveChanges();
            //save advArea
            var publishToAreaIds = areaId.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);

            foreach (var aId in publishToAreaIds)
            {
                AdvInfoArea advInfoArea = new AdvInfoArea();
                advInfoArea.AdvId  = adv.AdvId;
                advInfoArea.AreaId = int.Parse(aId);
                db.AdvInfoArea.Add(advInfoArea);
            }

            //save adv reward
            foreach (var id in rewardIds)
            {
                AdvReward reward = new AdvReward();
                reward.RewardTypeId = int.Parse(id);
                reward.AdvId        = adv.AdvId;
                db.AdvReward.Add(reward);
            }
            //扣款
            userAccount.AccountBalance -= totalValue;
            //记录账户日志
            AccountHistory accountHistory = new AccountHistory();

            accountHistory.CreateAt    = DateTime.Now;
            accountHistory.AccountId   = userAccount.AccountId;
            accountHistory.ChangeValue = -totalValue;
            accountHistory.ComeFrom    = "发布广告";
            db.AccountHistory.Add(accountHistory);
            db.SaveChanges();
            saveResult.Status      = (int)DataSaveStatus.Success;
            saveResult.Description = "申请成功,请联系管理员进行广告内容制作";
            return(new JavaScriptSerializer().Serialize(saveResult));
        }