Esempio n. 1
0
 public ActionResult ResultEdit(Guid pluginId, Guid id)
 {
     if (StringHelper.IsZeroGuid(pluginId))
     {
         return(Json(new { message = "参数有误,请检查!" }));
     }
     else
     {
         Plugin plugin = _pluginService.GetById(pluginId);
         if (plugin == null)
         {
             return(Json(new { message = "对不起,不存在该插件或未开通,请检查!" }));
         }
         else
         {
             ScorePluginResult pluginResult = _scorePluginResultService.GetById(id);
             if (pluginResult == null)
             {
                 return(Json(new { message = "对不起,不存在该中奖项,请检查!" }));
             }
             TryUpdateModel <ScorePluginResult>(pluginResult);
             _scorePluginResultService.Update(pluginResult);
             return(Json(new { isOK = false, isVertfy = true, message = "已发放" }));
         }
     }
 }
Esempio n. 2
0
        public ActionResult StoreItemExchange(Guid baseId, Guid itemId, string t)
        {
            try
            {
                if (baseId == Guid.Empty)
                {
                    return(Json(new { isOK = false, error_code = "ERR_ArgNotExist" }));
                }

                if (MpUserID == Guid.Empty)
                {
                    string rawUrl = "http://wx.ssrcb.com/ScoreSys/StoreItem?id=" + WebHelper.GetGuid("baseId", Guid.Empty);
                    if (string.IsNullOrEmpty(RQuery["openid"]))
                    {
                        return(Json(new { isOK = false, isLogin = true, error_code = "ERR_NotLogin", message = string.Format("https://open.weixin.qq.com/connect/oauth2/authorize?appid={0}&redirect_uri=http://wx.ssrcb.com/mpuser/autologin?refUrl={1}&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect", MpCenterCache.AppID, rawUrl) }));
                    }
                }

                ScoreStoreItem scoreStoreItem = _scoreStoreItemServiceService.GetUnique("from ScoreStoreItem where Id='" + itemId.ToString() + "'");
                if (scoreStoreItem == null)
                {
                    return(Json(new { isOK = false, error_code = "ERR_StoreItemNotExist" }));
                }
                if (scoreStoreItem.LeftCount <= 0)
                {
                    return(Json(new { isOK = false, error_code = "ERR_StoreItemScoreRunOut" }));
                }
                ScoreUser scoreUser = _scoreUserService.GetUnique("from ScoreUser where MpUserId = '" + MpUserID + "'");
                if (scoreUser == null)
                {
                    return(Json(new { isOK = false, error_code = "ERR_StoreItemUserNotExist" }));
                }
                if (scoreUser.CurrentScore < scoreStoreItem.NeedPoint)
                {
                    return(Json(new { isOK = false, error_code = "ERR_StoreItemScoreNotEnough" }));
                }
                string Name          = Request.Form["Name"];
                string Phone         = Request.Form["Phone"];
                string Address       = Request.Form["Address"];
                string ResultID      = Request.Form["resultId"];
                string isDefaultAddr = Request.Form["DefaultAddr"];
                if (isDefaultAddr == "true")
                {
                    scoreUser.RecvName    = Name;
                    scoreUser.RecvPhone   = Phone;
                    scoreUser.RecvAddress = Address;
                    _scoreUserService.Update(scoreUser);
                }
                ScorePluginResult scorePluginResult = null;
                if (ResultID == "0")
                {
                    scorePluginResult             = new ScorePluginResult();
                    scorePluginResult.MobilePhone = Phone;
                    scorePluginResult.Address     = Address;
                    scorePluginResult.Name        = Name;
                    scorePluginResult.Type        = 2;
                    scorePluginResult.CreateDate  = DateTime.Now;
                    scorePluginResult.MpUserId    = this.MpUserID;
                    scorePluginResult.PluginId    = baseId;
                    scorePluginResult.Summary     = "申请兑奖【" + scoreStoreItem.PluginName + "】" + scoreStoreItem.AliasName;
                    scorePluginResult.Value       = "" + scoreStoreItem.PluginName + "++" + scoreStoreItem.AliasName;
                    _scorePluginResultService.Insert(scorePluginResult);

                    ScoreConsumeInfo scoreConSumeInfo = new ScoreConsumeInfo();
                    scoreConSumeInfo.ConsumeDateTime = scoreConSumeInfo.CreateDate = DateTime.Now;
                    scoreConSumeInfo.MpUserId        = this.MpUserID;
                    scoreConSumeInfo.ConsumeType     = (int)(ScoreConsume.Exchange);
                    scoreConSumeInfo.ConsumePoints   = -Convert.ToInt32(scoreStoreItem.NeedPoint);
                    scoreConSumeInfo.Summary         = "兑换消耗了" + Convert.ToInt32(scoreStoreItem.NeedPoint) + "积分";
                    _scoreConsumeInfoService.Insert(scoreConSumeInfo);

                    scoreUser.CurrentScore -= scoreStoreItem.NeedPoint;
                    _scoreUserService.Update(scoreUser);

                    return(Json(new { isOK = true, error_code = "ERR_RequireSuccess" }));
                }
                else
                {
                    scorePluginResult = _scorePluginResultService.GetUnique("from ScorePluginResult where MpUserId='" + this.MpUserID.ToString() + "' and Id='" + ResultID.ToString() + "'");
                    if (scorePluginResult == null)
                    {
                        return(Json(new { isOK = false, error_code = "ERR_ScorePluginResultNotExist" }));
                    }
                    if (scorePluginResult.IsUse == 1)
                    {
                        return(Json(new { isOK = false, error_code = "ERR_AlreadySend" }));//对不起,您已经领取完奖!
                    }
                    scorePluginResult.MobilePhone = Phone;
                    scorePluginResult.Address     = Address;
                    scorePluginResult.Name        = Name;
                    _scorePluginResultService.Update(scorePluginResult);
                    return(Json(new { isOK = true, error_code = "ERR_ModifySuccess" }));
                }
            }
            catch (Exception ex)
            {
                throw new OceanException(ex.Message, ex);
            }
        }
