Example #1
0
        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            string historyTotalScore = context.Request["history_total_score"];

            if (string.IsNullOrEmpty(historyTotalScore))
            {
                resp.errcode = 1;
                resp.errmsg  = "参数错误";
                context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
                return;
            }
            UserLevelConfig userLevel = bll.Get <UserLevelConfig>(string.Format(" WebSiteOwner='{0}' AND  FromHistoryScore<={1} AND ToHistoryScore>={1}", bll.WebsiteOwner, historyTotalScore));

            if (userLevel == null)
            {
                resp.errcode = 1;
                resp.errmsg  = "没有查到用户等级";
                context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
                return;
            }
            RequestModel requesrModel = new RequestModel();

            requesrModel.level_number = userLevel.LevelNumber;
            requesrModel.level_string = userLevel.LevelString;
            requesrModel.level_icon   = userLevel.LevelIcon;
            context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(requesrModel));
        }
Example #2
0
        /// <summary>
        /// 支付升级
        /// </summary>
        /// <param name="orderPay"></param>
        /// <returns></returns>
        public bool PayUpgrade(OrderPay orderPay, string tradeNo)
        {
            string msg = "";

            BLLJIMP.Model.API.User.PayUpgrade payUpgrade = JsonConvert.DeserializeObject <BLLJIMP.Model.API.User.PayUpgrade>(orderPay.Ex1);
            orderPay.Trade_No = tradeNo;
            UserLevelConfig levelConfig = bll.QueryUserLevel(orderPay.WebsiteOwner, "DistributionOnLine", payUpgrade.toLevel.ToString());
            UserInfo        currUser    = bllUser.GetUserInfo(orderPay.UserId, orderPay.WebsiteOwner);

            if (!string.IsNullOrEmpty(levelConfig.CouponId))
            {
                BLLCardCoupon bllCardCoupon = new BLLCardCoupon();
                bllCardCoupon.SendCardCouponsByCurrUserInfo(currUser, levelConfig.CouponId);
            }
            return(bll.PayUpgradeTransfers(orderPay, payUpgrade, "", tradeNo, out msg));
        }
Example #3
0
        public void ProcessRequest(HttpContext context)
        {
            var websiteInfo = bll.GetWebsiteInfoModelFromDataBase();
            var websiteLogo = websiteInfo.WebsiteLogo;

            if (string.IsNullOrEmpty(websiteInfo.WebsiteLogo))
            {
                websiteLogo = ConfigHelper.GetConfigString("WebsiteLogo");
            }

            string nextLevelName          = string.Empty; //下一等级名称
            double distanceNextLevelScore = 0;            //距离下一等级差值

            UserLevelConfig currUserLevel = bll.GetUserLevel(CurrentUserInfo, out nextLevelName, out distanceNextLevelScore);

            apiResp.result = new
            {
                user_show_name         = bllUser.GetUserDispalyName(CurrentUserInfo),
                website_logo           = websiteLogo,
                website_name           = websiteInfo.WebsiteName,
                is_distribution_member = IsDistributionMember(CurrentUserInfo, websiteInfo),                               //是否是分销会员
                recommend_id           = CurrentUserInfo.AutoID,                                                           //我的推荐码
                recommend_count        = bll.GetUserCommendCount(CurrentUserInfo.UserID),                                  //推荐人数
                nick_name    = CurrentUserInfo.WXNickname,                                                                 //昵称
                true_name    = CurrentUserInfo.TrueName,                                                                   //真实姓名
                head_img_url = bllUser.GetUserDispalyAvatar(CurrentUserInfo),                                              //头像
                history_commission_total_amount = CurrentUserInfo.HistoryDistributionOffLineTotalAmount,                   //累计佣金
                can_use_amount            = bll.GetUserCanUseAmount(CurrentUserInfo),                                      //可提现金额
                level_name                = currUserLevel.LevelString,
                direct_rate               = bll.GetUserLevel(CurrentUserInfo).DistributionRateLevel0,                      //直销佣金比例
                direct_sale_amount        = bll.GetDirectSaleAmount(CurrentUserInfo.UserID),                               //累计直接销售
                down_user_total_count     = bll.GetDownUserTotalCount(CurrentUserInfo.UserID, bll.GetDistributionLevel()), //下级用户总和
                down_user_level1_count    = bll.GetDownUserCount(CurrentUserInfo.UserID, 1),                               //一级分销用户数
                down_user_level2_count    = bll.GetDownUserCount(CurrentUserInfo.UserID, 2),                               //二级分销用户数
                down_user_level3_count    = bll.GetDownUserCount(CurrentUserInfo.UserID, 3),                               //三级分销用户数
                distribution_level1_rate  = bll.GetUserLevel(CurrentUserInfo).DistributionRateLevel1,                      //一级分销佣金比例
                distribution_level2_rate  = bll.GetUserLevel(CurrentUserInfo).DistributionRateLevel2,                      //二级分销佣金比例
                distribution_level3_rate  = bll.GetUserLevel(CurrentUserInfo).DistributionRateLevel3,                      //三级分销佣金比例
                next_level_name           = nextLevelName,                                                                 //下个等级名称
                distance_next_level_score = distanceNextLevelScore                                                         //距离下个等级的积分
            };
            apiResp.status = true;
            apiResp.msg    = "ok";
            context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(apiResp));
        }
Example #4
0
        protected void Page_Load(object sender, EventArgs e)
        {
            uinfo        = DataLoadTool.GetCurrUserModel();
            bllUserScore = new BLLJIMP.BLLUserScore(uinfo.UserID);
            UserLevel    = bllUserScore.GetUserLevelByTotalScore(uinfo.HistoryTotalScore);

            NextUserLevel = bllUserScore.Get <UserLevelConfig>(string.Format("LevelNumber={0}", UserLevel + 1));

            if (NextUserLevel == null)
            {
                NextUserLevel                  = new UserLevelConfig();
                NextUserLevel.LevelNumber      = 1;
                NextUserLevel.FromHistoryScore = 0;
            }
            Percent = (int)((uinfo.HistoryTotalScore / NextUserLevel.FromHistoryScore) * 100);
            if (Percent < 0)
            {
                Percent = 0;
            }
            if (Percent > 100)
            {
                Percent = 100;
            }
        }
Example #5
0
        public void ProcessRequest(HttpContext context)
        {
            BLLJIMP.Model.API.User.PayUpgrade payUpgrade = bll.ConvertRequestToModel <BLLJIMP.Model.API.User.PayUpgrade>(new BLLJIMP.Model.API.User.PayUpgrade());
            payUpgrade.level = CurrentUserInfo.MemberLevel;
            string websiteOwner = bll.WebsiteOwner;

            UserLevelConfig levelConfig = bll.QueryUserLevel(websiteOwner, "DistributionOnLine", payUpgrade.level.ToString());

            if (levelConfig == null)
            {
                payUpgrade.userTotalAmount = 0;
            }
            else
            {
                payUpgrade.userTotalAmount = Convert.ToDecimal(levelConfig.FromHistoryScore);
            }
            UserLevelConfig toLevelConfig = bll.QueryUserLevel(websiteOwner, "DistributionOnLine", payUpgrade.toLevel.ToString());

            if (toLevelConfig == null)
            {
                apiResp.code = (int)APIErrCode.IsNotFound;
                apiResp.msg  = "会员等级未找到";
                bll.ContextResponse(context, apiResp);
                return;
            }
            if (toLevelConfig.IsDisable == 1)
            {
                apiResp.code = (int)APIErrCode.IsNotFound;
                apiResp.msg  = "会员级别禁止升级";
                bll.ContextResponse(context, apiResp);
                return;
            }
            payUpgrade.needAmount = Convert.ToDecimal(toLevelConfig.FromHistoryScore);
            payUpgrade.amount     = payUpgrade.needAmount - payUpgrade.userTotalAmount;
            if (payUpgrade.amount < 0)
            {
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = "暂时不支持降级";
                bll.ContextResponse(context, apiResp);
                return;
            }

            if (string.IsNullOrWhiteSpace(CurrentUserInfo.WXOpenId))
            {
                apiResp.code = (int)APIErrCode.IsNotFound;
                apiResp.msg  = "请先绑定微信";
                bll.ContextResponse(context, apiResp);
                return;
            }
            PayConfig payConfig = bllPay.GetPayConfig();

            if (payConfig == null || string.IsNullOrEmpty(payConfig.WXAppId) || string.IsNullOrEmpty(payConfig.WXMCH_ID) || string.IsNullOrEmpty(payConfig.WXPartnerKey))
            {
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = "该商户微信支付还没有配置";
                bll.ContextResponse(context, apiResp);
                return;
            }
            OrderPay orderPay = new OrderPay();

            orderPay.OrderId      = bll.GetGUID(TransacType.PayRegisterOrder);
            orderPay.InsertDate   = DateTime.Now;
            orderPay.Subject      = "支付升级";
            orderPay.Total_Fee    = payUpgrade.amount;
            orderPay.Type         = "6";
            orderPay.WebsiteOwner = websiteOwner;
            orderPay.UserId       = CurrentUserInfo.UserID;
            orderPay.Ex1          = JsonConvert.SerializeObject(payUpgrade);
            if (!bll.Add(orderPay))
            {
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = "生成支付订单失败";
                bll.ContextResponse(context, apiResp);
                return;
            }

            string appId     = payConfig.WXAppId;                                                                            //微信AppId
            string mchId     = payConfig.WXMCH_ID;                                                                           //商户号
            string key       = payConfig.WXPartnerKey;                                                                       //api密钥
            string openId    = CurrentUserInfo.WXOpenId;                                                                     //openid
            string ip        = context.Request.UserHostAddress;                                                              //ip
            string notifyUrl = string.Format("http://{0}/WxPayNotify/PayUpgradeNotify.aspx", context.Request.Url.Authority); //支付升级通知地址
            string body      = "";                                                                                           //订单内容

            string payReqStr = bllPay.GetBrandWcPayRequest(orderPay.OrderId, orderPay.Total_Fee, appId, mchId, key, openId, ip, notifyUrl, body);

            BllPay.WXPayReq payReqModel = ZentCloud.Common.JSONHelper.JsonToModel <BllPay.WXPayReq>(payReqStr);
            if (string.IsNullOrEmpty(payReqModel.paySign))
            {
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = "构造支付信息失败";
                bll.ContextResponse(context, apiResp);
                return;
            }

            apiResp.code   = (int)APIErrCode.IsSuccess;
            apiResp.status = true;
            apiResp.result = new
            {
                pay_req = payReqModel
            };
            bllUser.ContextResponse(context, apiResp);
        }
Example #6
0
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                //Tolog("进入支付回调");
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load(Request.InputStream);
                //xmlDoc.Load(@"D:\PayRegisterNotify20170613203329981.xml");
                xmlDoc.Save(string.Format("C:\\WXPay\\PayRegisterNotify{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); //全部参数排序
                PayConfig payConfig = bllPay.GetPayConfig();
                if (!bllPay.VerifySignatureWx(parametersAll, payConfig.WXPartnerKey))              //验证签名
                {
                    Tolog("验证签名出错");
                    Response.Write(failXml);
                    return;
                }
                OrderPay orderPay = bllOrder.GetOrderPay(parametersAll["out_trade_no"]);
                if (orderPay == null)
                {
                    Tolog("订单未找到");
                    Response.Write(failXml);
                    return;
                }
                if (orderPay.Status.Equals(1))
                {
                    Tolog("已支付");
                    Response.Write(successXml);
                    return;
                }
                BLLJIMP.Model.API.User.PayRegisterUser requestUser = JsonConvert.DeserializeObject <BLLJIMP.Model.API.User.PayRegisterUser>(orderPay.Ex1);
                UserLevelConfig levelConfig = bll.QueryUserLevel(orderPay.WebsiteOwner, "DistributionOnLine", requestUser.level.ToString());
                if (levelConfig == null)
                {
                    Tolog("会员等级未找到");
                    Response.Write(failXml);
                    return;
                }
                //更新订单状态
                if (parametersAll["return_code"].Equals("SUCCESS") && parametersAll["result_code"].Equals("SUCCESS"))//交易成功
                {
                    UserInfo regUser = bllUser.GetUserInfoByPhone(requestUser.phone, orderPay.WebsiteOwner);
                    if (regUser != null && regUser.MemberLevel >= 10)
                    {
                        Tolog("该手机已注册会员");
                        Response.Write(failXml);
                        return;
                    }
                    if (regUser != null && regUser.MemberLevel > requestUser.level)
                    {
                        Tolog("该会员有更高级别");
                        Response.Write(failXml);
                        return;
                    }
                    if (regUser != null)
                    {
                        regUser.UserType          = 2;
                        regUser.TrueName          = requestUser.truename;
                        regUser.DistributionOwner = requestUser.spreadid;
                        regUser.MemberLevel       = requestUser.level;
                        regUser.MemberStartTime   = DateTime.Now;
                        regUser.MemberApplyTime   = orderPay.InsertDate;
                        regUser.RegIP             = requestUser.regIP;
                        regUser.Password          = requestUser.password;
                        regUser.MemberApplyStatus = 9;
                        regUser.IdentityCard      = requestUser.idcard;
                        regUser.Province          = requestUser.province;
                        regUser.City         = requestUser.city;
                        regUser.District     = requestUser.district;
                        regUser.Town         = requestUser.town;
                        regUser.ProvinceCode = requestUser.provinceCode;
                        regUser.CityCode     = requestUser.cityCode;
                        regUser.DistrictCode = requestUser.districtCode;
                        regUser.TownCode     = requestUser.townCode;
                        regUser.RegUserID    = null;
                        regUser.RegisterWay  = "线上";
                        regUser.IsDisable    = 0;
                        regUser.RegUserID    = null;
                    }
                    else
                    {
                        regUser                   = new UserInfo();
                        regUser.UserID            = requestUser.userid;
                        regUser.UserType          = 2;
                        regUser.TrueName          = requestUser.truename;
                        regUser.WebsiteOwner      = orderPay.WebsiteOwner;
                        regUser.DistributionOwner = requestUser.spreadid;
                        regUser.Phone             = requestUser.phone;
                        regUser.MemberLevel       = requestUser.level;
                        regUser.MemberStartTime   = DateTime.Now;
                        regUser.MemberApplyTime   = orderPay.InsertDate;
                        regUser.Regtime           = DateTime.Now;
                        regUser.LastLoginDate     = DateTime.Parse("1970-01-01");
                        regUser.RegIP             = requestUser.regIP;
                        regUser.Password          = requestUser.password;
                        regUser.MemberApplyStatus = 9;
                        regUser.IdentityCard      = requestUser.idcard;
                        regUser.Province          = requestUser.province;
                        regUser.City              = requestUser.city;
                        regUser.District          = requestUser.district;
                        regUser.Town              = requestUser.town;
                        regUser.ProvinceCode      = requestUser.provinceCode;
                        regUser.CityCode          = requestUser.cityCode;
                        regUser.DistrictCode      = requestUser.districtCode;
                        regUser.TownCode          = requestUser.townCode;
                        regUser.RegisterWay       = "线上";
                        regUser.IsDisable         = 0;
                        regUser.RegUserID         = null;
                    }
                    string msg = "";
                    orderPay.Trade_No = parametersAll["transaction_id"];
                    //线上注册分佣
                    if (!bll.PayRegisterTransfers(regUser, orderPay, parametersAll["openid"], parametersAll["transaction_id"], levelConfig, out msg))
                    {
                        Tolog(msg);
                        Response.Write(failXml);
                        return;
                    }
                    //发送优惠券
                    if (!string.IsNullOrEmpty(levelConfig.CouponId))
                    {
                        BLLCardCoupon bllCardCoupon = new BLLCardCoupon();
                        bllCardCoupon.SendCardCouponsByCurrUserInfo(regUser, levelConfig.CouponId);
                    }

                    Response.Write(successXml);
                    return;
                }
                Tolog("返回信息有误");
                Response.Write(failXml);
            }
            catch (Exception ex)
            {
                Tolog("出错了:" + ex.ToString());
                Response.Write(failXml);
            }
        }
Example #7
0
        public void BuildOrder(HttpContext context, int payType, UserInfo user)
        {
            BLLJIMP.Model.API.User.PayUpgrade payUpgrade = bll.ConvertRequestToModel <BLLJIMP.Model.API.User.PayUpgrade>(new BLLJIMP.Model.API.User.PayUpgrade());
            payUpgrade.level = user.MemberLevel;
            string websiteOwner = bll.WebsiteOwner;

            UserLevelConfig levelConfig = bll.QueryUserLevel(websiteOwner, "DistributionOnLine", payUpgrade.level.ToString());

            if (levelConfig == null)
            {
                payUpgrade.userTotalAmount = 0;
            }
            else
            {
                payUpgrade.userTotalAmount = Convert.ToDecimal(levelConfig.FromHistoryScore);
            }
            UserLevelConfig toLevelConfig = bll.QueryUserLevel(websiteOwner, "DistributionOnLine", payUpgrade.toLevel.ToString());

            if (toLevelConfig == null)
            {
                apiResp.code = (int)APIErrCode.IsNotFound;
                apiResp.msg  = "会员等级未找到";
                bll.ContextResponse(context, apiResp);
                return;
            }
            if (toLevelConfig.IsDisable == 1)
            {
                apiResp.code = (int)APIErrCode.IsNotFound;
                apiResp.msg  = "会员级别禁止升级";
                bll.ContextResponse(context, apiResp);
                return;
            }
            payUpgrade.needAmount = Convert.ToDecimal(toLevelConfig.FromHistoryScore);
            payUpgrade.amount     = payUpgrade.needAmount - payUpgrade.userTotalAmount;
            if (payUpgrade.amount < 0)
            {
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = "暂时不支持降级";
                bll.ContextResponse(context, apiResp);
                return;
            }
            PayConfig payConfig = bllPay.GetPayConfig();

            if (payType == 1 && !bllPay.IsAliPay(payConfig))
            {
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = "该商户支付宝支付还没有配置";
                bll.ContextResponse(context, apiResp);
                return;
            }
            else if (payType == 2 && !bllPay.IsJDPay(payConfig))
            {
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = "该商户京东支付还没有配置";
                bll.ContextResponse(context, apiResp);
                return;
            }
            OrderPay orderPay = new OrderPay();

            orderPay.OrderId      = bll.GetGUID(TransacType.PayRegisterOrder);
            orderPay.InsertDate   = DateTime.Now;
            orderPay.Subject      = "支付升级";
            orderPay.Total_Fee    = payUpgrade.amount;
            orderPay.Type         = "6";
            orderPay.WebsiteOwner = websiteOwner;
            orderPay.UserId       = user.UserID;
            orderPay.Ex1          = JsonConvert.SerializeObject(payUpgrade);
            orderPay.PayType      = payType;
            if (!bll.Add(orderPay))
            {
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = "生成支付订单失败";
                bll.ContextResponse(context, apiResp);
                return;
            }
            apiResp.code   = (int)APIErrCode.IsSuccess;
            apiResp.status = true;
            apiResp.result = new
            {
                user_id      = user.AutoID,
                pay_order_id = orderPay.OrderId
            };
            bllUser.ContextResponse(context, apiResp);
        }
