Exemple #1
0
        /// <summary>
        /// 判断用户是否拥有指定页面路径权限(新)
        /// </summary>
        /// <param name="userId">用户账号</param>
        /// <param name="websiteOwner">站点所有者</param>
        /// <param name="path">路径</param>
        /// <param name="nAction">action</param>
        /// <returns></returns>
        public bool NewCheckUserAndPath(string userId, string websiteOwner, string path, string nAction)
        {
            BLLPermission         bllPer  = new BLLPermission();
            List <PermissionInfo> pmsList = bllPer.GetPermissionListByPath(path);//获取页面路径权限ID

            if (!string.IsNullOrWhiteSpace(nAction))
            {
                pmsList = pmsList.Where(p => string.IsNullOrWhiteSpace(p.PermissionAction) || p.PermissionAction == nAction).ToList();
            }
            if (pmsList.Count == 0)
            {
                return(false);
            }
            List <long> pmsIDList = pmsList.Select(p => p.PermissionID).ToList();
            List <PermissionRelationInfo> rel_column_list = new List <PermissionRelationInfo>();
            List <PermissionColumn>       column_list     = new List <PermissionColumn>();
            List <long> pmsGroupIdList = GetPmsGroupIDByUser(userId);
            string      groupIds       = "''";

            if (pmsGroupIdList.Count > 0)
            {
                groupIds        = MyStringHelper.ListToStr(pmsGroupIdList, "'", ",");
                rel_column_list = bllPer.GetMultPermissionRelationList(groupIds, 3);
                if (rel_column_list.Count > 0)
                {
                    string columnRelationIds = MyStringHelper.ListToStr(rel_column_list.Select(p => p.PermissionID).ToList(), "", ",");
                    column_list = bllPer.GetMultListByKey <PermissionColumn>("PermissionColumnID", columnRelationIds);
                }
            }
            if (!string.IsNullOrWhiteSpace(websiteOwner) && userId == websiteOwner)
            {
                List <PermissionColumn> column_list1 = bllPer.GetListByKey <PermissionColumn>("WebsiteOwner", websiteOwner);
                column_list.AddRange(column_list1);
            }
            if (column_list.Count == 0)
            {
                return(false);
            }

            List <long> columnId_list  = column_list.Select(p => p.PermissionColumnID).ToList();
            List <long> columnId_list1 = column_list.Where(p => p.PermissionColumnBaseID > 0).Select(p => p.PermissionColumnBaseID).ToList();

            columnId_list.AddRange(columnId_list1);
            string columnIdStrs = MyStringHelper.ListToStr(columnId_list, "'", ",");
            List <PermissionRelationInfo> column_per_list = bllPer.GetMultPermissionRelationList(columnIdStrs, 2);

            List <long> npmsIDList = column_per_list.Select(p => p.PermissionID).ToList();

            foreach (long pmsID in pmsIDList)
            {
                if (npmsIDList.Contains(pmsID))
                {
                    return(true);
                }
            }
            return(false);
        }
Exemple #2
0
        /// <summary>
        /// 获取用户菜单HTML
        /// </summary>
        /// <param name="userID">用户ID</param>
        /// <returns></returns>
        public string GetNewUserMenuTreeHtml(string userId, string websiteOwner)
        {
            StringBuilder sb = new StringBuilder();

            try
            {
                UserInfo curUser   = BaseCacheGetUserInfo(userId);
                int      ShowLevel = 3;
                if (curUser.UserType == 1)
                {
                    ShowLevel = 1;
                }
                else if (curUser.UserID == websiteOwner)
                {
                    ShowLevel = 2;
                }
                BLLMenuInfo     bllMenu = new BLLMenuInfo();
                List <MenuInfo> list    = bllMenu.GetWebsiteMenuList(websiteOwner, ShowLevel, false, true);

                string      relationIds    = "''";
                List <long> pmsGroupIdList = GetPmsGroupIDByUser(websiteOwner);
                if (pmsGroupIdList.Count > 0)
                {
                    relationIds = MyStringHelper.ListToStr(pmsGroupIdList, "'", ",");
                }

                list = bllMenu.CheckMenuRelationList(list, websiteOwner, relationIds);
                list = bllMenu.CheckUserMenuShowLevelList(list, ShowLevel);
                list = list.Where(p => p.IsHide.Value == 0).ToList();

                List <MenuInfo> menuList = new List <MenuInfo>();
                menuList = list;

                int index = 0;
                foreach (MenuInfo item in menuList.Where(p => p.PreID == 0))
                {
                    //sb.AppendFormat("<li class=\"{0}\">", index > 0 ? "" : "active");
                    sb.AppendFormat("<li class=\"{0}\">", index > 0 ? "" : "");//默认不展开任何菜单

                    sb.AppendFormat("<a href=\"javascript:;\"><i class=\"{1}\"></i> <span class=\"nav-label\">{0}</span><span class=\"fa arrow\"></span></a>", item.NodeName, item.ICOCSS);

                    sb.AppendFormat(GetNewSingelTreeHtml(item, menuList));


                    sb.AppendFormat("</li>");
                    index++;
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return(sb.ToString());
        }
Exemple #3
0
        /// <summary>
        /// 检查栏目权限返回菜单
        /// </summary>
        /// <returns></returns>
        public List <MenuInfo> CheckPermissionColumnList(List <MenuInfo> list, string websiteOwner, UserInfo curUser)
        {
            List <MenuInfo> result = new List <MenuInfo>();

            if (list.Count == 0)
            {
                return(result);
            }
            string      relationIds    = "''";
            List <long> pmsGroupIdList = GetPmsGroupIDByUser(curUser.UserID);
            List <PermissionRelationInfo> rel_column_list = new List <PermissionRelationInfo>();
            List <PermissionColumn>       column_list     = new List <PermissionColumn>();
            BLLPermission bllPermission     = new BLLPermission();
            string        columnRelationIds = "0";

            if (pmsGroupIdList.Count > 0)
            {
                relationIds     = MyStringHelper.ListToStr(pmsGroupIdList, "'", ",");
                rel_column_list = bllPermission.GetMultPermissionRelationList(relationIds, 3);
                if (rel_column_list.Count > 0)
                {
                    columnRelationIds = MyStringHelper.ListToStr(rel_column_list.Select(p => p.PermissionID).ToList(), "", ",");
                    column_list       = bllPermission.GetMultListByKey <PermissionColumn>("PermissionColumnID", columnRelationIds);
                }
            }
            if (!string.IsNullOrWhiteSpace(websiteOwner) && curUser.UserID == websiteOwner)
            {
                List <PermissionColumn> column_list1 = bllPermission.GetListByKey <PermissionColumn>("WebsiteOwner", websiteOwner);
                column_list.AddRange(column_list1);
            }
            if (column_list.Count == 0)
            {
                return(result);
            }

            List <long> columnId_list  = column_list.Select(p => p.PermissionColumnID).ToList();
            List <long> columnId_list1 = column_list.Where(p => p.PermissionColumnBaseID > 0).Select(p => p.PermissionColumnBaseID).ToList();

            columnId_list.AddRange(columnId_list1);
            string columnRelationIdStrs = MyStringHelper.ListToStr(columnId_list, "'", ",");

            BLLMenuInfo             bllMenu          = new BLLMenuInfo();
            List <MenuRelationInfo> column_menu_list = bllMenu.GetMenuRelationListByRelationIds(columnRelationIdStrs, 5);

            if (column_menu_list.Count == 0)
            {
                return(result);
            }

            List <long> menuId_list = column_menu_list.Select(p => p.MenuID).ToList();

            result = list.Where(p => menuId_list.Contains(p.MenuID)).ToList();
            return(result);
        }
Exemple #4
0
        /// <summary>
        /// 查询用户权限组ID列表
        /// </summary>
        /// <param name="userId"></param>
        /// <returns></returns>
        public List <PermissionGroupInfo> GetUserGroupList(string userId, string websiteOwner, int groupType)
        {
            BLLMenuPermission bllUserPmsGroupRelation = new BLLMenuPermission("");
            List <long>       groupIDList             = bllUserPmsGroupRelation.BaseCacheGetUserPmsGroupRelationList(userId)
                                                        .Select(p => p.GroupID).ToList();

            if (groupIDList.Count >= 0)
            {
                string groupIDStrs = MyStringHelper.ListToStr(groupIDList, "'", ",");
                return(GetGroupList(int.MaxValue, 1, null, websiteOwner, groupIDStrs, groupType));
            }
            return(new List <PermissionGroupInfo>());
        }
Exemple #5
0
        /// <summary>
        /// 获取菜单选择列表
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        private string GetMenuSelectList(HttpContext context)
        {
            List <MenuInfo> list           = new List <MenuInfo>();
            string          websiteOwner   = context.Request["websiteOwner"];
            string          menuTypeStr    = context.Request["menuType"];
            string          showPreMenuStr = context.Request["showPreMenu"];
            int             menuType       = string.IsNullOrWhiteSpace(menuTypeStr) ? 3 : Convert.ToInt32(menuTypeStr);
            bool            showPreMenu    = showPreMenuStr == "1" ? true : false;
            string          showLevelStr   = context.Request["showLevel"];
            string          showHideStr    = context.Request["showHide"];
            bool            showHide       = showHideStr == "1" ? true : false;
            int             showLevel      = 3;

            if (currentUserInfo.UserType == 1)
            {
                showLevel = showLevelStr == "1" ? 1 : 2;
            }
            else if (currentUserInfo.UserID == pmsBll.WebsiteOwner)
            {
                showLevel = 2;
            }

            list = bllMenu.GetWebsiteMenuList(websiteOwner, showLevel, showPreMenu, showHide);

            //获取权限组ids
            string      relationIds    = "''";
            List <long> pmsGroupIdList = pmsBll.GetPmsGroupIDByUser(websiteOwner);

            if (pmsGroupIdList.Count > 0)
            {
                relationIds = MyStringHelper.ListToStr(pmsGroupIdList, "'", ",");
            }

            list = bllMenu.CheckMenuRelationList(list, websiteOwner, relationIds);
            if (!showHide)
            {
                list = list.Where(p => p.IsHide.Value == 0).ToList();
            }

            string result = string.Empty;

            result = new MySpider.MyCategories().GetSelectOptionHtml(list, "MenuID", "PreID", "NodeName", 0, "ddlPreMenu", "width:90%", "");
            return(result.ToString());
        }
Exemple #6
0
 private void AnalyseValue()
 {
     try
     {
         if (MyStringHelper.IsNumber(this.Text.Trim()) ||
             MyStringHelper.IsQuotedText(this.Text.Trim()))
         {
             this.Value = this.Text.DeserializeJson();
         }
         else
         {
             this.Value = this.Text.Trim();
         }
     }
     catch
     {
         throw;
     }
 }
Exemple #7
0
        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            if (currentUserInfo.UserType == 7)
            {
                apiResp.msg    = "查询完成";
                apiResp.status = true;
                apiResp.result = new string[] { "PMS_ONLYUPDATEPRODUCTSTOCK" };
                context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(apiResp));
                return;
            }
            string                strPsmIds = "0";
            List <long>           psmIds    = new List <long>();
            List <PermissionInfo> pmsList   = new List <PermissionInfo>();

            if (currentUserInfo.UserType != 1)
            {
                //bllUser.ToLog("PermissionInfo Get UserType != 1 ", @"D:\songhedev.txt");
                psmIds = bllMenuper.GetUserAllPmsID(currentUserInfo.UserID);
                //bllUser.ToLog("psmIds:" + JsonConvert.SerializeObject(psmIds), @"D:\songhedev.txt");
                if (psmIds.Count() > 0)
                {
                    strPsmIds = MyStringHelper.ListToStr(psmIds, "'", ",");
                }
                pmsList = bllMenuper.GetList <PermissionInfo>(string.Format(" PermissionKey>'' AND PermissionID in ({0})", strPsmIds));
            }
            else
            {
                pmsList = bllMenuper.GetList <PermissionInfo>(string.Format(" PermissionKey>'' ", strPsmIds));
            }
            List <string> strList = new List <string>();

            if (pmsList.Count > 0)
            {
                strList = pmsList.Select(p => p.PermissionKey).Distinct().ToList();
            }
            apiResp.msg    = "查询完成";
            apiResp.status = true;
            apiResp.result = strList;
            context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(apiResp));
        }
Exemple #8
0
        /// <summary>
        /// 检查站点是否包含某个权限Key
        /// </summary>
        /// <param name="userId">账户</param>
        /// <param name="permissionKey">权限key </param>
        /// <returns></returns>
        public bool CheckPermissionKey(string userId, ZentCloud.BLLPermission.Enums.PermissionSysKey permissionKey)
        {
            string                permissionKeyStr = EnumToString(permissionKey);
            BLLMenuPermission     bllMenuper       = new BLLMenuPermission("");
            List <PermissionInfo> pmsList          = new List <PermissionInfo>();
            string                strPsmIds        = "0";
            List <long>           psmIds           = bllMenuper.GetUserAllPmsID(userId);

            if (psmIds.Count() > 0)
            {
                strPsmIds = MyStringHelper.ListToStr(psmIds, "'", ",");
            }
            pmsList = bllMenuper.GetList <PermissionInfo>(string.Format(" PermissionKey>'' AND PermissionID in ({0})", strPsmIds));
            //过滤掉已经禁止的权限
            var disPmsList = GetMultPermissionRelationList("'" + userId + "'", 9);

            pmsList = pmsList.Where(p => disPmsList.Count(dis => dis.PermissionID == p.PermissionID) == 0).ToList();
            if (pmsList != null)
            {
                return(pmsList.Count(p => p.PermissionKey == permissionKeyStr) > 0);
            }
            return(false);
        }
Exemple #9
0
        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            List <PermissionInfo> pmsList = new List <PermissionInfo>();
            List <string>         strList = new List <string>();

            //if (CurrentUserInfo.UserID == "jubit")
            //{
            //    pmsList = bllMenuper.GetList<PermissionInfo>(" PermissionKey > '' ");
            //}
            //else {
            string      strPsmIds = "0";
            List <long> psmIds    = bllMenuper.GetUserAllPmsID(bllPms.WebsiteOwner);

            if (psmIds.Count() > 0)
            {
                strPsmIds = MyStringHelper.ListToStr(psmIds, "'", ",");
            }

            pmsList = bllMenuper.GetList <PermissionInfo>(string.Format(" PermissionKey>'' AND PermissionID in ({0})", strPsmIds));
            //}

            //过滤掉已经禁止的权限
            var disPmsList = bllPms.GetMultPermissionRelationList("'" + bllPms.WebsiteOwner + "'", 9);

            pmsList = pmsList.Where(p => disPmsList.Count(dis => dis.PermissionID == p.PermissionID) == 0).ToList();

            if (pmsList != null)
            {
                strList = pmsList.Select(p => p.PermissionKey).ToList();
            }
            apiResp.msg    = "ok";
            apiResp.status = true;
            apiResp.result = strList;
            context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(apiResp));
        }
