/// <summary>
 /// 获取角色信息
 /// </summary>
 public void GetRoleInfo()
 {
     try
     {
         if (string.IsNullOrEmpty(Request["RoleID"]))
         {
             throw new Exception("RoleID,参数无效!");
         }
         using (ProxyBE p = new ProxyBE())
         {
             Guid RoleID = Guid.Parse(Request["RoleID"].ToString());
             if (RoleID != Guid.Empty)
             {
                 PartnerRole pRole = p.Client.GetPartnerRole(SenderUser, RoleID);
                 if (pRole != null)
                 {
                     Response.Write(JSONHelper.Object2Json(pRole));
                 }
             }
         }
     }
     catch (Exception ex)
     {
         WriteError(ex.Message, ex);
     }
 }
        public async Task <Result> Condition(PartnerRole role)
        {
            var partnerApply = await _partnerApplyRepository.Query()
                               .Include(e => e.PartnerApplyGoods).ThenInclude(e => e.Goods).ThenInclude(e => e.ThumbnailImage)
                               .FirstOrDefaultAsync(e => e.PartnerRole == role);

            return(Result.Ok(_mapper.Map <PartnerApplyConditionResponse>(partnerApply)));
        }
Esempio n. 3
0
        /// <summary>
        /// 树(经销商)
        /// </summary>
        public void PartnerTree()
        {
            try
            {
                using (ProxyBE p = new ProxyBE())
                {
                    string      PartnerID   = Request["PartnerID"].ToString();
                    PartnerRole partnerRole = null;
                    if (!string.IsNullOrEmpty(PartnerID))
                    {
                        SearchPartnerUserGroupArgs UserGroupArgs = new SearchPartnerUserGroupArgs();
                        UserGroupArgs.PartnerID = new Guid(PartnerID);
                        UserGroupArgs.GroupName = "默认组";
                        Guid         GroupID = Guid.Empty;
                        SearchResult sr      = p.Client.SearchPartnerUserGroup(SenderUser, UserGroupArgs);
                        if (sr.Total > 0)
                        {
                            foreach (DataRow item in sr.DataSet.Tables[0].Rows)
                            {
                                GroupID = Guid.Parse(item["GroupID"].ToString());
                            }
                        }
                        if (GroupID != Guid.Empty)
                        {
                            partnerRole = p.Client.GetPartnerRoleByName(SenderUser, GroupID, "root");
                        }
                    }
                    var PrivilegeItems = new List <PrivilegeItem>();
                    if (partnerRole != null)
                    {
                        PrivilegeItems = p.Client.GetPrivilegeItemByPartnerRoleID(SenderUser, partnerRole.RoleID);
                    }

                    StringBuilder jsonBuilder = GetTreeBuilder(p, PrivilegeItems);
                    Response.Write(jsonBuilder.ToString());
                }
            }
            catch (Exception ex)
            {
                WriteError(ex.Message, ex);
            }
        }
Esempio n. 4
0
 public PartnerRole GetPartnerRole(Sender sender, Guid roleId)
 {
     try
     {
         using (ObjectProxy op = new ObjectProxy())
         {
             PartnerRole role = new PartnerRole();
             role.RoleID = roleId;
             if (op.LoadPartnerRoleByRoleID(role) == 0)
             {
                 return(null);
             }
             return(role);
         }
     }
     catch (Exception ex)
     {
         PLogger.LogError(ex);
         throw ex;
     }
 }
Esempio n. 5
0
 public PartnerRole GetPartnerRoleByName(Sender sender, Guid GroupID, string roleName)
 {
     try
     {
         using (ObjectProxy op = new ObjectProxy())
         {
             PartnerRole role = new PartnerRole();
             role.RoleName = roleName;
             role.GroupID  = GroupID;
             if (op.LoadPartnerRoleByGroupID_RoleName(role) == 0)
             {
                 return(null);
             }
             return(role);
         }
     }
     catch (Exception ex)
     {
         PLogger.LogError(ex);
         throw ex;
     }
 }