Example #8
0
File: Add.ashx.cs Project: uvbs/mmp
        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            string       data = context.Request["data"];
            RequestModel requestModel;

            try
            {
                requestModel = ZentCloud.Common.JSONHelper.JsonToModel <RequestModel>(context.Request["data"]);
            }
            catch (Exception)
            {
                resp.errcode = -1;
                resp.errmsg  = "json格式错误,请检查";
                context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
                return;
            }
            if (requestModel.level_number <= 0)
            {
                resp.errmsg  = "level_number参数必填,请检查";
                resp.errcode = 1;
                context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
                return;
            }
            if (string.IsNullOrEmpty(requestModel.level_string))
            {
                resp.errmsg  = "requestModel参数必填,请检查";
                resp.errcode = 1;
                context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
                return;
            }
            if (string.IsNullOrEmpty(requestModel.level_icon))
            {
                resp.errmsg  = "level_icon参数必填,请检查";
                resp.errcode = 1;
                context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
                return;
            }
            if (requestModel.level_fromhistory_score <= 0)
            {
                resp.errmsg  = "level_fromhistory_score参数必填,请检查";
                resp.errcode = 1;
                context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
                return;
            }
            if (requestModel.level_tohistory_score <= 0)
            {
                resp.errmsg  = "level_tohistory_score参数必填,请检查";
                resp.errcode = 1;
                context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
                return;
            }
            UserLevelConfig userLevel = new UserLevelConfig();

            userLevel.LevelNumber      = requestModel.level_number;
            userLevel.LevelString      = requestModel.level_string;
            userLevel.LevelIcon        = requestModel.level_icon;
            userLevel.FromHistoryScore = requestModel.level_fromhistory_score;
            userLevel.ToHistoryScore   = requestModel.level_tohistory_score;
            userLevel.WebSiteOwner     = bll.WebsiteOwner;
            if (bll.Add(userLevel))
            {
                resp.isSuccess = true;
                resp.errcode   = 0;
                resp.errmsg    = "ok";
            }
            else
            {
                resp.errmsg  = "添加用户等级出错";
                resp.errcode = -1;
            }
            context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
            return;
        }
Example #9
0
        public void ProcessRequest(HttpContext context)
        {
            BLLJIMP.Model.API.User.PayRegisterUser requestUser = bll.ConvertRequestToModel <BLLJIMP.Model.API.User.PayRegisterUser>(new BLLJIMP.Model.API.User.PayRegisterUser());
            string websiteOwner = bll.WebsiteOwner;

            BLLJIMP.Model.Flow flow = bllFlow.GetFlowByKey(requestUser.flow_key, websiteOwner);
            if (flow == null)
            {
                apiResp.code = (int)APIErrCode.IsNotFound;
                apiResp.msg  = "流程未定义";
                bllFlow.ContextResponse(context, apiResp);
                return;
            }
            if (flow.IsDelete == 1)
            {
                apiResp.code = (int)APIErrCode.IsNotFound;
                apiResp.msg  = flow.FlowName + "已停用";
                bllFlow.ContextResponse(context, apiResp);
                return;
            }
            List <BLLJIMP.Model.FlowStep> steps = bllFlow.GetStepList(2, 1, websiteOwner, flow.AutoID);

            if (steps.Count == 0)
            {
                apiResp.code = (int)APIErrCode.IsNotFound;
                apiResp.msg  = flow.FlowName + "环节未设置";
                bllFlow.ContextResponse(context, apiResp);
                return;
            }

            if (string.IsNullOrWhiteSpace(requestUser.level.ToString()))
            {
                apiResp.code = (int)APIErrCode.PrimaryKeyIncomplete;
                apiResp.msg  = "请选择会员级别";
                bll.ContextResponse(context, apiResp);
                return;
            }
            if (string.IsNullOrWhiteSpace(requestUser.phone))
            {
                apiResp.code = (int)APIErrCode.PrimaryKeyIncomplete;
                apiResp.msg  = "请输入手机号码";
                bll.ContextResponse(context, apiResp);
                return;
            }
            if (string.IsNullOrWhiteSpace(requestUser.spreadid))
            {
                apiResp.code = (int)APIErrCode.PrimaryKeyIncomplete;
                apiResp.msg  = "请输入推荐人编号";
                bll.ContextResponse(context, apiResp);
                return;
            }
            if (!ZentCloud.Common.MyRegex.PhoneNumLogicJudge(requestUser.phone))
            {
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = "手机号码格式不正确";
                bll.ContextResponse(context, apiResp);
                return;
            }

            if (!ZentCloud.Common.MyRegex.IsIDCard(requestUser.idcard))
            {
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = "身份证号码必须如实填写";
                bll.ContextResponse(context, apiResp);
                return;
            }
            UserLevelConfig levelConfig = bll.QueryUserLevel(websiteOwner, "DistributionOnLine", requestUser.level.ToString());

            if (levelConfig == null)
            {
                apiResp.code = (int)APIErrCode.IsNotFound;
                apiResp.msg  = "会员级别未找到";
                bll.ContextResponse(context, apiResp);
                return;
            }
            if (levelConfig.IsDisable == 1)
            {
                apiResp.code = (int)APIErrCode.IsNotFound;
                apiResp.msg  = "会员级别禁止注册";
                bll.ContextResponse(context, apiResp);
                return;
            }
            requestUser.levelname = levelConfig.LevelString;
            UserInfo spreadUser = bllUser.GetSpreadUser(requestUser.spreadid, websiteOwner);

            if (spreadUser == null)
            {
                apiResp.code = (int)APIErrCode.IsNotFound;
                apiResp.msg  = "推荐人未找到";
                bll.ContextResponse(context, apiResp);
                return;
            }
            requestUser.spreadid = spreadUser.UserID; //推荐人

            if (bllFlow.ExistsMemberPhoneAction(websiteOwner, flow.FlowKey, "0", requestUser.phone))
            {
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = "该手机用户正在申请会员";
                bll.ContextResponse(context, apiResp);
                return;
            }
            UserInfo oldUserInfo = bllUser.GetUserInfoByPhone(requestUser.phone, websiteOwner);

            if (oldUserInfo != null && oldUserInfo.MemberLevel >= 10)
            {
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = "该手机已注册会员";
                bll.ContextResponse(context, apiResp);
                return;
            }
            if (oldUserInfo != null && oldUserInfo.MemberLevel > requestUser.level)
            {
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = "该会员有更高级别";
                bll.ContextResponse(context, apiResp);
                return;
            }
            if (oldUserInfo == null)
            {
                oldUserInfo         = new UserInfo();
                oldUserInfo.UserID  = string.Format("ZYUser{0}{1}", DateTime.Now.ToString("yyyyMMdd"), Guid.NewGuid().ToString("N").ToUpper());
                oldUserInfo.Regtime = DateTime.Now;
            }
            oldUserInfo.RegIP             = context.Request.UserHostAddress;//ip
            oldUserInfo.Password          = ZentCloud.Common.Rand.Number(6);
            oldUserInfo.UserType          = 2;
            oldUserInfo.TrueName          = requestUser.truename;
            oldUserInfo.WebsiteOwner      = websiteOwner;
            oldUserInfo.DistributionOwner = requestUser.spreadid;
            oldUserInfo.Phone             = requestUser.phone;
            oldUserInfo.MemberApplyTime   = DateTime.Now;
            oldUserInfo.MemberLevel       = levelConfig.LevelNumber;
            oldUserInfo.LastLoginDate     = DateTime.Parse("1970-01-01");
            oldUserInfo.IdentityCard      = requestUser.idcard;
            oldUserInfo.Province          = requestUser.province;
            oldUserInfo.City         = requestUser.city;
            oldUserInfo.District     = requestUser.district;
            oldUserInfo.Town         = requestUser.town;
            oldUserInfo.ProvinceCode = requestUser.provinceCode;
            oldUserInfo.CityCode     = requestUser.cityCode;
            oldUserInfo.DistrictCode = requestUser.districtCode;
            oldUserInfo.TownCode     = requestUser.townCode;
            oldUserInfo.RegUserID    = currentUserInfo.UserID;
            if (flow.FlowKey == "RegisterEmptyBill")
            {
                oldUserInfo.EmptyBill         = 1;
                oldUserInfo.MemberApplyStatus = 0;
            }
            else
            {
                oldUserInfo.EmptyBill         = 0;
                oldUserInfo.MemberApplyStatus = 1;
            }
            oldUserInfo.RegisterWay = "线下";
            oldUserInfo.IsDisable   = 0;

            BLLJIMP.Model.FlowStep step1 = steps[0];
            BLLJIMP.Model.FlowStep step2 = null;
            if (steps.Count == 2)
            {
                step2 = steps[1];
            }

            BLLJIMP.Model.FlowAction action = new BLLJIMP.Model.FlowAction();
            action.CreateDate   = DateTime.Now;
            action.CreateUserID = currentUserInfo.UserID;
            action.WebsiteOwner = websiteOwner;
            action.StartStepID  = step1.AutoID;
            action.FlowID       = flow.AutoID;
            action.FlowKey      = flow.FlowKey;
            action.StartEx2     = JsonConvert.SerializeObject(requestUser);
            if (!string.IsNullOrWhiteSpace(requestUser.content))
            {
                action.StartContent = requestUser.content;
            }
            if (!string.IsNullOrWhiteSpace(requestUser.ex1))
            {
                action.StartEx1 = requestUser.ex1;
            }

            action.MemberAutoID    = 0;
            action.MemberID        = oldUserInfo.UserID;
            action.MemberName      = oldUserInfo.TrueName;
            action.MemberPhone     = oldUserInfo.Phone;
            action.MemberLevel     = levelConfig.LevelNumber;
            action.MemberLevelName = levelConfig.LevelString;

            action.FlowName = flow.FlowName;
            action.Amount   = Convert.ToDecimal(levelConfig.FromHistoryScore);
            if (step2 != null)
            {
                action.StepID   = step2.AutoID;
                action.StepName = step2.StepName;
            }
            else
            {
                action.Status  = 9;
                action.EndDate = DateTime.Now;
            }
            BLLJIMP.Model.FlowActionDetail actionDetail1 = new BLLJIMP.Model.FlowActionDetail();
            actionDetail1.WebsiteOwner = websiteOwner;
            actionDetail1.FlowID       = flow.AutoID;
            actionDetail1.StepID       = step1.AutoID;
            actionDetail1.StepName     = step1.StepName;
            actionDetail1.HandleUserID = currentUserInfo.UserID;
            actionDetail1.HandleDate   = DateTime.Now;
            actionDetail1.Ex2          = action.StartEx2;
            if (!string.IsNullOrWhiteSpace(action.StartContent))
            {
                actionDetail1.HandleContent = action.StartContent;
            }
            if (!string.IsNullOrWhiteSpace(action.StartEx1))
            {
                actionDetail1.Ex1 = action.StartEx1;
            }

            List <BLLJIMP.Model.FlowActionFile> files = new List <BLLJIMP.Model.FlowActionFile>();
            List <string> fileUrls = requestUser.files.Split(',').Where(p => !string.IsNullOrWhiteSpace(p)).ToList();

            if (fileUrls.Count > 0)
            {
                foreach (var item in fileUrls)
                {
                    files.Add(new BLLJIMP.Model.FlowActionFile()
                    {
                        FlowID       = flow.AutoID,
                        StepID       = step1.AutoID,
                        WebsiteOwner = websiteOwner,
                        FilePath     = item
                    });
                }
                if (fileUrls.Count > 0)
                {
                    oldUserInfo.Ex6 = fileUrls[0];
                }
                if (fileUrls.Count > 1)
                {
                    oldUserInfo.Ex7 = fileUrls[1];
                }
                if (fileUrls.Count > 2)
                {
                    oldUserInfo.Ex8 = fileUrls[2];
                }
                if (fileUrls.Count > 3)
                {
                    oldUserInfo.Ex9 = fileUrls[3];
                }
                if (fileUrls.Count > 4)
                {
                    oldUserInfo.Ex10 = fileUrls[4];
                }
            }


            //WebsiteInfo website = bllUser.GetWebsiteInfoModelFromDataBase(websiteOwner);
            //int disLevel = 1;
            //if (website.DistributionLimitLevel > 1) disLevel = website.DistributionLimitLevel;

            //StringBuilder sbSql = new StringBuilder();

            //bool hasProjectCommission = false;//分佣是否存在
            //UserInfo upUserLevel1 = null;//分销上一级
            //UserInfo upUserLevel2 = null;//分销上二级
            //UserInfo upUserLevel3 = null;//分销上三级

            //UserLevelConfig levelConfig1 = null;//分销上一级规则
            //UserLevelConfig levelConfig2 = null;//分销上二级规则
            //UserLevelConfig levelConfig3 = null;//分销上三级规则

            //ProjectCommission modelLevel1 = new ProjectCommission();
            //ScoreLockInfo scoreLockLevel1Info = new ScoreLockInfo();
            //ProjectCommission modelLevel1ex1 = new ProjectCommission();
            //ScoreLockInfo scoreLockLevel1ex1Info = new ScoreLockInfo();
            //ProjectCommission modelLevel2 = new ProjectCommission();
            //ScoreLockInfo scoreLockLevel2Info = new ScoreLockInfo();
            //ProjectCommission modelLevel3 = new ProjectCommission();
            //ScoreLockInfo scoreLockLevel3Info = new ScoreLockInfo();

            //string guId = bll.GetGUID(TransacType.OfflineRegister);
            ////计算分佣
            //bll.ComputeTransfers(disLevel, oldUserInfo, guId, action.Amount, websiteOwner, "线下注册", ref sbSql, ref upUserLevel1,
            //    ref upUserLevel2, ref upUserLevel3, ref levelConfig1, ref levelConfig2, ref levelConfig3, ref modelLevel1, ref scoreLockLevel1Info,
            //    ref modelLevel1ex1, ref scoreLockLevel1ex1Info, ref modelLevel2, ref scoreLockLevel2Info, ref modelLevel3, ref scoreLockLevel3Info,
            //    levelConfig.LevelString);

            BLLTransaction tran = new BLLTransaction();

            //线下注册,扣钱,(实单审核后返)
            oldUserInfo.AccountAmountEstimate -= action.Amount;
            oldUserInfo.TotalAmount           -= action.Amount;

            if (oldUserInfo.AutoID == 0)
            {
                oldUserInfo.AutoID = Convert.ToInt32(bllFlow.AddReturnID(oldUserInfo, tran));
                if (oldUserInfo.AutoID <= 0)
                {
                    tran.Rollback();
                    apiResp.code = (int)APIErrCode.OperateFail;
                    apiResp.msg  = "注册失败";
                    bllFlow.ContextResponse(context, apiResp);
                    return;
                }
                action.MemberAutoID = oldUserInfo.AutoID;
            }
            else
            {
                if (!bllUser.Update(oldUserInfo, tran))
                {
                    tran.Rollback();
                    apiResp.code = (int)APIErrCode.OperateFail;
                    apiResp.msg  = "注册失败";
                    bllFlow.ContextResponse(context, apiResp);
                    return;
                }
                action.MemberAutoID = oldUserInfo.AutoID;
            }
            int rId = Convert.ToInt32(bllFlow.AddReturnID(action, tran));

            if (rId <= 0)
            {
                tran.Rollback();
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = flow.FlowName + "失败";
                bllFlow.ContextResponse(context, apiResp);
                return;
            }

            #region 记录分佣信息
            //if (modelLevel1.Amount > 0)
            //{
            //    hasProjectCommission = true;
            //    modelLevel1.ProjectId = rId;
            //    int modelLevel1Id = Convert.ToInt32(bll.AddReturnID(modelLevel1, tran));
            //    if (modelLevel1Id <= 0)
            //    {
            //        tran.Rollback();
            //        apiResp.code = (int)APIErrCode.OperateFail;
            //        apiResp.msg = "一级返利失败";
            //        bllFlow.ContextResponse(context, apiResp);
            //        return;
            //    }
            //    scoreLockLevel1Info.ForeignkeyId2 = modelLevel1Id.ToString();
            //    scoreLockLevel1Info.AutoId = Convert.ToInt32(bll.AddReturnID(scoreLockLevel1Info, tran));
            //    if (scoreLockLevel1Info.AutoId<=0)
            //    {
            //        tran.Rollback();
            //        apiResp.code = (int)APIErrCode.OperateFail;
            //        apiResp.msg = "一级返利冻结失败";
            //        bllFlow.ContextResponse(context, apiResp);
            //        return;
            //    }
            //    string scoreDetailEvent = modelLevel1.ProjectName.Contains("购房补助") ? "返购房补助" : "返利";
            //    if (bllUser.AddScoreDetail(scoreLockLevel1Info.UserId, websiteOwner, (double)scoreLockLevel1Info.Score,
            //        scoreLockLevel1Info.Memo, "TotalAmount", (double)(upUserLevel1.TotalAmount + scoreLockLevel1Info.Score),
            //        scoreLockLevel1Info.AutoId.ToString(), scoreDetailEvent, "", rId.ToString(),
            //        (double)modelLevel1.SourceAmount, (double)modelLevel1.DeductAmount,
            //        modelLevel1.CommissionUserId, tran,
            //        ex3: levelConfig.LevelNumber.ToString(), ex4: levelConfig.LevelString,
            //        ex5: modelLevel1.CommissionLevel) <= 0)
            //    {
            //        tran.Rollback();
            //        apiResp.code = (int)APIErrCode.OperateFail;
            //        apiResp.msg = "一级返利明细记录失败";
            //        bllFlow.ContextResponse(context, apiResp);
            //        return;
            //    }
            //}
            //if (modelLevel1ex1.Amount > 0)
            //{
            //    hasProjectCommission = true;
            //    modelLevel1ex1.ProjectId = rId;
            //    int modelLevel1ex1Id = Convert.ToInt32(bll.AddReturnID(modelLevel1ex1, tran));
            //    if (modelLevel1ex1Id <= 0)
            //    {
            //        tran.Rollback();
            //        apiResp.code = (int)APIErrCode.OperateFail;
            //        apiResp.msg = "一级返购房补助失败";
            //        bllFlow.ContextResponse(context, apiResp);
            //        return;
            //    }
            //    scoreLockLevel1ex1Info.ForeignkeyId2 = modelLevel1ex1Id.ToString();
            //    scoreLockLevel1ex1Info.AutoId = Convert.ToInt32(bll.AddReturnID(scoreLockLevel1ex1Info, tran));
            //    if (scoreLockLevel1ex1Info.AutoId<=0)
            //    {
            //        tran.Rollback();
            //        apiResp.code = (int)APIErrCode.OperateFail;
            //        apiResp.msg = "一级返购房补助冻结失败";
            //        bllFlow.ContextResponse(context, apiResp);
            //        return;
            //    }
            //    string scoreDetailEvent = modelLevel1ex1.ProjectName.Contains("购房补助") ? "返购房补助" : "返利";
            //    if (bllUser.AddScoreDetail(scoreLockLevel1ex1Info.UserId, websiteOwner, (double)scoreLockLevel1ex1Info.Score,
            //        scoreLockLevel1ex1Info.Memo, "TotalAmount", (double)(upUserLevel1.TotalAmount + scoreLockLevel1ex1Info.Score),
            //        scoreLockLevel1ex1Info.AutoId.ToString(), scoreDetailEvent, "", rId.ToString(),
            //        (double)modelLevel1ex1.SourceAmount, (double)modelLevel1ex1.DeductAmount,
            //        modelLevel1ex1.CommissionUserId,
            //        tran, ex3: levelConfig.LevelNumber.ToString(), ex4: levelConfig.LevelString,
            //        ex5: modelLevel1ex1.CommissionLevel) <= 0)
            //    {
            //        tran.Rollback();
            //        apiResp.code = (int)APIErrCode.OperateFail;
            //        apiResp.msg = "一级返购房补助明细记录失败";
            //        bllFlow.ContextResponse(context, apiResp);
            //        return;
            //    }
            //}
            //if (modelLevel2.Amount > 0)
            //{
            //    hasProjectCommission = true;
            //    modelLevel2.ProjectId = rId;
            //    int modelLevel2Id = Convert.ToInt32(bll.AddReturnID(modelLevel2, tran));
            //    if (modelLevel2Id <= 0)
            //    {
            //        tran.Rollback();
            //        apiResp.code = (int)APIErrCode.OperateFail;
            //        apiResp.msg = "二级返利失败";
            //        bllFlow.ContextResponse(context, apiResp);
            //        return;
            //    }
            //    scoreLockLevel2Info.ForeignkeyId2 = modelLevel2Id.ToString();
            //    scoreLockLevel2Info.AutoId = Convert.ToInt32(bll.AddReturnID(scoreLockLevel2Info, tran));
            //    if (scoreLockLevel2Info.AutoId<=0)
            //    {
            //        tran.Rollback();
            //        apiResp.code = (int)APIErrCode.OperateFail;
            //        apiResp.msg = "二级返利冻结失败";
            //        bllFlow.ContextResponse(context, apiResp);
            //        return;
            //    }
            //    string scoreDetailEvent = modelLevel2.ProjectName.Contains("购房补助") ? "返购房补助" : "返利";
            //    if (bllUser.AddScoreDetail(scoreLockLevel2Info.UserId, websiteOwner, (double)scoreLockLevel2Info.Score,
            //        scoreLockLevel2Info.Memo, "TotalAmount", (double)(upUserLevel2.TotalAmount + scoreLockLevel2Info.Score),
            //        scoreLockLevel2Info.AutoId.ToString(), scoreDetailEvent, "", rId.ToString(), (double)modelLevel2.SourceAmount, (double)modelLevel2.DeductAmount,
            //        modelLevel2.CommissionUserId,
            //        tran, ex3: levelConfig.LevelNumber.ToString(), ex4: levelConfig.LevelString,
            //        ex5: modelLevel2.CommissionLevel) <= 0)
            //    {
            //        tran.Rollback();
            //        apiResp.code = (int)APIErrCode.OperateFail;
            //        apiResp.msg = "二级返利明细记录失败";
            //        bllFlow.ContextResponse(context, apiResp);
            //        return;
            //    }
            //}
            //if (modelLevel3.Amount > 0)
            //{
            //    hasProjectCommission = true;
            //    modelLevel3.ProjectId = rId;
            //    int modelLevel3Id = Convert.ToInt32(bll.AddReturnID(modelLevel3, tran));
            //    if (modelLevel3Id<=0)
            //    {
            //        tran.Rollback();
            //        apiResp.code = (int)APIErrCode.OperateFail;
            //        apiResp.msg = "三级返利失败";
            //        bllFlow.ContextResponse(context, apiResp);
            //        return;
            //    }
            //    scoreLockLevel3Info.ForeignkeyId2 = modelLevel3Id.ToString();
            //    scoreLockLevel3Info.AutoId = Convert.ToInt32(bll.AddReturnID(scoreLockLevel3Info, tran));
            //    if (scoreLockLevel3Info.AutoId<=0)
            //    {
            //        tran.Rollback();
            //        apiResp.code = (int)APIErrCode.OperateFail;
            //        apiResp.msg = "三级返利冻结失败";
            //        bllFlow.ContextResponse(context, apiResp);
            //        return;
            //    }
            //    string scoreDetailEvent = modelLevel3.ProjectName.Contains("购房补助") ? "返购房补助" : "返利";
            //    if (bllUser.AddScoreDetail(scoreLockLevel3Info.UserId, websiteOwner, (double)scoreLockLevel3Info.Score,
            //        scoreLockLevel3Info.Memo, "TotalAmount", (double)(upUserLevel3.TotalAmount + scoreLockLevel3Info.Score),
            //        scoreLockLevel3Info.AutoId.ToString(), scoreDetailEvent, "" ,rId.ToString(), (double)modelLevel3.SourceAmount, (double)modelLevel3.DeductAmount,
            //        modelLevel3.CommissionUserId,
            //        tran, ex3: levelConfig.LevelNumber.ToString(), ex4: levelConfig.LevelString,
            //        ex5: modelLevel3.CommissionLevel) <= 0)
            //    {
            //        tran.Rollback();
            //        apiResp.code = (int)APIErrCode.OperateFail;
            //        apiResp.msg = "三级返利明细记录失败";
            //        bllFlow.ContextResponse(context, apiResp);
            //        return;
            //    }
            //}
            //if (hasProjectCommission)
            //{
            //    int result = BLLBase.ExecuteSql(sbSql.ToString(), tran);
            //    if (result <= 0)
            //    {
            //        tran.Rollback();
            //        apiResp.code = (int)APIErrCode.OperateFail;
            //        apiResp.msg = "更新分佣账面金额失败";
            //        bllFlow.ContextResponse(context, apiResp);
            //        return;
            //    }
            //}
            #endregion

            #region 记录余额明细
            //自己的消费记录
            string note         = flow.FlowKey == "RegisterEmptyBill" ? "线下注册空单" : "线下注册";
            int    mainDetailId = bllUser.AddScoreDetail(oldUserInfo.UserID, websiteOwner, (double)(0 - action.Amount),
                                                         string.Format("{1}{0}", levelConfig.LevelString, note), "TotalAmount", (double)oldUserInfo.TotalAmount,
                                                         "", "注册会员", "", rId.ToString(), (double)action.Amount, 0, "",
                                                         tran, ex3: levelConfig.LevelNumber.ToString(), ex4: levelConfig.LevelString);
            if (mainDetailId <= 0)
            {
                tran.Rollback();
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = "注册明细失败";
                bllFlow.ContextResponse(context, apiResp);
                return;
            }
            #endregion
            actionDetail1.ActionID = rId;
            if (!bllFlow.Add(actionDetail1, tran))
            {
                tran.Rollback();
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = flow.FlowName + ",记录失败";
                bllFlow.ContextResponse(context, apiResp);
                return;
            }
            foreach (var item in files)
            {
                item.ActionID = rId;
                if (!bllFlow.Add(item, tran))
                {
                    tran.Rollback();
                    apiResp.code = (int)APIErrCode.OperateFail;
                    apiResp.msg  = flow.FlowName + ",保存附件失败";
                    bllFlow.ContextResponse(context, apiResp);
                    return;
                }
            }
            tran.Commit();

            string msg = "";
            #region 短信发送密码
            BLLSMS      bllSms    = new BLLSMS("");
            bool        smsBool   = false;
            WebsiteInfo website   = bllUser.GetWebsiteInfoModelFromDataBase(websiteOwner);
            string      smsString = string.Format("恭喜您成功注册为天下华商月供宝:{1},您的初始密码为:{0}。您可关注公众号:songhetz,登录账户修改密码,并设置支付密码。", oldUserInfo.Password, levelConfig.LevelString);
            bllSms.SendSmsMisson(oldUserInfo.Phone, smsString, "", website.SmsSignature, out smsBool, out msg);
            #endregion

            apiResp.msg    = "注册成功" + (smsBool ? "" : ",但短信发送失败:" + msg);
            apiResp.status = true;
            apiResp.code   = (int)APIErrCode.IsSuccess;
            bllFlow.ContextResponse(context, apiResp);
        }