Exemple #10
0
        public void ProcessRequest(HttpContext context)
        {
            string     data = context.Request["data"];
            OrderModel orderRequestModel;//订单模型

            try
            {
                orderRequestModel = JSONHelper.JsonToModel <OrderModel>(data);
            }
            catch (Exception ex)
            {
                apiResp.msg  = "提交格式错误";
                apiResp.code = (int)APIErrCode.OperateFail;
                bllMall.ContextResponse(context, apiResp);
                return;
            }

            WXMallProductInfo productInfo = bllMall.GetProduct(orderRequestModel.product_id.ToString());

            if (productInfo == null)
            {
                apiResp.msg  = "记录没有找到";
                apiResp.code = (int)APIErrCode.IsNotFound;
                bllMall.ContextResponse(context, apiResp);
                return;
            }
            WXMallOrderInfo orderInfo = new WXMallOrderInfo();//订单表

            orderInfo.ArticleCategoryType = productInfo.ArticleCategoryType;
            orderInfo.InsertDate          = DateTime.Now;
            orderInfo.OrderUserID         = CurrentUserInfo.UserID;
            orderInfo.WebsiteOwner        = bllMall.WebsiteOwner;
            orderInfo.OrderMemo           = orderRequestModel.buyer_memo;
            orderInfo.UseAmount           = orderRequestModel.use_amount;
            if (orderRequestModel.receiver_id == 0)
            {
                orderInfo.Consignee = CurrentUserInfo.TrueName;
                orderInfo.Phone     = CurrentUserInfo.Phone;
            }
            else
            {
                WXConsigneeAddress nUserAddress = bllMall.GetByKey <WXConsigneeAddress>("AutoID", orderRequestModel.receiver_id.ToString());
                orderInfo.Consignee            = nUserAddress.ConsigneeName;
                orderInfo.Phone                = nUserAddress.Phone;
                orderInfo.Address              = nUserAddress.Address;
                orderInfo.ZipCode              = nUserAddress.ZipCode;
                orderInfo.ReceiverProvince     = nUserAddress.Province;
                orderInfo.ReceiverProvinceCode = nUserAddress.ProvinceCode;
                orderInfo.ReceiverCity         = nUserAddress.City;
                orderInfo.ReceiverCityCode     = nUserAddress.CityCode;
                orderInfo.ReceiverDist         = nUserAddress.Dist;
                orderInfo.ReceiverDistCode     = nUserAddress.DistCode;
            }

            orderInfo.Transport_Fee = 0;
            orderInfo.Status        = "待付款";
            if (orderRequestModel.pay_type == "WEIXIN")//微信支付
            {
                orderInfo.PaymentType = 2;
            }
            else if (orderRequestModel.pay_type == "ALIPAY")//支付宝支付
            {
                orderInfo.PaymentType = 1;
            }
            if (orderRequestModel.skus == null || orderRequestModel.skus.Count == 0)
            {
                apiResp.msg  = "Skus不能为空";
                apiResp.code = (int)APIErrCode.OperateFail;
                bllMall.ContextResponse(context, apiResp);
                return;
            }

            #region 商品检查 订单详情生成
            //订单详情
            List <WXMallOrderDetailsInfo> detailList      = new List <WXMallOrderDetailsInfo>(); //主商品订单明细
            List <WXMallOrderDetailsInfo> detailAddedList = new List <WXMallOrderDetailsInfo>(); //增值服务订单明细
            orderRequestModel.skus = orderRequestModel.skus.Distinct().ToList();
            #region 购买的商品
            foreach (var sku in orderRequestModel.skus)
            {
                ProductSku             productSku  = bllMall.GetProductSku(sku.sku_id);
                WXMallOrderDetailsInfo detailModel = new WXMallOrderDetailsInfo();
                detailModel.TotalCount          = sku.count;
                detailModel.OrderPrice          = bllMall.GetSkuPrice(productSku);
                detailModel.SkuId               = productSku.SkuId;
                detailModel.ArticleCategoryType = productSku.ArticleCategoryType;
                if (productSku.ArticleCategoryType.Contains("Added"))
                {
                    WXMallProductInfo rproductInfo = bllMall.GetProduct(productSku.ProductId.ToString());
                    detailModel.PID         = rproductInfo.PID;
                    detailModel.ProductName = rproductInfo.PName;
                    detailModel.Unit        = rproductInfo.Unit;
                    detailAddedList.Add(detailModel);
                }
                else
                {
                    detailModel.PID         = productInfo.PID;
                    detailModel.ProductName = productInfo.PName;
                    detailModel.StartDate   = sku.start_date;
                    detailModel.EndDate     = sku.end_date;
                    detailModel.Unit        = productInfo.Unit;
                    detailList.Add(detailModel);
                }
            }
            #endregion
            if (detailList.Count == 0)
            {
                apiResp.msg  = "请选择预约时间";
                apiResp.code = (int)APIErrCode.OperateFail;
                bllMall.ContextResponse(context, apiResp);
                return;
            }
            //已有订单详情
            List <WXMallOrderDetailsInfo> oDetailList = bllMall.GetOrderDetailsList(null, productInfo.PID, productInfo.ArticleCategoryType, detailList.Min(p => p.StartDate), detailList.Max(p => p.EndDate));
            List <string> hasOrderID_List             = new List <string>();
            string        hasOrderIDs = "";
            int           maxCount    = productInfo.Stock;
            foreach (var item in detailList)
            {
                List <WXMallOrderDetailsInfo> hasOrderDetailList = oDetailList.Where(p => !((item.StartDate >= p.EndDate && item.EndDate > p.EndDate) || (item.StartDate < p.StartDate && item.EndDate <= p.StartDate))).ToList();
                if (hasOrderDetailList.Count >= maxCount)
                {
                    hasOrderID_List.AddRange(hasOrderDetailList.Select(p => p.OrderID).Distinct());
                }
            }
            if (hasOrderID_List.Count > 0)
            {
                hasOrderID_List = hasOrderID_List.Distinct().ToList();
                hasOrderIDs     = MyStringHelper.ListToStr(hasOrderID_List, "'", ",");
                int tempCount = 0;
                List <WXMallOrderInfo> tempList = bllMall.GetOrderList(0, 1, "", out tempCount, "预约成功", null, null, null,
                                                                       null, null, null, null, null, null, null, orderInfo.ArticleCategoryType, hasOrderIDs);
                if (tempCount >= maxCount)
                {
                    apiResp.msg  = "所选时间已有成功的预约";
                    apiResp.code = (int)APIErrCode.OperateFail;
                    bllMall.ContextResponse(context, apiResp);
                    return;
                }
            }
            //增值服务合并到主订单明细列表
            detailList.AddRange(detailAddedList);
            //合计计算
            orderInfo.Product_Fee = detailList.Sum(p => p.OrderPrice * p.TotalCount).Value;

            #region 积分计算

            decimal scoreExchangeAmount = 0;//积分抵扣的金额
            //积分计算
            if (orderRequestModel.use_score > 0 && orderInfo.Product_Fee > 0)
            {
                orderInfo.UseScore = orderRequestModel.use_score;
                if (CurrentUserInfo.TotalScore < orderRequestModel.use_score)
                {
                    apiResp.msg  = "积分不足";
                    apiResp.code = (int)APIErrCode.OperateFail;
                    bllMall.ContextResponse(context, apiResp);
                    return;
                }
                ScoreConfig scoreConfig = bllScore.GetScoreConfig();
                scoreExchangeAmount = Math.Round(orderRequestModel.use_score / (scoreConfig.ExchangeScore / scoreConfig.ExchangeAmount), 2);
            }
            //积分计算
            #endregion

            #region 使用账户余额
            if (orderRequestModel.use_amount > 0)
            {
                if (!bllMall.IsEnableAccountAmountPay())
                {
                    apiResp.msg  = "未开启余额支付";
                    apiResp.code = (int)APIErrCode.OperateFail;
                    bllMall.ContextResponse(context, apiResp);
                    return;
                }
                if (CurrentUserInfo.AccountAmount < orderRequestModel.use_amount)
                {
                    apiResp.msg  = "您的账户余额不足";
                    apiResp.code = (int)APIErrCode.OperateFail;
                    bllMall.ContextResponse(context, apiResp);
                    return;
                }
            }
            #endregion

            orderInfo.TotalAmount   = orderInfo.Product_Fee + orderInfo.Transport_Fee;
            orderInfo.TotalAmount  -= scoreExchangeAmount;                             //积分优惠金额
            orderInfo.TotalAmount  -= orderRequestModel.use_amount;                    //余额抵扣金额
            orderInfo.PayableAmount = orderInfo.TotalAmount - orderInfo.Transport_Fee; //应付金额
            if ((orderInfo.Product_Fee + orderInfo.Transport_Fee - scoreExchangeAmount) < orderInfo.TotalAmount)
            {
                apiResp.msg  = "积分兑换金额不能大于订单总金额,请减少积分兑换";
                apiResp.code = (int)APIErrCode.OperateFail;
                bllMall.ContextResponse(context, apiResp);
                return;
            }

            if (orderInfo.TotalAmount < 0)
            {
                orderInfo.TotalAmount = 0;
            }
            if (orderInfo.TotalAmount == 0 && orderInfo.UseScore == 0)
            {
                orderInfo.Status = "待审核";
            }
            else if (orderInfo.TotalAmount == 0 && (orderInfo.UseAmount > 0 || orderInfo.UseScore > 0))
            {
                orderInfo.PaymentStatus = 1;
                orderInfo.PayTime       = DateTime.Now;
                orderInfo.Status        = "预约成功";
            }

            #endregion

            //生成订单ID
            orderInfo.OrderID = bllMall.GetGUID(BLLJIMP.TransacType.AddMallOrder);
            BLLTransaction tran = new BLLTransaction();
            if (!this.bllMall.Add(orderInfo, tran))
            {
                tran.Rollback();
                apiResp.msg  = "提交失败";
                apiResp.code = (int)APIErrCode.OperateFail;
                bllMall.ContextResponse(context, apiResp);
                return;
            }
            foreach (var item in detailList)
            {
                item.OrderID = orderInfo.OrderID;
                if (!this.bllMall.Add(item, tran))
                {
                    tran.Rollback();
                    apiResp.msg  = "提交失败";
                    apiResp.code = (int)APIErrCode.OperateFail;
                    bllMall.ContextResponse(context, apiResp);
                    return;
                }
            }

            #region 积分抵扣
            //积分扣除
            if (orderRequestModel.use_score > 0)
            {
                CurrentUserInfo.TotalScore -= orderRequestModel.use_score;
                if (bllMall.Update(CurrentUserInfo,
                                   string.Format(" TotalScore-={0}", orderRequestModel.use_score),
                                   string.Format(" AutoID={0}", CurrentUserInfo.AutoID)
                                   , tran) < 0)
                {
                    tran.Rollback();
                    apiResp.msg  = "更新用户积分失败";
                    apiResp.code = (int)APIErrCode.OperateFail;
                    bllMall.ContextResponse(context, apiResp);
                    return;
                }

                //积分记录
                UserScoreDetailsInfo scoreRecord = new UserScoreDetailsInfo();
                scoreRecord.AddTime      = DateTime.Now;
                scoreRecord.Score        = -orderRequestModel.use_score;
                scoreRecord.TotalScore   = CurrentUserInfo.TotalScore;
                scoreRecord.ScoreType    = "OrderSubmit";
                scoreRecord.UserID       = CurrentUserInfo.UserID;
                scoreRecord.AddNote      = "预约-下单使用积分";
                scoreRecord.RelationID   = orderInfo.OrderID;
                scoreRecord.WebSiteOwner = CurrentUserInfo.WebsiteOwner;
                if (!bllMall.Add(scoreRecord))
                {
                    tran.Rollback();
                    apiResp.msg  = "插入积分记录失败";
                    apiResp.code = (int)APIErrCode.OperateFail;
                    bllMall.ContextResponse(context, apiResp);
                    return;
                }
            }
            //积分扣除
            #endregion

            #region 余额抵扣

            if (orderRequestModel.use_amount > 0 && bllMall.IsEnableAccountAmountPay())
            {
                CurrentUserInfo.AccountAmount -= orderRequestModel.use_amount;
                if (bllMall.Update(CurrentUserInfo, string.Format(" AccountAmount={0}", CurrentUserInfo.AccountAmount), string.Format(" AutoID={0}", CurrentUserInfo.AutoID)) < 0)
                {
                    tran.Rollback();
                    apiResp.msg  = "更新用户余额失败";
                    apiResp.code = (int)APIErrCode.OperateFail;
                    bllMall.ContextResponse(context, apiResp);
                    return;
                }


                UserScoreDetailsInfo scoreRecord = new UserScoreDetailsInfo();
                scoreRecord.AddTime      = DateTime.Now;
                scoreRecord.Score        = -(double)orderRequestModel.use_amount;
                scoreRecord.TotalScore   = (double)CurrentUserInfo.AccountAmount;
                scoreRecord.UserID       = CurrentUserInfo.UserID;
                scoreRecord.AddNote      = "账户余额变动-下单使用余额";
                scoreRecord.RelationID   = orderInfo.OrderID;
                scoreRecord.WebSiteOwner = bllMall.WebsiteOwner;
                scoreRecord.ScoreType    = "AccountAmount";
                if (!bllMall.Add(scoreRecord))
                {
                    tran.Rollback();
                    apiResp.code = (int)APIErrCode.OperateFail;
                    apiResp.msg  = "插入余额记录失败";
                    context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(apiResp));
                    return;
                }

                UserCreditAcountDetails record = new UserCreditAcountDetails();
                record.WebsiteOwner = bllMall.WebsiteOwner;
                record.Operator     = CurrentUserInfo.UserID;
                record.UserID       = CurrentUserInfo.UserID;
                record.CreditAcount = -orderRequestModel.use_amount;
                record.SysType      = "AccountAmount";
                record.AddTime      = DateTime.Now;
                record.AddNote      = "账户余额变动-" + orderRequestModel.use_amount;
                if (!bllMall.Add(record))
                {
                    tran.Rollback();

                    apiResp.msg  = "插入余额记录失败";
                    apiResp.code = (int)APIErrCode.OperateFail;
                    bllMall.ContextResponse(context, apiResp);
                    return;
                }
            }


            #endregion
            tran.Commit();//提交订单事务

            if (orderInfo.Status == "预约成功")
            {
                int tempCount = 0;
                if (string.IsNullOrWhiteSpace(hasOrderIDs))
                {
                    hasOrderIDs = "'0'";
                }
                List <WXMallOrderInfo> tempList = bllMall.GetOrderList(0, 1, "", out tempCount, "预约成功", null, null, null,
                                                                       null, null, null, null, null, null, null, orderInfo.ArticleCategoryType, hasOrderIDs);
                tempCount = tempCount + 1; //加上当前订单的数量
                if (tempCount >= maxCount)
                {
                    tempList = bllMall.GetColOrderListInStatus("'待付款','待审核'", hasOrderIDs, "OrderID,OrderUserID,UseScore", bllMall.WebsiteOwner);
                    if (tempList.Count > 0)
                    {
                        string stopOrderIds = MyStringHelper.ListToStr(tempList.Select(p => p.OrderID).ToList(), "'", ",");
                        tempList = tempList.Where(p => p.UseScore > 0).ToList();
                        foreach (var item in tempList)
                        {
                            UserInfo orderUserInfo = bllUser.GetUserInfo(orderInfo.OrderUserID, bllMall.WebsiteOwner);//下单用户信息
                            if (orderUserInfo == null)
                            {
                                continue;
                            }
                            orderUserInfo.TotalScore += item.UseScore;
                            if (bllMall.Update(orderUserInfo, string.Format(" TotalScore+={0}", item.UseScore),
                                               string.Format(" UserID='{0}'", item.OrderUserID)) > 0)
                            {
                                UserScoreDetailsInfo scoreRecord = new UserScoreDetailsInfo();
                                scoreRecord.AddTime      = DateTime.Now;
                                scoreRecord.Score        = item.UseScore;
                                scoreRecord.TotalScore   = orderUserInfo.TotalScore;
                                scoreRecord.ScoreType    = "OrderCancel";
                                scoreRecord.UserID       = item.OrderUserID;
                                scoreRecord.RelationID   = item.OrderID;
                                scoreRecord.AddNote      = "预约-订单失败返还积分";
                                scoreRecord.WebSiteOwner = item.WebsiteOwner;
                                bllMall.Add(scoreRecord);
                            }
                        }
                        bllMall.Update(new WXMallOrderInfo(),
                                       string.Format("Status='{0}'", "预约失败"),
                                       string.Format("OrderID In ({0}) and WebsiteOwner='{1}'", stopOrderIds, bllMall.WebsiteOwner));
                    }
                }
            }


            //预约通知
            bllWeiXin.SendTemplateMessageNotifyComm(CurrentUserInfo, orderInfo.Status, string.Format("预约:{2}\\n订单号:{0}\\n订单金额:{1}元", orderInfo.OrderID, orderInfo.TotalAmount, productInfo.PName));

            apiResp.result = new
            {
                order_id = orderInfo.OrderID
            };
            apiResp.msg    = "提交完成";
            apiResp.code   = (int)APIErrCode.IsSuccess;
            apiResp.status = true;
            bllMall.ContextResponse(context, apiResp);
        }