Esempio n. 6
0
 public bool PartnerRoleIsDuplicated(Sender sender, PartnerRole role)
 {
     try
     {
         using (ObjectProxy op = new ObjectProxy())
         {
             PartnerRole r = new PartnerRole();
             r.RoleName = role.RoleName;
             r.GroupID  = role.GroupID;
             if (op.LoadPartnerRoleByGroupID_RoleName(r) == 0)
             {
                 return(false);
             }
             return(r.RoleID != role.RoleID);
         }
     }
     catch (Exception ex)
     {
         PLogger.LogError(ex);
         throw ex;
     }
 }
 /// <summary>
 /// 保存角色信息
 /// </summary>
 public void SaveRoleInfo()
 {
     try
     {
         Guid RoleID = Guid.Empty;
         if (!string.IsNullOrEmpty(Request["RoleID"]))
         {
             RoleID = new Guid(Request["RoleID"]);
         }
         using (ProxyBE p = new ProxyBE())
         {
             PartnerRole role = p.Client.GetPartnerRole(SenderUser, RoleID);
             if (role == null)
             {
                 role        = new PartnerRole();
                 role.RoleID = prParm.RoleID;
             }
             role.GroupID    = prParm.GroupID;
             role.RoleName   = prParm.RoleName;
             role.IsDisabled = prParm.IsDisabled;
             role.IsLocked   = prParm.IsLocked;
             bool flag = p.Client.PartnerRoleIsDuplicated(SenderUser, role);
             if (flag)
             {
                 throw new Exception("当前组已存在该角色");
             }
             SavePartnerRoleArgs args = new SavePartnerRoleArgs();
             args.PartnerRole = role;
             p.Client.SavePartnerRole(SenderUser, args);
             WriteSuccess();
         }
     }
     catch (Exception ex)
     {
         WriteError(ex.Message, ex);
     }
 }
Esempio n. 8
0
        /// <summary>
        /// (树)经销商权限
        /// </summary>
        public void RoleTree()
        {
            try
            {
                using (ProxyBE p = new ProxyBE())
                {
                    string UserID = Request["UserID"];
                    List <PartnerUser2Role> partnerUser2Role = new List <PartnerUser2Role>();
                    if (!string.IsNullOrEmpty(UserID))
                    {
                        partnerUser2Role = p.Client.GetPartnerUser2RoleByUserID(SenderUser, new Guid(UserID));
                    }
                    StringBuilder jsonBuilder = new StringBuilder();
                    jsonBuilder.Append("[{");
                    jsonBuilder.Append("\"id\":\"0\"");
                    jsonBuilder.Append(",\"text\":\"角色设置\"");
                    jsonBuilder.Append(",\"attributes\":{\"IsMenu\":\"0\"}");
                    #region 用户组
                    //用户组
                    SearchPartnerUserGroupArgs pargs = new SearchPartnerUserGroupArgs();
                    if (CurrentUser.PartnerID != Guid.Empty)
                    {
                        pargs.PartnerID = CurrentUser.PartnerID;
                    }
                    pargs.IsSystem = false;
                    SearchResult sr = p.Client.SearchPartnerUserGroup(SenderUser, pargs);
                    if (sr.Total > 0)
                    {
                        jsonBuilder.AppendFormat(",\"children\":");
                        jsonBuilder.Append("[");
                        for (int j = 0; j < sr.DataSet.Tables[0].Rows.Count; j++)
                        {
                            DataRow drow = sr.DataSet.Tables[0].Rows[j];
                            jsonBuilder.Append("{");
                            jsonBuilder.AppendFormat("\"id\":\"{0}\"", drow["GroupID"]);
                            jsonBuilder.AppendFormat(",\"text\":\"{0}\"", drow["GroupName"]);
                            jsonBuilder.AppendFormat(",\"iconCls\":\"{0}\"", "group");
                            jsonBuilder.Append(",\"attributes\":{\"IsMenu\":\"2\",\"ParentID\":\"" + drow["GroupID"] + "\"}");
                            jsonBuilder.AppendFormat(",\"children\":");
                            jsonBuilder.Append("[");
                            #region 角色
                            //角色
                            List <PartnerRole> pRole = p.Client.GetPartnerRolesByGroupID(SenderUser, new Guid((drow["GroupID"].ToString())));
                            if (pRole != null)
                            {
                                for (int n = 0; n < pRole.Count; n++)
                                {
                                    PartnerRole itemRole = pRole[n];
                                    if (itemRole.IsSystem)
                                    {
                                        continue;
                                    }
                                    jsonBuilder.Append("{");
                                    jsonBuilder.AppendFormat("\"id\":\"{0}\"", itemRole.RoleID);
                                    jsonBuilder.AppendFormat(",\"text\":\"{0}\"", itemRole.RoleName);
                                    jsonBuilder.AppendFormat(",\"iconCls\":\"{0}\"", "user");

                                    if (partnerUser2Role.Find(pl => pl.RoleID == itemRole.RoleID) != null)
                                    {
                                        jsonBuilder.AppendFormat(",\"checked\":\"{0}\"", true);
                                    }
                                    jsonBuilder.Append(",\"attributes\":{\"IsMenu\":\"3\",\"ParentID\":\"" + drow["GroupID"].ToString() + "\"}");
                                    jsonBuilder.Append("}");
                                    if (n < pRole.Count - 1)
                                    {
                                        jsonBuilder.Append(",");
                                    }
                                }
                            }
                            #endregion
                            jsonBuilder.Append("]");
                            jsonBuilder.Append("}");
                            if (j < sr.DataSet.Tables[0].Rows.Count - 1)
                            {
                                jsonBuilder.Append(",");
                            }
                        }
                        jsonBuilder.Append("]");
                    }

                    #endregion
                    jsonBuilder.Append("}]");
                    Response.Write(jsonBuilder.ToString());
                }
            }
            catch (Exception ex)
            {
                WriteError(ex.Message, ex);
            }
        }
