Пример #1
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);
        }
Пример #2
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);
        }
Пример #3
0
        public void ProcessRequest(HttpContext context)
        {
            BLLUser         userBll = new BLLUser();
            BLLSMS          smsBll  = new BLLSMS("");
            BLLDistribution bllDist = new BLLDistribution();

            try
            {
                var phone    = context.Request["phone"];
                var code     = context.Request["code"];
                var password = context.Request["password"];

                string openId = "";
                if (context.Session["currWXOpenId"] != null)
                {
                    openId = context.Session["currWXOpenId"].ToString();
                }

                //if (string.IsNullOrWhiteSpace(openId))
                //{
                //    apiResp.status = false;
                //    apiResp.code = (int)BLLJIMP.Enums.APIErrCode.PrimaryKeyIncomplete;
                //    apiResp.msg = "找不到微信OpenId";
                //    userBll.ContextResponse(context, apiResp);
                //    return;
                //}

                phone    = phone.Trim();
                code     = code.Trim();
                password = password.Trim();

                if (string.IsNullOrWhiteSpace(phone) || string.IsNullOrWhiteSpace(code))
                {
                    apiResp.status = false;
                    apiResp.code   = (int)BLLJIMP.Enums.APIErrCode.PrimaryKeyIncomplete;
                    apiResp.msg    = "手机以及验证码必传";
                    userBll.ContextResponse(context, apiResp);
                    return;
                }


                if (!ZentCloud.Common.MyRegex.PhoneNumLogicJudge(phone))
                {
                    apiResp.status = false;
                    apiResp.code   = (int)BLLJIMP.Enums.APIErrCode.PrimaryKeyIncomplete;
                    apiResp.msg    = "手机号码格式不正确";
                    userBll.ContextResponse(context, apiResp);
                    return;
                }

                var vCode = smsBll.GetLastSmsVerificationCode(phone);

                if (vCode == null)
                {
                    apiResp.status = false;
                    apiResp.code   = (int)BLLJIMP.Enums.APIErrCode.PrimaryKeyIncomplete;
                    apiResp.msg    = "无效验证码";
                    userBll.ContextResponse(context, apiResp);
                    return;
                }

                if (vCode.VerificationCode != code)
                {
                    apiResp.status = false;
                    apiResp.code   = (int)BLLJIMP.Enums.APIErrCode.PrimaryKeyIncomplete;
                    apiResp.msg    = "无效验证码";
                    userBll.ContextResponse(context, apiResp);
                    return;
                }

                UserInfo phoneUser  = userBll.GetUserInfoByPhone(phone);
                UserInfo openIdUser = null;
                if (!string.IsNullOrWhiteSpace(openId))
                {
                    openIdUser = userBll.GetUserInfoByOpenId(openId);
                }

                #region phoneUser != null
                if (phoneUser != null)
                {
                    if (openIdUser == null && string.IsNullOrWhiteSpace(phoneUser.WXOpenId) && !string.IsNullOrWhiteSpace(openId))
                    {
                        StringBuilder sbSQL = new StringBuilder();
                        sbSQL.AppendFormat(" WXOpenId = '{0}' ", openId);
                        if (!string.IsNullOrWhiteSpace(password))
                        {
                            sbSQL.AppendFormat(",Password = '******' ", password);
                        }
                        //绑定openid到手机号账户上
                        if (userBll.Update(phoneUser, sbSQL.ToString(), string.Format(" AutoID = {0} ", phoneUser.AutoID)) > 0)
                        {
                            //设置登陆状态成功
                            //设置用户会话ID
                            context.Session[ZentCloud.Common.SessionKey.UserID]     = phoneUser.UserID;
                            context.Session[ZentCloud.Common.SessionKey.LoginStatu] = 1; //设置登录状态

                            apiResp.status = true;
                            apiResp.code   = (int)BLLJIMP.Enums.APIErrCode.IsSuccess;
                            apiResp.msg    = "绑定成功";
                            userBll.ContextResponse(context, apiResp);

                            bllDist.SetUserDistributionOwnerByTemp(phoneUser.UserID, phoneUser.WebsiteOwner);

                            return;
                        }
                        else
                        {
                            apiResp.status = false;
                            apiResp.code   = (int)BLLJIMP.Enums.APIErrCode.OperateFail;
                            apiResp.msg    = "绑定失败";
                            userBll.ContextResponse(context, apiResp);
                            return;
                        }
                    }
                    else if (!string.IsNullOrWhiteSpace(password))
                    {
                        if (userBll.Update(phoneUser, string.Format(" Password = {0} ", password), string.Format(" AutoID = {0} ", phoneUser.AutoID)) > 0)
                        {
                            //设置登陆状态成功
                            //设置用户会话ID
                            context.Session[ZentCloud.Common.SessionKey.UserID]     = phoneUser.UserID;
                            context.Session[ZentCloud.Common.SessionKey.LoginStatu] = 1; //设置登录状态

                            apiResp.status = true;
                            apiResp.code   = (int)BLLJIMP.Enums.APIErrCode.IsSuccess;
                            apiResp.msg    = "登录成功";
                            userBll.ContextResponse(context, apiResp);
                            return;
                        }
                        else
                        {
                            apiResp.status = false;
                            apiResp.code   = (int)BLLJIMP.Enums.APIErrCode.OperateFail;
                            apiResp.msg    = "注册失败";
                            userBll.ContextResponse(context, apiResp);
                            return;
                        }
                    }
                    else
                    {
                        //设置登陆状态成功
                        //设置用户会话ID
                        context.Session[ZentCloud.Common.SessionKey.UserID]     = phoneUser.UserID;
                        context.Session[ZentCloud.Common.SessionKey.LoginStatu] = 1; //设置登录状态

                        apiResp.status = true;
                        apiResp.code   = (int)BLLJIMP.Enums.APIErrCode.IsSuccess;
                        apiResp.msg    = "登录成功";
                        userBll.ContextResponse(context, apiResp);
                        return;
                    }
                }
                #endregion

                if (openIdUser == null)
                {
                    //构造新用户
                    var currentUserInfo = new ZentCloud.BLLJIMP.Model.UserInfo();
                    currentUserInfo.UserID = string.Format("WXUser{0}", Guid.NewGuid().ToString());//Guid
                    if (!string.IsNullOrWhiteSpace(password))
                    {
                        currentUserInfo.Password = password;
                    }
                    else
                    {
                        currentUserInfo.Password = ZentCloud.Common.Rand.Str_char(6);
                    }
                    currentUserInfo.UserType     = 2;
                    currentUserInfo.WebsiteOwner = userBll.WebsiteOwner;
                    currentUserInfo.Regtime      = DateTime.Now;
                    if (!string.IsNullOrWhiteSpace(openId))
                    {
                        currentUserInfo.WXOpenId = openId;
                    }
                    currentUserInfo.RegIP           = ZentCloud.Common.MySpider.GetClientIP();
                    currentUserInfo.LastLoginIP     = ZentCloud.Common.MySpider.GetClientIP();
                    currentUserInfo.LastLoginDate   = DateTime.Now;
                    currentUserInfo.LoginTotalCount = 1;
                    currentUserInfo.Phone           = phone;

                    if (userBll.Add(currentUserInfo))
                    {
                        //设置登陆状态成功
                        //设置用户会话ID
                        context.Session[ZentCloud.Common.SessionKey.UserID]     = currentUserInfo.UserID;
                        context.Session[ZentCloud.Common.SessionKey.LoginStatu] = 1; //设置登录状态

                        apiResp.status = true;
                        apiResp.code   = (int)BLLJIMP.Enums.APIErrCode.IsSuccess;
                        apiResp.msg    = "注册成功";
                        userBll.ContextResponse(context, apiResp);

                        bllDist.SetUserDistributionOwnerByTemp(currentUserInfo.UserID, currentUserInfo.WebsiteOwner);

                        return;
                    }
                    else
                    {
                        apiResp.status = false;
                        apiResp.code   = (int)BLLJIMP.Enums.APIErrCode.OperateFail;
                        apiResp.msg    = "注册失败";
                        userBll.ContextResponse(context, apiResp);
                        return;
                    }
                }
                else
                {
                    apiResp.status = false;
                    apiResp.code   = (int)BLLJIMP.Enums.APIErrCode.OperateFail;
                    apiResp.msg    = "该微信已绑定其他账号";
                    userBll.ContextResponse(context, apiResp);
                    return;

                    StringBuilder sbSQL1 = new StringBuilder();
                    sbSQL1.AppendFormat(" Phone = '{0}' ", phone);
                    if (!string.IsNullOrWhiteSpace(password))
                    {
                        sbSQL1.AppendFormat(",Password = '******' ", password);
                    }
                    openIdUser.Phone = phone;
                    if (userBll.Update(openIdUser, sbSQL1.ToString(), string.Format(" AutoID = {0} ", openIdUser.AutoID)) > 0)
                    {
                        //设置登陆状态成功
                        //设置用户会话ID
                        context.Session[ZentCloud.Common.SessionKey.UserID]     = openIdUser.UserID;
                        context.Session[ZentCloud.Common.SessionKey.LoginStatu] = 1; //设置登录状态

                        apiResp.status = true;
                        apiResp.code   = (int)BLLJIMP.Enums.APIErrCode.IsSuccess;
                        apiResp.msg    = "绑定成功";
                        userBll.ContextResponse(context, apiResp);

                        bllDist.SetUserDistributionOwnerByTemp(openIdUser.UserID, openIdUser.WebsiteOwner);
                        return;
                    }
                    else
                    {
                        apiResp.status = false;
                        apiResp.code   = (int)BLLJIMP.Enums.APIErrCode.OperateFail;
                        apiResp.msg    = "绑定失败";
                        userBll.ContextResponse(context, apiResp);
                        return;
                    }
                }
            }
            catch (Exception ex)
            {
                apiResp.status = false;
                apiResp.code   = (int)BLLJIMP.Enums.APIErrCode.OperateFail;
                apiResp.msg    = "绑定失败:" + ex.Message;
                userBll.ContextResponse(context, apiResp);
                return;
            }
        }