Exemple #11
0
        public void ProcessRequest(HttpContext context)
        {
            try
            {
                Tolog("京东支付通知start");
                var    payConfig = bllPay.GetPayConfig();
                byte[] byts      = new byte[context.Request.InputStream.Length];
                context.Request.InputStream.Read(byts, 0, byts.Length);
                string req = Encoding.UTF8.GetString(byts);
                Tolog("通知参数" + req);

                //var jdPubKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCKE5N2xm3NIrXON8Zj19GNtLZ8xwEQ6uDIyrS3S03UhgBJMkGl4msfq4Xuxv6XUAN7oU1XhV3/xtabr9rXto4Ke3d6WwNbxwXnK5LSgsQc1BhT5NcXHXpGBdt7P8NMez5qGieOKqHGvT0qvjyYnYA29a8Z4wzNR7vAVHp36uD5RwIDAQAB";

                //req = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?><jdpay><version>V2.0</version><merchant>110226843002</merchant><result><code>000000</code><desc>success</desc></result><encrypt>MDIxZjNkNjI1YjU1NzQ4MWE5N2ExMTg3YjkxNmQ4NzkxYzQyMmFjZjM4YTM1MjZjY2JjNzM1ZDkxY2Q5ZDNmMTMzMGFjYTBkNTI0MzYzNjc3MTVhODI3OWUzZTAxMmY5ODEyOTVmNDNiNWY5MDZhZGJiYTcwYTYyOTFlYzVmYTU2Y2EyN2U1YzhkNzllMGE3ZTUyNDE4NWU4OWMxNjIwNDFkODcyYzJiZDA4ZWY4YWEyMmY5ZWUxNDk3YTg3MTI3YmU1NTMxNjc5NWJiOTlmN2ZmNGU1MTc1YWJhNjNkYjUzYWUwZDQzOTk4ZjIzMjBiYmVkNGJkMDcxOWUzOThjZjU1ODUwNzM4Y2RiNzM2Njc1N2U2ZTcxN2Q0N2ZiYTZmN2M1YzBiYzRmMjc4ZThiZDNhYTkxZTExNzBiYjg2ZDNjNmQ3OWUyZTBlYjUzZWNlZjFjODQ2MzdiN2E5MTQxN2Y3NmRhZmNkNDdiMzMwNjc1MGRhYjhiYzg0NTFkOWNiY2QyMDZhOTJiYzU2YTFiOWEwMjRmNTZhMWZhNTVhNjlmYTA1ZDFlMmI0YTI4MGE1YTU0N2NlMjc3ZWMwM2QyNWE4ODdlOTA0ZGM3YTY2MDViY2I1OTI5MDBlYWU4MGU0Mzc4MmEwOWY3ZjEwZTk5MGZkOGUzYTA4MzNkNGMyZGZkNWM3MDhkOGU4N2NhMmQyZGM1MDgwYzUyOTg3OGNkMzFhZWRkMTE1NDM5ZjExYTM2OGM2OGE4MGZjZTYyMjJkNzlmODcwNGYyNDMzMTYyZThhZTBkODM2ODBjYzg5ZGRjMWY3ZGVmYzQzYjc4MDZiMDNhMTBmZTc2YjI3MThjYjQ0YjQwZDkyY2E3OGUzYmYzZmFlNjBlOTI4OGU1ODVkNjBjMWZiNDBmMjFjNzVmNDkxYmRkYWFlNzQ0YjZkYmU1ODNkOWQ4OGYwN2EyMDViOWQ5MGNjMzViMTE3MDQ4NWVlNTdlN2Y5MTRhZDM3YzFlODY1NDFiZmQyNDg1MzhlZGZiNDNiZWZmZjY3YmE3NWQ5YjI0MzE4ZDMzMDE5NTE3YWM4ZTJiMDZhZWYyM2NhNjMwODc3MDhkNTdkZWI3MWVhMmY2MzA2ZDliZjBmZGFlNzQ3ODgzODg0ZjVhOWFkODIxYWM0NGQ1ZDlmMGRlNDhkMjBiYTJjYmQ4NTlkMmU3NDMxZDExZmRjMzkxMDU3ZmE3NGE0Yzg2OThkMmY0ZWQ1ZjE3MjIwOWQ1ZTBmZGIzZjFhNGYwOTllZWY5YzRiMWYyZDAxZjlhNzhlYWY5ZjU0YmIyZjczNmUxMjJkNWY2NzhlMDFmYjU0YjY3NWRlYTc1ZWZkNmMwNTJhZmY3ZGVhMGM5NjAyMWQwMGQyMjI2NzdhM2RlNDdhMTdkMWI4ZWQxYmEyYWZlZDg1ZjI4NDk2ZmI2MGVjOTc5OTc4MjgzZTEyNzY2ZmI1OWUzZjY1MWI4OTVlMmQ4OGNlNGRhODg0NzJiNTFiN2RmZDc5NzdkNDk4NTY0NGU4ZjBmNGZjMTM3MmUzMGNhMTUwOTFkNDFhODIzMjZiODU0YjMzNmI1N2EwZDVjMjZjOWNjMzBlMjFjZjNkMDA0NjQ4Zjk0NjQzZWRhOTU1MmIyZjJkYzZjNGJmOTU5MDIzNTBlODlmOTNhZDRhYmEyMzZiY2E1OWE4NzY5Mjc0ZTcwN2MyNGFjNGJmOTU5MDIzNTBlODlmNDNlZGE5NTUyYjJmMmRjNjU0MTNlZjYxZTNlODc4MDk3MmNiYjg3NTVjNmU1NWNlZDljNWU0ZDE5ZTRmZjJjZTAxNmJiMGIzYWFlOTdlYTQzYmM5NWVmMGU0ZjUyNzY4NDNlZGE5NTUyYjJmMmRjNmMyOWRiYWZkYTNjYzQ1M2E3ZGJhZWNjZWJmNGIxZmQ5MTMxMmRiMzliOTU2YzBmNmNiODMxMDQ1ZDBiYjM1ZTNmMzlmMGE0ODNiN2M3ODYyZjNjMTFiN2ZiODljNDNkMjE4NGFlNzU5M2JhMmQ2YTJkOWMwMmYxYTBlNTg2MzhkYzU0NzE0NjExNzkyNGU4ZjQ4NDgzMTAyNDY5OGRlNGZiMDVmNGQzNzE3NGMwOGI2NGU2NjkxMmU2NGY5M2I0YjNiMThmMzZiZmY0NTgwN2FjMDAxOWRlY2ZkYTcyOGFmNzIyZTQwNjhlMTViM2UwMmQzMmRiYjJkOTE2MmQzNWMzZWM2OGRkZjJjMjdmOTRhZGNmYzEzOTdlOWY0NjQwODFiYWU0Y2E3Y2NjZDY0NjQzNGFmZWU4ODExYWRiZTBlY2MwY2JlOThmNDliMDZkYjE2YjNjNTZhOTRiOGZkMDU=</encrypt></jdpay>";

                //req = Regex.Replace(req, @"[\t\n\r]", "", RegexOptions.IgnoreCase);

                req = req.Replace("\r", "").Replace("\n", "").Replace("\t", "");

                AsynNotifyResponse anyResponse = Payment.JDPay.XMLUtil.decryptResXml <AsynNotifyResponse>(Payment.JDPay.Config.JDPubKey, payConfig.JDPayDESKey, req);
                // System.Diagnostics.Debug.WriteLine("异步通知订单号:" + anyResponse.tradeNum + ",状态:" + anyResponse.status);
                Tolog("异步通知订单号:" + anyResponse.tradeNum + ",状态:" + anyResponse.status);
                var orderId   = anyResponse.tradeNum;
                var orderInfo = bllMall.GetOrderInfo(orderId);
                if (orderInfo == null)
                {
                    //context.Response.Write("订单未找到");
                    context.Response.StatusCode = 500;
                    context.Response.Write(failStr);
                    return;
                }
                if (orderInfo.PaymentStatus.Equals(1))
                {
                    //Tolog("已支付");
                    // context.Response.Write("订单已支付");
                    context.Response.StatusCode = 200;
                    context.Response.Write(successStr);
                    return;
                }



                if (anyResponse.status == "2")
                {
                    orderInfo.PaymentType = 3;

                    //支付成功
                    WXMallProductInfo tProductInfo  = new WXMallProductInfo();
                    UserInfo          orderUserInfo = bllUser.GetUserInfo(orderInfo.OrderUserID, orderInfo.WebsiteOwner);//下单用户信息
                    string            hasOrderIDs   = "";
                    int maxCount = 1;
                    //Tolog("准备检查更新订单状态");
                    if (BLLJIMP.BLLMall.bookingList.Contains(orderInfo.ArticleCategoryType))
                    {
                        //Tolog("预订类型");
                        #region 预约订单修改状态
                        orderInfo.PaymentStatus = 1;
                        orderInfo.PayTime       = DateTime.Now;
                        orderInfo.Status        = "预约成功";

                        #region 检查是否有预约成功的订单
                        List <WXMallOrderDetailsInfo> tDetailList = bllMall.GetOrderDetailsList(orderInfo.OrderID, null, orderInfo.ArticleCategoryType, null, null);
                        List <WXMallOrderDetailsInfo> oDetailList = bllMall.GetOrderDetailsList(null, tDetailList[0].PID, orderInfo.ArticleCategoryType, tDetailList.Min(p => p.StartDate), tDetailList.Max(p => p.EndDate));
                        tProductInfo = bllMall.GetByKey <WXMallProductInfo>("PID", tDetailList[0].PID);
                        maxCount     = tProductInfo.Stock;
                        List <string> hasOrderIDList = new List <string>();
                        foreach (var item in tDetailList)
                        {
                            List <WXMallOrderDetailsInfo> hasOrderDetailList = oDetailList.Where(p => !((item.StartDate >= p.EndDate && item.EndDate > p.EndDate) || (item.StartDate < p.StartDate && item.EndDate <= p.StartDate))).ToList();
                            if (hasOrderDetailList.Count >= maxCount)
                            {
                                hasOrderIDList.AddRange(hasOrderDetailList.Select(p => p.OrderID).Distinct());
                            }
                        }
                        hasOrderIDList = hasOrderIDList.Where(p => !p.Contains(orderInfo.OrderID)).ToList();
                        if (hasOrderIDList.Count > 0)
                        {
                            hasOrderIDList = hasOrderIDList.Distinct().ToList();
                            hasOrderIDs    = MyStringHelper.ListToStr(hasOrderIDList, "'", ",");
                        }
                        #endregion 检查是否有预约成功的订单

                        #endregion 预约订单修改状态
                    }
                    else
                    {
                        //Tolog("普通类型");
                        #region 原订单修改状态
                        orderInfo.PaymentStatus = 1;
                        orderInfo.Status        = "待发货";
                        orderInfo.PayTime       = DateTime.Now;
                        Tolog("更改状态start");
                        //if (bllMall.GetWebsiteInfoModelFromDataBase().IsDistributionMall.Equals(1))
                        //{
                        orderInfo.GroupBuyStatus     = "0";
                        orderInfo.DistributionStatus = 1;

                        #region 拼团订单
                        if (orderInfo.OrderType == 2)
                        {
                            try
                            {
                                if (!string.IsNullOrEmpty(orderInfo.GroupBuyParentOrderId))
                                {
                                    var parentOrderInfo = bllMall.GetOrderInfo(orderInfo.GroupBuyParentOrderId);

                                    if (bllMall.GetCount <WXMallOrderInfo>(string.Format("PaymentStatus=1 And GroupBuyParentOrderId='{0}' Or OrderId='{0}'", parentOrderInfo.OrderID)) >= parentOrderInfo.PeopleCount)
                                    {
                                        bllMall.Update(new WXMallOrderInfo(), string.Format("Status='已取消'"), string.Format("  GroupBuyParentOrderId='{0}' And PaymentStatus=0", parentOrderInfo.OrderID));
                                        parentOrderInfo.GroupBuyStatus = "1";
                                        bllMall.Update(parentOrderInfo);
                                    }
                                }
                            }
                            catch (Exception)
                            {
                            }
                        }
                        #endregion

                        #region 活动订单
                        if (orderInfo.OrderType == 4)
                        {
                            ActivityDataInfo data = bllMall.Get <ActivityDataInfo>(string.Format(" OrderId='{0}'", orderInfo.OrderID));
                            if (data != null)
                            {
                                bllMall.Update(data, string.Format(" PaymentStatus=1"), string.Format("  OrderId='{0}'", orderInfo.OrderID));
                            }
                        }
                        #endregion

                        bllMall.Update(orderInfo, string.Format("PaymentStatus=1,Status='待发货',PayTime=GETDATE(),DistributionStatus=1"), string.Format("ParentOrderId='{0}'", orderInfo.OrderID));

                        //}
                        #endregion 原订单修改状态

                        //orderInfo.PayTranNo = tradeNo;
                    }
                    bool result = false;

                    if (BLLJIMP.BLLMall.bookingList.Contains(orderInfo.ArticleCategoryType))
                    {
                        if (string.IsNullOrWhiteSpace(hasOrderIDs))
                        {
                            hasOrderIDs = "'0'";
                        }
                        result = bllMall.Update(new WXMallOrderInfo(),
                                                string.Format("PaymentStatus={0},PayTime=GetDate(),Status='{1}'", 1, "预约成功"),
                                                string.Format("OrderID='{0}' and WebsiteOwner='{4}' AND (select count(1) from [ZCJ_WXMallOrderInfo] where Status='{3}' and WebsiteOwner='{4}' and  OrderID IN({1}))<{2}",
                                                              orderInfo.OrderID, hasOrderIDs, maxCount, "预约成功", bllMall.WebsiteOwner)
                                                ) > 0;
                        if (result)
                        {
                            // #region 交易成功加积分
                            //增加积分 (慧聚不需要)
                            //if (orderInfo.TotalAmount > 0)
                            //{
                            //    ScoreConfig scoreConfig = bllScore.GetScoreConfig();
                            //    int addScore = 0;
                            //    if (scoreConfig != null && scoreConfig.OrderAmount > 0 && scoreConfig.OrderScore > 0)
                            //    {
                            //        addScore = (int)(orderInfo.PayableAmount / (scoreConfig.OrderAmount / scoreConfig.OrderScore));
                            //    }
                            //    if (addScore > 0)
                            //    {
                            //        if (bllUser.Update(new UserInfo(),
                            //            string.Format(" TotalScore+={0},HistoryTotalScore+={0}", addScore),
                            //            string.Format(" UserID='{0}'", orderInfo.OrderUserID)) > 0)
                            //        {
                            //            UserScoreDetailsInfo scoreRecord = new UserScoreDetailsInfo();
                            //            scoreRecord.AddTime = DateTime.Now;
                            //            scoreRecord.Score = addScore;
                            //            scoreRecord.ScoreType = "OrderSuccess";
                            //            scoreRecord.UserID = orderInfo.OrderUserID;
                            //            scoreRecord.AddNote = "预约-交易成功获得积分";
                            //            bllMall.Add(scoreRecord);
                            //        }
                            //    }
                            //}
                            // #endregion

                            #region 修改其他预约订单为预约失败 返还积分

                            if (BLLJIMP.BLLMall.bookingList.Contains(orderInfo.ArticleCategoryType) && !string.IsNullOrWhiteSpace(hasOrderIDs))
                            {
                                int tempCount = 0;
                                List <WXMallOrderInfo> tempList = bllMall.GetOrderList(0, 1, "", out tempCount, "预约成功", null, null, null,
                                                                                       null, null, null, null, null, null, null, orderInfo.ArticleCategoryType, hasOrderIDs);
                                tempCount = tempCount + 1; //加上当前订单的数量
                                if (tempCount >= maxCount)
                                {
                                    tempList = bllMall.GetColOrderListInStatus("'待付款','待审核'", hasOrderIDs, "OrderID,OrderUserID,UseScore", bllMall.WebsiteOwner);
                                    if (tempList.Count > 0)
                                    {
                                        string stopOrderIds = MyStringHelper.ListToStr(tempList.Select(p => p.OrderID).ToList(), "'", ",");
                                        tempList = tempList.Where(p => p.UseScore > 0).ToList();
                                        foreach (var item in tempList)
                                        {
                                            orderUserInfo.TotalScore += item.UseScore;
                                            if (bllUser.Update(new UserInfo(), string.Format(" TotalScore+={0}", item.UseScore),
                                                               string.Format(" UserID='{0}'", item.OrderUserID)) > 0)
                                            {
                                                UserScoreDetailsInfo scoreRecord = new UserScoreDetailsInfo();
                                                scoreRecord.AddTime      = DateTime.Now;
                                                scoreRecord.Score        = item.UseScore;
                                                scoreRecord.TotalScore   = orderUserInfo.TotalScore;
                                                scoreRecord.ScoreType    = "OrderCancel";
                                                scoreRecord.UserID       = item.OrderUserID;
                                                scoreRecord.RelationID   = item.OrderID;
                                                scoreRecord.AddNote      = "预约-订单失败返还积分";
                                                scoreRecord.WebSiteOwner = item.WebsiteOwner;
                                                bllMall.Add(scoreRecord);
                                            }
                                        }
                                        bllMall.Update(new WXMallOrderInfo(),
                                                       string.Format("Status='{0}'", "预约失败"),
                                                       string.Format("OrderID In ({0}) and WebsiteOwner='{1}'", stopOrderIds, bllMall.WebsiteOwner));
                                    }
                                }
                                //Tolog("更改修改其他预约为预约失败");
                            }
                            #endregion
                        }
                    }
                    else
                    {
                        result = bllMall.Update(orderInfo);
                    }
                    if (result)
                    {
                        Open.HongWareSDK.Client hongWareClient = new Open.HongWareSDK.Client(orderInfo.WebsiteOwner);

                        //Tolog("更改状态true");

                        #region Efast同步
                        //判读当前站点是否需要同步到驿氪和efast
                        if (bllCommRelation.ExistRelation(BLLJIMP.Enums.CommRelationType.SyncEfast, bllCommRelation.WebsiteOwner, ""))
                        {
                            try
                            {
                                Tolog("开始同步efast");

                                string outOrderId = string.Empty, msg = string.Empty;
                                var    syncResult = bllEfast.CreateOrder(orderInfo.OrderID, out outOrderId, out msg);
                                if (syncResult)
                                {
                                    orderInfo.OutOrderId = outOrderId;
                                    bllMall.Update(orderInfo);
                                }
                                Tolog(string.Format("efast订单同步结果:{0},订单号:{1},提示信息:{2}", syncResult, outOrderId, msg));
                            }
                            catch (Exception ex)
                            {
                                Tolog("efast订单同步异常:" + ex.Message);
                            }
                        }
                        #endregion

                        #region 驿氪同步
                        if (bllCommRelation.ExistRelation(BLLJIMP.Enums.CommRelationType.SyncYike, bllCommRelation.WebsiteOwner, ""))
                        {
                            try
                            {
                                Tolog("开始同步驿氪");
                                //同步成功订单到驿氪

                                //UserInfo orderUserInfo = bllUser.GetUserInfo(orderInfo.OrderUserID);
                                //if ((!string.IsNullOrEmpty(orderUserInfo.Ex1)) && (!string.IsNullOrEmpty(orderUserInfo.Ex2)) && (!string.IsNullOrEmpty(orderUserInfo.Phone)))
                                //{
                                //    client.BonusUpdate(orderUserInfo.Ex2, -(orderInfo.UseScore), "商城下单使用积分" + orderInfo.UseScore);

                                //}
                                var uploadOrderResult = yikeClient.OrderUpload(orderInfo);

                                Tolog(string.Format("驿氪订单同步结果:{0}", Common.JSONHelper.ObjectToJson(uploadOrderResult)));
                            }
                            catch (Exception ex)
                            {
                                Tolog("驿氪订单同步异常:" + ex.Message);
                            }
                        }
                        #endregion

                        #region 付款加积分
                        try
                        {
                            bllUser.AddUserScoreDetail(orderInfo.OrderUserID, CommonPlatform.Helper.EnumStringHelper.ToString(ZentCloud.BLLJIMP.Enums.ScoreDefineType.OrderPay), bllMall.WebsiteOwner, null, null);
                        }
                        catch (Exception)
                        { }

                        #endregion


                        #region 消息通知
                        if (!BLLJIMP.BLLMall.bookingList.Contains(orderInfo.ArticleCategoryType))
                        {
                            try
                            {
                                var    productName = bllMall.GetOrderDetailsList(orderInfo.OrderID)[0].ProductName;
                                string remark      = "";
                                if (!string.IsNullOrEmpty(orderInfo.OrderMemo))
                                {
                                    remark = string.Format("客户留言:{0}", orderInfo.OrderMemo);
                                }
                                bllWeiXin.SendTemplateMessageToKefu("有新的订单", string.Format("订单号:{0}\\n订单金额:{1}元\\n收货人:{2}\\n电话:{3}\\n商品:{4}\\n{5}", orderInfo.OrderID, orderInfo.TotalAmount, orderInfo.Consignee, orderInfo.Phone, productName, remark));
                                if (orderInfo.OrderType != 4)//付费的活动不发消息
                                {
                                    if (orderInfo.WebsiteOwner != "jikuwifi")
                                    {
                                        string url = string.Format("http://{0}/customize/shop/?v=1.0&ngroute=/orderDetail/{1}#/orderDetail/{1}", context.Request.Url.Host, orderInfo.OrderID);
                                        bllWeiXin.SendTemplateMessageNotifyComm(orderUserInfo, "订单已成功支付,我们将尽快发货,请保持手机畅通等待物流送达!", string.Format("订单号:{0}\\n订单金额:{1}元\\n收货人:{2}\\n电话:{3}\\n商品:{4}...\\n查看详情", orderInfo.OrderID, orderInfo.TotalAmount, orderInfo.Consignee, orderInfo.Phone, productName), url);
                                    }
                                }
                            }
                            catch (Exception)
                            {
                            }
                        }
                        else
                        {
                            try
                            {
                                bllWeiXin.SendTemplateMessageToKefu(orderInfo.Status, string.Format("预约:{2}\\n订单号:{0}\\n订单金额:{1}元\\n预约人:{3}\\n预约人手机:{4}", orderInfo.OrderID, orderInfo.TotalAmount, tProductInfo.PName, orderUserInfo.TrueName, orderUserInfo.Phone));
                                bllWeiXin.SendTemplateMessageNotifyComm(orderUserInfo, orderInfo.Status, string.Format("预约:{2}\\n订单号:{0}\\n订单金额:{1}元", orderInfo.OrderID, orderInfo.TotalAmount, tProductInfo.PName));
                            }
                            catch (Exception)
                            {
                            }
                        }
                        #endregion
                        WebsiteInfo websiteInfo = bllMall.Get <WebsiteInfo>(string.Format(" WebsiteOwner='{0}'", orderInfo.WebsiteOwner));
                        #region 分销相关
                        try
                        {
                            if (bllMenuPermission.CheckUserAndPmsKey(websiteInfo.WebsiteOwner, BLLPermission.Enums.PermissionSysKey.OnlineDistribution, websiteInfo.WebsiteOwner))
                            {
                                if (string.IsNullOrWhiteSpace(orderUserInfo.DistributionOwner))
                                {
                                    if (websiteInfo.DistributionRelationBuildMallOrder == 1)
                                    {
                                        orderUserInfo.DistributionOwner = bllMall.WebsiteOwner;
                                        bllMall.Update(orderUserInfo);
                                    }
                                }

                                bllDis.AutoUpdateLevel(orderInfo);
                                bllDis.TransfersEstimate(orderInfo);
                                bllDis.SendMessageToUser(orderInfo);
                                bllDis.UpdateDistributionSaleAmountUp(orderInfo);
                            }
                        }
                        catch (Exception ex)
                        {
                            Tolog("设置分销员异常:" + ex.Message + " 用户id:" + orderUserInfo.UserID);
                        }
                        #endregion


                        #region 宏巍通知
                        try
                        {
                            if (websiteInfo.IsUnionHongware == 1)
                            {
                                hongWareClient.OrderNotice(orderUserInfo.WXOpenId, orderInfo.OrderID);
                            }
                        }
                        catch (Exception)
                        {
                        }

                        #endregion

                        bllCard.Give(orderInfo.TotalAmount, orderUserInfo);


                        string v1ProductId = Common.ConfigHelper.GetConfigString("YGBV1ProductId");
                        string v2ProductId = Common.ConfigHelper.GetConfigString("YGBV2ProductId");
                        string v1CouponId  = Common.ConfigHelper.GetConfigString("YGBV1CouponId");
                        string v2CouponId  = Common.ConfigHelper.GetConfigString("YGBV2CouponId");

                        List <WXMallOrderDetailsInfo> orderDetailList = bllMall.GetOrderDetailsList(orderInfo.OrderID);
                        foreach (var item in orderDetailList)
                        {
                            item.IsComplete = 1;
                            bllMall.Update(item);
                            #region 购买指定商品发送指定的优惠券
                            if (!string.IsNullOrEmpty(v1ProductId) && !string.IsNullOrEmpty(v1CouponId) && item.PID == v1ProductId)
                            {
                                bllCard.SendCardCouponsByCurrUserInfo(orderUserInfo, v1CouponId);
                            }

                            if (!string.IsNullOrEmpty(v2ProductId) && !string.IsNullOrEmpty(v2CouponId) && item.PID == v2ProductId)
                            {
                                bllCard.SendCardCouponsByCurrUserInfo(orderUserInfo, v2CouponId);
                            }
                            #endregion
                        }
                        //更新销量
                        bllMall.UpdateProductSaleCount(orderInfo);

                        context.Response.StatusCode = 200;
                        context.Response.Write(successStr);
                        Tolog("支付成功" + orderInfo.OrderID);
                        return;
                    }
                    else
                    {
                        Tolog("更改状态false");
                        context.Response.StatusCode = 500;
                        context.Response.Write(failStr);
                        return;
                    }
                }
            }
            catch (Exception ex)
            {
                //error = "fail";
                Tolog("京东支付异常:" + ex.ToString());
            }

            context.Response.ContentType = "text/plain";
            context.Response.StatusCode  = 500;
            context.Response.Write(failStr);
        }