Esempio n. 9
0
        public void SavePartnerManagerUser()
        {
            try
            {
                using (ProxyBE p = new ProxyBE())
                {
                    #region  PartnerUser
                    PartnerUser partnerUser = p.Client.GetPartnerUser(SenderUser, parm.UserID);
                    if (partnerUser != null)
                    {
                        partnerUser.UserCode = parm.UserCode.Trim();
                        bool flag = p.Client.PartnerUserIsDuplicated(SenderUser, partnerUser);
                        if (flag)
                        {
                            throw new Exception("该账号已经存在,请重新输入。");
                        }
                        partnerUser.PartnerID       = parm.PartnerID;
                        partnerUser.UserName        = parm.UserName.Trim();
                        partnerUser.Sex             = "";
                        partnerUser.Position        = "";
                        partnerUser.IsSystem        = true;
                        partnerUser.Email           = "";
                        partnerUser.Description     = parm.Description.Trim();
                        partnerUser.Mobile          = parm.Mobile.Trim();
                        partnerUser.LoginErrorCount = 0;
                        partnerUser.IsDisabled      = Convert.ToBoolean(parm.IsDisabled);
                        partnerUser.IsLocked        = parm.IsLocked;
                        partnerUser.IsAxamine       = true;
                        partnerUser.IsFinishInfo    = true;
                        partnerUser.MemberClass     = parm.MemberClass;
                        string strDate = Request["EndDate"];
                        partnerUser.EndDate = Convert.ToDateTime(Request["EndDate"]);
                    }
                    SavePartnerUserArgs args = new SavePartnerUserArgs();
                    args.PartnerUser = partnerUser;
                    p.Client.SavePartnerUser(SenderUser, args);
                    #endregion

                    #region  PartnerUserGroup
                    PartnerUserGroup           UserGroup     = null;
                    SearchPartnerUserGroupArgs UserGroupArgs = new SearchPartnerUserGroupArgs();
                    UserGroupArgs.PartnerID = partnerUser.PartnerID;
                    UserGroupArgs.GroupName = "默认组";
                    Guid         GroupID = Guid.Empty;
                    SearchResult sr      = p.Client.SearchPartnerUserGroup(SenderUser, UserGroupArgs);
                    if (sr.Total > 0)
                    {
                        foreach (DataRow item in sr.DataSet.Tables[0].Rows)
                        {
                            GroupID = Guid.Parse(item["GroupID"].ToString());
                        }
                        UserGroup = p.Client.GetPartnerUserGroup(SenderUser, GroupID);
                    }
                    if (GroupID == Guid.Empty)
                    {
                        UserGroup           = new PartnerUserGroup();
                        UserGroup.GroupID   = Guid.NewGuid();
                        UserGroup.GroupName = "默认组";
                        UserGroup.IsSystem  = true;
                        UserGroup.PartnerID = partnerUser.PartnerID;
                        SavePartnerUserGroupArgs GroupArgs = new SavePartnerUserGroupArgs();
                        GroupArgs.PartnerUserGroup = UserGroup;
                        p.Client.SavePartnerUserGroup(SenderUser, GroupArgs);
                    }
                    #endregion

                    #region  PartnerRole
                    string      PrivilegeItemS   = Request["PrivilegeItemS"];
                    List <Guid> PrivilegeItemIDS = new List <Guid>();
                    if (!string.IsNullOrEmpty(PrivilegeItemS))
                    {
                        string[] ItemS = PrivilegeItemS.Split(',');
                        foreach (var item in ItemS)
                        {
                            PrivilegeItemIDS.Add(new Guid(item));
                        }
                    }
                    PartnerRole partnerRole = p.Client.GetPartnerRoleByName(SenderUser, UserGroup.GroupID, "root");
                    if (partnerRole == null)
                    {
                        partnerRole          = new PartnerRole();
                        partnerRole.GroupID  = UserGroup.GroupID;
                        partnerRole.IsSystem = true;
                        partnerRole.RoleID   = Guid.NewGuid();
                        partnerRole.RoleName = "root";
                    }
                    SavePartnerRoleArgs roleArgs = new SavePartnerRoleArgs();
                    roleArgs.PartnerRole      = partnerRole;
                    roleArgs.PrivilegeItemIDs = PrivilegeItemIDS;
                    p.Client.SavePartnerRole(SenderUser, roleArgs);
                    #endregion

                    #region PartnerUser2Role
                    PartnerUser2Role PartnerUser2Role = new PartnerUser2Role();
                    PartnerUser2Role.UserID = partnerUser.UserID;
                    PartnerUser2Role.RoleID = partnerRole.RoleID;

                    SavePartnerUser2RoleArgs sargs = new SavePartnerUser2RoleArgs();
                    sargs.PartnerUser2Role = PartnerUser2Role;
                    p.Client.SavePartnerUser2Role(SenderUser, sargs);
                    #endregion

                    WriteSuccess();
                }
            }
            catch (Exception ex)
            {
                WriteError(ex.Message, ex);
            }
        }
