Пример #1
0
        /// <summary>
        /// 将红包金额存到预存款里  (领取红包时执行)
        /// 只会出现一条红包记录
        /// </summary>
        private void DepositToMember(string openId, decimal price, string unionId = "")
        {
            //查看用户、OpenId关联表里是否存在数据,存在则证明已经绑定过OpenId
            MemberOpenIdInfo model = DbFactory.Default.Get <MemberOpenIdInfo>().Where(p => p.OpenId.ToLower() == openId.ToLower()).FirstOrDefault();

            if (model == null && !string.IsNullOrEmpty(unionId))
            {
                model = DbFactory.Default.Get <MemberOpenIdInfo>().Where(p => p.UnionId.ToLower() == unionId.ToLower()).FirstOrDefault();
            }
            if (model != null)
            {
                var receive = DbFactory.Default.Get <BonusReceiveInfo>().Where(p => (p.OpenId.ToLower() == openId.ToLower() || p.OpenId.ToLower() == model.UnionId.ToLower()) && p.IsTransformedDeposit == false).FirstOrDefault();
                if (receive == null || receive.Id <= 0)
                {
                    return;//没有未领取红包提前跳出
                }
                receive.IsTransformedDeposit = true;
                receive.UserId = model.UserId;
                DbFactory.Default.Update(receive);

                IMemberCapitalService capitalServicer = Mall.ServiceProvider.Instance <IMemberCapitalService> .Create;
                CapitalDetailModel    capita          = new CapitalDetailModel
                {
                    UserId     = model.UserId,
                    SourceType = Mall.Entities.CapitalDetailInfo.CapitalDetailType.RedPacket,
                    Amount     = price,
                    CreateTime = ((DateTime)receive.ReceiveTime).ToString("yyyy-MM-dd HH:mm:ss")
                };
                capitalServicer.AddCapital(capita);
            }
        }
Пример #2
0
        /// <summary>
        /// 将红包金额存到预存款里  (领取红包时执行)
        /// 只会出现一条红包记录
        /// </summary>
        private void DepositToMember(string openId, decimal price)
        {
            Entities efContext = new Entities();
            //查看用户、OpenId关联表里是否存在数据,存在则证明已经绑定过OpenId
            MemberOpenIdInfo model = efContext.MemberOpenIdInfo.Where(p => p.OpenId == openId).FirstOrDefault();

            if (model != null)
            {
                var receive = efContext.BonusReceiveInfo.Where(p => p.OpenId == openId && !p.IsTransformedDeposit).FirstOrDefault();
                receive.IsTransformedDeposit = true;
                receive.Himall_Members       = efContext.UserMemberInfo.FirstOrDefault(p => p.Id == model.UserId);
                efContext.SaveChanges();

                IMemberCapitalService capitalServicer = Himall.ServiceProvider.Instance <IMemberCapitalService> .Create;
                CapitalDetailModel    capita          = new CapitalDetailModel
                {
                    UserId     = model.UserId,
                    SourceType = CapitalDetailInfo.CapitalDetailType.RedPacket,
                    Amount     = price,
                    CreateTime = ((DateTime)receive.ReceiveTime).ToString("yyyy-MM-dd HH:mm:ss")
                };
                capitalServicer.AddCapital(capita);
            }
            efContext.Dispose();
        }
        private void SkipWinxinOpenId(string userName, string openId)
        {
            string     generateId = Globals.GetGenerateId();
            MemberInfo memberInfo = new MemberInfo();

            memberInfo.GradeId   = MemberProcessor.GetDefaultMemberGrade();
            memberInfo.UserName  = userName;
            memberInfo.SessionId = generateId;
            memberInfo.Password  = generateId;
            string text2 = memberInfo.PasswordSalt = "Open";

            memberInfo.RealName = string.Empty;
            memberInfo.Address  = string.Empty;
            int num = MemberProcessor.CreateMember(memberInfo);

            if (num == 0)
            {
                memberInfo.UserName = "******" + generateId;
                memberInfo.Password = generateId;
                MemberProcessor.CreateMember(memberInfo);
            }
            MemberOpenIdInfo memberOpenIdInfo = new MemberOpenIdInfo();

            memberOpenIdInfo.UserId     = num;
            memberOpenIdInfo.OpenIdType = "hishop.plugins.openid.weixin";
            memberOpenIdInfo.OpenId     = openId;
            if (MemberProcessor.GetMemberByOpenId(memberOpenIdInfo.OpenIdType, memberOpenIdInfo.OpenId) == null)
            {
                MemberProcessor.AddMemberOpenId(memberOpenIdInfo);
            }
            Users.SetCurrentUser(num, 30, true, false);
            HiContext.Current.User = memberInfo;
        }
Пример #4
0
        //平台红包存储
        private void DepositToRegister(MemberOpenIdInfo openInfo)
        {
            //获取某个OpenId对应的红包记录(在Mall3.3版本,考虑到小程序首页配置了现金红包跳转到红包页面的情况,将之前的openId改为UnionId,并兼容以前的数据)
            var receives = DbFactory.Default.Get <BonusReceiveInfo>().Where(p => (p.OpenId.ToLower() == openInfo.OpenId.ToLower() || p.OpenId.ToLower() == openInfo.UnionId.ToLower()) && p.IsTransformedDeposit == false);
            var list     = receives.ToList();
            List <CapitalDetailModel> capitals = new List <CapitalDetailModel>();

            //存在数据则证明有可用红包,可以存到预存款里
            if (list.Count > 0)
            {
                foreach (var model in list)
                {
                    model.IsTransformedDeposit = true;
                    model.UserId = openInfo.UserId;
                    DbFactory.Default.Update(model);

                    CapitalDetailModel capital = new CapitalDetailModel()
                    {
                        UserId     = openInfo.UserId,
                        SourceType = Mall.Entities.CapitalDetailInfo.CapitalDetailType.RedPacket,
                        Amount     = model.Price,
                        CreateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
                    };
                    new MemberCapitalService().AddCapital(capital);
                }
            }
            IMemberCapitalService capitalServicer = Mall.ServiceProvider.Instance <IMemberCapitalService> .Create;

            foreach (var c in capitals)
            {
                capitalServicer.AddCapital(c);
            }
        }
Пример #5
0
        private void DepositToRegister(MemberOpenIdInfo openInfo, Entities efContext)
        {
            IQueryable <BonusReceiveInfo> bonusReceiveInfo =
                from p in efContext.BonusReceiveInfo
                where (p.OpenId == openInfo.OpenId) && !p.IsTransformedDeposit
                select p;
            List <BonusReceiveInfo>   list = bonusReceiveInfo.ToList();
            List <CapitalDetailModel> capitalDetailModels = new List <CapitalDetailModel>();

            if (list.Count > 0)
            {
                foreach (BonusReceiveInfo bonusReceiveInfo1 in list)
                {
                    bonusReceiveInfo1.IsTransformedDeposit = true;
                    bonusReceiveInfo1.ChemCloud_Members    = efContext.UserMemberInfo.FirstOrDefault((UserMemberInfo p) => p.Id == openInfo.UserId);
                    CapitalDetailModel capitalDetailModel = new CapitalDetailModel()
                    {
                        UserId = openInfo.UserId,
                        //SourceType = CapitalDetailInfo.CapitalDetailType.RedPacket,
                        Amount     = bonusReceiveInfo1.Price,
                        CreateTime = bonusReceiveInfo1.ReceiveTime.Value.ToString("yyyy-MM-dd HH:mm:ss")
                    };
                    capitalDetailModels.Add(capitalDetailModel);
                }
                efContext.SaveChanges();
            }
            IMemberCapitalService create = Instance <IMemberCapitalService> .Create;

            foreach (CapitalDetailModel capitalDetailModel1 in capitalDetailModels)
            {
                create.AddCapital(capitalDetailModel1);
            }
        }