Exemple #12
0
        public void ProcessRequest(HttpContext context)
        {
            string ids          = context.Request["ids"];
            string order_status = context.Request["order_status"];
            bool   actionStatus = false;

            if (order_status == "预约成功")
            {
                List <string> successIds  = new List <string>();
                List <string> failIds     = new List <string>();
                List <string> orderIds    = ids.Split(',').ToList();
                string        hasOrderIDs = "";
                int           maxCount    = 1;
                foreach (string orderId in orderIds)
                {
                    //已有订单详情
                    WXMallOrderInfo tOrder = bllMall.GetByKey <WXMallOrderInfo>("OrderID", orderId);
                    List <WXMallOrderDetailsInfo> tDetailList  = bllMall.GetOrderDetailsList(orderId, null, tOrder.ArticleCategoryType, null, null);
                    List <WXMallOrderDetailsInfo> oDetailList  = bllMall.GetOrderDetailsList(null, tDetailList[0].PID, tOrder.ArticleCategoryType, tDetailList.Min(p => p.StartDate), tDetailList.Max(p => p.EndDate));
                    WXMallProductInfo             tProductInfo = bllMall.GetByKey <WXMallProductInfo>("PID", tDetailList[0].PID);
                    maxCount = tProductInfo.Stock;

                    List <string> hasOrderID_List = new List <string>();
                    foreach (var item in tDetailList)
                    {
                        List <WXMallOrderDetailsInfo> hasOrderDetailList = oDetailList.Where(p => !((item.StartDate >= p.EndDate && item.EndDate > p.EndDate) || (item.StartDate < p.StartDate && item.EndDate <= p.StartDate))).ToList();
                        if (hasOrderDetailList.Count > 0)
                        {
                            hasOrderID_List.AddRange(hasOrderDetailList.Select(p => p.OrderID).Distinct());
                        }
                    }
                    hasOrderID_List = hasOrderID_List.Where(p => !p.Contains(orderId)).ToList();
                    if (hasOrderID_List.Count > 0)
                    {
                        hasOrderID_List = hasOrderID_List.Distinct().ToList();
                        hasOrderIDs     = MyStringHelper.ListToStr(hasOrderID_List, "'", ",");
                        int tempCount = 0;
                        List <WXMallOrderInfo> tempList = bllMall.GetOrderList(0, 1, "", out tempCount, "预约成功", null, null, null,
                                                                               null, null, null, null, null, null, null, tOrder.ArticleCategoryType, hasOrderIDs);
                        if (tempCount >= maxCount)
                        {
                            failIds.Add(orderId);
                            continue;
                        }

                        if (string.IsNullOrWhiteSpace(hasOrderIDs))
                        {
                            hasOrderIDs = "'0'";
                        }
                        if (bllMall.Update(new WXMallOrderInfo(),
                                           string.Format("PaymentStatus={0},PayTime=GetDate(),Status='{1}'", 1, "预约成功"),
                                           string.Format("OrderID={0} AND WebsiteOwner='{4}' and (select count(1) from [ZCJ_WXMallOrderInfo] where Status='{3}' and WebsiteOwner='{4}' and  OrderID IN({1}))<{2}",
                                                         tOrder.OrderID, hasOrderIDs, maxCount, "预约成功", bllMall.WebsiteOwner)
                                           ) > 0)
                        {
                            hasOrderIDs = string.Format("{0},'{1}'", hasOrderIDs, tOrder.OrderID);
                            successIds.Add(orderId);
                            #region 修改其他预约订单为预约失败
                            bllMall.Update(new WXMallOrderInfo(),
                                           string.Format("Status='{0}'", "预约失败"),
                                           string.Format("OrderID In ({0}) AND Status Not In ({1}) and WebsiteOwner='{4}' AND (select count(1) from [ZCJ_WXMallOrderInfo] where Status='{5}' and OrderID IN({2}) and WebsiteOwner='{4}' )>={3}",
                                                         hasOrderIDs, "'预约失败','预约成功','已取消'", hasOrderIDs, maxCount, bllMall.WebsiteOwner, "预约成功"));
                            #endregion
                        }
                        else
                        {
                            failIds.Add(orderId);
                        }
                    }
                    else
                    {
                        tOrder.Status = order_status;
                        if (bllMall.Update(tOrder))
                        {
                            successIds.Add(orderId);
                        }
                        else
                        {
                            failIds.Add(orderId);
                        }
                    }
                }
                if (orderIds.Count == 0)
                {
                    apiResp.msg = "修改完成";
                }
                else
                {
                    if (failIds.Count == 0)
                    {
                        apiResp.msg = "全部修改成功";
                    }
                    else if (successIds.Count == 0)
                    {
                        apiResp.msg = "全部订单所选时间已有预约成功的订单";
                    }
                    else
                    {
                        apiResp.msg = "订单[" + MyStringHelper.ListToStr(successIds, "", ",") + "]修改成功,订单[" + MyStringHelper.ListToStr(failIds, "", ",") + "]所选时间已有预约成功的订单";
                    }
                }
                apiResp.status = true;
                apiResp.code   = (int)APIErrCode.IsSuccess;
                bllMall.ContextResponse(context, apiResp);
            }
            else
            {
                List <string> orderIds = ids.Split(',').ToList();
                ids = MyStringHelper.ListToStr(orderIds, "'", ",");
                if (bllMall.UpdateMultByKey <WXMallOrderInfo>("OrderID", ids, "Status", order_status, null, true) > 0)
                {
                    apiResp.status = true;
                    apiResp.msg    = "修改完成";
                    apiResp.code   = (int)APIErrCode.IsSuccess;
                }
                else
                {
                    apiResp.msg  = "修改失败";
                    apiResp.code = (int)APIErrCode.OperateFail;
                }
            }
            bllMall.ContextResponse(context, apiResp);
        }
