Esempio n. 1
0
        public Response Execute(User currentUser, string request)
        {
            var req = JsonConvert.DeserializeObject <Request <GameTeamLoopTemplet> >(request);
            GameTeamLoopTemplet templet = req.FirstEntity();
            var res = GameLoopTempletHelper.SetTempletState(templet, currentUser);

            return(res);
        }
Esempio n. 2
0
        /// <summary>
        /// 获取某个对阵模板
        /// </summary>
        /// <param name="templetId"></param>
        /// <returns></returns>
        public static GameTeamLoopTemplet GetTemplet(string templetId)
        {
            GameTeamLoopTemplet templet = null;
            string  sqlStr = @"SELECT * FROM GameTeamLoopTemplet WHERE Id=@templetId";
            Command cmd    = CommandHelper.CreateText <GameTeamLoopTemplet>(FetchType.Fetch, sqlStr);

            cmd.Params.Add("@templetId", templetId);
            Response result = DbContext.GetInstance().Execute(cmd);

            if (result.Entities.Count > 0)
            {
                templet = result.Entities[0] as GameTeamLoopTemplet;
            }
            return(templet);
        }
Esempio n. 3
0
        /// <summary>
        /// 设置模板分享状态
        /// </summary>
        /// <param name="templet"></param>
        /// <param name="current"></param>
        public static Response SetTempletState(GameTeamLoopTemplet templet, User current)
        {
            string  sqlStr = @"UPDATE GameTeamLoopTemplet SET IsShared=@isShared,SharePersonId=@shareId WHERE Id=@templetId";
            Command cmd    = CommandHelper.CreateText <GameTeamLoopTemplet>(FetchType.Execute, sqlStr);

            cmd.Params.Add("@templetId", templet.Id);
            cmd.Params.Add("@isShared", templet.IsShared);
            if (templet.IsShared)
            {
                cmd.Params.Add("@shareId", current.Id);
            }
            else
            {
                cmd.Params.Add("@shareId", null);
            }
            return(DbContext.GetInstance().Execute(cmd));
        }
Esempio n. 4
0
        public Response Execute(User currentUser, string request)
        {
            var req = JsonConvert.DeserializeObject <Request <GameTeamLoopTemplet> >(request);
            GameTeamLoopTemplet templet = req.FirstEntity();
            Response            res     = null;
            Command             cmd     = null;

            if (templet.RowState == RowState.Added || templet.RowState == RowState.Modified)
            {
                if (templet.PersonCount <= 0 || templet.PersonCount > 9)
                {
                    return(ResultHelper.Fail("上场人数不超过9人"));
                }
                if (templet.LoopCount <= 0 || templet.LoopCount > 9)
                {
                    return(ResultHelper.Fail("总对阵场数不超过9场"));
                }
            }

            if (templet.RowState == RowState.Added)//新增,
            {
                //假如上传基于模板ID,判断是否基于已有模板创建,不检查同名
                if (string.IsNullOrEmpty(templet.Id))
                {
                    if (GameLoopTempletHelper.IsExistTemplet(templet.Name, false))
                    {
                        return(ResultHelper.Fail("对阵模板重名"));
                    }
                }
                else
                {
                    templet.Name = GameLoopTempletHelper.GetNewTempletName(templet.Name);//模板名称基于上个模板递增序号
                }

                if (templet.Detail.Count <= 0)
                {
                    return(ResultHelper.Fail("缺少模板规则"));
                }
                templet.SetNewEntity();
                res     = AddTemplet(templet, currentUser, true);
                res.Tag = false;
                res.Entities.Add(templet);
                return(res);
            }
            else
            {
                GameTeamLoopTemplet temp = GameLoopTempletHelper.GetTemplet(templet.Id);//获取对阵模板对象
                if (temp.CreatorId != currentUser.Id)
                {
                    return(ResultHelper.Fail("不能修改或删除非自己创建的模板"));
                }

                if (templet.RowState == RowState.Modified)              //修改
                {
                    if (GameLoopTempletHelper.IsUseTemplet(templet.Id)) //模板在使用中,直接按内容新建模板
                    {
                        templet.SetNewEntity();
                        templet.RowState = RowState.Added;
                        templet.Name     = GameLoopTempletHelper.GetNewTempletName(templet.Name);
                        res = AddTemplet(templet, currentUser, true);
                        if (res.IsSuccess)
                        {
                            res.Message = "模板在使用中,已保存为新的模板【" + templet.Name + "】";
                            res.Tag     = true;//修改正在使用的模板保存,些值为true
                        }


                        return(res);
                    }
                    ///先删除对应模板ID所有的规则详情
                    string delSql = @"DELETE FROM GameTeamLoopTempletDetail WHERE TempletId=@templetId";
                    cmd = CommandHelper.CreateText(FetchType.Execute, delSql);
                    cmd.Params.Add("@templetId", templet.Id);
                    DbContext.GetInstance().Execute(cmd);

                    ////////////////////////////////////////////////////////////
                    var entities = GameLoopTempletHelper.GetTemplets(templet.Name);//通过新名称检查模板
                    if (entities.Count > 0)
                    {
                        var temp1 = entities[0] as GameTeamLoopTemplet;
                        if (temp1.Id != templet.Id)//假如有同名但是模板id与修改的模板ID不同
                        {
                            return(ResultHelper.Fail("已存在相同名称对阵模板"));
                        }
                    }
                    templet.SetCreateDate();
                    res     = AddTemplet(templet, currentUser, false);
                    res.Tag = false;
                }
                else if (templet.RowState == RowState.Deleted)//删除
                {
                    if (GameLoopTempletHelper.IsUseTemplet(templet.Id))
                    {
                        res     = ResultHelper.Fail("模板已被使用,不能删除");
                        res.Tag = false;
                        return(res);
                    }
                    string delSql = @"DELETE FROM GameTeamLoopTemplet WHERE Id=@templetId  DELETE FROM GameTeamLoopTempletDetail WHERE TempletId=@templetId";
                    cmd = CommandHelper.CreateText(FetchType.Execute, delSql);
                    cmd.Params.Add("@templetId", templet.Id);
                    res     = DbContext.GetInstance().Execute(cmd);
                    res.Tag = false;
                }
            }

            return(res);
        }
