Exemplo n.º 1
0
        /// <summary>
        /// 手动修改用户积分
        /// </summary>
        /// <param name="appId"></param>
        /// <param name="points"></param>
        /// <param name="userId"></param>
        /// <returns></returns>
        public ActionResult ChangeUserIntegral(int appId, int points, int userId)
        {
            result = new Return_Msg();
            if (appId <= 0)
            {
                result.Msg = "参数错误";
                return(Json(result));
            }

            if (dzaccount == null)
            {
                result.Msg = "登录信息超时";
                return(Json(result));
            }

            XcxAppAccountRelation xcx = XcxAppAccountRelationBLL.SingleModel.GetModelByaccountidAndAppid(appId, dzaccount.Id.ToString());

            if (xcx == null)
            {
                result.Msg = "小程序未授权";
                return(Json(result));
            }

            if (points > 99999)
            {
                result.Msg = "赠送的积分不能大于99999";
                return(Json(result));
            }

            C_UserInfo userInfo = C_UserInfoBLL.SingleModel.GetModel(userId);

            if (userInfo == null)
            {
                result.Msg = "会员不存在";
                return(Json(result));
            }

            ExchangeUserIntegral exchangeUserIntegral = ExchangeUserIntegralBLL.SingleModel.GetModel($"userId={userId}");

            if (exchangeUserIntegral == null)
            {
                int curUserIntegralId = Convert.ToInt32(ExchangeUserIntegralBLL.SingleModel.Add(new ExchangeUserIntegral()
                {
                    UserId     = userId,
                    AddTime    = DateTime.Now,
                    UpdateDate = DateTime.Now,
                    integral   = 0
                }));
                if (curUserIntegralId <= 0)
                {
                    result.Msg = "初始化用户积分信息异常";
                    return(Json(result));
                }
            }


            if (!ExchangeUserIntegralBLL.SingleModel.ChangeUserPoints(exchangeUserIntegral, appId, points))
            {
                result.Msg = "修改失败";
                return(Json(result));
            }


            result.isok = true;
            result.Msg  = "修改成功";
            return(Json(result));
        }