Example #10
0
        protected void Page_Load(object sender, EventArgs e)
        {
            //if (!Request.UserAgent.ToLower().Contains("micromessenger"))
            //{
            //    // ToLog("非微信浏览器进入不执行授权");
            //    Response.Write("请用微信浏览器打开");
            //    Response.End();
            //    return;//非微信浏览器进入不执行授权
            //}
            if (!bllUser.IsLogin)
            {
                Response.Write("请用微信打开");
                Response.End();
                return;
            }
            var website = bll.GetWebsiteInfoModelFromDataBase();
            CompanyWebsite_Config companyWebsiteConfig = bllWebSite.GetCompanyWebsiteConfig();;
            string   indexStr        = File.ReadAllText(this.Server.MapPath(@"\App\Distribution\m\app.html"));
            UserInfo CurrentUserInfo = bllUser.GetCurrentUserInfo();

            if (indexStr.Contains("'$$CURRENTUSERINFO$$'"))
            {
                var websiteLogo = companyWebsiteConfig.WebsiteImage;
                if (string.IsNullOrEmpty(websiteLogo))
                {
                    websiteLogo = ConfigHelper.GetConfigString("WebsiteLogo");
                }
                else
                {
                    websiteLogo = bll.GetImgUrl(websiteLogo);
                }

                string nextLevelName          = string.Empty;
                double distanceNextLevelScore = 0;

                UserLevelConfig currUserLevel = bll.GetUserLevel(CurrentUserInfo, out nextLevelName, out distanceNextLevelScore);


                apiResp.result = new
                {
                    user_show_name         = bllUser.GetUserDispalyName(CurrentUserInfo),
                    website_logo           = websiteLogo,
                    website_name           = website.WebsiteName,
                    is_distribution_member = IsDistributionMember(CurrentUserInfo, website),                                   //是否是分销会员
                    recommend_id           = CurrentUserInfo.AutoID,                                                           //我的推荐码
                    recommend_count        = bll.GetUserCommendCount(CurrentUserInfo.UserID),                                  //推荐人数
                    nick_name    = CurrentUserInfo.WXNickname,                                                                 //昵称
                    true_name    = CurrentUserInfo.TrueName,                                                                   //真实姓名
                    head_img_url = bllUser.GetUserDispalyAvatar(CurrentUserInfo),                                              //头像
                    history_commission_total_amount = CurrentUserInfo.HistoryDistributionOffLineTotalAmount,                   //累计佣金
                    can_use_amount            = bll.GetUserCanUseAmount(CurrentUserInfo),                                      //可提现金额
                    level_name                = currUserLevel.LevelString,
                    direct_rate               = bll.GetUserLevel(CurrentUserInfo).DistributionRateLevel0,                      //直销佣金比例
                    direct_sale_amount        = bll.GetDirectSaleAmount(CurrentUserInfo.UserID),                               //累计直接销售
                    down_user_total_count     = bll.GetDownUserTotalCount(CurrentUserInfo.UserID, bll.GetDistributionLevel()), //下级用户总和
                    down_user_level1_count    = bll.GetDownUserCount(CurrentUserInfo.UserID, 1),                               //一级分销用户数
                    down_user_level2_count    = bll.GetDownUserCount(CurrentUserInfo.UserID, 2),                               //二级分销用户数
                    down_user_level3_count    = bll.GetDownUserCount(CurrentUserInfo.UserID, 3),                               //三级分销用户数
                    distribution_level1_rate  = bll.GetUserLevel(CurrentUserInfo).DistributionRateLevel1,                      //一级分销佣金比例
                    distribution_level2_rate  = bll.GetUserLevel(CurrentUserInfo).DistributionRateLevel2,                      //二级分销佣金比例
                    distribution_level3_rate  = bll.GetUserLevel(CurrentUserInfo).DistributionRateLevel3,                      //三级分销佣金比例
                    next_level_name           = nextLevelName,                                                                 //下个等级名称
                    distance_next_level_score = distanceNextLevelScore                                                         //距离下个等级的积分
                };
                apiResp.status = true;
                apiResp.msg    = "ok";
                indexStr       = indexStr.Replace("'$$CURRENTUSERINFO$$'", ZentCloud.Common.JSONHelper.ObjectToJson(apiResp));
            }

            if (indexStr.Contains("'$$fx-websiteConfig$$'"))
            {
                dynamic websiteConfigResult = new
                {
                    website_name              = website.WebsiteName,                                                                           //站点名称
                    distribution_level        = bll.GetDistributionLevel(),                                                                    //后台配置的几级
                    distribution_show_level   = bll.GetDistributionShowLevel(),                                                                //会员显示分销级别
                    commission_show_name      = string.IsNullOrWhiteSpace(website.CommissionShowName) ? "积分" : website.CommissionShowName,     //佣金显示名称
                    distribution_show_name    = string.IsNullOrWhiteSpace(website.DistributionShowName) ? "会员" : website.DistributionShowName, //分销显示名称
                    is_show_distribution_rate = website.IsShowDistributionOffLineRate,                                                         //是否显示分销比例
                    share_title          = companyWebsiteConfig.WebsiteTitle,                                                                  //分享标题
                    share_desc           = companyWebsiteConfig.WebsiteDescription,                                                            //分享描述
                    share_img_url        = companyWebsiteConfig.WebsiteImage,                                                                  //分享图片
                    project_field_list   = bll.GetProjectFieldMapListF(),                                                                      //项目自定义字段
                    slide_type           = website.DistributionOffLineSlideType,
                    is_show_member_score = website.DistributionOffLineIsShowMemberScore
                };

                indexStr = indexStr.Replace("'$$fx-websiteConfig$$'", ZentCloud.Common.JSONHelper.ObjectToJson(websiteConfigResult));
            }

            if (indexStr.Contains("$$fx-wrapApplyHeader$$"))
            {
                indexStr = indexStr.Replace("$$fx-wrapApplyHeader$$", website.DistributionOffLineDescription);
            }

            if (indexStr.Contains("$$fx-wrapApplyWaitInfo$$"))
            {
                indexStr = indexStr.Replace("$$fx-wrapApplyWaitInfo$$", website.DistributionOffLineApplyWaitInfo);
            }

            //直接返回广告数组
            if (indexStr.Contains("'$$fx-slides$$'") && !string.IsNullOrWhiteSpace(website.DistributionOffLineSlideType))
            {
                string slideType = website.DistributionOffLineSlideType;
                System.Text.StringBuilder sbWhere = new System.Text.StringBuilder(string.Format(" WebsiteOwner='{0}'", bll.WebsiteOwner));
                if (!string.IsNullOrEmpty(slideType))
                {
                    sbWhere.AppendFormat(" And Type='{0}'", slideType);
                }
                sbWhere.Append(" order by Sort DESC");
                var sourceData = bll.GetList <BLLJIMP.Model.Slide>(sbWhere.ToString());
                var list       = from p in sourceData
                                 select new
                {
                    img_url    = bll.GetImgUrl(p.ImageUrl),
                    link       = p.Link,
                    slide_type = p.Type,
                    link_text  = p.LinkText
                };

                var data = new
                {
                    totalcount = sourceData.Count,
                    proportion = bllKeyValue.GetSlideProportion(slideType),
                    list       = list,//列表
                };

                indexStr = indexStr.Replace("'$$fx-slides$$'", ZentCloud.Common.JSONHelper.ObjectToJson(data));
            }

            this.Response.Write(indexStr);
        }
Example #11
0
        public void ProcessRequest(HttpContext context)
        {
            int    id           = Convert.ToInt32(context.Request["id"]);
            string websiteOwner = bll.WebsiteOwner;
            string flow_key     = context.Request["flow_key"];
            string content      = context.Request["content"];

            BLLJIMP.Model.Flow flow = bllFlow.GetFlowByKey(flow_key, websiteOwner);
            if (flow == null)
            {
                apiResp.code = (int)APIErrCode.IsNotFound;
                apiResp.msg  = "流程未定义";
                bllFlow.ContextResponse(context, apiResp);
                return;
            }
            if (flow.IsDelete == 1)
            {
                apiResp.code = (int)APIErrCode.IsNotFound;
                apiResp.msg  = flow.FlowName + "已停用";
                bllFlow.ContextResponse(context, apiResp);
                return;
            }
            List <BLLJIMP.Model.FlowStep> steps = bllFlow.GetStepList(2, 1, websiteOwner, flow.AutoID);

            if (steps.Count == 0)
            {
                apiResp.code = (int)APIErrCode.IsNotFound;
                apiResp.msg  = flow.FlowName + "环节未设置";
                bllFlow.ContextResponse(context, apiResp);
                return;
            }

            UserInfo tUser = bllUser.GetUserInfoByAutoID(id, websiteOwner);

            if (tUser == null)
            {
                apiResp.code = (int)APIErrCode.IsNotFound;
                apiResp.msg  = "会员未找到";
                bll.ContextResponse(context, apiResp);
                return;
            }
            if (tUser.MemberLevel <= 0)
            {
                apiResp.code = (int)APIErrCode.IsNotFound;
                apiResp.msg  = "该会员已经撤单";
                bll.ContextResponse(context, apiResp);
                return;
            }
            if (bllFlow.ExistsMemberPhoneAction(websiteOwner, flow.FlowKey, "0", memberUserId: tUser.UserID))
            {
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = "该会员正在申请撤单";
                bll.ContextResponse(context, apiResp);
                return;
            }

            BLLJIMP.Model.FlowStep step1 = steps[0];
            BLLJIMP.Model.FlowStep step2 = null;
            if (steps.Count == 2)
            {
                step2 = steps[1];
            }

            BLLJIMP.Model.FlowAction action = new BLLJIMP.Model.FlowAction();
            action.CreateDate   = DateTime.Now;
            action.CreateUserID = currentUserInfo.UserID;
            action.WebsiteOwner = websiteOwner;
            action.StartStepID  = step1.AutoID;
            action.FlowID       = flow.AutoID;
            action.FlowKey      = flow.FlowKey;
            if (!string.IsNullOrWhiteSpace(content))
            {
                action.StartContent = content;
            }

            action.MemberAutoID = tUser.AutoID;
            action.MemberID     = tUser.UserID;
            action.MemberName   = tUser.TrueName;
            action.MemberPhone  = tUser.Phone;
            action.MemberLevel  = tUser.MemberLevel;
            action.TrueAmount   = tUser.TotalAmount;
            action.Amount       = tUser.AccountAmountEstimate;
            action.DeductAmount = tUser.AccumulationFund;
            UserLevelConfig levelConfig = bll.QueryUserLevel(websiteOwner, "DistributionOnLine", tUser.MemberLevel.ToString());

            action.MemberLevelName = levelConfig == null?"": levelConfig.LevelString;
            action.FlowName        = flow.FlowName;

            if (step2 != null)
            {
                action.StepID   = step2.AutoID;
                action.StepName = step2.StepName;
            }
            else
            {
                action.Status  = 9;
                action.EndDate = DateTime.Now;
            }

            BLLJIMP.Model.FlowActionDetail actionDetail1 = new BLLJIMP.Model.FlowActionDetail();
            actionDetail1.WebsiteOwner = websiteOwner;
            actionDetail1.FlowID       = flow.AutoID;
            actionDetail1.StepID       = step1.AutoID;
            actionDetail1.StepName     = step1.StepName;
            actionDetail1.HandleUserID = currentUserInfo.UserID;
            actionDetail1.HandleDate   = DateTime.Now;
            if (!string.IsNullOrWhiteSpace(action.StartContent))
            {
                actionDetail1.HandleContent = action.StartContent;
            }

            BLLTransaction tran = new BLLTransaction();

            if (bllUser.Update(tUser,
                               string.Format("IsDisable=1"),
                               string.Format("WebsiteOwner='{0}' And AutoID={1}", websiteOwner, tUser.AutoID),
                               tran) <= 0)
            {
                tran.Rollback();
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = flow.FlowName + "冻结失败";
                bllFlow.ContextResponse(context, apiResp);
                return;
            }
            int rId = Convert.ToInt32(bllFlow.AddReturnID(action, tran));

            if (rId <= 0)
            {
                tran.Rollback();
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = flow.FlowName + "失败";
                bllFlow.ContextResponse(context, apiResp);
                return;
            }
            actionDetail1.ActionID = rId;
            if (!bllFlow.Add(actionDetail1, tran))
            {
                tran.Rollback();
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = flow.FlowName + ",记录失败";
                bllFlow.ContextResponse(context, apiResp);
                return;
            }
            tran.Commit();
            apiResp.msg    = "撤单申请提交成功";
            apiResp.status = true;
            apiResp.code   = (int)APIErrCode.IsSuccess;
            bllFlow.ContextResponse(context, apiResp);
        }