Esempio n. 5
0
        /// <summary>
        /// 保存实体模板
        /// </summary>
        /// <param name="templet"></param>
        /// <param name="currentUser"></param>
        /// <param name="flag">新增为true;纯修改为false</param>
        /// <returns></returns>
        private Response AddTemplet(GameTeamLoopTemplet templet, User currentUser, bool flag)
        {
            /////每个用户最多创建多少条模板,适当减少垃圾数据
            if (flag)
            {
                int maxCount = 10;//默认,配置文件读取错误
                try
                {
                    maxCount = int.Parse(ConfigurationManager.AppSettings["TempletMaxCount"]);
                }
                catch { }
                int templetCount = GameLoopTempletHelper.GetCountByUser(currentUser.Id);
                if (templetCount > maxCount)
                {
                    return(ResultHelper.Fail("模板数量已满"));
                }
            }
            //////////////////////////////////////////////////
            templet.IsEnable  = true;                    //新建时,默认为启用
            templet.CreatorId = currentUser.Id;
            StringBuilder ruleStr = new StringBuilder(); //根据规则生成规则字符串

            List <EntityBase> detailList = new List <EntityBase>();

            foreach (GameTeamLoopTempletDetail item in templet.Detail)//规则详情
            {
                item.RowState = RowState.Added;
                item.SetNewEntity();
                item.TempletId = templet.Id;
                detailList.Add(item);
                ////////////生成规则字符串
                string ruleNo = string.Empty;
                switch (item.OrderNo)
                {
                case 1:
                    ruleNo = "①";
                    break;

                case 2:
                    ruleNo = "②";
                    break;

                case 3:
                    ruleNo = "③";
                    break;

                case 4:
                    ruleNo = "④";
                    break;

                case 5:
                    ruleNo = "⑤";
                    break;

                case 6:
                    ruleNo = "⑥";
                    break;

                case 7:
                    ruleNo = "⑦";
                    break;

                case 8:
                    ruleNo = "⑧";
                    break;

                case 9:
                    ruleNo = "⑨";
                    break;
                }
                ruleStr.Append(ruleNo + item.Code1 + "-" + item.Code2);
            }
            templet.RuleCode = ruleStr.ToString();
            var detailCmd = CommandHelper.CreateSave(detailList);
            var cmd       = CommandHelper.CreateSave(templet);
            var res       = DbContext.GetInstance().Execute(cmd);//保存主模板

            if (res.IsSuccess)
            {
                res = DbContext.GetInstance().Execute(detailCmd);//不能同时使用多个CreateSave生成的命令列表,保存要出错,直接用SQL字符串生成的命令列表,则可以
            }
            res.Entities.Add(templet);
            return(res);
        }