Пример #6
0
        private void DepositShopBonus(MemberOpenIdInfo openInfo, Entities efContext)
        {
            List <ShopBonusReceiveInfo> list = (
                from p in efContext.ShopBonusReceiveInfo
                where (p.OpenId == openInfo.OpenId) && p.UserId == null
                select p).ToList();

            if (list.Count() <= 0)
            {
                return;
            }
            DateTime now = DateTime.Now;

            foreach (ShopBonusReceiveInfo nullable in list)
            {
                nullable.UserId      = new long?(openInfo.UserId);
                nullable.ReceiveTime = new DateTime?(now);
            }
            try
            {
                efContext.SaveChanges();
            }
            catch (Exception exception)
            {
                Log.Info("商家红包存储出错:", exception);
            }
        }
Пример #7
0
        //商家红包存储
        private void DepositShopBonus(MemberOpenIdInfo openInfo)
        {
            var msg  = new Exception();
            var flag = DbFactory.Default
                       .InTransaction(() =>
            {
                var receives = DbFactory.Default.Get <ShopBonusReceiveInfo>()
                               .Where(p => p.OpenId.ToLower() == openInfo.OpenId.ToLower() && (p.UserId == 0 || p.UserId.ExIsNull())).ToList();
                if (receives.Count() <= 0)
                {
                    return(true);
                }

                DateTime now = DateTime.Now;
                foreach (var r in receives)
                {
                    r.UserId      = openInfo.UserId;
                    r.ReceiveTime = now;
                    DbFactory.Default.Update(r);
                }
                return(true);
            },
                                      null,
                                      (ex) => { msg = ex; });

            if (!flag)
            {
                Log.Info("商家红包存储出错:", msg);
            }
        }
Пример #8
0
        private void DepositToMember(string openId, decimal price)
        {
            Entities         entity           = new Entities();
            MemberOpenIdInfo memberOpenIdInfo = (
                from p in entity.MemberOpenIdInfo
                where p.OpenId == openId
                select p).FirstOrDefault();

            if (memberOpenIdInfo != null)
            {
                BonusReceiveInfo bonusReceiveInfo = (
                    from p in entity.BonusReceiveInfo
                    where (p.OpenId == openId) && !p.IsTransformedDeposit
                    select p).FirstOrDefault();
                bonusReceiveInfo.IsTransformedDeposit = true;
                bonusReceiveInfo.ChemCloud_Members    = entity.UserMemberInfo.FirstOrDefault((UserMemberInfo p) => p.Id == memberOpenIdInfo.UserId);
                entity.SaveChanges();
                IMemberCapitalService create             = Instance <IMemberCapitalService> .Create;
                CapitalDetailModel    capitalDetailModel = new CapitalDetailModel()
                {
                    UserId = memberOpenIdInfo.UserId,
                    //SourceType = CapitalDetailInfo.CapitalDetailType.RedPacket,
                    Amount     = price,
                    CreateTime = bonusReceiveInfo.ReceiveTime.Value.ToString("yyyy-MM-dd HH:mm:ss")
                };
                create.AddCapital(capitalDetailModel);
            }
            entity.Dispose();
        }
Пример #9
0
        public void BindMember(long userId, string serviceProvider, string openId, MemberOpenIdInfo.AppIdTypeEnum AppidType, string headImage = null, string unionid = null)
        {
            CheckOpenIdHasBeenUsed(serviceProvider, openId, userId);
            MemberOpenIdInfo memberOpenIdInfo = new MemberOpenIdInfo()
            {
                UserId          = userId,
                OpenId          = openId,
                ServiceProvider = serviceProvider,
                AppIdType       = AppidType,
                UnionId         = (string.IsNullOrWhiteSpace(unionid) ? string.Empty : unionid)
            };
            MemberOpenIdInfo memberOpenIdInfo1 = memberOpenIdInfo;
            UserMemberInfo   userMemberInfo    = context.UserMemberInfo.FirstOrDefault((UserMemberInfo item) => item.Id == userId);

            if (!string.IsNullOrWhiteSpace(headImage) && string.IsNullOrWhiteSpace(userMemberInfo.Photo))
            {
                userMemberInfo.Photo = TransferHeadImage(headImage, userId);
            }
            context.MemberOpenIdInfo.Add(memberOpenIdInfo1);
            context.SaveChanges();
            Instance <IBonusService> .Create.DepositToRegister(userMemberInfo.Id);

            if (serviceProvider.ToLower() == "ChemCloud.Plugin.OAuth.WeiXin".ToLower())
            {
                AddBindInergral(userMemberInfo);
            }
            Cache.Remove(CacheKeyCollection.Member(userId));
        }
Пример #10
0
        //平台红包存储
        private void DepositToRegister(MemberOpenIdInfo openInfo, Entities efContext)
        {
            //获取某个OpenId对应的红包记录
            var receives = efContext.BonusReceiveInfo.Where(p => p.OpenId == openInfo.OpenId && !p.IsTransformedDeposit);
            var list     = receives.ToList();
            List <CapitalDetailModel> capitals = new List <CapitalDetailModel>();

            //存在数据则证明有可用红包,可以存到预存款里
            if (list.Count > 0)
            {
                foreach (var model in list)
                {
                    model.IsTransformedDeposit = true;
                    model.Himall_Members       = efContext.UserMemberInfo.FirstOrDefault(p => p.Id == openInfo.UserId);


                    CapitalDetailModel capital = new CapitalDetailModel()
                    {
                        UserId     = openInfo.UserId,
                        SourceType = CapitalDetailInfo.CapitalDetailType.RedPacket,
                        Amount     = model.Price,
                        CreateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
                    };
                    new MemberCapitalService().AddCapital(capital);
                }
                efContext.SaveChanges();
            }
            IMemberCapitalService capitalServicer = Himall.ServiceProvider.Instance <IMemberCapitalService> .Create;

            foreach (var c in capitals)
            {
                capitalServicer.AddCapital(c);
            }
        }
Пример #11
0
        //诊所红包存储
        private void DepositShopBonus(MemberOpenIdInfo openInfo, Entities efContext)
        {
            var receives = efContext.ShopBonusReceiveInfo.Where(p => p.OpenId == openInfo.OpenId && p.UserId == null).ToList();

            if (receives.Count() <= 0)
            {
                return;
            }

            DateTime now = DateTime.Now;

            foreach (var r in receives)
            {
                r.UserId      = openInfo.UserId;
                r.ReceiveTime = now;
            }
            try
            {
                efContext.SaveChanges();
            }
            catch (Exception e)
            {
                Log.Info("诊所红包存储出错:", e);
            }
        }
Пример #12
0
        /// <summary>
        ///账号密码登录
        /// </summary>
        /// <returns></returns>
        public object GetLoginByUserName(string openId = "", string userName = "", string password = "", string nickName = "")
        {
            if (!string.IsNullOrEmpty(openId) && !string.IsNullOrEmpty(userName) && !string.IsNullOrEmpty(password))
            {
                UserMemberInfo member = null;

                try
                {
                    member = ServiceProvider.Instance <IMemberService> .Create.Login(userName, password);
                }
                catch (Exception ex)
                {
                    GetErrorJson(ex.Message);
                }
                if (member == null)
                {
                    GetErrorJson("用户名或密码错误");
                }
                else
                {
                    if (member != null)
                    {
                        bool IsUpdate = true;
                        //如果不是一键登录的 则绑定openId
                        if (!string.IsNullOrEmpty(openId))
                        {
                            //UserMemberInfo memberopen = ServiceProvider.Instance<IMemberService>.Create.GetMemberByOpenId(SmallProgServiceProvider, openId);
                            //if (memberopen == null)
                            //{
                            //    IsUpdate = true;
                            //    //新增openId记录

                            //}
                            //else
                            //{
                            //    if (memberopen.Id != member.Id)
                            //    {
                            MemberOpenIdInfo memberOpenIdInfo = new MemberOpenIdInfo()
                            {
                                UserId          = member.Id,
                                OpenId          = openId,
                                ServiceProvider = SmallProgServiceProvider,
                                AppIdType       = Himall.Model.MemberOpenIdInfo.AppIdTypeEnum.Normal,
                                UnionId         = string.Empty
                            };
                            LoginHelper.ChangeOpenIdBindMember(memberOpenIdInfo);
                            //    }
                            //}
                        }

                        string memberId = UserCookieEncryptHelper.Encrypt(member.Id, CookieKeysCollection.USERROLE_USER);
                        var    prom     = DistributionApplication.GetPromoterByUserId(member.Id);
                        return(GetMember(member, openId));
                    }
                }
            }
            return(Json(new { Success = "No" }));
        }