Exemple #13
0
        /// <summary>
        /// 检查用户和系统键值
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="pkey"></param>
        /// <returns></returns>
        public bool CheckUserAndPmsKey(string userId, Enums.PermissionSysKey pkey, string websiteOwner = "")
        {
            if (websiteOwner == "")
            {
                websiteOwner = WebsiteOwner;
            }
            UserInfo userInfo;

            if (string.IsNullOrEmpty(websiteOwner))
            {
                websiteOwner = WebsiteOwner;
            }
            if (userId == "jubit")
            {
                //userInfo = Get<UserInfo>(string.Format(" UserID='{0}' ", userId));
                return(true);
            }
            else
            {
                userInfo = Get <UserInfo>(string.Format(" UserID='{0}' AND WebsiteOwner='{1}' ", userId, websiteOwner));
            }
            if (userInfo == null)
            {
                return(false);
            }

            var key = CommonPlatform.Helper.EnumStringHelper.ToString(pkey);
            //先查出对应权限,不存在返回false
            var pms = GetPmsByPmsKey(key);

            if (pms == null)
            {
                return(false);
            }
            //站点权限禁用时返回false
            if (CheckWebsiteOwnerDisabled(websiteOwner, pms.PermissionID))
            {
                return(false);
            }

            //判断是否是配置的管理员
            if (userInfo.PermissionGroupID.HasValue)
            {
                ZentCloud.BLLPermission.Model.PermissionGroupInfo perGroupInfo = Get <ZentCloud.BLLPermission.Model.PermissionGroupInfo>(string.Format(" GroupID={0}", userInfo.PermissionGroupID));
                if (perGroupInfo != null && perGroupInfo.GroupType == 3)//管理员权限跟站点所有者一致
                {
                    userId = userInfo.WebsiteOwner;
                }
            }
            bool result = CheckUserAndPms(userId, pms.PermissionID);

            if (!result && userId == websiteOwner)
            {
                BLLPermission           bllPer      = new BLLPermission();
                List <PermissionColumn> column_list = bllPer.GetListByKey <PermissionColumn>("WebsiteOwner", websiteOwner);
                if (column_list.Count > 0)
                {
                    string columnIdStrs = MyStringHelper.ListToStr(column_list.Select(p => p.PermissionColumnID).ToList(), "'", ",");
                    List <PermissionRelationInfo> column_per_list = bllPer.GetMultPermissionRelationList(columnIdStrs, 2);
                    result = column_per_list.Exists(p => p.PermissionID == pms.PermissionID);
                }
            }
            return(result);
        }
Exemple #14
0
        /// <summary>
        /// 获取用户所有权限ID
        /// </summary>
        /// <param name="userId">用户ID</param>
        /// <returns>所有权限ID集合</returns>
        public List <long> GetUserAllPmsID(string userId)
        {
            UserInfo userInfo = Get <UserInfo>(string.Format(" UserID='{0}'", userId));

            if (userInfo == null)
            {
                return(new List <long>());
            }
            if (userInfo.PermissionGroupID.HasValue)
            {
                ZentCloud.BLLPermission.Model.PermissionGroupInfo perGroupInfo = Get <ZentCloud.BLLPermission.Model.PermissionGroupInfo>(string.Format(" GroupID={0}", userInfo.PermissionGroupID));
                if (perGroupInfo != null && perGroupInfo.GroupType == 3)//管理员权限跟站点所有者一致
                {
                    userId = userInfo.WebsiteOwner;
                }
            }
            List <long> result = new List <long>();

            //获取 用户-权限 列表
            result.AddRange(GetList <Model.PermissionRelationInfo>(
                                string.Format(" RelationID = '{0}' and RelationType = 1 ", userId)
                                ).Select(p => p.PermissionID));

            //获取 组-权限 列表
            //long groupID = GetPmsGroupIDByUser(userID);

            //if (groupID > 0)
            //{
            //    result.AddRange(GetList<Model.PermissionRelationInfo>(
            //        string.Format(" RelationID = '{0}' and RelationType = 0 ", groupID.ToString())
            //    ).Select(p => p.PermissionID));
            //}

            foreach (long item in GetPmsGroupIDByUser(userId))
            {
                result.AddRange(GetList <Model.PermissionRelationInfo>(
                                    string.Format(" RelationID = '{0}' and RelationType = 0 ", item.ToString())
                                    ).Select(p => p.PermissionID));

                //检查栏目内权限
                foreach (PermissionRelationInfo citem in BaseCacheGetPermissionRelationList(3, item.ToString(), null))
                {
                    List <PermissionRelationInfo> list = BaseCacheGetPermissionRelationList(2, citem.PermissionID.ToString(), null);
                    if (list.Count > 0)
                    {
                        result.AddRange(list.Select(p => p.PermissionID));
                    }
                }
            }

            if (userId == userInfo.WebsiteOwner)
            {
                List <PermissionColumn> column_list = GetListByKey <PermissionColumn>("WebsiteOwner", userId);
                if (column_list.Count > 0)
                {
                    List <long> columnIdList  = column_list.Select(p => p.PermissionColumnID).ToList();
                    List <long> columnIdList1 = column_list.Where(p => p.PermissionColumnBaseID > 0).Select(p => p.PermissionColumnBaseID).ToList();
                    columnIdList.AddRange(columnIdList1);
                    string columnIdStrs = MyStringHelper.ListToStr(columnIdList, "'", ",");

                    BLLPermission bllPer = new BLLPermission();
                    List <PermissionRelationInfo> columnPerList = bllPer.GetMultPermissionRelationList(columnIdStrs, 2);
                    if (columnPerList.Count > 0)
                    {
                        result.AddRange(columnPerList.Select(p => p.PermissionID));
                    }
                }
            }
            return(result.Distinct().ToList());
        }