Esempio n. 10
0
        /// <summary>
        /// 树(经销商)
        /// </summary>
        public void PartnerTree()
        {
            try
            {
                using (ProxyBE p = new ProxyBE())
                {
                    string      PartnerID   = Request["PartnerID"].ToString();
                    PartnerRole partnerRole = null;
                    if (!string.IsNullOrEmpty(PartnerID))
                    {
                        SearchPartnerUserGroupArgs UserGroupArgs = new SearchPartnerUserGroupArgs();
                        UserGroupArgs.PartnerID = new Guid(PartnerID);
                        UserGroupArgs.GroupName = "默认组";
                        Guid         GroupID = Guid.Empty;
                        SearchResult sr      = p.Client.SearchPartnerUserGroup(SenderUser, UserGroupArgs);
                        if (sr.Total > 0)
                        {
                            foreach (DataRow item in sr.DataSet.Tables[0].Rows)
                            {
                                GroupID = Guid.Parse(item["GroupID"].ToString());
                            }
                        }
                        if (GroupID != Guid.Empty)
                        {
                            partnerRole = p.Client.GetPartnerRoleByName(SenderUser, GroupID, "root");
                        }
                    }
                    if (partnerRole != null)
                    {
                        #region 第二次
                        var PrivilegeItems = p.Client.GetPrivilegeItemByPartnerRoleID(SenderUser, partnerRole.RoleID);
                        PrivilegeItems = PrivilegeItems ?? new List <PrivilegeItem>();
                        StringBuilder jsonBuilder = new StringBuilder();
                        jsonBuilder.Append("[{");
                        jsonBuilder.Append("\"id\":\"0\"");
                        jsonBuilder.Append(",\"text\":\"权限菜单\"");
                        jsonBuilder.Append(",\"attributes\":{\"IsMenu\":\"1\"}");

                        jsonBuilder.AppendFormat(",\"children\":");
                        PrivilegeCategory item = p.Client.GetPrivilegeCategory(SenderUser, new Guid(CategoryID));
                        //获取当前应用系统下的所有菜单项
                        jsonBuilder.Append("[");
                        if (item != null)
                        {
                            jsonBuilder.Append("{");
                            jsonBuilder.AppendFormat("\"id\":\"{0}\"", item.CategoryID);
                            jsonBuilder.AppendFormat(",\"text\":\"{0}\"", item.CategoryName);
                            jsonBuilder.Append(",\"state\":\"closed\"");
                            jsonBuilder.Append(",\"attributes\":{\"IsMenu\":\"1\"}");
                            jsonBuilder.AppendFormat(",\"children\":");
                            jsonBuilder.Append("[");
                            #region 权限菜单

                            List <Privilege> Privileges = p.Client.GetPrivilegesByCategoryID(SenderUser, item.CategoryID).Where(t => !t.IsDisabled).ToList();

                            for (int i = 0; i < Privileges.Count; i++)
                            {
                                Privilege itemPrivilege = Privileges[i];
                                //if (itemPrivilege.IsDisabled)
                                //{
                                //    continue;
                                //}
                                jsonBuilder.Append("{");
                                jsonBuilder.AppendFormat("\"id\":\"{0}\"", itemPrivilege.PrivilegeID);
                                jsonBuilder.AppendFormat(",\"text\":\"{0}\"", itemPrivilege.PrivilegeName);
                                jsonBuilder.Append(",\"state\":\"closed\"");
                                jsonBuilder.Append(",\"attributes\":{\"IsMenu\":\"1\"}");
                                #region 权限项
                                //是否权限项
                                List <PrivilegeItem> listPrivilegeItem = p.Client.GetPrivilegeItemByPrivilegeID(SenderUser, itemPrivilege.PrivilegeID);
                                if (listPrivilegeItem != null)
                                {
                                    jsonBuilder.AppendFormat(",\"children\":");
                                    jsonBuilder.Append("[");
                                    for (int j = 0; j < listPrivilegeItem.Count; j++)
                                    {
                                        PrivilegeItem itemPrivilegeItem = listPrivilegeItem[j];
                                        jsonBuilder.Append("{");
                                        jsonBuilder.AppendFormat("\"id\":\"{0}\"", itemPrivilegeItem.PrivilegeItemID);
                                        jsonBuilder.AppendFormat(",\"text\":\"{0}\"", itemPrivilegeItem.PrivilegeItemName);
                                        if (PrivilegeItems.Find(pl => pl.PrivilegeItemID == itemPrivilegeItem.PrivilegeItemID) != null)
                                        {
                                            jsonBuilder.AppendFormat(",\"checked\":\"{0}\"", true);
                                        }
                                        jsonBuilder.Append(",\"attributes\":{\"IsMenu\":\"0\"}");
                                        jsonBuilder.Append("}");
                                        if (j < listPrivilegeItem.Count - 1)
                                        {
                                            jsonBuilder.Append(",");
                                        }
                                    }
                                    jsonBuilder.Append("]");
                                }

                                #endregion
                                jsonBuilder.Append("}");
                                if (i < Privileges.Count - 1)
                                {
                                    jsonBuilder.Append(",");
                                }
                            }
                            #endregion
                            jsonBuilder.Append("]");
                            jsonBuilder.Append("}");
                        }
                        jsonBuilder.Append("]");
                        jsonBuilder.Append("}]");
                        Response.Write(jsonBuilder.ToString());
                        #endregion
                    }
                    else
                    {
                        #region 初始化
                        var           PrivilegeItems = new List <PrivilegeItem>();
                        StringBuilder jsonBuilder    = new StringBuilder();
                        jsonBuilder.Append("[{");
                        jsonBuilder.Append("\"id\":\"0\"");
                        jsonBuilder.Append(",\"text\":\"权限菜单\"");
                        jsonBuilder.Append(",\"attributes\":{\"IsMenu\":\"1\"}");

                        jsonBuilder.AppendFormat(",\"children\":");
                        PrivilegeCategory item = p.Client.GetPrivilegeCategory(SenderUser, new Guid(CategoryID));
                        //获取当前应用系统下的所有菜单项
                        jsonBuilder.Append("[");
                        if (item != null)
                        {
                            jsonBuilder.Append("{");
                            jsonBuilder.AppendFormat("\"id\":\"{0}\"", item.CategoryID);
                            jsonBuilder.AppendFormat(",\"text\":\"{0}\"", item.CategoryName);
                            jsonBuilder.Append(",\"state\":\"closed\"");
                            jsonBuilder.Append(",\"attributes\":{\"IsMenu\":\"1\"}");
                            jsonBuilder.AppendFormat(",\"children\":");
                            jsonBuilder.Append("[");
                            #region 权限菜单

                            List <Privilege> Privileges = p.Client.GetPrivilegesByCategoryID(SenderUser, item.CategoryID).Where(t => !t.IsDisabled).ToList();

                            for (int i = 0; i < Privileges.Count; i++)
                            {
                                Privilege itemPrivilege = Privileges[i];
                                //if (itemPrivilege.IsDisabled)
                                //{
                                //    continue;
                                //}
                                jsonBuilder.Append("{");
                                jsonBuilder.AppendFormat("\"id\":\"{0}\"", itemPrivilege.PrivilegeID);
                                jsonBuilder.AppendFormat(",\"text\":\"{0}\"", itemPrivilege.PrivilegeName);
                                jsonBuilder.Append(",\"state\":\"closed\"");
                                jsonBuilder.Append(",\"attributes\":{\"IsMenu\":\"1\"}");
                                #region 权限项
                                //是否权限项
                                List <PrivilegeItem> listPrivilegeItem = p.Client.GetPrivilegeItemByPrivilegeID(SenderUser, itemPrivilege.PrivilegeID);
                                if (listPrivilegeItem != null)
                                {
                                    jsonBuilder.AppendFormat(",\"children\":");
                                    jsonBuilder.Append("[");
                                    for (int j = 0; j < listPrivilegeItem.Count; j++)
                                    {
                                        PrivilegeItem itemPrivilegeItem = listPrivilegeItem[j];
                                        jsonBuilder.Append("{");
                                        jsonBuilder.AppendFormat("\"id\":\"{0}\"", itemPrivilegeItem.PrivilegeItemID);
                                        jsonBuilder.AppendFormat(",\"text\":\"{0}\"", itemPrivilegeItem.PrivilegeItemName);
                                        if (PrivilegeItems.Find(pl => pl.PrivilegeItemID == itemPrivilegeItem.PrivilegeItemID) != null)
                                        {
                                            jsonBuilder.AppendFormat(",\"checked\":\"{0}\"", true);
                                        }
                                        jsonBuilder.Append(",\"attributes\":{\"IsMenu\":\"0\"}");
                                        jsonBuilder.Append("}");
                                        if (j < listPrivilegeItem.Count - 1)
                                        {
                                            jsonBuilder.Append(",");
                                        }
                                    }
                                    jsonBuilder.Append("]");
                                }

                                #endregion
                                jsonBuilder.Append("}");
                                if (i < Privileges.Count - 1)
                                {
                                    jsonBuilder.Append(",");
                                }
                            }
                            #endregion
                            jsonBuilder.Append("]");
                            jsonBuilder.Append("}");
                        }
                        jsonBuilder.Append("]");
                        jsonBuilder.Append("}]");
                        Response.Write(jsonBuilder.ToString());
                        #endregion
                    }
                }
            }
            catch (Exception ex)
            {
                WriteError(ex.Message, ex);
            }
        }