Пример #13
0
        private void Pay(InpourRequestInfo request)
        {
            string         inpourId    = request.InpourId;
            PayGatewayInfo gatewayInfo = this.GetGatewayInfo(request.PaymentId.ToString());

            gatewayInfo.InpourRequest = request;
            if (gatewayInfo.GatewayTypeName == "hishop.plugins.payment.weixinrequest")
            {
                string     empty = string.Empty;
                MemberInfo user  = HiContext.Current.User;
                if (user.UserId != 0)
                {
                    MemberOpenIdInfo memberOpenIdInfo = user.MemberOpenIds.FirstOrDefault((MemberOpenIdInfo item) => item.OpenIdType.ToLower() == "hishop.plugins.openid.weixin");
                    if (memberOpenIdInfo != null)
                    {
                        empty = memberOpenIdInfo.OpenId;
                    }
                }
                else
                {
                    this.Page.Response.Redirect("/" + base.ClientType.ToString() + "/Login.aspx", true);
                }
                this.Page.Response.Redirect("/pay/WeiXinInpourSubmit?orderId=" + inpourId, true);
            }
            if (gatewayInfo.GatewayTypeName == "hishop.plugins.payment.alipaywx.alipaywxrequest")
            {
                HttpContext.Current.Response.Redirect("~/vshop/WXAliPay.aspx?orderId=" + inpourId + "&status=1");
            }
            if (gatewayInfo.GatewayTypeName == "hishop.plugins.payment.ws_apppay.wswappayrequest")
            {
                HttpContext.Current.Response.Redirect("~/pay/app_alipay_Submit?orderId=" + inpourId, true);
            }
            SiteSettings masterSettings     = SettingsManager.GetMasterSettings();
            string       text               = $"http://{HttpContext.Current.Request.Url.Host}/{HiContext.Current.GetClientPath}/";
            string       hIGW               = gatewayInfo.GatewayTypeName.Replace(".", "_");
            string       wapInpourNotifyUrl = Globals.FullPath(base.GetRouteUrl("WapInpourNotify", new
            {
                HIGW = hIGW
            }));
            string wapInpourReturnUrl = Globals.FullPath(base.GetRouteUrl("WapInpourReturn", new
            {
                HIGW = hIGW
            }));
            PaymentModeInfo paymentModeInfo = gatewayInfo.Paymode = ShoppingProcessor.GetPaymentMode(gatewayInfo.GatewayTypeName);

            gatewayInfo.OrderId = inpourId;
            if (paymentModeInfo == null)
            {
                this.ShowWapMessage("错误的支付方式", this.Page.Request.Url.ToString());
            }
            else
            {
                gatewayInfo.WapInpourNotifyUrl = wapInpourNotifyUrl;
                gatewayInfo.WapInpourReturnUrl = wapInpourReturnUrl;
                this.SendRequest(gatewayInfo);
            }
        }
Пример #14
0
        public UserMemberInfo GetMemberByUnionId(string serviceProvider, string UnionId)
        {
            UserMemberInfo   userMemberInfo   = null;
            MemberOpenIdInfo memberOpenIdInfo = context.MemberOpenIdInfo.FirstOrDefault((MemberOpenIdInfo item) => (item.ServiceProvider == serviceProvider) && (item.UnionId == UnionId));

            if (memberOpenIdInfo != null)
            {
                userMemberInfo = context.UserMemberInfo.FindById <UserMemberInfo>(memberOpenIdInfo.UserId);
            }
            return(userMemberInfo);
        }
Пример #15
0
        public object Receive(long grantid, string openId, string wxhead, string wxname)
        {
            if (DbFactory.Default.Get <ShopBonusReceiveInfo>().Where(p => p.OpenId == openId && p.BonusGrantId == grantid).Exist()) //已领取过
            {
                return(new ShopReceiveModel {
                    State = ShopReceiveStatus.Receive, Price = 0
                });
            }

            var receives = DbFactory.Default.Get <ShopBonusReceiveInfo>().Where(p => p.BonusGrantId == grantid && p.OpenId.ExIfNull("") == "").FirstOrDefault();

            if (receives == null)  //已被领完
            {
                return new ShopReceiveModel {
                           State = ShopReceiveStatus.HaveNot, Price = 0
                }
            }
            ;
            var bonus = DbFactory.Default.Get <ShopBonusInfo>()
                        .LeftJoin <ShopBonusGrantInfo>((b, g) => g.ShopBonusId == b.Id)
                        .Where <ShopBonusGrantInfo>(p => p.Id == receives.BonusGrantId)
                        .FirstOrDefault();

            if (bonus.IsInvalid)  //失效
            {
                return new ShopReceiveModel {
                           State = ShopReceiveStatus.Invalid, Price = 0
                }
            }
            ;

            MemberOpenIdInfo model = model = DbFactory.Default.Get <MemberOpenIdInfo>().Where(p => p.OpenId.ToLower() == openId.ToLower()).FirstOrDefault();

            if (model != null) //在平台有帐号并且已经绑定openid
            {
                receives.UserId = model.UserId;
            }

            receives.OpenId      = openId;
            receives.ReceiveTime = DateTime.Now;
            receives.WXHead      = wxhead;
            receives.WXName      = wxname;
            DbFactory.Default.Update(receives);
            if (model != null)
            {
                string username = DbFactory.Default.Get <MemberInfo>().Where(p => p.Id == model.UserId).Select(p => p.UserName).FirstOrDefault <string>();
                return(new ShopReceiveModel {
                    State = ShopReceiveStatus.CanReceive, Price = (decimal)receives.Price, UserName = username, Id = receives.Id
                });
            }
            return(new ShopReceiveModel {
                State = ShopReceiveStatus.CanReceiveNotUser, Price = (decimal)receives.Price, Id = receives.Id
            });
        }
Пример #16
0
        public UserMemberInfo QuickRegister(string username, string realName, string nickName, string serviceProvider, string openId, string headImage = null, MemberOpenIdInfo.AppIdTypeEnum appidtype = (MemberOpenIdInfo.AppIdTypeEnum) 1, string unionid = null, string unionopenid = null)
        {
            username = GetNewUserName();
            CheckInputIsValidWhenQuickRegister(username, serviceProvider, openId);
            CheckOpenIdHasBeenUsed(serviceProvider, openId, 0);
            if (string.IsNullOrWhiteSpace(nickName))
            {
                nickName = username;
            }
            Guid           guid = Guid.NewGuid();
            string         str  = string.Concat("o", guid.ToString("N").Substring(12));
            string         passwrodWithTwiceEncode = GetPasswrodWithTwiceEncode("", str);
            UserMemberInfo userMemberInfo          = new UserMemberInfo()
            {
                UserName      = username,
                PasswordSalt  = str,
                CreateDate    = DateTime.Now,
                LastLoginDate = DateTime.Now,
                Nick          = nickName,
                RealName      = realName
            };
            UserMemberInfo userMemberInfo1 = userMemberInfo;

            if (context.UserMemberInfo.Any((UserMemberInfo d) => d.UserName == userMemberInfo1.UserName))
            {
                throw new HimallException("用户名被占用");
            }
            using (TransactionScope transactionScope = new TransactionScope())
            {
                userMemberInfo1.Password = passwrodWithTwiceEncode;
                userMemberInfo1          = context.UserMemberInfo.Add(userMemberInfo1);
                context.SaveChanges();
                MemberOpenIdInfo memberOpenIdInfo = new MemberOpenIdInfo()
                {
                    UserId          = userMemberInfo1.Id,
                    OpenId          = openId,
                    ServiceProvider = serviceProvider,
                    AppIdType       = appidtype,
                    UnionId         = (string.IsNullOrWhiteSpace(unionid) ? string.Empty : unionid),
                    UnionOpenId     = (string.IsNullOrWhiteSpace(unionopenid) ? string.Empty : unionopenid)
                };
                context.MemberOpenIdInfo.Add(memberOpenIdInfo);
                context.SaveChanges();
                if (!string.IsNullOrWhiteSpace(headImage))
                {
                    userMemberInfo1.Photo = TransferHeadImage(headImage, userMemberInfo1.Id);
                }
                context.SaveChanges();
                transactionScope.Complete();
            }
            return(userMemberInfo1);
        }
