Пример #1
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));
        }
Пример #2
0
        public string GetAreaByParentId(int parentId)
        {
            int areaStatusId = SystemStaticData.LookUpSystemIncomeStatusId(SystemStaticData.SystemIncomeDictionary.Normal);
            var result       = db.Area.Where(p => p.ParentAreaId == parentId && p.Status == areaStatusId);

            return(new JavaScriptSerializer().Serialize(result));
        }
Пример #3
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));
        }
Пример #4
0
        public string GetIncome()
        {
            var incomeStatusId = SystemStaticData.LookUpSystemIncomeStatusId(SystemStaticData.SystemIncomeDictionary.Normal);
            var inCo           = db.SystemConfig.FirstOrDefault(p => p.Status == incomeStatusId);

            return(new JavaScriptSerializer().Serialize(inCo));
        }
Пример #5
0
        private IList <AdvDisplayModel> GetAdvByUserId(int userId)
        {
            int[] staticStatus =
            {
                SystemStaticData.LookUpAdvStatusId(SystemStaticData.AdvDictionary.Pause),
                SystemStaticData.LookUpAdvStatusId(SystemStaticData.AdvDictionary.Normal),
                SystemStaticData.LookUpAdvStatusId(SystemStaticData.AdvDictionary.Stop)
            };
            var allAdv = (from adv in db.AdvInfo
                          join aa in db.AdvInfoArea on adv.AdvId equals aa.AdvId
                          join a in db.Area on aa.AreaId equals a.AreaId
                          join u in db.User on adv.UserId equals u.UserId
                          where adv.UserId == userId && staticStatus.Contains(adv.Status)
                          select new AdvDisplayModel
            {
                AdvId = adv.AdvId,
                AreaId = aa.AreaId,
                AreaFullName = a.AreaName,
                AdvTitle = adv.AdvTitle,
                CostFeeUrl = adv.CostFeeUrl,
                TotalCount = adv.TotalCount,
                TotalCash = adv.TotalCash,
                CreateAt = adv.CreateAt,
                Status = adv.Status,
                PublishUserName = u.AccountName,
                RemainderCash = adv.RemainderCash
            }).ToList();

            return(allAdv);
        }
Пример #6
0
        public ActionResult RechargeAccount()
        {
            var rechargeStatusId       = SystemStaticData.LookUpRechargeRewardStatusId(SystemStaticData.RechargeRewardDictionary.Normal);
            RechargeAccountModel model = new RechargeAccountModel();

            model.RechargeRewards = db.RechargeReward.Where(p => p.Status == rechargeStatusId).ToList();
            return(View(model));
        }
Пример #7
0
        public ActionResult AreaIndex()
        {
            int            areaStatusId = SystemStaticData.LookUpSystemIncomeStatusId(SystemStaticData.SystemIncomeDictionary.Normal);
            AreaIndexModel model        = new AreaIndexModel();

            model.AllAreaList   = GetDisplayList(db.Area.Where(p => p.Status == areaStatusId).OrderBy(p => p.ParentAreaId).ToList());
            model.AreaPointList = GetAreaPointList(areaStatusId);
            return(View(model));
        }
Пример #8
0
        public ActionResult AdminDeleteAdv(int advId)
        {
            var statusId = SystemStaticData.LookUpAdvStatusId(SystemStaticData.AdvDictionary.Fobidden);
            var adv      = db.AdvInfo.First(p => p.AdvId == advId);

            adv.Status = statusId;
            //强制下架的广告不退钱

            db.SaveChanges();
            return(RedirectToAction("AdvList", "Adv"));
        }