Example #12
0
        public void BuildOrder(HttpContext context, int payType)
        {
            BLLJIMP.Model.API.User.PayRegisterUser requestUser = bll.ConvertRequestToModel <BLLJIMP.Model.API.User.PayRegisterUser>(new BLLJIMP.Model.API.User.PayRegisterUser());
            string websiteOwner = bll.WebsiteOwner;

            if (string.IsNullOrWhiteSpace(requestUser.level.ToString()))
            {
                apiResp.code = (int)APIErrCode.PrimaryKeyIncomplete;
                apiResp.msg  = "请选择会员级别";
                bll.ContextResponse(context, apiResp);
                return;
            }
            if (string.IsNullOrWhiteSpace(requestUser.spreadid))
            {
                apiResp.code = (int)APIErrCode.PrimaryKeyIncomplete;
                apiResp.msg  = "请输入推荐人编号";
                bll.ContextResponse(context, apiResp);
                return;
            }
            if (string.IsNullOrWhiteSpace(requestUser.phone))
            {
                apiResp.code = (int)APIErrCode.PrimaryKeyIncomplete;
                apiResp.msg  = "请输入手机号码";
                bll.ContextResponse(context, apiResp);
                return;
            }
            if (!ZentCloud.Common.MyRegex.PhoneNumLogicJudge(requestUser.phone))
            {
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = "手机号码格式不正确";
                bll.ContextResponse(context, apiResp);
                return;
            }

            if (!ZentCloud.Common.MyRegex.IsIDCard(requestUser.idcard))
            {
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = "身份证号码必须如实填写";
                bll.ContextResponse(context, apiResp);
                return;
            }
            UserLevelConfig levelConfig = bll.QueryUserLevel(websiteOwner, "DistributionOnLine", requestUser.level.ToString());

            if (levelConfig == null)
            {
                apiResp.code = (int)APIErrCode.IsNotFound;
                apiResp.msg  = "会员级别未找到";
                bll.ContextResponse(context, apiResp);
                return;
            }
            if (levelConfig.IsDisable == 1)
            {
                apiResp.code = (int)APIErrCode.IsNotFound;
                apiResp.msg  = "会员级别禁止注册";
                bll.ContextResponse(context, apiResp);
                return;
            }
            requestUser.levelname = levelConfig.LevelString;
            UserInfo spreadUser = bllUser.GetSpreadUser(requestUser.spreadid, websiteOwner);

            if (spreadUser == null)
            {
                apiResp.code = (int)APIErrCode.IsNotFound;
                apiResp.msg  = "推荐人未找到";
                bll.ContextResponse(context, apiResp);
                return;
            }
            requestUser.spreadid = spreadUser.UserID; //推荐人
            UserInfo oldUserInfo = bllUser.GetUserInfoByPhone(requestUser.phone, websiteOwner);

            if (oldUserInfo != null && oldUserInfo.MemberLevel > 0)
            {
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = "该手机已注册会员";
                bll.ContextResponse(context, apiResp);
                return;
            }

            PayConfig payConfig = bllPay.GetPayConfig();

            if (payType == 1 && !bllPay.IsAliPay(payConfig))
            {
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = "该商户支付宝支付还没有配置";
                bll.ContextResponse(context, apiResp);
                return;
            }
            else if (payType == 2 && !bllPay.IsJDPay(payConfig))
            {
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = "该商户京东支付还没有配置";
                bll.ContextResponse(context, apiResp);
                return;
            }
            if (oldUserInfo != null)
            {
                requestUser.userid = oldUserInfo.UserID;
            }
            else
            {
                requestUser.userid = string.Format("ZYUser{0}{1}", DateTime.Now.ToString("yyyyMMdd"), Guid.NewGuid().ToString("N").ToUpper());
            }
            requestUser.regIP    = context.Request.UserHostAddress;//ip
            requestUser.password = ZentCloud.Common.Rand.Number(6);

            OrderPay orderPay = new OrderPay();

            orderPay.OrderId      = bll.GetGUID(TransacType.PayRegisterOrder);
            orderPay.InsertDate   = DateTime.Now;
            orderPay.Subject      = "支付注册会员";
            orderPay.Total_Fee    = Convert.ToDecimal(levelConfig.FromHistoryScore);
            orderPay.Type         = "5";
            orderPay.WebsiteOwner = websiteOwner;
            orderPay.UserId       = requestUser.userid;
            orderPay.Ex1          = JsonConvert.SerializeObject(requestUser);
            orderPay.Ex2          = requestUser.phone;
            orderPay.PayType      = payType;
            if (!bll.Add(orderPay))
            {
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = "生成支付订单失败";
                bll.ContextResponse(context, apiResp);
                return;
            }

            apiResp.code   = (int)APIErrCode.IsSuccess;
            apiResp.status = true;
            apiResp.result = new
            {
                pay_order_id = orderPay.OrderId
            };
            bllUser.ContextResponse(context, apiResp);
        }
Example #13
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\\PayUpgradeNotify{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); //全部参数排序
                PayConfig payConfig = bllPay.GetPayConfig();
                if (!bllPay.VerifySignatureWx(parametersAll, payConfig.WXPartnerKey))              //验证签名
                {
                    Tolog("验证签名出错");
                    Response.Write(failXml);
                    return;
                }
                OrderPay orderPay = bllOrder.GetOrderPay(parametersAll["out_trade_no"]);
                if (orderPay == null)
                {
                    Tolog("订单未找到");
                    Response.Write(failXml);
                    return;
                }
                if (orderPay.Status.Equals(1))
                {
                    Tolog("已支付");
                    Response.Write(successXml);
                    return;
                }
                BLLJIMP.Model.API.User.PayUpgrade payUpgrade = JsonConvert.DeserializeObject <BLLJIMP.Model.API.User.PayUpgrade>(orderPay.Ex1);
                //更新订单状态
                if (parametersAll["return_code"].Equals("SUCCESS") && parametersAll["result_code"].Equals("SUCCESS"))//交易成功
                {
                    string msg = "";
                    orderPay.Trade_No = parametersAll["transaction_id"];
                    UserLevelConfig levelConfig = bll.QueryUserLevel(orderPay.WebsiteOwner, "DistributionOnLine", payUpgrade.toLevel.ToString());
                    UserInfo        payUser     = bllUser.GetUserInfo(orderPay.UserId, orderPay.WebsiteOwner);
                    if (!string.IsNullOrEmpty(levelConfig.CouponId))
                    {
                        BLLCardCoupon bllCardCoupon = new BLLCardCoupon();
                        bllCardCoupon.SendCardCouponsByCurrUserInfo(payUser, levelConfig.CouponId);
                    }
                    //支付升级分佣
                    if (!bll.PayUpgradeTransfers(orderPay, payUpgrade, parametersAll["openid"], parametersAll["transaction_id"], out msg))
                    {
                        Tolog(msg);
                        Response.Write(failXml);
                        return;
                    }

                    Response.Write(successXml);
                    return;
                }
                Tolog("返回信息有误");
                Response.Write(failXml);
            }
            catch (Exception ex)
            {
                Tolog("出错了:" + ex.Message);
                Response.Write(failXml);
            }
        }
Example #14
0
        public void ProcessRequest(HttpContext context)
        {
            BLLJIMP.Model.API.User.PayUpgrade requestUpgrade = bll.ConvertRequestToModel <BLLJIMP.Model.API.User.PayUpgrade>(new BLLJIMP.Model.API.User.PayUpgrade());
            string websiteOwner = bll.WebsiteOwner;

            requestUpgrade.level = CurrentUserInfo.MemberLevel;
            WebsiteInfo     website     = bllUser.GetWebsiteInfoModelFromDataBase(websiteOwner);
            UserLevelConfig levelConfig = bll.QueryUserLevel(websiteOwner, "DistributionOnLine", requestUpgrade.level.ToString());

            if (levelConfig == null)
            {
                requestUpgrade.userTotalAmount = 0;
            }
            else
            {
                requestUpgrade.userTotalAmount = Convert.ToDecimal(levelConfig.FromHistoryScore);
            }
            UserLevelConfig toLevelConfig = bll.QueryUserLevel(websiteOwner, "DistributionOnLine", requestUpgrade.toLevel.ToString());

            if (toLevelConfig == null)
            {
                apiResp.code = (int)APIErrCode.IsNotFound;
                apiResp.msg  = "会员等级未找到";
                bll.ContextResponse(context, apiResp);
                return;
            }
            if (toLevelConfig.IsDisable == 1)
            {
                apiResp.code = (int)APIErrCode.IsNotFound;
                apiResp.msg  = "会员级别禁止升级";
                bll.ContextResponse(context, apiResp);
                return;
            }
            requestUpgrade.needAmount = Convert.ToDecimal(toLevelConfig.FromHistoryScore);
            requestUpgrade.amount     = requestUpgrade.needAmount - requestUpgrade.userTotalAmount;
            if (requestUpgrade.amount < 0)
            {
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = "暂时不支持降级";
                bll.ContextResponse(context, apiResp);
                return;
            }

            string configV1CouponId = ZentCloud.Common.ConfigHelper.GetConfigString("YGBV1CouponId");
            string configV2CouponId = ZentCloud.Common.ConfigHelper.GetConfigString("YGBV2CouponId");
            string v1LevelNumber    = ZentCloud.Common.ConfigHelper.GetConfigString("V1LevelNumber");
            string v2LevelNumber    = ZentCloud.Common.ConfigHelper.GetConfigString("V2LevelNumber");

            string couponId = string.Empty;

            CardCoupons   cardModel    = null;
            MyCardCoupons myCardCoupon = null;

            if (requestUpgrade.vType == "V1")
            {
                if (string.IsNullOrEmpty(configV1CouponId))
                {
                    apiResp.code = (int)APIErrCode.ContentNotFound;
                    apiResp.msg  = "V1优惠券未配置";
                    bllUser.ContextResponse(context, apiResp);
                    return;
                }
                couponId     = configV1CouponId;
                cardModel    = bllCardCoupon.GetCardCoupon(Convert.ToInt32(couponId));
                myCardCoupon = bllCardCoupon.GetMyCardCouponMainId(Convert.ToInt32(couponId), CurrentUserInfo.UserID);
                if (cardModel == null || myCardCoupon == null)
                {
                    apiResp.code = (int)APIErrCode.ContentNotFound;
                    apiResp.msg  = "优惠券不存在";
                    bllUser.ContextResponse(context, apiResp);
                    return;
                }
                if (requestUpgrade.toLevel.ToString() != v1LevelNumber)
                {
                    apiResp.code = (int)APIErrCode.ContentNotFound;
                    apiResp.msg  = "优惠券不匹配";
                    bllUser.ContextResponse(context, apiResp);
                    return;
                }
            }
            if (requestUpgrade.vType == "V2")
            {
                if (string.IsNullOrEmpty(configV2CouponId))
                {
                    apiResp.code = (int)APIErrCode.ContentNotFound;
                    apiResp.msg  = "V2优惠券未配置";
                    bllUser.ContextResponse(context, apiResp);
                    return;
                }
                couponId     = configV2CouponId;
                cardModel    = bllCardCoupon.GetCardCoupon(Convert.ToInt32(couponId));
                myCardCoupon = bllCardCoupon.GetMyCardCouponMainId(Convert.ToInt32(couponId), CurrentUserInfo.UserID);
                if (cardModel == null || myCardCoupon == null)
                {
                    apiResp.code = (int)APIErrCode.ContentNotFound;
                    apiResp.msg  = "优惠券不存在";
                    bllUser.ContextResponse(context, apiResp);
                    return;
                }
                if (requestUpgrade.toLevel.ToString() != v2LevelNumber)
                {
                    apiResp.code = (int)APIErrCode.ContentNotFound;
                    apiResp.msg  = "优惠券不能用于此升级";
                    bllUser.ContextResponse(context, apiResp);
                    return;
                }
            }

            BLLTransaction tran = new BLLTransaction();

            StringBuilder     sbSql                  = new StringBuilder();
            UserInfo          upUserLevel1           = null; //分销上一级
            UserInfo          upUserLevel2           = null; //分销上二级
            UserInfo          upUserLevel3           = null; //分销上三级
            UserLevelConfig   levelConfig1           = null; //分销上一级规则
            UserLevelConfig   levelConfig2           = null; //分销上二级规则
            UserLevelConfig   levelConfig3           = null; //分销上三级规则
            ProjectCommission modelLevel1            = new ProjectCommission();
            ScoreLockInfo     scoreLockLevel1Info    = new ScoreLockInfo();
            ProjectCommission modelLevel1ex1         = new ProjectCommission();
            ScoreLockInfo     scoreLockLevel1ex1Info = new ScoreLockInfo();
            ProjectCommission modelLevel2            = new ProjectCommission();
            ScoreLockInfo     scoreLockLevel2Info    = new ScoreLockInfo();
            ProjectCommission modelLevel3            = new ProjectCommission();
            ScoreLockInfo     scoreLockLevel3Info    = new ScoreLockInfo();

            int disLevel = 1;

            if (website.DistributionLimitLevel > 1)
            {
                disLevel = website.DistributionLimitLevel;
            }

            string projectId = bll.GetGUID(TransacType.PayRegisterOrder);

            CurrentUserInfo.MemberLevel       = requestUpgrade.toLevel;
            CurrentUserInfo.MemberApplyStatus = 9;

            //计算分佣
            bll.ComputeTransfers(disLevel, CurrentUserInfo, projectId, requestUpgrade.amount, websiteOwner, "余额升级", ref sbSql, ref upUserLevel1,
                                 ref upUserLevel2, ref upUserLevel3, ref levelConfig1, ref levelConfig2, ref levelConfig3, ref modelLevel1, ref scoreLockLevel1Info,
                                 ref modelLevel1ex1, ref scoreLockLevel1ex1Info, ref modelLevel2, ref scoreLockLevel2Info, ref modelLevel3, ref scoreLockLevel3Info,
                                 toLevelConfig.LevelString);

            if (bll.Update(CurrentUserInfo, string.Format(" MemberLevel={0},IsDisable=0,MemberApplyStatus=9 ", CurrentUserInfo.MemberLevel), string.Format(" AutoId='{0}' ", CurrentUserInfo.AutoID), tran) <= 0)
            {
                tran.Rollback();
                apiResp.msg  = "更新用户等级失败";
                apiResp.code = (int)APIErrCode.OperateFail;
                bll.ContextResponse(context, apiResp);
                return;
            }

            bool hasProjectCommission = false;

            #region 记录分佣信息
            if (modelLevel1.Amount > 0)
            {
                hasProjectCommission = true;
                int modelLevel1Id = Convert.ToInt32(bll.AddReturnID(modelLevel1, tran));
                if (modelLevel1Id <= 0)
                {
                    apiResp.msg  = "一级返利失败";
                    apiResp.code = (int)APIErrCode.OperateFail;
                    bll.ContextResponse(context, apiResp);
                    return;
                }
                scoreLockLevel1Info.ForeignkeyId2 = modelLevel1Id.ToString();
                scoreLockLevel1Info.AutoId        = Convert.ToInt32(bll.AddReturnID(scoreLockLevel1Info, tran));
                if (scoreLockLevel1Info.AutoId <= 0)
                {
                    apiResp.msg  = "一级返利冻结失败";
                    apiResp.code = (int)APIErrCode.OperateFail;
                    bll.ContextResponse(context, apiResp);
                    return;
                }
                string scoreDetailEvent = modelLevel1.ProjectName.Contains("购房补助") ? "返购房补助" : "返利";
                if (bllUser.AddScoreDetail(scoreLockLevel1Info.UserId, websiteOwner, (double)scoreLockLevel1Info.Score,
                                           scoreLockLevel1Info.Memo, "TotalAmount", (double)(upUserLevel1.TotalAmount + scoreLockLevel1Info.Score),
                                           scoreLockLevel1Info.AutoId.ToString(), scoreDetailEvent, "", projectId, (double)modelLevel1.SourceAmount, (double)modelLevel1.DeductAmount,
                                           modelLevel1.CommissionUserId, tran,
                                           ex1: levelConfig.LevelNumber.ToString(), ex2: levelConfig.LevelString,
                                           ex3: toLevelConfig.LevelNumber.ToString(), ex4: toLevelConfig.LevelString,
                                           ex5: modelLevel1.CommissionLevel) <= 0)
                {
                    tran.Rollback();
                    apiResp.msg  = "一级返利明细记录失败";
                    apiResp.code = (int)APIErrCode.OperateFail;
                    bll.ContextResponse(context, apiResp);
                    return;
                }
            }
            if (modelLevel1ex1.Amount > 0)
            {
                hasProjectCommission = true;
                int modelLevel1ex1Id = Convert.ToInt32(bll.AddReturnID(modelLevel1ex1, tran));
                if (modelLevel1ex1Id <= 0)
                {
                    apiResp.msg  = "一级返购房补助失败";
                    apiResp.code = (int)APIErrCode.OperateFail;
                    bll.ContextResponse(context, apiResp);
                    return;
                }
                scoreLockLevel1ex1Info.ForeignkeyId2 = modelLevel1ex1Id.ToString();
                scoreLockLevel1ex1Info.AutoId        = Convert.ToInt32(bll.AddReturnID(scoreLockLevel1ex1Info, tran));
                if (scoreLockLevel1ex1Info.AutoId <= 0)
                {
                    apiResp.msg  = "一级返购房补助冻结失败";
                    apiResp.code = (int)APIErrCode.OperateFail;
                    bll.ContextResponse(context, apiResp);
                    return;
                }
                string scoreDetailEvent = modelLevel1ex1.ProjectName.Contains("购房补助") ? "返购房补助" : "返利";
                if (bllUser.AddScoreDetail(scoreLockLevel1ex1Info.UserId, websiteOwner, (double)scoreLockLevel1ex1Info.Score,
                                           scoreLockLevel1ex1Info.Memo, "TotalAmount", (double)(upUserLevel1.TotalAmount + scoreLockLevel1ex1Info.Score),
                                           scoreLockLevel1ex1Info.AutoId.ToString(), scoreDetailEvent, "", projectId, (double)modelLevel1ex1.SourceAmount, (double)modelLevel1ex1.DeductAmount,
                                           modelLevel1ex1.CommissionUserId, tran,
                                           ex1: levelConfig.LevelNumber.ToString(), ex2: levelConfig.LevelString,
                                           ex3: toLevelConfig.LevelNumber.ToString(), ex4: toLevelConfig.LevelString,
                                           ex5: modelLevel1ex1.CommissionLevel) <= 0)
                {
                    tran.Rollback();
                    apiResp.msg  = "一级返购房补助明细记录失败";
                    apiResp.code = (int)APIErrCode.OperateFail;
                    bll.ContextResponse(context, apiResp);
                    return;
                }
            }
            if (modelLevel2.Amount > 0)
            {
                hasProjectCommission = true;
                int modelLevel2Id = Convert.ToInt32(bll.AddReturnID(modelLevel2, tran));
                if (modelLevel2Id <= 0)
                {
                    apiResp.msg  = "二级返利失败";
                    apiResp.code = (int)APIErrCode.OperateFail;
                    bll.ContextResponse(context, apiResp);
                    return;
                }
                scoreLockLevel2Info.ForeignkeyId2 = modelLevel2Id.ToString();
                scoreLockLevel2Info.AutoId        = Convert.ToInt32(bll.AddReturnID(scoreLockLevel2Info, tran));
                if (scoreLockLevel2Info.AutoId <= 0)
                {
                    tran.Rollback();
                    apiResp.msg  = "二级返利冻结失败";
                    apiResp.code = (int)APIErrCode.OperateFail;
                    bll.ContextResponse(context, apiResp);
                    return;
                }
                string scoreDetailEvent = modelLevel2.ProjectName.Contains("购房补助") ? "返购房补助" : "返利";
                if (bllUser.AddScoreDetail(scoreLockLevel2Info.UserId, websiteOwner, (double)scoreLockLevel2Info.Score,
                                           scoreLockLevel2Info.Memo, "TotalAmount", (double)(upUserLevel2.TotalAmount + scoreLockLevel2Info.Score),
                                           scoreLockLevel2Info.AutoId.ToString(), scoreDetailEvent, "", projectId, (double)modelLevel2.SourceAmount, (double)modelLevel2.DeductAmount,
                                           modelLevel2.CommissionUserId, tran,
                                           ex1: levelConfig.LevelNumber.ToString(), ex2: levelConfig.LevelString,
                                           ex3: toLevelConfig.LevelNumber.ToString(), ex4: toLevelConfig.LevelString,
                                           ex5: modelLevel2.CommissionLevel) <= 0)
                {
                    tran.Rollback();
                    apiResp.msg  = "二级返利明细记录失败";
                    apiResp.code = (int)APIErrCode.OperateFail;
                    bll.ContextResponse(context, apiResp);
                    return;
                }
            }
            if (modelLevel3.Amount > 0)
            {
                hasProjectCommission = true;
                int modelLevel3Id = Convert.ToInt32(bll.AddReturnID(modelLevel3, tran));
                if (!bll.Add(modelLevel3, tran))
                {
                    tran.Rollback();
                    apiResp.msg  = "三级返利失败";
                    apiResp.code = (int)APIErrCode.OperateFail;
                    bll.ContextResponse(context, apiResp);
                    return;
                }
                scoreLockLevel3Info.ForeignkeyId2 = modelLevel3Id.ToString();
                scoreLockLevel3Info.AutoId        = Convert.ToInt32(bll.AddReturnID(scoreLockLevel3Info, tran));
                if (scoreLockLevel3Info.AutoId <= 0)
                {
                    tran.Rollback();
                    apiResp.msg  = "三级返利冻结失败";
                    apiResp.code = (int)APIErrCode.OperateFail;
                    bll.ContextResponse(context, apiResp);
                    return;
                }
                string scoreDetailEvent = modelLevel3.ProjectName.Contains("购房补助") ? "返购房补助" : "返利";
                if (bllUser.AddScoreDetail(scoreLockLevel3Info.UserId, websiteOwner, (double)scoreLockLevel3Info.Score,
                                           scoreLockLevel3Info.Memo, "TotalAmount", (double)(upUserLevel3.TotalAmount + scoreLockLevel3Info.Score),
                                           scoreLockLevel3Info.AutoId.ToString(), scoreDetailEvent, "", projectId, (double)modelLevel3.SourceAmount, (double)modelLevel3.DeductAmount,
                                           modelLevel3.CommissionUserId, tran,
                                           ex1: levelConfig.LevelNumber.ToString(), ex2: levelConfig.LevelString,
                                           ex3: toLevelConfig.LevelNumber.ToString(), ex4: toLevelConfig.LevelString,
                                           ex5: modelLevel3.CommissionLevel) <= 0)
                {
                    tran.Rollback();
                    apiResp.msg  = "三级返利明细记录失败";
                    apiResp.code = (int)APIErrCode.OperateFail;
                    bll.ContextResponse(context, apiResp);
                    return;
                }
            }
            #endregion

            #region 更新分佣账面金额
            if (hasProjectCommission)
            {
                if (BLLBase.ExecuteSql(sbSql.ToString(), tran) <= 0)
                {
                    tran.Rollback();
                    apiResp.msg  = string.Format("更新分佣账面{0}出错", website.TotalAmountShowName);
                    apiResp.code = (int)APIErrCode.OperateFail;
                    bll.ContextResponse(context, apiResp);
                    return;
                }
            }
            #endregion

            #region 记录余额明细
            //自己的消费记录
            if (bllUser.AddScoreDetail(CurrentUserInfo.UserID, websiteOwner, (double)(0 - requestUpgrade.amount),
                                       string.Format("{1}为{0}", toLevelConfig.LevelString, "升级"), "TotalAmount", (double)(CurrentUserInfo.TotalAmount - requestUpgrade.amount),
                                       "", "升级会员", "", "", (double)requestUpgrade.amount, 0, "",
                                       tran, ex1: levelConfig.LevelNumber.ToString(), ex2: levelConfig.LevelString,
                                       ex3: toLevelConfig.LevelNumber.ToString(), ex4: toLevelConfig.LevelString) <= 0)
            {
                tran.Rollback();
                apiResp.msg  = "升级会员明细出错";
                apiResp.code = (int)APIErrCode.OperateFail;
                bll.ContextResponse(context, apiResp);
                return;
            }

            #endregion

            #region 修改优惠券 更新支付状态
            myCardCoupon.UseDate = DateTime.Now;
            myCardCoupon.Status  = 1;
            if (!bllCardCoupon.Update(myCardCoupon, tran))
            {
                tran.Rollback();
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = "更新优惠券状态失败";
                bll.ContextResponse(context, apiResp);
                return;
            }

            #endregion

            #region 记录业绩明细
            TeamPerformanceDetails perDetail = new TeamPerformanceDetails();
            perDetail.AddType           = "升级";
            perDetail.AddNote           = "由" + levelConfig.LevelString + "升级" + toLevelConfig.LevelString;
            perDetail.AddTime           = DateTime.Now;
            perDetail.DistributionOwner = CurrentUserInfo.DistributionOwner;
            perDetail.UserId            = CurrentUserInfo.UserID;
            perDetail.UserName          = CurrentUserInfo.TrueName;
            perDetail.UserPhone         = CurrentUserInfo.Phone;
            perDetail.Performance       = requestUpgrade.amount;
            string yearMonthString = perDetail.AddTime.ToString("yyyyMM");
            int    yearMonth       = Convert.ToInt32(yearMonthString);
            perDetail.WebsiteOwner = websiteOwner;
            perDetail.YearMonth    = yearMonth;

            if (!bllUser.Add(perDetail, tran))
            {
                tran.Rollback();
                apiResp.msg  = "记录业绩明细失败";
                apiResp.code = (int)APIErrCode.OperateFail;
                bll.ContextResponse(context, apiResp);
                return;
            }
            #endregion

            tran.Commit();
            if (hasProjectCommission)
            {
                //异步修改积分明细表
                Thread th1 = new Thread(delegate()
                {
                    //计算相关业绩
                    bll.BuildCurMonthPerformanceByUserID(websiteOwner, CurrentUserInfo.UserID);
                });
                th1.Start();
            }
            apiResp.msg    = "升级完成";
            apiResp.code   = (int)APIErrCode.IsSuccess;
            apiResp.status = true;

            bll.ContextResponse(context, apiResp);
        }
