Пример #1
0
        public void ProcessRequest(HttpContext context)
        {
            RequestModel requestModel = new RequestModel();

            try
            {
                requestModel = bllScoreDefine.ConvertRequestToModel <RequestModel>(requestModel);
            }
            catch (Exception ex)
            {
                resp.errcode = (int)APIErrCode.PrimaryKeyIncomplete;
                resp.errmsg  = ex.Message;
                bllScoreDefine.ContextResponse(context, resp);
                return;
            }
            KeyVauleDataInfo ScoreDefineData = bllkeyValueData.GetKeyData("ScoreDefineType", requestModel.score_type, "Common");

            if (ScoreDefineData == null)
            {
                resp.errcode = (int)APIErrCode.OperateFail;
                resp.errmsg  = "规则类型暂不支持";
                bllScoreDefine.ContextResponse(context, resp);
                return;
            }
            ScoreDefineInfo scoreDefineInfo = new ScoreDefineInfo();

            scoreDefineInfo.Score        = requestModel.score;
            scoreDefineInfo.DayLimit     = requestModel.day_limit;
            scoreDefineInfo.Description  = requestModel.description;
            scoreDefineInfo.WebsiteOwner = bllScoreDefine.WebsiteOwner;
            scoreDefineInfo.CreateUserId = currentUserInfo.UserID;
            scoreDefineInfo.IsHide       = requestModel.ishide;
            scoreDefineInfo.InsertTime   = DateTime.Now;
            scoreDefineInfo.OrderNum     = requestModel.order_num;
            scoreDefineInfo.Name         = ScoreDefineData.DataValue;
            scoreDefineInfo.ScoreType    = ScoreDefineData.DataKey;
            if (bllScoreDefine.PutScoreDefine(scoreDefineInfo))
            {
                resp.errcode   = (int)APIErrCode.IsSuccess;
                resp.isSuccess = true;
            }
            else
            {
                resp.errcode = (int)APIErrCode.OperateFail;
                resp.errmsg  = "提交失败";
            }
            bllScoreDefine.ContextResponse(context, resp);
        }
Пример #2
0
        /// <summary>
        /// 添加编辑积分规则
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        private string PutDefine(HttpContext context)
        {
            int    scoreId       = int.Parse(context.Request["score_id"]);
            int    score         = int.Parse(context.Request["score"]);
            int    limit         = int.Parse(context.Request["limit"]);
            int    totalLimit    = int.Parse(context.Request["total_limit"]);
            string summary       = context.Request["summary"];
            string type          = context.Request["type"];
            int    hide          = int.Parse(context.Request["hide"]);
            int    order         = int.Parse(context.Request["order"]);
            string ex1           = context.Request["ex1"];
            string scoreEvent    = context.Request["score_event"];
            string baseRateValue = context.Request["base_rate_value"];
            string baseRateScore = context.Request["base_rate_score"];

            KeyVauleDataInfo scoreDefineData = bllkeyValueData.GetKeyData("ScoreDefineType", type, bllkeyValueData.WebsiteOwner);

            if (scoreDefineData == null)
            {
                scoreDefineData = bllkeyValueData.GetKeyData("ScoreDefineType", type, "Common");
                if (scoreDefineData == null)
                {
                    resp.Status = (int)APIErrCode.OperateFail;
                    resp.Msg    = "规则类型暂不支持";
                    return(Common.JSONHelper.ObjectToJson(resp));
                }
            }
            ScoreDefineInfo scoreDefineInfo = new ScoreDefineInfo();

            scoreDefineInfo.ScoreId      = scoreId;
            scoreDefineInfo.Score        = score;
            scoreDefineInfo.DayLimit     = limit;
            scoreDefineInfo.TotalLimit   = totalLimit;
            scoreDefineInfo.Description  = summary;
            scoreDefineInfo.WebsiteOwner = bllUser.WebsiteOwner;
            scoreDefineInfo.CreateUserId = this.currentUserInfo.UserID;
            scoreDefineInfo.IsHide       = hide;
            scoreDefineInfo.InsertTime   = DateTime.Now;
            scoreDefineInfo.OrderNum     = order;
            scoreDefineInfo.Name         = scoreDefineData.DataValue;
            scoreDefineInfo.ScoreType    = scoreDefineData.DataKey;
            scoreDefineInfo.Ex1          = ex1;
            scoreDefineInfo.ScoreEvent   = scoreEvent;
            if (!string.IsNullOrEmpty(baseRateValue))
            {
                scoreDefineInfo.BaseRateValue = decimal.Parse(baseRateValue);
            }
            if (!string.IsNullOrEmpty(baseRateScore))
            {
                scoreDefineInfo.BaseRateScore = decimal.Parse(baseRateScore);
            }
            if (bllScoreDefine.PutScoreDefine(scoreDefineInfo))
            {
                resp.Status = 1;
                resp.Msg    = "提交成功";
            }
            else
            {
                resp.Status = -1;
                resp.Msg    = "提交失败";
            }
            return(Common.JSONHelper.ObjectToJson(resp));
        }