Пример #17
0
        public static MemberOpenIdInfo PopulateMemberOpenIdInfo(IDataRecord reader)
        {
            if (reader == null)
            {
                return(null);
            }
            MemberOpenIdInfo memberOpenIdInfo = new MemberOpenIdInfo();

            memberOpenIdInfo.UserId     = (int)reader["UserId"];
            memberOpenIdInfo.OpenIdType = (string)reader["OpenIdType"];
            memberOpenIdInfo.OpenId     = (string)reader["OpenId"];
            return(memberOpenIdInfo);
        }
Пример #18
0
        public object Receive(long grantid, string openId, string wxhead, string wxname)
        {
            Log.Info(string.Format("Receive函数 = gid:{0} , oid:{1}", grantid, openId));
            if (Context.ShopBonusReceiveInfo.Where(p => p.OpenId == openId && p.BonusGrantId == grantid).Count() > 0)    //已领取过
            {
                return(new ShopReceiveModel {
                    State = ShopReceiveStatus.Receive, Price = 0
                });
            }

            var receives = Context.ShopBonusReceiveInfo.Where(p => p.BonusGrantId == grantid && string.IsNullOrEmpty(p.OpenId)).FirstOrDefault();

            if (receives == null)   //已被领完
            {
                return(new ShopReceiveModel {
                    State = ShopReceiveStatus.HaveNot, Price = 0
                });
            }
            else if (receives.Himall_ShopBonusGrant.Himall_ShopBonus.IsInvalid)   //失效
            {
                return(new ShopReceiveModel {
                    State = ShopReceiveStatus.Invalid, Price = 0
                });
            }

            MemberOpenIdInfo model = model = Context.MemberOpenIdInfo.Where(p => p.OpenId == openId).FirstOrDefault();

            if (model != null)  //在平台有帐号并且已经绑定openid
            {
                receives.UserId = model.UserId;
            }

            receives.OpenId      = openId;
            receives.ReceiveTime = DateTime.Now;
            receives.WXHead      = wxhead;
            receives.WXName      = wxname;
            Context.SaveChanges();
            if (model != null)
            {
                string username = Context.UserMemberInfo.Where(p => p.Id == model.UserId).Select(p => p.UserName).FirstOrDefault();
                return(new ShopReceiveModel {
                    State = ShopReceiveStatus.CanReceive, Price = ( decimal )receives.Price, UserName = username, Id = receives.Id
                });
            }
            return(new ShopReceiveModel {
                State = ShopReceiveStatus.CanReceiveNotUser, Price = ( decimal )receives.Price, Id = receives.Id
            });
        }
Пример #19
0
        public MemberOpenIdInfo GetMemberOpenIdInfo(int userId, string openIdType)
        {
            DbCommand sqlStringCommand = base.database.GetSqlStringCommand("SELECT [UserId],[OpenIdType],[OpenId] FROM [dbo].[aspnet_MemberOpenIds] WHERE UserId = @UserId AND OpenIdType = LOWER(@OpenIdType)");

            base.database.AddInParameter(sqlStringCommand, "UserId", DbType.Int32, userId);
            base.database.AddInParameter(sqlStringCommand, "OpenIdType", DbType.String, openIdType);
            MemberOpenIdInfo result = null;

            using (IDataReader dataReader = base.database.ExecuteReader(sqlStringCommand))
            {
                if (dataReader.Read())
                {
                    result = MemberOpenIdDao.PopulateMemberOpenIdInfo(dataReader);
                }
            }
            return(result);
        }
Пример #20
0
        /// <summary>
        ///账号密码登录
        /// </summary>
        /// <returns></returns>
        public JsonResult <Result <dynamic> > GetLoginByUserName(string openId = "", string userName = "", string password = "", string nickName = "")
        {
            if (!string.IsNullOrEmpty(openId) && !string.IsNullOrEmpty(userName) && !string.IsNullOrEmpty(password))
            {
                MemberInfo member = null;

                try
                {
                    member = ServiceProvider.Instance <IMemberService> .Create.Login(userName, password);
                }
                catch (Exception ex)
                {
                    return(Json(ErrorResult <dynamic>(ex.Message)));
                }
                if (member == null)
                {
                    return(Json(ErrorResult <dynamic>("用户名或密码错误")));
                }
                else
                {
                    if (member != null)
                    {
                        //如果不是一键登录的 则绑定openId
                        if (!string.IsNullOrEmpty(openId))
                        {
                            MemberOpenIdInfo memberOpenIdInfo = new MemberOpenIdInfo()
                            {
                                UserId          = member.Id,
                                OpenId          = openId,
                                ServiceProvider = SmallProgServiceProvider,
                                AppIdType       = MemberOpenIdInfo.AppIdTypeEnum.Normal,
                                UnionId         = string.Empty
                            };
                            MemberApplication.UpdateOpenIdBindMember(memberOpenIdInfo);
                        }

                        string memberId = UserCookieEncryptHelper.Encrypt(member.Id, CookieKeysCollection.USERROLE_USER);
                        return(GetMember(member, openId));
                    }
                }
            }
            return(Json(ErrorResult <dynamic>(string.Empty)));
        }
Пример #21
0
        public MemberOpenIdInfo GetMemberByOpenId(string openIdType, string openId)
        {
            DbCommand sqlStringCommand = base.database.GetSqlStringCommand("SELECT [UserId],[OpenIdType],[OpenId] FROM [dbo].[aspnet_MemberOpenIds] WHERE OpenId = @OpenId AND OpenIdType = LOWER(@OpenIdType)");

            base.database.AddInParameter(sqlStringCommand, "OpenIdType", DbType.String, openIdType);
            base.database.AddInParameter(sqlStringCommand, "OpenId", DbType.String, openId);
            IList <MemberOpenIdInfo> list = new List <MemberOpenIdInfo>();

            using (IDataReader objReader = base.database.ExecuteReader(sqlStringCommand))
            {
                list = DataHelper.ReaderToList <MemberOpenIdInfo>(objReader);
            }
            MemberOpenIdInfo result = null;

            if (list != null && list.Count > 0)
            {
                result = list.First();
            }
            return(result);
        }
Пример #22
0
        private void SetLoginState(MemberInfo member)
        {
            string           text         = this.parameters["HIGW"];
            string           openId       = this.parameters["CurrentOpenId"];
            MemberOpenIdInfo memberOpenId = MemberProcessor.GetMemberOpenId(text, openId);

            if (memberOpenId == null)
            {
                memberOpenId            = new MemberOpenIdInfo();
                memberOpenId.UserId     = member.UserId;
                memberOpenId.OpenIdType = text;
                memberOpenId.OpenId     = openId;
                MemberProcessor.AddMemberOpenId(memberOpenId);
            }
            Users.SetCurrentUser(member.UserId, 30, false, false);
            HiContext.Current.User = member;
            ShoppingCartInfo cookieShoppingCart = ShoppingCartProcessor.GetCookieShoppingCart();

            if (cookieShoppingCart != null)
            {
                ShoppingCartProcessor.ConvertShoppingCartToDataBase(cookieShoppingCart);
                ShoppingCartProcessor.ClearCookieShoppingCart();
            }
            if (!string.IsNullOrEmpty(this.parameters["token"]))
            {
                HttpCookie httpCookie = new HttpCookie("Token_" + HiContext.Current.UserId.ToString());
                httpCookie.HttpOnly = true;
                httpCookie.Expires  = DateTime.Now.AddMinutes(30.0);
                httpCookie.Value    = this.parameters["token"];
                HttpContext.Current.Response.Cookies.Add(httpCookie);
            }
            if (!string.IsNullOrEmpty(this.parameters["target_url"]))
            {
                this.Page.Response.Redirect(this.parameters["target_url"], true);
            }
            this.Page.Response.Redirect("/");
        }