Example #15
0
        public void ProcessRequest(HttpContext context)
        {
            if (CurrentUserInfo.IsLock == 1)
            {
                apiResp.code = (int)APIErrCode.NoPms;
                apiResp.msg  = "账号已被锁定";
                bllUser.ContextResponse(context, apiResp);
                return;
            }
            if (CurrentUserInfo.MemberApplyStatus != 9)
            {
                apiResp.code = (int)APIErrCode.NoPms;
                apiResp.msg  = "您的账号正在审核中";
                bllUser.ContextResponse(context, apiResp);
                return;
            }
            BLLJIMP.Model.API.User.PayUpgrade requestUpgrade = bll.ConvertRequestToModel <BLLJIMP.Model.API.User.PayUpgrade>(new BLLJIMP.Model.API.User.PayUpgrade());
            string websiteOwner = bll.WebsiteOwner;

            requestUpgrade.level = CurrentUserInfo.MemberLevel;
            WebsiteInfo     website     = bllUser.GetWebsiteInfoModelFromDataBase(websiteOwner);
            UserLevelConfig levelConfig = bll.QueryUserLevel(websiteOwner, "DistributionOnLine", requestUpgrade.level.ToString());

            if (levelConfig == null)
            {
                requestUpgrade.userTotalAmount = 0;
            }
            else
            {
                requestUpgrade.userTotalAmount = Convert.ToDecimal(levelConfig.FromHistoryScore);
            }
            UserLevelConfig toLevelConfig = bll.QueryUserLevel(websiteOwner, "DistributionOnLine", requestUpgrade.toLevel.ToString());

            if (toLevelConfig == null)
            {
                apiResp.code = (int)APIErrCode.IsNotFound;
                apiResp.msg  = "会员等级未找到";
                bll.ContextResponse(context, apiResp);
                return;
            }
            if (toLevelConfig.IsDisable == 1)
            {
                apiResp.code = (int)APIErrCode.IsNotFound;
                apiResp.msg  = "会员级别禁止升级";
                bll.ContextResponse(context, apiResp);
                return;
            }
            requestUpgrade.needAmount = Convert.ToDecimal(toLevelConfig.FromHistoryScore);
            requestUpgrade.amount     = requestUpgrade.needAmount - requestUpgrade.userTotalAmount;
            if (requestUpgrade.amount < 0)
            {
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = "暂时不支持降级";
                bll.ContextResponse(context, apiResp);
                return;
            }
            if (CurrentUserInfo.TotalAmount < requestUpgrade.amount)
            {
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = string.Format("您的可用{0}不足", website.TotalAmountShowName);
                bll.ContextResponse(context, apiResp);
                return;
            }

            BLLTransaction tran = new BLLTransaction();

            StringBuilder     sbSql                  = new StringBuilder();
            UserInfo          upUserLevel1           = null; //分销上一级
            UserInfo          upUserLevel2           = null; //分销上二级
            UserInfo          upUserLevel3           = null; //分销上三级
            UserLevelConfig   levelConfig1           = null; //分销上一级规则
            UserLevelConfig   levelConfig2           = null; //分销上二级规则
            UserLevelConfig   levelConfig3           = null; //分销上三级规则
            ProjectCommission modelLevel1            = new ProjectCommission();
            ScoreLockInfo     scoreLockLevel1Info    = new ScoreLockInfo();
            ProjectCommission modelLevel1ex1         = new ProjectCommission();
            ScoreLockInfo     scoreLockLevel1ex1Info = new ScoreLockInfo();
            ProjectCommission modelLevel2            = new ProjectCommission();
            ScoreLockInfo     scoreLockLevel2Info    = new ScoreLockInfo();
            ProjectCommission modelLevel3            = new ProjectCommission();
            ScoreLockInfo     scoreLockLevel3Info    = new ScoreLockInfo();

            int disLevel = 1;

            if (website.DistributionLimitLevel > 1)
            {
                disLevel = website.DistributionLimitLevel;
            }

            string projectId = bll.GetGUID(TransacType.PayRegisterOrder);

            CurrentUserInfo.MemberLevel       = requestUpgrade.toLevel;
            CurrentUserInfo.MemberApplyStatus = 9;
            //计算分佣
            bll.ComputeTransfers(disLevel, CurrentUserInfo, projectId, requestUpgrade.amount, websiteOwner, "余额升级", ref sbSql, ref upUserLevel1,
                                 ref upUserLevel2, ref upUserLevel3, ref levelConfig1, ref levelConfig2, ref levelConfig3, ref modelLevel1, ref scoreLockLevel1Info,
                                 ref modelLevel1ex1, ref scoreLockLevel1ex1Info, ref modelLevel2, ref scoreLockLevel2Info, ref modelLevel3, ref scoreLockLevel3Info,
                                 toLevelConfig.LevelString);


            bool hasProjectCommission = false;

            #region 记录分佣信息
            if (modelLevel1.Amount > 0)
            {
                hasProjectCommission = true;
                int modelLevel1Id = Convert.ToInt32(bll.AddReturnID(modelLevel1, tran));
                if (modelLevel1Id <= 0)
                {
                    apiResp.msg  = "一级返利失败";
                    apiResp.code = (int)APIErrCode.OperateFail;
                    bll.ContextResponse(context, apiResp);
                    return;
                }
                scoreLockLevel1Info.ForeignkeyId2 = modelLevel1Id.ToString();
                scoreLockLevel1Info.AutoId        = Convert.ToInt32(bll.AddReturnID(scoreLockLevel1Info, tran));
                if (scoreLockLevel1Info.AutoId <= 0)
                {
                    apiResp.msg  = "一级返利冻结失败";
                    apiResp.code = (int)APIErrCode.OperateFail;
                    bll.ContextResponse(context, apiResp);
                    return;
                }
                string scoreDetailEvent = modelLevel1.ProjectName.Contains("购房补助") ? "返购房补助" : "返利";
                if (bllUser.AddScoreDetail(scoreLockLevel1Info.UserId, websiteOwner, (double)scoreLockLevel1Info.Score,
                                           scoreLockLevel1Info.Memo, "TotalAmount", (double)(upUserLevel1.TotalAmount + scoreLockLevel1Info.Score),
                                           scoreLockLevel1Info.AutoId.ToString(), scoreDetailEvent, "", projectId, (double)modelLevel1.SourceAmount, (double)modelLevel1.DeductAmount,
                                           modelLevel1.CommissionUserId, tran,
                                           ex1: levelConfig.LevelNumber.ToString(), ex2: levelConfig.LevelString,
                                           ex3: toLevelConfig.LevelNumber.ToString(), ex4: toLevelConfig.LevelString,
                                           ex5: modelLevel1.CommissionLevel) <= 0)
                {
                    tran.Rollback();
                    apiResp.msg  = "一级返利明细记录失败";
                    apiResp.code = (int)APIErrCode.OperateFail;
                    bll.ContextResponse(context, apiResp);
                    return;
                }
            }
            if (modelLevel1ex1.Amount > 0)
            {
                hasProjectCommission = true;
                int modelLevel1ex1Id = Convert.ToInt32(bll.AddReturnID(modelLevel1ex1, tran));
                if (modelLevel1ex1Id <= 0)
                {
                    apiResp.msg  = "一级返购房补助失败";
                    apiResp.code = (int)APIErrCode.OperateFail;
                    bll.ContextResponse(context, apiResp);
                    return;
                }
                scoreLockLevel1ex1Info.ForeignkeyId2 = modelLevel1ex1Id.ToString();
                scoreLockLevel1ex1Info.AutoId        = Convert.ToInt32(bll.AddReturnID(scoreLockLevel1ex1Info, tran));
                if (scoreLockLevel1ex1Info.AutoId <= 0)
                {
                    apiResp.msg  = "一级返购房补助冻结失败";
                    apiResp.code = (int)APIErrCode.OperateFail;
                    bll.ContextResponse(context, apiResp);
                    return;
                }
                string scoreDetailEvent = modelLevel1ex1.ProjectName.Contains("购房补助") ? "返购房补助" : "返利";
                if (bllUser.AddScoreDetail(scoreLockLevel1ex1Info.UserId, websiteOwner, (double)scoreLockLevel1ex1Info.Score,
                                           scoreLockLevel1ex1Info.Memo, "TotalAmount", (double)(upUserLevel1.TotalAmount + scoreLockLevel1ex1Info.Score),
                                           scoreLockLevel1ex1Info.AutoId.ToString(), scoreDetailEvent, "", projectId, (double)modelLevel1ex1.SourceAmount, (double)modelLevel1ex1.DeductAmount,
                                           modelLevel1ex1.CommissionUserId, tran,
                                           ex1: levelConfig.LevelNumber.ToString(), ex2: levelConfig.LevelString,
                                           ex3: toLevelConfig.LevelNumber.ToString(), ex4: toLevelConfig.LevelString,
                                           ex5: modelLevel1ex1.CommissionLevel) <= 0)
                {
                    tran.Rollback();
                    apiResp.msg  = "一级返购房补助明细记录失败";
                    apiResp.code = (int)APIErrCode.OperateFail;
                    bll.ContextResponse(context, apiResp);
                    return;
                }
            }
            if (modelLevel2.Amount > 0)
            {
                hasProjectCommission = true;
                int modelLevel2Id = Convert.ToInt32(bll.AddReturnID(modelLevel2, tran));
                if (modelLevel2Id <= 0)
                {
                    apiResp.msg  = "二级返利失败";
                    apiResp.code = (int)APIErrCode.OperateFail;
                    bll.ContextResponse(context, apiResp);
                    return;
                }
                scoreLockLevel2Info.ForeignkeyId2 = modelLevel2Id.ToString();
                scoreLockLevel2Info.AutoId        = Convert.ToInt32(bll.AddReturnID(scoreLockLevel2Info, tran));
                if (scoreLockLevel2Info.AutoId <= 0)
                {
                    tran.Rollback();
                    apiResp.msg  = "二级返利冻结失败";
                    apiResp.code = (int)APIErrCode.OperateFail;
                    bll.ContextResponse(context, apiResp);
                    return;
                }
                string scoreDetailEvent = modelLevel2.ProjectName.Contains("购房补助") ? "返购房补助" : "返利";
                if (bllUser.AddScoreDetail(scoreLockLevel2Info.UserId, websiteOwner, (double)scoreLockLevel2Info.Score,
                                           scoreLockLevel2Info.Memo, "TotalAmount", (double)(upUserLevel2.TotalAmount + scoreLockLevel2Info.Score),
                                           scoreLockLevel2Info.AutoId.ToString(), scoreDetailEvent, "", projectId, (double)modelLevel2.SourceAmount, (double)modelLevel2.DeductAmount,
                                           modelLevel2.CommissionUserId, tran,
                                           ex1: levelConfig.LevelNumber.ToString(), ex2: levelConfig.LevelString,
                                           ex3: toLevelConfig.LevelNumber.ToString(), ex4: toLevelConfig.LevelString,
                                           ex5: modelLevel2.CommissionLevel) <= 0)
                {
                    tran.Rollback();
                    apiResp.msg  = "二级返利明细记录失败";
                    apiResp.code = (int)APIErrCode.OperateFail;
                    bll.ContextResponse(context, apiResp);
                    return;
                }
            }
            if (modelLevel3.Amount > 0)
            {
                hasProjectCommission = true;
                int modelLevel3Id = Convert.ToInt32(bll.AddReturnID(modelLevel3, tran));
                if (!bll.Add(modelLevel3, tran))
                {
                    tran.Rollback();
                    apiResp.msg  = "三级返利失败";
                    apiResp.code = (int)APIErrCode.OperateFail;
                    bll.ContextResponse(context, apiResp);
                    return;
                }
                scoreLockLevel3Info.ForeignkeyId2 = modelLevel3Id.ToString();
                scoreLockLevel3Info.AutoId        = Convert.ToInt32(bll.AddReturnID(scoreLockLevel3Info, tran));
                if (scoreLockLevel3Info.AutoId <= 0)
                {
                    tran.Rollback();
                    apiResp.msg  = "三级返利冻结失败";
                    apiResp.code = (int)APIErrCode.OperateFail;
                    bll.ContextResponse(context, apiResp);
                    return;
                }
                string scoreDetailEvent = modelLevel3.ProjectName.Contains("购房补助") ? "返购房补助" : "返利";
                if (bllUser.AddScoreDetail(scoreLockLevel3Info.UserId, websiteOwner, (double)scoreLockLevel3Info.Score,
                                           scoreLockLevel3Info.Memo, "TotalAmount", (double)(upUserLevel3.TotalAmount + scoreLockLevel3Info.Score),
                                           scoreLockLevel3Info.AutoId.ToString(), scoreDetailEvent, "", projectId, (double)modelLevel3.SourceAmount, (double)modelLevel3.DeductAmount,
                                           modelLevel3.CommissionUserId, tran,
                                           ex1: levelConfig.LevelNumber.ToString(), ex2: levelConfig.LevelString,
                                           ex3: toLevelConfig.LevelNumber.ToString(), ex4: toLevelConfig.LevelString,
                                           ex5: modelLevel3.CommissionLevel) <= 0)
                {
                    tran.Rollback();
                    apiResp.msg  = "三级返利明细记录失败";
                    apiResp.code = (int)APIErrCode.OperateFail;
                    bll.ContextResponse(context, apiResp);
                    return;
                }
            }
            #endregion

            #region 更新分佣账面金额
            if (hasProjectCommission)
            {
                if (BLLBase.ExecuteSql(sbSql.ToString(), tran) <= 0)
                {
                    tran.Rollback();
                    apiResp.msg  = string.Format("更新分佣账面{0}出错", website.TotalAmountShowName);
                    apiResp.code = (int)APIErrCode.OperateFail;
                    bll.ContextResponse(context, apiResp);
                    return;
                }
            }
            #endregion

            #region 记录余额明细
            //自己的消费记录
            if (bllUser.AddScoreDetail(CurrentUserInfo.UserID, websiteOwner, (double)(0 - requestUpgrade.amount),
                                       string.Format("{1}为{0}", toLevelConfig.LevelString, "升级"), "TotalAmount", (double)(CurrentUserInfo.TotalAmount - requestUpgrade.amount),
                                       "", "升级会员", "", "", (double)requestUpgrade.amount, 0, "",
                                       tran, ex1: levelConfig.LevelNumber.ToString(), ex2: levelConfig.LevelString,
                                       ex3: toLevelConfig.LevelNumber.ToString(), ex4: toLevelConfig.LevelString) <= 0)
            {
                tran.Rollback();
                apiResp.msg  = "升级会员明细出错";
                apiResp.code = (int)APIErrCode.OperateFail;
                bll.ContextResponse(context, apiResp);
                return;
            }

            #endregion

            #region 修改金额 更新支付状态

            if (BLLBase.ExecuteSql(string.Format("UPDATE ZCJ_UserInfo SET MemberLevel={0},IsDisable=0,MemberApplyStatus=9,TotalAmount=ISNULL(TotalAmount,0)-{3},AccountAmountEstimate=ISNULL(AccountAmountEstimate,0)-{3} FROM ZCJ_UserInfo WHERE UserID='{1}' And WebsiteOwner='{2}' And ISNULL(TotalAmount,0)-{3}>=0 ;",
                                                 requestUpgrade.toLevel, CurrentUserInfo.UserID, websiteOwner, requestUpgrade.amount),
                                   tran) <= 0)
            {
                tran.Rollback();
                apiResp.msg  = string.Format("扣除用户可用{0}出错", website.TotalAmountShowName);
                apiResp.code = (int)APIErrCode.OperateFail;
                bll.ContextResponse(context, apiResp);
                return;
            }
            #endregion

            #region 记录业绩明细
            TeamPerformanceDetails perDetail = new TeamPerformanceDetails();
            perDetail.AddType           = "升级";
            perDetail.AddNote           = "由" + levelConfig.LevelString + "升级" + toLevelConfig.LevelString;
            perDetail.AddTime           = DateTime.Now;
            perDetail.DistributionOwner = CurrentUserInfo.DistributionOwner;
            perDetail.UserId            = CurrentUserInfo.UserID;
            perDetail.UserName          = CurrentUserInfo.TrueName;
            perDetail.UserPhone         = CurrentUserInfo.Phone;
            perDetail.Performance       = requestUpgrade.amount;
            string yearMonthString = perDetail.AddTime.ToString("yyyyMM");
            int    yearMonth       = Convert.ToInt32(yearMonthString);
            perDetail.WebsiteOwner = websiteOwner;
            perDetail.YearMonth    = yearMonth;

            if (!bllUser.Add(perDetail, tran))
            {
                tran.Rollback();
                apiResp.msg  = "记录业绩明细失败";
                apiResp.code = (int)APIErrCode.OperateFail;
                bll.ContextResponse(context, apiResp);
                return;
            }
            #endregion

            tran.Commit();
            if (hasProjectCommission)
            {
                //异步修改积分明细表
                Thread th1 = new Thread(delegate()
                {
                    //计算相关业绩
                    bll.BuildCurMonthPerformanceByUserID(websiteOwner, CurrentUserInfo.UserID);
                });
                th1.Start();
            }
            apiResp.msg    = "升级完成";
            apiResp.code   = (int)APIErrCode.IsSuccess;
            apiResp.status = true;

            bll.ContextResponse(context, apiResp);
        }