Пример #3
0
        /// <summary>
        /// 积分事件触发
        /// </summary>
        /// <param name="websiteOwner">站点所有者</param>
        /// <param name="openId">openId</param>
        /// <param name="value">原始值</param>
        /// <param name="scoreEvent">事件名称</param>
        /// <param name="remark">备注</param>
        /// <param name="msg">提示信息</param>
        /// <param name="addScore">增加积分</param>
        /// <param name="showName">显示名称</param>
        /// <returns></returns>
        public bool EventUpdate(string websiteOwner, string openId, decimal value, string scoreEvent, string remark, out string msg, out int addScore, string showName = "", string serialNumber = "")
        {
            int score = 0;//最终添加的积分

            addScore = 0;
            msg      = "";//返回消息
            BLLApiLog       bllApiLog       = new BLLApiLog();
            BLLScoreDefine  bllScoreDefine  = new BLLScoreDefine();
            ScoreDefineInfo scoreDefineInfo = bllScoreDefine.GetScoreDefineInfoByScoreEvent(scoreEvent, WebsiteOwner);

            if (scoreDefineInfo == null)
            {
                msg = "积分规则不存在,请检查";
                return(false);
            }
            if (scoreDefineInfo.IsHide == 1)
            {
                msg = "积分规则已停用";
                return(false);
            }
            UserInfo userInfo = bllUser.GetUserInfoByOpenId(openId);

            if (userInfo == null && (websiteOwner == "dongwu" || websiteOwner == "dongwudev"))
            {
                userInfo = bllUser.CreateNewUser(websiteOwner, openId, showName);
            }
            if (userInfo == null)
            {
                msg = "openid不存在,请检查";
                return(false);
            }
            List <ScoreDefineInfoExt> scoreDefineEx = bllScoreDefine.GetScoreDefineExList(scoreDefineInfo.ScoreId);

            //优先级: 扩展->基本比例-一般
            if (scoreDefineEx != null && scoreDefineEx.Count > 0)
            {
                DateTime dtNow = DateTime.Now;
                var      item  = scoreDefineEx.FirstOrDefault(p => p.BeginTime <= DateTime.Now && p.EndTime >= DateTime.Now);
                if (item != null)
                {
                    //score = (double)Math.Round(value / (item.RateValue / item.RateScore), 2);
                    score = (int)Math.Ceiling(value / (item.RateValue / item.RateScore));
                }
            }
            if (score == 0)
            {
                if (scoreDefineInfo.BaseRateScore > 0 && scoreDefineInfo.BaseRateValue > 0)//基础比例
                {
                    //score = (double)Math.Round(value / (scoreDefineInfo.BaseRateValue / scoreDefineInfo.BaseRateScore), 2);
                    score = (int)Math.Ceiling(value / (scoreDefineInfo.BaseRateValue / scoreDefineInfo.BaseRateScore));
                }
            }
            if (score == 0)
            {
                score = (int)scoreDefineInfo.Score;
            }

            //if (score == 0)
            //{
            //    msg = "增加积分不能为0";
            //    return false;
            //}
            if (scoreDefineInfo.DayLimit > 0)
            {
                double nTotal = bllUser.GetUserDayScoreSUMEvent(userInfo.UserID, scoreEvent, true);
                if (scoreDefineInfo.DayLimit < nTotal + score)
                {
                    msg = scoreDefineInfo.ScoreEvent + "每日所得积分超限制";
                    return(false);
                }
            }
            if (scoreDefineInfo.TotalLimit > 0)
            {
                double nTotal = bllUser.GetUserDayScoreSUMEvent(userInfo.UserID, scoreEvent, false);
                if (scoreDefineInfo.TotalLimit < nTotal + score)
                {
                    msg = scoreDefineInfo.ScoreEvent + "所得总积分超限制";
                    return(false);
                }
            }

            //积分记录
            UserScoreDetailsInfo scoreModel = new UserScoreDetailsInfo();

            scoreModel.AddNote      = !string.IsNullOrEmpty(remark) ? remark : scoreDefineInfo.Description;
            scoreModel.AddTime      = DateTime.Now;
            scoreModel.Score        = score;
            scoreModel.UserID       = userInfo.UserID;
            scoreModel.OpenId       = userInfo.WXOpenId;
            scoreModel.ScoreType    = scoreDefineInfo.ScoreType;
            scoreModel.WebSiteOwner = WebsiteOwner;
            scoreModel.ScoreEvent   = scoreEvent;
            scoreModel.SerialNumber = serialNumber;
            BLLTransaction tran = new BLLTransaction();

            try
            {
                int historyTotalScore = 0;
                if (score > 0)
                {
                    historyTotalScore = score;
                }
                string sql = string.Format("TotalScore+={0},HistoryTotalScore+={1}", score, historyTotalScore);
                if (!string.IsNullOrEmpty(showName))
                {
                    sql += string.Format(",TrueName='{0}'", showName);
                }
                if (Update(userInfo, sql, string.Format(" AutoId={0}", userInfo.AutoID), tran) == 1 && Add(scoreModel, tran))
                {
                    #region 日志记录
                    if (!bllApiLog.Add(userInfo.WebsiteOwner, Enums.EnumApiModule.ScoreEvent, string.Format("积分事件,事件名称:{0}原始值{1}积分值:{2}", scoreDefineInfo.ScoreEvent, value, score), userInfo.WXOpenId, userInfo.UserID, serialNumber))
                    {
                        msg = "日志记录失败";
                        tran.Rollback();
                        return(false);
                    }

                    #endregion
                    tran.Commit();
                    addScore = score;
                    return(true);
                }
                else
                {
                    msg = "操作失败";
                    tran.Rollback();
                    return(false);
                }
            }
            catch (Exception ex)
            {
                msg = ex.ToString();
                tran.Rollback();
                return(false);
            }
        }