Exemplo n.º 1
0
        public async Task <AjaxResponse> SaveSysOrgModel(SysOrgInput model)
        {
            Guid?  resId;
            string parentOrgNode = "";

            //验证重复
            if (CheckOrgCode(ObjectMapper.Map <SysOrgData>(model)))
            {
                throw new UserFriendlyException("机构编码重复", "您设置的机构编码" + model.OrgCode + "重复!");
            }

            if (model.ParentOrgID != null)
            {
                var pData = _sysOrgRepository.Get(model.ParentOrgID.Value);
                if (pData != null)
                {
                    parentOrgNode = pData.OrgNode;
                }
            }

            if (model.Id == null)
            {
                SysOrg modelInput = ObjectMapper.Map <SysOrg>(model);
                modelInput.OrgNode = parentOrgNode + model.OrgCode + ".";
                resId = await _sysOrgRepository.InsertAndGetIdAsync(modelInput);
            }
            else
            {
                //获取需要更新的数据
                SysOrg data = _sysOrgRepository.Get((Guid)model.Id);

                //父节点ID或者OrgCode有变化则当前节点及其子节点的OrgNode也需要改变
                if (data.ParentOrgID != model.ParentOrgID || data.OrgCode != model.OrgCode)
                {
                    string oldOrgNode = data.OrgNode;
                    data.OrgNode = parentOrgNode + model.OrgCode + ".";
                    _sysOrgRepository.UpdateChildrensOrgNode(data.OrgNode, oldOrgNode);
                }
                //映射需要修改的数据对象
                SysOrg m = ObjectMapper.Map(model, data);
                //提交修改
                await _sysOrgRepository.UpdateAsync(m);

                resId = model.Id;
            }

            return(new AjaxResponse {
                Success = true, Result = new { id = resId }
            });
        }