/// <summary> /// 门店内员工排名 /// 排名规则: /// 1.取出打赏金额大于零的员工 /// 2.比较打赏金额,(金额高的往前排) /// 3.金额相同,比较评价等级 (等级高的往前排) /// 4.如果还相同,比较打赏时间(时间靠前,往前排) /// </summary> /// <param name="pRequest"></param> /// <returns></returns> protected override GetTopRewardListRD ProcessRequest(DTO.Base.APIRequest <GetTopRewardListRP> pRequest) { var rd = new GetTopRewardListRD(); var customerId = CurrentUserInfo.ClientID; var trrBll = new T_RewardRecordBLL(CurrentUserInfo); var userBll = new T_UserBLL(CurrentUserInfo); //获取员工列表(门店内) var userList = userBll.QueryByEntity(new T_UserEntity() { customer_id = customerId }, null); var userService = new cUserService(CurrentUserInfo); CurrentUserInfo.CurrentUserRole.UnitId = string.IsNullOrEmpty(CurrentUserInfo.CurrentUserRole.UnitId) ? "" : CurrentUserInfo.CurrentUserRole.UnitId; var para_unit_id = CurrentUserInfo.CurrentUserRole.UnitId; var maxRowCount = Utils.GetIntVal(Request("limit")); var startRowIndex = Utils.GetIntVal(Request("start")); var rowCount = maxRowCount > 0 ? maxRowCount : 999; //每页行数 var startIndex = startRowIndex > 0 ? startRowIndex : 0; //当前页的起始行数 var userdata = new JIT.CPOS.BS.Entity.User.UserInfo(); if (string.IsNullOrEmpty(CurrentUserInfo.CurrentUserRole.UnitId)) { userdata = userService.SearchUserListByUnitID(string.Empty, string.Empty, string.Empty, string.Empty, rowCount, startIndex, CurrentUserInfo.CurrentUserRole.UnitId, para_unit_id, string.Empty, string.Empty); } else { userdata = userService.SearchUserListByUnitID(string.Empty, string.Empty, string.Empty, string.Empty, rowCount, startIndex, CurrentUserInfo.CurrentUserRole.UnitId, para_unit_id, string.Empty, string.Empty); } var orderBys = new OrderBy[1]; orderBys[0] = new OrderBy() { FieldName = "CreateTime", Direction = OrderByDirections.Asc }; var trrList = trrBll.QueryByEntity(new T_RewardRecordEntity() { PayStatus = 2, CustomerId = customerId }, orderBys); var oeBll = new ObjectEvaluationBLL(CurrentUserInfo); var oeList = oeBll.QueryByEntity(new ObjectEvaluationEntity() { Type = 4, CustomerID = customerId }, null); var allOE = (from p in oeList.AsEnumerable() group p by p.ObjectID into g select new { g.Key, SumValue = g.Average(p => p.StarLevel) }); var allRewards = (from p in trrList.AsEnumerable() group p by p.RewardedOP into g select new { g.Key, SumValue = g.Sum(p => p.RewardAmount) }).Where(g => g.SumValue > 0).OrderByDescending(g => g.SumValue); var rewardCount = allRewards.ToList().Count; //var top10Rewards = allRewards.Take(10); //金额相同,比较评价等级 (等级高的往前排) rd.RewardList = new List <RewardInfo>(); rd.MyReward = new RewardInfo(); var index = 1; foreach (var item in allRewards) { var tmpRewardInfo = new RewardInfo(); //var userinfo = userList.Where(t => t.user_id == item.Key).ToArray().FirstOrDefault(); var userinfo = userdata.UserInfoList.Where(t => t.User_Id == item.Key).ToArray().FirstOrDefault(); var oeinfo = allOE.Where(t => t.Key == item.Key).ToArray().FirstOrDefault(); if (userinfo != null) { tmpRewardInfo = new RewardInfo() { UserID = userinfo.User_Id, UserName = userinfo.User_Name, UserPhoto = userinfo.imageUrl, StarLevel = oeinfo != null?Convert.ToInt32(oeinfo.SumValue) : 0, Rank = index, RewardIncome = item.SumValue }; rd.RewardList.Add(tmpRewardInfo); if (userinfo.User_Id == pRequest.UserID) { rd.MyReward = tmpRewardInfo; } index++; } } if (string.IsNullOrEmpty(rd.MyReward.UserID))//Top10之外 { //var userinfo = userList.Where(t => t.user_id == pRequest.UserID).ToArray().FirstOrDefault(); var userinfo = userdata.UserInfoList.Where(t => t.User_Id == pRequest.UserID).ToArray().FirstOrDefault(); var oeinfo = allOE.Where(t => t.Key == pRequest.UserID).ToArray().FirstOrDefault(); var myReward = allRewards.Where(t => t.Key == pRequest.UserID).FirstOrDefault(); decimal?myRewardIncome = 0; if (myReward != null) { myRewardIncome = myReward.SumValue != null ? myReward.SumValue : 0; rewardCount = allRewards.Where(g => g.SumValue > myReward.SumValue).ToList().Count; } var myStarLevel = oeinfo != null?Convert.ToInt32(oeinfo.SumValue) : 0; if (userinfo != null) { rd.MyReward = new RewardInfo() { UserID = userinfo.User_Id, UserName = userinfo.User_Name, UserPhoto = userinfo.imageUrl, StarLevel = myStarLevel, Rank = myRewardIncome > 0 ? rewardCount + 1 : 0, RewardIncome = myRewardIncome }; } } return(rd); }
protected override GetConfigRD ProcessRequest(DTO.Base.APIRequest <GetConfigRP> pRequest) { var rd = new GetConfigRD(); var customerId = CurrentUserInfo.ClientID; var trrBll = new T_RewardRecordBLL(CurrentUserInfo);//打赏记录 var userBll = new T_UserBLL(CurrentUserInfo); var cbsBll = new CustomerBasicSettingBLL(CurrentUserInfo); var trcBll = new T_RewardConfigBLL(CurrentUserInfo); var cbsEntity = cbsBll.QueryByEntity(new CustomerBasicSettingEntity() { CustomerID = customerId }, null).FirstOrDefault(); var trcEntitys = trcBll.QueryByEntity(new T_RewardConfigEntity() { CustomerId = customerId }, null); //获取员工 var userInfo = new T_UserEntity(); var employeeId = pRequest.Parameters.EmployeeID; if (!string.IsNullOrEmpty(employeeId)) { userInfo = userBll.QueryByEntity(new T_UserEntity() { user_id = employeeId, customer_id = customerId }, null).FirstOrDefault(); //员工头像 var _ObjectImagesBLL = new ObjectImagesBLL(CurrentUserInfo); var userImg = _ObjectImagesBLL.QueryByEntity(new ObjectImagesEntity() { ObjectId = employeeId, CustomerId = customerId }, null).OrderByDescending(p => p.CreateTime).FirstOrDefault(); //星级 var oeBll = new ObjectEvaluationBLL(CurrentUserInfo); var oeList = oeBll.QueryByEntity(new ObjectEvaluationEntity() { ObjectID = employeeId, Type = 4, CustomerID = customerId }, null); var oeinfo = (from p in oeList.AsEnumerable() group p by p.ObjectID into g select new { g.Key, SumValue = g.Average(p => p.StarLevel) }).ToArray().FirstOrDefault(); //打赏数据 var rewardCount = trrBll.QueryByEntity(new T_RewardRecordEntity() { RewardedOP = employeeId, PayStatus = 2, CustomerId = customerId }, null).Length; //员工信息 rd.UserInfo = new List <UserInfo>(); rd.UserInfo.Add(new UserInfo() { UserName = userInfo.user_name, UserPhoto = userImg != null ? userImg.ImageURL : string.Empty, StarLevel = oeinfo != null ? Convert.ToInt32(oeinfo.SumValue) : 0, RewardCount = rewardCount }); } //打赏类型 if (cbsEntity != null) { switch (cbsEntity.SettingValue) { case "1": rd.Type = 1; break; case "2": rd.Type = 2; break; default: rd.Type = 0; //0或空(null)为两者 break; } } else { rd.Type = 0;//两者 } //打赏金额列表 rd.AmountList = new List <RewardAmountInfo>(); foreach (var item in trcEntitys) { rd.AmountList.Add(new RewardAmountInfo() { Amount = item.RewardAmount }); } return(rd); }