Example #16
0
File: Get.ashx.cs Project: uvbs/mmp
        public void ProcessRequest(HttpContext context)
        {
            string     id                      = context.Request["id"];
            string     websiteOwner            = bllFlow.WebsiteOwner;
            FlowAction act                     = bllFlow.GetByKey <FlowAction>("AutoID", id, websiteOwner: websiteOwner);
            List <FlowActionDetail> actDetails = bllFlow.GetActionDetails(websiteOwner, act.AutoID, act.FlowID);

            string handleUserId            = currentUserInfo.UserID;
            string handleGroupId           = currentUserInfo.PermissionGroupID.HasValue ? currentUserInfo.PermissionGroupID.Value.ToString() : "";
            bool   isCanAction             = bllFlow.IsCanAction(websiteOwner, act.AutoID, handleUserId, handleGroupId);
            List <FlowActionFile> actFiles = bllFlow.GetActionFiles(websiteOwner, act.AutoID, act.FlowID);
            List <UserInfo>       uList    = new List <UserInfo>();
            UserInfo member = bllUser.GetUserInfo(act.MemberID, websiteOwner);

            if (member != null)
            {
                uList.Add(member);
            }
            UserInfo cu = uList.FirstOrDefault(p => p.UserID == act.CreateUserID);

            if (cu == null)
            {
                cu = bllUser.GetUserInfo(act.CreateUserID, websiteOwner);
                if (cu != null)
                {
                    uList.Add(cu);
                }
            }
            UserInfo regUser            = null;
            string   regUserLevelString = "";
            double   regUseAmount       = 0;

            if (act.FlowKey == "CancelRegister" && !string.IsNullOrWhiteSpace(member.RegUserID))
            {
                regUser = bllUser.GetUserInfo(member.RegUserID, websiteOwner);
                UserLevelConfig levelConfig = bll.QueryUserLevel(websiteOwner, "DistributionOnLine", regUser.MemberLevel.ToString());
                if (levelConfig != null)
                {
                    regUserLevelString = levelConfig.LevelString;
                }
                UserScoreDetailsInfo regScore = bllScore.GetNewScore(websiteOwner, "TotalAmount", userIDs: member.UserID, colName: "AutoID,Score", scoreEvents: "他人注册转入", startTime: member.Regtime.Value.ToString("yyyy-MM-dd"));
                if (regScore != null)
                {
                    regUseAmount = regScore.Score;
                }
            }

            UserInfo upUser            = null;
            string   upUserLevelString = "";

            if (act.FlowKey == "RegisterOffLine" || act.FlowKey == "CancelRegister" || act.FlowKey == "EmptyBilFill")
            {
                upUser = bllUser.GetUserInfo(member.DistributionOwner, websiteOwner);
                UserLevelConfig upLevelConfig = bll.QueryUserLevel(websiteOwner, "DistributionOnLine", upUser.MemberLevel.ToString());
                if (upLevelConfig != null)
                {
                    upUserLevelString = upLevelConfig.LevelString;
                }
            }

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

            foreach (var item in actDetails)
            {
                UserInfo ru = uList.FirstOrDefault(p => p.UserID == item.HandleUserID);
                if (ru == null)
                {
                    ru = bllUser.GetUserInfo(item.HandleUserID, websiteOwner);
                    if (ru != null)
                    {
                        uList.Add(ru);
                    }
                }
                var files = (from fp in actFiles
                             where fp.StepID.Equals(item.StepID)
                             select new
                {
                    id = fp.AutoID,
                    url = fp.FilePath
                });

                handles.Add(new
                {
                    id               = item.AutoID,
                    ex1              = item.Ex1,
                    ex2              = item.Ex2,
                    ex3              = item.Ex3,
                    content          = item.HandleContent,
                    handle_time      = item.HandleDate.ToString("yyyy/MM/dd HH:mm:ss"),
                    stepname         = item.StepName,
                    handle_user_id   = ru == null ? 0 : ru.AutoID,
                    handle_user_name = ru == null ? "" : bllUser.GetUserDispalyName(ru),
                    select_date      = item.HandleSelectDate.ToString("yyyy/MM/dd HH:mm:ss"),
                    files            = files
                });
            }
            apiResp.result = new
            {
                id               = act.AutoID,
                flowname         = act.FlowName,
                stepname         = act.StepName,
                amount           = act.Amount,
                true_amount      = act.TrueAmount,
                deduct_amount    = act.DeductAmount,
                status           = act.Status,
                ex1              = act.StartEx1,
                ex2              = act.StartEx2,
                ex3              = act.StartEx3,
                content          = act.StartContent,
                select_date      = act.StartSelectDate.ToString("yyyy/MM/dd HH:mm:ss"),
                member_id        = member == null ? act.MemberAutoID : member.AutoID,
                member_name      = member == null ? act.MemberName : bllUser.GetUserDispalyName(member),
                member_phone     = member == null ? act.MemberPhone : member.Phone,
                member_regtime   = member == null ? "" : member.Regtime.Value.ToString("yyyy/MM/dd HH:mm:ss"),
                lvname           = act.MemberLevelName,
                create_user_id   = cu == null ? 0 : cu.AutoID,
                create_user_name = cu == null ? "" : bllUser.GetUserDispalyName(cu),
                start            = act.CreateDate.ToString("yyyy/MM/dd HH:mm:ss"),
                end              = act.EndDate.ToString("yyyy/MM/dd HH:mm:ss"),
                handles          = handles,
                can_act          = isCanAction,
                way              = member == null ? "":member.RegisterWay,
                reg              = regUser == null ? null:new
                {
                    uid    = regUser.AutoID,
                    name   = bllUser.GetUserDispalyName(regUser),
                    level  = regUserLevelString,
                    phone  = regUser.Phone,
                    amount = regUseAmount
                },
                up = upUser == null ? null : new
                {
                    uid   = upUser.AutoID,
                    name  = bllUser.GetUserDispalyName(upUser),
                    level = upUserLevelString,
                    phone = upUser.Phone
                },
            };
            apiResp.code   = (int)APIErrCode.IsSuccess;
            apiResp.status = true;
            apiResp.msg    = "查询完成";
            bllFlow.ContextResponse(context, apiResp);
        }
Example #17
0
        /// <summary>
        /// 支付注册
        /// </summary>
        /// <param name="orderPay"></param>
        /// <returns></returns>
        public bool PayRegister(OrderPay orderPay, string tradeNo)
        {
            BLLDistribution bllDist = new BLLDistribution();
            string          msg     = "";

            BLLJIMP.Model.API.User.PayRegisterUser requestUser = JsonConvert.DeserializeObject <BLLJIMP.Model.API.User.PayRegisterUser>(orderPay.Ex1);
            UserLevelConfig levelConfig = bll.QueryUserLevel(orderPay.WebsiteOwner, "DistributionOnLine", requestUser.level.ToString());

            if (levelConfig == null)
            {
                return(false);
            }
            UserInfo regUser = bllUser.GetUserInfoByPhone(requestUser.phone, orderPay.WebsiteOwner);

            if (regUser != null && regUser.MemberLevel >= 10)
            {
                return(false);
            }
            if (regUser != null && regUser.MemberLevel >= requestUser.level)
            {
                return(false);
            }
            if (regUser != null)
            {
                regUser.UserType          = 2;
                regUser.TrueName          = requestUser.truename;
                regUser.DistributionOwner = requestUser.spreadid;
                regUser.MemberLevel       = requestUser.level;
                regUser.MemberStartTime   = DateTime.Now;
                regUser.MemberApplyTime   = orderPay.InsertDate;
                regUser.RegIP             = requestUser.regIP;
                regUser.Password          = requestUser.password;
                regUser.MemberApplyStatus = 9;
                regUser.IdentityCard      = requestUser.idcard;
                regUser.Province          = requestUser.province;
                regUser.City         = requestUser.city;
                regUser.District     = requestUser.district;
                regUser.Town         = requestUser.town;
                regUser.ProvinceCode = requestUser.provinceCode;
                regUser.CityCode     = requestUser.cityCode;
                regUser.DistrictCode = requestUser.districtCode;
                regUser.TownCode     = requestUser.townCode;
                regUser.RegUserID    = null;
                regUser.RegisterWay  = "线上";
            }
            else
            {
                regUser                   = new UserInfo();
                regUser.UserID            = requestUser.userid;
                regUser.UserType          = 2;
                regUser.TrueName          = requestUser.truename;
                regUser.WebsiteOwner      = orderPay.WebsiteOwner;
                regUser.DistributionOwner = requestUser.spreadid;
                regUser.Phone             = requestUser.phone;
                regUser.MemberLevel       = requestUser.level;
                regUser.MemberStartTime   = DateTime.Now;
                regUser.MemberApplyTime   = orderPay.InsertDate;
                regUser.Regtime           = DateTime.Now;
                regUser.LastLoginDate     = DateTime.Parse("1970-01-01");
                regUser.RegIP             = requestUser.regIP;
                regUser.Password          = requestUser.password;
                regUser.MemberApplyStatus = 9;
                regUser.IdentityCard      = requestUser.idcard;
                regUser.Province          = requestUser.province;
                regUser.City              = requestUser.city;
                regUser.District          = requestUser.district;
                regUser.Town              = requestUser.town;
                regUser.ProvinceCode      = requestUser.provinceCode;
                regUser.CityCode          = requestUser.cityCode;
                regUser.DistrictCode      = requestUser.districtCode;
                regUser.TownCode          = requestUser.townCode;
                regUser.RegisterWay       = "线上";
            }
            orderPay.Trade_No = tradeNo;
            if (!string.IsNullOrEmpty(levelConfig.CouponId))
            {
                BLLCardCoupon bllCardCoupon = new BLLCardCoupon();
                bllCardCoupon.SendCardCouponsByCurrUserInfo(regUser, levelConfig.CouponId);
            }
            return(bll.PayRegisterTransfers(regUser, orderPay, "", tradeNo, levelConfig, out msg));
        }