Esempio n. 11
0
        public void SavePartnerRole(Sender sender, SavePartnerRoleArgs args)
        {
            try
            {
                if (string.IsNullOrEmpty(args.PartnerRole.RoleName))
                {
                    throw new Exception(string.Format("角色名称:{0}命名无效,可能存在特殊字符。", args.PartnerRole.RoleName));
                }

                if (PartnerRoleIsDuplicated(sender, args.PartnerRole))
                {
                    throw new Exception(string.Format("角色名称:{0}已存在,请重新输入。", args.PartnerRole.RoleName));
                }

                using (ObjectProxy op = new ObjectProxy(true))
                {
                    PartnerRole role = new PartnerRole();
                    role.RoleID = args.PartnerRole.RoleID;
                    if (op.LoadPartnerRoleByRoleID(role) == 0)
                    {
                        role = null;
                    }

                    if (role == null)
                    {
                        args.PartnerRole.Created    = DateTime.Now;
                        args.PartnerRole.CreatedBy  = sender.UserCode + "." + sender.UserName;
                        args.PartnerRole.Modified   = args.PartnerRole.Created;
                        args.PartnerRole.ModifiedBy = args.PartnerRole.CreatedBy;
                        op.InsertPartnerRole(args.PartnerRole);
                    }
                    else
                    {
                        args.PartnerRole.Modified   = DateTime.Now;
                        args.PartnerRole.ModifiedBy = sender.UserCode + "." + sender.UserName;
                        op.UpdatePartnerRoleByRoleID(args.PartnerRole);
                    }
                    if (args.UserIDs != null)
                    {
                        op.DeletePartnerUser2RolesByRoleID(args.PartnerRole.RoleID);
                        foreach (Guid userID in args.UserIDs)
                        {
                            PartnerUser2Role ug = new PartnerUser2Role();
                            ug.UserID = userID;
                            ug.RoleID = args.PartnerRole.RoleID;
                            op.InsertPartnerUser2Role(ug);
                        }
                    }

                    if (args.PrivilegeItemIDs != null)
                    {
                        op.DeletePartnerRole2PrivilegeItemsByRoleID(args.PartnerRole.RoleID);
                        foreach (Guid privilege in args.PrivilegeItemIDs)
                        {
                            PartnerRole2PrivilegeItem rp = new PartnerRole2PrivilegeItem();
                            rp.RoleID          = args.PartnerRole.RoleID;
                            rp.PrivilegeItemID = privilege;
                            op.InsertPartnerRole2PrivilegeItem(rp);
                        }
                    }
                    op.CommitTransaction();
                }
            }
            catch (Exception ex)
            {
                PLogger.LogError(ex);
                throw ex;
            }
        }