Пример #9
0
        public ActionResult RechargeAccount(RechargeAccountModel model)
        {
            //find account
            var userAccount =
                db.User.FirstOrDefault(
                    p => p.AccountName == model.RechargeAccount || p.MobilePhone == model.RechargeAccount);

            if (userAccount == null)
            {
                ModelState.AddModelError("RechargeAccount", "帐户不存在,请核对帐户");
                return(View(model));
            }

            if (ModelState.IsValid)
            {
                var rechargeStatusId = SystemStaticData.LookUpRechargeRewardStatusId(SystemStaticData.RechargeRewardDictionary.Normal);
                DataAccessLayer.RechargeHistory history = new DataAccessLayer.RechargeHistory();
                history.CreateAt     = DateTime.Now;
                history.CreateUserId = this.CurrentLoginUserId;
                history.Details      = model.Remark;
                history.RechargeCash = model.Cash;
                var reward = db.RechargeReward.OrderByDescending(p => p.TargetValue)
                             .FirstOrDefault(m => m.TargetValue <= model.Cash && m.Status == rechargeStatusId);
                history.RechargeRewardTypeId = reward == null ? 0 : reward.RechargeRewardId;
                history.UserId = userAccount.UserId;
                //账户余额增加
                UserAccount account = db.UserAccount.First(p => p.UserId == userAccount.UserId);
                //记录账户历史记录
                AccountHistory accountHistory = new AccountHistory();
                accountHistory.CreateAt    = DateTime.Now;
                accountHistory.AccountId   = account.AccountId;
                accountHistory.ChangeValue = model.Cash;
                accountHistory.ComeFrom    = "账户充值";
                account.AccountBalance    += model.Cash;
                if (reward != null)
                {
                    account.AccountBalance     += reward.RewardValue;
                    accountHistory.ChangeValue += reward.RewardValue;
                    accountHistory.Description  = "账户充值获得奖励 " + reward.RewardValue;
                }
                db.RechargeHistory.Add(history);
                db.AccountHistory.Add(accountHistory);
                db.SaveChanges();
                if (reward != null)
                {
                    SystemIncome("充值奖励", -reward.RewardValue, history.RechargeHistoryId, "用户" + userAccount.AccountName + "充值 " + model.Cash + " 元,获得系统奖励 " + reward.RewardValue);

                    db.SaveChanges();
                }
                return(Content("<script>alert('充值成功');window.location.href=window.location.href</script>"));
            }
            return(View(model));
        }
Пример #10
0
        public ActionResult DeleteRewardType(int rewardTypeId)
        {
            var re = db.RewardType.FirstOrDefault(p => p.RewardTypeId == rewardTypeId);

            if (re == null)
            {
                return(RedirectToAction("Index", "SysConfig"));
            }
            re.Status = SystemStaticData.LookUpAdvRewardStatusId(SystemStaticData.AdvRewardDictionary.Stop);
            db.SaveChanges();
            return(RedirectToAction("Index", "SysConfig"));
        }
Пример #11
0
        public ActionResult EnableUserAccount(int userId)
        {
            var user = db.User.FirstOrDefault(p => p.UserId == userId);

            if (user == null)
            {
                return(RedirectToAction("UserList", "User"));
            }
            user.Status = SystemStaticData.LookUpUserStatusId(SystemStaticData.UserDictionary.Normal);
            db.SaveChanges();
            return(RedirectToAction("UserList", "User"));
        }
Пример #12
0
        public ActionResult Index()
        {
            RewardConfigModel rewardConfig = new RewardConfigModel();
            var statusId         = SystemStaticData.LookUpAdvRewardStatusId(SystemStaticData.AdvRewardDictionary.Normal);
            var incomeStatusId   = SystemStaticData.LookUpSystemIncomeStatusId(SystemStaticData.SystemIncomeDictionary.Normal);
            var rechargeStatusId = SystemStaticData.LookUpRechargeRewardStatusId(SystemStaticData.RechargeRewardDictionary.Normal);

            rewardConfig.IncomeModel     = db.SystemConfig.FirstOrDefault(p => p.Status == incomeStatusId);
            rewardConfig.RechargeRewards = db.RechargeReward.Where(p => p.Status == rechargeStatusId).ToList();
            rewardConfig.Rewards         = db.RewardType.Where(p => p.Status == statusId).ToList();
            return(View(rewardConfig));
        }
Пример #13
0
        public ActionResult DeleteAreaPosition(int areaPositonId)
        {
            var re = db.AreaPosition.FirstOrDefault(p => p.PositionId == areaPositonId);

            if (re == null)
            {
                return(RedirectToAction("AreaIndex", "SysConfig"));
            }
            re.Status = SystemStaticData.LookUpSystemIncomeStatusId(SystemStaticData.SystemIncomeDictionary.Stop);
            db.SaveChanges();
            return(RedirectToAction("AreaIndex", "SysConfig"));
        }
Пример #14
0
        public ActionResult UserPauseAdv(int advId)
        {
            var statusId = SystemStaticData.LookUpAdvStatusId(SystemStaticData.AdvDictionary.Pause);
            var adv      = db.AdvInfo.First(p => p.AdvId == advId);

            adv.Status = statusId;
            //退回余额
            var userAccount = db.UserAccount.First(p => p.UserId == adv.UserId);

            LogAccountHistory(userAccount.AccountId, adv.RemainderCash, "用户终止广告,退回余额");
            db.SaveChanges();
            return(RedirectToAction("UAdvList", "Adv"));
        }