Exemple #15
0
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                //Tolog("进入支付回调");
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load(Request.InputStream);
                xmlDoc.Save(string.Format("C:\\WXPay\\Notify{0}.xml", DateTime.Now.ToString("yyyyMMddHHmmssfff")));//写入日志
                //全部参数
                Dictionary <string, string> parametersAll = new Dictionary <string, string>();
                foreach (XmlElement item in xmlDoc.DocumentElement.ChildNodes)
                {
                    string key   = item.Name;
                    string value = item.InnerText;
                    if ((!string.IsNullOrEmpty(key)) && (!string.IsNullOrEmpty(value)))
                    {
                        parametersAll.Add(key, value);
                    }
                }
                parametersAll = (from entry in parametersAll
                                 orderby entry.Key ascending
                                 select entry).ToDictionary(pair => pair.Key, pair => pair.Value);//全部参数排序
                orderInfo = bllMall.GetOrderInfo(parametersAll["out_trade_no"]);
                PayConfig payConfig = bllPay.GetPayConfig();
                if (!bllPay.VerifySignatureWx(parametersAll, payConfig.WXPartnerKey))//验证签名
                {
                    Tolog("验证签名出错");
                    Response.Write(failXml);
                    return;
                }
                if (orderInfo == null)
                {
                    Tolog("订单未找到");
                    Response.Write(failXml);
                    return;
                }
                if (orderInfo.PaymentStatus.Equals(1))
                {
                    //Tolog("已支付");
                    Response.Write(successXml);
                    return;
                }
                orderInfo.PaymentType = 2;

                //更新订单状态
                WXMallProductInfo tProductInfo = new WXMallProductInfo();
                if (parametersAll["return_code"].Equals("SUCCESS") && parametersAll["result_code"].Equals("SUCCESS")) //交易成功
                {
                    UserInfo orderUserInfo = bllUser.GetUserInfo(orderInfo.OrderUserID, bllUser.WebsiteOwner);        //下单用户信息
                    string   hasOrderIDs   = "";
                    int      maxCount      = 1;
                    //Tolog("准备检查更新订单状态");
                    if (BLLJIMP.BLLMall.bookingList.Contains(orderInfo.ArticleCategoryType))
                    {
                        //Tolog("预订类型");
                        #region 预约订单修改状态
                        orderInfo.PaymentStatus = 1;
                        orderInfo.PayTime       = DateTime.Now;
                        orderInfo.Status        = "预约成功";

                        #region 检查是否有预约成功的订单
                        List <WXMallOrderDetailsInfo> tDetailList = bllMall.GetOrderDetailsList(orderInfo.OrderID, null, orderInfo.ArticleCategoryType, null, null);
                        List <WXMallOrderDetailsInfo> oDetailList = bllMall.GetOrderDetailsList(null, tDetailList[0].PID, orderInfo.ArticleCategoryType, tDetailList.Min(p => p.StartDate), tDetailList.Max(p => p.EndDate));
                        tProductInfo = bllMall.GetByKey <WXMallProductInfo>("PID", tDetailList[0].PID);
                        maxCount     = tProductInfo.Stock;
                        List <string> hasOrderIDList = new List <string>();
                        foreach (var item in tDetailList)
                        {
                            List <WXMallOrderDetailsInfo> hasOrderDetailList = oDetailList.Where(p => !((item.StartDate >= p.EndDate && item.EndDate > p.EndDate) || (item.StartDate < p.StartDate && item.EndDate <= p.StartDate))).ToList();
                            if (hasOrderDetailList.Count >= maxCount)
                            {
                                hasOrderIDList.AddRange(hasOrderDetailList.Select(p => p.OrderID).Distinct());
                            }
                        }
                        hasOrderIDList = hasOrderIDList.Where(p => !p.Contains(orderInfo.OrderID)).ToList();
                        if (hasOrderIDList.Count > 0)
                        {
                            hasOrderIDList = hasOrderIDList.Distinct().ToList();
                            hasOrderIDs    = MyStringHelper.ListToStr(hasOrderIDList, "'", ",");
                        }
                        #endregion 检查是否有预约成功的订单

                        #endregion 预约订单修改状态
                    }
                    else
                    {
                        //Tolog("普通类型");
                        #region 原订单修改状态
                        orderInfo.PaymentStatus = 1;
                        orderInfo.Status        = "待发货";
                        orderInfo.PayTime       = DateTime.Now;
                        if (orderInfo.DeliveryType == 1)
                        {
                            orderInfo.Status = "待自提";
                        }
                        Tolog("更改状态start");
                        //if (bllMall.GetWebsiteInfoModelFromDataBase().IsDistributionMall.Equals(1))
                        //{
                        orderInfo.GroupBuyStatus     = "0";
                        orderInfo.DistributionStatus = 1;

                        //if (orderInfo.IsMain==1)
                        //{
                        //    bllMall.Update(orderInfo,string.Format(" DistributionStatus=1"),string.Format("ParentOrderId='{0}'",orderInfo.OrderID));
                        //}



                        #region 活动订单
                        if (orderInfo.OrderType == 4)
                        {
                            ActivityDataInfo data = bllMall.Get <ActivityDataInfo>(string.Format(" OrderId='{0}'", orderInfo.OrderID));
                            if (data != null)
                            {
                                bllMall.Update(data, string.Format(" PaymentStatus=1"), string.Format("  OrderId='{0}'", orderInfo.OrderID));
                            }
                        }
                        #endregion


                        bllMall.Update(orderInfo, string.Format("PaymentStatus=1,Status='待发货',PayTime=GETDATE(),DistributionStatus=1"), string.Format("ParentOrderId='{0}'", orderInfo.OrderID));


                        //}
                        #endregion 原订单修改状态

                        try
                        {
                            //设置交易流水号
                            orderInfo.PayTranNo = parametersAll["transaction_id"];
                        }
                        catch (Exception ex)
                        {
                            Tolog("设置交易流水号失败:" + ex.Message);
                        }
                    }
                    bool result = false;

                    if (BLLJIMP.BLLMall.bookingList.Contains(orderInfo.ArticleCategoryType))
                    {
                        if (string.IsNullOrWhiteSpace(hasOrderIDs))
                        {
                            hasOrderIDs = "'0'";
                        }
                        result = bllMall.Update(new WXMallOrderInfo(),
                                                string.Format("PaymentStatus={0},PayTime=GetDate(),Status='{1}'", 1, "预约成功"),
                                                string.Format("OrderID='{0}' and WebsiteOwner='{4}' AND (select count(1) from [ZCJ_WXMallOrderInfo] where Status='{3}' and WebsiteOwner='{4}' and  OrderID IN({1}))<{2}",
                                                              orderInfo.OrderID, hasOrderIDs, maxCount, "预约成功", bllMall.WebsiteOwner)
                                                ) > 0;
                        if (result)
                        {
                            // #region 交易成功加积分
                            //增加积分 (慧聚不需要)
                            //if (orderInfo.TotalAmount > 0)
                            //{
                            //    ScoreConfig scoreConfig = bllScore.GetScoreConfig();
                            //    int addScore = 0;
                            //    if (scoreConfig != null && scoreConfig.OrderAmount > 0 && scoreConfig.OrderScore > 0)
                            //    {
                            //        addScore = (int)(orderInfo.PayableAmount / (scoreConfig.OrderAmount / scoreConfig.OrderScore));
                            //    }
                            //    if (addScore > 0)
                            //    {
                            //        if (bllUser.Update(new UserInfo(),
                            //            string.Format(" TotalScore+={0},HistoryTotalScore+={0}", addScore),
                            //            string.Format(" UserID='{0}'", orderInfo.OrderUserID)) > 0)
                            //        {
                            //            UserScoreDetailsInfo scoreRecord = new UserScoreDetailsInfo();
                            //            scoreRecord.AddTime = DateTime.Now;
                            //            scoreRecord.Score = addScore;
                            //            scoreRecord.ScoreType = "OrderSuccess";
                            //            scoreRecord.UserID = orderInfo.OrderUserID;
                            //            scoreRecord.AddNote = "预约-交易成功获得积分";
                            //            bllMall.Add(scoreRecord);
                            //        }
                            //    }
                            //}
                            // #endregion

                            #region 修改其他预约订单为预约失败 返还积分

                            if (BLLJIMP.BLLMall.bookingList.Contains(orderInfo.ArticleCategoryType) && !string.IsNullOrWhiteSpace(hasOrderIDs))
                            {
                                int tempCount = 0;
                                List <WXMallOrderInfo> tempList = bllMall.GetOrderList(0, 1, "", out tempCount, "预约成功", null, null, null,
                                                                                       null, null, null, null, null, null, null, orderInfo.ArticleCategoryType, hasOrderIDs);
                                tempCount = tempCount + 1; //加上当前订单的数量
                                if (tempCount >= maxCount)
                                {
                                    tempList = bllMall.GetColOrderListInStatus("'待付款','待审核'", hasOrderIDs, "OrderID,OrderUserID,UseScore", bllMall.WebsiteOwner);
                                    if (tempList.Count > 0)
                                    {
                                        string stopOrderIds = MyStringHelper.ListToStr(tempList.Select(p => p.OrderID).ToList(), "'", ",");
                                        tempList = tempList.Where(p => p.UseScore > 0).ToList();
                                        foreach (var item in tempList)
                                        {
                                            orderUserInfo.TotalScore += item.UseScore;
                                            if (bllUser.Update(new UserInfo(), string.Format(" TotalScore+={0}", item.UseScore),
                                                               string.Format(" UserID='{0}'", item.OrderUserID)) > 0)
                                            {
                                                UserScoreDetailsInfo scoreRecord = new UserScoreDetailsInfo();
                                                scoreRecord.AddTime      = DateTime.Now;
                                                scoreRecord.Score        = item.UseScore;
                                                scoreRecord.TotalScore   = orderUserInfo.TotalScore;
                                                scoreRecord.ScoreType    = "OrderCancel";
                                                scoreRecord.UserID       = item.OrderUserID;
                                                scoreRecord.RelationID   = item.OrderID;
                                                scoreRecord.AddNote      = "预约-订单失败返还积分";
                                                scoreRecord.WebSiteOwner = item.WebsiteOwner;
                                                bllMall.Add(scoreRecord);
                                            }
                                        }
                                        bllMall.Update(new WXMallOrderInfo(),
                                                       string.Format("Status='{0}'", "预约失败"),
                                                       string.Format("OrderID In ({0}) and WebsiteOwner='{1}'", stopOrderIds, bllMall.WebsiteOwner));
                                    }
                                }
                                //Tolog("更改修改其他预约为预约失败");
                            }
                            #endregion
                        }
                    }
                    else
                    {
                        result = bllMall.Update(orderInfo);
                    }
                    if (result)
                    {
                        #region 拼团订单
                        if (orderInfo.OrderType == 2)
                        {
                            try
                            {
                                if (!string.IsNullOrEmpty(orderInfo.GroupBuyParentOrderId))
                                {
                                    var parentOrderInfo = bllMall.GetOrderInfo(orderInfo.GroupBuyParentOrderId);

                                    if (parentOrderInfo.Ex10 == "1")
                                    {
                                        if (bllMall.GetCount <WXMallOrderInfo>(string.Format("PaymentStatus=1 And GroupBuyParentOrderId='{0}' ", parentOrderInfo.OrderID)) >= parentOrderInfo.PeopleCount)
                                        {
                                            bllMall.Update(new WXMallOrderInfo(), string.Format("Status='已取消'"), string.Format("  GroupBuyParentOrderId='{0}' And PaymentStatus=0", parentOrderInfo.OrderID));
                                            parentOrderInfo.GroupBuyStatus = "1";
                                            bllMall.Update(parentOrderInfo);
                                        }
                                    }
                                    else
                                    {
                                        if (bllMall.GetCount <WXMallOrderInfo>(string.Format("PaymentStatus=1 And GroupBuyParentOrderId='{0}' Or OrderId='{0}'", parentOrderInfo.OrderID)) >= parentOrderInfo.PeopleCount)
                                        {
                                            bllMall.Update(new WXMallOrderInfo(), string.Format("Status='已取消'"), string.Format("  GroupBuyParentOrderId='{0}' And PaymentStatus=0", parentOrderInfo.OrderID));
                                            parentOrderInfo.GroupBuyStatus = "1";
                                            bllMall.Update(parentOrderInfo);
                                        }
                                    }
                                }
                            }
                            catch (Exception)
                            {
                            }
                        }
                        #endregion
                        Open.HongWareSDK.Client hongWareClient = new Open.HongWareSDK.Client(orderInfo.WebsiteOwner);

                        //Tolog("更改状态true");

                        #region Efast同步
                        //判读当前站点是否需要同步到驿氪和efast
                        if (bllCommRelation.ExistRelation(BLLJIMP.Enums.CommRelationType.SyncEfast, bllCommRelation.WebsiteOwner, ""))
                        {
                            try
                            {
                                Tolog("开始同步efast");

                                string outOrderId = string.Empty, msg = string.Empty;
                                var    syncResult = bllEfast.CreateOrder(orderInfo.OrderID, out outOrderId, out msg);
                                if (syncResult)
                                {
                                    orderInfo.OutOrderId = outOrderId;
                                    bllMall.Update(orderInfo);
                                }
                                Tolog(string.Format("efast订单同步结果:{0},订单号:{1},提示信息:{2}", syncResult, outOrderId, msg));
                            }
                            catch (Exception ex)
                            {
                                Tolog("efast订单同步异常:" + ex.Message);
                            }
                        }
                        #endregion

                        #region 驿氪同步
                        if (bllCommRelation.ExistRelation(BLLJIMP.Enums.CommRelationType.SyncYike, bllCommRelation.WebsiteOwner, ""))
                        {
                            try
                            {
                                Tolog("开始同步驿氪");
                                //同步成功订单到驿氪

                                //UserInfo orderUserInfo = bllUser.GetUserInfo(orderInfo.OrderUserID);
                                //if ((!string.IsNullOrEmpty(orderUserInfo.Ex1)) && (!string.IsNullOrEmpty(orderUserInfo.Ex2)) && (!string.IsNullOrEmpty(orderUserInfo.Phone)))
                                //{
                                //    client.BonusUpdate(orderUserInfo.Ex2, -(orderInfo.UseScore), "商城下单使用积分" + orderInfo.UseScore);

                                //}
                                var uploadOrderResult = yikeClient.OrderUpload(orderInfo);

                                Tolog(string.Format("驿氪订单同步结果:{0}", Common.JSONHelper.ObjectToJson(uploadOrderResult)));
                            }
                            catch (Exception ex)
                            {
                                Tolog("驿氪订单同步异常:" + ex.Message);
                            }
                        }
                        #endregion

                        #region 付款加积分
                        try
                        {
                            bllUser.AddUserScoreDetail(orderInfo.OrderUserID, CommonPlatform.Helper.EnumStringHelper.ToString(ZentCloud.BLLJIMP.Enums.ScoreDefineType.OrderPay), bllMall.WebsiteOwner, null, null);
                        }
                        catch (Exception)
                        { }

                        #endregion


                        #region 消息通知
                        if (!BLLJIMP.BLLMall.bookingList.Contains(orderInfo.ArticleCategoryType))
                        {
                            try
                            {
                                var    productName = bllMall.GetOrderDetailsList(orderInfo.OrderID)[0].ProductName;
                                string remark      = "";
                                if (!string.IsNullOrEmpty(orderInfo.OrderMemo))
                                {
                                    remark = string.Format("客户留言:{0}", orderInfo.OrderMemo);
                                }
                                bllWeiXin.SendTemplateMessageToKefu("有新的订单", string.Format("订单号:{0}\\n订单金额:{1}元\\n收货人:{2}\\n电话:{3}\\n商品:{4}\\n{5}", orderInfo.OrderID, Math.Round(orderInfo.TotalAmount, 2), orderInfo.Consignee, orderInfo.Phone, productName, remark));
                                if (orderInfo.OrderType != 4)//付费的活动不发消息
                                {
                                    if (orderInfo.WebsiteOwner != "jikuwifi")
                                    {
                                        string url = string.Format("http://{0}/customize/shop/?v=1.0&ngroute=/orderDetail/{1}#/orderDetail/{1}", Request.Url.Host, orderInfo.OrderID);
                                        if (orderInfo.IsMain == 1)
                                        {
                                            url = string.Format("http://{0}/customize/shop/?v=1.0&ngroute=/orderList#/orderList", Request.Url.Host);
                                        }
                                        bllWeiXin.SendTemplateMessageNotifyComm(orderUserInfo, "订单已成功支付,我们将尽快发货,请保持手机畅通等待物流送达!", string.Format("订单号:{0}\\n订单金额:{1}元\\n收货人:{2}\\n电话:{3}\\n商品:{4}...\\n查看详情", orderInfo.OrderID, Math.Round(orderInfo.TotalAmount, 2), orderInfo.Consignee, orderInfo.Phone, productName), url);
                                    }
                                }
                            }
                            catch (Exception)
                            {
                            }
                        }
                        else
                        {
                            try
                            {
                                bllWeiXin.SendTemplateMessageToKefu(orderInfo.Status, string.Format("预约:{2}\\n订单号:{0}\\n订单金额:{1}元\\n预约人:{3}\\n预约人手机:{4}", orderInfo.OrderID, orderInfo.TotalAmount, tProductInfo.PName, orderUserInfo.TrueName, orderUserInfo.Phone));
                                bllWeiXin.SendTemplateMessageNotifyComm(orderUserInfo, orderInfo.Status, string.Format("预约:{2}\\n订单号:{0}\\n订单金额:{1}元", orderInfo.OrderID, orderInfo.TotalAmount, tProductInfo.PName));
                            }
                            catch (Exception)
                            {
                            }
                        }
                        #endregion
                        WebsiteInfo websiteInfo = bllMall.Get <WebsiteInfo>(string.Format(" WebsiteOwner='{0}'", orderInfo.WebsiteOwner));
                        #region 分销相关
                        try
                        {
                            if (bllMenuPermission.CheckUserAndPmsKey(websiteInfo.WebsiteOwner, BLLPermission.Enums.PermissionSysKey.OnlineDistribution, websiteInfo.WebsiteOwner))
                            {
                                if (string.IsNullOrWhiteSpace(orderUserInfo.DistributionOwner))
                                {
                                    if (websiteInfo.DistributionRelationBuildMallOrder == 1)
                                    {
                                        orderUserInfo.DistributionOwner = orderInfo.WebsiteOwner;
                                        bllMall.Update(orderUserInfo);
                                    }
                                }
                                bllDis.AutoUpdateLevel(orderInfo);
                                bllDis.TransfersEstimate(orderInfo);
                                bllDis.SendMessageToUser(orderInfo);
                                bllDis.UpdateDistributionSaleAmountUp(orderInfo);
                            }
                        }
                        catch (Exception ex)
                        {
                            Tolog("设置分销员异常:" + ex.Message + " 用户id:" + orderUserInfo.UserID);
                        }
                        #endregion


                        #region 宏巍通知
                        try
                        {
                            if (websiteInfo.IsUnionHongware == 1)
                            {
                                hongWareClient.OrderNotice(orderUserInfo.WXOpenId, orderInfo.OrderID);
                            }
                        }
                        catch (Exception)
                        {
                        }

                        #endregion

                        bllCard.Give(orderInfo.TotalAmount, orderUserInfo);


                        string v1ProductId = Common.ConfigHelper.GetConfigString("YGBV1ProductId");
                        string v2ProductId = Common.ConfigHelper.GetConfigString("YGBV2ProductId");
                        string v1CouponId  = Common.ConfigHelper.GetConfigString("YGBV1CouponId");
                        string v2CouponId  = Common.ConfigHelper.GetConfigString("YGBV2CouponId");

                        List <WXMallOrderDetailsInfo> orderDetailList = bllMall.GetOrderDetailsList(orderInfo.OrderID);
                        foreach (var item in orderDetailList)
                        {
                            item.IsComplete = 1;
                            bllMall.Update(item);

                            #region 购买指定商品发送指定的优惠券
                            if (!string.IsNullOrEmpty(v1ProductId) && !string.IsNullOrEmpty(v1CouponId) && item.PID == v1ProductId)
                            {
                                bllCard.SendCardCouponsByCurrUserInfo(orderUserInfo, v1CouponId);
                            }

                            if (!string.IsNullOrEmpty(v2ProductId) && !string.IsNullOrEmpty(v2CouponId) && item.PID == v2ProductId)
                            {
                                bllCard.SendCardCouponsByCurrUserInfo(orderUserInfo, v2CouponId);
                            }
                            #endregion
                        }

                        //更新销量
                        bllMall.UpdateProductSaleCount(orderInfo);
                        Response.Write(successXml);
                        return;
                    }
                    else
                    {
                        Tolog("更改状态false");
                        Response.Write(failXml);
                        return;
                    }
                }
                Tolog("返回信息有误");
                Response.Write(failXml);
            }
            catch (Exception ex)
            {
                Tolog("出错了:" + ex.Message);
                Response.Write(failXml);
            }
        }