Esempio n. 12
0
        /// <summary>
        /// 支付接收
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public async Task PaymentReceived(PaymentReceivedRequest request)
        {
            var order = await _orderRepository.Query()
                        .Include(e => e.OrderItems)
                        .ThenInclude(e => e.CommissionHistory)
                        .FirstOrDefaultAsync(e => e.OrderNo == request.OrderNo);

            if (order == null)
            {
                return;
            }

            var status = new OrderStatus[] { OrderStatus.PendingPayment, OrderStatus.PaymentFailed };

            if (!status.Contains(order.OrderStatus))
            {
                return;
            }

            var         roleResult = false;
            PartnerRole role       = PartnerRole.Default;

            if (!string.IsNullOrEmpty(order.ExtendParams))
            {
                roleResult = Enum.TryParse <PartnerRole>(order.ExtendParams, true, out role);
            }

            var totalCommission = 0;
            var totalAmount     = 0;
            var commissions     = order.OrderItems.Where(e => e.CommissionHistory != null).Select(e => e.CommissionHistory);

            if (commissions.Count() > 0)
            {
                foreach (var item in commissions)
                {
                    if (order.IsFirstOrder)
                    {
                        totalAmount        += item.Commission;
                        item.Status         = CommissionStatus.Complete;
                        item.SettlementTime = DateTime.Now;
                    }
                    else
                    {
                        totalCommission += item.Commission;
                        item.Status      = CommissionStatus.PendingSettlement;
                    }
                }
            }

            order.OrderStatus   = OrderStatus.PaymentReceived;
            order.PaymentMethod = request.PaymentMethod;
            order.PaymentTime   = request.PaymentTime;
            order.PaymentFee    = request.PaymentFee;

            _orderRepository.Update(order, false);

            using (var transaction = _orderRepository.BeginTransaction())
            {
                await _orderRepository.SaveAsync();

                if (roleResult)
                {
                    await _customerRepository.UpdateProperyAsync(new Customer
                    {
                        Id   = order.CustomerId,
                        Role = role
                    }, nameof(Customer.Role));
                }

                if (totalCommission > 0 || totalAmount > 0)
                {
                    var parentId = commissions.Select(e => e.CustomerId).FirstOrDefault();
                    await _customerManager.UpdateAssets(parentId, totalCommission, totalAmount, "下级首单返佣金");
                }

                if (order.WalletAmount > 0)
                {
                    await _customerManager.UpdateAssets(order.CustomerId, 0, 0, -order.WalletAmount, "商品抵扣金额");
                }

                transaction.Commit();
            }
        }