Example #18
0
        public void ProcessRequest(HttpContext context)
        {
            BLLJIMP.Model.API.Flow.PostAction requestPost = bllFlow.ConvertRequestToModel <BLLJIMP.Model.API.Flow.PostAction>(new BLLJIMP.Model.API.Flow.PostAction());
            string[] limit = new string[] { "OfflineRecharge", "OfflineUpgrade" };
            if (!limit.Contains(requestPost.flow_key))
            {
                apiResp.code = (int)APIErrCode.IsNotFound;
                apiResp.msg  = "该流程不支持";
                bllFlow.ContextResponse(context, apiResp);
                return;
            }
            string websiteOwner = bllFlow.WebsiteOwner;

            BLLJIMP.Model.Flow flow = bllFlow.GetFlowByKey(requestPost.flow_key, websiteOwner);
            if (flow == null)
            {
                apiResp.code = (int)APIErrCode.IsNotFound;
                apiResp.msg  = "流程未定义";
                bllFlow.ContextResponse(context, apiResp);
                return;
            }
            if (flow.IsDelete == 1)
            {
                apiResp.code = (int)APIErrCode.IsNotFound;
                apiResp.msg  = flow.FlowName + "已停用";
                bllFlow.ContextResponse(context, apiResp);
                return;
            }
            List <BLLJIMP.Model.FlowStep> steps = bllFlow.GetStepList(2, 1, websiteOwner, flow.AutoID);

            if (steps.Count == 0)
            {
                apiResp.code = (int)APIErrCode.IsNotFound;
                apiResp.msg  = flow.FlowName + "环节未设置";
                bllFlow.ContextResponse(context, apiResp);
                return;
            }

            UserInfo member = bllUser.GetUserInfo(requestPost.member_userid, websiteOwner);

            if (requestPost.flow_key == "OfflineUpgrade")
            {
                if (member.MemberLevel >= Convert.ToInt32(requestPost.ex2))
                {
                    apiResp.code = (int)APIErrCode.OperateFail;
                    apiResp.msg  = "所选级别低于会员当前级别";
                    bllFlow.ContextResponse(context, apiResp);
                    return;
                }
                UserLevelConfig mlevelConfig  = bll.QueryUserLevel(websiteOwner, "DistributionOnLine", member.MemberLevel.ToString());
                UserLevelConfig toLevelConfig = bll.QueryUserLevel(websiteOwner, "DistributionOnLine", requestPost.ex2.ToString());
                if (toLevelConfig == null)
                {
                    apiResp.code = (int)APIErrCode.IsNotFound;
                    apiResp.msg  = "等级未找到";
                    bll.ContextResponse(context, apiResp);
                    return;
                }
                if (toLevelConfig.IsDisable == 1)
                {
                    apiResp.code = (int)APIErrCode.IsNotFound;
                    apiResp.msg  = "级别禁止升级";
                    bll.ContextResponse(context, apiResp);
                    return;
                }
                requestPost.amount = Convert.ToDecimal(toLevelConfig.FromHistoryScore) - Convert.ToDecimal(mlevelConfig.FromHistoryScore);
                if (requestPost.amount < 0)
                {
                    apiResp.code = (int)APIErrCode.OperateFail;
                    apiResp.msg  = "所选级别低于会员当前级别";
                    bllFlow.ContextResponse(context, apiResp);
                    return;
                }
                requestPost.ex3 = toLevelConfig.LevelString;
            }

            WebsiteInfo website = bllUser.GetWebsiteInfoModelFromDataBase(websiteOwner);

            BLLJIMP.Model.FlowStep step1 = steps[0];
            BLLJIMP.Model.FlowStep step2 = null;
            if (steps.Count == 2)
            {
                step2 = steps[1];
            }

            BLLJIMP.Model.FlowAction action = new BLLJIMP.Model.FlowAction();
            action.CreateDate   = DateTime.Now;
            action.CreateUserID = currentUserInfo.UserID;
            action.WebsiteOwner = websiteOwner;
            action.StartStepID  = step1.AutoID;
            action.FlowID       = flow.AutoID;
            action.FlowKey      = flow.FlowKey;
            if (requestPost.amount > 0)
            {
                action.Amount = requestPost.amount;
            }
            if (!string.IsNullOrWhiteSpace(requestPost.content))
            {
                action.StartContent = requestPost.content;
            }
            if (!string.IsNullOrWhiteSpace(requestPost.ex1))
            {
                action.StartEx1 = requestPost.ex1;
            }
            if (!string.IsNullOrWhiteSpace(requestPost.ex2))
            {
                action.StartEx2 = requestPost.ex2;
            }
            if (!string.IsNullOrWhiteSpace(requestPost.ex3))
            {
                action.StartEx3 = requestPost.ex3;
            }
            if (requestPost.select_date.HasValue)
            {
                action.StartSelectDate = requestPost.select_date.Value;
            }

            action.MemberAutoID = member.AutoID;
            action.MemberID     = member.UserID;
            action.MemberName   = bllUser.GetUserDispalyName(member);
            action.MemberAvatar = bllUser.GetUserDispalyAvatar(member);
            action.MemberPhone  = member.Phone;

            ZentCloud.BLLJIMP.Model.UserLevelConfig levelConfig = bll.QueryUserLevel(websiteOwner, "DistributionOnLine", member.MemberLevel.ToString());
            action.MemberLevel     = levelConfig.LevelNumber;
            action.MemberLevelName = levelConfig.LevelString;

            action.FlowName = flow.FlowName;
            if (step2 != null)
            {
                action.StepID   = step2.AutoID;
                action.StepName = step2.StepName;
            }
            else
            {
                action.Status  = 9;
                action.EndDate = DateTime.Now;
            }
            BLLJIMP.Model.FlowActionDetail actionDetail1 = new BLLJIMP.Model.FlowActionDetail();
            actionDetail1.WebsiteOwner = websiteOwner;
            actionDetail1.FlowID       = flow.AutoID;
            actionDetail1.StepID       = step1.AutoID;
            actionDetail1.StepName     = step1.StepName;
            actionDetail1.HandleUserID = currentUserInfo.UserID;
            actionDetail1.HandleDate   = DateTime.Now;
            if (!string.IsNullOrWhiteSpace(action.StartContent))
            {
                actionDetail1.HandleContent = action.StartContent;
            }
            if (requestPost.select_date.HasValue)
            {
                actionDetail1.HandleSelectDate = requestPost.select_date.Value;
            }
            if (!string.IsNullOrWhiteSpace(action.StartEx1))
            {
                actionDetail1.Ex1 = action.StartEx1;
            }
            if (!string.IsNullOrWhiteSpace(action.StartEx2))
            {
                actionDetail1.Ex2 = action.StartEx2;
            }
            if (!string.IsNullOrWhiteSpace(action.StartEx3))
            {
                actionDetail1.Ex3 = action.StartEx3;
            }

            List <BLLJIMP.Model.FlowActionFile> files = new List <BLLJIMP.Model.FlowActionFile>();

            if (!string.IsNullOrWhiteSpace(requestPost.files))
            {
                List <string> fileUrls = requestPost.files.Split(',').Where(p => !string.IsNullOrWhiteSpace(p)).ToList();
                if (fileUrls.Count > 0)
                {
                    foreach (var item in fileUrls)
                    {
                        files.Add(new BLLJIMP.Model.FlowActionFile()
                        {
                            FlowID       = flow.AutoID,
                            StepID       = step1.AutoID,
                            WebsiteOwner = websiteOwner,
                            FilePath     = item
                        });
                    }
                }
            }
            BLLTransaction tran = new BLLTransaction();
            int            rId  = Convert.ToInt32(bllFlow.AddReturnID(action, tran));

            if (rId <= 0)
            {
                tran.Rollback();
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = flow.FlowName + "失败";
                bllFlow.ContextResponse(context, apiResp);
                return;
            }
            actionDetail1.ActionID = rId;
            if (!bllFlow.Add(actionDetail1, tran))
            {
                tran.Rollback();
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = flow.FlowName + ",记录失败";
                bllFlow.ContextResponse(context, apiResp);
                return;
            }
            foreach (var item in files)
            {
                item.ActionID = rId;
                if (!bllFlow.Add(item, tran))
                {
                    tran.Rollback();
                    apiResp.code = (int)APIErrCode.OperateFail;
                    apiResp.msg  = flow.FlowName + ",保存附件失败";
                    bllFlow.ContextResponse(context, apiResp);
                    return;
                }
            }
            tran.Commit();
            apiResp.status = true;
            apiResp.code   = (int)APIErrCode.IsSuccess;
            apiResp.msg    = flow.FlowName + "提交成功";
            bllFlow.ContextResponse(context, apiResp);
        }
Example #19
0
        public void ProcessRequest(HttpContext context)
        {
            if (CurrentUserInfo.IsLock == 1)
            {
                apiResp.code = (int)APIErrCode.NoPms;
                apiResp.msg  = "账号已被锁定";
                bllUser.ContextResponse(context, apiResp);
                return;
            }
            if (CurrentUserInfo.MemberApplyStatus != 9)
            {
                apiResp.code = (int)APIErrCode.NoPms;
                apiResp.msg  = "您的账号正在审核中";
                bllUser.ContextResponse(context, apiResp);
                return;
            }
            BLLJIMP.Model.API.User.PayRegisterUser requestUser = bll.ConvertRequestToModel <BLLJIMP.Model.API.User.PayRegisterUser>(new BLLJIMP.Model.API.User.PayRegisterUser());
            string      websiteOwner = bll.WebsiteOwner;
            WebsiteInfo website      = bllUser.GetWebsiteInfoModelFromDataBase(websiteOwner);

            if (string.IsNullOrWhiteSpace(requestUser.level.ToString()))
            {
                apiResp.code = (int)APIErrCode.PrimaryKeyIncomplete;
                apiResp.msg  = "请选择会员级别";
                bll.ContextResponse(context, apiResp);
                return;
            }
            if (string.IsNullOrWhiteSpace(requestUser.phone))
            {
                apiResp.code = (int)APIErrCode.PrimaryKeyIncomplete;
                apiResp.msg  = "请输入手机号码";
                bll.ContextResponse(context, apiResp);
                return;
            }
            if (string.IsNullOrWhiteSpace(requestUser.spreadid))
            {
                apiResp.code = (int)APIErrCode.PrimaryKeyIncomplete;
                apiResp.msg  = "请输入推荐人编号";
                bll.ContextResponse(context, apiResp);
                return;
            }
            if (!ZentCloud.Common.MyRegex.PhoneNumLogicJudge(requestUser.phone))
            {
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = "手机号码格式不正确";
                bll.ContextResponse(context, apiResp);
                return;
            }
            if (!ZentCloud.Common.MyRegex.IsIDCard(requestUser.idcard))
            {
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = "身份证号码必须如实填写";
                bll.ContextResponse(context, apiResp);
                return;
            }
            UserLevelConfig levelConfig = bll.QueryUserLevel(websiteOwner, "DistributionOnLine", requestUser.level.ToString());

            if (levelConfig == null)
            {
                apiResp.code = (int)APIErrCode.IsNotFound;
                apiResp.msg  = "会员级别未找到";
                bll.ContextResponse(context, apiResp);
                return;
            }
            if (levelConfig.IsDisable == 1)
            {
                apiResp.code = (int)APIErrCode.IsNotFound;
                apiResp.msg  = "会员级别禁止注册";
                bll.ContextResponse(context, apiResp);
                return;
            }
            decimal levelAmount = Convert.ToDecimal(levelConfig.FromHistoryScore);

            if (CurrentUserInfo.TotalAmount < levelAmount)
            {
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = string.Format("您的{0}不足", website.TotalAmountShowName);
                bll.ContextResponse(context, apiResp);
                return;
            }
            UserInfo spreadUser = bllUser.GetSpreadUser(requestUser.spreadid, websiteOwner);

            if (spreadUser == null)
            {
                apiResp.code = (int)APIErrCode.IsNotFound;
                apiResp.msg  = "推荐人未找到";
                bll.ContextResponse(context, apiResp);
                return;
            }
            requestUser.spreadid = spreadUser.UserID; //推荐人
            UserInfo regUser = bllUser.GetUserInfoByPhone(requestUser.phone, websiteOwner);

            if (regUser != null && regUser.MemberLevel >= 10)
            {
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = "该手机已注册会员";
                bll.ContextResponse(context, apiResp);
                return;
            }
            if (regUser != null && regUser.MemberLevel >= requestUser.level)
            {
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = "该会员有更高级别";
                bll.ContextResponse(context, apiResp);
                return;
            }
            if (regUser == null)
            {
                regUser               = new UserInfo();
                regUser.UserID        = string.Format("ZYUser{0}{1}", DateTime.Now.ToString("yyyyMMdd"), Guid.NewGuid().ToString("N").ToUpper());
                regUser.UserType      = 2;
                regUser.WebsiteOwner  = websiteOwner;
                regUser.Regtime       = DateTime.Now;
                regUser.LastLoginDate = DateTime.Parse("1970-01-01");
            }
            regUser.TrueName          = requestUser.truename;
            regUser.DistributionOwner = requestUser.spreadid;
            regUser.Phone             = requestUser.phone;
            regUser.MemberLevel       = requestUser.level;
            regUser.MemberApplyTime   = DateTime.Now;
            regUser.MemberStartTime   = DateTime.Now;
            regUser.MemberApplyStatus = 9;
            regUser.IdentityCard      = requestUser.idcard;
            regUser.Province          = requestUser.province;
            regUser.City         = requestUser.city;
            regUser.District     = requestUser.district;
            regUser.Town         = requestUser.town;
            regUser.ProvinceCode = requestUser.provinceCode;
            regUser.CityCode     = requestUser.cityCode;
            regUser.DistrictCode = requestUser.districtCode;
            regUser.TownCode     = requestUser.townCode;
            regUser.RegIP        = context.Request.UserHostAddress;//ip
            regUser.Password     = ZentCloud.Common.Rand.Number(6);
            regUser.RegUserID    = CurrentUserInfo.UserID;
            regUser.EmptyBill    = 0;
            regUser.RegisterWay  = "余额";
            regUser.IsDisable    = 0;
            int disLevel = 1;

            if (website.DistributionLimitLevel > 1)
            {
                disLevel = website.DistributionLimitLevel;
            }

            StringBuilder     sbSql                  = new StringBuilder();
            UserInfo          upUserLevel1           = null; //分销上一级
            UserInfo          upUserLevel2           = null; //分销上二级
            UserInfo          upUserLevel3           = null; //分销上三级
            UserLevelConfig   levelConfig1           = null; //分销上一级规则
            UserLevelConfig   levelConfig2           = null; //分销上二级规则
            UserLevelConfig   levelConfig3           = null; //分销上三级规则
            ProjectCommission modelLevel1            = new ProjectCommission();
            ScoreLockInfo     scoreLockLevel1Info    = new ScoreLockInfo();
            ProjectCommission modelLevel1ex1         = new ProjectCommission();
            ScoreLockInfo     scoreLockLevel1ex1Info = new ScoreLockInfo();
            ProjectCommission modelLevel2            = new ProjectCommission();
            ScoreLockInfo     scoreLockLevel2Info    = new ScoreLockInfo();
            ProjectCommission modelLevel3            = new ProjectCommission();
            ScoreLockInfo     scoreLockLevel3Info    = new ScoreLockInfo();

            string projectId = bll.GetGUID(TransacType.PayRegisterOrder);

            //计算分佣
            bll.ComputeTransfers(disLevel, regUser, projectId, levelAmount, websiteOwner, "他人代替注册", ref sbSql, ref upUserLevel1,
                                 ref upUserLevel2, ref upUserLevel3, ref levelConfig1, ref levelConfig2, ref levelConfig3, ref modelLevel1, ref scoreLockLevel1Info,
                                 ref modelLevel1ex1, ref scoreLockLevel1ex1Info, ref modelLevel2, ref scoreLockLevel2Info, ref modelLevel3, ref scoreLockLevel3Info,
                                 levelConfig.LevelString);

            BLLTransaction tran = new BLLTransaction();

            #region 注册会员

            if (regUser.AutoID == 0)
            {
                regUser.AutoID = Convert.ToInt32(bllUser.AddReturnID(regUser, tran));
                if (regUser.AutoID <= 0)
                {
                    tran.Rollback();
                    apiResp.msg  = "注册用户出错";
                    apiResp.code = (int)APIErrCode.OperateFail;
                    bll.ContextResponse(context, apiResp);
                    return;
                }
            }
            else
            {
                if (!bllUser.Update(regUser, tran))
                {
                    tran.Rollback();
                    apiResp.msg  = "注册用户出错";
                    apiResp.code = (int)APIErrCode.OperateFail;
                    bll.ContextResponse(context, apiResp);
                    return;
                }
            }
            #endregion

            #region 消耗报单人金额

            if (bllUser.AddScoreDetail(CurrentUserInfo.UserID, websiteOwner, (double)(0 - levelAmount),
                                       string.Format("替{0}[{1}]注册{2}", regUser.TrueName, regUser.Phone, levelConfig.LevelString),
                                       "TotalAmount", (double)(CurrentUserInfo.TotalAmount - levelAmount),
                                       "", "替他人注册", "", "", (double)levelAmount, 0, regUser.UserID,
                                       tran, ex3: levelConfig.LevelNumber.ToString(), ex4: levelConfig.LevelString) <= 0)
            {
                tran.Rollback();
                apiResp.msg  = "记录明细出错";
                apiResp.code = (int)APIErrCode.OperateFail;
                bll.ContextResponse(context, apiResp);
                return;
            }

            if (bllUser.Update(CurrentUserInfo, string.Format("TotalAmount=ISNULL(TotalAmount,0)-{0},AccountAmountEstimate=ISNULL(AccountAmountEstimate,0)-{0}", levelAmount),
                               string.Format("UserID='{0}' And WebsiteOwner='{1}' And TotalAmount-{2}>=0 ",
                                             CurrentUserInfo.UserID, websiteOwner, levelAmount),
                               tran) <= 0)
            {
                tran.Rollback();
                apiResp.msg  = string.Format("消耗报单人可用{0}出错", website.TotalAmountShowName);
                apiResp.code = (int)APIErrCode.OperateFail;
                bll.ContextResponse(context, apiResp);
                return;
            }

            #endregion

            #region 注册账号余额明细
            //自己的消费记录
            if (bllUser.AddScoreDetail(regUser.UserID, websiteOwner, (double)(levelAmount),
                                       string.Format("{0}[{1}]转入", CurrentUserInfo.TrueName, CurrentUserInfo.Phone, (double)levelAmount),
                                       "TotalAmount", (double)(levelAmount),
                                       "", "他人注册转入", "", "", (double)levelAmount, 0, CurrentUserInfo.UserID,
                                       tran, ex3: levelConfig.LevelNumber.ToString(), ex4: levelConfig.LevelString) <= 0)
            {
                tran.Rollback();
                apiResp.msg  = "他人注册转入记录出错";
                apiResp.code = (int)APIErrCode.OperateFail;
                bll.ContextResponse(context, apiResp);
                return;
            }
            int mainDetailId = bllUser.AddScoreDetail(regUser.UserID, websiteOwner, (double)(0 - levelAmount),
                                                      string.Format("{0}[{1}]替您注册{2}", CurrentUserInfo.TrueName, CurrentUserInfo.Phone, levelConfig.LevelString),
                                                      "TotalAmount", 0,
                                                      "", "他人代替注册", "", "", (double)levelAmount, 0, CurrentUserInfo.UserID,
                                                      tran, ex3: levelConfig.LevelNumber.ToString(), ex4: levelConfig.LevelString);
            if (mainDetailId <= 0)
            {
                tran.Rollback();
                apiResp.msg  = "他人注册记录出错";
                apiResp.code = (int)APIErrCode.OperateFail;
                bll.ContextResponse(context, apiResp);
                return;
            }
            #endregion
            bool hasProjectCommission = false;
            #region 记录分佣信息
            if (modelLevel1.Amount > 0)
            {
                hasProjectCommission = true;
                int modelLevel1Id = Convert.ToInt32(bll.AddReturnID(modelLevel1, tran));
                if (modelLevel1Id <= 0)
                {
                    tran.Rollback();
                    apiResp.msg  = "一级返利失败";
                    apiResp.code = (int)APIErrCode.OperateFail;
                    bll.ContextResponse(context, apiResp);
                    return;
                }
                scoreLockLevel1Info.ForeignkeyId2 = modelLevel1Id.ToString();
                scoreLockLevel1Info.AutoId        = Convert.ToInt32(bll.AddReturnID(scoreLockLevel1Info, tran));
                if (scoreLockLevel1Info.AutoId <= 0)
                {
                    tran.Rollback();
                    apiResp.msg  = "一级返利冻结失败";
                    apiResp.code = (int)APIErrCode.OperateFail;
                    bll.ContextResponse(context, apiResp);
                    return;
                }
                string scoreDetailEvent = modelLevel1.ProjectName.Contains("购房补助") ? "返购房补助" : "返利";
                if (bllUser.AddScoreDetail(scoreLockLevel1Info.UserId, websiteOwner, (double)scoreLockLevel1Info.Score,
                                           scoreLockLevel1Info.Memo, "TotalAmount", (double)(upUserLevel1.TotalAmount + scoreLockLevel1Info.Score),
                                           scoreLockLevel1Info.AutoId.ToString(), scoreDetailEvent, "", projectId, (double)modelLevel1.SourceAmount, (double)modelLevel1.DeductAmount,
                                           modelLevel1.CommissionUserId,
                                           tran, ex3: levelConfig.LevelNumber.ToString(), ex4: levelConfig.LevelString,
                                           ex5: modelLevel1.CommissionLevel) <= 0)
                {
                    tran.Rollback();
                    apiResp.msg  = "一级返利明细记录失败";
                    apiResp.code = (int)APIErrCode.OperateFail;
                    bll.ContextResponse(context, apiResp);
                    return;
                }
            }
            if (modelLevel1ex1.Amount > 0)
            {
                hasProjectCommission = true;
                int modelLevel1ex1Id = Convert.ToInt32(bll.AddReturnID(modelLevel1ex1, tran));
                if (modelLevel1ex1Id <= 0)
                {
                    tran.Rollback();
                    apiResp.msg  = "一级返购房补助失败";
                    apiResp.code = (int)APIErrCode.OperateFail;
                    bll.ContextResponse(context, apiResp);
                    return;
                }
                scoreLockLevel1ex1Info.ForeignkeyId2 = modelLevel1ex1Id.ToString();

                scoreLockLevel1ex1Info.AutoId = Convert.ToInt32(bll.AddReturnID(scoreLockLevel1ex1Info, tran));
                if (scoreLockLevel1ex1Info.AutoId <= 0)
                {
                    tran.Rollback();
                    apiResp.msg  = "一级返购房补助冻结失败";
                    apiResp.code = (int)APIErrCode.OperateFail;
                    bll.ContextResponse(context, apiResp);
                    return;
                }
                string scoreDetailEvent = modelLevel1ex1.ProjectName.Contains("购房补助") ? "返购房补助" : "返利";
                if (bllUser.AddScoreDetail(scoreLockLevel1ex1Info.UserId, websiteOwner, (double)scoreLockLevel1ex1Info.Score,
                                           scoreLockLevel1ex1Info.Memo, "TotalAmount", (double)(upUserLevel1.TotalAmount + scoreLockLevel1ex1Info.Score),
                                           scoreLockLevel1ex1Info.AutoId.ToString(), scoreDetailEvent, "", projectId, (double)modelLevel1ex1.SourceAmount, (double)modelLevel1ex1.DeductAmount,
                                           modelLevel1ex1.CommissionUserId,
                                           tran, ex3: levelConfig.LevelNumber.ToString(), ex4: levelConfig.LevelString,
                                           ex5: modelLevel1ex1.CommissionLevel) <= 0)
                {
                    tran.Rollback();
                    apiResp.msg  = "一级返购房补助明细记录失败";
                    apiResp.code = (int)APIErrCode.OperateFail;
                    bll.ContextResponse(context, apiResp);
                    return;
                }
            }
            if (modelLevel2.Amount > 0)
            {
                hasProjectCommission = true;
                int modelLevel2Id = Convert.ToInt32(bll.AddReturnID(modelLevel2, tran));
                if (modelLevel2Id <= 0)
                {
                    tran.Rollback();
                    apiResp.msg  = "二级返利失败";
                    apiResp.code = (int)APIErrCode.OperateFail;
                    bll.ContextResponse(context, apiResp);
                    return;
                }
                scoreLockLevel2Info.ForeignkeyId2 = modelLevel2Id.ToString();

                scoreLockLevel2Info.AutoId = Convert.ToInt32(bll.AddReturnID(scoreLockLevel2Info, tran));
                if (scoreLockLevel2Info.AutoId <= 0)
                {
                    tran.Rollback();
                    apiResp.msg  = "二级返利冻结失败";
                    apiResp.code = (int)APIErrCode.OperateFail;
                    bll.ContextResponse(context, apiResp);
                    return;
                }
                string scoreDetailEvent = modelLevel2.ProjectName.Contains("购房补助") ? "返购房补助" : "返利";
                if (bllUser.AddScoreDetail(scoreLockLevel2Info.UserId, websiteOwner, (double)scoreLockLevel2Info.Score,
                                           scoreLockLevel2Info.Memo, "TotalAmount", (double)(upUserLevel2.TotalAmount + scoreLockLevel2Info.Score),
                                           scoreLockLevel2Info.AutoId.ToString(), scoreDetailEvent, "", projectId, (double)modelLevel2.SourceAmount, (double)modelLevel2.DeductAmount,
                                           modelLevel2.CommissionUserId,
                                           tran, ex3: levelConfig.LevelNumber.ToString(), ex4: levelConfig.LevelString,
                                           ex5: modelLevel2.CommissionLevel) <= 0)
                {
                    tran.Rollback();
                    apiResp.msg  = "二级返利明细记录失败";
                    apiResp.code = (int)APIErrCode.OperateFail;
                    bll.ContextResponse(context, apiResp);
                    return;
                }
            }
            if (modelLevel3.Amount > 0)
            {
                hasProjectCommission = true;
                int modelLevel3Id = Convert.ToInt32(bll.AddReturnID(modelLevel3, tran));
                if (!bll.Add(modelLevel3, tran))
                {
                    tran.Rollback();
                    apiResp.msg  = "三级返利失败";
                    apiResp.code = (int)APIErrCode.OperateFail;
                    bll.ContextResponse(context, apiResp);
                    return;
                }
                scoreLockLevel3Info.ForeignkeyId2 = modelLevel3Id.ToString();
                scoreLockLevel3Info.AutoId        = Convert.ToInt32(bll.AddReturnID(scoreLockLevel3Info, tran));
                if (scoreLockLevel3Info.AutoId <= 0)
                {
                    tran.Rollback();
                    apiResp.msg  = "三级返利冻结失败";
                    apiResp.code = (int)APIErrCode.OperateFail;
                    bll.ContextResponse(context, apiResp);
                    return;
                }
                string scoreDetailEvent = modelLevel3.ProjectName.Contains("购房补助") ? "返购房补助" : "返利";
                if (bllUser.AddScoreDetail(scoreLockLevel3Info.UserId, websiteOwner, (double)scoreLockLevel3Info.Score,
                                           scoreLockLevel3Info.Memo, "TotalAmount", (double)(upUserLevel3.TotalAmount + scoreLockLevel3Info.Score),
                                           scoreLockLevel3Info.AutoId.ToString(), scoreDetailEvent, "", projectId, (double)modelLevel3.SourceAmount, (double)modelLevel3.DeductAmount,
                                           modelLevel3.CommissionUserId,
                                           tran, ex3: levelConfig.LevelNumber.ToString(), ex4: levelConfig.LevelString,
                                           ex5: modelLevel3.CommissionLevel) <= 0)
                {
                    tran.Rollback();
                    apiResp.msg  = "三级返利明细记录失败";
                    apiResp.code = (int)APIErrCode.OperateFail;
                    bll.ContextResponse(context, apiResp);
                    return;
                }
            }
            if (hasProjectCommission)
            {
                if (BLLBase.ExecuteSql(sbSql.ToString(), tran) <= 0)
                {
                    tran.Rollback();
                    apiResp.msg  = string.Format("更新分佣账面{0}出错", website.TotalAmountShowName);
                    apiResp.code = (int)APIErrCode.OperateFail;
                    bll.ContextResponse(context, apiResp);
                    return;
                }
            }
            #endregion

            #region 记录业绩明细
            TeamPerformanceDetails perDetail = new TeamPerformanceDetails();
            perDetail.AddType           = "注册";
            perDetail.AddNote           = "注册" + levelConfig.LevelString;
            perDetail.AddTime           = DateTime.Now;
            perDetail.DistributionOwner = regUser.DistributionOwner;
            perDetail.UserId            = regUser.UserID;
            perDetail.UserName          = regUser.TrueName;
            perDetail.UserPhone         = regUser.Phone;
            perDetail.Performance       = levelAmount;
            string yearMonthString = perDetail.AddTime.ToString("yyyyMM");
            int    yearMonth       = Convert.ToInt32(yearMonthString);
            perDetail.YearMonth    = yearMonth;
            perDetail.WebsiteOwner = websiteOwner;

            if (!bllUser.Add(perDetail, tran))
            {
                tran.Rollback();
                apiResp.msg  = "记录业绩明细失败";
                apiResp.code = (int)APIErrCode.OperateFail;
                bll.ContextResponse(context, apiResp);
                return;
            }
            #endregion

            tran.Commit();

            if (hasProjectCommission)
            {
                //异步修改积分明细表
                Thread th1 = new Thread(delegate()
                {
                    //计算相关业绩
                    bll.BuildCurMonthPerformanceByUserID(websiteOwner, regUser.UserID);
                });
                th1.Start();
            }
            string msg = "";

            #region 短信发送密码
            BLLSMS bllSms    = new BLLSMS("");
            bool   smsBool   = false;
            string smsString = string.Format("恭喜您成功注册为天下华商月供宝:{1},您的初始密码为:{0}。您可关注公众号:songhetz,登录账户修改密码,并设置支付密码。", regUser.Password, levelConfig.LevelString);
            bllSms.SendSmsMisson(regUser.Phone, smsString, "", website.SmsSignature, out smsBool, out msg);
            #endregion

            if (string.IsNullOrWhiteSpace(msg))
            {
                msg = "注册成功";
            }
            apiResp.msg    = msg;
            apiResp.code   = (int)APIErrCode.IsSuccess;
            apiResp.status = true;
            apiResp.result = new
            {
                password = regUser.Password
            };
            bll.ContextResponse(context, apiResp);
        }