Exemple #16
0
        private string Query(HttpContext context)
        {
            //int page = Convert.ToInt32(context.Request["page"]);
            //int rows = Convert.ToInt32(context.Request["rows"]);

            List <MenuInfo> menuList = new List <MenuInfo>();

            //分页去掉
            //list = pmsBll.GetLit<MenuInfo>(rows, page, null, "MenuID");
            string websiteOwner = context.Request["websiteOwner"];
            string menuTypeStr  = context.Request["menuType"];
            int    menuType     = string.IsNullOrWhiteSpace(menuTypeStr) ? 3 : Convert.ToInt32(menuTypeStr);
            string showLevelStr = context.Request["showLevel"];
            string showHideStr  = context.Request["showHide"];
            bool   showHide     = showHideStr == "1" ? true : false;
            int    showLevel    = 3;

            if (currentUserInfo.UserType == 1)
            {
                showLevel = showLevelStr == "1" ? 1 : 2;
            }
            else if (currentUserInfo.UserID == pmsBll.WebsiteOwner)
            {
                showLevel = 2;
            }
            menuList.AddRange(bllMenu.GetWebsiteMenuList(websiteOwner, showLevel, false, showHide));

            //获取权限组ids
            string      relationIds    = "''";
            List <long> pmsGroupIdList = pmsBll.GetPmsGroupIDByUser(websiteOwner);

            if (pmsGroupIdList.Count > 0)
            {
                relationIds = MyStringHelper.ListToStr(pmsGroupIdList, "'", ",");
            }

            menuList = bllMenu.CheckMenuRelationList(menuList, websiteOwner, relationIds);

            if (!showHide)
            {
                menuList = menuList.Where(p => p.IsHide.Value == 0).ToList();
            }

            List <MenuInfo> showList = new List <MenuInfo>();

            MySpider.MyCategories m = new MySpider.MyCategories();
            List <MySpider.Model.MyCategoryModel> listCate = m.GetCommCateModelList <MenuInfo>("MenuID", "PreID", "NodeName", menuList);

            foreach (ListItem item in m.GetCateListItem(listCate, 0))
            {
                try
                {
                    MenuInfo tmpModel = (MenuInfo)menuList.Where(p => p.MenuID.ToString().Equals(item.Value)).ToList()[0].Clone();
                    tmpModel.NodeName = item.Text;
                    showList.Add(tmpModel);
                }
                catch { }
            }
            int totalCount = showList.Count;

            return(Common.JSONHelper.ObjectToJson(
                       new{
                total = totalCount,
                rows = showList
            }));
        }
Exemple #17
0
        public void ProcessRequest(HttpContext context)
        {
            RequestModel requestModel = new RequestModel();

            try
            {
                requestModel = JsonConvert.DeserializeObject <RequestModel>(context.Request["data"]);
            }
            catch (Exception ex)
            {
                resp.errcode = (int)APIErrCode.OperateFail;
                resp.errmsg  = ex.Message;
                bllKeyValueData.ContextResponse(context, resp);
                return;
            }
            KeyVauleDataInfo KeyVauleDataModel = new KeyVauleDataInfo();

            if (requestModel.id > 0)
            {
                KeyVauleDataModel = bllKeyValueData.GetByKey <KeyVauleDataInfo>("AutoId", requestModel.id.ToString());
                if (KeyVauleDataModel == null)
                {
                    resp.errcode = (int)APIErrCode.OperateFail;
                    resp.errmsg  = "原模板没有找到";
                    bllKeyValueData.ContextResponse(context, resp);
                    return;
                }
                if (KeyVauleDataModel.WebsiteOwner != bllKeyValueData.WebsiteOwner)
                {
                    resp.errcode = (int)APIErrCode.OperateFail;
                    resp.errmsg  = "原模板不是本站模板";
                    bllKeyValueData.ContextResponse(context, resp);
                    return;
                }
            }
            else
            {
                KeyVauleDataModel.Creater      = currentUserInfo.UserID;
                KeyVauleDataModel.WebsiteOwner = bllKeyValueData.WebsiteOwner;
                KeyVauleDataModel.CreateTime   = DateTime.Now;
                KeyVauleDataModel.PreKey       = "0";
                KeyVauleDataModel.DataType     = EnumStringHelper.ToString(KeyVauleDataType.WXTmplmsg);
            }
            string OldKey = KeyVauleDataModel.DataKey;

            KeyVauleDataModel.DataKey   = requestModel.data_key;
            KeyVauleDataModel.DataValue = requestModel.data_value;

            //微信模板Id变化则清除以前的字段数据
            if (!string.IsNullOrWhiteSpace(OldKey) && OldKey != KeyVauleDataModel.DataKey)
            {
                bllKeyValueData.DeleteDataVaule(EnumStringHelper.ToString(KeyVauleDataType.WXTmplmsgData), null, OldKey, bllKeyValueData.WebsiteOwner);
            }

            List <KeyVauleDataInfo> newFieldList = new List <KeyVauleDataInfo>();

            for (int i = 0; i < requestModel.child_list.Count; i++)
            {
                KeyVauleDataInfo newField = new KeyVauleDataInfo();
                newField.Creater      = currentUserInfo.UserID;
                newField.WebsiteOwner = KeyVauleDataModel.WebsiteOwner;
                newField.CreateTime   = DateTime.Now;
                newField.PreKey       = KeyVauleDataModel.DataKey;
                newField.DataType     = EnumStringHelper.ToString(KeyVauleDataType.WXTmplmsgData);
                newField.DataKey      = requestModel.child_list[i].data_key;
                newField.DataValue    = requestModel.child_list[i].data_value;
                newField.OrderBy      = i + 1;
                newFieldList.Add(newField);
            }
            List <KeyVauleDataInfo> oldFieldList = bllKeyValueData.GetKeyVauleDataInfoList(EnumStringHelper.ToString(KeyVauleDataType.WXTmplmsgData), KeyVauleDataModel.DataKey
                                                                                           , KeyVauleDataModel.WebsiteOwner);

            List <KeyVauleDataInfo> deleteFieldList = new List <KeyVauleDataInfo>();
            List <KeyVauleDataInfo> editFieldList   = new List <KeyVauleDataInfo>();
            List <KeyVauleDataInfo> addFieldList    = new List <KeyVauleDataInfo>();

            foreach (KeyVauleDataInfo item in oldFieldList)
            {
                KeyVauleDataInfo temp = newFieldList.FirstOrDefault(p => p.DataType == item.DataType && p.DataKey == item.DataKey);
                if (temp == null)
                {
                    deleteFieldList.Add(item);
                }
                else
                {
                    item.DataValue = temp.DataValue;
                    item.OrderBy   = temp.OrderBy;
                    editFieldList.Add(item);
                }
            }

            foreach (KeyVauleDataInfo item in newFieldList)
            {
                if (!oldFieldList.Exists(p => p.DataType == item.DataType && p.DataKey == item.DataKey))
                {
                    addFieldList.Add(item);
                }
            }


            BLLTransaction tran = new BLLTransaction();//事务

            try
            {
                if (KeyVauleDataModel.AutoId == 0)
                {
                    if (!bllKeyValueData.Add(KeyVauleDataModel, tran))
                    {
                        tran.Rollback();
                        resp.errmsg = "添加模板失败";
                        bllKeyValueData.ContextResponse(context, resp);
                        return;
                    }
                }
                else
                {
                    if (!bllKeyValueData.Update(KeyVauleDataModel, tran))
                    {
                        tran.Rollback();
                        resp.errcode = (int)APIErrCode.OperateFail;
                        resp.errmsg  = "修改模板失败";
                        bllKeyValueData.ContextResponse(context, resp);
                        return;
                    }
                }

                if (deleteFieldList.Count > 0)
                {
                    string delIds = MyStringHelper.ListToStr(deleteFieldList.Select(p => p.AutoId).ToList(), "", ",");
                    if (bllKeyValueData.DeleteMultByKey <KeyVauleDataInfo>("AutoId", delIds) < 0)
                    {
                        tran.Rollback();
                        resp.errcode = (int)APIErrCode.OperateFail;
                        resp.errmsg  = "删除旧字段失败";
                        bllKeyValueData.ContextResponse(context, resp);
                        return;
                    }
                }

                foreach (KeyVauleDataInfo item in editFieldList)//添加问题表
                {
                    if (!bllKeyValueData.Update(item, tran))
                    {
                        tran.Rollback();
                        resp.errcode = (int)APIErrCode.OperateFail;
                        resp.errmsg  = "模板字段修改失败";
                        bllKeyValueData.ContextResponse(context, resp);
                        return;
                    }
                }
                foreach (KeyVauleDataInfo item in addFieldList)//添加问题表
                {
                    if (!bllKeyValueData.Add(item, tran))
                    {
                        tran.Rollback();
                        resp.errcode = (int)APIErrCode.OperateFail;
                        resp.errmsg  = "模板字段添加失败";
                        bllKeyValueData.ContextResponse(context, resp);
                        return;
                    }
                }
                tran.Commit();
                resp.isSuccess = true;
                resp.errcode   = (int)APIErrCode.IsSuccess;
            }
            catch (Exception ex)
            {
                tran.Rollback();
                resp.errcode = (int)APIErrCode.OperateFail;
                resp.errmsg  = "提交失败," + ex.Message;
            }
            bllKeyValueData.ContextResponse(context, resp);
        }
Exemple #18
0
        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            int    rows      = Convert.ToInt32(context.Request["rows"]);
            int    page      = Convert.ToInt32(context.Request["page"]);
            string longitude = context.Request["longitude"];
            string latitude  = context.Request["latitude"];
            string sort      = context.Request["sort"];//3开始时间降序,4发布时间降序

            sort = string.IsNullOrWhiteSpace(sort) ? "3" : sort;
            string status = context.Request["status"];

            status = string.IsNullOrWhiteSpace(status) ? "1" : status;
            string signup_status = context.Request["signup_status"];

            signup_status = string.IsNullOrWhiteSpace(signup_status) ? "1" : signup_status;
            string ctype = context.Request["ctype"];//查询类型 0我发布和报名的 1我发布的 2我报名的

            List <int> juActIdlist = new List <int>();

            if (ctype == "0" || ctype == "1")
            {
                int tempTotal = 0;
                List <JuActivityInfo> tempList = bll.GetRangeUserList(int.MaxValue, 1, bll.WebsiteOwner, CurrentUserInfo.UserID, "Appointment", null, null, null, null
                                                                      , null, null, null, null, null, null, null, null, null, null
                                                                      , null, null, "99", null, null, out tempTotal, int.MaxValue, status, null, null, "JuActivityID");
                if (tempList.Count > 0)
                {
                    juActIdlist.AddRange(tempList.Select(p => p.JuActivityID));
                }
            }
            if (ctype == "0" || ctype == "2")
            {
                int signupTotal = 0;
                List <ActivityDataInfo> signupList = bll.GetRangeSignUpList(int.MaxValue, 1, null, bll.WebsiteOwner, null, null
                                                                            , signup_status, "99", out signupTotal, CurrentUserInfo.UserID, "ActivityID,UID");
                if (signupList.Count > 0)
                {
                    string signUpActivityIds       = MyStringHelper.ListToStr(signupList.Select(p => p.ActivityID).Distinct().ToList(), "'", ",");
                    int    tempTotal               = 0;
                    List <JuActivityInfo> tempList = bll.GetRangeUserList(int.MaxValue, 1, bll.WebsiteOwner, null, "Appointment", null, null, null, null
                                                                          , null, null, null, null, null, null, null, null, null, null
                                                                          , null, null, "99", null, null, out tempTotal, int.MaxValue, status, null, signUpActivityIds, "JuActivityID");
                    if (tempList.Count > 0)
                    {
                        juActIdlist.AddRange(tempList.Select(p => p.JuActivityID));
                    }
                }
            }
            int total = 0;
            List <JuActivityInfo> list = new List <JuActivityInfo>();

            if (juActIdlist.Count > 0)
            {
                string juActIds = MyStringHelper.ListToStr(juActIdlist.Distinct().ToList(), "", ",");
                list = bll.GetRangeUserList(rows, page, bll.WebsiteOwner, null, "Appointment", null, null, longitude, latitude
                                            , null, null, null, null, null, null, null, null, null, null
                                            , null, null, sort, null, null, out total, int.MaxValue, status, juActIds);
            }

            List <dynamic> result = new List <dynamic>();

            foreach (var item in list)
            {
                UserInfo userTemp = bllUser.GetUserInfo(item.UserID);
                if (userTemp == null)
                {
                    continue;
                }
                result.Add(new
                {
                    activity_id             = item.JuActivityID,
                    activity_name           = item.ActivityName,
                    activity_address        = item.ActivityAddress,
                    activity_summary        = item.Summary,
                    create_time             = DateTimeHelper.DateTimeToUnixTimestamp(item.CreateDate),
                    create_time_str         = DateTimeHelper.DateTimeToString(item.CreateDate),
                    activity_start_time     = item.ActivityStartDate.HasValue ? DateTimeHelper.DateTimeToUnixTimestamp(item.ActivityStartDate.Value) : 0,
                    activity_start_time_str = item.ActivityStartDate.HasValue ? DateTimeHelper.DateTimeToString(item.ActivityStartDate.Value) : "",
                    activity_pv             = item.PV,
                    activity_commentcount   = item.CommentCount,
                    activity_signcount      = item.SignUpCount,
                    category_id             = item.CategoryId,
                    category_name           = item.CategoryName,
                    activity_ex1            = item.K1,
                    activity_ex2            = item.K2,
                    activity_ex3            = item.K3,
                    activity_ex4            = item.K4,
                    activity_ex5            = item.K5,
                    activity_ex6            = item.K6,
                    activity_ex7            = item.K7,
                    activity_ex8            = item.K8,
                    activity_ex9            = item.K9,
                    activity_ex10           = item.K10,
                    credit_acount           = item.CreditAcount,
                    publish_user            = new
                    {
                        id             = userTemp.AutoID,
                        user_name      = userTemp.UserID,
                        nick_name      = userTemp.WXNickname,
                        gender         = userTemp.Gender,
                        birthday       = DateTimeHelper.DateTimeToUnixTimestamp(userTemp.Birthday),
                        birthday_str   = DateTimeHelper.DateTimeToString(userTemp.Birthday),
                        identification = userTemp.Ex5,
                        avatar         = userTemp.Avatar
                    },
                    status   = item.TStatus,
                    distance = item.Distance,
                    isauthor = item.UserID == CurrentUserInfo.UserID ? true :false
                });
            }
            apiResp.status = true;
            apiResp.code   = 0;
            apiResp.result = new
            {
                totalcount = total,
                list       = result
            };
            apiResp.msg = "查询完成";
            bll.ContextResponse(context, apiResp);
        }
