private bool DoAdd()
        {
            var check = context.li_bank_accounts.FirstOrDefault(q => q.owner == userId && q.account == txtAccount.Text.Trim()); //检测账户是否重复

            if (check != null)
            {
                JscriptMsg("银行账户重复!", "", "Error");
                return(false);
            }
            var model = new li_bank_accounts
            {
                owner            = userId,
                bank             = txtBank.Text.Trim(),
                opening_bank     = txtOpeningBank.Text.Trim(),
                account          = txtAccount.Text.Trim(),
                last_access_time = DateTime.Now,
                type             = (int)Agp2pEnums.BankAccountType.Unknown,
            };

            context.li_bank_accounts.InsertOnSubmit(model);
            try
            {
                context.SubmitChanges();
                AddAdminLog(DTEnums.ActionEnum.Add.ToString(), lblUser.Text + " 添加银行账户: " + model.account); //记录日志
                return(true);
            }
            catch (Exception)
            {
                return(false);
            }
        }
示例#2
0
        private bool DoAdd()
        {
            var project = new li_projects();
            var risk    = new li_risks();

            project.li_risks = risk;
            SetRiskModel(risk);
            SetProjectModel(project);
            BindMortgages(risk);
            //项目编号
            var latestProject = LqContext.li_projects.Where(p => p.category_id == project.category_id && !p.title.Equals("")).OrderByDescending(p => p.id).FirstOrDefault();
            int prjectCount   = latestProject == null ? 0 : Utils.StrToInt(latestProject.title.Substring(latestProject.title.Length - 5), 0);

            project.title += new BLL.article_category().GetModel(project.category_id).call_index.ToUpper() + (prjectCount + 1).ToString("00000");

            LqContext.li_risks.InsertOnSubmit(risk);
            LqContext.li_projects.InsertOnSubmit(project);
            try
            {
                LqContext.SubmitChanges();
                AddAdminLog(DTEnums.ActionEnum.Add.ToString(), "添加项目成功!"); //记录日志
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return(true);
        }
示例#3
0
        private bool DoAdd()
        {
            var model = new li_creditors
            {
                user_id          = Convert.ToInt32(ddlSelectUser.SelectedValue),
                age              = Convert.ToInt16(txtAge.Text.Trim()),
                job              = txtJob.Text,
                working_company  = txtWorkingUnit.Text,
                remark           = txtRemark.Text,
                last_update_time = DateTime.Now
            };

            context.li_creditors.InsertOnSubmit(model);
            LoadAlbum(model, Agp2pEnums.AlbumTypeEnum.IdCard);

            try
            {
                context.SubmitChanges();
                AddAdminLog(DTEnums.ActionEnum.Add.ToString(), "添加债权人:" + ddlSelectUser.SelectedItem.Text); //记录日志
                return(true);
            }
            catch (Exception)
            {
                return(false);
            }
        }
        private bool DoAdd()
        {
            if (context.li_loaner_companies.Any(q => q.name == txtCompanyName.Text.Trim()))
            {
                JscriptMsg("企业名称重复!", "", "Error");
                return(false);
            }
            var model = new li_loaner_companies
            {
                name                = txtCompanyName.Text.Trim(),
                setup_time          = Convert.ToDateTime(txtSetupTime.Text),
                business_scope      = txtBusinessScope.Text,
                business_status     = txtBusinessStatus.Text,
                business_lawsuit    = txtBusinessLawsuit.Text,
                registered_capital  = txtRegisteredCapital.Text,
                remark              = txtCompanyRemark.Text,
                manager             = txtManager.Text,
                address             = txtAddress.Text,
                business_belong     = txtBusinessBelong.Text,
                business_license_no = txtBusinessLicenseNo.Text,
                organization_no     = txtOrganizationNo.Text,
                shareholder         = txtShareholder.Text
            };

            context.li_loaner_companies.InsertOnSubmit(model);
            LoadAlbum(model, Agp2pEnums.AlbumTypeEnum.Pictures);

            var currentLoanerNames = txtLoaners.Text.Trim().Split(',');

            currentLoanerNames.ForEach(ln =>
            {
                var loaner = context.li_loaners.SingleOrDefault(l => l.dt_users.user_name == ln) ??
                             context.li_loaners.Single(l => l.dt_users.real_name == ln);
                if (loaner.li_loaner_companies != null)
                {
                    JscriptMsg(loaner.dt_users.user_name + " 已经绑定企业,不能重复绑定!", "", "Error");
                }
                else
                {
                    loaner.li_loaner_companies = model;
                }
            });

            try
            {
                context.SubmitChanges();
                AddAdminLog(DTEnums.ActionEnum.Add.ToString(), "添加企业信息:" + txtCompanyName.Text); //记录日志
                return(true);
            }
            catch (Exception ex)
            {
                return(false);
            }
        }
示例#5
0
        /// <summary>
        /// 请求后台接口
        /// </summary>
        /// <param name="msg"></param>
        private static void DoBackEndRequest(BackEndReqMsg msg)
        {
            Agp2pDataContext context = new Agp2pDataContext();
            var requestLog           = new li_pay_request_log
            {
                id           = msg.RequestId,
                user_id      = msg.UserId,
                project_id   = msg.ProjectCode,
                api          = msg.Api,
                status       = (int)Agp2pEnums.SumapayRequestEnum.Waiting,
                request_time = DateTime.Now,
                remarks      = msg.Remarks,
            };

            try
            {
                //创建交易记录
                switch (requestLog.api)
                {
                //放款请求
                case (int)Agp2pEnums.SumapayApiEnum.ALoan:
                case (int)Agp2pEnums.SumapayApiEnum.CLoan:
                    var makeLoanReqMsg = (MakeLoanReqMsg)msg;
                    var project        = context.li_projects.SingleOrDefault(p => p.id == makeLoanReqMsg.ProjectCode);
                    //非活期和新手标项目计算平台服务费
                    if (project != null && !project.IsNewbieProject1())
                    {
                        decimal loanFee = decimal.Round(project.investment_amount * (project.loan_fee_rate) ?? 0, 2, MidpointRounding.AwayFromZero);
                        decimal bondFee = decimal.Round(project.investment_amount * (project.bond_fee_rate) ?? 0, 2, MidpointRounding.AwayFromZero);
                        makeLoanReqMsg.SetSubledgerList(loanFee + bondFee);
                    }
                    else
                    {
                        throw new ArgumentNullException("没有找到项目, ID=" + makeLoanReqMsg.ProjectCode);
                    }
                    break;
                }
                //生成发送报文
                msg.RequestContent         = msg.GetPostPara();
                requestLog.request_content = msg.RequestContent;
                //保存日志
                context.li_pay_request_log.InsertOnSubmit(requestLog);
                context.SubmitChanges();
                //发送请求
                msg.SynResult = Utils.HttpPostGbk(msg.ApiInterface, requestLog.request_content);
            }
            catch (Exception ex)
            {
                requestLog.remarks = ex.Message;
                context.li_pay_request_log.InsertOnSubmit(requestLog);
                context.SubmitChanges();
            }
        }
        private bool DoAdd()
        {
            bool result = false;

            Model.user_groups model = new Model.user_groups();
            BLL.user_groups   bll   = new BLL.user_groups();

            model.title   = txtTitle.Text.Trim();
            model.is_lock = 0;
            if (rblIsLock.Checked)
            {
                model.is_lock = 1;
            }
            model.is_default = 0;
            model.is_upgrade = 0;

            if (rblIsDefault.Checked)
            {
                model.is_default = 1;
            }

            /*if (rblIsUpgrade.Checked)
             * {
             *  model.is_upgrade = 1;
             * }
             * model.grade = int.Parse(txtGrade.Text.Trim());
             * model.upgrade_exp = int.Parse(txtUpgradeExp.Text.Trim());
             * model.amount = decimal.Parse(txtAmount.Text.Trim());
             * model.point = int.Parse(txtPoint.Text.Trim());
             * model.discount = int.Parse(txtDiscount.Text.Trim());*/
            int groupId = bll.Add(model);

            if (0 < groupId)
            {
                if (ddlDepartments.SelectedValue != "")
                {
                    var selectedGroups = context.li_user_group_departments.Where(k => k.user_group_id == groupId).ToList();
                    context.li_user_group_departments.DeleteAllOnSubmit(selectedGroups);

                    var tr = new li_user_group_departments
                    {
                        user_group_id = groupId,
                        department_id = Convert.ToInt32(ddlDepartments.SelectedValue)
                    };
                    context.li_user_group_departments.InsertOnSubmit(tr);
                    context.SubmitChanges();
                }

                AddAdminLog(DTEnums.ActionEnum.Add.ToString(), "添加用户组:" + model.title); //记录日志
                result = true;
            }
            return(result);
        }
示例#7
0
        private bool DoAdd()
        {
            // 查找用户
            var users = context.dt_users.Where(u => u.real_name == txtName.Text || u.user_name == txtName.Text).Take(2);

            if (!users.Any())
            {
                JscriptMsg("不存在该用户", "", "Error");
                return(false);
            }
            if (users.Count() > 1)
            {
                JscriptMsg("此姓名匹配了多个用户,请输入会员账号(手机号)来匹配", "", "Error");
                return(false);
            }
            var model = new li_loaners
            {
                dt_users = users.First(),
                //name = txtName.Text.Trim(),
                //tel = txtTel.Text.Trim(),
                age = Convert.ToInt16(txtAge.Text.Trim()),
                //gender = Convert.ToByte(rblGender.SelectedValue),
                //cencus = txtCencus.Text.Trim(),
                native_place    = txtCencus.Text.Trim(),
                job             = txtJob.Text.Trim(),
                working_at      = txtWorkingAt.Text.Trim(),
                working_company = txtWorkingUnit.Text.Trim(),
                //id_card_number = txtIdCardNumber.Text.Trim(),
                //email = txtEmail.Text.Trim(),
                educational_background = txtEducationalBackground.Text.Trim(),
                marital_status         = Convert.ToByte(rblMaritalStatus.SelectedValue),
                income           = txtIncome.Text.Trim(),
                last_update_time = DateTime.Now,
                lawsuit          = txtLawsuit.Text.Trim(),
                quota            = Utils.StrToInt(txtQuota.Text.Trim(), 0),
                status           = Utils.StrToInt(rblStatus.SelectedValue, 0)
            };

            context.li_loaners.InsertOnSubmit(model);
            LoadAlbum(model, Agp2pEnums.AlbumTypeEnum.IdCard);

            try
            {
                context.SubmitChanges();
                AddAdminLog(DTEnums.ActionEnum.Add.ToString(), "添加借贷人:" + model.dt_users.real_name); //记录日志
                return(true);
            }
            catch (Exception)
            {
                return(false);
            }
        }
示例#8
0
        private static void DoCalcProfitingMoney(int projectId, DateTime makeLoanTime)
        {
            var context = new Agp2pDataContext();

            // 找出未支付的奖励
            var projectAtrs = context.li_activity_transactions.Where(atr =>
                                                                     atr.activity_type == (byte)Agp2pEnums.ActivityTransactionActivityTypeEnum.InterestRateTicket &&
                                                                     atr.status == (byte)Agp2pEnums.ActivityTransactionStatusEnum.Confirm &&
                                                                     atr.type == (byte)Agp2pEnums.ActivityTransactionTypeEnum.Gain &&
                                                                     atr.transact_time == null &&
                                                                     (atr.details.Contains("\"ProjectId\":" + projectId + ",") || atr.details.Contains("\"ProjectId\":" + projectId + "}")))
                              .ToLookup(atr => atr.dt_users);

            projectAtrs.ForEach(p =>
            {
                var wallet = p.Key.li_wallets;
                p.ForEach(atr =>
                {
                    // 满标时再计算待收益金额
                    wallet.profiting_money += atr.value;
                    wallet.last_update_time = makeLoanTime;
                    // 修改钱包历史
                    var his = TransactionFacade.CloneFromWallet(wallet, Agp2pEnums.WalletHistoryTypeEnum.Gaining);
                    his.li_activity_transactions = atr;
                    context.li_wallet_histories.InsertOnSubmit(his);
                });
            });
            if (projectAtrs.Any())
            {
                context.SubmitChanges();
            }
        }
示例#9
0
        public static void PublishProject(string projectName, int repayDays, decimal financingAmount, decimal profitingYearly)
        {
            var context = new Agp2pDataContext();
            var now     = DateTime.Now;

            var loaner      = context.li_loaners.Single(l => l.dt_users.real_name == "杨长岭");
            var ypbCategory = context.dt_article_category.Single(c => c.call_index == "ypb");
            var project     = new li_projects
            {
                li_risks = new li_risks
                {
                    last_update_time = now,
                    li_loaners       = loaner
                },
                category_id               = ypbCategory.id,
                type                      = (int)Agp2pEnums.LoanTypeEnum.Company,
                sort_id                   = 99,
                add_time                  = now,
                publish_time              = now,
                make_loan_time            = now,
                user_name                 = "admin",
                title                     = projectName,
                no                        = projectName,
                financing_amount          = financingAmount,
                repayment_term_span_count = repayDays,
                repayment_term_span       = (int)Agp2pEnums.ProjectRepaymentTermSpanEnum.Day,
                repayment_type            = (int)Agp2pEnums.ProjectRepaymentTypeEnum.DaoQi,
                profit_rate_year          = profitingYearly,
                status                    = (int)Agp2pEnums.ProjectStatusEnum.Financing,
            };

            context.li_projects.InsertOnSubmit(project);

            context.SubmitChanges();
        }
示例#10
0
        public new static string AjaxModifyAddress(int addressId, string address, string area, string postalCode, string orderName, string orderPhone)
        {
            var userInfo = GetUserInfoByLinq();

            HttpContext.Current.Response.TrySkipIisCustomErrors = true;
            if (userInfo == null)
            {
                HttpContext.Current.Response.StatusCode = (int)HttpStatusCode.Unauthorized;
                return("请先登录");
            }
            var context     = new Agp2pDataContext();
            var addressInfo = context.dt_user_addr_book.SingleOrDefault(a => a.id == addressId && a.user_id == userInfo.id);

            if (addressInfo == null)
            {
                HttpContext.Current.Response.StatusCode = (int)HttpStatusCode.BadRequest;
                return("找不到地址信息");
            }
            addressInfo.address     = address;
            addressInfo.area        = area;
            addressInfo.post_code   = postalCode;
            addressInfo.accept_name = orderName;
            addressInfo.mobile      = orderPhone;
            context.SubmitChanges();
            return("修改成功");
        }
示例#11
0
        public new static string AjaxModifyCard(int cardId, string bankName)
        {
            var userInfo = GetUserInfo();

            HttpContext.Current.Response.TrySkipIisCustomErrors = true;
            if (userInfo == null)
            {
                HttpContext.Current.Response.StatusCode = (int)HttpStatusCode.Unauthorized;
                return("请先登录");
            }
            var context = new Agp2pDataContext();
            var card    = context.li_bank_accounts.SingleOrDefault(c => c.owner == userInfo.id && c.id == cardId);

            if (card == null)
            {
                HttpContext.Current.Response.StatusCode = (int)HttpStatusCode.NotFound;
                return("找不到卡的信息");
            }
            // 检查用户的输入
            if (!new Regex(@"^[\u4e00-\u9fa5]+$").IsMatch(bankName))
            {
                HttpContext.Current.Response.StatusCode = (int)HttpStatusCode.BadRequest;
                return("银行名称格式不正确");
            }

            card.bank = bankName;

            context.SubmitChanges();
            return("修改成功");
        }
示例#12
0
        private void SetMobile(string verifyCodeFromInput, Action <int, string> callback)
        {
            var model = HttpContext.Current.Session[DTKeys.SESSION_USER_INFO] as users;

            if (model == null)
            {
                callback((int)HttpStatusCode.Unauthorized, "登录超时,请重新登陆");
                return;
            }
            if (string.IsNullOrWhiteSpace(verifyCodeFromInput))
            {
                callback((int)HttpStatusCode.BadRequest, "参数不正确");
                return;
            }
            var cachedCode = (string)SessionHelper.Get("mobile_verify_code");

            if (!string.IsNullOrWhiteSpace(cachedCode) && verifyCodeFromInput == cachedCode)
            {
                var context = new Agp2pDataContext();
                var dtUsers = context.dt_users.Single(u => u.id == model.id);
                dtUsers.mobile = (string)SessionHelper.Get("verifying_mobile");
                context.SubmitChanges();
                SessionHelper.Remove("mobile_verify_code");
                callback((int)HttpStatusCode.OK, "电话设置成功");
            }
            else
            {
                callback((int)HttpStatusCode.PreconditionFailed, "电话验证码不正确或已失效");
            }
        }
示例#13
0
        //批量删除
        protected void btnDelete_Click(object sender, EventArgs e)
        {
            ChkAdminLevel("loan_apply", DTEnums.ActionEnum.Delete.ToString()); //检查权限
            int sucCount   = 0;                                                //成功数量
            int errorCount = 0;                                                //失败数量

            Agp2pDataContext context = new Agp2pDataContext();

            for (int i = 0; i < rptList1.Items.Count; i++)
            {
                int      id = Convert.ToInt32(((HiddenField)rptList1.Items[i].FindControl("hidId")).Value);
                CheckBox cb = (CheckBox)rptList1.Items[i].FindControl("chkId");
                if (cb.Checked)
                {
                    var project = context.li_projects.FirstOrDefault(p => p.id == id);
                    if (project != null)
                    {
                        context.li_projects.DeleteOnSubmit(project);
                        context.li_risks.DeleteOnSubmit(project.li_risks);
                        sucCount++;
                    }
                    else
                    {
                        errorCount++;
                    }
                }
            }
            context.SubmitChanges();
            AddAdminLog(DTEnums.ActionEnum.Edit.ToString(), "删除" + this.ChannelName + "频道内容成功" + sucCount + "条,失败" + errorCount + "条"); //记录日志
            JscriptMsg("删除成功" + sucCount + "条,失败" + errorCount + "条!", Utils.CombUrlTxt("loan_apply.aspx", "channel_id={0}&category_id={1}&keywords={2}&project_status={3}",
                                                                                        this.ChannelId.ToString(), this.CategoryId.ToString(), txtKeywords.Text, this.ProjectStatus.ToString()), "Success");
        }
        //批量删除
        protected void btnDelete_Click(object sender, EventArgs e)
        {
            ChkAdminLevel("manage_project_transaction", DTEnums.ActionEnum.Delete.ToString()); //检查权限
            int sucCount   = 0;
            int errorCount = 0;

            for (int i = 0; i < rptList.Items.Count; i++)
            {
                int      id = Convert.ToInt32(((HiddenField)rptList.Items[i].FindControl("hidId")).Value);
                CheckBox cb = (CheckBox)rptList.Items[i].FindControl("chkId");
                if (cb.Checked)
                {
                    var preDel = context.li_repayment_tasks.FirstOrDefault(q => q.id == id);
                    if (preDel != null)
                    {
                        sucCount += 1;
                        context.li_repayment_tasks.DeleteOnSubmit(preDel);
                    }
                    else
                    {
                        errorCount += 1;
                    }
                }
            }
            try
            {
                context.SubmitChanges();
                AddAdminLog(DTEnums.ActionEnum.Delete.ToString(), "删除还款计划 " + sucCount + " 条,失败 " + errorCount + " 条"); //记录日志
                JscriptMsg("删除还款计划成功" + sucCount + "条,失败" + errorCount + "条!", Utils.CombUrlTxt("project_repayment_list.aspx", "project_id={0}", project_id), "Success");
            }
            catch (Exception)
            {
                JscriptMsg("删除失败!", Utils.CombUrlTxt("project_repayment_list.aspx", "project_id={0}", project_id), "Failure");
            }
        }
示例#15
0
        /// <summary>
        /// 重写虚方法,此方法将在Init事件前执行
        /// </summary>
        protected override void ShowPage()
        {
            page         = DTRequest.GetQueryInt("page", 1);
            category_id  = DTRequest.GetQueryInt("category_id");
            category_ids = DTRequest.GetQueryString("category_ids");
            if (category_id > 0) //如果ID获取到,将使用ID
            {
                var bll = new BLL.article_category();
                if (bll.Exists(category_id))
                {
                    category = bll.GetModel(category_id);
                }
            }
            else if (!string.IsNullOrWhiteSpace(category_ids))
            {
                var firstCategoryId = Convert.ToInt32(category_ids.Split(',')[0]);
                var bll             = new BLL.article_category();
                if (bll.Exists(firstCategoryId))
                {
                    category = bll.GetModel(firstCategoryId);
                }
            }

            var articleId = DTRequest.GetQueryInt("articleId");

            if (articleId != 0)
            {
                var context = new Agp2pDataContext();
                article        = context.dt_article.Single(a => a.id == articleId);
                article.click += 1;
                context.SubmitChanges();
            }
        }
示例#16
0
        private static void CheckTimeoutProject(TimerMsg.Type timerType, bool onTime)
        {
            if (timerType != TimerMsg.Type.AutoRepayTimer)
            {
                return;
            }

            var db = new Agp2pDataContext();
            // 活期项目不会过时
            var timeoutProjects = db.li_projects.Where(
                p => p.dt_article_category.call_index != "huoqi" &&
                p.status == (int)Agp2pEnums.ProjectStatusEnum.Financing && p.publish_time != null)
                                  .AsEnumerable()
                                  .Where(p => p.publish_time.Value.AddDays(p.financing_day).Date <= DateTime.Today).ToList();

            if (!timeoutProjects.Any())
            {
                return;
            }

            timeoutProjects.ForEach(p =>
            {
                p.status = (int)Agp2pEnums.ProjectStatusEnum.FinancingTimeout;
                db.AppendAdminLog("AutoSetProjectTimeout", string.Format("项目 {0} 募集已超时", p.title));
            });
            db.SubmitChanges();

            timeoutProjects.ForEach(p =>
            {
                MessageBus.Main.Publish(new ProjectFinancingTimeoutMsg(p.id)); // 广播项目融资超时的消息
            });
        }
示例#17
0
        //删除导航
        protected void btnDelete_Click(object sender, EventArgs e)
        {
            ChkAdminLevel("department_list", DTEnums.ActionEnum.Delete.ToString()); //检查权限
            BLL.department   bll     = new BLL.department();
            Agp2pDataContext context = new Agp2pDataContext();

            for (int i = 0; i < rptList.Items.Count; i++)
            {
                int      id = Convert.ToInt32(((HiddenField)rptList.Items[i].FindControl("hidId")).Value);
                CheckBox cb = (CheckBox)rptList.Items[i].FindControl("chkId");
                if (cb.Checked)
                {
                    bll.Delete(id);

                    var groupDepartments = context.li_user_group_departments.Where(w => w.department_id == id).ToList();
                    foreach (var tr in groupDepartments)
                    {
                        context.li_user_group_departments.DeleteOnSubmit(tr);
                    }

                    var managers = context.dt_manager.Where(w => w.department_id == id).ToList();
                    foreach (var m in managers)
                    {
                        m.department_id = 0;
                        m.is_default    = 0;
                    }
                }
            }
            context.SubmitChanges();
            AddAdminLog(DTEnums.ActionEnum.Delete.ToString(), "删除部门信息"); //记录日志
            JscriptMsg("删除数据成功!", "department_list.aspx", "Success", "parent.loadMenuTree");
        }
示例#18
0
        public new static string AjaxDeleteCard(int cardId)
        {
            var context  = new Agp2pDataContext();
            var userInfo = GetUserInfoByLinq(context);

            HttpContext.Current.Response.TrySkipIisCustomErrors = true;
            if (userInfo == null)
            {
                HttpContext.Current.Response.StatusCode = (int)HttpStatusCode.Unauthorized;
                return("请先登录");
            }

            var card = context.li_bank_accounts.SingleOrDefault(c => c.owner == userInfo.id && c.id == cardId);

            if (card == null)
            {
                HttpContext.Current.Response.StatusCode = (int)HttpStatusCode.NotFound;
                return("该卡已被删除");
            }
            if (card.li_bank_transactions.Any())
            {
                return("该卡已关联有提现操作,无法删除");
            }
            context.li_bank_accounts.DeleteOnSubmit(card);
            context.SubmitChanges();
            return("删除成功");
        }
示例#19
0
        public static int GiveUser(int userId, decimal interestRateBonusPercent, decimal minInvestValue,
                                   int minProjectDayCount, int ticketExpireAfterDays = 60)
        {
            var context = new Agp2pDataContext();

            var trs = new li_activity_transactions
            {
                user_id     = userId,
                create_time = DateTime.Now,
                value       = 0, // 使用之后才有值
                details     = JsonConvert.SerializeObject(new
                {
                    InterestRateBonus  = interestRateBonusPercent,
                    minInvestValue     = minInvestValue,
                    MinProjectDayCount = minProjectDayCount,
                    Deadline           = DateTime.Today.AddDays(ticketExpireAfterDays).ToString("yyyy-MM-dd")
                }),
                type          = (byte)Agp2pEnums.ActivityTransactionTypeEnum.Gain,
                status        = (byte)Agp2pEnums.ActivityTransactionStatusEnum.Acting,
                activity_type = (byte)Agp2pEnums.ActivityTransactionActivityTypeEnum.InterestRateTicket,
            };

            context.li_activity_transactions.InsertOnSubmit(trs);
            context.SubmitChanges();

            return(trs.id);
        }
        //批量删除
        protected void btnDelete_Click(object sender, EventArgs e)
        {
            ChkAdminLevel("loan_company", DTEnums.ActionEnum.Delete.ToString()); //检查权限
            int sucCount   = 0;
            int errorCount = 0;

            for (int i = 0; i < rptList.Items.Count; i++)
            {
                int      id = Convert.ToInt32(((HiddenField)rptList.Items[i].FindControl("hidId")).Value);
                CheckBox cb = (CheckBox)rptList.Items[i].FindControl("chkId");
                if (cb.Checked)
                {
                    var preDel = context.li_loaner_companies.FirstOrDefault(q => q.id == id);
                    if (preDel != null)
                    {
                        sucCount += 1;
                        context.li_loaner_companies.DeleteOnSubmit(preDel);
                    }
                    else
                    {
                        errorCount += 1;
                    }
                }
            }
            try
            {
                context.SubmitChanges();
                AddAdminLog(DTEnums.ActionEnum.Delete.ToString(), "删除企业信息" + sucCount + "条,失败" + errorCount + "条"); //记录日志
                JscriptMsg("删除成功" + sucCount + "条,失败" + errorCount + "条!", Utils.CombUrlTxt("company_list.aspx", "keywords={0}", txtKeywords.Text), "Success");
            }
            catch (Exception ex)
            {
                JscriptMsg("删除失败!" + FriendlyDBError.HandleDeleteError(ex), Utils.CombUrlTxt("company_list.aspx", "keywords={0}", txtKeywords.Text), "Failure");
            }
        }
示例#21
0
 protected void ModifyTradePassword(int userId, string oldTradePwd, string newTradePwd, Action <int, string> callback)
 {
     if (string.IsNullOrWhiteSpace(newTradePwd))
     {
         callback((int)HttpStatusCode.LengthRequired, "交易密码不能为空");
         return;
     }
     try
     {
         var context = new Agp2pDataContext();
         var user    = context.dt_users.Single(u => u.id == userId);
         if (!string.IsNullOrWhiteSpace(user.pay_password) && Utils.MD5(oldTradePwd) != user.pay_password)
         {
             callback((int)HttpStatusCode.BadRequest, "旧交易密码错误");
             return;
         }
         user.pay_password = Utils.MD5(newTradePwd);
         context.SubmitChanges();
         callback((int)HttpStatusCode.OK, "设置交易密码成功,请记住新密码");
     }
     catch (Exception ex)
     {
         callback((int)HttpStatusCode.InternalServerError, "设置交易密码失败,请联系客服");
     }
 }
示例#22
0
        private static void HandleUserInvestedMsg(int projectTransactionId)
        {
            var now       = DateTime.Now;
            var startTime = new DateTime(2015, 5, 3);

            if (startTime <= now.Date /*&& now.Date <= startTime.AddMonths(6)*/) // 判断是否活动期间
            {
                var context = new Agp2pDataContext();
                var options = new DataLoadOptions();
                options.LoadWith <li_project_transactions>(p => p.dt_users);
                options.LoadWith <dt_users>(p => p.li_invitations);
                context.LoadOptions = options;

                var investment = context.li_project_transactions.Single(tr => tr.id == projectTransactionId);
                if (investment.li_projects.IsNewbieProject1())
                {
                    // 投资新手标不算
                    return;
                }

                // 用户只能有一个邀请人,所有一对一关系就是被邀请记录,一对多关系的是邀请记录
                var investor = investment.dt_users;
                if (investor.li_invitations == null || investor.li_invitations.li_project_transactions != null)
                {
                    return; // 没有邀请人或已经记录过首次投资
                }
                investor.li_invitations.li_project_transactions = investment;
                // 利润和收益时间需要等满标后才能计算
                context.SubmitChanges();
            }
        }
示例#23
0
        private static void HandleProjectRepayCompletedMsg(int projectId, DateTime projectCompleteTime)
        {
            // 找出投资记录对应的活动奖励记录
            var context = new Agp2pDataContext();

            var invitees = context.li_invitations.Where(i => i.li_project_transactions.project == projectId).Select(i => i.dt_users1).Distinct();
            var atr      = invitees.Select(i =>
                                           i.li_activity_transactions.Single(a =>
                                                                             a.activity_type == (int)Agp2pEnums.ActivityTransactionActivityTypeEnum.RefereeFirstTimeProfitBonus))
                           .ToList();  // 查出邀请人的奖励活动交易记录

            if (!atr.Any())
            {
                return;
            }

            atr.ForEach(tr =>
            {
                tr.transact_time = projectCompleteTime;
                tr.status        = (byte)Agp2pEnums.ActivityTransactionStatusEnum.Confirm;

                var wallet              = tr.dt_users.li_wallets;
                wallet.idle_money      += tr.value;
                wallet.total_profit    += tr.value;
                wallet.last_update_time = projectCompleteTime;

                var his = TransactionFacade.CloneFromWallet(wallet, Agp2pEnums.WalletHistoryTypeEnum.GainConfirm);
                his.li_activity_transactions = tr;
                context.li_wallet_histories.InsertOnSubmit(his);
            });
            context.SubmitChanges();
        }
示例#24
0
        /// <summary>
        /// 银行卡解绑响应处理
        /// </summary>
        /// <param name="msg"></param>
        private static void RemoveCard(RemoveCardRespMsg msg)
        {
            try
            {
                //检查请求处理结果
                if (msg.CheckResult())
                {
                    //检查签名
                    if (msg.CheckSignature())
                    {
#if !DEBUG
                        //同步平台不做处理
                        if(msg.Result.Equals("00001")) return;
#endif
                        Agp2pDataContext context = new Agp2pDataContext();
                        var user = context.dt_users.SingleOrDefault(u => u.id == msg.UserIdIdentity);
                        if (user.li_bank_accounts.Any())
                        {
                            var quickpay = user.li_bank_accounts.SingleOrDefault(a => a.type == (int)Agp2pEnums.BankAccountType.QuickPay);
                            quickpay.type = (int)Agp2pEnums.BankAccountType.WebBank;                           
                            context.SubmitChanges();
                            msg.HasHandle = true;
                        }
                        else
                        {
                            msg.Remarks = "没有找到解绑信息,流水号为:" + msg.RequestId;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                msg.Remarks = "内部错误:" + ex.Message;
            }
        }
示例#25
0
        public static void CheckStaticProjectWithdrawOvertime(TimerMsg.Type timerType, bool onTime)
        {
            if (timerType != TimerMsg.Type.AutoRepayTimer)
            {
                return;
            }

            var context = new Agp2pDataContext();
            // 申请时间超过 2 日 / 到达还款日,则取消债权转让申请
            var withdrawOvertimeClaims = context.li_claims
                                         .Where(c => c.status == (int)Agp2pEnums.ClaimStatusEnum.NeedTransfer && c.projectId == c.profitingProjectId &&
                                                !c.Children.Any())
                                         .AsEnumerable().Where(c =>
            {
                var nextRepayDate = c.li_projects.li_repayment_tasks.FirstOrDefault(ta => ta.IsUnpaid())?.should_repay_time.Date;
                if (nextRepayDate != null && nextRepayDate.Value <= DateTime.Today)
                {
                    return(true);
                }
                return(c.createTime < DateTime.Now.AddDays(-2));
            }).ToList();

            if (!withdrawOvertimeClaims.Any())
            {
                return;
            }

            withdrawOvertimeClaims.ForEach(c => TransactionFacade.StaticClaimWithdrawCancel(context, c.id, false));
            context.AppendAdminLog("StaticWithdraw", "取消超时的定期债权转让申请:" + withdrawOvertimeClaims.Count);
            context.SubmitChanges();
        }
示例#26
0
        public static string AjaxSetManagerMessagesRead(string msgIds)
        {
            var manager = GetAdminInfo();

            HttpContext.Current.Response.TrySkipIisCustomErrors = true;
            if (manager == null)
            {
                HttpContext.Current.Response.StatusCode = (int)HttpStatusCode.Unauthorized;
                return("请先登录");
            }

            if (string.IsNullOrWhiteSpace(msgIds))
            {
                HttpContext.Current.Response.StatusCode = (int)HttpStatusCode.BadRequest;
                return("没有指定消息");
            }

            var preRead = msgIds.Split(';').Select(str => Convert.ToInt32(str)).ToArray();

            var context = new Agp2pDataContext();

            context.li_manager_messages.Where(m => m.receiver == manager.id)
            .Where(m => preRead.Contains(m.id))
            .ForEach(m =>
            {
                m.isRead = true;
            });
            context.SubmitChanges();
            ManagerMessageHubFacade.Instance.OnManagerReadMsg(manager.user_name);
            return("设置成功");
        }
示例#27
0
        /// <summary>
        /// 一键充值 响应
        /// </summary>
        /// <param name="msg"></param>
        private static void WithholdingRecharge(WithholdingRechargeRespMsg msg)
        {
            try
            {
                //检查请求处理结果
                if (msg.CheckResult())
                {
                    //检查签名
                    if (msg.CheckSignature())
                    {
#if !DEBUG
                        //同步返回平台不做处理
                        if (msg.Result.Equals("00001")) return;
#endif
                        Agp2pDataContext context = new Agp2pDataContext();
                        //查找对应的交易流水
                        var trans = context.li_bank_transactions.SingleOrDefault(u => u.no_order == msg.RequestId);
                        if (trans != null)
                        {
                            if (trans.status == (int)Agp2p.Common.Agp2pEnums.BankTransactionStatusEnum.Acting)
                            {
                                context.ConfirmBankTransaction(trans.id, null);
                                //一键充值后自动更新银行卡类型(同卡进出只能使用绑定卡提现)
                                var charger = trans.dt_users;
                                var bindCardLastNo = msg.BankAccount.Substring(msg.BankAccount.Length - 4, 4);//快捷充值卡的后四位
                                var bindCardFristNo = msg.BankAccount.Substring(0, 4);//快捷充值卡的前四位 
                                if (charger.li_bank_accounts.Any())
                                {
                                    charger.li_bank_accounts.ForEach(b =>
                                    {
                                        if (b.account.Substring(0, 4).Equals(bindCardFristNo) &&
                                            b.account.Substring(b.account.Length - 4, 4).Equals(bindCardLastNo))
                                        {
                                            b.type = (int)Agp2pEnums.BankAccountType.QuickPay;
                                        }
                                        else
                                        {
                                            b.type = (int) Agp2pEnums.BankAccountType.WebBank;
                                        }
                                    });
                                    context.SubmitChanges();
                                }

                                //TODO 检查用户资金信息 
                                msg.HasHandle = true;
                            }
                        }
                        else
                        {
                            msg.Remarks = "没有找到平台交易流水记录,交易流水号为:" + msg.RequestId;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                msg.Remarks = "内部错误:" + ex.Message;
            }
        }
示例#28
0
        private static void HandleProjectFinancingFailMsg(int projectId)
        {
            var context = new Agp2pDataContext();
            var project = context.li_projects.Single(p => p.id == projectId);

            // 查出所有已经退款的投资者 TODO 排除自己退款的投资者
            var investors = project.li_project_transactions.Where(
                ptr =>
                ptr.type == (int)Agp2pEnums.ProjectTransactionTypeEnum.Invest &&
                ptr.status == (int)Agp2pEnums.ProjectTransactionStatusEnum.Rollback)
                            .GroupBy(ptr => ptr.dt_users).Select(g => g.Key);

            var sendTime = DateTime.Now;

            //找出模板
            var smsModel = context.dt_sms_template.SingleOrDefault(te => te.call_index == "project_financing_fail");

            if (smsModel == null)
            {
                throw new InvalidOperationException("找不到流标提醒模板: project_financing_fail");
            }

            var msgContent = smsModel.content
                             .Replace("{project}", project.title)
                             .Replace("{date}", sendTime.ToString("yyyy-MM-dd HH:mm"));


            // 通知投资者项目流标
            investors.ForEach(investor =>
            {
                try
                {
                    //发送站内消息
                    var userMsg = new dt_user_message
                    {
                        type             = 1,
                        post_user_name   = "",
                        accept_user_name = investor.user_name,
                        title            = smsModel.title,
                        content          = msgContent,
                        post_time        = sendTime,
                        receiver         = investor.id
                    };
                    context.dt_user_message.InsertOnSubmit(userMsg);
                    context.SubmitChanges();
                    var errorMsg = string.Empty;
                    if (!SMSHelper.SendTemplateSms(investor.mobile, msgContent, out errorMsg))
                    {
                        context.AppendAdminLogAndSave("ProjectFinancingFailSms",
                                                      string.Format("发送项目流标提醒失败:{0}(客户ID:{1},项目名称:{2})", errorMsg, investor.user_name, project.title));
                    }
                }
                catch (Exception ex)
                {
                    context.AppendAdminLogAndSave("ProjectFinancingFailSms",
                                                  string.Format("发送项目流标提醒失败:{0}(客户ID:{1},项目名称:{2})", ex.GetSimpleCrashInfo(), investor.user_name, project.title));
                }
            });
        }
        public void RemoveTransactPassword()
        {
            var context = new Agp2pDataContext();
            var dtUsers = context.dt_users.Single(u => u.user_name == "13535656867");

            dtUsers.pay_password = null;
            context.SubmitChanges();
        }
示例#30
0
        public static void GenerateHuoqiRepaymentTask(TimerMsg.Type timerType, bool onTime)
        {
            if (timerType != TimerMsg.Type.LoanerRepayTimer)
            {
                return;
            }

            var context = new Agp2pDataContext();
            var today   = DateTime.Today;

            var huoqiProjects = context.li_projects.Where(p =>
                                                          p.status == (int)Agp2pEnums.ProjectStatusEnum.Financing &&
                                                          p.dt_article_category.call_index == "huoqi").ToList();

            var dailyRepayments = huoqiProjects.SelectMany(p =>
            {
                // 检查今日是否已经生成过还款计划
                var lastRepaymentTask = context.li_repayment_tasks.Where(ta => ta.project == p.id)
                                        .OrderByDescending(ta => ta.should_repay_time)
                                        .FirstOrDefault();
                if (lastRepaymentTask != null && today < lastRepaymentTask.should_repay_time)
                {
                    return(Enumerable.Empty <li_repayment_tasks>());
                }

                // 如果是今天/昨日才投的活期标,则不返利
                // 如果前日有 不可转让/可转让 的债权,则会产生收益(提现后不再产生收益)
                var shouldRepayTo = p.li_claims_profiting.Where(c => c.IsProfiting()).ToList();
                if (!shouldRepayTo.Any())
                {
                    return(Enumerable.Empty <li_repayment_tasks>());
                }
                return(new[]
                {
                    new li_repayment_tasks
                    {
                        should_repay_time = today.AddHours(15),
                        repay_principal = 0,
                        repay_interest = Math.Round(1m / TransactionFacade.HuoqiProjectProfitingDay * p.profit_rate_year / 100 * shouldRepayTo.Sum(c => c.principal), 2),
                        project = p.id,
                        status = (byte)Agp2pEnums.RepaymentStatusEnum.Unpaid,
                        term = (short)((p.li_repayment_tasks.LastOrDefault()?.term ?? 0) + 1)
                    }
                });
            }).ToList();

            if (!dailyRepayments.Any())
            {
                return;
            }

            context.li_repayment_tasks.InsertAllOnSubmit(dailyRepayments);

            context.AppendAdminLog("Huoqi",
                                   "自动生成今天 " + dailyRepayments.Count + " 个活期项目的还款计划,利润总计:" +
                                   dailyRepayments.Aggregate(0m, (sum, tasks) => sum + tasks.repay_interest).ToString("c"));
            context.SubmitChanges();
        }