Пример #15
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"));
        }
Пример #16
0
        public string GetRewardList(string existReward)
        {
            string[]      existsObj = existReward.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
            List <string> existsId  = new List <string>();

            foreach (var obj in existsObj)
            {
                var items = obj.Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries);
                existsId.Add(items[0]);
            }
            var statusId = SystemStaticData.LookUpAdvRewardStatusId(SystemStaticData.AdvRewardDictionary.Normal);
            var result   = db.RewardType.Where(p => p.Status == statusId && !existsId.Contains(p.RewardTypeId.ToString())).OrderBy(p => p.RewardValue).ToList();

            return(new JavaScriptSerializer().Serialize(result));
        }
Пример #17
0
        public ActionResult SaveSystemIncome(SystemConfig incomeModel)
        {
            if (incomeModel.ConfigId > 0)
            {
                incomeModel.Status = SystemStaticData.LookUpSystemIncomeStatusId(SystemStaticData.SystemIncomeDictionary.Stop);
                db.SystemConfig.Attach(incomeModel);
                db.Entry(incomeModel).State = EntityState.Modified;
            }
            var income = new SystemConfig();

            income.CreateAt          = DateTime.Now;
            income.Status            = SystemStaticData.LookUpSystemIncomeStatusId(SystemStaticData.SystemIncomeDictionary.Normal);
            income.SystemIncomeValue = incomeModel.SystemIncomeValue;
            db.SystemConfig.Add(income);
            db.SaveChanges();
            return(RedirectToAction("Index", "SysConfig"));
        }
Пример #18
0
 public ActionResult Create(DataAccessLayer.User user)
 {
     if (ModelState.IsValid)
     {
         user.CreateAt = DateTime.Now;
         user.IsAdmin  = false;
         user.Password = SecurityUtility.PasswordHash(user.Password);
         user.Status   = SystemStaticData.LookUpUserStatusId(SystemStaticData.UserDictionary.Normal);
         db.User.Add(user);
         db.SaveChanges();
         var account = new UserAccount {
             UserId = user.UserId
         };
         db.UserAccount.Add(account);
         db.SaveChanges();
     }
     return(RedirectToAction("UserList", "User"));
 }
Пример #19
0
 public ActionResult SignIn(SignInModel signIn)
 {
     if (ModelState.IsValid)
     {
         var user = uService.GetUserByUserName(signIn.UserName);
         if (user == null)
         {
             ModelState.AddModelError("UserName", "不存在该用户");
         }
         else
         {
             if (user.Status != SystemStaticData.LookUpUserStatusId(SystemStaticData.UserDictionary.Normal))
             {
                 ModelState.AddModelError("UserName", "该用户以封停");
             }
             else if (!SecurityUtility.PasswordHash(signIn.Password).Equals(user.Password))
             {
                 ModelState.AddModelError("Password", "用户名或者密码不正确");
             }
             else
             {
                 user.LastLoginIn = DateTime.Now;
                 uService.SaveUserSignInLog(user, Request.UserHostAddress);
                 //获取用户账户余额
                 var userAccount = db.UserAccount.First(p => p.UserId == user.UserId);
                 Session["Account"]  = userAccount.AccountBalance;
                 Session["UserId"]   = user.UserId;
                 Session["UserName"] = user.AccountName;
                 if (user.IsAdmin)
                 {
                     Session["Role"] = (int)UserRole.Admin;
                     return(RedirectToAction("UserList", "User"));
                 }
                 else
                 {
                     Session["Role"] = (int)UserRole.NormalUser;
                     return(RedirectToAction("UAdvList", "Adv"));
                 }
             }
         }
     }
     return(View());
 }
Пример #20
0
 public ActionResult CreateRechargeReward(RechargeReward rewardType)
 {
     if (ModelState.IsValid)
     {
         //判断奖励条件是否已经存在
         var rechargeStatusId = SystemStaticData.LookUpRechargeRewardStatusId(SystemStaticData.RechargeRewardDictionary.Normal);
         var existReward      =
             db.RechargeReward.FirstOrDefault(
                 p => p.TargetValue == rewardType.TargetValue && p.Status == rechargeStatusId);
         if (existReward != null)
         {
             ModelState.AddModelError("TargetValue", "该奖励规则已经存在");
             return(View(rewardType));
         }
         rewardType.CreateAt = DateTime.Now;
         rewardType.Status   = SystemStaticData.LookUpRechargeRewardStatusId(SystemStaticData.RechargeRewardDictionary.Normal);
         db.RechargeReward.Add(rewardType);
         db.SaveChanges();
     }
     return(RedirectToAction("Index", "SysConfig"));
 }
