public ResUsersBase Add([FromBody] ReqUsersBase user)
        {
            ResUsersBase retValue = new ResUsersBase();

            using (var db = DbContext.GetInstance("T_USERS"))
            {
                try
                {
                    //设置创建时间
                    user.createTime = DateTime.Now;

                    var isExist = db.Queryable <USERSBASE>()
                                  .Any(s => s.username == user.username);

                    if (!isExist)
                    {
                        db.Insert(user);
                        retValue.SuccessDefalut("创建新用户成功!", 1);
                        LogWirter.Record(LogType.Admin, OpType.Add, "", "创建用户", Convert.ToInt32(user.uCode), user.createUserCode, user.createUserName);
                    }
                    else
                    {
                        retValue.FailDefalut("用户已存在,请更新账号!");
                    }
                }
                catch (Exception ex)
                {
                    retValue.FailDefalut(ex);
                }
            }
            return(retValue);
        }
        public ResNoticeBase AddNotice([FromBody] NOTICEBOARDBASE notice)
        {
            ResNoticeBase retValue = new ResNoticeBase();

            using (var db = DbContext.GetInstance("T_NOTICE_BOARD"))
            {
                try
                {
                    //设置时间
                    notice.createTime   = DateTime.Now;
                    notice.lastEditTime = DateTime.Now;
                    //设置最近编辑人信息
                    notice.lastEditUserCode = notice.createUserCode;
                    notice.lastEditUserName = notice.createUserName;

                    var res = db.Insert(notice);
                    retValue.SuccessDefalut("发布成功", 1);
                    LogWirter.Record(LogType.Admin, OpType.Add, notice.mainTitle + "]", "添加公告 [", Convert.ToInt32(res), notice.createUserCode, notice.createUserName);
                }
                catch (Exception ex)
                {
                    retValue.FailDefalut(ex);
                }
            }
            return(retValue);
        }
        public ResTaskBase AddTask([FromBody] TASKBASE task)
        {
            ResTaskBase retValue = new ResTaskBase();

            using (var db = DbContext.GetInstance("T_TASK"))
            {
                try
                {
                    //规范日期格式
                    db.SerializerDateFormat = "yyyy-mm-dd";
                    //设置时间
                    task.createTime   = DateTime.Now;
                    task.lastEditTime = DateTime.Now;
                    //设置最近编辑人信息
                    task.lastEditUserCode = task.createUserCode;
                    task.lastEditUserName = task.createUserName;

                    var res = db.Insert(task);
                    retValue.SuccessDefalut("添加任务成功", 1);
                    LogWirter.Record(LogType.Personal, OpType.Add, task.taskTitle + "]", "创建任务 [", Convert.ToInt32(res), task.createUserCode, task.createUserName);
                }
                catch (Exception ex)
                {
                    retValue.FailDefalut(ex);
                }
            }
            return(retValue);
        }
        public ResTaskBase UpdateTask([FromBody] ReqTaskBase task)
        {
            ResTaskBase retValue = new ResTaskBase();

            using (var db = DbContext.GetInstance("T_TASK"))
            {
                try
                {
                    bool isIDExist = db.Queryable <TASKBASE>()
                                     .Any(s => s.ID == task.ID);
                    if (isIDExist)
                    {
                        // 设置禁止更新列
                        db.AddDisableUpdateColumns("create_time");

                        //规范日期格式
                        db.SerializerDateFormat = "yyyy-mm-dd";

                        //设置时间
                        task.lastEditTime = DateTime.Now;

                        //设置最近编辑人
                        task.lastEditUserCode = task.createUserCode;
                        task.lastEditUserName = task.createUserName;

                        var taskModel = new TASKBASE();

                        //只更新需要更新的部分
                        db.Update <TASKBASE>(
                            new
                        {
                            taskTitle        = task.taskTitle,
                            endTime          = task.endTime,
                            taskDescription  = task.taskDescription,
                            isDone           = task.isDone,
                            lastEditUserName = task.lastEditUserName,
                            lastEditUserCode = task.lastEditUserCode
                        },
                            it => it.ID == task.ID
                            );

                        retValue.SuccessDefalut("编辑任务成功", 1);
                        LogWirter.Record(LogType.Personal, OpType.Update, task.taskTitle + "]", "编辑任务 [", task.ID, task.createUserCode, task.createUserName);
                    }
                    else
                    {
                        retValue.FailDefalut("不存在该任务ID");
                    }
                }
                catch (Exception ex)
                {
                    retValue.FailDefalut(ex);
                }
            }
            return(retValue);
        }
        public ResNoticeBase UpdateNotice([FromBody] ReqNoticeBase notice)
        {
            ResNoticeBase retValue = new ResNoticeBase();

            using (var db = DbContext.GetInstance("T_NOTICE_BOARD"))
            {
                try
                {
                    bool isIDExist = db.Queryable <NOTICEBOARDBASE>()
                                     .Any(s => s.ID == notice.ID);
                    if (isIDExist)
                    {
                        //设置禁止更新列
                        db.AddDisableUpdateColumns("create_time", "create_user_name", "create_user_name");

                        //设置时间
                        notice.lastEditTime = DateTime.Now;
                        //设置最近编辑人信息
                        notice.lastEditUserCode = notice.createUserCode;
                        notice.lastEditUserName = notice.createUserName;

                        var noticeModel = new NOTICEBOARDBASE();

                        db.Update <NOTICEBOARDBASE>(
                            new
                        {
                            mainTitle        = notice.mainTitle,
                            subHead          = notice.subHead,
                            content          = notice.content,
                            formatType       = notice.formatType,
                            contentType      = notice.contentType,
                            isTop            = notice.isTop,
                            lastEditUserName = notice.lastEditUserName,
                            lastEditUserCode = notice.lastEditUserCode
                        },
                            it => it.ID == notice.ID
                            );


                        retValue.SuccessDefalut("修改公告成功!", 1);
                        LogWirter.Record(LogType.Admin, OpType.Update, notice.mainTitle + "]", "修改公告 [", notice.ID, notice.createUserCode, notice.createUserName);
                    }
                    else
                    {
                        retValue.FailDefalut("不存在该公告ID");
                    }
                }
                catch (Exception ex)
                {
                    retValue.FailDefalut(ex);
                }
            }
            return(retValue);
        }
        public ResAddUserTag AddTag([FromBody] USERTAGSBASE req)
        {
            ResAddUserTag retValue = new ResAddUserTag();
            bool          status   = true;

            if (string.IsNullOrEmpty(req.createUserCode))
            {
                retValue.FailDefalut("请填写创建人code!");
                status = false;
            }
            else if (string.IsNullOrEmpty(req.createUserName))
            {
                retValue.FailDefalut("请填写创建人Name!");
                status = false;
            }
            else if (string.IsNullOrEmpty(req.label))
            {
                retValue.FailDefalut("标签内容不能为空!");
                status = false;
            }
            if (status)
            {
                using (var db = DbContext.GetInstance("T_USER_TAGS"))
                {
                    try
                    {
                        //设置创建时间
                        req.createTime = DateTime.Now;

                        var isExist = db.Queryable <USERTAGSBASE>()
                                      .Any(s => s.label == req.label && s.createUserCode == req.createUserCode);

                        if (!isExist)
                        {
                            var res = db.Insert(req);
                            retValue.SuccessDefalut("创建成功!", 1);
                            LogWirter.Record(LogType.Personal, OpType.Add, req.label + "]", "添加个人用户标签 [", Convert.ToInt32(res), req.createUserCode, req.createUserName);
                        }
                        else
                        {
                            retValue.FailDefalut("用户相同标签!");
                        }
                    }
                    catch (Exception ex)
                    {
                        retValue.FailDefalut(ex);
                    }
                }
            }

            return(retValue);
        }
        public ResUsersBase UpdateAvatar([FromBody] ReqUsersBase user)
        {
            ResUsersBase retValue = new ResUsersBase();

            using (var db = DbContext.GetInstance("T_USERS"))
            {
                try
                {
                    //设置禁止更新列
                    db.AddDisableUpdateColumns("username", "password", "is_admin", "follow_num", "followed_num", "ID", "scores", "u_code", "create_time");

                    bool isIDExist = db.Queryable <USERSBASE>()
                                     .Any(s => s.uCode == user.uCode);
                    if (isIDExist)
                    {
                        #region 验证必填信息及其格式

                        bool status = true;

                        //登录后将获取的信息存在本地 然后用于请求
                        if (string.IsNullOrEmpty(user.avatar))
                        {
                            retValue.FailDefalut("请填写正确的头像地址");
                            status = false;
                        }
                        #endregion
                        if (status)
                        {
                            var newUser = db.Queryable <USERSBASE>().Where(s => s.uCode == user.uCode).FirstOrDefault();
                            if (newUser != null)
                            {
                                user.ID = newUser.ID;
                                ReqToDBGenericClass <ReqUsersBase, USERSBASE> .ReqToDBInstance(user, newUser);

                                db.Update(newUser);
                                retValue.SuccessDefalut("更新成功!", 1);
                                LogWirter.Record(LogType.Login, OpType.Update, "信息", "更改昵称,编辑", Convert.ToInt32(user.uCode), user.createUserCode, user.createUserName);
                            }
                        }
                    }
                    else
                    {
                        retValue.FailDefalut("不存在该用户ID");
                    }
                }
                catch (Exception ex)
                {
                    retValue.FailDefalut(ex);
                }
            }
            return(retValue);
        }
        public ResponseModelBase DeleteTag([FromBody] USERTAGSBASE req)
        {
            ResponseModelBase retValue = new ResponseModelBase();
            bool status = true;

            if (string.IsNullOrEmpty(req.createUserCode))
            {
                retValue.FailDefalut("请填写创建人code!");
                status = false;
            }

            else if (req.ID == 0)
            {
                retValue.FailDefalut("请填写正确的标签ID");
                status = false;
            }
            if (status)
            {
                using (var db = DbContext.GetInstance("T_USER_TAGS"))
                {
                    try
                    {
                        //设置创建时间
                        req.createTime = DateTime.Now;

                        var isExist = db.Queryable <USERTAGSBASE>()
                                      .Any(s => s.ID == req.ID && s.createUserCode == req.createUserCode);

                        if (isExist)
                        {
                            db.Delete(req);
                            retValue.SuccessDefalut("删除成功!", 1);
                            LogWirter.Record(LogType.Personal, OpType.Delete, req.label + "]", "删除个人用户标签 [", 0, req.createUserCode, req.createUserName);
                        }
                        else
                        {
                            retValue.FailDefalut("不存在改标签ID!");
                        }
                    }
                    catch (Exception ex)
                    {
                        retValue.FailDefalut(ex);
                    }
                }
            }

            return(retValue);
        }
        public ResUpdateForm UpdateSkill([FromBody] ReqUpdateForm req)
        {
            ResUpdateForm retValue = new ResUpdateForm();
            bool          status   = true;

            if (string.IsNullOrEmpty(req.createUserCode))
            {
                retValue.FailDefalut("请填写创建人Code!");
                status = false;
            }
            else if (string.IsNullOrEmpty(req.createUserName))
            {
                retValue.FailDefalut("请填写创建人Name!");
                status = false;
            }
            if (status)
            {
                using (var db = DbContext.GetInstance("T_USER_SKILL"))
                {
                    try
                    {
                        //删除全部在插入
                        db.Delete <USERSKILLBASE>(s => s.createUserCode == req.createUserCode);
                        if (req.skillList.Count > 0)
                        {
                            foreach (var item in req.skillList)
                            {
                                item.createUserCode = req.createUserCode;
                                item.createUserName = req.createUserName;
                                db.Insert(item);
                            }
                        }

                        retValue.SuccessDefalut("更新成功!", req.skillList.Count);
                        LogWirter.Record(LogType.Personal, OpType.Update, "", "更新了自己的个人技能图", 0, req.createUserCode, req.createUserName);
                    }
                    catch (Exception ex)
                    {
                        retValue.FailDefalut(ex);
                    }
                }
            }

            return(retValue);
        }
        public ResLogin Login([FromBody] ReqUsersBase user)
        {
            ResLogin retValue = new ResLogin();

            using (var db = DbContext.GetInstance("T_USERS"))
            {
                try
                {
                    var userInfo = db.Queryable <USERSBASE>()
                                   .Where(s => s.username == user.username)
                                   .Where(s => s.password == user.password)
                                   .FirstOrDefault();
                    if (userInfo == null)
                    {
                        retValue.FailDefalut("账号或者密码错误");
                    }
                    else
                    {
                        My my = new My();
                        ReqToDBGenericClass <USERSBASE, My> .ReqToDBInstance(userInfo, my);

                        my.techList = JsonConvert.DeserializeObject <List <string> >(my.techDirection);
                        retValue.SuccessDefalut(my, 1, "账号或者密码错误");
                    }

                    //记录登录日志
                    if (userInfo != null)
                    {
                        LogWirter.Record(LogType.Login, OpType.Login, "", "登录", 0, userInfo.createUserCode, userInfo.createUserName);
                    }
                }
                catch (Exception ex)
                {
                    retValue.FailDefalut(ex);
                }
            }
            return(retValue);
        }
        public ResUsersBase UpdatePassword([FromBody] ReqUsersBase user)
        {
            ResUsersBase retValue = new ResUsersBase();

            using (var db = DbContext.GetInstance("T_USERS"))
            {
                bool status = true;
                if (string.IsNullOrEmpty(user.phoneNum))
                {
                    retValue.FailDefalut("请填写你的手机号");
                    status = false;
                }
                else if (string.IsNullOrEmpty(user.uCode))
                {
                    retValue.FailDefalut("填写你的学号");
                    status = false;
                }
                else if (string.IsNullOrEmpty(user.idCard))
                {
                    retValue.FailDefalut("请填写你的身份证号码");
                    status = false;
                }
                if (status)
                {
                    try
                    {
                        //设置禁止更新列
                        db.AddDisableUpdateColumns("username", "is_admin");

                        var isExist = db.Queryable <USERSBASE>()
                                      .Any(s => s.uCode == user.uCode);
                        if (isExist)
                        {
                            #region 验证必填信息及其格式

                            if (string.IsNullOrEmpty(user.password))
                            {
                                retValue.FailDefalut("请填写你的新密码!");
                            }

                            #endregion

                            var student = db.Queryable <USERSBASE>().Where(u => u.uCode == user.uCode).FirstOrDefault();
                            if (student != null)
                            {
                                if (student.idCard != user.idCard || student.phoneNum != user.phoneNum)
                                {
                                    retValue.FailDefalut("手机号或者身份证与学号不对应");
                                }
                                else
                                {
                                    db.Update <USERSBASE>(new { password = user.password }, it => it.phoneNum == user.phoneNum); //只更新密码列

                                    retValue.SuccessDefalut("更新成功!", 1);
                                    var info = db.Queryable <USERSBASE>().Where(s => s.phoneNum == user.phoneNum).FirstOrDefault();
                                    LogWirter.Record(LogType.Login, OpType.Update, "手机号码", "通过手机号更新密码", Convert.ToInt32(info.uCode), info.createUserCode, info.createUserName);
                                }
                            }
                            else
                            {
                                retValue.FailDefalut("不存在该学号");
                            }
                        }
                        else
                        {
                            retValue.FailDefalut("不存在该学号");
                        }
                    }
                    catch (Exception ex)
                    {
                        retValue.FailDefalut(ex);
                    }
                }
            }
            return(retValue);
        }