Example #20
0
        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            string       data = context.Request["data"];
            RequestModel requestModel;

            try
            {
                requestModel = ZentCloud.Common.JSONHelper.JsonToModel <RequestModel>(context.Request["data"]);
            }
            catch (Exception)
            {
                resp.errcode = -1;
                resp.errmsg  = "json格式错误,请检查";
                context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
                return;
            }
            if (requestModel.level_id <= 0)
            {
                resp.errmsg  = "level_id参数必填,请检查";
                resp.errcode = 1;
                context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
                return;
            }
            if (requestModel.level_number <= 0)
            {
                resp.errmsg  = "level_number参数必填,请检查";
                resp.errcode = 1;
                context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
                return;
            }
            if (string.IsNullOrEmpty(requestModel.level_string))
            {
                resp.errmsg  = "requestModel参数必填,请检查";
                resp.errcode = 1;
                context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
                return;
            }
            if (string.IsNullOrEmpty(requestModel.level_icon))
            {
                resp.errmsg  = "level_icon参数必填,请检查";
                resp.errcode = 1;
                context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
                return;
            }
            if (requestModel.level_fromhistory_score <= 0)
            {
                resp.errmsg  = "level_fromhistory_score参数必填,请检查";
                resp.errcode = 1;
                context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
                return;
            }
            if (requestModel.level_tohistory_score <= 0)
            {
                resp.errmsg  = "level_tohistory_score参数必填,请检查";
                resp.errcode = 1;
                context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
                return;
            }
            UserLevelConfig userlevel = bll.Get <UserLevelConfig>(string.Format(" WebsiteOwner='{0}' and AutoID={1}", bll.WebsiteOwner, requestModel.level_id));

            if (userlevel == null)
            {
                resp.errcode = -1;
                resp.errmsg  = "用户等级对象不存在";
                context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
                return;
            }
            userlevel.LevelNumber      = requestModel.level_number;
            userlevel.LevelString      = requestModel.level_string;
            userlevel.LevelIcon        = requestModel.level_icon;
            userlevel.FromHistoryScore = requestModel.level_fromhistory_score;
            userlevel.ToHistoryScore   = requestModel.level_tohistory_score;
            if (bll.Update(userlevel))
            {
                resp.errcode   = 0;
                resp.errmsg    = "ok";
                resp.isSuccess = true;
            }
            else
            {
                resp.errcode = -1;
                resp.errmsg  = "修改用户等级出错";
            }
            context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
            return;
        }
Example #21
0
        public void ProcessRequest(HttpContext context)
        {
            BLLJIMP.Model.API.User.PayRegisterUser requestUser = bll.ConvertRequestToModel <BLLJIMP.Model.API.User.PayRegisterUser>(new BLLJIMP.Model.API.User.PayRegisterUser());
            string websiteOwner = bll.WebsiteOwner;

            if (context.Session["currWXOpenId"] == null)
            {
                apiResp.code = (int)APIErrCode.PrimaryKeyIncomplete;
                apiResp.msg  = "仅支持微信注册";
                bll.ContextResponse(context, apiResp);
                return;
            }
            if (string.IsNullOrWhiteSpace(requestUser.spreadid))
            {
                apiResp.code = (int)APIErrCode.PrimaryKeyIncomplete;
                apiResp.msg  = "请输入推荐人编号";
                bll.ContextResponse(context, apiResp);
                return;
            }
            string currWXOpenId = context.Session["currWXOpenId"].ToString();

            if (string.IsNullOrWhiteSpace(requestUser.level.ToString()))
            {
                apiResp.code = (int)APIErrCode.PrimaryKeyIncomplete;
                apiResp.msg  = "请选择会员级别";
                bll.ContextResponse(context, apiResp);
                return;
            }

            if (string.IsNullOrWhiteSpace(requestUser.phone))
            {
                apiResp.code = (int)APIErrCode.PrimaryKeyIncomplete;
                apiResp.msg  = "请输入手机号码";
                bll.ContextResponse(context, apiResp);
                return;
            }
            if (!ZentCloud.Common.MyRegex.PhoneNumLogicJudge(requestUser.phone))
            {
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = "手机号码格式不正确";
                bll.ContextResponse(context, apiResp);
                return;
            }
            if (!ZentCloud.Common.MyRegex.IsIDCard(requestUser.idcard))
            {
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = "身份证号码必须如实填写";
                bll.ContextResponse(context, apiResp);
                return;
            }
            UserLevelConfig levelConfig = bll.QueryUserLevel(websiteOwner, "DistributionOnLine", requestUser.level.ToString());

            if (levelConfig == null)
            {
                apiResp.code = (int)APIErrCode.IsNotFound;
                apiResp.msg  = "会员级别未找到";
                bll.ContextResponse(context, apiResp);
                return;
            }
            if (levelConfig.IsDisable == 1)
            {
                apiResp.code = (int)APIErrCode.IsNotFound;
                apiResp.msg  = "会员级别禁止注册";
                bll.ContextResponse(context, apiResp);
                return;
            }
            requestUser.levelname = levelConfig.LevelString;
            UserInfo spreadUser = spreadUser = bllUser.GetSpreadUser(requestUser.spreadid, websiteOwner);

            if (spreadUser == null)
            {
                apiResp.code = (int)APIErrCode.IsNotFound;
                apiResp.msg  = "推荐人未找到";
                bll.ContextResponse(context, apiResp);
                return;
            }
            requestUser.spreadid = spreadUser.UserID; //推荐人
            UserInfo oldUserInfo = bllUser.GetUserInfoByPhone(requestUser.phone, websiteOwner);

            if (oldUserInfo != null && oldUserInfo.MemberLevel >= 10)
            {
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = "该手机已注册会员";
                bll.ContextResponse(context, apiResp);
                return;
            }
            if (oldUserInfo != null && oldUserInfo.MemberLevel > requestUser.level)
            {
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = "该会员有更高级别";
                bll.ContextResponse(context, apiResp);
                return;
            }

            PayConfig payConfig = bllPay.GetPayConfig();

            if (payConfig == null || string.IsNullOrEmpty(payConfig.WXAppId) || string.IsNullOrEmpty(payConfig.WXMCH_ID) || string.IsNullOrEmpty(payConfig.WXPartnerKey))
            {
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = "该商户微信支付还没有配置";
                bll.ContextResponse(context, apiResp);
                return;
            }
            if (oldUserInfo != null)
            {
                requestUser.userid = oldUserInfo.UserID;
            }
            else
            {
                requestUser.userid = string.Format("ZYUser{0}{1}", DateTime.Now.ToString("yyyyMMdd"), Guid.NewGuid().ToString("N").ToUpper());
            }
            requestUser.regIP    = context.Request.UserHostAddress;//ip
            requestUser.password = ZentCloud.Common.Rand.Number(6);

            OrderPay orderPay = new OrderPay();

            orderPay.OrderId      = bll.GetGUID(TransacType.PayRegisterOrder);
            orderPay.InsertDate   = DateTime.Now;
            orderPay.Subject      = "支付注册会员";
            orderPay.Total_Fee    = Convert.ToDecimal(levelConfig.FromHistoryScore);
            orderPay.Type         = "5";
            orderPay.WebsiteOwner = websiteOwner;
            orderPay.UserId       = requestUser.userid;
            orderPay.Ex1          = JsonConvert.SerializeObject(requestUser);
            orderPay.Ex2          = requestUser.phone;
            if (!bll.Add(orderPay))
            {
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = "生成支付订单失败";
                bll.ContextResponse(context, apiResp);
                return;
            }

            string appId     = payConfig.WXAppId;                                                                             //微信AppId
            string mchId     = payConfig.WXMCH_ID;                                                                            //商户号
            string key       = payConfig.WXPartnerKey;                                                                        //api密钥
            string openId    = currWXOpenId;                                                                                  //openid
            string notifyUrl = string.Format("http://{0}/WxPayNotify/PayRegisterNotify.aspx", context.Request.Url.Authority); //支付注册通知地址
            string body      = "";                                                                                            //订单内容

            string payReqStr = bllPay.GetBrandWcPayRequest(orderPay.OrderId, orderPay.Total_Fee, appId, mchId, key, openId, requestUser.regIP, notifyUrl, body);

            BllPay.WXPayReq payReqModel = ZentCloud.Common.JSONHelper.JsonToModel <BllPay.WXPayReq>(payReqStr);
            if (string.IsNullOrEmpty(payReqModel.paySign))
            {
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = "构造支付信息失败";
                bll.ContextResponse(context, apiResp);
                return;
            }

            apiResp.code   = (int)APIErrCode.IsSuccess;
            apiResp.status = true;
            apiResp.result = new
            {
                pay_req = payReqModel
            };
            bllUser.ContextResponse(context, apiResp);
        }