Exemple #1
0
        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"));
        }
Exemple #2
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));
        }