Пример #23
0
        public void BindMember(long userId, string serviceProvider, string openId, string headImage = null, string unionid = null, string unionopenid = null)
        {
            CheckOpenIdHasBeenUsed(serviceProvider, openId, userId);
            MemberOpenIdInfo memberOpenIdInfo = new MemberOpenIdInfo()
            {
                UserId          = userId,
                OpenId          = openId,
                ServiceProvider = serviceProvider,
                UnionId         = (unionid == null ? string.Empty : unionid),
                UnionOpenId     = (string.IsNullOrWhiteSpace(unionopenid) ? string.Empty : unionopenid)
            };
            MemberOpenIdInfo memberOpenIdInfo1 = memberOpenIdInfo;
            UserMemberInfo   userMemberInfo    = context.UserMemberInfo.FirstOrDefault((UserMemberInfo item) => item.Id == userId);

            if (!string.IsNullOrWhiteSpace(headImage) && string.IsNullOrWhiteSpace(userMemberInfo.Photo))
            {
                userMemberInfo.Photo = TransferHeadImage(headImage, userId);
            }
            context.MemberOpenIdInfo.Add(memberOpenIdInfo1);
            context.SaveChanges();
            Instance <IBonusService> .Create.DepositToRegister(userMemberInfo.Id);

            Cache.Remove(CacheKeyCollection.Member(userId));
        }
Пример #24
0
        private void SetLoginState(MemberInfo member, int iSendCouponCount = 0)
        {
            string text = Globals.StripAllTags(this.Parameters["CurrentOpenId"]);

            if (!string.IsNullOrEmpty(text))
            {
                MemberOpenIdInfo memberOpenIdInfo = MemberProcessor.GetMemberOpenIdInfo(member.UserId, this.openIdType);
                if (memberOpenIdInfo != null && memberOpenIdInfo.OpenId != text)
                {
                    this.ShowMessage("该账号已被绑定,请绑定其他帐号。", false, "", 1);
                    return;
                }
                MemberOpenIdInfo memberOpenId = MemberProcessor.GetMemberOpenId(this.openIdType, text);
                if (memberOpenId == null)
                {
                    memberOpenId            = new MemberOpenIdInfo();
                    memberOpenId.UserId     = member.UserId;
                    memberOpenId.OpenIdType = this.openIdType;
                    memberOpenId.OpenId     = text;
                    try
                    {
                        MemberProcessor.AddMemberOpenId(memberOpenId);
                    }
                    catch (Exception ex)
                    {
                        NameValueCollection param = new NameValueCollection
                        {
                            this.Page.Request.QueryString,
                            this.Page.Request.Form
                        };
                        Globals.WriteExceptionLog_Page(ex, param, "AddMemberOpenId");
                    }
                }
            }
            Users.SetCurrentUser(member.UserId, 0, true, true);
            HiContext.Current.User = member;
            ShoppingCartInfo cookieShoppingCart = ShoppingCartProcessor.GetCookieShoppingCart();

            if (cookieShoppingCart != null)
            {
                ShoppingCartProcessor.ConvertShoppingCartToDataBase(cookieShoppingCart);
                ShoppingCartProcessor.ClearCookieShoppingCart();
            }
            if (!string.IsNullOrEmpty(this.Parameters["token"]))
            {
                HttpCookie httpCookie = new HttpCookie("Token_" + member.UserId);
                httpCookie.HttpOnly = true;
                httpCookie.Expires  = DateTime.Now.AddMinutes(30.0);
                httpCookie.Value    = this.Parameters["token"];
                HttpContext.Current.Response.Cookies.Add(httpCookie);
            }
            if (!string.IsNullOrEmpty(this.Parameters["target_url"]))
            {
                this.Page.Response.Redirect(this.Parameters["target_url"], true);
            }
            string text2 = this.Parameters["HITO"];
            string text3 = this.Parameters["target_url"].ToNullString();

            if (string.IsNullOrEmpty(text3))
            {
                text3 = "/Default";
            }
            if (iSendCouponCount > 0)
            {
                this.ShowMessage("恭喜您注册成功," + iSendCouponCount + " 张优惠券已经放入您的账户,可在会员中心我的优惠券中进行查看", true, text3, 1);
            }
            else
            {
                this.ShowMessage("恭喜您注册/登录成功", true, text3, 1);
            }
        }
Пример #25
0
        private void btnBindingLogin_Click(object sender, EventArgs e)
        {
            string text  = Globals.StripAllTags(this.Parameters["CurrentOpenId"].ToNullString());
            string text2 = Globals.StripAllTags(base.GetParameter("HIGW", false).ToNullString().Replace("_", "."));

            if (this.Page.IsValid)
            {
                string text3 = Globals.StripAllTags(this.txtBindUserName.Text.Trim());
                if (string.IsNullOrEmpty(text3))
                {
                    this.ShowMessage("用户名不能为空", false, "", 1);
                }
                else
                {
                    MemberInfo memberInfo = MemberProcessor.ValidLogin(text3, this.txtBindPassword.Text);
                    if (memberInfo != null)
                    {
                        if (!string.IsNullOrEmpty(memberInfo.UnionId) && text2.ToLower() == "hishop.plugins.openid.weixin.weixinservice" && memberInfo.UnionId != text)
                        {
                            this.ShowMessage("该用户已存在信任登录绑定关系,请选择其它帐号", false, "", 1);
                        }
                        else
                        {
                            MemberInfo memberByOpenId = MemberProcessor.GetMemberByOpenId(text2, text);
                            if (memberByOpenId != null && memberByOpenId.UserId != memberInfo.UserId)
                            {
                                this.ShowMessage("该用户已存在信任登录绑定关系,请选择其它帐号", false, "", 1);
                            }
                            else
                            {
                                if (string.IsNullOrEmpty(memberInfo.NickName))
                                {
                                    memberInfo.NickName = this.hidNickName.Value;
                                    MemberProcessor.UpdateMember(memberInfo);
                                }
                                Users.SetCurrentUser(memberInfo.UserId, 0, true, true);
                                HiContext.Current.User = memberInfo;
                                ShoppingCartInfo cookieShoppingCart = ShoppingCartProcessor.GetCookieShoppingCart();
                                if (cookieShoppingCart != null)
                                {
                                    ShoppingCartProcessor.ConvertShoppingCartToDataBase(cookieShoppingCart);
                                    ShoppingCartProcessor.ClearCookieShoppingCart();
                                }
                                if (!string.IsNullOrEmpty(text2) && !string.IsNullOrEmpty(text))
                                {
                                    if (text2.ToLower() == "hishop.plugins.openid.weixin.weixinservice" && MemberProcessor.GetMemberByUnionId(text) == null)
                                    {
                                        memberInfo.UnionId = text;
                                        MemberProcessor.UpdateMember(memberInfo);
                                    }
                                    MemberOpenIdInfo memberOpenIdInfo = new MemberOpenIdInfo();
                                    memberOpenIdInfo.UserId     = memberInfo.UserId;
                                    memberOpenIdInfo.OpenIdType = text2;
                                    memberOpenIdInfo.OpenId     = text;
                                    if (MemberProcessor.GetMemberByOpenId(memberOpenIdInfo.OpenIdType, memberOpenIdInfo.OpenId) == null)
                                    {
                                        MemberProcessor.AddMemberOpenId(memberOpenIdInfo);
                                    }
                                }
                                this.SetLoginState(memberInfo, 0);
                            }
                        }
                    }
                    else
                    {
                        this.ShowMessage("用户名或密码不正确", false, "", 1);
                    }
                }
            }
        }