Exemple #19
0
        /// <summary>
        /// 生成首页数据
        /// </summary>
        /// <param name="websiteOwnerList">站点列表</param>
        /// <param name="date">日期</param>
        public void BuildDashboardInfo(List <string> websiteList, DateTime nDate)
        {
            if (websiteList.Count == 0)
            {
                return;
            }

            int nDateInt      = DateTimeHelper.ToDateInt8ByDateTime(nDate);
            int lastDate7Int  = DateTimeHelper.ToDateInt8ByDateTime(nDate.AddDays(-6));
            int lastDate30Int = DateTimeHelper.ToDateInt8ByDateTime(nDate.AddDays(-29));
            List <DashboardLog>  dashLogList  = GetDashboardLogList(null, lastDate30Int, nDateInt);
            List <DashboardInfo> dashInfoList = GetDashboardInfoList();

            List <DashboardLog> uvDashLogList = new List <DashboardLog>();

            #region 访客记录统计

            List <MonitorEventDetailsInfo> uvList             = GetDashboardUVList(null, nDate.AddDays(-29).ToString("yyyy-MM-dd"), nDate.ToString("yyyy-MM-dd"));
            List <DashboardMonitorInfo>    uvDashboardLogList = GetColList <DashboardMonitorInfo>(int.MaxValue, 1, "1=1", "DetailID");
            //ExecuteSql("truncate table ZCJ_DashboardMonitorInfo");//清除原30天UV记录
            if (uvList.Count > 0)
            {
                List <DashboardMonitorInfo> uvGroupList = uvList.GroupBy(p => new
                {
                    p.WebsiteOwner,
                    p.EventUserID
                }).Select(g => new DashboardMonitorInfo
                {
                    WebsiteOwner = g.Key.WebsiteOwner,
                    EventUserID  = g.Key.EventUserID,
                    DetailID     = g.Max(p => p.DetailID).Value
                }).OrderByDescending(x => x.DetailID).ToList();

                //删除数据
                List <int> delIdList = uvDashboardLogList.Where(p => !uvGroupList.Exists(pi => pi.DetailID == p.DetailID)).Select(pid => pid.DetailID).ToList();
                if (delIdList.Count > 0)
                {
                    DeleteMultByKey <DashboardMonitorInfo>("DetailID", ZentCloud.Common.MyStringHelper.ListToStr(delIdList, "", ","));
                }

                List <int> addIdList = uvGroupList.Where(p => !uvDashboardLogList.Exists(pi => pi.DetailID == p.DetailID)).Select(pid => pid.DetailID).ToList();

                List <DashboardMonitorInfo> uvAddDashboardList = uvList.Where(p => addIdList.Exists(pi => pi == p.DetailID.Value)).Select(g => new DashboardMonitorInfo
                {
                    DetailID       = g.DetailID.Value,
                    WebsiteOwner   = g.WebsiteOwner,
                    EventUserID    = g.EventUserID,
                    EventDate      = g.EventDate.Value,
                    SourceIP       = g.SourceIP,
                    IPLocation     = g.IPLocation,
                    EventBrowserID = g.EventBrowserID
                }).ToList();

                if (uvAddDashboardList.Count > 0)
                {
                    string          userIds  = MyStringHelper.ListToStr(uvAddDashboardList.Select(p => p.EventUserID).Distinct().ToList(), "'", ",");
                    List <UserInfo> userList = GetColMultListByKey <UserInfo>(int.MaxValue, 1, "UserID", userIds, "AutoID,UserID,TrueName,Phone,WXNickname,WXHeadimgurl");
                    for (int i = 0; i < uvAddDashboardList.Count; i++)
                    {
                        UserInfo nuser = userList.FirstOrDefault(p => p.UserID == uvAddDashboardList[i].EventUserID);
                        if (nuser != null)
                        {
                            uvAddDashboardList[i].EventUserWXNikeName = nuser.WXNickname;
                            uvAddDashboardList[i].EventUserTrueName   = nuser.TrueName;
                            uvAddDashboardList[i].EventUserWXImg      = nuser.WXHeadimgurl;
                            uvAddDashboardList[i].EventUserPhone      = nuser.Phone;
                        }
                        Add(uvAddDashboardList[i]);
                    }
                }

                uvDashLogList = uvList.Where(ni => uvGroupList.Exists(pi => pi.DetailID == ni.DetailID)).GroupBy(p => new
                {
                    p.WebsiteOwner,
                    Value = DateTimeHelper.ToDateInt8ByDateTime(p.EventDate.Value)
                }).Select(g => new DashboardLog
                {
                    WebsiteOwner  = g.Key.WebsiteOwner,
                    Date          = g.Key.Value,
                    DashboardType = "UV",
                    Num           = g.Count()
                }).OrderByDescending(x => x.Date).ThenBy(x => x.WebsiteOwner).ToList();
            }
            #endregion

            List <DashboardLog> fansDashLogList = new List <DashboardLog>();
            #region 粉丝记录统计
            List <Log> fansList = GetDashboardSubscribeList(null, nDate.AddDays(-29).ToString("yyyy-MM-dd"), nDate.ToString("yyyy-MM-dd"));
            if (fansList.Count > 0)
            {
                fansDashLogList = fansList.GroupBy(p => new
                {
                    p.WebsiteOwner,
                    p.UserID
                }).Select(g => new Log
                {
                    WebsiteOwner = g.Key.WebsiteOwner,
                    UserID       = g.Key.UserID,
                    InsertDate   = g.Max(p => p.InsertDate)
                }).GroupBy(e => new
                {
                    e.WebsiteOwner,
                    Value = DateTimeHelper.ToDateInt8ByDateTime(e.InsertDate)
                }).Select(f => new DashboardLog
                {
                    WebsiteOwner  = f.Key.WebsiteOwner,
                    Date          = f.Key.Value,
                    DashboardType = "Fans",
                    Num           = f.Count()
                }).OrderByDescending(x => x.Date).ThenBy(x => x.WebsiteOwner).ToList();
            }
            #endregion

            List <TotalInfo> memberTotalList = GetAllDashboardRegUserTotal();
            List <TotalInfo> uvTotalList     = GetAllDashboardUVTotal();
            List <TotalInfo> fansTotalList   = GetAllDashboardSubscribeTotal();
            List <TotalInfo> orderTotalList  = GetAllDashboardOrderTotal("0,1,2,3");
            List <TotalInfo> visitTotalList  = GetAllDashboardMonitorEventDetailsTotal();

            foreach (string web in websiteList)
            {
                DashboardInfo ndi = dashInfoList.FirstOrDefault(p => p.WebsiteOwner == web);
                //if (ndi!=null && ndi.Date == nDateInt) continue;
                DashboardJson nDashboardJson = new DashboardJson();
                nDashboardJson.visit_num_lastday  = dashLogList.Where(p => p.WebsiteOwner == web && p.DashboardType == "WebAccessLog" && p.Date == nDateInt).Sum(p => p.Num);
                nDashboardJson.order_num_lastday  = dashLogList.Where(p => p.WebsiteOwner == web && p.DashboardType == "WXMallOrder" && p.Date == nDateInt).Sum(p => p.Num);
                nDashboardJson.member_num_lastday = dashLogList.Where(p => p.WebsiteOwner == web && p.DashboardType == "Member" && p.Date == nDateInt).Sum(p => p.Num);
                nDashboardJson.uv_num_lastday     = uvDashLogList.Where(p => p.WebsiteOwner == web && p.Date == nDateInt).Sum(p => p.Num);
                nDashboardJson.fans_num_lastday   = fansDashLogList.Where(p => p.WebsiteOwner == web && p.Date == nDateInt).Sum(p => p.Num);

                nDashboardJson.visit_num_lastweek  = dashLogList.Where(p => p.WebsiteOwner == web && p.DashboardType == "WebAccessLog" && p.Date >= lastDate7Int && p.Date <= nDateInt).Sum(p => p.Num);
                nDashboardJson.order_num_lastweek  = dashLogList.Where(p => p.WebsiteOwner == web && p.DashboardType == "WXMallOrder" && p.Date >= lastDate7Int && p.Date <= nDateInt).Sum(p => p.Num);
                nDashboardJson.member_num_lastweek = dashLogList.Where(p => p.WebsiteOwner == web && p.DashboardType == "Member" && p.Date >= lastDate7Int && p.Date <= nDateInt).Sum(p => p.Num);
                nDashboardJson.uv_num_lastweek     = uvDashLogList.Where(p => p.WebsiteOwner == web && p.Date >= lastDate7Int && p.Date <= nDateInt).Sum(p => p.Num);
                nDashboardJson.fans_num_lastweek   = fansDashLogList.Where(p => p.WebsiteOwner == web && p.Date >= lastDate7Int && p.Date <= nDateInt).Sum(p => p.Num);

                nDashboardJson.visit_num_lastmonth  = dashLogList.Where(p => p.WebsiteOwner == web && p.DashboardType == "WebAccessLog" && p.Date >= lastDate30Int && p.Date <= nDateInt).Sum(p => p.Num);
                nDashboardJson.order_num_lastmonth  = dashLogList.Where(p => p.WebsiteOwner == web && p.DashboardType == "WXMallOrder" && p.Date >= lastDate30Int && p.Date <= nDateInt).Sum(p => p.Num);
                nDashboardJson.member_num_lastmonth = dashLogList.Where(p => p.WebsiteOwner == web && p.DashboardType == "Member" && p.Date >= lastDate30Int && p.Date <= nDateInt).Sum(p => p.Num);
                nDashboardJson.uv_num_lastmonth     = uvDashLogList.Where(p => p.WebsiteOwner == web && p.Date >= lastDate30Int && p.Date <= nDateInt).Sum(p => p.Num);
                nDashboardJson.fans_num_lastmonth   = fansDashLogList.Where(p => p.WebsiteOwner == web && p.Date >= lastDate30Int && p.Date <= nDateInt).Sum(p => p.Num);

                TotalInfo memberTotal = memberTotalList.FirstOrDefault(p => p.WebsiteOwner == web);
                if (memberTotal != null)
                {
                    nDashboardJson.member_total = memberTotal.Total;
                }

                TotalInfo uvTotal = uvTotalList.FirstOrDefault(p => p.WebsiteOwner == web);
                if (uvTotal != null)
                {
                    nDashboardJson.uv_total = uvTotal.Total;
                }

                TotalInfo fansTotal = fansTotalList.FirstOrDefault(p => p.WebsiteOwner == web);
                if (fansTotal != null)
                {
                    nDashboardJson.fans_total = fansTotal.Total;
                }

                TotalInfo orderTotal = orderTotalList.FirstOrDefault(p => p.WebsiteOwner == web);
                if (orderTotal != null)
                {
                    nDashboardJson.order_total = orderTotal.Total;
                }

                TotalInfo visitTotal = visitTotalList.FirstOrDefault(p => p.WebsiteOwner == web);
                if (visitTotal != null)
                {
                    nDashboardJson.visit_total = visitTotal.Total;
                }

                for (DateTime i = nDate; i >= nDate.AddDays(-29); i = i.AddDays(-1))
                {
                    int    rDateInt    = ZentCloud.Common.DateTimeHelper.ToDateInt8ByDateTime(i);
                    string rDateString = i.ToString("yyyy-MM-dd");
                    nDashboardJson.day_list.Add(rDateString);
                    DashboardLog rVisitLog = dashLogList.FirstOrDefault(p => p.WebsiteOwner == web && p.DashboardType == "WebAccessLog" && p.Date == rDateInt);
                    if (rVisitLog == null)
                    {
                        nDashboardJson.visit_num_list.Add(0);
                    }
                    else
                    {
                        nDashboardJson.visit_num_list.Add(rVisitLog.Num);
                    }
                    DashboardLog rOrderLog = dashLogList.FirstOrDefault(p => p.WebsiteOwner == web && p.DashboardType == "WXMallOrder" && p.Date == rDateInt);
                    if (rOrderLog == null)
                    {
                        nDashboardJson.order_num_list.Add(0);
                    }
                    else
                    {
                        nDashboardJson.order_num_list.Add(rOrderLog.Num);
                    }
                    DashboardLog rMemberLog = dashLogList.FirstOrDefault(p => p.WebsiteOwner == web && p.DashboardType == "Member" && p.Date == rDateInt);
                    if (rMemberLog == null)
                    {
                        nDashboardJson.member_num_list.Add(0);
                    }
                    else
                    {
                        nDashboardJson.member_num_list.Add(rMemberLog.Num);
                    }

                    DashboardLog rUVLog = uvDashLogList.FirstOrDefault(p => p.WebsiteOwner == web && p.Date == rDateInt);
                    if (rUVLog == null)
                    {
                        nDashboardJson.uv_num_list.Add(0);
                    }
                    else
                    {
                        nDashboardJson.uv_num_list.Add(rUVLog.Num);
                    }

                    DashboardLog rFansLog = fansDashLogList.FirstOrDefault(p => p.WebsiteOwner == web && p.Date == rDateInt);
                    if (rFansLog == null)
                    {
                        nDashboardJson.fans_num_list.Add(0);
                    }
                    else
                    {
                        nDashboardJson.fans_num_list.Add(rFansLog.Num);
                    }
                }
                nDashboardJson.timestamp = DateTimeHelper.DateTimeToUnixTimestamp(DateTime.Now);

                string nJson = JsonConvert.SerializeObject(nDashboardJson);
                if (ndi == null)
                {
                    Add(new DashboardInfo()
                    {
                        WebsiteOwner = web, Date = nDateInt, Json = nJson
                    });
                }
                else
                {
                    Update(new DashboardInfo()
                    {
                        WebsiteOwner = web, Date = nDateInt, Json = nJson
                    });
                }
            }
        }