Пример #4
0
        public void ProcessRequest(HttpContext context)
        {
            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 (!string.IsNullOrEmpty(requestModel.ver_code))
            {
                if (requestModel.ver_code != context.Session["CheckCode"].ToString().ToLower())
                {
                    resp.errcode = -1;
                    resp.errmsg  = "验证码错误";
                    context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
                    return;
                }
            }

            UserInfo      userInfo = bll.GetCurrentUserInfo();
            StringBuilder sbPar    = new StringBuilder();
            StringBuilder sbRemark = new StringBuilder("修改会员信息:");

            if (string.IsNullOrWhiteSpace(requestModel.action))
            {
                //默认信息处理方式
                if (!string.IsNullOrEmpty(requestModel.truename))
                {
                    sbPar.AppendFormat(" TrueName='{0}',", requestModel.truename);
                    sbRemark.AppendFormat(" 姓名[{0}-{1}]", userInfo.TrueName, requestModel.truename);
                }
                if (!string.IsNullOrEmpty(requestModel.company))
                {
                    sbPar.AppendFormat(" Company='{0}',", requestModel.company);
                    sbRemark.AppendFormat(" 公司[{0}-{1}]", userInfo.Company, requestModel.company);
                }
                if (!string.IsNullOrEmpty(requestModel.postion))
                {
                    sbPar.AppendFormat(" Postion='{0}',", requestModel.postion);
                    sbRemark.AppendFormat(" 职位[{0}-{1}]", userInfo.Postion, requestModel.postion);
                }
                if (!string.IsNullOrEmpty(requestModel.phone) && requestModel.phone != userInfo.Phone)
                {
                    #region 手机变更进行检查
                    if (!ZentCloud.Common.MyRegex.PhoneNumLogicJudge(requestModel.phone))
                    {
                        resp.errcode = (int)BLLJIMP.Enums.APIErrCode.PhoneFormatError;
                        resp.errmsg  = "手机号码格式出错";
                        context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
                        return;
                    }
                    if (requestModel.check_code == 1)
                    {
                        #region 判断验证码是否正确
                        if (bll.GetUserInfoByPhone(requestModel.phone) != null)
                        {
                            resp.errcode = (int)BLLJIMP.Enums.APIErrCode.IsRepeat;
                            resp.errmsg  = "手机已存在";
                            context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
                            return;
                        }
                        if (string.IsNullOrEmpty(requestModel.code))
                        {
                            resp.errmsg  = "请填写验证码";
                            resp.errcode = (int)BLLJIMP.Enums.APIErrCode.IsNotFound;
                            context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
                            return;
                        }
                        BLLSMS bllSms           = new BLLSMS("");
                        SmsVerificationCode sms = bllSms.GetLastSmsVerificationCode(requestModel.phone);
                        if (sms.VerificationCode != requestModel.code)
                        {
                            resp.errmsg  = "验证码错误";
                            resp.errcode = (int)BLLJIMP.Enums.APIErrCode.CheckCodeErr;
                            context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
                            return;
                        }
                        #endregion
                    }
                    #endregion
                    sbPar.AppendFormat(" Phone='{0}',", requestModel.phone);
                    sbRemark.AppendFormat(" 手机号[{0}-{1}]", userInfo.Phone, requestModel.phone);
                }
                if (!string.IsNullOrEmpty(requestModel.email))
                {
                    sbPar.AppendFormat(" Email='{0}',", requestModel.email);
                    sbRemark.AppendFormat(" 邮箱[{0}-{1}]", userInfo.Email, requestModel.email);
                }
                if (!string.IsNullOrEmpty(requestModel.ex1))
                {
                    sbPar.AppendFormat(" Ex1='{0}',", requestModel.ex1);
                }
                if (!string.IsNullOrEmpty(requestModel.ex2))
                {
                    sbPar.AppendFormat(" Ex2='{0}',", requestModel.ex2);
                }
                if (!string.IsNullOrEmpty(requestModel.district))
                {
                    sbPar.AppendFormat(" District='{0}',", requestModel.district);
                }
                if (!string.IsNullOrEmpty(requestModel.nickname))
                {
                    sbPar.AppendFormat(" WXNickname='{0}',", requestModel.nickname);
                    sbRemark.AppendFormat(" 昵称[{0}-{1}]", userInfo.WXNickname, requestModel.nickname);
                }
                if (!string.IsNullOrEmpty(requestModel.gender))
                {
                    sbPar.AppendFormat(" Gender='{0}',", requestModel.gender);
                    string oG = "";
                    if (userInfo.Gender == "1")
                    {
                        oG = "男";
                    }
                    else if (userInfo.Gender == "0")
                    {
                        oG = "女";
                    }
                    string nG = "";
                    if (requestModel.gender == "1")
                    {
                        nG = "男";
                    }
                    else if (requestModel.gender == "0")
                    {
                        nG = "女";
                    }
                    sbRemark.AppendFormat(" 性别[{0}-{1}]", oG, nG);
                }
                if (!string.IsNullOrEmpty(requestModel.birthday.ToString()))
                {
                    sbPar.AppendFormat(" BirthDay='{0}',", bll.GetTime(requestModel.birthday).ToString());
                }
                if (!string.IsNullOrEmpty(requestModel.identification))
                {
                    sbPar.AppendFormat(" Ex5='{0}',", requestModel.identification);
                }
                if (requestModel.describe != null)
                {
                    sbPar.AppendFormat(" Description='{0}',", ZentCloud.Common.StringHelper.GetReplaceStr(requestModel.describe));
                }
                if (!string.IsNullOrEmpty(requestModel.province))
                {
                    sbPar.AppendFormat(" Province='{0}',", requestModel.province);
                }
                if (!string.IsNullOrEmpty(requestModel.city))
                {
                    sbPar.AppendFormat(" City='{0}',", requestModel.city);
                }
                if (requestModel.salary >= 0)
                {
                    sbPar.AppendFormat(" Salary={0},", requestModel.salary);
                }
                if (!string.IsNullOrEmpty(requestModel.ex3))
                {
                    sbPar.AppendFormat(" Ex3='{0}',", requestModel.ex3);
                }
                if (!string.IsNullOrEmpty(requestModel.ex4))
                {
                    sbPar.AppendFormat(" Ex4='{0}',", requestModel.ex4);
                }
                if (!string.IsNullOrEmpty(requestModel.avatar))
                {
                    sbPar.AppendFormat(" Avatar='{0}',", requestModel.avatar);
                    sbRemark.AppendFormat(" 头像[{0}-{1}]", userInfo.Avatar, requestModel.avatar);
                }
                if (!string.IsNullOrEmpty(requestModel.identity_card_photo_front))
                {
                    sbPar.AppendFormat(" IdentityCardPhotoFront='{0}',", requestModel.identity_card_photo_front);
                    sbRemark.AppendFormat(" 身份证正面[{0}-{1}]", userInfo.IdentityCardPhotoFront, requestModel.identity_card_photo_front);
                }
                if (!string.IsNullOrEmpty(requestModel.identity_card_photo_behind))
                {
                    sbPar.AppendFormat(" IdentityCardPhotoBehind='{0}',", requestModel.identity_card_photo_behind);
                    sbRemark.AppendFormat(" 身份证反面[{0}-{1}]", userInfo.IdentityCardPhotoBehind, requestModel.identity_card_photo_behind);
                }
                if (!string.IsNullOrEmpty(requestModel.identity_card_photo_handheld))
                {
                    sbPar.AppendFormat(" IdentityCardPhotoHandheld='{0}',", requestModel.identity_card_photo_handheld);
                    sbRemark.AppendFormat(" 身份证手持照[{0}-{1}]", userInfo.IdentityCardPhotoHandheld, requestModel.identity_card_photo_handheld);
                }
                if (!string.IsNullOrEmpty(requestModel.intelligence_certificate_business))
                {
                    sbPar.AppendFormat(" IntelligenceCertificateBusiness='{0}',", requestModel.intelligence_certificate_business);
                }
                if (!string.IsNullOrEmpty(requestModel.business_intelligence_certificate_photo1))
                {
                    sbPar.AppendFormat(" BusinessIntelligenceCertificatePhoto1='{0}',", requestModel.business_intelligence_certificate_photo1);
                    sbRemark.AppendFormat(" 公司资质三证合一[{0}-{1}]", userInfo.BusinessIntelligenceCertificatePhoto1, requestModel.business_intelligence_certificate_photo1);
                }
                if (!string.IsNullOrEmpty(requestModel.business_intelligence_certificate_photo2))
                {
                    sbPar.AppendFormat(" BusinessIntelligenceCertificatePhoto2='{0}',", requestModel.business_intelligence_certificate_photo2);
                    sbRemark.AppendFormat(" 公司资质补充一[{0}-{1}]", userInfo.BusinessIntelligenceCertificatePhoto2, requestModel.business_intelligence_certificate_photo2);
                }
                if (!string.IsNullOrEmpty(requestModel.business_intelligence_certificate_photo3))
                {
                    sbPar.AppendFormat(" BusinessIntelligenceCertificatePhoto3='{0}',", requestModel.business_intelligence_certificate_photo3);
                    sbRemark.AppendFormat(" 公司资质补充二[{0}-{1}]", userInfo.BusinessIntelligenceCertificatePhoto3, requestModel.business_intelligence_certificate_photo3);
                }
                if (!string.IsNullOrEmpty(requestModel.business_intelligence_certificate_photo4))
                {
                    sbPar.AppendFormat(" BusinessIntelligenceCertificatePhoto4='{0}',", requestModel.business_intelligence_certificate_photo4);
                }
                if (!string.IsNullOrEmpty(requestModel.business_intelligence_certificate_photo5))
                {
                    sbPar.AppendFormat(" BusinessIntelligenceCertificatePhoto5='{0}',", requestModel.business_intelligence_certificate_photo5);
                }
                if (requestModel.imgs != null)
                {
                    sbPar.AppendFormat(" Images='{0}',", requestModel.imgs);
                }
                sbPar.AppendFormat(" ViewType='{0}',", requestModel.view_type);
            }
            else if (requestModel.action == "memberattribution")
            {
                //归属地设置
                //Province ProvinceCode City CityCode District DistrictCode ,Town TownCode 暂时设置的的时候就设置为空
                sbPar.AppendFormat(" Province='{0}', ProvinceCode='{1}', City='{2}', CityCode='{3}', District='{4}', DistrictCode='{5}'  ",
                                   requestModel.province,
                                   requestModel.province_code,
                                   requestModel.city,
                                   requestModel.city_code,
                                   requestModel.district,
                                   requestModel.district_code
                                   );
            }


            if (requestModel.company_is_repeat == "1")
            {
                if (userInfo.Company != requestModel.company)
                {
                    if (bll.GetUserInfoByCompany(requestModel.company) != null)
                    {
                        resp.errcode = (int)BLLJIMP.Enums.APIErrCode.IsRepeat;
                        resp.errmsg  = "公司名称重复";
                        context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
                        return;
                    }
                }
            }
            //if (requestModel.phone_is_repeat=="1")
            //{
            //    if (userInfo.Phone != requestModel.phone)
            //    {
            //        if (bll.GetUserInfoByPhone(requestModel.phone) != null)
            //        {
            //            resp.errcode = (int)BLLJIMP.Enums.APIErrCode.IsRepeat;
            //            resp.errmsg = "手机已存在";
            //            context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
            //            return;
            //        }
            //    }
            //}
            if (requestModel.user_is_repeat == "1")
            {
                if (userInfo.WXNickname != requestModel.nickname)
                {
                    if (bll.GetUserInfoByNickName(requestModel.nickname) != null)
                    {
                        resp.errcode = (int)BLLJIMP.Enums.APIErrCode.IsRepeat;
                        resp.errmsg  = "昵称重复";
                        context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
                        return;
                    }
                }
            }

            if (bll.Update(userInfo, sbPar.ToString().TrimEnd(','), string.Format(" AutoID={0}", userInfo.AutoID)) > 0)
            {
                resp.isSuccess = true;
                resp.errmsg    = "ok";
                resp.returnObj = sbPar.ToString();
                try
                {
                    string remark = sbRemark.ToString();
                    if (remark != "修改会员信息:" && CurrentUserInfo.MemberLevel >= 10)
                    {
                        bllLog.Add(EnumLogType.ShMember, EnumLogTypeAction.Update, CurrentUserInfo.UserID, remark, targetID: userInfo.UserID);
                    }
                    bll.AddUserScoreDetail(CurrentUserInfo.UserID, CommonPlatform.Helper.EnumStringHelper.ToString(ZentCloud.BLLJIMP.Enums.ScoreDefineType.UpdateMyInfo), bll.WebsiteOwner, null, null);
                }
                catch (Exception)
                {
                }
            }
            else
            {
                resp.errcode = (int)BLLJIMP.Enums.APIErrCode.OperateFail;
                resp.errmsg  = "修改会员数据出错";
            }
            context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
        }