Пример #26
0
        protected override void AttachChildControls()
        {
            this.toBuy              = (HtmlAnchor)this.FindControl("toBuy");
            this.toLogin            = (HtmlButton)this.FindControl("toLogin");
            this.divGetList         = (HtmlGenericControl)this.FindControl("divGetList");
            this.toBuy.Visible      = true;
            this.toLogin.Visible    = false;
            this.divGetList.Visible = true;
            string        text          = this.Page.Request["SendCode"];
            string        orderId       = this.Page.Request["OrderId"];
            OAuthUserInfo oAuthUserInfo = this.Context.Session["oAuthUserInfo"] as OAuthUserInfo;

            this.CheckRedEnvelope(text, orderId);
            if (HiContext.Current.UserId > 0 && oAuthUserInfo == null)
            {
                MemberInfo       user             = HiContext.Current.User;
                MemberOpenIdInfo memberOpenIdInfo = user.MemberOpenIds.FirstOrDefault((MemberOpenIdInfo item) => item.OpenIdType.ToLower() == "hishop.plugins.openid.weixin");
                if (memberOpenIdInfo != null)
                {
                    oAuthUserInfo = new OAuthUserInfo();
                    oAuthUserInfo.HeadImageUrl = user.Picture;
                    oAuthUserInfo.IsAttention  = user.IsSubscribe;
                    oAuthUserInfo.NickName     = user.NickName;
                    oAuthUserInfo.OpenId       = memberOpenIdInfo.OpenId;
                    oAuthUserInfo.unionId      = user.UnionId;
                }
            }
            if (oAuthUserInfo == null)
            {
                oAuthUserInfo = base.GetOAuthUserInfo(true);
                if (string.IsNullOrEmpty(oAuthUserInfo.OpenId))
                {
                    Globals.AppendLog("第一次获取用户OpenId失败,错误原因:" + oAuthUserInfo.ErrMsg, "", "", "OAuthUserInfoError");
                    this.Page.Response.Redirect("/Vshop/RedEnvelopeError?errorInfo=授权信息获取失败,请重试", true);
                }
                this.Context.Session["oAuthUserInfo"] = oAuthUserInfo;
            }
            if (string.IsNullOrEmpty(oAuthUserInfo.OpenId))
            {
                this.Page.Response.Redirect("/Vshop/RedEnvelopeError?errorInfo=用户OpenId获取失败,错误原因:" + oAuthUserInfo.ErrMsg, true);
            }
            Guid sendCode = Guid.Parse(text);
            RedEnvelopeGetRecordInfo redEnvelopeGetRecord = this.GetRedEnvelopeGetRecord(oAuthUserInfo, sendCode, orderId);
            int redEnvelopeGetRecordcCount = WeiXinRedEnvelopeProcessor.GetRedEnvelopeGetRecordcCount(this.weiXinRedEnvelope.Id, sendCode, orderId);
            RedEnvelopeGetRecordInfo lastRedEnvelopeGetRecord = WeiXinRedEnvelopeProcessor.GetLastRedEnvelopeGetRecord(oAuthUserInfo.OpenId, sendCode, orderId);
            DateTime dateTime = lastRedEnvelopeGetRecord?.GetTime ?? DateTime.Now.AddDays(-1.0);
            DateTime now      = DateTime.Now;
            bool     flag     = false;
            TimeSpan timeSpan = new TimeSpan(dateTime.Ticks);
            TimeSpan ts       = new TimeSpan(now.Ticks);

            if (timeSpan.Subtract(ts).Duration().TotalSeconds <= 4.0)
            {
                flag = true;
            }
            if (!flag)
            {
                if (redEnvelopeGetRecordcCount >= this.weiXinRedEnvelope.MaxNumber)
                {
                    if (oAuthUserInfo.IsAttention && WeiXinRedEnvelopeProcessor.IsGetInToday(oAuthUserInfo.OpenId, sendCode, true, orderId))
                    {
                        this.Page.Response.Redirect("/Vshop/RedEnvelopePrompt", true);
                    }
                    else
                    {
                        this.Page.Response.Redirect("/Vshop/RedEnvelopeFinish", true);
                    }
                }
                if (WeiXinRedEnvelopeProcessor.IsGetInToday(oAuthUserInfo.OpenId, sendCode, null, orderId))
                {
                    this.Page.Response.Redirect("/Vshop/RedEnvelopePrompt", true);
                }
                if (WeiXinRedEnvelopeProcessor.GetInTodayCount(oAuthUserInfo.OpenId, "", null, "") >= 3)
                {
                    this.Page.Response.Redirect("/Vshop/RedEnvelopePrompt", true);
                }
                if (!oAuthUserInfo.IsAttention)
                {
                    if (!WeiXinRedEnvelopeProcessor.IsGetInToday(oAuthUserInfo.OpenId, sendCode, null, ""))
                    {
                        WeiXinRedEnvelopeProcessor.AddRedEnvelopeGetRecord(redEnvelopeGetRecord);
                        this.AddCouponItemInfo(oAuthUserInfo, redEnvelopeGetRecord);
                    }
                    RedEnvelopeSendRecord redEnvelopeSendRecord = WeiXinRedEnvelopeProcessor.GetRedEnvelopeSendRecord(Guid.Parse(text), "", "");
                    this.Page.Response.Redirect($"AttentionHNYSJY?SendRecordId={redEnvelopeSendRecord.Id}", true);
                }
                else
                {
                    string openId = oAuthUserInfo.OpenId;
                    if (WeiXinRedEnvelopeProcessor.CheckRedEnvelopeGetRecordNoAttentionIsExist(openId))
                    {
                        WeiXinRedEnvelopeProcessor.SetRedEnvelopeGetRecordToAttention(oAuthUserInfo.NickName, oAuthUserInfo.HeadImageUrl, openId);
                    }
                    else
                    {
                        WeiXinRedEnvelopeProcessor.AddRedEnvelopeGetRecord(redEnvelopeGetRecord);
                        this.AddCouponItemInfo(oAuthUserInfo, redEnvelopeGetRecord);
                    }
                }
            }
            this.redEnvelopeAmount       = (Literal)this.FindControl("RedEnvelopeAmount");
            this.redEnvelopeAmount.Text  = (flag ? ((lastRedEnvelopeGetRecord != null) ? lastRedEnvelopeGetRecord.Amount.F2ToString("f2") : "0") : redEnvelopeGetRecord.Amount.F2ToString("f2"));
            this.rptRedEnvelopeGetRecord = (WapTemplatedRepeater)this.FindControl("rptRedEnvelopeGetRecord");
            this.RedEnvelopeGetRecordBind(text);
        }
Пример #27
0
        protected override void AttachChildControls()
        {
            int num = 0;

            PageTitle.AddSiteNameTitle("申请提现");
            this.lblBanlance        = (Literal)this.FindControl("lblBanlance");
            this.lblLastDrawTime    = (Literal)this.FindControl("lblLastDrawTime");
            this.lblminDraws        = (Literal)this.FindControl("lblminDraws");
            this.CanDrawRequestType = (HtmlInputHidden)this.FindControl("CanDrawRequestType");
            this.requestBalance     = (HtmlInputHidden)this.FindControl("requestBalance");
            if (!this.Page.IsPostBack)
            {
                MemberInfo user = HiContext.Current.User;
                if (!user.IsOpenBalance)
                {
                    this.Page.Response.Redirect(string.Format("/{1}/OpenBalance?ReturnUrl={0}", HttpContext.Current.Request.Url, HiContext.Current.GetClientPath));
                }
                if (string.IsNullOrEmpty(user.TradePassword))
                {
                    this.Page.Response.Redirect(string.Format("/{1}/OpenBalance?ReturnUrl={0}", HttpContext.Current.Request.Url, HiContext.Current.GetClientPath));
                }
                SiteSettings masterSettings = SettingsManager.GetMasterSettings();
                if (this.lblminDraws != null)
                {
                    this.lblminDraws.Text = masterSettings.MinimumSingleShot.F2ToString("f2");
                }
                if (this.lblBanlance != null)
                {
                    this.lblBanlance.Text = MemberProcessor.GetUserUseSplittin(HiContext.Current.UserId).F2ToString("f2");
                }
                if (this.lblLastDrawTime != null)
                {
                    SplittinDrawInfo myRecentlySplittinDraws = MemberProcessor.GetMyRecentlySplittinDraws();
                    if (myRecentlySplittinDraws != null)
                    {
                        this.lblLastDrawTime.Text = myRecentlySplittinDraws.RequestDate.ToString("yyyy-MM-dd HH:mm:ss");
                        if (myRecentlySplittinDraws.AuditStatus == 1)
                        {
                            this.requestBalance.Value = "1";
                        }
                    }
                    else
                    {
                        this.lblLastDrawTime.Text = "您还没有提现记录";
                    }
                }
                bool flag = masterSettings.EnableBulkPaymentWeixin;
                bool enableBulkPaymentAliPay = masterSettings.EnableBulkPaymentAliPay;
                if (masterSettings.EnableBulkPaymentWeixin)
                {
                    if (user.MemberOpenIds == null)
                    {
                        flag = false;
                    }
                    else
                    {
                        MemberOpenIdInfo memberOpenIdInfo = user.MemberOpenIds.FirstOrDefault((MemberOpenIdInfo item) => item.OpenIdType.ToLower() == "hishop.plugins.openid.weixin");
                        if (memberOpenIdInfo == null)
                        {
                            flag = false;
                        }
                    }
                }
                if (masterSettings.SplittinDraws_CashToDeposit)
                {
                    num++;
                }
                if (masterSettings.SplittinDraws_CashToBankCard)
                {
                    num += 2;
                }
                if (flag && masterSettings.SplittinDraws_CashToWeiXin)
                {
                    num += 4;
                }
                if (enableBulkPaymentAliPay && masterSettings.SplittinDraws_CashToALiPay)
                {
                    num += 8;
                }
                this.CanDrawRequestType.Value = num.ToString();
            }
        }
