public static dt_users GetUserInfoByLinq(Agp2pDataContext context = null) { if (IsUserLogin()) { Model.users model = HttpContext.Current.Session[DTKeys.SESSION_USER_INFO] as Model.users; if (model != null) { //为了能查询到最新的用户信息,必须查询最新的用户资料 if (context == null) { context = new Agp2pDataContext(); } return(context.dt_users.SingleOrDefault(u => u.id == model.id)); } } return(null); }
/// <summary> /// 开户处理 /// </summary> /// <param name="msg"></param> private static void UserRegister(UserRegisterRespMsg 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 != null) { user.identity_id = msg.UserId; //TODO 丰付企业认证返回anonymous user.real_name = !msg.Name.Equals("anonymous") ? msg.Name : user.real_name; //在开户中进行了实名认证,收取手续费 if (string.IsNullOrEmpty(user.token)) { UserAuthFee(context, user.id); } context.SubmitChanges(); msg.HasHandle = true; } else { msg.Remarks = "没有找到平台账户,UserId:" + msg.UserIdIdentity; } } } } catch (Exception ex) { msg.Remarks = "内部错误:" + ex.Message; } }
private void RptBind(string _keyword) { page = DTRequest.GetQueryInt("page", 1); //txtKeywords.Text = keywords; var query = new Agp2pDataContext().li_loaners .Where(q => q.dt_users.real_name.Contains(_keyword) || q.dt_users.mobile.Contains(_keyword) || q.dt_users.id_card_number.Contains(_keyword)); totalCount = query.Count(); rptList.DataSource = query.OrderByDescending(q => q.last_update_time).Skip(pageSize * (page - 1)).Take(pageSize).ToList(); rptList.DataBind(); //绑定页码 txtPageNum.Text = pageSize.ToString(); string pageUrl = Utils.CombUrlTxt("loaner_list.aspx", "keywords={0}&page={1}", txtKeywords.Text, "__id__"); PageContent.InnerHtml = Utils.OutPageList(pageSize, page, totalCount, pageUrl, 8); }
public new static string AjaxDeleteAddress(int addressId) { var userInfo = GetUserInfoByLinq(); HttpContext.Current.Response.TrySkipIisCustomErrors = true; if (userInfo == null) { HttpContext.Current.Response.StatusCode = (int)HttpStatusCode.Unauthorized; return("请先登录"); } var context = new Agp2pDataContext(); var addressBook = context.dt_user_addr_book.SingleOrDefault(b => b.id == addressId); context.dt_user_addr_book.DeleteOnSubmit(addressBook); context.SubmitChanges(); return("删除成功"); }
public void TestSumapayApi() { //1.请求前台接口 //1.1发送请求 var msgReq = new UserRegisterReqMsg(1030, "18681406981", "罗明星", "440233198602010019", "0"); MessageBus.Main.Publish(msgReq); //正式请求时,进行如下异步调用 //MessageBus.Main.PublishAsync(msgReq, s => //{ // Utils.HttpPost(msgReq.ApiInterface, msgReq.RequestContent); //}); //1.2模拟响应返回 Agp2pDataContext context = new Agp2pDataContext(); var responseLog = new li_pay_response_log() { request_id = msgReq.RequestId, result = "00000", status = (int)Agp2pEnums.SumapayResponseEnum.Return, response_time = DateTime.Now, response_content = "{request:'" + msgReq.RequestId + "',result:'00000'}" }; context.li_pay_response_log.InsertOnSubmit(responseLog); //1.3发送响应消息 var respMsg = BaseRespMsg.NewInstance <UserRegisterRespMsg>(responseLog.response_content); MessageBus.Main.PublishAsync(respMsg, s => { if (respMsg.HasHandle) { var req = context.li_pay_request_log.SingleOrDefault(r => r.id == responseLog.request_id); req.complete_time = DateTime.Now; req.status = (int)Agp2pEnums.SumapayRequestEnum.Complete; responseLog.user_id = respMsg.UserIdIdentity; responseLog.status = (int)Agp2pEnums.SumapayResponseEnum.Complete; } responseLog.remarks = respMsg.Remarks; context.SubmitChanges(); //Assert.IsTrue(s.IsCompleted); }); }
private static void HandleBankTransactionCreatedMsg(li_bank_transactions tr) { if (tr.type != (int)Agp2pEnums.BankTransactionTypeEnum.Withdraw) { return; } var context = new Agp2pDataContext(); var createTime = tr.create_time; var content = $"用户 {tr.li_bank_accounts.dt_users.GetFriendlyUserName()} 于 {createTime} 申请了提现 {tr.value}"; GetMessageSubscribers(context, Agp2pEnums.ManagerMessageSourceEnum.UserWithdrawApply).ForEach(m => { context.AppendAdminMessage(m, Agp2pEnums.ManagerMessageSourceEnum.UserWithdrawApply, "用户申请提现", content, createTime); }); context.SubmitChanges(); ManagerMessageHubFacade.Instance.OnNewMsg(); }
private static void HandleBankTransactionFinishedMsg(li_bank_transactions tr) { if (tr.type != (int)Agp2pEnums.BankTransactionTypeEnum.Charge || tr.status != (int)Agp2pEnums.BankTransactionStatusEnum.Confirm) { return; } var context = new Agp2pDataContext(); var createTime = tr.create_time; var content = $"用户 {tr.dt_users.GetFriendlyUserName()} 于 {createTime} 成功充值了 {tr.value}"; GetMessageSubscribers(context, Agp2pEnums.ManagerMessageSourceEnum.UserRechargeSuccess).ForEach(m => { context.AppendAdminMessage(m, Agp2pEnums.ManagerMessageSourceEnum.UserRechargeSuccess, "用户充值成功", content, createTime); }); context.SubmitChanges(); ManagerMessageHubFacade.Instance.OnNewMsg(); }
private static void HandleProjectRepaidMsg(int repaymentTaskId) { var context = new Agp2pDataContext(); var repaymentTask = context.li_repayment_tasks.Single(task => task.id == repaymentTaskId); var content = repaymentTask.li_projects.IsNewbieProject1() ? string.Format("新手标于 {0} 回款本金 {1},利息 {2} 到 {3}", repaymentTask.repay_at, repaymentTask.repay_principal, repaymentTask.repay_interest, repaymentTask.dt_users.GetFriendlyUserName()) : string.Format("项目 {0} 已于 {1} 进行了第 {2} 期回款,共计回款本金:{3},利息:{4}", repaymentTask.li_projects.title, repaymentTask.repay_at, repaymentTask.GetRepaymentTaskProgress(), repaymentTask.repay_principal, repaymentTask.repay_interest); GetMessageSubscribers(context, Agp2pEnums.ManagerMessageSourceEnum.ProjectRepaid).ForEach(m => { context.AppendAdminMessage(m, Agp2pEnums.ManagerMessageSourceEnum.ProjectRepaid, "项目回款", content, repaymentTask.repay_at.Value); }); context.SubmitChanges(); ManagerMessageHubFacade.Instance.OnNewMsg(); }
private static void HandleDelayInvest(int projectTransactionId, DateTime investTime) { var context = new Agp2pDataContext(); var agent = context.dt_users.FirstOrDefault(u => u.dt_user_groups.title == AutoRepay.AgentGroup); try { if (agent == null) { throw new InvalidOperationException("没有找到中间人组,不能发送提醒短信"); } if (string.IsNullOrWhiteSpace(agent.mobile)) { throw new InvalidOperationException("中间人没有设置手机,不能发送提醒短信"); } var ptr = context.li_project_transactions.Single(ptr0 => ptr0.id == projectTransactionId); var huoqiBuyableClaimsAmount = TransactionFacade.QueryHuoqiBuyableClaimsAmount(context, ptr.li_projects, agent.id); var delayInvested = ptr.li_projects.li_project_transactions.Where( tr => tr.type == (int)Agp2pEnums.ProjectTransactionTypeEnum.Invest && tr.status == (int)Agp2pEnums.ProjectTransactionStatusEnum.Pending) .Aggregate(0m, (sum, tr) => sum + tr.principal); var msgContent = $"用户总共投资了活期项目 {ptr.li_projects.title} {delayInvested.ToString("c")},但活期债权本金总额({huoqiBuyableClaimsAmount.ToString("c")})不足,请尽快处理"; var errorMsg = string.Empty; if (!SMSHelper.SendTemplateSms(agent.mobile, msgContent, out errorMsg)) { context.AppendAdminLogAndSave("Agent", "发送提醒中间人买入债权短信失败:" + errorMsg); } else { context.AppendAdminLogAndSave("Agent", "发送提醒中间人买入债权短信成功:" + msgContent); } } catch (Exception ex) { context.AppendAdminLogAndSave("Agent", "发送提醒中间人买入债权短信失败:" + ex.GetSimpleCrashInfo()); } }
public void Day01() { Common.DeltaDay(realDate, 0); Common.AutoRepaySimulate(); Common.PublishProject("PT3", 2, 30000, 5); var investor = new Agp2pDataContext().dt_users.Single(u => u.user_name == UserA); HongBaoActivity.GiveUser(investor.id, 100, 10); Common.InvestProject(UserA, "PT3", 5000); Common.InvestProject(UserA, "PT3", 5000); Common.InvestProject(UserB, "PT3", 20000); Common.ProjectStartRepay("PT3"); Common.AutoRepaySimulate(); }
protected void Page_Load(object sender, EventArgs e) { string action = DTRequest.GetFormString("action"); if (action.Equals("recharge") || action.Equals("bankgateway") || action.Equals("wap"))//测试充值 { int user_id = Utils.StrToInt(DTRequest.GetFormString("user_id"), 0); string amount = DTRequest.GetFormString("amount"); //创建充值订单 var context = new Agp2pDataContext(); var charge_order = context.Charge(user_id, decimal.Parse(amount), Agp2pEnums.PayApiTypeEnum.Lianlianpay); //请求连连快捷支付接口 var service = new LianlianpayService(); string sHtmlText = ""; if (action.Equals("recharge")) { var sParaTemp = getParamDict(user_id); sHtmlText = service.BuildReChargeFormHtml(sParaTemp, charge_order.no_order, charge_order.create_time.ToString("yyyyMMddHHmmss"), amount, user_id.ToString(), Request.UserHostAddress); } else if (action.Equals("wap")) { //手机端wap支付 var sParaTemp = getParamDict(user_id); sHtmlText = service.BuildReChargeFormWapHtml(charge_order.no_order, charge_order.create_time.ToString("yyyyMMddHHmmss"), amount, user_id.ToString(), sParaTemp["id_no"], sParaTemp["acct_name"]); } else { //获取银行编号 string bankName = DTRequest.GetFormString("bankcode"); int bankCode = (int)(Agp2pEnums.LianlianpayBankCodeEnum)Enum.Parse(typeof(Agp2pEnums.LianlianpayBankCodeEnum), bankName); SortedDictionary <string, string> sParaTemp = new SortedDictionary <string, string>(); sHtmlText = service.BuildReChargeFormBankGateWayHtml(sParaTemp, charge_order.no_order, charge_order.create_time.ToString("yyyyMMddHHmmss"), amount, user_id.ToString(), Request.UserHostAddress, "0" + bankCode); } Response.Write(sHtmlText); } else//测试查询支付订单 { var service = new LianlianpayService(); string returnText = service.PostQueryOrder(DTRequest.GetFormString("no_order"), DTRequest.GetFormString("dt_order")); } }
public static void HandleTimerMsg(TimerMsg.Type timerName, bool startUp) { if (timerName != TimerMsg.Type.AutoRepayTimer) { return; } var repayTime = DateTime.Now; var context = new Agp2pDataContext(); // 找出过期的券并标记为过期 context.li_activity_transactions.Where(a => a.activity_type == (int)Agp2pEnums.ActivityTransactionActivityTypeEnum.InterestRateTicket && a.status == (int)Agp2pEnums.ActivityTransactionStatusEnum.Acting) .AsEnumerable() .ForEach(atr => new InterestRateTicket(atr).SetCancelIfExpired()); context.SubmitChanges(); }
protected void btnBuy_OnClick(object sender, EventArgs e) { var buyAmount = Request["__EVENTARGUMENT"]; int claimId = Convert.ToInt32(((LinkButton)sender).CommandArgument); selectedAgent = Convert.ToInt32(ddlAgent.SelectedValue); try { TransactionFacade.BuyClaim(context, claimId, selectedAgent, Convert.ToDecimal(buyAmount)); context = new Agp2pDataContext(); RptBind(); JscriptMsg("买入债权成功", "", "Success"); } catch (Exception ex) { JscriptMsg("买入债权失败:" + ex.Message, "", "Success"); } }
private void SetPasswordByMobile(string verifyCode, string pwd, bool forTransactPassword, Action <int, string> callback) { if (string.IsNullOrWhiteSpace(verifyCode) || string.IsNullOrWhiteSpace(pwd)) { callback((int)HttpStatusCode.BadRequest, "参数不正确"); return; } var cachedCode = (string)SessionHelper.Get("mobile_verify_code"); if (!string.IsNullOrWhiteSpace(cachedCode) && verifyCode == cachedCode) { var context = new Agp2pDataContext(); try { var user = context.dt_users.SingleOrDefault(u => u.mobile == (string)SessionHelper.Get("verifying_mobile")); if (user == null) { callback((int)HttpStatusCode.NotFound, "不存在设有该电话号码的用户"); return; } if (forTransactPassword) { user.pay_password = Utils.MD5(pwd); } else { user.password = DESEncrypt.Encrypt(pwd, user.salt); } context.SubmitChanges(); SessionHelper.Remove("mobile_verify_code"); callback((int)HttpStatusCode.OK, "密码重置成功"); } catch (Exception ex) { callback((int)HttpStatusCode.OK, "密码重置失败,有多个用户的电话号码同时匹配该号码,请联系客服"); } } else { callback((int)HttpStatusCode.PreconditionFailed, "电话验证码不正确或已失效"); } }
private static void DoHistoryFixing(Agp2pDataContext context, li_wallet_histories his) { // 计算出偏差:和上一个历史记录对比后得出原待收益 var prevHis = his.dt_users.li_wallet_histories.OrderByDescending(h => h.create_time) .First(h => h.create_time < his.create_time); var originalProfiting = his.profiting_money - prevHis.profiting_money; var project = his.li_project_transactions.li_projects; var realInvestment = project.li_project_transactions.Where( tr => tr.investor == his.user_id && tr.type == (int)Agp2pEnums.ProjectTransactionTypeEnum.Invest && tr.status == (int)Agp2pEnums.ProjectTransactionStatusEnum.Success).Sum(pt => pt.principal); // 计算出正确的待收益金额和:通过 GenerateRepayTransactions var myPtr = project.li_repayment_tasks.AsEnumerable().SelectMany( t => TransactionFacade.GenerateRepayTransactions(t, t.repay_at ?? t.should_repay_time)) .Where(ptr => ptr.investor == his.user_id) .ToList(); var predictProfiting = myPtr.Sum(pt => pt.interest.GetValueOrDefault()); var predictInvesting = myPtr.Sum(pt => pt.principal); if (realInvestment != predictInvesting) { throw new Exception("归还的本金不等于投入的本金"); } // 修正往后的历史 if (predictProfiting != originalProfiting) { var deltaProfiting = predictProfiting - originalProfiting; var prefixHis = his.dt_users.li_wallet_histories.OrderByDescending(h => h.create_time) .Where(h => his.create_time <= h.create_time).ToList(); Debug.WriteLine(string.Format("修正 {0} 用户从 {1} 开始出现待收益偏差:{2},影响历史记录 {3} 条", his.dt_users.GetFriendlyUserName(), his.create_time, deltaProfiting, prefixHis.Count)); prefixHis.ForEach(h => { h.profiting_money += deltaProfiting; }); } }
public new static string AjaxAppendAddress(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("请先登录"); } /*if (!new Regex(@"^\d{11,}$").IsMatch(orderPhone)) * { * HttpContext.Current.Response.StatusCode = (int) HttpStatusCode.BadRequest; * return "手机号码格式不正确"; * }*/ var context = new Agp2pDataContext(); var addressCount = context.dt_user_addr_book.Where(a => a.user_id == userInfo.id).Count(); if (addressCount >= 2) { return("最多只能添加2个收获地址"); } var addressBook = new dt_user_addr_book { user_id = userInfo.id, user_name = userInfo.real_name, accept_name = orderName, area = area, address = address, mobile = orderPhone, telphone = orderPhone, email = "", post_code = postalCode, is_default = 0, add_time = DateTime.Now, }; context.dt_user_addr_book.InsertOnSubmit(addressBook); context.SubmitChanges(); return("保存收货地址信息成功"); }
/// <summary> /// 个人投标/自动投标 响应 /// </summary> /// <param name="msg"></param> private static void Bid(BidRespMsg msg) { try { //检查请求处理结果 if (msg.CheckResult()) { //检查签名 if (msg.CheckSignature()) { #if !DEBUG //同步返回平台不做处理 if (msg.Result.Equals("00001")) return; #endif //查找是否使用了加息券 var context = new Agp2pDataContext(); /*TransactionFacade.Invest((int)msg.UserIdIdentity, msg.ProjectCode, Utils.StrToDecimal(msg.Sum, 0), msg.RequestId, Convert.ToInt32(ticketId));*/ var ticketId = context.li_jiaxiquan_transaction.SingleOrDefault(m => m.requestId == msg.RequestId && m.userId == msg.UserIdIdentity).remarks; //查找对应的交易流水 var trans = context.li_project_transactions.SingleOrDefault(u => u.no_order == msg.RequestId); if (trans != null) { if (trans.status == (int) Agp2pEnums.ProjectTransactionStatusEnum.Pending) { context.ConfirmProjectTransaction(trans.id, Convert.ToInt32(ticketId)); //TODO 检查用户资金信息 msg.HasHandle = true; } } else { msg.Remarks = "没有找到平台交易流水记录,交易流水号为:" + msg.RequestId; } } } } catch (Exception ex) { msg.Remarks = "内部错误:" + ex.Message; } }
protected string GetQuestionnaireResult(int questionnaireId) { var context = new Agp2pDataContext(); var userInfo = GetUserInfoByLinq(context); var score = 0; HttpContext.Current.Response.TrySkipIisCustomErrors = true; if (userInfo == null) { HttpContext.Current.Response.StatusCode = (int)HttpStatusCode.Unauthorized; return("请先登录"); } // 返回的格式:{"answer": ["A", "A&B", ...], "score": 999} var answers = userInfo.li_questionnaire_results.Where(q => q.questionnaireId == questionnaireId) .OrderBy(q => q.questionId).Select(q => q.answer).ToList(); score = Convert.ToInt32(SumOfScore((Agp2pEnums.QuestionnaireEnum)questionnaireId, answers)); return(score.ToString()); }
public static int GiveUser(int userId, decimal value) { var context = new Agp2pDataContext(); var trs = new li_activity_transactions { user_id = userId, create_time = DateTime.Now, value = 0, // 投资了项目后再设置 details = JsonConvert.SerializeObject(new { Value = value }), type = (byte)Agp2pEnums.ActivityTransactionTypeEnum.Gain, status = (byte)Agp2pEnums.ActivityTransactionStatusEnum.Acting, activity_type = (byte)Agp2pEnums.ActivityTransactionActivityTypeEnum.TrialTicket, }; context.li_activity_transactions.InsertOnSubmit(trs); context.SubmitChanges(); return(trs.id); }
public void FixProfitingMoneyBias() { /* 2016-02-15 * 调试跟踪: * 修正 18925950154(覃菲) 用户从 2016/1/18 9:39:45 开始出现待收益偏差:0.01,影响历史记录 26 条 * 修正 13612512742(陈茂强) 用户从 2016/1/21 9:36:22 开始出现待收益偏差:0.01,影响历史记录 78 条 * 修正 13612512742(陈茂强) 用户从 2016/1/21 14:06:34 开始出现待收益偏差:-0.01,影响历史记录 75 条 * 修正 15816951818(庞敏清) 用户从 2016/1/22 16:06:40 开始出现待收益偏差:-0.01,影响历史记录 97 条 * 修正 13612512742(陈茂强) 用户从 2016/1/25 9:13:54 开始出现待收益偏差:0.01,影响历史记录 60 条 * 修正 13612512742(陈茂强) 用户从 2016/1/26 16:25:53 开始出现待收益偏差:-0.01,影响历史记录 51 条 * 修正 13612512742(陈茂强) 用户从 2016/1/28 15:11:21 开始出现待收益偏差:0.01,影响历史记录 39 条 */ var context = new Agp2pDataContext(); var biasSources = context.li_wallet_histories.Where(h => new DateTime(2016, 1, 18) < h.create_time) .Where(h => h.action_type == (int)Agp2pEnums.WalletHistoryTypeEnum.InvestSuccess).ToList(); biasSources.ForEach(h => DoHistoryFixing(context, h)); //context.SubmitChanges(); }
/// <summary> /// 重新启动延迟发标的计划任务 /// </summary> public void DelayedRelease() { var linqContext = new Agp2pDataContext(); var project = linqContext.li_projects.Where(p => p.status == (int)Agp2pEnums.ProjectStatusEnum.FinancingAtTime).ToList(); for (int i = 0; i < project.Count; i++) { //启动进程 TimeSpan time = Convert.ToDateTime(project[i].publish_time).Subtract(DateTime.Now); if ((int)time.TotalMilliseconds > 600) { MessageBus.Main.PublishDelay(new ProjectSchedulePublishMsg(project[i].id), (int)time.TotalMilliseconds); } else { project[i].status = (int)Agp2pEnums.ProjectStatusEnum.Financing; } } linqContext.SubmitChanges(); }
/// <summary> /// 发送本息到账请求 /// </summary> /// <param name="projectCode"></param> /// <param name="sum"></param> /// <param name="repayTaskId">定期为还款计划id,活期为转出人id</param> /// <param name="isEarlyPay"></param> /// <param name="huoqi"></param> /// <param name="callBack"></param> public static void SendReturnPrinInte(int projectCode, string sum, int repayTaskId, bool isEarlyPay, bool isHuoqi) { var context = new Agp2pDataContext(); //创建本息到账请求并设置分账列表 var returnPrinInteReqMsg = new ReturnPrinInteReqMsg(projectCode, sum, isHuoqi); //定期项目需计算全部投资者本息明细 var repayRask = context.li_repayment_tasks.SingleOrDefault(r => r.id == repayTaskId); var transList = TransactionFacade.GenerateRepayTransactions(repayRask, DateTime.Now); returnPrinInteReqMsg.SetSubledgerList(transList); returnPrinInteReqMsg.Remarks = $"isEarly=false&repayTaskId={repayTaskId}&isHuoqi={isHuoqi}"; //发送请求 MessageBus.Main.PublishAsync(returnPrinInteReqMsg, msg => { //处理请求同步返回结果 var returnPrinInteRespMsg = BaseRespMsg.NewInstance <ReturnPrinInteRespMsg>(msg.SynResult); MessageBus.Main.PublishAsync(returnPrinInteRespMsg); }); }
public static void DoRepay(TimerMsg.Type timerType, bool onTime) { if (timerType != TimerMsg.Type.AutoRepayTimer) { return; } if (ConfigLoader.loadSiteConfig().enableAutoRepay == 0) { return; } var context = new Agp2pDataContext(); var shouldRepayTask = context.li_repayment_tasks.Where( t => t.status == (int)Agp2pEnums.RepaymentStatusEnum.Unpaid && t.should_repay_time.Date <= DateTime.Today).ToList(); if (!shouldRepayTask.Any()) { return; } // 优先进行特殊项目的回款 shouldRepayTask.OrderByDescending(t => t.li_projects.dt_article_category.sort_id).ForEach(ta => { //TODO 特殊项目回款处理 //if (ta.li_projects.IsNewbieProject()) //{ // context.ExecuteRepaymentTask(ta.id); //} //else //调用托管本息到账接口,在本息到账异步响应中执行还款计划 RequestApiHandle.SendReturnPrinInte(ta.project, (ta.repay_interest + ta.repay_principal).ToString("f"), ta.id, false, ta.li_projects.IsHuoqiProject()); }); context.AppendAdminLogAndSave("AutoRepay", "今日待还款项目自动还款:" + shouldRepayTask.Count); // 活期项目不发兑付公告 SendRepayNotice(shouldRepayTask.Where(t => !t.li_projects.IsHuoqiProject()).ToList(), context); }
private IEnumerable <BondTransaction> QueryProjectTransactions() { var context = new Agp2pDataContext(); IQueryable <li_company_inoutcome> query = context.li_company_inoutcome.Where( ptr => ptr.type == (int)Agp2pEnums.OfflineTransactionTypeEnum.BondFee); if (categoryId > 0) { query = query.Where(q => q.li_projects.category_id == categoryId); } if (!string.IsNullOrWhiteSpace(txtKeywords.Text)) { query = query.Where(b => b.dt_users.user_name.Contains(txtKeywords.Text) || b.dt_users.real_name.Contains(txtKeywords.Text)); } if (!string.IsNullOrWhiteSpace(txtStartTime.Text)) { query = query.Where(h => Convert.ToDateTime(txtStartTime.Text) <= h.create_time.Date); } if (!string.IsNullOrWhiteSpace(txtEndTime.Text)) { query = query.Where(h => h.create_time.Date <= Convert.ToDateTime(txtEndTime.Text)); } totalCount = query.Count(); return(query.OrderByDescending(ptr => ptr.create_time) .AsEnumerable() .Zip(Utils.Infinite(1), (prt, no) => new { prt, no }).Select(pprt => new BondTransaction { index = pprt.no, income = pprt.prt.income, occurTime = pprt.prt.create_time.ToString("yyyy-MM-dd HH:mm"), remark = pprt.prt.remark, user = string.IsNullOrEmpty(pprt.prt.dt_users.real_name) ? pprt.prt.dt_users.user_name : pprt.prt.dt_users.real_name, project = pprt.prt.li_projects.title, category = pprt.prt.li_projects.dt_article_category.title }).AsQueryable()); }
private static void HandleUserLoginMsg(int userId) { var context = new Agp2pDataContext(); var user = context.dt_users.Single(u => u.id == userId); var hongbaos = user.li_activity_transactions.Where( t => t.activity_type == (int)Agp2pEnums.ActivityTransactionActivityTypeEnum.HongBao && t.status == (int)Agp2pEnums.ActivityTransactionStatusEnum.Acting).AsEnumerable() .Select(a => new HongBao(a)).ToList(); hongbaos.ForEach(h => { if (h.GetDeadline() < DateTime.Now.Date) { // 奖券已过期,标记为失效 // var invested = h.GetInvested(); TODO 将投资金额转移到未过期的红包 h.SetInvested(null); h.Cancel(); } }); context.SubmitChanges(); }
protected List <Dictionary <string, string> > get_inviter_bonus_ranking_list() // 当月被推荐人的投资总额排名 { var context = new Agp2pDataContext(); var now = DateTime.Now; return(context.li_invitations.GroupBy(inv => inv.dt_users1, inv => inv.dt_users) .ToDictionary(g => g.Key, g => g.SelectMany(u => u.li_project_transactions.Where( ptr => ptr.create_time.Year == now.Year && ptr.create_time.Month == now.Month && ptr.type == (int)Agp2pEnums.ProjectTransactionTypeEnum.Invest && ptr.status == (int)Agp2pEnums.ProjectTransactionStatusEnum.Success) .Select(ptr => ptr.principal)) .Sum()) .OrderByDescending(d => d.Value) .Take(10) .Select(pair => new Dictionary <string, string> { { "inviter", Utils.GetUserNameHidden(pair.Key.user_name) }, { "inviteesInvestmentSum", pair.Value.ToString("c") } }).ToList()); }
private static void DoCheckOverTimePaid(TimerMsg.Type timerType, bool onTime) { if (timerType != TimerMsg.Type.AutoRepayTimer) { return; } var db = new Agp2pDataContext(); var overTime = db.li_repayment_tasks.Where( r => r.status == (int)Agp2pEnums.RepaymentStatusEnum.Unpaid && DateTime.Now > r.should_repay_time) .ToList(); if (!overTime.Any()) { return; } overTime.ForEach(o => o.status = (int)Agp2pEnums.RepaymentStatusEnum.OverTime); db.SubmitChanges(); }
private List <RankItem> QueryRankUser() { var context = new Agp2pDataContext(); var option = new DataLoadOptions(); option.LoadWith <dt_users>(u => u.li_project_transactions); option.LoadWith <dt_users>(u => u.li_invitations1); option.LoadWith <dt_users>(u => u.li_wallets); context.LoadOptions = option; // 限制当前管理员对会员的查询 var canAccessGroups = context.li_user_group_access_keys.Where(k => k.owner_manager == GetAdminInfo().id).Select(k => k.user_group).ToArray(); var users = context.dt_users.Where(w => !canAccessGroups.Any() || canAccessGroups.Contains(w.group_id)) .Where(u => u.user_name.Contains(txtKeywords.Text) || u.real_name.Contains(txtKeywords.Text) || u.mobile.Contains(txtKeywords.Text)) .Where(u => 0 < u.li_invitations1.Count || 0 < u.li_wallets.total_investment) .ToList(); var startTime = string.IsNullOrWhiteSpace(txtStartTime.Text) ? (DateTime?)null : Convert.ToDateTime(txtStartTime.Text); var endTime = string.IsNullOrWhiteSpace(txtEndTime.Text) ? (DateTime?)null : Convert.ToDateTime(txtEndTime.Text); return(users.Select(u => new RankItem(u, startTime, endTime)).Where(r => r.InvestmentSum > 0 || r.InviteeCount > 0 || r.InviteeInvestmentSum > 0).ToList()); }
/// <summary> /// 债权转让 /// </summary> /// <param name="msg"></param> private static void CreditAssignment(CreditAssignmentRespMsg 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_project_transactions.SingleOrDefault(p => p.no_order == msg.OriginalRequestId); if (trans != null) { TransactionFacade.BuyClaim(context, trans.li_claims_invested.OrderByDescending(c => c.createTime) .First(c => c.status == (int)Agp2pEnums.ClaimStatusEnum.NeedTransfer) .id, (int)msg.UserIdIdentity, Utils.StrToDecimal(msg.AssignmentSum, 0)); msg.HasHandle = true; } else { msg.Remarks = "没有找到平台项目,项目编号为:" + msg.ProjectCode; } } } } catch (Exception ex) { msg.Remarks = "内部错误:" + ex.Message; } }
/// <summary> /// 新手标第一期自动返10元(停用) /// </summary> /// <param name="timerName"></param> /// <param name="onTime"></param> private static void HandleTimerMsg(TimerMsg.Type timerName, bool onTime) { if (timerName != TimerMsg.Type.AutoRepayTimer) { return; } var context = new Agp2pDataContext(); var shouldRepayTask = context.li_repayment_tasks.Where( t => t.only_repay_to != null && (t.status == (int)Agp2pEnums.RepaymentStatusEnum.Unpaid || t.status == (int)Agp2pEnums.RepaymentStatusEnum.OverTime) && t.should_repay_time.Date <= DateTime.Today).ToList(); if (!shouldRepayTask.Any()) { return; } shouldRepayTask.ForEach(ta => context.ExecuteRepaymentTask(ta.id)); context.AppendAdminLogAndSave("AutoRepay", "新手体验标自动还款:" + string.Join(", ", shouldRepayTask.Select(t => t.dt_users.user_name).ToArray())); }