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)); }
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)); }
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)); }
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)); }