Пример #28
0
        private string sendGoods(HttpContext context)
        {
            string text  = context.Request["OrderNO"].Trim();
            string text2 = context.Request["SndStyle"].Trim();
            string text3 = context.Request["BillID"].Trim();
            IDictionary <string, string> dictionary = new Dictionary <string, string>();

            dictionary.Add("OrderId", text);
            dictionary.Add("SndStyle", text2);
            dictionary.Add("BillID", text3);
            dictionary.Add("ErrorMsg", "");
            if (text.IndexOf(',') > 0)
            {
                return("<?xml version='1.0' encoding='utf-8'?><Rsp><Result>0</Result><Cause><![CDATA[{不支持合并发货,请选择单个订单}]]></Cause></Rsp>");
            }
            OrderInfo orderInfo = OrderHelper.GetOrderInfo(text);

            if (orderInfo == null)
            {
                return("<?xml version='1.0' encoding='utf-8'?><Rsp><Result>0</Result><Cause><![CDATA[{未找到此订单}]]></Cause></Rsp>");
            }
            if (orderInfo.OrderStatus == OrderStatus.WaitBuyerPay && OrderHelper.NeedUpdateStockWhenSendGoods(orderInfo) && !OrderHelper.CheckStock(orderInfo))
            {
                return("<?xml version='1.0' encoding='utf-8'?><Rsp><Result>0</Result><Cause><![CDATA[{订单有商品库存不足,请补充库存后发货!}]]></Cause></Rsp>");
            }
            if (orderInfo.GroupBuyId > 0 && orderInfo.GroupBuyStatus != GroupBuyStatus.Success)
            {
                return("<?xml version='1.0' encoding='utf-8'?><Rsp><Result>0</Result><Cause><![CDATA[{当前订单为团购订单,团购活动还未成功结束,所以不能发货!}]]></Cause></Rsp>");
            }
            if (!orderInfo.CheckAction(OrderActions.SELLER_SEND_GOODS))
            {
                return("<?xml version='1.0' encoding='utf-8'?><Rsp><Result>0</Result><Cause><![CDATA[{当前订单状态没有付款或不是等待发货的订单,所以不能发货!}]]></Cause></Rsp>");
            }
            if (string.IsNullOrEmpty(text3.Trim()) || text3.Trim().Length > 20)
            {
                return("<?xml version='1.0' encoding='utf-8'?><Rsp><Result>0</Result><Cause><![CDATA[{运单号码不能为空,在1至20个字符之间!}]]></Cause></Rsp>");
            }
            ExpressCompanyInfo expressCompanyInfo = ExpressHelper.FindNodeLikeName(text2);

            if (expressCompanyInfo != null)
            {
                orderInfo.ExpressCompanyAbb  = expressCompanyInfo.Kuaidi100Code;
                orderInfo.ExpressCompanyName = expressCompanyInfo.Name;
            }
            else
            {
                orderInfo.ExpressCompanyAbb  = "";
                orderInfo.ExpressCompanyName = text2;
            }
            orderInfo.ShipOrderNumber = text3;
            if (!string.IsNullOrEmpty(orderInfo.OuterOrderId) && orderInfo.OuterOrderId.StartsWith("jd_") && (expressCompanyInfo == null || string.IsNullOrWhiteSpace(expressCompanyInfo.JDCode)))
            {
                return("<?xml version='1.0' encoding='utf-8'?><Rsp><Result>0</Result><Cause><![CDATA[{此订单是京东订单,所选物流公司不被京东支持!}]]></Cause></Rsp>");
            }
            if (OrderHelper.SendAPIGoods(orderInfo, true))
            {
                string text4 = "";
                if (orderInfo.Gateway == "hishop.plugins.payment.weixinrequest")
                {
                    try
                    {
                        SiteSettings masterSettings = SettingsManager.GetMasterSettings();
                        PayClient    payClient      = new PayClient(masterSettings.WeixinAppId, masterSettings.WeixinAppSecret, masterSettings.WeixinPartnerID, masterSettings.WeixinPartnerKey, masterSettings.WeixinPaySignKey, "", "", "");
                        DeliverInfo  deliverInfo    = new DeliverInfo();
                        deliverInfo.TransId    = orderInfo.GatewayOrderId;
                        deliverInfo.OutTradeNo = orderInfo.OrderId;
                        MemberOpenIdInfo memberOpenIdInfo = Users.GetUser(orderInfo.UserId).MemberOpenIds.FirstOrDefault((MemberOpenIdInfo item) => item.OpenIdType.ToLower() == "hishop.plugins.openid.weixin");
                        if (memberOpenIdInfo != null)
                        {
                            deliverInfo.OpenId = memberOpenIdInfo.OpenId;
                        }
                        payClient.DeliverNotify(deliverInfo);
                    }
                    catch (Exception ex)
                    {
                        dictionary["ErrrorMsg"] = "同步微信支付发货状态失败";
                        Globals.WriteExceptionLog(ex, dictionary, "APISendGoods");
                    }
                }
                else
                {
                    if (!string.IsNullOrEmpty(orderInfo.GatewayOrderId) && orderInfo.GatewayOrderId.Trim().Length > 0)
                    {
                        try
                        {
                            PaymentModeInfo paymentMode = SalesHelper.GetPaymentMode(orderInfo.Gateway);
                            if (paymentMode != null && !string.IsNullOrEmpty(paymentMode.Settings))
                            {
                                string         hIGW           = paymentMode.Gateway.Replace(".", "_");
                                PaymentRequest paymentRequest = PaymentRequest.CreateInstance(paymentMode.Gateway, HiCryptographer.Decrypt(paymentMode.Settings), orderInfo.PayOrderId, orderInfo.GetTotal(false), "订单发货", "订单号-" + orderInfo.PayOrderId, orderInfo.EmailAddress, orderInfo.OrderDate, Globals.FullPath(""), Globals.FullPath(RouteConfig.GetRouteUrl(HttpContext.Current, "PaymentReturn_url", new
                                {
                                    HIGW = hIGW
                                })), Globals.FullPath(RouteConfig.GetRouteUrl(HttpContext.Current, "PaymentNotify_url", new
                                {
                                    HIGW = hIGW
                                })), "");
                                paymentRequest.SendGoods(orderInfo.GatewayOrderId, orderInfo.RealModeName, orderInfo.ShipOrderNumber, "EXPRESS");
                            }
                        }
                        catch (Exception ex2)
                        {
                            dictionary["ErrrorMsg"] = "同步支付接口发货状态失败";
                            Globals.WriteExceptionLog(ex2, dictionary, "APISendGoods");
                        }
                    }
                    if (!string.IsNullOrEmpty(orderInfo.OuterOrderId))
                    {
                        if (orderInfo.OuterOrderId.StartsWith("tb_"))
                        {
                            string text5 = orderInfo.OuterOrderId.Replace("tb_", "");
                            try
                            {
                                string     requestUriString = $"http://order2.kuaidiangtong.com/UpdateShipping.ashx?tid={text5}&companycode={expressCompanyInfo.TaobaoCode}&outsid={orderInfo.ShipOrderNumber}&Host={HiContext.Current.SiteUrl}";
                                WebRequest webRequest       = WebRequest.Create(requestUriString);
                                webRequest.GetResponse();
                            }
                            catch (Exception ex3)
                            {
                                dictionary["ErrrorMsg"] = "同步淘宝发货状态失败";
                                Globals.WriteExceptionLog(ex3, dictionary, "APISendGoods");
                            }
                        }
                        else if (orderInfo.OuterOrderId.StartsWith("jd_"))
                        {
                            string text5 = orderInfo.OuterOrderId.Replace("jd_", "");
                            try
                            {
                                SiteSettings masterSettings2 = SettingsManager.GetMasterSettings();
                                JDHelper.JDOrderOutStorage(masterSettings2.JDAppKey, masterSettings2.JDAppSecret, masterSettings2.JDAccessToken, expressCompanyInfo.JDCode, orderInfo.ShipOrderNumber, text5);
                            }
                            catch (Exception ex4)
                            {
                                dictionary["ErrrorMsg"] = "同步京东发货失败";
                                Globals.WriteExceptionLog(ex4, dictionary, "APISendGoods");
                                text4 = $"同步京东发货失败,京东订单号:{text5},{ex4.Message}\r\n";
                            }
                        }
                    }
                }
                MemberInfo user = Users.GetUser(orderInfo.UserId);
                Messenger.OrderShipping(orderInfo, user);
                orderInfo.OnDeliver();
                return("<?xml version='1.0' encoding='utf-8'?><Rsp><Result>1</Result><Cause></Cause></Rsp>");
            }
            return("<?xml version='1.0' encoding='utf-8'?><Rsp><Result>0</Result><Cause><![CDATA[{发货失败,可能是商品库存不足,订单中有商品正在退货、换货状态!}]]></Cause></Rsp>");
        }