Пример #21
0
 public ActionResult CreateReward(RewardType rewardType)
 {
     if (ModelState.IsValid)
     {
         //判断奖励条件是否已经存在
         var statusId    = SystemStaticData.LookUpAdvRewardStatusId(SystemStaticData.AdvRewardDictionary.Normal);
         var existReward =
             db.RewardType.FirstOrDefault(
                 p => p.RewardValue == rewardType.RewardValue && p.Status == statusId);
         if (existReward != null)
         {
             ModelState.AddModelError("RewardValue", "该红包奖励金额已经存在");
             return(View(rewardType));
         }
         rewardType.Description = rewardType.ShortDescription;
         rewardType.CreateAt    = DateTime.Now;
         rewardType.Status      = SystemStaticData.LookUpAdvRewardStatusId(SystemStaticData.AdvRewardDictionary.Normal);
         db.RewardType.Add(rewardType);
         db.SaveChanges();
     }
     return(RedirectToAction("Index", "SysConfig"));
 }
Пример #22
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));
        }
Пример #23
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));
        }
Пример #24
0
        public ActionResult GetAdvByPager(string iSortCol_0, string sSortDir_0, int iDisplayStart, int iDisplayLength, string sEcho)
        {
            var    sortFiled = iSortCol_0;
            string orderBy   = sSortDir_0;
            var    pageIndex = iDisplayStart;
            var    pageSize  = iDisplayLength;
            //条件
            var name     = Request["key"];
            var starTime = Request["sTime"];
            var endTime  = Request["eTime"];
            IQueryable <AdvInfo> list = db.AdvInfo.Where(p => p.UserId == this.CurrentLoginUserId);

            if (!string.IsNullOrEmpty(name))
            {
                list = list.Where(p => p.AdvTitle.Contains(name.Trim()));
            }
            DateTime sTime;
            DateTime eTime;

            if (!string.IsNullOrEmpty(starTime))
            {
                if (DateTime.TryParse(starTime, out sTime))
                {
                    list = list.Where(p => p.CreateAt > sTime);
                }
            }
            if (!string.IsNullOrEmpty(endTime))
            {
                if (DateTime.TryParse(endTime, out eTime))
                {
                    list = list.Where(p => p.CreateAt < eTime);
                }
            }
            switch (sortFiled)
            {
            case "1":
                list = orderBy.Equals("asc")
                        ? list.OrderBy(b => b.AdvTitle)
                        : list.OrderByDescending(b => b.AdvTitle);
                break;

            case "2":
                list = orderBy.Equals("asc")
                        ? list.OrderBy(b => b.TotalCount)
                        : list.OrderByDescending(b => b.TotalCount);
                break;

            case "3":
                list = orderBy.Equals("asc")
                        ? list.OrderBy(b => b.RemainderCash)
                        : list.OrderByDescending(b => b.RemainderCash);
                break;

            case "4":
                list = orderBy.Equals("asc") ? list.OrderBy(b => b.Status) : list.OrderByDescending(b => b.Status);
                break;

            case "5":
                list = orderBy.Equals("asc")
                        ? list.OrderBy(b => b.CreateAt)
                        : list.OrderByDescending(b => b.CreateAt);
                break;

            default:
                list = orderBy.Equals("asc")
                        ? list.OrderBy(b => b.CreateAt)
                        : list.OrderByDescending(b => b.CreateAt);
                break;
            }
            int totalRecords = list.Count();

            list = list.Skip(pageIndex).Take(pageSize);
            var returnlist =
                list.ToList().Select(
                    p =>
                    new AdvAjaxModel
            {
                AdvId         = p.AdvId,
                AdvTitle      = p.AdvTitle,
                CreateAt      = p.CreateAt.ToString("yyyy-MM-dd"),
                RemainderCash = p.RemainderCash,
                Status        = SystemStaticData.LookUpAdvStatusId(p.Status),
                TotalCash     = p.TotalCash,
                TotalCount    = p.TotalCount
            });
            var eh = Request["sEcho"];

            return(Json(new
            {
                sEcho = eh,
                iTotalRecords = totalRecords,
                iTotalDisplayRecords = totalRecords, //data.Count(),
                aaData = returnlist
            }, JsonRequestBehavior.AllowGet));
        }
