public ActionResult UpdateAdv() { var ids = Request.Form["AdvId"]; int advId = int.Parse(ids); var adv = db.AdvInfo.First(p => p.AdvId == advId); if (Request.Form["hidRefuse"] != "1") { foreach (var key in Request.Form.AllKeys) { if (key.Contains("rward|")) { var keyInfo = key.Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries); AdvReward advReward = new AdvReward(); advReward.AdvId = advId; advReward.AdvRewardId = int.Parse(keyInfo[1]); advReward.RewardTypeId = int.Parse(keyInfo[2]); advReward.AdvRewardUrl = Request.Form[key]; db.AdvReward.Attach(advReward); db.Entry(advReward).State = EntityState.Modified; } } adv.Status = SystemStaticData.LookUpAdvStatusId(SystemStaticData.AdvDictionary.Normal); adv.ContentUrl = Request.Form["ContentUrl"]; adv.ModifyAt = DateTime.Now; var securityKey = ConfigurationManager.AppSettings["Key"]; var securityIV = ConfigurationManager.AppSettings["IV"]; var websiteURL = ConfigurationManager.AppSettings["WebSiteURl"]; var baseStr = advId.ToString(); var costFeeURL = string.Format("https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx37b646528bc2c1d2&redirect_uri={0}?para={1}&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect", websiteURL, SecurityUtility.Encrypt(baseStr, securityKey, securityIV)); adv.CostFeeUrl = costFeeURL; } else { //更新adv状态 adv.Status = SystemStaticData.LookUpAdvStatusId(SystemStaticData.AdvDictionary.Refuse); var userAccount = db.UserAccount.First(p => p.UserId == adv.UserId); //退款 userAccount.AccountBalance += adv.TotalCash; //记录账户日志 LogAccountHistory(userAccount.AccountId, adv.TotalCash, "广告审核未通过,退回扣款"); db.UserAccount.Attach(userAccount); db.Entry(userAccount).State = EntityState.Modified; } db.SaveChanges(); return(RedirectToAction("AdvList", "Adv")); }
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)); }