Exemplo n.º 2
0
        public ExchangePlayCardRelation PlayCard(int userId, int appId, out int resultCode)
        {
            //插入打卡记录,根据规则进行积分更新相加,最后更新签到信息
            resultCode = 200;
            Store storeModel = StoreBLL.SingleModel.GetModelByAId(appId);

            if (storeModel == null || string.IsNullOrEmpty(storeModel.configJson))
            {
                resultCode = 500;//店铺配置信息没有找到
                return(null);
            }
            ExchangePlayCardLog todayPlayCardLog = ExchangePlayCardLogBLL.SingleModel.GetModel($"userId={userId} and Aid={appId} and to_days(AddTime) = to_days(now())");

            if (todayPlayCardLog != null)
            {
                resultCode = 403;//今天已签到
                return(null);
            }


            ExchangePlayCardConfig exchangePlayCardConfig = new ExchangePlayCardConfig();

            storeModel.funJoinModel = JsonConvert.DeserializeObject <StoreConfigModel>(storeModel.configJson);
            if (string.IsNullOrEmpty(storeModel.funJoinModel.ExchangePlayCardConfig))
            {
                resultCode = 404;//签到配置信息没有找到
                return(null);
            }

            exchangePlayCardConfig = JsonConvert.DeserializeObject <ExchangePlayCardConfig>(storeModel.funJoinModel.ExchangePlayCardConfig);
            if (exchangePlayCardConfig.State == 0)
            {
                resultCode = 302;//签到开关关闭
                return(null);
            }



            TransactionModel transactionModel = new TransactionModel();

            bool havePlayCardRelation = true;
            ExchangePlayCardRelation exchangePlayCardRelation = base.GetModel($"userId={userId} and Aid={appId}");

            if (exchangePlayCardRelation == null)
            {
                exchangePlayCardRelation                = new ExchangePlayCardRelation();
                exchangePlayCardRelation.UserId         = userId;
                exchangePlayCardRelation.Aid            = appId;
                exchangePlayCardRelation.ConnectDay     = 1;
                exchangePlayCardRelation.LastConnectDay = 0;
                exchangePlayCardRelation.UpdateTime     = DateTime.Now;
                havePlayCardRelation = false;
                transactionModel.Add(base.BuildAddSql(exchangePlayCardRelation));
            }
            else
            {
                exchangePlayCardRelation.ConnectDay += 1;
                exchangePlayCardRelation.UpdateTime  = DateTime.Now;
            }



            //获取签到送积分规则
            int curSumIntegral = 0;

            curSumIntegral += exchangePlayCardConfig.DayGivePoints;//每天签到送多少积分
            int tempDay = exchangePlayCardRelation.ConnectDay - exchangePlayCardRelation.LastConnectDay;

            if (tempDay < 0)
            {
                resultCode = 502;//签到天数错误
                return(null);
            }
            ExchangePlayCardLog exchangePlayCardLog = new ExchangePlayCardLog();

            exchangePlayCardLog.AddTime = DateTime.Now;
            exchangePlayCardLog.Aid     = appId;
            exchangePlayCardLog.UserId  = userId;
            if (tempDay >= exchangePlayCardConfig.ConnectDay && havePlayCardRelation)
            {
                curSumIntegral            += exchangePlayCardConfig.ConnectDayGivePoints;
                exchangePlayCardLog.Remark = $"满足连续签到{exchangePlayCardConfig.ConnectDayGivePoints}";
                exchangePlayCardRelation.LastConnectDay += exchangePlayCardConfig.ConnectDay;//记录上次连续赠送积分的天数断签后清零
            }
            if (curSumIntegral < 0)
            {
                resultCode = 503;//签到送积分计算错误
                return(null);
            }



            exchangePlayCardLog.Points  = curSumIntegral;
            exchangePlayCardLog.Remark += $"每天签到送{exchangePlayCardConfig.DayGivePoints}";

            transactionModel.Add(ExchangePlayCardLogBLL.SingleModel.BuildAddSql(exchangePlayCardLog));

            if (havePlayCardRelation)
            {
                transactionModel.Add(base.BuildUpdateSql(exchangePlayCardRelation, "ConnectDay,UpdateTime,LastConnectDay"));
            }

            ExchangeUserIntegral exchangeUserIntegral = ExchangeUserIntegralBLL.SingleModel.GetModel($"userId={userId}");

            if (exchangeUserIntegral != null)
            {
                exchangeUserIntegral.integral   = exchangeUserIntegral.integral + curSumIntegral;
                exchangeUserIntegral.UpdateDate = DateTime.Now;

                transactionModel.Add(ExchangeUserIntegralBLL.SingleModel.BuildUpdateSql(exchangeUserIntegral, "integral,UpdateDate"));
            }
            else
            {
                //表示新增
                exchangeUserIntegral = new ExchangeUserIntegral {
                    UserId = userId, integral = curSumIntegral, AddTime = DateTime.Now, UpdateDate = DateTime.Now
                };
                transactionModel.Add(ExchangeUserIntegralBLL.SingleModel.BuildAddSql(exchangeUserIntegral));
            }

            //积分变动日志
            transactionModel.Add(ExchangeUserIntegralLogBLL.SingleModel.BuildAddSql(new ExchangeUserIntegralLog
            {
                ruleId      = -1,
                appId       = appId,
                integral    = curSumIntegral,
                ruleType    = -1,
                userId      = userId,
                actiontype  = 0,
                curintegral = curSumIntegral,
                AddTime     = DateTime.Now,
                UpdateDate  = DateTime.Now,
                ordertype   = 3
            }));

            if (!base.ExecuteTransactionDataCorect(transactionModel.sqlArray))
            {
                resultCode = -1;
                return(null);
            }

            exchangePlayCardRelation = base.GetModel($"userId={userId} and Aid={appId}");

            exchangePlayCardRelation.TodayPlayCard = true;
            int tempDay2 = exchangePlayCardRelation.ConnectDay;

            if (tempDay2 > 7)
            {
                tempDay2 = exchangePlayCardRelation.ConnectDay % 7;
            }
            exchangePlayCardRelation.listPlayCardLog = ExchangePlayCardLogBLL.SingleModel.GetList($"userId={userId} and Aid={appId}", tempDay2, 1, "*", "AddTime desc");
            if (tempDay2 < 7)
            {
                exchangePlayCardRelation.listPlayCardLog = exchangePlayCardRelation.listPlayCardLog.OrderBy(x => x.AddTime).ToList();
                for (int i = 0; i < 7 - tempDay2; i++)
                {
                    exchangePlayCardRelation.listPlayCardLog.Add(new ExchangePlayCardLog()
                    {
                        Aid     = appId,
                        UserId  = userId,
                        AddTime = DateTime.Now.AddMinutes(i),
                        Played  = false,
                        Points  = exchangePlayCardConfig.DayGivePoints
                    });
                }
            }
            return(exchangePlayCardRelation);
        }