Пример #25
0
        public ActionResult Cost(string para)
        {
            var code           = Request.Params["code"];
            var appid          = ConfigurationManager.AppSettings["AppID"];
            var secret         = ConfigurationManager.AppSettings["AppSecret"];
            var accessToken    = OAuthApi.GetAccessToken(appid, secret, code);
            var accessUserInfo = OAuthApi.GetUserInfo(accessToken.access_token, accessToken.openid);
            var securityKey    = ConfigurationManager.AppSettings["Key"];
            var securityIV     = ConfigurationManager.AppSettings["IV"];
            var advId          = int.Parse(SecurityUtility.Decrypt(para, securityKey, securityIV));
            int normalStatusId = SystemStaticData.LookUpAdvStatusId(SystemStaticData.AdvDictionary.Normal);
            var advInfo        = db.AdvInfo.First(p => p.AdvId == advId && p.Status == normalStatusId);
            var advRewardList  = (from ar in db.AdvReward
                                  join rt in db.RewardType on ar.RewardTypeId equals rt.RewardTypeId
                                  where ar.AdvId == advId
                                  orderby rt.RewardValue
                                  select new AdvRewardModel
            {
                AdvId = ar.AdvId,
                AdvRewardUrl = ar.AdvRewardUrl,
                AdvRewardId = ar.AdvRewardId,
                RewardValue = rt.RewardValue
            }).ToList();
            int percentReward = advInfo.TotalCount / advRewardList.Count;
            int lastReward    = advInfo.TotalCount % advRewardList.Count;
            //获取奖励历史
            var advRewardHistory = db.AdvHistory.Where(p => p.AdvId == advId).ToList();
            Dictionary <decimal, int> costReward = new Dictionary <decimal, int>();
            Dictionary <decimal, int> initReward = new Dictionary <decimal, int>();

            for (int i = 0; i < advRewardList.Count; i++)
            {
                costReward.Add(advRewardList[i].RewardValue, advRewardHistory.Where(p => p.AdvRewardId == advRewardList[i].AdvRewardId).Count());
                if (i < advRewardList.Count - 1)
                {
                    initReward.Add(advRewardList[i].RewardValue, percentReward);
                }
                else
                {
                    initReward.Add(advRewardList[i].RewardValue, percentReward + lastReward);
                }
            }
            foreach (var key in initReward.Keys)
            {
                if (costReward[key] == initReward[key])
                {
                    costReward.Remove(key);
                }
            }
            Random  r       = new Random();
            var     index   = r.Next(costReward.Keys.Count);
            var     keyList = costReward.Keys.ToArray();
            decimal finaKey = 0;

            for (int i = 0; i < keyList.Length; i++)
            {
                if (i == index)
                {
                    finaKey = keyList[i];
                    break;
                }
            }
            var returnReward = advRewardList.FirstOrDefault(p => p.RewardValue == finaKey);

            if (returnReward == null)
            {
                return(null);
            }
            else
            {
                var accessUserHistory = GetAccessedAdvId(accessToken.openid);
                if (accessUserHistory.Contains(advInfo.AdvId))
                {
                    return(Redirect("https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx37b646528bc2c1d2&redirect_uri=http://www.mkmoto.com/GetAdv/index&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect"));
                }
                AdvHistory adHistory = new AdvHistory();
                adHistory.AdvId         = advInfo.AdvId;
                adHistory.AdvRewardId   = returnReward.AdvRewardId;
                adHistory.CreateAt      = DateTime.Now;
                adHistory.GetUserUnioId = accessUserInfo.openid;
                //获取地理位置
                var accessArea = db.AccessUserLocation.First(p => p.UserUnioId == accessUserInfo.openid);
                adHistory.GetAreaId = accessArea.AccessLocatonAreaId;
                db.AdvHistory.Add(adHistory);
                //系统收取服务费
                var incomeStatusId = SystemStaticData.LookUpSystemIncomeStatusId(SystemStaticData.SystemIncomeDictionary.Normal);
                var serviceFee     = db.SystemConfig.First(p => p.Status == incomeStatusId);
                SystemIncome("红包服务费", serviceFee.SystemIncomeValue, advInfo.AdvId,
                             "系统成功发放 " + advInfo.AdvTitle + " 红包,获得服务费" + serviceFee.SystemIncomeValue);
                //扣除广告剩余金额
                advInfo.RemainderCash -= (serviceFee.SystemIncomeValue + returnReward.RewardValue);
                //余额为0时广告下架
                if (advInfo.RemainderCash <= 0)
                {
                    advInfo.Status = SystemStaticData.LookUpAdvStatusId(SystemStaticData.AdvDictionary.Stop);
                }
                db.SaveChanges();
                return(Redirect(returnReward.AdvRewardUrl));
            }
        }