Esempio n. 3
0
        public ActionResult PluginsLottery(Guid Id, string t)
        {
            try
            {
                if (Id == Guid.Empty)
                {
                    Log4NetImpl.Write("ScoreSYS-PluginLottery:ID is NULL");
                    return(Json(new { isOK = false, error_code = "ERR_ArgNotExist" })); //message = "参数有误,请检查!" });
                }

                if (MpUserID == Guid.Empty)
                {
                    string rawUrl = "http://wx.ssrcb.com/ScoreSys/PluginLottery?id=" + WebHelper.GetGuid("Id", Guid.Empty);
                    if (string.IsNullOrEmpty(RQuery["openid"]))
                    {
                        Log4NetImpl.Write("ScoreSYS-PluginLottery:Redirect");
                        return(Json(new { isOK = false, isLogin = true, error_code = "ERR_NotLogin", message = string.Format("https://open.weixin.qq.com/connect/oauth2/authorize?appid={0}&redirect_uri=http://wx.ssrcb.com/mpuser/autologin?refUrl={1}&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect", MpCenterCache.AppID, rawUrl) }));
                    }
                }

                string Score_Plugin_Title        = Request.Form["Score_Plugin_Title"];
                string Score_Plugin_StartDate    = Request.Form["Score_Plugin_StartDate"];
                string Score_Plugin_EndDate      = Request.Form["Score_Plugin_EndDate"];
                string Score_Plugin_UsePoint     = Request.Form["Score_Plugin_UsePoint"];
                string Score_Plugin_FailsTimes   = Request.Form["Score_Plugin_FailsTimes"];
                string Score_Plugin_FailsAddOdds = Request.Form["Score_Plugin_FailsAddOdds"];
                if (Score_Plugin_Title == "")
                {
                    return(Json(new { isOK = false, error_code = "ERR_PluginNotExits" }));
                }
                if (!string.IsNullOrEmpty(Score_Plugin_StartDate))
                {
                    DateTime startDate = TypeConverter.StrToDateTime(Score_Plugin_StartDate);
                    if (startDate > DateTime.Now)
                    {
                        return(Json(new { isOK = false, error_code = "ERR_PluginNotStart" }));
                    }
                    else
                    {
                        if (!string.IsNullOrEmpty(Score_Plugin_EndDate))
                        {
                            DateTime endDate = TypeConverter.StrToDateTime(Score_Plugin_EndDate);
                            if (endDate < DateTime.Now)
                            {
                                return(Json(new { isOK = false, error_code = "ERR_PluginIsEnd" }));// message = "对不起,抽奖已经结束!" });
                            }
                        }
                    }
                }

                IList <ScoreStoreItem> scoreStoreItems = _scoreStoreItemServiceService.GetList("from ScoreStoreItem where BaseId = '" + Id.ToString() + "'");
                scoreStoreItems.OrderBy(storeItems => storeItems.PluginName);
                ScoreUser scoreUser = _scoreUserService.GetUnique("from ScoreUser where (MpUserId ='" + this.MpUserID.ToString() + "')");

                if (scoreUser == null)
                {
                    return(Json(new { isOK = false, isVertfy = true, error_code = "ERR_UserNotVerify" }));
                }
                if (scoreUser.CurrentScore < ViewData.GetInt("Score_Plugin_UsePoint"))
                {
                    return(Json(new { isOK = false, error_code = "ERR_UserUseOutChance" }));
                }

                int prizeItemCount = scoreStoreItems.Count;// TypeConverter.StrToInt(ViewBag.Cst_Plugin_PrizeCount, 12);

                IList <PrizeGift> prizeGift      = new List <PrizeGift>(prizeItemCount);
                IList <Double>    prizeItems     = new List <Double>(prizeItemCount);
                IList <string>    prizeItemsName = new List <string>(prizeItemCount);
                IList <int>       prizeAngle     = new List <int>(prizeItemCount);
                prizeItemsName.Add("一");
                prizeItemsName.Add("二");
                prizeItemsName.Add("三");
                prizeItemsName.Add("四");
                prizeItemsName.Add("五");
                prizeItemsName.Add("六");
                prizeItemsName.Add("七");
                prizeItemsName.Add("八");
                prizeItemsName.Add("九");
                prizeItemsName.Add("十");
                prizeItemsName.Add("十一");
                prizeItemsName.Add("十二");
                for (int i = 0; i < prizeItemCount; i++)
                {
                    ScoreStoreItem storeItem = scoreStoreItems[i];
                    PrizeGift      gift      = new PrizeGift();
                    gift.ID                = i;
                    gift.Name              = storeItem.PluginName;
                    gift.Alias_Name        = storeItem.AliasName;
                    gift.Odds              = Convert.ToDouble(storeItem.PrizePercent) / 100;
                    gift.Pic               = storeItem.ItemPic;
                    gift.Quantity          = storeItem.TotalCount;
                    gift.Leavings_Quantity = storeItem.LeftCount;

                    gift.Angle = Convert.ToInt32(storeItem.PrizeAngle);
                    prizeAngle.Add(gift.Angle);
                    gift.Prize_Name = prizeItemsName[i] + "等奖";
                    if (!string.IsNullOrEmpty(gift.Alias_Name))
                    {
                        gift.Prize_Name = gift.Alias_Name;
                    }
                    gift.Has_Gift = 1;// ViewData.GetInt("Cst_Plugin_Items_Has_Gift" + i.ToString());
                    //gift.Users = ViewData.GetString("Cst_Plugin_Items_SiteUsers" + i.ToString());
                    //gift.UsersName = ViewData.GetString("Cst_Plugin_Items_SiteUsersName" + i.ToString());
                    prizeItems.Add(gift.Odds);
                    prizeGift.Add(gift);
                }

                prizeItems.OrderBy(d => d);


                //verifyCodeDetail.LeaveCount = verifyCodeDetail.LeaveCount - 1;
                //verifyCodeDetail.UseDate = DateTime.Now;
                //_pluginSceneVerifyCodeDetailService.Update(verifyCodeDetail);

                int count    = _scorePluginResultService.GetCount("from ScorePluginResult where pluginId='" + Id.ToString() + "' and MpUserId='" + this.MpUserID.ToString() + "'");
                int tryCount = _scoreConsumeInfoService.GetCount(" from ScoreConsumeInfo where ConsumeType = " + (int)ScoreConsume.Plugins + "");
                if (count == 0 &&  tryCount > Convert.ToInt32(Score_Plugin_FailsTimes))
                {
                    PrizeGift _lastGift = prizeGift.Last();

                    double finalOdds = _lastGift.Odds * (1 + Convert.ToInt32(Score_Plugin_FailsAddOdds));
                    _lastGift.Odds = finalOdds;
                    prizeItems.RemoveAt(prizeItems.Count - 1);
                    prizeItems.Add(finalOdds);
                }

                int result = -1;

                scoreUser.CurrentScore       = scoreUser.CurrentScore - Convert.ToInt32(Score_Plugin_UsePoint);// ViewData.GetInt("Score_Plugin_UsePoint");
                scoreUser.LastUpdateDateTime = DateTime.Now;
                _scoreUserService.Update(scoreUser);

                #region 更新积分消耗纪录
                ScoreConsumeInfo scoreConSumeInfo = new ScoreConsumeInfo();
                scoreConSumeInfo.ConsumeDateTime = scoreConSumeInfo.CreateDate = DateTime.Now;
                scoreConSumeInfo.MpUserId        = this.MpUserID;
                scoreConSumeInfo.ConsumeType     = (int)(ScoreConsume.Plugins);
                scoreConSumeInfo.ConsumePoints   = -Convert.ToInt32(Score_Plugin_UsePoint);
                scoreConSumeInfo.Summary         = "抽奖消耗了" + Convert.ToInt32(Score_Plugin_UsePoint) + "积分";
                _scoreConsumeInfoService.Insert(scoreConSumeInfo);
                #endregion
                result = LotteryUtils.Lottery(prizeItems, prizeGift, prizeItemCount, this.MpUserID, Id);


                if (result == -1)
                {
                    return(Json(new { isOK = true, error_code = "ERR_RunOutOfGift" }));//Json(new PrizeGift() { ID = -1, Name = "未中奖", Odds = 0.00d, Pic = "", Quantity = 100000, Angle = 240, Prize_Name = "继续加油" });
                }
                else if (result == -2)
                {
                    return(Json(new { isOK = true, error_code = "ERR_RunOutOfGift" }));// Json(new PrizeGift() { ID = -2, Name = "未中奖", Odds = 0.00d, Pic = "", Quantity = 100000, Angle = 180, Prize_Name = "继续加油" });
                }
                else if (result == -3)
                {
                    return(Json(new { isOK = true, error_code = "ERR_RunOutOfGift" }));// Json(new PrizeGift() { ID = -2, Name = "未中奖", Odds = 0.00d, Pic = "", Quantity = 100000, Angle = 180, Prize_Name = "继续加油" });
                }
                else
                {
                    PrizeGift      hasPrizeGift   = prizeGift[result];
                    ScoreStoreItem scoreStoreItem = scoreStoreItems[result];
                    //ScoreStoreItem scoreStoreItem = _scoreStoreItemServiceService.GetUnique("from ScoreStoreItem where (Id ='" + this.MpUserID.ToString() + "')");
                    //score
                    hasPrizeGift.Alias_Name = hasPrizeGift.Alias_Name ?? "";
                    if (scoreStoreItem.LeftCount > 0)
                    {
                        //中奖业务处理
                        ScorePluginResult pluginSceneResult = new ScorePluginResult();
                        pluginSceneResult.Address     = "";
                        pluginSceneResult.CreateDate  = DateTime.Now;
                        pluginSceneResult.Type        = 1;
                        pluginSceneResult.IsUse       = 0;
                        pluginSceneResult.MobilePhone = "";
                        pluginSceneResult.Name        = "";
                        pluginSceneResult.Phone       = "";
                        pluginSceneResult.PluginId    = Id;
                        pluginSceneResult.MpUserId    = this.MpUserID;
                        pluginSceneResult.SN          = "";
                        pluginSceneResult.UserName    = (string.IsNullOrEmpty(this.Name) ? this.NickName : this.Name);

                        if (this.MpUserArr != null)
                        {
                            pluginSceneResult.Summary = "恭喜用户[" + (string.IsNullOrEmpty(this.Name) ? this.NickName : this.Name) + "]获得" + hasPrizeGift.Prize_Name + "[" + hasPrizeGift.Name + "]";
                        }
                        else
                        {
                            pluginSceneResult.Summary = "恭喜匿名用户获得" + hasPrizeGift.Prize_Name + "[" + hasPrizeGift.Name + "]";
                        }
                        //pluginSceneResult.Value = "<?xml version=\"1.0\" encoding=\"utf-8\"?><PluginSubmit><Cst_Plugin_ItemIndex>" + result.ToString() + "</Cst_Plugin_ItemIndex><Cst_Plugin_PrizeLevel>" + hasPrizeGift.Prize_Name + "</Cst_Plugin_PrizeLevel><Cst_Plugin_PrizeName>" + hasPrizeGift.Name + "</Cst_Plugin_PrizeName></PluginSubmit>";
                        pluginSceneResult.Value = hasPrizeGift.Prize_Name + "++" + hasPrizeGift.Name;

                        #region 更新商城数量
                        scoreStoreItem.LeftCount -= 1;
                        _scoreStoreItemServiceService.Update(scoreStoreItem);
                        #endregion
                        #region 更新中奖纪录
                        _scorePluginResultService.Insert(pluginSceneResult);
                        #endregion
                        #region 更新虚拟积分纪录
                        if (scoreStoreItem.VirtualGift > 0)
                        {
                            scoreUser.CurrentScore += scoreStoreItem.VirtualGift;
                            _scoreUserService.Update(scoreUser);


                            ScoreConsumeInfo scoreConSumeInfo2 = new ScoreConsumeInfo();
                            scoreConSumeInfo2.ConsumeDateTime = scoreConSumeInfo.CreateDate = DateTime.Now;
                            scoreConSumeInfo2.MpUserId        = this.MpUserID;
                            scoreConSumeInfo2.ConsumeType     = (int)(ScoreConsume.Plugins);
                            scoreConSumeInfo2.ConsumePoints   = scoreStoreItem.VirtualGift;
                            scoreConSumeInfo2.Summary         = "抽奖中了" + scoreStoreItem.VirtualGift + "积分";
                            _scoreConsumeInfoService.Insert(scoreConSumeInfo2);
                        }
                        #endregion
                        hasPrizeGift.ResultID = pluginSceneResult.Id;
                    }

                    return(Content(JsonConvert.SerializeObject(hasPrizeGift), "text/javascript"));
                }
            }
            catch (Exception ex)
            {
                throw new OceanException(ex.Message, ex);
            }
        }