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); } }
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); }
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); } }
/// <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); }
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); } }
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(); } }
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(); }
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("修改成功"); }
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("修改成功"); }
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, "电话验证码不正确或已失效"); } }
//批量删除 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"); } }
/// <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(); } }
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)); // 广播项目融资超时的消息 }); }
//删除导航 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"); }
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("删除成功"); }
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"); } }
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, "设置交易密码失败,请联系客服"); } }
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(); } }
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(); }
/// <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; } }
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(); }
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("设置成功"); }
/// <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; } }
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(); }
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(); }