Пример #29
0
        public UserMemberInfo Register(string username, string password, string serviceProvider, string openId, string headImage = null, long introducer = 0L, string nickname = null, string unionid = null)
        {
            if (string.IsNullOrWhiteSpace(serviceProvider))
            {
                throw new ArgumentNullException("信任登录提供商不能为空");
            }
            if (string.IsNullOrWhiteSpace(openId))
            {
                throw new ArgumentNullException("openId不能为空");
            }
            CheckOpenIdHasBeenUsed(serviceProvider, openId, 0);
            if (string.IsNullOrWhiteSpace(username))
            {
                throw new ArgumentNullException("用户名不能为空");
            }
            if (CheckMemberExist(username))
            {
                throw new HimallException(string.Concat("用户名 ", username, " 已经被其它会员注册"));
            }
            if (string.IsNullOrWhiteSpace(password))
            {
                throw new ArgumentNullException("密码不能为空");
            }
            password = password.Trim();
            UserMemberInfo userMemberInfo = new UserMemberInfo()
            {
                UserName = username
            };
            Guid guid = Guid.NewGuid();

            userMemberInfo.PasswordSalt  = guid.ToString("N").Substring(12);
            userMemberInfo.CreateDate    = DateTime.Now;
            userMemberInfo.LastLoginDate = DateTime.Now;
            userMemberInfo.Nick          = (string.IsNullOrWhiteSpace(nickname) ? username : nickname);
            UserMemberInfo nullable = userMemberInfo;

            if (introducer != 0)
            {
                nullable.InviteUserId = new long?(introducer);
            }
            if (nullable.UserType == 3)
            {
                nullable.InviteUserId = 1;
            }
            using (TransactionScope transactionScope = new TransactionScope())
            {
                nullable.Password = GetPasswrodWithTwiceEncode(password, nullable.PasswordSalt);
                nullable          = context.UserMemberInfo.Add(nullable);
                context.SaveChanges();
                MemberOpenIdInfo memberOpenIdInfo = new MemberOpenIdInfo()
                {
                    UserId          = nullable.Id,
                    OpenId          = openId,
                    ServiceProvider = serviceProvider,
                    UnionId         = (string.IsNullOrWhiteSpace(unionid) ? string.Empty : unionid)
                };
                context.MemberOpenIdInfo.Add(memberOpenIdInfo);
                context.SaveChanges();
                if (!string.IsNullOrWhiteSpace(headImage))
                {
                    nullable.Photo = TransferHeadImage(headImage, nullable.Id);
                }
                context.SaveChanges();
                transactionScope.Complete();
            }
            return(nullable);
        }
Пример #30
0
        public JsonResult Get(string orderIds)
        {
            string str;
            IEnumerable <Plugin <IPaymentPlugin> > plugins =
                from item in PluginsManagement.GetPlugins <IPaymentPlugin>(true)
                where item.Biz.SupportPlatforms.Contains <Himall.Core.PlatformType>(base.PlatformType)
                select item;
            string scheme = base.Request.Url.Scheme;
            string host   = base.HttpContext.Request.Url.Host;

            if (base.HttpContext.Request.Url.Port == 80)
            {
                str = "";
            }
            else
            {
                int port = base.HttpContext.Request.Url.Port;
                str = string.Concat(":", port.ToString());
            }
            string str1 = string.Concat(scheme, "://", host, str);

            object[]      platformType  = new object[] { str1, "/m-", base.PlatformType, "/Payment/" };
            string        str2          = string.Concat(platformType);
            IOrderService orderService  = ServiceHelper.Create <IOrderService>();
            IOrderService orderService1 = orderService;

            char[] chrArray = new char[] { ',' };
            IEnumerable <OrderInfo> list = orderService1.GetOrders(
                from t in orderIds.Split(chrArray)
                select long.Parse(t)).ToList();
            decimal num = list.Sum <OrderInfo>((OrderInfo t) => t.OrderTotalAmount);
            string  productNameDescriptionFromOrders = GetProductNameDescriptionFromOrders(list);
            string  cookie = WebHelper.GetCookie("Himall-User_OpenId");

            if (string.IsNullOrWhiteSpace(cookie))
            {
                MemberOpenIdInfo memberOpenIdInfo = ServiceHelper.Create <IMemberService>().GetMember(base.CurrentUser.Id).MemberOpenIdInfo.FirstOrDefault((MemberOpenIdInfo item) => item.AppIdType == MemberOpenIdInfo.AppIdTypeEnum.Payment);
                if (memberOpenIdInfo != null)
                {
                    cookie = memberOpenIdInfo.OpenId;
                }
            }
            else
            {
                cookie = SecureHelper.AESDecrypt(cookie, "Mobile");
            }
            string[] strArrays = orderIds.Split(new char[] { ',' });
            string   str3      = string.Concat(str2, "Notify/");

            object[] objArray = new object[] { str1, "/m-", base.PlatformType, "/Member/PaymentToOrders?ids=", orderIds };
            string   str4     = string.Concat(objArray);
            IEnumerable <OrderPayInfo> orderPayInfo =
                from item in strArrays
                select new OrderPayInfo()
            {
                PayId   = 0,
                OrderId = long.Parse(item)
            };
            string str5       = orderService.SaveOrderPayInfo(orderPayInfo, Himall.Core.PlatformType.PC).ToString();
            var    collection = plugins.ToArray <Plugin <IPaymentPlugin> >().Select((Plugin <IPaymentPlugin> item) => {
                string empty = string.Empty;
                try
                {
                    empty = item.Biz.GetRequestUrl(str4, string.Concat(str3, item.PluginInfo.PluginId.Replace(".", "-")), str5, num, productNameDescriptionFromOrders, cookie);
                }
                catch (Exception exception)
                {
                    Log.Error("获取支付方式错误:", exception);
                }
                return(new { id = item.PluginInfo.PluginId, name = item.PluginInfo.DisplayName, logo = item.Biz.Logo, url = empty });
            });

            collection =
                from item in collection
                where !string.IsNullOrWhiteSpace(item.url)
                select item;

            return(Json(collection));
        }