忽略dll文件git

This commit is contained in:
“wanyongkang”
2023-07-29 10:19:42 +08:00
parent 7f97317bcc
commit b562aba2b1
3868 changed files with 63608 additions and 385427 deletions

View File

@@ -1,68 +1,68 @@
@using Hncore.Pass.Vpn.Domain
@using Hncore.Infrastructure.Data
@using Hncore.Infrastructure.Extension
@model PageData<ArticleEntity>
@{
var type = this.Context.Request.GetInt("Catalog");
}
<div class="quanjushousuo">
<form asp-action="Search" asp-controller="Article" method="get">
<p><input type="text" name="KeyWord" placeholder="请输入问题关键词" /><button type="submit" class="btnOrange">搜索全部</button></p>
<p class="hot">搜索热词:<span>账号无法登录</span><span>如何充值</span></p>
</form>
</div>
<div class="jiaocheng">
<div class="item">
<p><a asp-action="info" asp-controller="article" asp-route-id="3"><img src="~/m/img/ios.png"></a></p>
<p>苹果手机教程</p>
</div>
<div class="item">
<p><a asp-action ="info" asp-controller="article" asp-route-id="4"><img src="~/m/img/az.png"></a></p>
<p>安卓手机教程</p>
</div>
<div class="item">
<p><a asp-action="info" asp-controller="article" asp-route-id="5"><img src="~/m/img/mnq.png"></a></p>
<p>安卓模拟器教程</p>
</div>
<div class="item">
<p><a asp-action="info" asp-controller="article" asp-route-id="6"><img src="~/m/img/pc.png"></a></p>
<p>windows电脑教程</p>
</div>
<div class="item">
<p><a asp-action="info" asp-controller="article" asp-route-id="21"><img src="~/img/pc.png"></a></p>
<p>MAC电脑教程</p>
</div>
<div class="item">
<p><a asp-action="info" asp-controller="article" asp-route-id="10"><img src="~/img/pc.png"></a></p>
<p>软路由教程</p>
</div>
</div>
<div class="newsList">
<!-- Nav tabs -->
<ul class="nav nav-tabs" role="tablist">
<li role="presentation" class="@(type==1?"active":"")"><a href="?Catalog=1">聚IP头条</a></li>
<li role="presentation" class="@(type==2?"active":"")"><a href="?Catalog=2">优惠活动</a></li>
<li role="presentation" class="@(type==3?"active":"")"><a href="?Catalog=3">常见问题</a></li>
<li role="presentation" class="@(type==4?"active":"")"><a href="?Catalog=4">新手教程</a></li>
</ul>
<!-- Tab panes -->
<div class="tab-content">
<div role="tabpanel" class="tab-pane active" id="home">
<ul class="news">
@foreach (var item in Model.List)
{
<li><a asp-action="info" asp-controller="article" asp-route-id="@item.Id">@item.Title</a><span>@item.CreateTime.ToString("yyyy.MM.dd")</span></li>
}
</ul>
</div>
@*<div role="tabpanel" class="tab-pane" id="profile">2</div>
<div role="tabpanel" class="tab-pane" id="messages">3</div>
<div role="tabpanel" class="tab-pane" id="settings">4</div>*@
</div>
</div>
@using Hncore.Pass.Vpn.Domain
@using Hncore.Infrastructure.Data
@using Hncore.Infrastructure.Extension
@model PageData<ArticleEntity>
@{
var type = this.Context.Request.GetInt("Catalog");
}
<div class="quanjushousuo">
<form asp-action="Search" asp-controller="Article" method="get">
<p><input type="text" name="KeyWord" placeholder="请输入问题关键词" /><button type="submit" class="btnOrange">搜索全部</button></p>
<p class="hot">搜索热词:<span>账号无法登录</span><span>如何充值</span></p>
</form>
</div>
<div class="jiaocheng">
<div class="item">
<p><a asp-action="info" asp-controller="article" asp-route-id="3"><img src="~/m/img/ios.png"></a></p>
<p>苹果手机教程</p>
</div>
<div class="item">
<p><a asp-action ="info" asp-controller="article" asp-route-id="4"><img src="~/m/img/az.png"></a></p>
<p>安卓手机教程</p>
</div>
<div class="item">
<p><a asp-action="info" asp-controller="article" asp-route-id="5"><img src="~/m/img/mnq.png"></a></p>
<p>安卓模拟器教程</p>
</div>
<div class="item">
<p><a asp-action="info" asp-controller="article" asp-route-id="6"><img src="~/m/img/pc.png"></a></p>
<p>windows电脑教程</p>
</div>
<div class="item">
<p><a asp-action="info" asp-controller="article" asp-route-id="21"><img src="~/img/pc.png"></a></p>
<p>MAC电脑教程</p>
</div>
<div class="item">
<p><a asp-action="info" asp-controller="article" asp-route-id="10"><img src="~/img/pc.png"></a></p>
<p>软路由教程</p>
</div>
</div>
<div class="newsList">
<!-- Nav tabs -->
<ul class="nav nav-tabs" role="tablist">
<li role="presentation" class="@(type==1?"active":"")"><a href="?Catalog=1">聚IP头条</a></li>
<li role="presentation" class="@(type==2?"active":"")"><a href="?Catalog=2">优惠活动</a></li>
<li role="presentation" class="@(type==3?"active":"")"><a href="?Catalog=3">常见问题</a></li>
<li role="presentation" class="@(type==4?"active":"")"><a href="?Catalog=4">新手教程</a></li>
</ul>
<!-- Tab panes -->
<div class="tab-content">
<div role="tabpanel" class="tab-pane active" id="home">
<ul class="news">
@foreach (var item in Model.List)
{
<li><a asp-action="info" asp-controller="article" asp-route-id="@item.Id">@item.Title</a><span>@item.CreateTime.ToString("yyyy.MM.dd")</span></li>
}
</ul>
</div>
@*<div role="tabpanel" class="tab-pane" id="profile">2</div>
<div role="tabpanel" class="tab-pane" id="messages">3</div>
<div role="tabpanel" class="tab-pane" id="settings">4</div>*@
</div>
</div>

View File

@@ -1,45 +1,45 @@
@using Hncore.Pass.Vpn.Domain
@using Hncore.Infrastructure.Data
@using Hncore.Infrastructure.Extension
@model PageData<ArticleEntity>
@{
var type = this.Context.Request.GetInt("Catalog");
}
<div class="quanjushousuo">
<form asp-action="Search" asp-controller="Article" method="get">
<p><input type="text" name="KeyWord" placeholder="请输入问题关键词" /><button type="submit" class="btnOrange">搜索全部</button></p>
<p class="hot">搜索热词:<span>账号无法登录</span><span>如何充值</span></p>
</form>
</div>
<div class="jiaocheng">
<div class="item">
<p><a asp-action="info" asp-controller="article" asp-route-id="3"><img src="~/m/img/ios.png"></a></p>
<p>苹果手机教程</p>
</div>
<div class="item">
<p><a asp-action="info" asp-controller="article" asp-route-id="4"><img src="~/m/img/az.png"></a></p>
<p>安卓手机教程</p>
</div>
<div class="item">
<p><a asp-action="info" asp-controller="article" asp-route-id="5"><img src="~/m/img/mnq.png"></a></p>
<p>安卓模拟器教程</p>
</div>
<div class="item">
<p><a asp-action="info" asp-controller="article" asp-route-id="6"><img src="~/m/img/pc.png"></a></p>
<p>windows电脑教程</p>
</div>
</div>
<div class="newsList">
<div class="tab-content">
<div role="tabpanel" class="tab-pane active">
<ul class="news">
@foreach (var item in Model.List)
{
<li><a asp-action="info" asp-controller="article" asp-route-id="@item.Id">@item.Title</a><span>@item.CreateTime.ToString("yyyy.MM.dd")</span></li>
}
</ul>
</div>
</div>
</div>
@using Hncore.Pass.Vpn.Domain
@using Hncore.Infrastructure.Data
@using Hncore.Infrastructure.Extension
@model PageData<ArticleEntity>
@{
var type = this.Context.Request.GetInt("Catalog");
}
<div class="quanjushousuo">
<form asp-action="Search" asp-controller="Article" method="get">
<p><input type="text" name="KeyWord" placeholder="请输入问题关键词" /><button type="submit" class="btnOrange">搜索全部</button></p>
<p class="hot">搜索热词:<span>账号无法登录</span><span>如何充值</span></p>
</form>
</div>
<div class="jiaocheng">
<div class="item">
<p><a asp-action="info" asp-controller="article" asp-route-id="3"><img src="~/m/img/ios.png"></a></p>
<p>苹果手机教程</p>
</div>
<div class="item">
<p><a asp-action="info" asp-controller="article" asp-route-id="4"><img src="~/m/img/az.png"></a></p>
<p>安卓手机教程</p>
</div>
<div class="item">
<p><a asp-action="info" asp-controller="article" asp-route-id="5"><img src="~/m/img/mnq.png"></a></p>
<p>安卓模拟器教程</p>
</div>
<div class="item">
<p><a asp-action="info" asp-controller="article" asp-route-id="6"><img src="~/m/img/pc.png"></a></p>
<p>windows电脑教程</p>
</div>
</div>
<div class="newsList">
<div class="tab-content">
<div role="tabpanel" class="tab-pane active">
<ul class="news">
@foreach (var item in Model.List)
{
<li><a asp-action="info" asp-controller="article" asp-route-id="@item.Id">@item.Title</a><span>@item.CreateTime.ToString("yyyy.MM.dd")</span></li>
}
</ul>
</div>
</div>
</div>

View File

@@ -1,44 +1,44 @@
@using Hncore.Pass.Vpn.Domain
@using Hncore.Infrastructure.Extension
@model ArticleInfoMode
@{
}
<div class="quanjushousuo">
<form asp-action="Search" asp-controller="Article" method="get">
<p><input type="text" name="KeyWord" placeholder="请输入问题关键词" /><button type="submit" class="btnOrange">搜索全部</button></p>
<p class="hot">搜索热词:<span>账号无法登录</span><span>如何充值</span></p>
</form>
</div>
<div class="lujing">
<a href="/">首页</a>><span>@Model.Info.CatalogId.GetEnumDisplayName()</span>
</div>
<div class="lineBar">
</div>
<div class="dmain">
<p class="dtit">@Model.Info.Title</p>
@if(@Model.Info.Id == 3){
<div class="container" style="text-align: center;">
<h1 style="font-size: 2em;">视频教程</h1>
<video controls="controls" height="70%" name="media"><source src="http://mp4.juip.com/%E8%8B%B9%E6%9E%9C%E6%89%8B%E6%9C%BA%E6%95%99%E7%A8%8B.mp4" type="video/mp4"></video>
</div>
}
@if(@Model.Info.Id == 4){
<div class="container" style="text-align: center;">
<h1 style="font-size: 2em;">视频教程</h1>
<video controls="controls" height="70%" name="media"><source src="http://mp4.juip.com/%E5%AE%89%E5%8D%93%E6%89%8B%E6%9C%BA%E6%95%99%E7%A8%8B.mp4" type="video/mp4"></video>
</div>
}
@if(@Model.Info.Id == 5){
<div class="container" style="text-align: center;">
<h1 style="font-size: 2em;">视频教程</h1>
<video controls="controls" height="70%" name="media"><source src="http://mp4.juip.com/%E6%A8%A1%E6%8B%9F%E5%99%A8%E6%95%99%E7%A8%8B.mp4" type="video/mp4"></video>
</div>
}
<p class="dtime grayText">@Model.Info.CreateTime.ToString("yyyy.MM.dd")</p>
<p class="dcon">
@Html.Raw(Model.Info.Content)
</p>
</div>
@using Hncore.Pass.Vpn.Domain
@using Hncore.Infrastructure.Extension
@model ArticleInfoMode
@{
}
<div class="quanjushousuo">
<form asp-action="Search" asp-controller="Article" method="get">
<p><input type="text" name="KeyWord" placeholder="请输入问题关键词" /><button type="submit" class="btnOrange">搜索全部</button></p>
<p class="hot">搜索热词:<span>账号无法登录</span><span>如何充值</span></p>
</form>
</div>
<div class="lujing">
<a href="/">首页</a>><span>@Model.Info.CatalogId.GetEnumDisplayName()</span>
</div>
<div class="lineBar">
</div>
<div class="dmain">
<p class="dtit">@Model.Info.Title</p>
@if(@Model.Info.Id == 3){
<div class="container" style="text-align: center;">
<h1 style="font-size: 2em;">视频教程</h1>
<video controls="controls" height="70%" name="media"><source src="http://mp4.juip.com/%E8%8B%B9%E6%9E%9C%E6%89%8B%E6%9C%BA%E6%95%99%E7%A8%8B.mp4" type="video/mp4"></video>
</div>
}
@if(@Model.Info.Id == 4){
<div class="container" style="text-align: center;">
<h1 style="font-size: 2em;">视频教程</h1>
<video controls="controls" height="70%" name="media"><source src="http://mp4.juip.com/%E5%AE%89%E5%8D%93%E6%89%8B%E6%9C%BA%E6%95%99%E7%A8%8B.mp4" type="video/mp4"></video>
</div>
}
@if(@Model.Info.Id == 5){
<div class="container" style="text-align: center;">
<h1 style="font-size: 2em;">视频教程</h1>
<video controls="controls" height="70%" name="media"><source src="http://mp4.juip.com/%E6%A8%A1%E6%8B%9F%E5%99%A8%E6%95%99%E7%A8%8B.mp4" type="video/mp4"></video>
</div>
}
<p class="dtime grayText">@Model.Info.CreateTime.ToString("yyyy.MM.dd")</p>
<p class="dcon">
@Html.Raw(Model.Info.Content)
</p>
</div>

View File

@@ -1,39 +1,39 @@
<div class="container-fluid tAd">
<img src="~/img/tBanner.png">
</div>
<div class="container-fluid taobao_tintro text-center">
<p>您可通过淘宝付款系统自动赠送1元无限制优惠券。</p>
<p>购买任意套餐都可以使用相当于天卡半价每隔30天可参加一次即得1张。</p>
</div>
<div class="container tPeitu">
<img src="~/img/peitu.png">
</div>
<div class="container ttishi text-center">
—— 为方便充值及开通,请选择自己需要的产品的对应店铺 ——
</div>
<div class="container">
<div class="row tlink">
<div class="col-lg-3 col-xs-6 col-sm-6">
<a href="https://item.taobao.com/item.htm?spm=a230r.7195193.1997079397.8.5a165f8bWrye7I&id=537279953649&abbucket=4
" target="_blank"><img src="~/img/t1.png"></a>
</div>
<div class="col-lg-3 col-xs-6 col-sm-6">
<a href="https://item.taobao.com/item.htm?spm=a230r.7195193.1997079397.8.5a165f8b9jMT39&id=557842664450&abbucket=4
" target="_blank"><img src="~/img/t2.png"></a>
</div>
</div>
<div class="row tlink">
<div class="col-lg-3 col-xs-6 col-sm-6">
<a href="https://item.taobao.com/item.htm?spm=a230r.7195193.1997079397.8.5a165f8b9jMT39&id=557842664450&abbucket=4
" target="_blank"><img src="~/img/t3.png"></a>
</div>
<div class="col-lg-3 col-xs-6 col-sm-6">
<a href="https://item.taobao.com/item.htm?spm=a230r.7195193.1997079397.28.72145f8bwi5F1r&id=613389354570&abbucket=4" target="_blank"><img src="~/img/t4.png"></a>
</div>
</div>
<div class="container-fluid tAd">
<img src="~/img/tBanner.png">
</div>
<div class="container-fluid taobao_tintro text-center">
<p>您可通过淘宝付款系统自动赠送1元无限制优惠券。</p>
<p>购买任意套餐都可以使用相当于天卡半价每隔30天可参加一次即得1张。</p>
</div>
<div class="container tPeitu">
<img src="~/img/peitu.png">
</div>
<div class="container ttishi text-center">
—— 为方便充值及开通,请选择自己需要的产品的对应店铺 ——
</div>
<div class="container">
<div class="row tlink">
<div class="col-lg-3 col-xs-6 col-sm-6">
<a href="https://item.taobao.com/item.htm?spm=a230r.7195193.1997079397.8.5a165f8bWrye7I&id=537279953649&abbucket=4
" target="_blank"><img src="~/img/t1.png"></a>
</div>
<div class="col-lg-3 col-xs-6 col-sm-6">
<a href="https://item.taobao.com/item.htm?spm=a230r.7195193.1997079397.8.5a165f8b9jMT39&id=557842664450&abbucket=4
" target="_blank"><img src="~/img/t2.png"></a>
</div>
</div>
<div class="row tlink">
<div class="col-lg-3 col-xs-6 col-sm-6">
<a href="https://item.taobao.com/item.htm?spm=a230r.7195193.1997079397.8.5a165f8b9jMT39&id=557842664450&abbucket=4
" target="_blank"><img src="~/img/t3.png"></a>
</div>
<div class="col-lg-3 col-xs-6 col-sm-6">
<a href="https://item.taobao.com/item.htm?spm=a230r.7195193.1997079397.28.72145f8bwi5F1r&id=613389354570&abbucket=4" target="_blank"><img src="~/img/t4.png"></a>
</div>
</div>
</div>

View File

@@ -1,400 +1,400 @@
@model List<ProductModel>
@using Hncore.Pass.BaseInfo.Response
@using Hncore.Infrastructure.Serializer
@using Hncore.Pass.Vpn.Service
@using Hncore.Pass.Vpn.Domain
@using Microsoft.Extensions.Configuration
@inject ArticleService m_ArticleService
@inject IConfiguration m_Configuration
@{
ViewData["Title"] = "聚IP JUIP.COM-千万动态ip切换自建机房ip代理覆盖全国多款市面热销产品";
Layout = "_Layout";
UserLoginModel user = null;
if (this.Context.Request.Cookies.TryGetValue("userInfo", out string userCookie))
{
user = userCookie.FromJsonTo<UserLoginModel>();
}
var articleNews = await m_ArticleService.GetTop(12, ArticleCatalog.Top);
var activityNews = await m_ArticleService.GetTop(12, ArticleCatalog.Activity);
var helpsNews = await m_ArticleService.GetTop(12, ArticleCatalog.Help);
var QANews = await m_ArticleService.GetTop(12, ArticleCatalog.QA);
var baseUrl = m_Configuration["BaseInfoUrl"];
Func<string, string> P = (path) => $"{baseUrl}{path}";
var epoch = (DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000;
var countStr = epoch.ToString().Substring(0, 8);
}
<style>
.swiper-container-youshi .swiper-slide-active{
background:rgba(0,0,0.8);
}
.notice {
position: fixed;
width: 90%;
height: auto;
left: 27%;
top: 27%;
margin-left: -200px;
margin-top: -160px;
z-index: 3;
background: #fff;
border-radius: 10px;
box-shadow: 0px 6px 8px 6px #ccc;
display: flex;
flex-direction: row;
flex-wrap: wrap;
padding: 30px;
z-index: 10000000;
}
.notice p{
font-size: 25px;
}
</style>
<div style="display: none;">
<h1>自动换ip软件有什么用使用换ip软件的好处让你想不到</h1>
<p>许多业内人士人经常使用“换ip的软件”和“动态代理ip”这两个词。有时我们的计算机容易受到攻击。在这种情况下将突出显示IP地址更改工具的作用。它可以保护我们的计算机地址免受攻击。或者一些技术合作伙伴在自己的爬虫项目中使用此类换ip的软件时也会使用此类换ip的软件。换ip的软件的很大效果是可以隐藏实际ip地址。</p>
<p>许多朋友需要这项技术来保护计算机的安全。你能改一下ip地址吗答案是肯定的但操作相当麻烦因此生成了动态ip代理软件。您可以找到要更改的ip代理服务器例如我们的动态IP代理。</p>
<h1>如何为动态IP选择软件需要考虑哪些方面</h1>
<p>首先必须确保换ip的软件合法、合规并且IP地址也是合法的。换ip的软件是一种已获得批准证书的软件在全国主要城市拥有大量动态IP节点。第二换ip的软件稳定也很重要。您使用的动态代理IP就是您的使用它可以很好地确保您的Internet网络的稳定性。</p>
<p>最后让客户放心的售后服务也不容忽视。换ip的软件甚至客户服务和售后都是技术性的为客户提供比较好的方式。因此在购买相关换ip的软件时我们必须擦亮眼睛选择更多。</p>
<h2>换ip的软件优势</h2>
<p>1.换ip的软件技术资深程序员精心设计每个功能并不断更新和改进。</p>
<p>2.换ip的软件强大功能全面强大不断开发更多功能换ip的软件及时升级</p>
<p>3.换ip的软件使用方便均采用人性化设计智能化管理。只要我们能操作计算机我们就能操作我们的软件。此外我们还有一个换ip的软件教程。我们可以在阅读后操作换ip的软件</p>
<p>4.换ip的软件四个保证持续发展保证、技术服务保证、问题整改保证、真正授权保证让您的网络推广完全无忧</p>
<p>5.换ip的软件简单方便动态固态IP地址一键刷新一键批量测速自由选择全国线路自由选择全球ip代理和本地ip代理一键快速连接ip软件</p>
<h1>动态ip代理软件有什么特点选哪家动态ip代理软件公司更好</h1>
<p>合格的动态ip代理有哪些特点目前市场上有很多动态IP软件质量参差不齐。合格动态ip代理的特点是什么IP是一个网民的地址。有时网民需要多次更换IP。此时需要动态IP更改软件。</p>
<p>动态ip代理非常适合注册、验证、投票、运行号码、挂断、在线赚钱、推广、微信、微博、QQ、YY、QT、电子邮件、声誉、手机、PV等</p>
<p>动态ip代理比较明显的功能是自动更改IP地址智能分配IP并在每次断开和重新连接时自动更改IP。它具有IP容量大、速度快、稳定性高、安全性高等特点。您不必担心IP复制。</p>
<p>网络上有许多动态IP代理软件。从众多的动态IP代理软件中选择合适的软件是非常重要的。如何找到比较合适的动态IP代理服务提供商</p>
<p>1.动态IP代理还取决于它能否提供完美的服务。如果买后没有人进行售后服务使用中就会出现问题无处可寻所以完善的售后服务也很重要。</p>
<p>2.好的动态IP代理取决于IP的来源。如果在互联网上直接扫描IP质量很差使用时会发生冲突。因此最好使用自建服务器的代理这样获得的动态IP代理非常稳定。</p>
<p>这样我相信您可以找到适合自己使用的动态IP代理资源。动态IP代理软件更安全、更快。动态IP代理是你网络工作的好帮手</p>
  
<h1>如何电脑换ip软件让网站达到盈利的目的</h1>
 <p>IP地址是互联网接入的基本条件。我们都是通过IP地址上网的。计算机只有一个固定的IP地址。然而长期使用IP地址是非常不安全的并且会导致很多安全风险。</p>
  <p>互联网上存在一定的风险。用户在互联网上浏览网页时会留下自己的信息。这些信息大部分是私人信息。如果个人信息被恶意的人窃取这是非常危险的。因此必须加强网站的安全性能。只有这样才能保证用户的信息安全。熟悉互联网技术的人会定期更换IP因为他们知道将个人信息留在互联网上非常不安全可能会被犯罪分子窃取这也会危及他们自己的财产因此他们必须经常更换。</p>
  <p>确保个人信息安全的常用方法是自动更换IP地址。有许多电脑换ip软件可以在Internet上使用。除了确保我们的信息安全电脑换ip软件也可以用来赚取一些利润。</p>
  <p>现在很多人会自己开发一个网站。开发一个网站并不难。在学习了这个方法之后它非常简单。我们可以在互联网上看到各种各样的网站。这些网站中有些是由公司存档的有些是由个人存档的。这些网站可以为人们提供很多信息。电脑换ip软件方法是获得更多的浏览量。只要你的观点上升这意味着这个网站特别受欢迎。在这个时候你可以在网站上做一些广告或者用广告费赚一些钱。然而赚钱的前提是网站可以有浏览量。只有好的网站才能吸引人现在人们对网站的要求越来越高。糟糕的网页无法吸引人。只有想出一些方法这些网页才能继续发展。</p>
  <p>很多人会使用电脑换ip软件来实现web代理。Web代理有很多优点。它不仅可以保护用户的安全上网而且可以提高上网速度。用户在上网时非常关注个人隐私保护。他们不希望自己的个人隐私被泄露因此只有一个安全的网站才能让他们感到放心在使用电脑换ip软件后网站变得更加封闭。整个网络使用一个IP这是最安全的不会有安全风险。使用代理IP软件后您会发现网站上的信息根本没有泄露用户在浏览网页时会更加轻松。即使他们输入了一些个人信息也没关系。如果网站继续这样发展它将获得更多的收入。电脑换ip软件只需点击自动切换快速更换无需网卡IP地址可以随意更改</p>
</div>
<div class="banner">
<div class="buttonList">
<div class="item">
<a asp-action="soft" asp-controller="product"> <button type="button" class="btnBlue">客户端下载</button></a>
</div>
<div class="item">
<a asp-action="index" asp-controller="linelist"> <button type="button" class="btnBlue">IP线路表</button></a>
</div>
<div class="item">
<a asp-action="index" asp-controller="product"> <button type="button" class="btnOrange">免费试用</button></a>
</div>
</div>
</div>
<div class="titProducts">
<p>PRODUCTS</p>
<p>产品介绍</p>
</div>
<div class="conProducts">
<!-- Swiper -->
<div class="swiper-container">
<div class="swiper-wrapper">
@foreach (var item in Model.Where(m => m.Sort != 1000))
{
<div class="swiper-slide">
<div class="productCard">
@*<div class="item">
<img src="@P(item.Image)" />
</div>*@
<div class="item pName">
@item.Name
</div>
<div class="item">
@item.Profile
</div>
<div class="item showLine">
<a asp-action="index" asp-controller="linelist" asp-route-ProductId="@item.Id">查看线路表→</a>
</div>
<div class="item">
<a asp-action="index" asp-controller="product" asp-route-id="@item.Id"><button type="button" class="btnBlue">测试与购买</button></a>
</div>
</div>
</div>
}
</div>
<!-- Add Arrows -->
<div class="swiper-button-next"></div>
<div class="swiper-button-prev"></div>
</div>
</div>
<div class="youshi">
<!-- Swiper -->
<div class="swiper-container-youshi">
<div class="swiper-wrapper">
<div class="swiper-slide" style="background-image:url(./m/img/youshi-bg.png)">
<div class="youshiList">
<div class="item">
<img src="~/m/img/y1.png">
</div>
<div class="item">
全网产品最多IP库最大
</div>
<div class="item">
旗下有强子IP老鹰IP先锋IP星星IP等十几种动态IP多产品组合畅享IP库翻倍可用IP超1亿
</div>
</div>
</div>
<div class="swiper-slide" style="background-image:url(./img/youshi-bg.png)">
<div class="youshiList">
<div class="item">
<img src="~/m/img/y2.png">
</div>
<div class="item">
全设备全协议支持
</div>
<div class="item">
支持安卓iOS电脑windowslinux等系统。支持IPL2TPSSTP等协议
</div>
</div>
</div>
<div class="swiper-slide" style="background-image:url(./img/youshi-bg.png)">
<div class="youshiList">
<div class="item">
<img src="~/m/img/y3.png">
</div>
<div class="item">
用户独享宽带
</div>
<div class="item">
一号一拨绝不超拨快速切换平均带宽6-10兆最高可达50兆
</div>
</div>
</div>
<div class="swiper-slide" style="background-image:url(./img/youshi-bg.png)">
<div class="youshiList">
<div class="item">
<img src="~/m/img/y4.png">
</div>
<div class="item">
价低质优,免费测试
</div>
<div class="item">
全自营机房一手资源,价低质优,量大可联系客服获取最低价
</div>
</div>
</div>
<div class="swiper-slide" style="background-image:url(./img/youshi-bg.png)">
<div class="youshiList">
<div class="item">
<img src="~/m/img/y5.png">
</div>
<div class="item">
专属产品定制
</div>
<div class="item">
支持定制独立服务器,可针对特定的项目需求定制专用产品
</div>
</div>
</div>
<div class="swiper-slide" style="background-image:url(./img/youshi-bg.png)">
<div class="youshiList">
<div class="item">
<img src="~/m/img/y6.png">
</div>
<div class="item">
专业的服务团队
</div>
<div class="item">
资深售前售后1对1指导7*24小时实时响应竭诚为您服务
</div>
</div>
</div>
</div>
<!-- Add Pagination -->
<div class="swiper-pagination"></div>
</div>
</div>
<div class="map">
</div>
<div class="use">
</div>
<div class="titProducts">
<p>INFORMATION</p>
<p>教程&咨询</p>
</div>
<div class="newsList">
<!-- Nav tabs -->
<ul class="nav nav-tabs" role="tablist">
<li role="presentation" class="active"><a href="#home" aria-controls="home" role="tab" data-toggle="tab">聚IP头条</a></li>
<li role="presentation"><a href="#profile" aria-controls="profile" role="tab" data-toggle="tab">常见问题</a></li>
<li role="presentation"><a href="#messages" aria-controls="messages" role="tab" data-toggle="tab">新手教程</a></li>
<li role="presentation"><a href="#settings" aria-controls="settings" role="tab" data-toggle="tab">优惠活动</a></li>
</ul>
<!-- Tab panes -->
<div class="tab-content">
<div role="tabpanel" class="tab-pane active" id="home">
<ul class="news">
@foreach (var item in articleNews)
{
<li><a asp-action="info" asp-controller="article" asp-route-id="@item.Id"><span>@item.CreateTime.ToString("yyyy.MM.dd")</span>@item.Title</a></li>
}
</ul>
</div>
<div role="tabpanel" class="tab-pane" id="profile">
<ul class="news">
@foreach (var item in activityNews)
{
<li><a asp-action="info" asp-controller="article" asp-route-id="@item.Id"><span>@item.CreateTime.ToString("yyyy.MM.dd")</span>@item.Title</a></li>
}
</ul>
</div>
<div role="tabpanel" class="tab-pane" id="messages">
<ul class="news">
@foreach (var item in QANews)
{
<li><a asp-action="info" asp-controller="article" asp-route-id="@item.Id"><span>@item.CreateTime.ToString("yyyy.MM.dd")</span>@item.Title</a></li>
}
</ul>
</div>
<div role="tabpanel" class="tab-pane" id="settings">
<ul class="news">
@foreach (var item in helpsNews)
{
<li><a asp-action="info" asp-controller="article" asp-route-id="@item.Id"><span>@item.CreateTime.ToString("yyyy.MM.dd")</span>@item.Title</a></li>
}
</ul>
</div>
</div>
</div>
<div class="qixia">
<p>旗下产品</p>
<ul>
@foreach (var item in Model.Where(m => m.Sort != 1000))
{
<li><a asp-action="index" asp-controller="product" asp-route-id="@item.Id">@item.Name</a></li>
}
</ul>
</div>
<div class="linkus" style="display: block;">
<div class="item">
<p>联系我们</p>
<p>企业电话400 800 9925</p>
<p>客服QQ800101003</p>
<p>客服微信-售前:</p>
<img width="300px" src="~/img/kf_sq.jpg?123"><br>
<p>客服微信-售后:</p>
<img width="300px" src="~/img/kf_sh.jpg?1231">
<p>工作时间周一到周日8:30-23:00</p>
</div>
<div class="item">
<p>大客户/商务合作</p>
<p>电话/微信177 9666 8888</p>
<p>QQ70177252</p>
</div>
</div>
<div class="ewm">
<p><img src="~/m/img/ewm.png"></p>
<p class="banquan">copyright 2020 聚IP JUIP.COM 版权所有</p>
</div>
<div class="notice">
<div style="font-size: 15px;">
<p style="margin-top: 0px;text-align:center;width:100%;margin-bottom: 10px;color:red;background-color:#FFFF00;">公告</p>
<div style="color: red;text-align:center;">
<p>杜绝电信诈骗及任何违法行为</p>
<p>所有IP产品已记录日志,均保留6个月以上</p>
<p>发现违法行为直接提交网监部门处理</p>
</div>
<p style="margin-top: 10px;font-weight:bold;text-align:center;">聚IP兔年新春复工助力活动</p>
<div style="padding-left: 20px;">
@* <p>1.动态IP一毛钱一天每用户限一次~</p> *@
<p>1.新上蘑菇IP周卡送1天月卡送5天双月卡送1个月多买多送~</p>
<p>2.其他产品均有<span style="color: red;font-size:1.5em;font-weight:bold;">7.5</span>折活动~</p>
<p>3.需求5个以上可联系客服设置优惠折扣</p>
</div>
</div>
<p >
<a style="margin-left: 200%;margin-top:20px;cursor:pointer;font-size:25px;" onclick="know()" type="button" class="btn btn-primary" >我知道了</a>
</p>
</div>
<script type="text/javascript">
$('#myTabs a').click(function (e) {
e.preventDefault()
$(this).tab('show')
})
//var alert_info = "聚IP春节公告\n1春节不打烊自助购买24小时正常运行仅2月10日至2月18日人工在线时间为早10点到晚22点在此期间联系人工请尽量联系企业Q号号码为800101003其他联系方式可能回复不及时紧急联系电话为4008009925转1号线。\n2请勿相信外界谣言聚IP始终保持诚信经营对用户负责到底更不会出现跑路的情况\n312月10日-12月25日期间公司无人工客服在线给您造成不便敬请谅解为表达歉意因此公司特推出动态IP 一毛钱一天,有史以来最大的折扣和赠送力度!\n4并保证最低价买贵双倍退差价。同时聚IP将继续为您提供优质的服务\n5无人工值守期间极客IP大约一周无法使用其他产品都运行正常使用极客IP的客户可联系客服补时间。若使用除极客外的其他产品因无人工客服给您造成影响可联系客服说明情况我们将根据情况给您适当的补偿\n祝各位用户万事顺利生意兴隆新年快乐";
//alert(alert_info);
</script>
<!-- Initialize Swiper -->
<script>
var swiper = new Swiper('.swiper-container', {
slidesPerView: 3,
spaceBetween: 30,
slidesPerGroup: 1,
loop: false,
loopFillGroupWithBlank: true,
pagination: {
el: '.swiper-pagination',
clickable: true,
},
navigation: {
nextEl: '.swiper-button-next',
prevEl: '.swiper-button-prev',
},
});
</script>
<script>
var swiper = new Swiper('.swiper-container-youshi', {
effect: 'coverflow',
grabCursor: true,
centeredSlides: true,
slidesPerView: 'auto',
coverflowEffect: {
rotate: 50,
stretch: 0,
depth: 100,
modifier: 1,
slideShadows: true,
},
pagination: {
el: '.swiper-pagination',
},
});
$('.notice').hide();
@* self.setTimeout(function(){ *@
$('.notice').show();
@* },3000) *@
function know() {
$('.notice').hide();
}
</script>
@model List<ProductModel>
@using Hncore.Pass.BaseInfo.Response
@using Hncore.Infrastructure.Serializer
@using Hncore.Pass.Vpn.Service
@using Hncore.Pass.Vpn.Domain
@using Microsoft.Extensions.Configuration
@inject ArticleService m_ArticleService
@inject IConfiguration m_Configuration
@{
ViewData["Title"] = "聚IP JUIP.COM-千万动态ip切换自建机房ip代理覆盖全国多款市面热销产品";
Layout = "_Layout";
UserLoginModel user = null;
if (this.Context.Request.Cookies.TryGetValue("userInfo", out string userCookie))
{
user = userCookie.FromJsonTo<UserLoginModel>();
}
var articleNews = await m_ArticleService.GetTop(12, ArticleCatalog.Top);
var activityNews = await m_ArticleService.GetTop(12, ArticleCatalog.Activity);
var helpsNews = await m_ArticleService.GetTop(12, ArticleCatalog.Help);
var QANews = await m_ArticleService.GetTop(12, ArticleCatalog.QA);
var baseUrl = m_Configuration["BaseInfoUrl"];
Func<string, string> P = (path) => $"{baseUrl}{path}";
var epoch = (DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000;
var countStr = epoch.ToString().Substring(0, 8);
}
<style>
.swiper-container-youshi .swiper-slide-active{
background:rgba(0,0,0.8);
}
.notice {
position: fixed;
width: 90%;
height: auto;
left: 27%;
top: 27%;
margin-left: -200px;
margin-top: -160px;
z-index: 3;
background: #fff;
border-radius: 10px;
box-shadow: 0px 6px 8px 6px #ccc;
display: flex;
flex-direction: row;
flex-wrap: wrap;
padding: 30px;
z-index: 10000000;
}
.notice p{
font-size: 25px;
}
</style>
<div style="display: none;">
<h1>自动换ip软件有什么用使用换ip软件的好处让你想不到</h1>
<p>许多业内人士人经常使用“换ip的软件”和“动态代理ip”这两个词。有时我们的计算机容易受到攻击。在这种情况下将突出显示IP地址更改工具的作用。它可以保护我们的计算机地址免受攻击。或者一些技术合作伙伴在自己的爬虫项目中使用此类换ip的软件时也会使用此类换ip的软件。换ip的软件的很大效果是可以隐藏实际ip地址。</p>
<p>许多朋友需要这项技术来保护计算机的安全。你能改一下ip地址吗答案是肯定的但操作相当麻烦因此生成了动态ip代理软件。您可以找到要更改的ip代理服务器例如我们的动态IP代理。</p>
<h1>如何为动态IP选择软件需要考虑哪些方面</h1>
<p>首先必须确保换ip的软件合法、合规并且IP地址也是合法的。换ip的软件是一种已获得批准证书的软件在全国主要城市拥有大量动态IP节点。第二换ip的软件稳定也很重要。您使用的动态代理IP就是您的使用它可以很好地确保您的Internet网络的稳定性。</p>
<p>最后让客户放心的售后服务也不容忽视。换ip的软件甚至客户服务和售后都是技术性的为客户提供比较好的方式。因此在购买相关换ip的软件时我们必须擦亮眼睛选择更多。</p>
<h2>换ip的软件优势</h2>
<p>1.换ip的软件技术资深程序员精心设计每个功能并不断更新和改进。</p>
<p>2.换ip的软件强大功能全面强大不断开发更多功能换ip的软件及时升级</p>
<p>3.换ip的软件使用方便均采用人性化设计智能化管理。只要我们能操作计算机我们就能操作我们的软件。此外我们还有一个换ip的软件教程。我们可以在阅读后操作换ip的软件</p>
<p>4.换ip的软件四个保证持续发展保证、技术服务保证、问题整改保证、真正授权保证让您的网络推广完全无忧</p>
<p>5.换ip的软件简单方便动态固态IP地址一键刷新一键批量测速自由选择全国线路自由选择全球ip代理和本地ip代理一键快速连接ip软件</p>
<h1>动态ip代理软件有什么特点选哪家动态ip代理软件公司更好</h1>
<p>合格的动态ip代理有哪些特点目前市场上有很多动态IP软件质量参差不齐。合格动态ip代理的特点是什么IP是一个网民的地址。有时网民需要多次更换IP。此时需要动态IP更改软件。</p>
<p>动态ip代理非常适合注册、验证、投票、运行号码、挂断、在线赚钱、推广、微信、微博、QQ、YY、QT、电子邮件、声誉、手机、PV等</p>
<p>动态ip代理比较明显的功能是自动更改IP地址智能分配IP并在每次断开和重新连接时自动更改IP。它具有IP容量大、速度快、稳定性高、安全性高等特点。您不必担心IP复制。</p>
<p>网络上有许多动态IP代理软件。从众多的动态IP代理软件中选择合适的软件是非常重要的。如何找到比较合适的动态IP代理服务提供商</p>
<p>1.动态IP代理还取决于它能否提供完美的服务。如果买后没有人进行售后服务使用中就会出现问题无处可寻所以完善的售后服务也很重要。</p>
<p>2.好的动态IP代理取决于IP的来源。如果在互联网上直接扫描IP质量很差使用时会发生冲突。因此最好使用自建服务器的代理这样获得的动态IP代理非常稳定。</p>
<p>这样我相信您可以找到适合自己使用的动态IP代理资源。动态IP代理软件更安全、更快。动态IP代理是你网络工作的好帮手</p>
  
<h1>如何电脑换ip软件让网站达到盈利的目的</h1>
 <p>IP地址是互联网接入的基本条件。我们都是通过IP地址上网的。计算机只有一个固定的IP地址。然而长期使用IP地址是非常不安全的并且会导致很多安全风险。</p>
  <p>互联网上存在一定的风险。用户在互联网上浏览网页时会留下自己的信息。这些信息大部分是私人信息。如果个人信息被恶意的人窃取这是非常危险的。因此必须加强网站的安全性能。只有这样才能保证用户的信息安全。熟悉互联网技术的人会定期更换IP因为他们知道将个人信息留在互联网上非常不安全可能会被犯罪分子窃取这也会危及他们自己的财产因此他们必须经常更换。</p>
  <p>确保个人信息安全的常用方法是自动更换IP地址。有许多电脑换ip软件可以在Internet上使用。除了确保我们的信息安全电脑换ip软件也可以用来赚取一些利润。</p>
  <p>现在很多人会自己开发一个网站。开发一个网站并不难。在学习了这个方法之后它非常简单。我们可以在互联网上看到各种各样的网站。这些网站中有些是由公司存档的有些是由个人存档的。这些网站可以为人们提供很多信息。电脑换ip软件方法是获得更多的浏览量。只要你的观点上升这意味着这个网站特别受欢迎。在这个时候你可以在网站上做一些广告或者用广告费赚一些钱。然而赚钱的前提是网站可以有浏览量。只有好的网站才能吸引人现在人们对网站的要求越来越高。糟糕的网页无法吸引人。只有想出一些方法这些网页才能继续发展。</p>
  <p>很多人会使用电脑换ip软件来实现web代理。Web代理有很多优点。它不仅可以保护用户的安全上网而且可以提高上网速度。用户在上网时非常关注个人隐私保护。他们不希望自己的个人隐私被泄露因此只有一个安全的网站才能让他们感到放心在使用电脑换ip软件后网站变得更加封闭。整个网络使用一个IP这是最安全的不会有安全风险。使用代理IP软件后您会发现网站上的信息根本没有泄露用户在浏览网页时会更加轻松。即使他们输入了一些个人信息也没关系。如果网站继续这样发展它将获得更多的收入。电脑换ip软件只需点击自动切换快速更换无需网卡IP地址可以随意更改</p>
</div>
<div class="banner">
<div class="buttonList">
<div class="item">
<a asp-action="soft" asp-controller="product"> <button type="button" class="btnBlue">客户端下载</button></a>
</div>
<div class="item">
<a asp-action="index" asp-controller="linelist"> <button type="button" class="btnBlue">IP线路表</button></a>
</div>
<div class="item">
<a asp-action="index" asp-controller="product"> <button type="button" class="btnOrange">免费试用</button></a>
</div>
</div>
</div>
<div class="titProducts">
<p>PRODUCTS</p>
<p>产品介绍</p>
</div>
<div class="conProducts">
<!-- Swiper -->
<div class="swiper-container">
<div class="swiper-wrapper">
@foreach (var item in Model.Where(m => m.Sort != 1000))
{
<div class="swiper-slide">
<div class="productCard">
@*<div class="item">
<img src="@P(item.Image)" />
</div>*@
<div class="item pName">
@item.Name
</div>
<div class="item">
@item.Profile
</div>
<div class="item showLine">
<a asp-action="index" asp-controller="linelist" asp-route-ProductId="@item.Id">查看线路表→</a>
</div>
<div class="item">
<a asp-action="index" asp-controller="product" asp-route-id="@item.Id"><button type="button" class="btnBlue">测试与购买</button></a>
</div>
</div>
</div>
}
</div>
<!-- Add Arrows -->
<div class="swiper-button-next"></div>
<div class="swiper-button-prev"></div>
</div>
</div>
<div class="youshi">
<!-- Swiper -->
<div class="swiper-container-youshi">
<div class="swiper-wrapper">
<div class="swiper-slide" style="background-image:url(./m/img/youshi-bg.png)">
<div class="youshiList">
<div class="item">
<img src="~/m/img/y1.png">
</div>
<div class="item">
全网产品最多IP库最大
</div>
<div class="item">
旗下有强子IP老鹰IP先锋IP星星IP等十几种动态IP多产品组合畅享IP库翻倍可用IP超1亿
</div>
</div>
</div>
<div class="swiper-slide" style="background-image:url(./img/youshi-bg.png)">
<div class="youshiList">
<div class="item">
<img src="~/m/img/y2.png">
</div>
<div class="item">
全设备全协议支持
</div>
<div class="item">
支持安卓iOS电脑windowslinux等系统。支持IPL2TPSSTP等协议
</div>
</div>
</div>
<div class="swiper-slide" style="background-image:url(./img/youshi-bg.png)">
<div class="youshiList">
<div class="item">
<img src="~/m/img/y3.png">
</div>
<div class="item">
用户独享宽带
</div>
<div class="item">
一号一拨绝不超拨快速切换平均带宽6-10兆最高可达50兆
</div>
</div>
</div>
<div class="swiper-slide" style="background-image:url(./img/youshi-bg.png)">
<div class="youshiList">
<div class="item">
<img src="~/m/img/y4.png">
</div>
<div class="item">
价低质优,免费测试
</div>
<div class="item">
全自营机房一手资源,价低质优,量大可联系客服获取最低价
</div>
</div>
</div>
<div class="swiper-slide" style="background-image:url(./img/youshi-bg.png)">
<div class="youshiList">
<div class="item">
<img src="~/m/img/y5.png">
</div>
<div class="item">
专属产品定制
</div>
<div class="item">
支持定制独立服务器,可针对特定的项目需求定制专用产品
</div>
</div>
</div>
<div class="swiper-slide" style="background-image:url(./img/youshi-bg.png)">
<div class="youshiList">
<div class="item">
<img src="~/m/img/y6.png">
</div>
<div class="item">
专业的服务团队
</div>
<div class="item">
资深售前售后1对1指导7*24小时实时响应竭诚为您服务
</div>
</div>
</div>
</div>
<!-- Add Pagination -->
<div class="swiper-pagination"></div>
</div>
</div>
<div class="map">
</div>
<div class="use">
</div>
<div class="titProducts">
<p>INFORMATION</p>
<p>教程&咨询</p>
</div>
<div class="newsList">
<!-- Nav tabs -->
<ul class="nav nav-tabs" role="tablist">
<li role="presentation" class="active"><a href="#home" aria-controls="home" role="tab" data-toggle="tab">聚IP头条</a></li>
<li role="presentation"><a href="#profile" aria-controls="profile" role="tab" data-toggle="tab">常见问题</a></li>
<li role="presentation"><a href="#messages" aria-controls="messages" role="tab" data-toggle="tab">新手教程</a></li>
<li role="presentation"><a href="#settings" aria-controls="settings" role="tab" data-toggle="tab">优惠活动</a></li>
</ul>
<!-- Tab panes -->
<div class="tab-content">
<div role="tabpanel" class="tab-pane active" id="home">
<ul class="news">
@foreach (var item in articleNews)
{
<li><a asp-action="info" asp-controller="article" asp-route-id="@item.Id"><span>@item.CreateTime.ToString("yyyy.MM.dd")</span>@item.Title</a></li>
}
</ul>
</div>
<div role="tabpanel" class="tab-pane" id="profile">
<ul class="news">
@foreach (var item in activityNews)
{
<li><a asp-action="info" asp-controller="article" asp-route-id="@item.Id"><span>@item.CreateTime.ToString("yyyy.MM.dd")</span>@item.Title</a></li>
}
</ul>
</div>
<div role="tabpanel" class="tab-pane" id="messages">
<ul class="news">
@foreach (var item in QANews)
{
<li><a asp-action="info" asp-controller="article" asp-route-id="@item.Id"><span>@item.CreateTime.ToString("yyyy.MM.dd")</span>@item.Title</a></li>
}
</ul>
</div>
<div role="tabpanel" class="tab-pane" id="settings">
<ul class="news">
@foreach (var item in helpsNews)
{
<li><a asp-action="info" asp-controller="article" asp-route-id="@item.Id"><span>@item.CreateTime.ToString("yyyy.MM.dd")</span>@item.Title</a></li>
}
</ul>
</div>
</div>
</div>
<div class="qixia">
<p>旗下产品</p>
<ul>
@foreach (var item in Model.Where(m => m.Sort != 1000))
{
<li><a asp-action="index" asp-controller="product" asp-route-id="@item.Id">@item.Name</a></li>
}
</ul>
</div>
<div class="linkus" style="display: block;">
<div class="item">
<p>联系我们</p>
<p>企业电话400 800 9925</p>
<p>客服QQ800101003</p>
<p>客服微信-售前:</p>
<img width="300px" src="~/img/kf_sq.jpg?123"><br>
<p>客服微信-售后:</p>
<img width="300px" src="~/img/kf_sh.jpg?1231">
<p>工作时间周一到周日8:30-23:00</p>
</div>
<div class="item">
<p>大客户/商务合作</p>
<p>电话/微信177 9666 8888</p>
<p>QQ70177252</p>
</div>
</div>
<div class="ewm">
<p><img src="~/m/img/ewm.png"></p>
<p class="banquan">copyright 2020 聚IP JUIP.COM 版权所有</p>
</div>
<div class="notice">
<div style="font-size: 15px;">
<p style="margin-top: 0px;text-align:center;width:100%;margin-bottom: 10px;color:red;background-color:#FFFF00;">公告</p>
<div style="color: red;text-align:center;">
<p>杜绝电信诈骗及任何违法行为</p>
<p>所有IP产品已记录日志,均保留6个月以上</p>
<p>发现违法行为直接提交网监部门处理</p>
</div>
<p style="margin-top: 10px;font-weight:bold;text-align:center;">聚IP兔年新春复工助力活动</p>
<div style="padding-left: 20px;">
@* <p>1.动态IP一毛钱一天每用户限一次~</p> *@
<p>1.新上蘑菇IP周卡送1天月卡送5天双月卡送1个月多买多送~</p>
<p>2.其他产品均有<span style="color: red;font-size:1.5em;font-weight:bold;">7.5</span>折活动~</p>
<p>3.需求5个以上可联系客服设置优惠折扣</p>
</div>
</div>
<p >
<a style="margin-left: 200%;margin-top:20px;cursor:pointer;font-size:25px;" onclick="know()" type="button" class="btn btn-primary" >我知道了</a>
</p>
</div>
<script type="text/javascript">
$('#myTabs a').click(function (e) {
e.preventDefault()
$(this).tab('show')
})
//var alert_info = "聚IP春节公告\n1春节不打烊自助购买24小时正常运行仅2月10日至2月18日人工在线时间为早10点到晚22点在此期间联系人工请尽量联系企业Q号号码为800101003其他联系方式可能回复不及时紧急联系电话为4008009925转1号线。\n2请勿相信外界谣言聚IP始终保持诚信经营对用户负责到底更不会出现跑路的情况\n312月10日-12月25日期间公司无人工客服在线给您造成不便敬请谅解为表达歉意因此公司特推出动态IP 一毛钱一天,有史以来最大的折扣和赠送力度!\n4并保证最低价买贵双倍退差价。同时聚IP将继续为您提供优质的服务\n5无人工值守期间极客IP大约一周无法使用其他产品都运行正常使用极客IP的客户可联系客服补时间。若使用除极客外的其他产品因无人工客服给您造成影响可联系客服说明情况我们将根据情况给您适当的补偿\n祝各位用户万事顺利生意兴隆新年快乐";
//alert(alert_info);
</script>
<!-- Initialize Swiper -->
<script>
var swiper = new Swiper('.swiper-container', {
slidesPerView: 3,
spaceBetween: 30,
slidesPerGroup: 1,
loop: false,
loopFillGroupWithBlank: true,
pagination: {
el: '.swiper-pagination',
clickable: true,
},
navigation: {
nextEl: '.swiper-button-next',
prevEl: '.swiper-button-prev',
},
});
</script>
<script>
var swiper = new Swiper('.swiper-container-youshi', {
effect: 'coverflow',
grabCursor: true,
centeredSlides: true,
slidesPerView: 'auto',
coverflowEffect: {
rotate: 50,
stretch: 0,
depth: 100,
modifier: 1,
slideShadows: true,
},
pagination: {
el: '.swiper-pagination',
},
});
$('.notice').hide();
@* self.setTimeout(function(){ *@
$('.notice').show();
@* },3000) *@
function know() {
$('.notice').hide();
}
</script>

View File

@@ -1,377 +1,377 @@
@using Hncore.Pass.Vpn.Domain
@using Hncore.Infrastructure.Extension
@using Hncore.Pass.Vpn.Service
@inject ProductService m_ProductService
@model List<ProductRouteEntity>
@{
var pid = this.Context.Request.GetInt("ProductId");
var product = ViewData["products"] as List<ProductEntity>;
var currentProduct = (await m_ProductService.GetById(pid)) ?? new ProductEntity();
var lineTotalCount = Model.Count;
var lineCount = Model.Where(m => m.Status == "正常").Count();
}
<div id="app">
<div class="quanjushousuo">
<p><input type="text" v-model="search_all_data" name="KeyWord" placeholder="输入地区/名称/服务器" id="KeyWord" /><button type="submit" v-on:click="search_all()" class="btnOrange">搜索全部</button></p>
<p><img src="~/m/img/shuju.png"> 实时总线路:{{ count }}条 <img src="~/m/img/shuju.png"> 实时可用线路:{{ use_count }}条</p>
<p>所有线路均支持:【电脑/安卓/苹果】【IP/L2TP/SSTP】</p>
</div>
<div class="zhilian">
<div class="item">
<span class="btnZhilian">
<a asp-index="" asp-controller="article" asp-route-Catalog="4"><img src="~/m/img/zhilian.png">直连教程</a>
</span>
</div>
<div class="item">
<p class="grayText" style="font-size: 25px;">线路表与账号必须为同一产品才能使用</p>
</div>
</div>
<div style="color: red;" v-if="product_id ==1|| product_id==2">
<p style="text-align:center;">
<span style="font-size: 20px;color:#FF0033;">{{search_field}}</span> 用服务器地址直连用户请注意:
</p>
<p>因电信联通机房限制此协议会存在个别地区直连无法连接电脑客户端和安卓APP不受影响。</p>
<p v-if="product_id ==1">解决方法IP账号后边输入@@特征码例如您的IP账号为zx1234要用sstp直连温州的那账号框就输入zx1234@zjwz服务器输入任意一个全国混拨的服务器则会连接到温州。</p>
<p v-if="product_id==2">解决方法IP账号后边输入@@特征码例如您的IP账号为zx1234要用sstp直连三亚的那账号框就输入zx1234@hnsy服务器输入任意一个全国混拨的服务器则会连接到三亚。</p>
</div>
<div style="color: red;text-align:center;font-size:20px;" v-if="product_id ==22">
<p>静态线路里面名称不带宽带字样的线路ip是相对固定不变的。</p>
<p>只要线路名称里面带“宽带”两个字的是完全模拟家庭宽带网络的线路和家庭宽度网络一样一般1-2天不等自动换一次ip</p>
</div>
<div class="lineBar"></div>
<div class="cpList">
<ul>
@foreach (var item in product.Where(m => m.Id != 3 && m.Id != 7 && m.Id != 9&& m.Id != 20&& m.Id != 21))
{
<li v-on:click="select_product(@item.Id)" id="product-@item.Id" class="item @(item.Id==pid?"cpActive":"")" a-pid="@item.Id" a-name="@item.Name">@item.Name</li>
}
</ul>
</div>
<div class="dangqianshousuo">
<p>
<input type="hidden" name="ProductId" id="ProductId" value="@pid" />
<input type="text" v-model="search_product_data" name="KeyWord" placeholder="输入地区/名称/服务器" id="KeyWord" />
<button v-on:click="search_product()" type="submit" class="btnBlue">搜索当前</button>
</p>
</div>
<div class="daochu">
<div class="item">
<p><img src="~/m/img/miyao.png"> L2TP密钥{{l2tp}}</p>
<p><img src="~/m/img/dk.png"> SSTP端口{{sstp}}</p>
</div>
<div class="item">
<span v-on:click="export_data()"><img src="~/m/img/excel.png"> 导出Excel</span>
</div>
</div>
<div class="tableTit">
<div class="item">
地区
</div>
<div class="item">
<span v-if="product_id ==19">剩余拨数:</span>
<span v-else="product_id ==19">运营商:</span>
</div>
<div class="item">
服务器域名
</div>
<div class="item">
详情
</div>
</div>
<div class="cityData" v-for="site in table_data" :style="(site.online=='故障')?'color:#ec5656;':''">
<div class="item" v-if="site.online==null" style="color:#993399">{{site.city}}</div>
<div class="item" v-if="site.online!=null">{{site.city}}</div>
<div class="item">{{site.supply}}</div>
<div class="item">{{site.nasname}}</div>
<div class="item">
<button type="button" v-on:click="detail(site)" class="btnDetail">详情</button>
</div>
</div>
<!-- 弹窗详情 -->
<div class="layerTable">
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td>产品:</td>
<td>{{info.name}}</td>
</tr>
<tr>
<td>城市:</td>
<td>{{info.city}}</td>
</tr>
<tr>
<td v-if="product_id ==19">剩余拨数:</td>
<td v-else="product_id ==19">运营商:</td>
<td>{{info.supply}}</td>
</tr>
<tr>
<td>服务器域名:</td>
<td>{{info.nasname}}</td>
</tr>
<tr>
<td>IP量</td>
<td>{{info.ip}}</td>
</tr>
<tr>
<td>实时带宽:</td>
<td>{{info.daikuan}}</td>
</tr>
<tr>
<td>维护状态:</td>
<td>{{info.online}}</td>
</tr>
<tr>
@* <td>负载状态:</td> *@
<td v-if="product_id ==1|| product_id==2">特征码:</td>
<td v-else="product_id ==1|| product_id==2">负载状态:</td>
<td>{{info.status}}</td>
</tr>
</table>
<div v-on:click="back()" class="back">
<img src="~/m/img/arrowback.png"> 返回列表
</div>
</div>
</div>
<script type="text/javascript">
var app = new Vue({
el: '#app',
data: {
table_data: [],
search_all_data: '',
search_product_data:'',
product_id:0,
l2tp:'',
search_field:'',
sstp:'',
info: {},
count:'0',
use_count:'0',
},
computed: {
},
watch: {
},
created: function () {
this.select_product(0);
},
methods: {
select_product(ProductId){
this.product_id = ProductId;
let datalist = [];
let count = 0;
let use_count = 0;
$("li").removeClass("cpActive");
$("#product-"+ProductId).addClass("cpActive");
switch(ProductId){
case 2:
this.l2tp = '123';
this.search_field = '讯连IP';
this.sstp = '1500';
break;
case 4:
this.l2tp = '123456';
this.search_field = '金瑞IP';
this.sstp = '4438';
break;
case 5:
this.l2tp = '123';
this.search_field = '老鹰IP';
this.sstp = '4430';
break;
case 6:
this.l2tp = '123';
this.search_field = '先锋IP';
this.sstp = '6665';
break;
case 10:
this.l2tp = '88';
this.search_field = '无限-单窗口单ip';
this.sstp = '';
break;
case 13:
this.l2tp = '123456';
this.search_field = '极客IP';
this.sstp = '4433';
break;
case 17:
this.l2tp = '123456';
this.search_field = '西瓜IP';
this.sstp = '4433';
break;
case 14:
this.l2tp = '1234';
this.search_field = '天天IP';
this.sstp = '4430';
break;
case 15:
this.l2tp = '66';
this.search_field = '共享IP';
this.sstp = '888';
break;
case 16:
this.l2tp = '8899';
this.search_field = '实惠IP';
this.sstp = '不支持';
break;
case 1:
this.l2tp = '888888';
this.search_field = '强子IP';
this.sstp = '1500';
break;
case 8:
this.l2tp = '88';
this.search_field = '星星IP';
this.sstp = '6666';
break;
case 18:
this.l2tp = '8899';
this.search_field = '蘑菇IP';
this.sstp = '4430';
break;
case 22:
this.l2tp = '888888';
this.search_field = '火狐IP';
this.sstp = '5908';
break;
case 23:
this.l2tp = '888888';
this.search_field = '云牛IP';
this.sstp = '5908';
break;
case 25:
this.l2tp = '888888';
this.search_field = '强子静态IP';
this.sstp = '1500';
break;
}
$.ajax({
type: 'GET',
url: 'http://php-api.juip.com/script/linedata/display.php?product=' + ProductId,
dataType: "json",
async:false,
success: function (res) {
datalist = res.data;
count = res.count;
use_count = res.use_count;
}
});
this.table_data = datalist;
this.count = count;
this.use_count = use_count;
},
search_all(){
if(!this.search_all_data){
this.select_product(0);
return;
}
$.ajax({
type: 'GET',
url: 'http://php-api.juip.com/script/linedata/search.php?type=1&info=' + this.search_all_data,
dataType: "json",
async:false,
success: function (res) {
datalist = res.data;
}
});
this.table_data = datalist;
},
search_product(){
if(!this.search_product_data){
this.select_product(this.product_id);
return;
}
$.ajax({
type: 'GET',
url: 'http://php-api.juip.com/script/linedata/search.php?type=0&productid='+this.product_id+'&info=' + this.search_product_data,
dataType: "json",
async:false,
success: function (res) {
datalist = res.data;
}
});
this.table_data = datalist;
},
export_data(){
switch(this.product_id){
case 0:
self.location.href='http://php-api.juip.com/script/linedata/data/download/all.csv';
break;
case 2:
self.location.href='http://php-api.juip.com/script/linedata/data/download/xunlian.csv';
break;
case 4:
self.location.href='http://php-api.juip.com/script/linedata/data/download/jinrui.csv';
break;
case 5:
self.location.href='http://php-api.juip.com/script/linedata/data/download/laoying.csv';
break;
case 6:
self.location.href='http://php-api.juip.com/script/linedata/data/download/xianfeng.csv';
break;
case 10:
self.location.href='http://php-api.juip.com/script/linedata/data/download/wuxian.csv';
break;
case 13:
self.location.href='http://php-api.juip.com/script/linedata/data/download/jike.csv';
break;
case 17:
self.location.href='http://php-api.juip.com/script/linedata/data/download/xigua.csv';
break;
case 18:
self.location.href='http://php-api.juip.com/script/linedata/data/download/mogu.csv';
break;
case 14:
self.location.href='http://php-api.juip.com/script/linedata/data/download/tiantian.csv';
break;
case 15:
self.location.href='http://php-api.juip.com/script/linedata/data/download/gongxiang.csv';
break;
case 16:
self.location.href='http://php-api.juip.com/script/linedata/data/download/shihui.csv';
break;
case 1:
self.location.href='http://php-api.juip.com/script/linedata/data/download/qiangzi.csv';
break;
case 8:
self.location.href='http://php-api.juip.com/script/linedata/data/download/xingxing.csv';
break;
case 17:
self.location.href='http://php-api.juip.com/script/linedata/data/download/xigua.csv';
break;
case 18:
self.location.href='http://php-api.juip.com/script/linedata/data/download/mogu.csv';
break;
case 19:
self.location.href='http://php-api.juip.com/script/linedata/data/download/huohu.csv';
break;
case 25:
self.location.href='http://php-api.juip.com/script/linedata/data/download/qiangzijt.csv';
break;
}
},
detail(r){
$(".layerTable").show();
this.info= r;
},
back(){
$(".layerTable").hide();
}
}
})
</script>
@using Hncore.Pass.Vpn.Domain
@using Hncore.Infrastructure.Extension
@using Hncore.Pass.Vpn.Service
@inject ProductService m_ProductService
@model List<ProductRouteEntity>
@{
var pid = this.Context.Request.GetInt("ProductId");
var product = ViewData["products"] as List<ProductEntity>;
var currentProduct = (await m_ProductService.GetById(pid)) ?? new ProductEntity();
var lineTotalCount = Model.Count;
var lineCount = Model.Where(m => m.Status == "正常").Count();
}
<div id="app">
<div class="quanjushousuo">
<p><input type="text" v-model="search_all_data" name="KeyWord" placeholder="输入地区/名称/服务器" id="KeyWord" /><button type="submit" v-on:click="search_all()" class="btnOrange">搜索全部</button></p>
<p><img src="~/m/img/shuju.png"> 实时总线路:{{ count }}条 <img src="~/m/img/shuju.png"> 实时可用线路:{{ use_count }}条</p>
<p>所有线路均支持:【电脑/安卓/苹果】【IP/L2TP/SSTP】</p>
</div>
<div class="zhilian">
<div class="item">
<span class="btnZhilian">
<a asp-index="" asp-controller="article" asp-route-Catalog="4"><img src="~/m/img/zhilian.png">直连教程</a>
</span>
</div>
<div class="item">
<p class="grayText" style="font-size: 25px;">线路表与账号必须为同一产品才能使用</p>
</div>
</div>
<div style="color: red;" v-if="product_id ==1|| product_id==2">
<p style="text-align:center;">
<span style="font-size: 20px;color:#FF0033;">{{search_field}}</span> 用服务器地址直连用户请注意:
</p>
<p>因电信联通机房限制此协议会存在个别地区直连无法连接电脑客户端和安卓APP不受影响。</p>
<p v-if="product_id ==1">解决方法IP账号后边输入@@特征码例如您的IP账号为zx1234要用sstp直连温州的那账号框就输入zx1234@zjwz服务器输入任意一个全国混拨的服务器则会连接到温州。</p>
<p v-if="product_id==2">解决方法IP账号后边输入@@特征码例如您的IP账号为zx1234要用sstp直连三亚的那账号框就输入zx1234@hnsy服务器输入任意一个全国混拨的服务器则会连接到三亚。</p>
</div>
<div style="color: red;text-align:center;font-size:20px;" v-if="product_id ==22">
<p>静态线路里面名称不带宽带字样的线路ip是相对固定不变的。</p>
<p>只要线路名称里面带“宽带”两个字的是完全模拟家庭宽带网络的线路和家庭宽度网络一样一般1-2天不等自动换一次ip</p>
</div>
<div class="lineBar"></div>
<div class="cpList">
<ul>
@foreach (var item in product.Where(m => m.Id != 3 && m.Id != 7 && m.Id != 9&& m.Id != 20&& m.Id != 21))
{
<li v-on:click="select_product(@item.Id)" id="product-@item.Id" class="item @(item.Id==pid?"cpActive":"")" a-pid="@item.Id" a-name="@item.Name">@item.Name</li>
}
</ul>
</div>
<div class="dangqianshousuo">
<p>
<input type="hidden" name="ProductId" id="ProductId" value="@pid" />
<input type="text" v-model="search_product_data" name="KeyWord" placeholder="输入地区/名称/服务器" id="KeyWord" />
<button v-on:click="search_product()" type="submit" class="btnBlue">搜索当前</button>
</p>
</div>
<div class="daochu">
<div class="item">
<p><img src="~/m/img/miyao.png"> L2TP密钥{{l2tp}}</p>
<p><img src="~/m/img/dk.png"> SSTP端口{{sstp}}</p>
</div>
<div class="item">
<span v-on:click="export_data()"><img src="~/m/img/excel.png"> 导出Excel</span>
</div>
</div>
<div class="tableTit">
<div class="item">
地区
</div>
<div class="item">
<span v-if="product_id ==19">剩余拨数:</span>
<span v-else="product_id ==19">运营商:</span>
</div>
<div class="item">
服务器域名
</div>
<div class="item">
详情
</div>
</div>
<div class="cityData" v-for="site in table_data" :style="(site.online=='故障')?'color:#ec5656;':''">
<div class="item" v-if="site.online==null" style="color:#993399">{{site.city}}</div>
<div class="item" v-if="site.online!=null">{{site.city}}</div>
<div class="item">{{site.supply}}</div>
<div class="item">{{site.nasname}}</div>
<div class="item">
<button type="button" v-on:click="detail(site)" class="btnDetail">详情</button>
</div>
</div>
<!-- 弹窗详情 -->
<div class="layerTable">
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td>产品:</td>
<td>{{info.name}}</td>
</tr>
<tr>
<td>城市:</td>
<td>{{info.city}}</td>
</tr>
<tr>
<td v-if="product_id ==19">剩余拨数:</td>
<td v-else="product_id ==19">运营商:</td>
<td>{{info.supply}}</td>
</tr>
<tr>
<td>服务器域名:</td>
<td>{{info.nasname}}</td>
</tr>
<tr>
<td>IP量</td>
<td>{{info.ip}}</td>
</tr>
<tr>
<td>实时带宽:</td>
<td>{{info.daikuan}}</td>
</tr>
<tr>
<td>维护状态:</td>
<td>{{info.online}}</td>
</tr>
<tr>
@* <td>负载状态:</td> *@
<td v-if="product_id ==1|| product_id==2">特征码:</td>
<td v-else="product_id ==1|| product_id==2">负载状态:</td>
<td>{{info.status}}</td>
</tr>
</table>
<div v-on:click="back()" class="back">
<img src="~/m/img/arrowback.png"> 返回列表
</div>
</div>
</div>
<script type="text/javascript">
var app = new Vue({
el: '#app',
data: {
table_data: [],
search_all_data: '',
search_product_data:'',
product_id:0,
l2tp:'',
search_field:'',
sstp:'',
info: {},
count:'0',
use_count:'0',
},
computed: {
},
watch: {
},
created: function () {
this.select_product(0);
},
methods: {
select_product(ProductId){
this.product_id = ProductId;
let datalist = [];
let count = 0;
let use_count = 0;
$("li").removeClass("cpActive");
$("#product-"+ProductId).addClass("cpActive");
switch(ProductId){
case 2:
this.l2tp = '123';
this.search_field = '讯连IP';
this.sstp = '1500';
break;
case 4:
this.l2tp = '123456';
this.search_field = '金瑞IP';
this.sstp = '4438';
break;
case 5:
this.l2tp = '123';
this.search_field = '老鹰IP';
this.sstp = '4430';
break;
case 6:
this.l2tp = '123';
this.search_field = '先锋IP';
this.sstp = '6665';
break;
case 10:
this.l2tp = '88';
this.search_field = '无限-单窗口单ip';
this.sstp = '';
break;
case 13:
this.l2tp = '123456';
this.search_field = '极客IP';
this.sstp = '4433';
break;
case 17:
this.l2tp = '123456';
this.search_field = '西瓜IP';
this.sstp = '4433';
break;
case 14:
this.l2tp = '1234';
this.search_field = '天天IP';
this.sstp = '4430';
break;
case 15:
this.l2tp = '66';
this.search_field = '共享IP';
this.sstp = '888';
break;
case 16:
this.l2tp = '8899';
this.search_field = '实惠IP';
this.sstp = '不支持';
break;
case 1:
this.l2tp = '888888';
this.search_field = '强子IP';
this.sstp = '1500';
break;
case 8:
this.l2tp = '88';
this.search_field = '星星IP';
this.sstp = '6666';
break;
case 18:
this.l2tp = '8899';
this.search_field = '蘑菇IP';
this.sstp = '4430';
break;
case 22:
this.l2tp = '888888';
this.search_field = '火狐IP';
this.sstp = '5908';
break;
case 23:
this.l2tp = '888888';
this.search_field = '云牛IP';
this.sstp = '5908';
break;
case 25:
this.l2tp = '888888';
this.search_field = '强子静态IP';
this.sstp = '1500';
break;
}
$.ajax({
type: 'GET',
url: 'http://php-api.juip.com/script/linedata/display.php?product=' + ProductId,
dataType: "json",
async:false,
success: function (res) {
datalist = res.data;
count = res.count;
use_count = res.use_count;
}
});
this.table_data = datalist;
this.count = count;
this.use_count = use_count;
},
search_all(){
if(!this.search_all_data){
this.select_product(0);
return;
}
$.ajax({
type: 'GET',
url: 'http://php-api.juip.com/script/linedata/search.php?type=1&info=' + this.search_all_data,
dataType: "json",
async:false,
success: function (res) {
datalist = res.data;
}
});
this.table_data = datalist;
},
search_product(){
if(!this.search_product_data){
this.select_product(this.product_id);
return;
}
$.ajax({
type: 'GET',
url: 'http://php-api.juip.com/script/linedata/search.php?type=0&productid='+this.product_id+'&info=' + this.search_product_data,
dataType: "json",
async:false,
success: function (res) {
datalist = res.data;
}
});
this.table_data = datalist;
},
export_data(){
switch(this.product_id){
case 0:
self.location.href='http://php-api.juip.com/script/linedata/data/download/all.csv';
break;
case 2:
self.location.href='http://php-api.juip.com/script/linedata/data/download/xunlian.csv';
break;
case 4:
self.location.href='http://php-api.juip.com/script/linedata/data/download/jinrui.csv';
break;
case 5:
self.location.href='http://php-api.juip.com/script/linedata/data/download/laoying.csv';
break;
case 6:
self.location.href='http://php-api.juip.com/script/linedata/data/download/xianfeng.csv';
break;
case 10:
self.location.href='http://php-api.juip.com/script/linedata/data/download/wuxian.csv';
break;
case 13:
self.location.href='http://php-api.juip.com/script/linedata/data/download/jike.csv';
break;
case 17:
self.location.href='http://php-api.juip.com/script/linedata/data/download/xigua.csv';
break;
case 18:
self.location.href='http://php-api.juip.com/script/linedata/data/download/mogu.csv';
break;
case 14:
self.location.href='http://php-api.juip.com/script/linedata/data/download/tiantian.csv';
break;
case 15:
self.location.href='http://php-api.juip.com/script/linedata/data/download/gongxiang.csv';
break;
case 16:
self.location.href='http://php-api.juip.com/script/linedata/data/download/shihui.csv';
break;
case 1:
self.location.href='http://php-api.juip.com/script/linedata/data/download/qiangzi.csv';
break;
case 8:
self.location.href='http://php-api.juip.com/script/linedata/data/download/xingxing.csv';
break;
case 17:
self.location.href='http://php-api.juip.com/script/linedata/data/download/xigua.csv';
break;
case 18:
self.location.href='http://php-api.juip.com/script/linedata/data/download/mogu.csv';
break;
case 19:
self.location.href='http://php-api.juip.com/script/linedata/data/download/huohu.csv';
break;
case 25:
self.location.href='http://php-api.juip.com/script/linedata/data/download/qiangzijt.csv';
break;
}
},
detail(r){
$(".layerTable").show();
this.info= r;
},
back(){
$(".layerTable").hide();
}
}
})
</script>

View File

@@ -1,431 +1,431 @@
@using Hncore.Pass.Vpn.Response.Product
@using Microsoft.Extensions.Configuration
@using Hncore.Pass.BaseInfo.Response
@using Hncore.Infrastructure.Serializer;
@inject IConfiguration m_Configuration
@model List<ProductWithPackageResponse>
@{
ViewData["Title"] = "购买产品";
UserLoginModel user = null;
if (this.Context.Request.Cookies.TryGetValue("userInfo", out string userCookie))
{
user = userCookie.FromJsonTo<UserLoginModel>();
}
var pid = this.Context.Request.Query.ContainsKey("id") ? this.Context.Request.Query["id"].ToString() : "";
var defaultProduct = Model.Select(m => m.Product).FirstOrDefault();
if (pid == "")
{
pid = Model.Select(m => m.Product).FirstOrDefault().Id.ToString();
}
else
{
defaultProduct = Model.Select(m => m.Product).FirstOrDefault(m => m.Id.ToString() == pid);
}
var defaultPackage = Model.Where(m => m.Product.Id == defaultProduct.Id).Select(m => m.Packages.FirstOrDefault()).FirstOrDefault();
var baseUrl = m_Configuration["BaseInfoUrl"];
Func<string, string> P = (path) => $"{baseUrl}{path}";
}
@* <div class="cpBanner">
<img src="~/m/img/cpBanner.png">
</div> *@
<div class="cpBanner" style="background-image: url(/img/acBanner_1.png?11231);background-repeat:round;background-size:auto auto;height:360px;">
<div class="row" style="color:white;width:calc(100vw-1px);text-align:center;padding-top:10px;">
<div class="col-md-8 " style="padding-top:1.5%;">
<h2 >十余种全网知名旗舰产品低价热销</h2>
<h1 style="font-size:45px;">淘宝动态IP销量排名NO.1</h1>
<h4 style="color: #e45b4b;">已完美对接淘宝、淘宝付款后、金额将自动充值到您的会员余额中</h4>
<a target="_blank" href="https://item.taobao.com/item.htm?spm=a2oq0.12575281.0.0.45e51debbIPZJ7&ft=t&id=644774449094"><h4 style="color: #e45b4b;">欢迎淘宝下单每次下单都会随机赠送优惠券最低54元<br>优惠券支持所有套餐!<span style="color:#FFFF00;">点击去淘宝店铺付款&nbsp;<span class="glyphicon glyphicon-arrow-right"></span></span></h4></a>
</div>
<div class="col-md-3 col-md-offset-1" style="padding-top:2%;">
<h1>需求<span style="color: red;font-size:49px;">五个</span>以上</h1>
<h2>联系客服设置优惠价</h2>
<a target="_blank" href="https://admin.qidian.qq.com/template/blue/mp/menu/qr-code-jump.html?linkType=0&env=ol&kfuin=2852138148&fid=299&key=f377ec024ca45115a03a7632c7bda230&cate=1&source=&isLBS=&isCustomEntry=&type=16&ftype=1&_type=wpa&qidian=true"><h3 style="color: #e45b4b;">>>>联系客服<<<</h3></a>
</div>
</div>
</div>
<div class="cpNav">
<div class="item">
<ul class="nav nav-tabs cpName" role="tablist">
<li >
<a style="color:#0098fb"><span class="glyphicon glyphicon-arrow-down"></span>动态独享IP<span class="glyphicon glyphicon-arrow-down"></span></a>
</li>
@foreach (var item in Model)
{
if(item.Product.Id == 18) {
<li role="presentation" class="@(item.Product.Id==defaultProduct.Id?"active":"")">
<a href="#@item.Product.Id" role="tab" data-toggle="tab" style="font-size: 25px;"><span style="color: red;font-weight:bold;">送 </span>@item.Product.Name<span style="color: #f64e3d;font-weight:bold;float:right;padding-right: 5px;">8折</span></a>
</li>
} else if(item.Product.Id == 14) {
<li role="presentation" class="@(item.Product.Id==defaultProduct.Id?"active":"")">
<a href="#@item.Product.Id" id="p14" role="tab" data-toggle="tab" style="font-size: 25px;">@item.Product.Name</a>
</li>
}
else if(item.Product.Id == 22) {
<li >
<a style="color:#0098fb"><span class="glyphicon glyphicon-arrow-down"></span>静态IP<span class="glyphicon glyphicon-arrow-down"></span></a>
</li>
<li role="presentation" class="@(item.Product.Id==defaultProduct.Id?"active":"")">
<a href="#@item.Product.Id" role="tab" data-toggle="tab" style="font-size: 25px;">@item.Product.Name </a>
</li>
}
else if(item.Product.Id == 21) {
<li >
<a style="color:#0098fb"><span class="glyphicon glyphicon-arrow-down"></span>单窗口单IP<span class="glyphicon glyphicon-arrow-down"></span></a>
</li>
<li role="presentation" class="@(item.Product.Id==defaultProduct.Id?"active":"")">
<a href="#@item.Product.Id" role="tab" data-toggle="tab" style="font-size: 25px;">@item.Product.Name </a>
</li>
} else {
<li role="presentation" class="@(item.Product.Id==defaultProduct.Id?"active":"")">
<a href="#@item.Product.Id" role="tab" data-toggle="tab" style="font-size: 25px;">@item.Product.Name </a>
</li>
}
}
</ul>
</div>
<script>
$("#select-7").on('click',function(){
alert('请注意无尽IP仅供电脑端使用');
});
$("#select-19").on('click',function(){
alert('本产品为独享每个账号对应一个宽带拨号永不超载保证了网速及稳定性。使用时只需设置这个唯一的服务器1.hhip.vip在账号列表中点击切换地区即可任意组合自己需要的地区。本产品灵活便捷欢迎选购');
});
</script>
<div class="item">
<div class="tab-content">
@foreach (var item in Model)
{
<div role="tabpanel" class="tab-pane @(item.Product.Id==defaultProduct.Id?"active":"")" id="@item.Product.Id">
<p class="texing">@item.Product.Name</p>
<ul class="texingList">
@foreach (var str in item.Product.ContentLine)
{
<li>·@str</li>
}
</ul>
<script>
$(".p_type").hide();
$("#p14").click(function () {
$(".type14").show();
for (var i=1034;i<1046;i++){
$("#package-"+i).hide();
}
});
function ttzhizun() {
$("#package-89").show();
$("#package-69").show();
$("#package-70").show();
$("#package-71").show();
$("#package-1022").show();
$("#package-1023").show();
for (var i=1034;i<1046;i++){
$("#package-"+i).hide();
}
$(".ttzx").css('background-color','#FF9900');
$(".ttgj").css('background-color','white');
$(".ttpt").css('background-color','white');
}
function ttgaoji() {
$(".ttgj").css('background-color','#FF9900');
$(".ttzx").css('background-color','white');
$(".ttpt").css('background-color','white');
$("#package-89").hide();
$("#package-69").hide();
$("#package-70").hide();
$("#package-71").hide();
$("#package-1022").hide();
$("#package-1023").hide();
for (var i=1040;i<1046;i++){
$("#package-"+i).hide();
}
for (var i=1034;i<1040;i++){
$("#package-"+i).show();
}
}
function ttputong() {
$(".ttpt").css('background-color','#FF9900');
$(".ttzx").css('background-color','white');
$(".ttgj").css('background-color','white');
$("#package-89").hide();
$("#package-69").hide();
$("#package-70").hide();
$("#package-71").hide();
$("#package-1022").hide();
$("#package-1023").hide();
for (var i=1040;i<1046;i++){
$("#package-"+i).show();
}
for (var i=1034;i<1040;i++){
$("#package-"+i).hide();
}
}
var wjdxtype = 1;
function wjdxphone() {
$("#dxaz").css('background-color','#FF9900');
$("#dxdn").css('background-color','white');
wjdxtype = 1;
for (var i=1048;i<1051;i++){
$("#package-"+i).show();
}
for (var i=1051;i<1060;i++){
$("#package-"+i).hide();
}
}
wjdxphone();
function wjdxpc() {
$("#dxaz").css('background-color','white');
$("#dxdn").css('background-color','#FF9900');
wjdxtype = 2;
for (var i=1048;i<1054;i++){
$("#package-"+i).hide();
}
for (var i=1057;i<1060;i++){
$("#package-"+i).hide();
}
for (var i=1054;i<1057;i++){
$("#package-"+i).show();
}
}
function wjdxpt() {
$("#dxpt").css('background-color','#FF9900');
$("#dxgj").css('background-color','white');
if (wjdxtype == 1) {
for (var i=1051;i<1060;i++){
$("#package-"+i).hide();
}
for (var i=1048;i<1051;i++){
$("#package-"+i).show();
}
} else if (wjdxtype == 2) {
for (var i=1048;i<1054;i++){
$("#package-"+i).hide();
}
for (var i=1054;i<1057;i++){
$("#package-"+i).show();
}
for (var i=1057;i<1060;i++){
$("#package-"+i).hide();
}
}
}
function wjdxgj() {
$("#dxpt").css('background-color','white');
$("#dxgj").css('background-color','#FF9900');
if (wjdxtype == 1) {
for (var i=1048;i<1051;i++){
$("#package-"+i).hide();
}
for (var i=1051;i<1054;i++){
$("#package-"+i).show();
}
for (var i=1054;i<1060;i++){
$("#package-"+i).hide();
}
} else if (wjdxtype == 2) {
for (var i=1048;i<1057;i++){
$("#package-"+i).hide();
}
for (var i=1057;i<1060;i++){
$("#package-"+i).show();
}
}
}
//1 安卓、苹果 2 pc
var wjgxtype = 1;
function wjgxphone() {
$("#gxaz").css('background-color','#FF9900');
$("#gxdn").css('background-color','white');
$("#wjgxgd").removeClass("active");
$("#wjgxpt").addClass("active");
wjgxtype = 1;
for (var i=1060;i<1063;i++){
$("#package-"+i).show();
}
for (var i=1063;i<1072;i++){
$("#package-"+i).hide();
}
}
wjgxphone();
function wjgxpc() {
$("#gxaz").css('background-color','white');
$("#gxdn").css('background-color','#FF9900');
$("#wjgxgd").removeClass("active");
$("#wjgxpt").addClass("active");
wjgxtype = 2;
for (var i=1060;i<1066;i++){
$("#package-"+i).hide();
}
for (var i=1069;i<1072;i++){
$("#package-"+i).hide();
}
for (var i=1066;i<1069;i++){
$("#package-"+i).show();
}
}
function wjgxpt() {
$("#gxpt").css('background-color','#FF9900');
$("#gxgj").css('background-color','white');
$("#wjgxgd").removeClass("active");
$("#wjgxpt").addClass("active");
if (wjgxtype == 1) {
for (var i=1060;i<1063;i++){
$("#package-"+i).show();
}
for (var i=1063;i<1072;i++){
$("#package-"+i).hide();
}
} else if (wjgxtype == 2) {
for (var i=1060;i<1066;i++){
$("#package-"+i).hide();
}
for (var i=1066;i<1069;i++){
$("#package-"+i).show();
}
for (var i=1069;i<1072;i++){
$("#package-"+i).hide();
}
}
}
function wjgxgj() {
$("#gxpt").css('background-color','white');
$("#gxgj").css('background-color','#FF9900');
$("#wjgxgd").addClass("active");
$("#wjgxpt").removeClass("active");
if (wjgxtype == 1) {
for (var i=1060;i<1063;i++){
$("#package-"+i).hide();
}
for (var i=1063;i<1066;i++){
$("#package-"+i).show();
}
for (var i=1066;i<1072;i++){
$("#package-"+i).hide();
}
} else if (wjgxtype == 2) {
for (var i=1060;i<1069;i++){
$("#package-"+i).hide();
}
for (var i=1069;i<1072;i++){
$("#package-"+i).show();
}
}
}
</script>
<p style="color: #ec6e58;font-size:30px;font-weight: bold;background-color:#FFFF00">
需求5个以上可以联系客服设置优惠价;
开通后有任何问题可无理由退款,并支持自助提现
退款规则:购买价格-使用天数*天卡价格
</p>
<div class="p_type @("type"+item.Product.Id)" style="padding-top: 10px;">
<button type="button" onclick="ttzhizun()" class="btn btn-default btn-lg ttzx" style="background-color: #FF9900;font-size:1.5em;">尊享版</button>
<button type="button" onclick="ttgaoji()" class="btn btn-default btn-lg ttgj" style="background-color: white;font-size:1.5em;">高级版</button>
<button type="button" onclick="ttputong()" class="btn btn-default btn-lg ttpt" style="background-color: white;font-size:1.5em;">普通版</button>
</div>
@if (item.Product.Id == 20) {
<div style="margin: 5px;">
<button type="button" onclick="wjdxphone()" id="dxaz" class="btn btn-default btn-lg" style="background-color: white;font-size:1.5em;">安卓/苹果</button>
<button type="button" onclick="wjdxpc()" id="dxdn" class="btn btn-default btn-lg" style="background-color: white;font-size:1.5em;">电脑</button>
</div>
<div style="margin: 5px;">
<button type="button" onclick="wjdxpt()" id="dxpt" class="btn btn-default btn-lg" style="background-color: #FF9900;font-size:1.5em;">普通版-5兆</button>
<button type="button" onclick="wjdxgj()" id="dxgj" class="btn btn-default btn-lg" style="background-color: white;font-size:1.5em;">高端版-10兆</button>
</div>
}
@if (item.Product.Id == 21) {
<div style="margin: 5px;">
<button type="button" onclick="wjgxphone()" id="gxaz" class="btn btn-default btn-lg" style="background-color: #FF9900;font-size:1.5em;">安卓/苹果</button>
<button type="button" onclick="wjgxpc()" id="gxdn" class="btn btn-default btn-lg" style="background-color: white;font-size:1.5em;">电脑</button>
</div>
<div style="margin: 5px;">
<button type="button" onclick="wjgxpt()" id="gxpt" class="btn btn-default btn-lg" style="background-color: #FF9900;font-size:1.5em;">普通版</button>
<button type="button" onclick="wjgxgj()" id="gxgj" class="btn btn-default btn-lg" style="background-color: white;font-size:1.5em;">极速版</button>
</div>
}
@foreach (var package in item.Packages.Where(m => m.Status == 1&&(m.TenantId==1157||m.TenantId==9999||m.TenantId==10000)).OrderBy(m => m.TenantId))
{
if (package.IsTest == 1)
{
<a asp-action="test" id="@("package-"+package.Id)" asp-controller="product" asp-route-id="@package.ProductId">
<div class="card color_@((item.Packages.IndexOf(package)+1)%5)">
<div class="item">
<p>@package.Name</p>
<p>@(package.DayPrice)元/天</p>
<p>@package.Profile</p>
</div>
<div class="item">
<p>¥<span>0.00</span></p>
<p style="color: #FF9900;text-decoration: line-through">原价:@package.LinePrice 元</p>
</div>
</div>
</a>
}
else
{
@if(package.Price == 0.1M){
<a asp-action="buy" id="@("package-"+package.Id)" asp-controller="product" asp-route-id="@package.Id">
<div class="card color_@((item.Packages.IndexOf(package)+1)%5)">
<div class="item">
<p style="font-size: 35px;color:#FFFF00;">@package.Name 首单</p>
<p>@(Math.Round(package.Price/package.DayCount,2))元/天</p>
<p>@package.Profile</p>
</div>
<div class="item">
<p>¥<span>@package.Price</span></p>
<p style="color: #FF9900;text-decoration: line-through">原价:@package.LinePrice 元</p>
</div>
</div>
</a>
}
else {
<a asp-action="buy" id="@("package-"+package.Id)" asp-controller="product" asp-route-id="@package.Id">
<div class="card color_@((item.Packages.IndexOf(package)+1)%5)">
<div class="item">
<p style="font-size: 35px;color:#FFFF00;">@package.Name</p>
<p>@(Math.Round(package.Price/package.DayCount,2))元/天</p>
<p>@package.Profile</p>
</div>
<div class="item">
@if((package.Id == 64||package.Id == 1004)&&package.Price<60){
<p>¥<span>60.00</span></p>
} else {
<p>¥<span>@package.Price</span></p>
}
<p style="color: #FF9900;text-decoration: line-through">原价:@package.LinePrice 元</p>
</div>
</div>
</a>
}
}
}
</div>
}
</div>
</div>
</div>
@using Hncore.Pass.Vpn.Response.Product
@using Microsoft.Extensions.Configuration
@using Hncore.Pass.BaseInfo.Response
@using Hncore.Infrastructure.Serializer;
@inject IConfiguration m_Configuration
@model List<ProductWithPackageResponse>
@{
ViewData["Title"] = "购买产品";
UserLoginModel user = null;
if (this.Context.Request.Cookies.TryGetValue("userInfo", out string userCookie))
{
user = userCookie.FromJsonTo<UserLoginModel>();
}
var pid = this.Context.Request.Query.ContainsKey("id") ? this.Context.Request.Query["id"].ToString() : "";
var defaultProduct = Model.Select(m => m.Product).FirstOrDefault();
if (pid == "")
{
pid = Model.Select(m => m.Product).FirstOrDefault().Id.ToString();
}
else
{
defaultProduct = Model.Select(m => m.Product).FirstOrDefault(m => m.Id.ToString() == pid);
}
var defaultPackage = Model.Where(m => m.Product.Id == defaultProduct.Id).Select(m => m.Packages.FirstOrDefault()).FirstOrDefault();
var baseUrl = m_Configuration["BaseInfoUrl"];
Func<string, string> P = (path) => $"{baseUrl}{path}";
}
@* <div class="cpBanner">
<img src="~/m/img/cpBanner.png">
</div> *@
<div class="cpBanner" style="background-image: url(/img/acBanner_1.png?11231);background-repeat:round;background-size:auto auto;height:360px;">
<div class="row" style="color:white;width:calc(100vw-1px);text-align:center;padding-top:10px;">
<div class="col-md-8 " style="padding-top:1.5%;">
<h2 >十余种全网知名旗舰产品低价热销</h2>
<h1 style="font-size:45px;">淘宝动态IP销量排名NO.1</h1>
<h4 style="color: #e45b4b;">已完美对接淘宝、淘宝付款后、金额将自动充值到您的会员余额中</h4>
<a target="_blank" href="https://item.taobao.com/item.htm?spm=a2oq0.12575281.0.0.45e51debbIPZJ7&ft=t&id=644774449094"><h4 style="color: #e45b4b;">欢迎淘宝下单每次下单都会随机赠送优惠券最低54元<br>优惠券支持所有套餐!<span style="color:#FFFF00;">点击去淘宝店铺付款&nbsp;<span class="glyphicon glyphicon-arrow-right"></span></span></h4></a>
</div>
<div class="col-md-3 col-md-offset-1" style="padding-top:2%;">
<h1>需求<span style="color: red;font-size:49px;">五个</span>以上</h1>
<h2>联系客服设置优惠价</h2>
<a target="_blank" href="https://admin.qidian.qq.com/template/blue/mp/menu/qr-code-jump.html?linkType=0&env=ol&kfuin=2852138148&fid=299&key=f377ec024ca45115a03a7632c7bda230&cate=1&source=&isLBS=&isCustomEntry=&type=16&ftype=1&_type=wpa&qidian=true"><h3 style="color: #e45b4b;">>>>联系客服<<<</h3></a>
</div>
</div>
</div>
<div class="cpNav">
<div class="item">
<ul class="nav nav-tabs cpName" role="tablist">
<li >
<a style="color:#0098fb"><span class="glyphicon glyphicon-arrow-down"></span>动态独享IP<span class="glyphicon glyphicon-arrow-down"></span></a>
</li>
@foreach (var item in Model)
{
if(item.Product.Id == 18) {
<li role="presentation" class="@(item.Product.Id==defaultProduct.Id?"active":"")">
<a href="#@item.Product.Id" role="tab" data-toggle="tab" style="font-size: 25px;"><span style="color: red;font-weight:bold;">送 </span>@item.Product.Name<span style="color: #f64e3d;font-weight:bold;float:right;padding-right: 5px;">8折</span></a>
</li>
} else if(item.Product.Id == 14) {
<li role="presentation" class="@(item.Product.Id==defaultProduct.Id?"active":"")">
<a href="#@item.Product.Id" id="p14" role="tab" data-toggle="tab" style="font-size: 25px;">@item.Product.Name</a>
</li>
}
else if(item.Product.Id == 22) {
<li >
<a style="color:#0098fb"><span class="glyphicon glyphicon-arrow-down"></span>静态IP<span class="glyphicon glyphicon-arrow-down"></span></a>
</li>
<li role="presentation" class="@(item.Product.Id==defaultProduct.Id?"active":"")">
<a href="#@item.Product.Id" role="tab" data-toggle="tab" style="font-size: 25px;">@item.Product.Name </a>
</li>
}
else if(item.Product.Id == 21) {
<li >
<a style="color:#0098fb"><span class="glyphicon glyphicon-arrow-down"></span>单窗口单IP<span class="glyphicon glyphicon-arrow-down"></span></a>
</li>
<li role="presentation" class="@(item.Product.Id==defaultProduct.Id?"active":"")">
<a href="#@item.Product.Id" role="tab" data-toggle="tab" style="font-size: 25px;">@item.Product.Name </a>
</li>
} else {
<li role="presentation" class="@(item.Product.Id==defaultProduct.Id?"active":"")">
<a href="#@item.Product.Id" role="tab" data-toggle="tab" style="font-size: 25px;">@item.Product.Name </a>
</li>
}
}
</ul>
</div>
<script>
$("#select-7").on('click',function(){
alert('请注意无尽IP仅供电脑端使用');
});
$("#select-19").on('click',function(){
alert('本产品为独享每个账号对应一个宽带拨号永不超载保证了网速及稳定性。使用时只需设置这个唯一的服务器1.hhip.vip在账号列表中点击切换地区即可任意组合自己需要的地区。本产品灵活便捷欢迎选购');
});
</script>
<div class="item">
<div class="tab-content">
@foreach (var item in Model)
{
<div role="tabpanel" class="tab-pane @(item.Product.Id==defaultProduct.Id?"active":"")" id="@item.Product.Id">
<p class="texing">@item.Product.Name</p>
<ul class="texingList">
@foreach (var str in item.Product.ContentLine)
{
<li>·@str</li>
}
</ul>
<script>
$(".p_type").hide();
$("#p14").click(function () {
$(".type14").show();
for (var i=1034;i<1046;i++){
$("#package-"+i).hide();
}
});
function ttzhizun() {
$("#package-89").show();
$("#package-69").show();
$("#package-70").show();
$("#package-71").show();
$("#package-1022").show();
$("#package-1023").show();
for (var i=1034;i<1046;i++){
$("#package-"+i).hide();
}
$(".ttzx").css('background-color','#FF9900');
$(".ttgj").css('background-color','white');
$(".ttpt").css('background-color','white');
}
function ttgaoji() {
$(".ttgj").css('background-color','#FF9900');
$(".ttzx").css('background-color','white');
$(".ttpt").css('background-color','white');
$("#package-89").hide();
$("#package-69").hide();
$("#package-70").hide();
$("#package-71").hide();
$("#package-1022").hide();
$("#package-1023").hide();
for (var i=1040;i<1046;i++){
$("#package-"+i).hide();
}
for (var i=1034;i<1040;i++){
$("#package-"+i).show();
}
}
function ttputong() {
$(".ttpt").css('background-color','#FF9900');
$(".ttzx").css('background-color','white');
$(".ttgj").css('background-color','white');
$("#package-89").hide();
$("#package-69").hide();
$("#package-70").hide();
$("#package-71").hide();
$("#package-1022").hide();
$("#package-1023").hide();
for (var i=1040;i<1046;i++){
$("#package-"+i).show();
}
for (var i=1034;i<1040;i++){
$("#package-"+i).hide();
}
}
var wjdxtype = 1;
function wjdxphone() {
$("#dxaz").css('background-color','#FF9900');
$("#dxdn").css('background-color','white');
wjdxtype = 1;
for (var i=1048;i<1051;i++){
$("#package-"+i).show();
}
for (var i=1051;i<1060;i++){
$("#package-"+i).hide();
}
}
wjdxphone();
function wjdxpc() {
$("#dxaz").css('background-color','white');
$("#dxdn").css('background-color','#FF9900');
wjdxtype = 2;
for (var i=1048;i<1054;i++){
$("#package-"+i).hide();
}
for (var i=1057;i<1060;i++){
$("#package-"+i).hide();
}
for (var i=1054;i<1057;i++){
$("#package-"+i).show();
}
}
function wjdxpt() {
$("#dxpt").css('background-color','#FF9900');
$("#dxgj").css('background-color','white');
if (wjdxtype == 1) {
for (var i=1051;i<1060;i++){
$("#package-"+i).hide();
}
for (var i=1048;i<1051;i++){
$("#package-"+i).show();
}
} else if (wjdxtype == 2) {
for (var i=1048;i<1054;i++){
$("#package-"+i).hide();
}
for (var i=1054;i<1057;i++){
$("#package-"+i).show();
}
for (var i=1057;i<1060;i++){
$("#package-"+i).hide();
}
}
}
function wjdxgj() {
$("#dxpt").css('background-color','white');
$("#dxgj").css('background-color','#FF9900');
if (wjdxtype == 1) {
for (var i=1048;i<1051;i++){
$("#package-"+i).hide();
}
for (var i=1051;i<1054;i++){
$("#package-"+i).show();
}
for (var i=1054;i<1060;i++){
$("#package-"+i).hide();
}
} else if (wjdxtype == 2) {
for (var i=1048;i<1057;i++){
$("#package-"+i).hide();
}
for (var i=1057;i<1060;i++){
$("#package-"+i).show();
}
}
}
//1 安卓、苹果 2 pc
var wjgxtype = 1;
function wjgxphone() {
$("#gxaz").css('background-color','#FF9900');
$("#gxdn").css('background-color','white');
$("#wjgxgd").removeClass("active");
$("#wjgxpt").addClass("active");
wjgxtype = 1;
for (var i=1060;i<1063;i++){
$("#package-"+i).show();
}
for (var i=1063;i<1072;i++){
$("#package-"+i).hide();
}
}
wjgxphone();
function wjgxpc() {
$("#gxaz").css('background-color','white');
$("#gxdn").css('background-color','#FF9900');
$("#wjgxgd").removeClass("active");
$("#wjgxpt").addClass("active");
wjgxtype = 2;
for (var i=1060;i<1066;i++){
$("#package-"+i).hide();
}
for (var i=1069;i<1072;i++){
$("#package-"+i).hide();
}
for (var i=1066;i<1069;i++){
$("#package-"+i).show();
}
}
function wjgxpt() {
$("#gxpt").css('background-color','#FF9900');
$("#gxgj").css('background-color','white');
$("#wjgxgd").removeClass("active");
$("#wjgxpt").addClass("active");
if (wjgxtype == 1) {
for (var i=1060;i<1063;i++){
$("#package-"+i).show();
}
for (var i=1063;i<1072;i++){
$("#package-"+i).hide();
}
} else if (wjgxtype == 2) {
for (var i=1060;i<1066;i++){
$("#package-"+i).hide();
}
for (var i=1066;i<1069;i++){
$("#package-"+i).show();
}
for (var i=1069;i<1072;i++){
$("#package-"+i).hide();
}
}
}
function wjgxgj() {
$("#gxpt").css('background-color','white');
$("#gxgj").css('background-color','#FF9900');
$("#wjgxgd").addClass("active");
$("#wjgxpt").removeClass("active");
if (wjgxtype == 1) {
for (var i=1060;i<1063;i++){
$("#package-"+i).hide();
}
for (var i=1063;i<1066;i++){
$("#package-"+i).show();
}
for (var i=1066;i<1072;i++){
$("#package-"+i).hide();
}
} else if (wjgxtype == 2) {
for (var i=1060;i<1069;i++){
$("#package-"+i).hide();
}
for (var i=1069;i<1072;i++){
$("#package-"+i).show();
}
}
}
</script>
<p style="color: #ec6e58;font-size:30px;font-weight: bold;background-color:#FFFF00">
需求5个以上可以联系客服设置优惠价;
开通后有任何问题可无理由退款,并支持自助提现
退款规则:购买价格-使用天数*天卡价格
</p>
<div class="p_type @("type"+item.Product.Id)" style="padding-top: 10px;">
<button type="button" onclick="ttzhizun()" class="btn btn-default btn-lg ttzx" style="background-color: #FF9900;font-size:1.5em;">尊享版</button>
<button type="button" onclick="ttgaoji()" class="btn btn-default btn-lg ttgj" style="background-color: white;font-size:1.5em;">高级版</button>
<button type="button" onclick="ttputong()" class="btn btn-default btn-lg ttpt" style="background-color: white;font-size:1.5em;">普通版</button>
</div>
@if (item.Product.Id == 20) {
<div style="margin: 5px;">
<button type="button" onclick="wjdxphone()" id="dxaz" class="btn btn-default btn-lg" style="background-color: white;font-size:1.5em;">安卓/苹果</button>
<button type="button" onclick="wjdxpc()" id="dxdn" class="btn btn-default btn-lg" style="background-color: white;font-size:1.5em;">电脑</button>
</div>
<div style="margin: 5px;">
<button type="button" onclick="wjdxpt()" id="dxpt" class="btn btn-default btn-lg" style="background-color: #FF9900;font-size:1.5em;">普通版-5兆</button>
<button type="button" onclick="wjdxgj()" id="dxgj" class="btn btn-default btn-lg" style="background-color: white;font-size:1.5em;">高端版-10兆</button>
</div>
}
@if (item.Product.Id == 21) {
<div style="margin: 5px;">
<button type="button" onclick="wjgxphone()" id="gxaz" class="btn btn-default btn-lg" style="background-color: #FF9900;font-size:1.5em;">安卓/苹果</button>
<button type="button" onclick="wjgxpc()" id="gxdn" class="btn btn-default btn-lg" style="background-color: white;font-size:1.5em;">电脑</button>
</div>
<div style="margin: 5px;">
<button type="button" onclick="wjgxpt()" id="gxpt" class="btn btn-default btn-lg" style="background-color: #FF9900;font-size:1.5em;">普通版</button>
<button type="button" onclick="wjgxgj()" id="gxgj" class="btn btn-default btn-lg" style="background-color: white;font-size:1.5em;">极速版</button>
</div>
}
@foreach (var package in item.Packages.Where(m => m.Status == 1&&(m.TenantId==1157||m.TenantId==9999||m.TenantId==10000)).OrderBy(m => m.TenantId))
{
if (package.IsTest == 1)
{
<a asp-action="test" id="@("package-"+package.Id)" asp-controller="product" asp-route-id="@package.ProductId">
<div class="card color_@((item.Packages.IndexOf(package)+1)%5)">
<div class="item">
<p>@package.Name</p>
<p>@(package.DayPrice)元/天</p>
<p>@package.Profile</p>
</div>
<div class="item">
<p>¥<span>0.00</span></p>
<p style="color: #FF9900;text-decoration: line-through">原价:@package.LinePrice 元</p>
</div>
</div>
</a>
}
else
{
@if(package.Price == 0.1M){
<a asp-action="buy" id="@("package-"+package.Id)" asp-controller="product" asp-route-id="@package.Id">
<div class="card color_@((item.Packages.IndexOf(package)+1)%5)">
<div class="item">
<p style="font-size: 35px;color:#FFFF00;">@package.Name 首单</p>
<p>@(Math.Round(package.Price/package.DayCount,2))元/天</p>
<p>@package.Profile</p>
</div>
<div class="item">
<p>¥<span>@package.Price</span></p>
<p style="color: #FF9900;text-decoration: line-through">原价:@package.LinePrice 元</p>
</div>
</div>
</a>
}
else {
<a asp-action="buy" id="@("package-"+package.Id)" asp-controller="product" asp-route-id="@package.Id">
<div class="card color_@((item.Packages.IndexOf(package)+1)%5)">
<div class="item">
<p style="font-size: 35px;color:#FFFF00;">@package.Name</p>
<p>@(Math.Round(package.Price/package.DayCount,2))元/天</p>
<p>@package.Profile</p>
</div>
<div class="item">
@if((package.Id == 64||package.Id == 1004)&&package.Price<60){
<p>¥<span>60.00</span></p>
} else {
<p>¥<span>@package.Price</span></p>
}
<p style="color: #FF9900;text-decoration: line-through">原价:@package.LinePrice 元</p>
</div>
</div>
</a>
}
}
}
</div>
}
</div>
</div>
</div>

View File

@@ -1,143 +1,143 @@
@using Hncore.Pass.Vpn.Response.Product
@using Microsoft.Extensions.Configuration
@using Hncore.Pass.BaseInfo.Response
@using Hncore.Infrastructure.Serializer;
@inject IConfiguration m_Configuration
@model ProductWithPackageResponse
@{
ViewData["Title"] = "购买产品";
UserLoginModel user = null;
if (this.Context.Request.Cookies.TryGetValue("userInfo", out string userCookie))
{
user = userCookie.FromJsonTo<UserLoginModel>();
}
var defaultProduct = Model.Product;
var defaultPackage = Model.Packages.FirstOrDefault();
var baseUrl = m_Configuration["BaseInfoUrl"];
Func<string, string> P = (path) => $"{baseUrl}{path}";
}
@* <div class="cpBanner">
<img src="~/m/img/cpBanner.png">
</div> *@
<div class="cpBanner" style="background-image: url(/img/acBanner_1.png?11231);background-repeat:round;background-size:auto auto;height:330px;">
<div class="row" style="color:white;width:calc(100vw-1px);text-align:center;padding-top:10px;">
<div class="col-md-8 " style="padding-top:1.5%;">
<h2 >十余种全网知名旗舰产品低价热销</h2>
<h1 style="font-size:45px;">淘宝动态IP销量排名NO.1</h1>
<h4 style="color: #e45b4b;">已完美对接淘宝、淘宝付款后、金额将自动充值到您的会员余额中</h4>
<a target="_blank" href="https://item.taobao.com/item.htm?spm=a2oq0.12575281.0.0.45e51debbIPZJ7&ft=t&id=644774449094"><h4 style="color: #e45b4b;">欢迎淘宝下单每次下单都会随机赠送优惠券最低54元<br>优惠券支持所有套餐!<span style="color:#FFFF00;">点击去淘宝店铺付款&nbsp;<span class="glyphicon glyphicon-arrow-right"></span></span></h4></a>
</div>
<div class="col-md-3 col-md-offset-1" style="padding-top:2%;">
<h1>需求<span style="color: red;font-size:49px;">五个</span>以上</h1>
<h2>联系客服设置优惠价</h2>
<a target="_blank" href="https://admin.qidian.qq.com/template/blue/mp/menu/qr-code-jump.html?linkType=0&env=ol&kfuin=2852138148&fid=299&key=f377ec024ca45115a03a7632c7bda230&cate=1&source=&isLBS=&isCustomEntry=&type=16&ftype=1&_type=wpa&qidian=true"><h3 style="color: #e45b4b;">>>>联系客服<<<</h3></a>
</div>
</div>
</div>
<div class="cpNav">
<div class="item">
<ul class="nav nav-tabs cpName" role="tablist">
<li role="presentation" class="active">
<a href="#@Model.Product.Id">@Model.Product.Name</a>
</li>
</ul>
</div>
<div class="item">
<div class="tab-content">
<div role="tabpanel" class="tab-pane active" id="@Model.Product.Id">
<p class="texing">@Model.Product.Name</p>
<ul class="texingList">
<p>·不限速网速最高可达50兆</p>
<p>·支持手机,电脑,模拟器</p>
<p>·200多个城市+全国混波量ip千万级</p>
<p>·带宽6-10兆</p>
<p>·断开再链接换ip</p>
</ul>
@foreach (var package in Model.Packages.Where(m=>m.IsTest==0&&m.Status==1 && m.Id != 21&& m.Id != 20).OrderBy(m => m.TenantId))
{
@if(package.Id == 101||package.Id == 103||package.Id == 104||(package.Id>103)){
<a asp-action="rebuy" asp-controller="Product" asp-route-packageId="@package.Id" asp-route-accounts=@ViewBag.accounts>
<div class="card color_@((Model.Packages.IndexOf(package)+1)%5)">
<div class="item">
<p style="font-size: 35px;color:#f64e3d;">@package.Name </p>
<p>@(package.DayPrice)元/天</p>
<p>@package.Profile</p>
</div>
<div class="item">
<p>¥<span>@package.Price</span></p>
<p style="color: #FF9900;text-decoration: line-through">原价:@package.LinePrice 元</p>
</div>
</div>
</a>
}
@* else if(package.Id == 19){
<a asp-action="rebuy" asp-controller="Product" asp-route-packageId="@package.Id" asp-route-accounts=@ViewBag.accounts>
<div class="card color_@((Model.Packages.IndexOf(package)+1)%5)">
<div class="item">
<p style="font-size: 35px;color:#f64e3d;">@package.Name 送10天</p>
<p>@(package.DayPrice)元/天</p>
<p>@package.Profile</p>
</div>
<div class="item">
<p>¥<span>@package.Price</span></p>
<p style="color: #FF9900;text-decoration: line-through">原价:@package.LinePrice 元</p>
</div>
</div>
</a>
} *@
@* else if(package.Id == 63||package.Id == 64||package.Id == 65||package.Id == 66||package.Id == 67||package.Id == 13||package.Id == 14||package.Id == 15||package.Id == 16){
<a asp-action="rebuy" asp-controller="Product" asp-route-packageId="@package.Id" asp-route-accounts=@ViewBag.accounts>
<div class="card color_@((Model.Packages.IndexOf(package)+1)%5)">
<div class="item">
<p style="font-size: 35px;color:#f64e3d;">@package.Name 85折</p>
<p>@(package.DayPrice)元/天</p>
<p>@package.Profile</p>
</div>
<div class="item">
<p>¥<span>@package.Price</span></p>
<p style="color: #FF9900;text-decoration: line-through">原价:@package.LinePrice 元</p>
</div>
</div>
</a>
} *@
else if(package.Id == 100 || package.Id == 102){
<a asp-action="rebuy" asp-controller="Product" asp-route-packageId="@package.Id" asp-route-accounts=@ViewBag.accounts>
<div class="card color_@((Model.Packages.IndexOf(package)+1)%5)">
<div class="item">
<p style="font-size: 35px;color:#f64e3d;">@package.Name </p>
<p>@(package.DayPrice)元/天</p>
<p>@package.Profile</p>
</div>
<div class="item">
<p>¥<span>@package.Price</span></p>
<p style="color: #FF9900;text-decoration: line-through">原价:@package.LinePrice 元</p>
</div>
</div>
</a>
} else if(package.Id != 88) {
<a asp-action="rebuy" asp-controller="Product" asp-route-packageId="@package.Id" asp-route-accounts=@ViewBag.accounts>
<div class="card color_@((Model.Packages.IndexOf(package)+1)%5)">
<div class="item">
<p>@package.Name</p>
<p>@(package.DayPrice)元/天</p>
<p>@package.Profile</p>
</div>
<div class="item">
@if((package.Id == 64||package.Id == 1004)&&package.Price<60){
<p>¥<span>60.00</span></p>
} else {
<p>¥<span>@package.Price</span></p>
}
<p style="color: #FF9900;text-decoration: line-through">原价:@package.LinePrice 元</p>
</div>
</div>
</a>
}
}
</div>
</div>
</div>
@using Hncore.Pass.Vpn.Response.Product
@using Microsoft.Extensions.Configuration
@using Hncore.Pass.BaseInfo.Response
@using Hncore.Infrastructure.Serializer;
@inject IConfiguration m_Configuration
@model ProductWithPackageResponse
@{
ViewData["Title"] = "购买产品";
UserLoginModel user = null;
if (this.Context.Request.Cookies.TryGetValue("userInfo", out string userCookie))
{
user = userCookie.FromJsonTo<UserLoginModel>();
}
var defaultProduct = Model.Product;
var defaultPackage = Model.Packages.FirstOrDefault();
var baseUrl = m_Configuration["BaseInfoUrl"];
Func<string, string> P = (path) => $"{baseUrl}{path}";
}
@* <div class="cpBanner">
<img src="~/m/img/cpBanner.png">
</div> *@
<div class="cpBanner" style="background-image: url(/img/acBanner_1.png?11231);background-repeat:round;background-size:auto auto;height:330px;">
<div class="row" style="color:white;width:calc(100vw-1px);text-align:center;padding-top:10px;">
<div class="col-md-8 " style="padding-top:1.5%;">
<h2 >十余种全网知名旗舰产品低价热销</h2>
<h1 style="font-size:45px;">淘宝动态IP销量排名NO.1</h1>
<h4 style="color: #e45b4b;">已完美对接淘宝、淘宝付款后、金额将自动充值到您的会员余额中</h4>
<a target="_blank" href="https://item.taobao.com/item.htm?spm=a2oq0.12575281.0.0.45e51debbIPZJ7&ft=t&id=644774449094"><h4 style="color: #e45b4b;">欢迎淘宝下单每次下单都会随机赠送优惠券最低54元<br>优惠券支持所有套餐!<span style="color:#FFFF00;">点击去淘宝店铺付款&nbsp;<span class="glyphicon glyphicon-arrow-right"></span></span></h4></a>
</div>
<div class="col-md-3 col-md-offset-1" style="padding-top:2%;">
<h1>需求<span style="color: red;font-size:49px;">五个</span>以上</h1>
<h2>联系客服设置优惠价</h2>
<a target="_blank" href="https://admin.qidian.qq.com/template/blue/mp/menu/qr-code-jump.html?linkType=0&env=ol&kfuin=2852138148&fid=299&key=f377ec024ca45115a03a7632c7bda230&cate=1&source=&isLBS=&isCustomEntry=&type=16&ftype=1&_type=wpa&qidian=true"><h3 style="color: #e45b4b;">>>>联系客服<<<</h3></a>
</div>
</div>
</div>
<div class="cpNav">
<div class="item">
<ul class="nav nav-tabs cpName" role="tablist">
<li role="presentation" class="active">
<a href="#@Model.Product.Id">@Model.Product.Name</a>
</li>
</ul>
</div>
<div class="item">
<div class="tab-content">
<div role="tabpanel" class="tab-pane active" id="@Model.Product.Id">
<p class="texing">@Model.Product.Name</p>
<ul class="texingList">
<p>·不限速网速最高可达50兆</p>
<p>·支持手机,电脑,模拟器</p>
<p>·200多个城市+全国混波量ip千万级</p>
<p>·带宽6-10兆</p>
<p>·断开再链接换ip</p>
</ul>
@foreach (var package in Model.Packages.Where(m=>m.IsTest==0&&m.Status==1 && m.Id != 21&& m.Id != 20).OrderBy(m => m.TenantId))
{
@if(package.Id == 101||package.Id == 103||package.Id == 104||(package.Id>103)){
<a asp-action="rebuy" asp-controller="Product" asp-route-packageId="@package.Id" asp-route-accounts=@ViewBag.accounts>
<div class="card color_@((Model.Packages.IndexOf(package)+1)%5)">
<div class="item">
<p style="font-size: 35px;color:#f64e3d;">@package.Name </p>
<p>@(package.DayPrice)元/天</p>
<p>@package.Profile</p>
</div>
<div class="item">
<p>¥<span>@package.Price</span></p>
<p style="color: #FF9900;text-decoration: line-through">原价:@package.LinePrice 元</p>
</div>
</div>
</a>
}
@* else if(package.Id == 19){
<a asp-action="rebuy" asp-controller="Product" asp-route-packageId="@package.Id" asp-route-accounts=@ViewBag.accounts>
<div class="card color_@((Model.Packages.IndexOf(package)+1)%5)">
<div class="item">
<p style="font-size: 35px;color:#f64e3d;">@package.Name 送10天</p>
<p>@(package.DayPrice)元/天</p>
<p>@package.Profile</p>
</div>
<div class="item">
<p>¥<span>@package.Price</span></p>
<p style="color: #FF9900;text-decoration: line-through">原价:@package.LinePrice 元</p>
</div>
</div>
</a>
} *@
@* else if(package.Id == 63||package.Id == 64||package.Id == 65||package.Id == 66||package.Id == 67||package.Id == 13||package.Id == 14||package.Id == 15||package.Id == 16){
<a asp-action="rebuy" asp-controller="Product" asp-route-packageId="@package.Id" asp-route-accounts=@ViewBag.accounts>
<div class="card color_@((Model.Packages.IndexOf(package)+1)%5)">
<div class="item">
<p style="font-size: 35px;color:#f64e3d;">@package.Name 85折</p>
<p>@(package.DayPrice)元/天</p>
<p>@package.Profile</p>
</div>
<div class="item">
<p>¥<span>@package.Price</span></p>
<p style="color: #FF9900;text-decoration: line-through">原价:@package.LinePrice 元</p>
</div>
</div>
</a>
} *@
else if(package.Id == 100 || package.Id == 102){
<a asp-action="rebuy" asp-controller="Product" asp-route-packageId="@package.Id" asp-route-accounts=@ViewBag.accounts>
<div class="card color_@((Model.Packages.IndexOf(package)+1)%5)">
<div class="item">
<p style="font-size: 35px;color:#f64e3d;">@package.Name </p>
<p>@(package.DayPrice)元/天</p>
<p>@package.Profile</p>
</div>
<div class="item">
<p>¥<span>@package.Price</span></p>
<p style="color: #FF9900;text-decoration: line-through">原价:@package.LinePrice 元</p>
</div>
</div>
</a>
} else if(package.Id != 88) {
<a asp-action="rebuy" asp-controller="Product" asp-route-packageId="@package.Id" asp-route-accounts=@ViewBag.accounts>
<div class="card color_@((Model.Packages.IndexOf(package)+1)%5)">
<div class="item">
<p>@package.Name</p>
<p>@(package.DayPrice)元/天</p>
<p>@package.Profile</p>
</div>
<div class="item">
@if((package.Id == 64||package.Id == 1004)&&package.Price<60){
<p>¥<span>60.00</span></p>
} else {
<p>¥<span>@package.Price</span></p>
}
<p style="color: #FF9900;text-decoration: line-through">原价:@package.LinePrice 元</p>
</div>
</div>
</a>
}
}
</div>
</div>
</div>
</div>

View File

@@ -1,66 +1,66 @@
@using Hncore.Pass.Vpn.Domain
@using Microsoft.Extensions.Configuration
@inject IConfiguration m_Configuration
@model List<ProductEntity>
@{
var baseUrl = m_Configuration["BaseInfoUrl"];
Func<string, string> P = (path) => $"{baseUrl}{path}";
}
<div class="container-fluid softBg">
<div class="container">
<div class="row">
<div class="col-sm-4">
</div>
<div class="col-sm-4 text-center">
<p class="simg"><img src="~/img/img_soft.png"></p>
<p class="sintro">软件和账户必须为同一产品才能使用</p>
</div>
<div class="col-sm-4 text-right">
<a href="#" class="jiaocheng">使用教程→</a>
</div>
</div>
</div>
</div>
<div class="softList">
@foreach (var item in Model.Where(m=>m.Sort!=1000 && m.Id!=12 && m.Id!=21 && m.OnLine==1).OrderBy(m => m.Sort))
{
<div class="item">
@*<p><img src="@P(item.Image)"></p>*@
@if (item.Id != 20){
<p>@item.Name</p>
<p><a href="@item.SimulatorDownloadUrl"> <button type="button" class="btnBlue">SSTP客户端下载</button></a></p>
}
@if (!string.IsNullOrEmpty(item.DroidDownloadUrl)){
<p>@item.Name</p>
<p><a href="@item.DroidDownloadUrl"> <button type="button" class="btnBlue">安卓APP</button></a></p>
<br>
} else if (item.Id == 20) {
<p>无极</p>
<p><a href="http://wuxinxikehuduan.image.qiangzipptp.top/%E6%97%A0%E6%9E%81%E5%AE%89%E5%8D%93-%E5%85%B1%E4%BA%AB%E7%8B%AC%E4%BA%AB%E9%80%9A%E7%94%A8.apk"> <button type="button" class="btnBlue">无极安卓共享独享通用</button></a></p>
<p><a href="https://apps.apple.com/cn/app/jie-zou-da-shi/id1448657437"> <button type="button" class="btnBlue">ios客户端</button></a></p>
}
</div>
}
<div class="item" style="height: auto;">
@*<p><img src="@P(item.Image)"></p>*@
<p>代理商专用客户端</p>
<p><a href="http://wuxinxikehuduan.image.qiangzipptp.top/%E8%A5%BF%E7%93%9CIP%20-%20%E4%BB%A3%E7%90%86%E7%89%88.zip"> <button type="button" class="btnBlue">西瓜IP-电脑版</button></a></p>
<p><a href="http://wuxinxikehuduan.image.qiangzipptp.top/%E8%A5%BF%E7%93%9CIP%E5%AE%89%E5%8D%93%E4%BB%A3%E7%90%86%E7%89%88.apk"> <button type="button" class="btnBlue">西瓜IP-安卓</button></a></p><br>
<p><a href="http://wuxinxikehuduan.image.qiangzipptp.top/%E6%9E%81%E5%AE%A2IP%E4%BB%A3%E7%90%86%E7%89%88%203.5.rar"> <button type="button" class="btnBlue">极客IP-电脑版</button></a></p><br>
<p><a href="http://wuxinxikehuduan.image.qiangzipptp.top/%E6%9E%81%E5%AE%A2IP%E5%AE%89%E5%8D%93%E4%BB%A3%E7%90%86%E7%89%88.apk"> <button type="button" class="btnBlue">极客IP-安卓</button></a></p><br>
<p><a href="http://wuxinxikehuduan.image.qiangzipptp.top/%E8%AE%AF%E8%BF%9EIP%E7%94%B5%E8%84%91%E7%AB%AF-%E4%BB%A3%E7%90%86%E7%89%88.rar"> <button type="button" class="btnBlue">迅连IP-电脑版</button></a></p>
<p><a href="http://wuxinxikehuduan.image.qiangzipptp.top/%E8%AE%AF%E8%BF%9EIP%E5%AE%89%E5%8D%93%E7%AB%AF-%E4%BB%A3%E7%90%86%E7%89%88.apk"> <button type="button" class="btnBlue">讯连IP-安卓端</button></a></p>
<p><a href="http://wuxinxikehuduan.image.qiangzipptp.top/%E5%BC%BA%E5%AD%90IP%E7%94%B5%E8%84%91%E7%AB%AF-%E4%BB%A3%E7%90%86%E7%89%88.rar"> <button type="button" class="btnBlue">强子IP-电脑版</button></a></p>
<p><a href="http://wuxinxikehuduan.image.qiangzipptp.top/%E5%BC%BA%E5%AD%90IP%E5%AE%89%E5%8D%93%E7%AB%AF-%E4%BB%A3%E7%90%86%E7%89%88.apk"> <button type="button" class="btnBlue">强子IP-安卓端</button></a></p>
<p><a href="http://app.cn98.net:8000/huohupubnet.apk"> <button type="button" class="btnBlue">火狐IP-安卓端</button></a></p>
<p><a href="http://app.ipsoft168.com:8000/yunniupubdtip.apk"> <button type="button" class="btnBlue">云牛IP-安卓端</button></a></p>
<p><a href="http://wuxinxikehuduan.image.qiangzipptp.top/%E6%98%9F%E6%98%9FIP%E7%94%B5%E8%84%91%E7%AB%AF-4.10%E4%BB%A3%E7%90%86%E7%89%88.rar"> <button type="button" class="btnBlue">星星IP-电脑端</button></a></p><br>
<p><a href="http://wuxinxikehuduan.image.qiangzipptp.top/%E8%98%91%E8%8F%87IP-2-17.zip"> <button type="button" class="btnBlue">蘑菇IP-电脑端</button></a></p><br>
</div>
@using Hncore.Pass.Vpn.Domain
@using Microsoft.Extensions.Configuration
@inject IConfiguration m_Configuration
@model List<ProductEntity>
@{
var baseUrl = m_Configuration["BaseInfoUrl"];
Func<string, string> P = (path) => $"{baseUrl}{path}";
}
<div class="container-fluid softBg">
<div class="container">
<div class="row">
<div class="col-sm-4">
</div>
<div class="col-sm-4 text-center">
<p class="simg"><img src="~/img/img_soft.png"></p>
<p class="sintro">软件和账户必须为同一产品才能使用</p>
</div>
<div class="col-sm-4 text-right">
<a href="#" class="jiaocheng">使用教程→</a>
</div>
</div>
</div>
</div>
<div class="softList">
@foreach (var item in Model.Where(m=>m.Sort!=1000 && m.Id!=12 && m.Id!=21 && m.OnLine==1).OrderBy(m => m.Sort))
{
<div class="item">
@*<p><img src="@P(item.Image)"></p>*@
@if (item.Id != 20){
<p>@item.Name</p>
<p><a href="@item.SimulatorDownloadUrl"> <button type="button" class="btnBlue">SSTP客户端下载</button></a></p>
}
@if (!string.IsNullOrEmpty(item.DroidDownloadUrl)){
<p>@item.Name</p>
<p><a href="@item.DroidDownloadUrl"> <button type="button" class="btnBlue">安卓APP</button></a></p>
<br>
} else if (item.Id == 20) {
<p>无极</p>
<p><a href="http://wuxinxikehuduan.image.qiangzipptp.top/%E6%97%A0%E6%9E%81%E5%AE%89%E5%8D%93-%E5%85%B1%E4%BA%AB%E7%8B%AC%E4%BA%AB%E9%80%9A%E7%94%A8.apk"> <button type="button" class="btnBlue">无极安卓共享独享通用</button></a></p>
<p><a href="https://apps.apple.com/cn/app/jie-zou-da-shi/id1448657437"> <button type="button" class="btnBlue">ios客户端</button></a></p>
}
</div>
}
<div class="item" style="height: auto;">
@*<p><img src="@P(item.Image)"></p>*@
<p>代理商专用客户端</p>
<p><a href="http://wuxinxikehuduan.image.qiangzipptp.top/%E8%A5%BF%E7%93%9CIP%20-%20%E4%BB%A3%E7%90%86%E7%89%88.zip"> <button type="button" class="btnBlue">西瓜IP-电脑版</button></a></p>
<p><a href="http://wuxinxikehuduan.image.qiangzipptp.top/%E8%A5%BF%E7%93%9CIP%E5%AE%89%E5%8D%93%E4%BB%A3%E7%90%86%E7%89%88.apk"> <button type="button" class="btnBlue">西瓜IP-安卓</button></a></p><br>
<p><a href="http://wuxinxikehuduan.image.qiangzipptp.top/%E6%9E%81%E5%AE%A2IP%E4%BB%A3%E7%90%86%E7%89%88%203.5.rar"> <button type="button" class="btnBlue">极客IP-电脑版</button></a></p><br>
<p><a href="http://wuxinxikehuduan.image.qiangzipptp.top/%E6%9E%81%E5%AE%A2IP%E5%AE%89%E5%8D%93%E4%BB%A3%E7%90%86%E7%89%88.apk"> <button type="button" class="btnBlue">极客IP-安卓</button></a></p><br>
<p><a href="http://wuxinxikehuduan.image.qiangzipptp.top/%E8%AE%AF%E8%BF%9EIP%E7%94%B5%E8%84%91%E7%AB%AF-%E4%BB%A3%E7%90%86%E7%89%88.rar"> <button type="button" class="btnBlue">迅连IP-电脑版</button></a></p>
<p><a href="http://wuxinxikehuduan.image.qiangzipptp.top/%E8%AE%AF%E8%BF%9EIP%E5%AE%89%E5%8D%93%E7%AB%AF-%E4%BB%A3%E7%90%86%E7%89%88.apk"> <button type="button" class="btnBlue">讯连IP-安卓端</button></a></p>
<p><a href="http://wuxinxikehuduan.image.qiangzipptp.top/%E5%BC%BA%E5%AD%90IP%E7%94%B5%E8%84%91%E7%AB%AF-%E4%BB%A3%E7%90%86%E7%89%88.rar"> <button type="button" class="btnBlue">强子IP-电脑版</button></a></p>
<p><a href="http://wuxinxikehuduan.image.qiangzipptp.top/%E5%BC%BA%E5%AD%90IP%E5%AE%89%E5%8D%93%E7%AB%AF-%E4%BB%A3%E7%90%86%E7%89%88.apk"> <button type="button" class="btnBlue">强子IP-安卓端</button></a></p>
<p><a href="http://app.cn98.net:8000/huohupubnet.apk"> <button type="button" class="btnBlue">火狐IP-安卓端</button></a></p>
<p><a href="http://app.ipsoft168.com:8000/yunniupubdtip.apk"> <button type="button" class="btnBlue">云牛IP-安卓端</button></a></p>
<p><a href="http://wuxinxikehuduan.image.qiangzipptp.top/%E6%98%9F%E6%98%9FIP%E7%94%B5%E8%84%91%E7%AB%AF-4.10%E4%BB%A3%E7%90%86%E7%89%88.rar"> <button type="button" class="btnBlue">星星IP-电脑端</button></a></p><br>
<p><a href="http://wuxinxikehuduan.image.qiangzipptp.top/%E8%98%91%E8%8F%87IP-2-17.zip"> <button type="button" class="btnBlue">蘑菇IP-电脑端</button></a></p><br>
</div>
</div>

View File

@@ -1,129 +1,129 @@
@using Hncore.Pass.Vpn.Response.Product
@using Hncore.Infrastructure.Extension
@using Microsoft.Extensions.Configuration
@using Hncore.Infrastructure.Common
@model PackageInfoResponse
@inject IConfiguration m_Configuration
@inject Hncore.Pass.Vpn.Service.ProductAccountService m_AccountService
@{
ViewData["Title"] = "购买产品";
var t = this.Context.Request.GetInt("t");
var baseUrl = m_Configuration["BaseInfoUrl"];
Func<string, string> P = (path) => $"{baseUrl}{path}";
var randomPwd = ValidateCodeHelper.MakeNumCode(3).ToLower();
var randomAccount = ValidateCodeHelper.MakeCharCode(2).ToLower() + ValidateCodeHelper.MakeNumCode(4).ToLower();
while (m_AccountService.Exist(m => m.Account == randomAccount))
{
randomAccount = ValidateCodeHelper.MakeCharCode(2).ToLower() + ValidateCodeHelper.MakeNumCode(4).ToLower();
}
}
<vc:redirecct-login></vc:redirecct-login>
<script type="text/javascript">
$(function () {
let realverify = {
cookie:document.cookie,
}
$.ajax({
type: 'POST',
async:false,
url: 'http://php-api.juip.com/api/Realname/index',
dataType: "json",
contentType: "application/json",
data: JSON.stringify(realverify),
beforeSend: function(xhr) {
xhr.withCredentials = true;
},
crossDomain: true,
success: function (res) {
if (res.Code == -10000) {
alert('接主管部门要求,会员需要实名认证方可使用该产品,点击确定前往 用户主页、个人信息 实名认证。');
window.location.href="/User/IndexInfo";
}
}
});
});
</script>
<div class="cpTop">
<p class="choose">当前已选产品:</p>
<div class="kArea">
<div class="cpKuang">
<div class="item">
<p><img src="@P(Model.Product.Image)"></p>
<p>@Model.Product.Name</p>
</div>
<div class="item">
<p class="kaci">@Model.Package.Name</p>
<p class="grayText">@(Model.Package.DayPrice)元/天</p>
<p class="grayText">@Model.Package.Profile</p>
</div>
<div class="item">
¥ <span class="price">@Model.Package.Price</span>
</div>
</div>
</div>
<div class="chongxin">
<div class="item redText">
*请确认好所需产品,买错产品换货将产生费用
</div>
<div class="item">
<a asp-action="index" asp-controller="product"><button type="button" class="btnBlue">返回重新选择</button></a>
</div>
</div>
</div>
<div class="biaodan">
IP账号前缀<input type="text" name="" id="account" value="@randomAccount" />
</div>
<div class="biaodan">
IP账号密码<input type="text" name="" id="pwd" value="@randomPwd" />
</div>
<p class="grayText text-center shengyu">剩余试用次数:<span>@(Model.RestTimes)</span></p>
<p class="text-center redText tip"></p>
<p class="text-center">
@if (Model.RestTimes > 0 && Model.Package.Status == 1)
{
<button type="button" class="btnBlue large" onclick="create()">领取试用</button>
}
@if (Model.Package.Status == 0)
{
<span style="color:red;">
该产品暂不能测试
</span>
}
</p>
@section Scripts{
<script>
function create() {
var data = {
ProductId:@(Model.Product.Id),
PackageId: @(Model.Package.Id),
Account: $('#account').val(),
Pwd: $('#pwd').val()
};
if (data.Account == '' || data.Pwd == '') {
$(".tip").text("账户和密码不能为空");
return;
}
$.ajax({
type: 'POST',
url: '/api/course/v1/productaccount/CreateTestAccount',
contentType: "application/json",
data: JSON.stringify(data),
success: function (res) {
console.log(res);
if (res.Code == 10000) {
alert("领取成功")
window.location.href = "/user/myaccounts";
} else {
$(".tip").text(res.Message);
}
},
dataType: "json"
});
}
</script>
@using Hncore.Pass.Vpn.Response.Product
@using Hncore.Infrastructure.Extension
@using Microsoft.Extensions.Configuration
@using Hncore.Infrastructure.Common
@model PackageInfoResponse
@inject IConfiguration m_Configuration
@inject Hncore.Pass.Vpn.Service.ProductAccountService m_AccountService
@{
ViewData["Title"] = "购买产品";
var t = this.Context.Request.GetInt("t");
var baseUrl = m_Configuration["BaseInfoUrl"];
Func<string, string> P = (path) => $"{baseUrl}{path}";
var randomPwd = ValidateCodeHelper.MakeNumCode(3).ToLower();
var randomAccount = ValidateCodeHelper.MakeCharCode(2).ToLower() + ValidateCodeHelper.MakeNumCode(4).ToLower();
while (m_AccountService.Exist(m => m.Account == randomAccount))
{
randomAccount = ValidateCodeHelper.MakeCharCode(2).ToLower() + ValidateCodeHelper.MakeNumCode(4).ToLower();
}
}
<vc:redirecct-login></vc:redirecct-login>
<script type="text/javascript">
$(function () {
let realverify = {
cookie:document.cookie,
}
$.ajax({
type: 'POST',
async:false,
url: 'http://php-api.juip.com/api/Realname/index',
dataType: "json",
contentType: "application/json",
data: JSON.stringify(realverify),
beforeSend: function(xhr) {
xhr.withCredentials = true;
},
crossDomain: true,
success: function (res) {
if (res.Code == -10000) {
alert('接主管部门要求,会员需要实名认证方可使用该产品,点击确定前往 用户主页、个人信息 实名认证。');
window.location.href="/User/IndexInfo";
}
}
});
});
</script>
<div class="cpTop">
<p class="choose">当前已选产品:</p>
<div class="kArea">
<div class="cpKuang">
<div class="item">
<p><img src="@P(Model.Product.Image)"></p>
<p>@Model.Product.Name</p>
</div>
<div class="item">
<p class="kaci">@Model.Package.Name</p>
<p class="grayText">@(Model.Package.DayPrice)元/天</p>
<p class="grayText">@Model.Package.Profile</p>
</div>
<div class="item">
¥ <span class="price">@Model.Package.Price</span>
</div>
</div>
</div>
<div class="chongxin">
<div class="item redText">
*请确认好所需产品,买错产品换货将产生费用
</div>
<div class="item">
<a asp-action="index" asp-controller="product"><button type="button" class="btnBlue">返回重新选择</button></a>
</div>
</div>
</div>
<div class="biaodan">
IP账号前缀<input type="text" name="" id="account" value="@randomAccount" />
</div>
<div class="biaodan">
IP账号密码<input type="text" name="" id="pwd" value="@randomPwd" />
</div>
<p class="grayText text-center shengyu">剩余试用次数:<span>@(Model.RestTimes)</span></p>
<p class="text-center redText tip"></p>
<p class="text-center">
@if (Model.RestTimes > 0 && Model.Package.Status == 1)
{
<button type="button" class="btnBlue large" onclick="create()">领取试用</button>
}
@if (Model.Package.Status == 0)
{
<span style="color:red;">
该产品暂不能测试
</span>
}
</p>
@section Scripts{
<script>
function create() {
var data = {
ProductId:@(Model.Product.Id),
PackageId: @(Model.Package.Id),
Account: $('#account').val(),
Pwd: $('#pwd').val()
};
if (data.Account == '' || data.Pwd == '') {
$(".tip").text("账户和密码不能为空");
return;
}
$.ajax({
type: 'POST',
url: '/api/course/v1/productaccount/CreateTestAccount',
contentType: "application/json",
data: JSON.stringify(data),
success: function (res) {
console.log(res);
if (res.Code == 10000) {
alert("领取成功")
window.location.href = "/user/myaccounts";
} else {
$(".tip").text(res.Message);
}
},
dataType: "json"
});
}
</script>
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,387 +1,387 @@
@using Hncore.Pass.Vpn.Response.Product
@using Hncore.Infrastructure.Extension
@using Hncore.Pass.BaseInfo.Response
@using Hncore.Infrastructure.Serializer;
@using Hncore.Pass.BaseInfo.Service
@model PackageInfoResponse
@inject UserService m_UserService
@{
ViewData["Title"] = "购买产品";
UserLoginModel user = null;
Hncore.Pass.BaseInfo.Models.User userEntity = new Hncore.Pass.BaseInfo.Models.User();
if (this.Context.Request.Cookies.TryGetValue("userInfo", out string userCookie))
{
user = userCookie.FromJsonTo<UserLoginModel>();
userEntity = await m_UserService.GetById(user.Id);
}
}
<script src="~/js/vue.js"></script>
<script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
<script type="text/javascript">
$(function () {
let realverify = {
cookie:document.cookie,
}
$.ajax({
type: 'POST',
async:false,
url: 'http://php-api.juip.com/api/Realname/index',
dataType: "json",
contentType: "application/json",
data: JSON.stringify(realverify),
beforeSend: function(xhr) {
xhr.withCredentials = true;
},
crossDomain: true,
success: function (res) {
if (res.Code == -10000) {
alert('接主管部门要求,会员需要实名认证方可使用该产品,点击确定前往 用户主页、个人信息 实名认证。');
window.location.href="/User/IndexInfo";
}
}
});
</script>
<vc:redirecct-login></vc:redirecct-login>
<vc:pay-wait></vc:pay-wait>
<div id="app">
<div class="cpTop">
<p class="choose">当前已选产品:</p>
<div class="kArea">
<div class="cpKuang">
<div class="item">
<p><img src="~/@Model.Product.Image"></p>
<p>@Model.Product.Name</p>
</div>
<div class="item">
<p class="kaci">@Model.Package.Name</p>
<p class="grayText">@(Model.Package.DayPrice)元/天</p>
<p class="grayText">@Model.Package.Profile</p>
</div>
<div class="item">
¥ <span class="price">@Model.Package.Price</span>
</div>
</div>
</div>
<div class="chongxin">
<div class="item redText">
*请确认好所需产品,买错产品换货将产生费用
</div>
<div class="item">
<button type="button" class="btnBlue" onclick="history.go(-1)">返回重新选择</button>
</div>
</div>
</div>
<!-- con -->
<div class="container zhuce">
<div class="reg_tab">
<div class="item dan active_dan">
续费
</div>
</div>
</div>
<div class="conDan">
<div class="row">
<div class="col-sm-5 col-xs-5">
IP产品账号
</div>
<div class="col-sm-7 col-xs-7 shuru">
<input type="text" v-model="OneBuyModel.Account" disabled />
</div>
</div>
@*<div class="row">
<div class="col-sm-5 col-xs-5">
IP账号密码
</div>
<div class="col-sm-7 col-xs-7 shuru">
<input type="text" v-model="OneBuyModel.Pwd" />
</div>
</div>*@
<div class="row">
<div class="col-sm-5 col-xs-5">
连接数:
</div>
<div class="col-sm-7 col-xs-7">
<div class="jiajian">
<div class="item">
</div>
<div class="item">
<span>{{OneBuyModel.ConnectCount}}</span>
</div>
<div class="item">
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-5 col-xs-5">
选择优惠券:
</div>
<div class="col-sm-7 col-xs-7 select">
<select class="chooseYhq" v-model="OneBuyModel.CouponId">
<option value="0">请选择优惠券</option>
<option v-for="item in Coupons" :value="item.Id">{{item.Name}}</option>
</select>
</div>
</div>
<div class="row">
<div class="col-sm-5 col-xs-5">
余额:
</div>
<div class="col-sm-7 col-xs-7">
<div class="">
当前账户余额<span class="blueText">@(userEntity.RestAmount)</span>元
<a href="/User/Index">前往充值</a>
</div>
</div>
</div>
<div class="row" v-if="showPayType">
<div class="col-sm-5 col-xs-5">
支付方式:
</div>
<div class="col-sm-7 col-xs-7 pay">
<div class="radio" v-on:click="OneBuyModel.OPayType=100">
<input id="zhifubaopay_s1" name="OPayType" type="radio" v-model="OneBuyModel.OPayType" value="100">
<label for="zhifubaopay_s1" class="radio-label"><img src="~/m/img/zfb.png"> 支付宝支付</label>
</div>
<div class="radio" v-on:click="OneBuyModel.OPayType=70">
<input id="weixinpay_s1" name="OPayType" type="radio" v-model="OneBuyModel.OPayType" value="70">
<label for="weixinpay_s1" class="radio-label"><img src="~/m/img/wx.png"> 微信支付</label>
</div>
<div class="radio" >
<input id="UseAccountAmount" name="OPayType" type="radio" v-model="OneBuyModel.UseAccountAmount" value="1">
<label for="UseAccountAmount" class="radio-label" style="line-height:150%"> 余额支付</label>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-5 col-xs-5">
总金额:
</div>
<div class="col-sm-7 col-xs-7">
<span>{{TotalAmount}}</span>元
</div>
</div>
<div class="row">
<div class="col-sm-5 col-xs-5">
应付款:
</div>
<div class="col-sm-7 col-xs-7">
<span class="yingfu" style="font-size: 35px;font-weight: bold;">{{PayAmount}}</span>元
</div>
</div>
<div class="row">
<div class="col-sm-5 col-xs-5">
</div>
<div class="col-sm-7 col-xs-7">
<p>{{auto_discount_text}}</p>
</div>
</div>
<p class="grayText songquan">淘宝每次下单获得优惠券</p>
<p class="grayText songquan" style="color:red">{{Tip}}</p>
<div class="ok">
<button type="button" class="pay-botton btnPay" v-on:click="onePay">确认支付</button>
</div>
</div>
</div>
<div id="aliPayBox" style="display:none"></div>
@section Scripts{
<script>
var productId =@(Model.Product.Id);
var app = new Vue({
el: '#app',
data: {
auto_discount_text:'',
showPayType: true,
Tip:'',
RestAmount: @(userEntity.RestAmount),
Coupons: [],
SelectCoupon: {},
OrderInfo: {},
OneBuyModel: {
Price:@(Model.Package.Price),
PackageId:@(Model.Package.Id),
OrderType: @ViewBag.orderType,
Account: '@ViewBag.accounts',
CouponAmount: 0,
Pwd: '',
ConnectCount: @(ViewBag.ConnectCount),
CouponId: 0,
UseAccountAmount: 0,
OPayType: 100,
PayChannel:40,
}
},
computed: {
TotalAmount: function () {
var count = this.OneBuyModel.Account.split(',').length;
var total = this.OneBuyModel.Price * this.OneBuyModel.ConnectCount * count;
return total.toFixed(2);
},
PayAmount: function () {
var count = this.OneBuyModel.Account.split(',').length;
var restAmout = this.OneBuyModel.UseAccountAmount == 1 ? this.RestAmount : 0;
var total = this.OneBuyModel.Price * this.OneBuyModel.ConnectCount * count - this.OneBuyModel.CouponAmount ;
total= total < 0 ? 0 : total;
total = parseFloat(total.toFixed(2));
//最低价
var min_cost = @(Model.Package.MinPrice) * this.OneBuyModel.ConnectCount * count - this.OneBuyModel.CouponAmount;
if(total<min_cost){
total = min_cost;
}
return total.toFixed(2);
}
},
watch: {
'OneBuyModel.CouponId': { //加引号监听对象里的属性
handler: function (newValue, oldValue) {
var totalAmount = this.OneBuyModel.Price * this.OneBuyModel.ConnectCount;
for (var i = 0; i < this.Coupons.length; i++) {
var item = this.Coupons[i];
if (totalAmount < item.AllowMinAmount) {
continue;
}
if (item.Id == newValue) {
if (item.CouponType == 1) {//满减
this.OneBuyModel.CouponAmount = item.CouponValue;
} else {
//亲 请勿非法操作呦^.^ 请按照正常的流程操作 我们后台是有记录滴
if($(".kaci").text() == '天卡'){
this.OneBuyModel.CouponAmount = totalAmount * item.CouponValue * 0.1;
} else {
alert('非天卡无效');
this.OneBuyModel.CouponId = '0';
}
}
return;
} else {
this.OneBuyModel.CouponAmount = 0;
}
}
},
immediate: true
},
'OneBuyModel.OPayType': { //加引号监听对象里的属性
handler: function (newValue, oldValue) {
var wx = 10;
if (isWeiXin()) wx = 20;
this.OneBuyModel.PayChannel = newValue == 70 ? wx : 40;
},
immediate: true
}
},
mounted: function () {
if (isWeiXin()) {
this.OneBuyModel.PayChannel = 20;
this.OneBuyModel.OPayType = 70;
this.showPayType = false;
}
this.getCoupons();
},
methods: {
getCoupons: function () {
var that = this;
var url = '/api/sells/v1/coupon/GetAvailableCoupon';
$.ajax({
type: 'GET',
url: url,
success: function (res) {
console.log(res);
if (res.Code == 10000) {
that.Coupons = res.Data.map(m => m.Coupon);
}
}
})
},
onePay: function () {
$(".pay-botton").hide();
if (this.OneBuyModel.UseAccountAmount) {
if (this.RestAmount < this.PayAmount){
alert('余额不足,请充值。您也可以使用微信、支付宝支付。');return;
} else {
this.RestAmount = this.RestAmount - this.PayAmount;
}
}
var that = this;
if (this.OneBuyModel.UseAccountAmount === true) this.OneBuyModel.UseAccountAmount = 1;
if (this.OneBuyModel.UseAccountAmount === false) this.OneBuyModel.UseAccountAmount = 0;
var that = this;
showPayWait();
$.ajax({
type: 'POST',
url: '/product/CreateOrder',
dataType: "json",
contentType: "application/json",
data: JSON.stringify(this.OneBuyModel),
success: function (res) {
console.log(res);
if (res.Code == 10000) {
hidePayWait();
that.payCallback(res.Data)
//that.isPay(res.Data.OrderInfo.OrderNo);
} else {
//that.Tip = res.Message;
tipPayWait(res.Message);
}
}
});
},
payCallback: function (data) {
this.OrderInfo = data.OrderInfo;
if (!data.PayData) { alert("下单成功"); return; }
var payChannel = this.OrderInfo.PayChannel;
if (payChannel == 10) {
this.h5WxPay(data.PayData)
} else if (payChannel == 20) {
this.jsWxPay(data.PayData);
} else if (payChannel == 40) {
this.aliPay(data.PayData);
}
},
h5WxPay(payData) {
window.location.href = payData;
},
jsWxPay(payData) {
WeixinJSBridge.invoke(
'getBrandWCPayRequest',
JSON.parse(payData),
function (res) {
if (res.err_msg == "get_brand_wcpay_request:ok") {
window.location.href = "/User/MyAccounts";
} else if (res.err_msg == "get_brand_wcpay_request:cancel") {
} else {
alert("支付失败" + res.err_msg);
}
});
},
aliPay(payData) {
$("#aliPayBox").html(payData);
},
isPay: function (orderNo) {
var handler = setInterval(function () {
var url = '/product/IsPay?orderNo=' + orderNo;
$.ajax({
type: 'GET',
url: url,
success: function (res) {
if (res.Code == 10000 && res.Data == 1) {
clearInterval(handler);
// $(".payMask").hide();
window.location.href = "/user/myaccounts";
}
}
})
}, 3000)
}
}
})
</script>
@using Hncore.Pass.Vpn.Response.Product
@using Hncore.Infrastructure.Extension
@using Hncore.Pass.BaseInfo.Response
@using Hncore.Infrastructure.Serializer;
@using Hncore.Pass.BaseInfo.Service
@model PackageInfoResponse
@inject UserService m_UserService
@{
ViewData["Title"] = "购买产品";
UserLoginModel user = null;
Hncore.Pass.BaseInfo.Models.User userEntity = new Hncore.Pass.BaseInfo.Models.User();
if (this.Context.Request.Cookies.TryGetValue("userInfo", out string userCookie))
{
user = userCookie.FromJsonTo<UserLoginModel>();
userEntity = await m_UserService.GetById(user.Id);
}
}
<script src="~/js/vue.js"></script>
<script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
<script type="text/javascript">
$(function () {
let realverify = {
cookie:document.cookie,
}
$.ajax({
type: 'POST',
async:false,
url: 'http://php-api.juip.com/api/Realname/index',
dataType: "json",
contentType: "application/json",
data: JSON.stringify(realverify),
beforeSend: function(xhr) {
xhr.withCredentials = true;
},
crossDomain: true,
success: function (res) {
if (res.Code == -10000) {
alert('接主管部门要求,会员需要实名认证方可使用该产品,点击确定前往 用户主页、个人信息 实名认证。');
window.location.href="/User/IndexInfo";
}
}
});
</script>
<vc:redirecct-login></vc:redirecct-login>
<vc:pay-wait></vc:pay-wait>
<div id="app">
<div class="cpTop">
<p class="choose">当前已选产品:</p>
<div class="kArea">
<div class="cpKuang">
<div class="item">
<p><img src="~/@Model.Product.Image"></p>
<p>@Model.Product.Name</p>
</div>
<div class="item">
<p class="kaci">@Model.Package.Name</p>
<p class="grayText">@(Model.Package.DayPrice)元/天</p>
<p class="grayText">@Model.Package.Profile</p>
</div>
<div class="item">
¥ <span class="price">@Model.Package.Price</span>
</div>
</div>
</div>
<div class="chongxin">
<div class="item redText">
*请确认好所需产品,买错产品换货将产生费用
</div>
<div class="item">
<button type="button" class="btnBlue" onclick="history.go(-1)">返回重新选择</button>
</div>
</div>
</div>
<!-- con -->
<div class="container zhuce">
<div class="reg_tab">
<div class="item dan active_dan">
续费
</div>
</div>
</div>
<div class="conDan">
<div class="row">
<div class="col-sm-5 col-xs-5">
IP产品账号
</div>
<div class="col-sm-7 col-xs-7 shuru">
<input type="text" v-model="OneBuyModel.Account" disabled />
</div>
</div>
@*<div class="row">
<div class="col-sm-5 col-xs-5">
IP账号密码
</div>
<div class="col-sm-7 col-xs-7 shuru">
<input type="text" v-model="OneBuyModel.Pwd" />
</div>
</div>*@
<div class="row">
<div class="col-sm-5 col-xs-5">
连接数:
</div>
<div class="col-sm-7 col-xs-7">
<div class="jiajian">
<div class="item">
</div>
<div class="item">
<span>{{OneBuyModel.ConnectCount}}</span>
</div>
<div class="item">
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-5 col-xs-5">
选择优惠券:
</div>
<div class="col-sm-7 col-xs-7 select">
<select class="chooseYhq" v-model="OneBuyModel.CouponId">
<option value="0">请选择优惠券</option>
<option v-for="item in Coupons" :value="item.Id">{{item.Name}}</option>
</select>
</div>
</div>
<div class="row">
<div class="col-sm-5 col-xs-5">
余额:
</div>
<div class="col-sm-7 col-xs-7">
<div class="">
当前账户余额<span class="blueText">@(userEntity.RestAmount)</span>元
<a href="/User/Index">前往充值</a>
</div>
</div>
</div>
<div class="row" v-if="showPayType">
<div class="col-sm-5 col-xs-5">
支付方式:
</div>
<div class="col-sm-7 col-xs-7 pay">
<div class="radio" v-on:click="OneBuyModel.OPayType=100">
<input id="zhifubaopay_s1" name="OPayType" type="radio" v-model="OneBuyModel.OPayType" value="100">
<label for="zhifubaopay_s1" class="radio-label"><img src="~/m/img/zfb.png"> 支付宝支付</label>
</div>
<div class="radio" v-on:click="OneBuyModel.OPayType=70">
<input id="weixinpay_s1" name="OPayType" type="radio" v-model="OneBuyModel.OPayType" value="70">
<label for="weixinpay_s1" class="radio-label"><img src="~/m/img/wx.png"> 微信支付</label>
</div>
<div class="radio" >
<input id="UseAccountAmount" name="OPayType" type="radio" v-model="OneBuyModel.UseAccountAmount" value="1">
<label for="UseAccountAmount" class="radio-label" style="line-height:150%"> 余额支付</label>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-5 col-xs-5">
总金额:
</div>
<div class="col-sm-7 col-xs-7">
<span>{{TotalAmount}}</span>元
</div>
</div>
<div class="row">
<div class="col-sm-5 col-xs-5">
应付款:
</div>
<div class="col-sm-7 col-xs-7">
<span class="yingfu" style="font-size: 35px;font-weight: bold;">{{PayAmount}}</span>元
</div>
</div>
<div class="row">
<div class="col-sm-5 col-xs-5">
</div>
<div class="col-sm-7 col-xs-7">
<p>{{auto_discount_text}}</p>
</div>
</div>
<p class="grayText songquan">淘宝每次下单获得优惠券</p>
<p class="grayText songquan" style="color:red">{{Tip}}</p>
<div class="ok">
<button type="button" class="pay-botton btnPay" v-on:click="onePay">确认支付</button>
</div>
</div>
</div>
<div id="aliPayBox" style="display:none"></div>
@section Scripts{
<script>
var productId =@(Model.Product.Id);
var app = new Vue({
el: '#app',
data: {
auto_discount_text:'',
showPayType: true,
Tip:'',
RestAmount: @(userEntity.RestAmount),
Coupons: [],
SelectCoupon: {},
OrderInfo: {},
OneBuyModel: {
Price:@(Model.Package.Price),
PackageId:@(Model.Package.Id),
OrderType: @ViewBag.orderType,
Account: '@ViewBag.accounts',
CouponAmount: 0,
Pwd: '',
ConnectCount: @(ViewBag.ConnectCount),
CouponId: 0,
UseAccountAmount: 0,
OPayType: 100,
PayChannel:40,
}
},
computed: {
TotalAmount: function () {
var count = this.OneBuyModel.Account.split(',').length;
var total = this.OneBuyModel.Price * this.OneBuyModel.ConnectCount * count;
return total.toFixed(2);
},
PayAmount: function () {
var count = this.OneBuyModel.Account.split(',').length;
var restAmout = this.OneBuyModel.UseAccountAmount == 1 ? this.RestAmount : 0;
var total = this.OneBuyModel.Price * this.OneBuyModel.ConnectCount * count - this.OneBuyModel.CouponAmount ;
total= total < 0 ? 0 : total;
total = parseFloat(total.toFixed(2));
//最低价
var min_cost = @(Model.Package.MinPrice) * this.OneBuyModel.ConnectCount * count - this.OneBuyModel.CouponAmount;
if(total<min_cost){
total = min_cost;
}
return total.toFixed(2);
}
},
watch: {
'OneBuyModel.CouponId': { //加引号监听对象里的属性
handler: function (newValue, oldValue) {
var totalAmount = this.OneBuyModel.Price * this.OneBuyModel.ConnectCount;
for (var i = 0; i < this.Coupons.length; i++) {
var item = this.Coupons[i];
if (totalAmount < item.AllowMinAmount) {
continue;
}
if (item.Id == newValue) {
if (item.CouponType == 1) {//满减
this.OneBuyModel.CouponAmount = item.CouponValue;
} else {
//亲 请勿非法操作呦^.^ 请按照正常的流程操作 我们后台是有记录滴
if($(".kaci").text() == '天卡'){
this.OneBuyModel.CouponAmount = totalAmount * item.CouponValue * 0.1;
} else {
alert('非天卡无效');
this.OneBuyModel.CouponId = '0';
}
}
return;
} else {
this.OneBuyModel.CouponAmount = 0;
}
}
},
immediate: true
},
'OneBuyModel.OPayType': { //加引号监听对象里的属性
handler: function (newValue, oldValue) {
var wx = 10;
if (isWeiXin()) wx = 20;
this.OneBuyModel.PayChannel = newValue == 70 ? wx : 40;
},
immediate: true
}
},
mounted: function () {
if (isWeiXin()) {
this.OneBuyModel.PayChannel = 20;
this.OneBuyModel.OPayType = 70;
this.showPayType = false;
}
this.getCoupons();
},
methods: {
getCoupons: function () {
var that = this;
var url = '/api/sells/v1/coupon/GetAvailableCoupon';
$.ajax({
type: 'GET',
url: url,
success: function (res) {
console.log(res);
if (res.Code == 10000) {
that.Coupons = res.Data.map(m => m.Coupon);
}
}
})
},
onePay: function () {
$(".pay-botton").hide();
if (this.OneBuyModel.UseAccountAmount) {
if (this.RestAmount < this.PayAmount){
alert('余额不足,请充值。您也可以使用微信、支付宝支付。');return;
} else {
this.RestAmount = this.RestAmount - this.PayAmount;
}
}
var that = this;
if (this.OneBuyModel.UseAccountAmount === true) this.OneBuyModel.UseAccountAmount = 1;
if (this.OneBuyModel.UseAccountAmount === false) this.OneBuyModel.UseAccountAmount = 0;
var that = this;
showPayWait();
$.ajax({
type: 'POST',
url: '/product/CreateOrder',
dataType: "json",
contentType: "application/json",
data: JSON.stringify(this.OneBuyModel),
success: function (res) {
console.log(res);
if (res.Code == 10000) {
hidePayWait();
that.payCallback(res.Data)
//that.isPay(res.Data.OrderInfo.OrderNo);
} else {
//that.Tip = res.Message;
tipPayWait(res.Message);
}
}
});
},
payCallback: function (data) {
this.OrderInfo = data.OrderInfo;
if (!data.PayData) { alert("下单成功"); return; }
var payChannel = this.OrderInfo.PayChannel;
if (payChannel == 10) {
this.h5WxPay(data.PayData)
} else if (payChannel == 20) {
this.jsWxPay(data.PayData);
} else if (payChannel == 40) {
this.aliPay(data.PayData);
}
},
h5WxPay(payData) {
window.location.href = payData;
},
jsWxPay(payData) {
WeixinJSBridge.invoke(
'getBrandWCPayRequest',
JSON.parse(payData),
function (res) {
if (res.err_msg == "get_brand_wcpay_request:ok") {
window.location.href = "/User/MyAccounts";
} else if (res.err_msg == "get_brand_wcpay_request:cancel") {
} else {
alert("支付失败" + res.err_msg);
}
});
},
aliPay(payData) {
$("#aliPayBox").html(payData);
},
isPay: function (orderNo) {
var handler = setInterval(function () {
var url = '/product/IsPay?orderNo=' + orderNo;
$.ajax({
type: 'GET',
url: url,
success: function (res) {
if (res.Code == 10000 && res.Data == 1) {
clearInterval(handler);
// $(".payMask").hide();
window.location.href = "/user/myaccounts";
}
}
})
}, 3000)
}
}
})
</script>
}

View File

@@ -1,35 +1,35 @@
@using Hncore.Infrastructure.Extension
@model ViewComponents.PagerModel
@{
Model.PageIndex = Model.PageIndex == 0 ? 1 : Model.PageIndex;
var q = this.Context.Request.Remove("PageIndex");
if (string.IsNullOrEmpty(q))
{
q = "?";
}
else
{
q += "&";
}
}
@if (Model.TotalPage > 1)
{
<ul class="pagination">
@if (Model.PageIndex > 1)
{
string href = $"{q}PageIndex={Model.PageIndex - 1}";
<li class="page-item"><a class="page-link" href="@href">上一页</a></li>
}
@for (var i = 1; i <= Model.TotalPage; i++)
{
<li class="page-item"><a class="page-link @(Model.PageIndex==i?"fenyeActive2":"")" href="@(q)PageIndex=@i">@i</a></li>
}
@if (Model.PageIndex < Model.TotalPage)
{
string href = $"{q}PageIndex={Model.PageIndex + 1}";
<li class="page-item"><a class="page-link" href="@href">下一页</a></li>
}
</ul>
}
@using Hncore.Infrastructure.Extension
@model ViewComponents.PagerModel
@{
Model.PageIndex = Model.PageIndex == 0 ? 1 : Model.PageIndex;
var q = this.Context.Request.Remove("PageIndex");
if (string.IsNullOrEmpty(q))
{
q = "?";
}
else
{
q += "&";
}
}
@if (Model.TotalPage > 1)
{
<ul class="pagination">
@if (Model.PageIndex > 1)
{
string href = $"{q}PageIndex={Model.PageIndex - 1}";
<li class="page-item"><a class="page-link" href="@href">上一页</a></li>
}
@for (var i = 1; i <= Model.TotalPage; i++)
{
<li class="page-item"><a class="page-link @(Model.PageIndex==i?"fenyeActive2":"")" href="@(q)PageIndex=@i">@i</a></li>
}
@if (Model.PageIndex < Model.TotalPage)
{
string href = $"{q}PageIndex={Model.PageIndex + 1}";
<li class="page-item"><a class="page-link" href="@href">下一页</a></li>
}
</ul>
}

View File

@@ -1,79 +1,79 @@
<style>
/* 支付等待弹窗开始 */
.paywait {
position: fixed;
z-index: 999;
width: 360px;
height: 500px;
top: 50%;
margin-top: -200px;
left: 50%;
margin-left: -180px;
display: none;
}
.plTop img {
width: 100%;
}
.plFour {
background: #fff;
margin: 0;
padding-bottom: 20px;
}
.plFour img {
width: 90%;
margin: 10px 0;
}
.plClose {
position: absolute;
top: 30px;
right: 10px;
z-index: 999;
}
.errorTip{
margin-top:30px;
color:red;
}
/* 支付等待弹窗结束 */
</style>
<!-- 支付等待 -->
<div class="paywait">
<img src="~/img/close.png" class="plClose">
<div class="plTop">
<img src="~/img/paywait.png">
</div>
<div class="row plFour">
<div class="col-lg-12 text-center loadingBox">
<img src="~/img/loading.gif" style="width:100px;height:20px">
<p>账号检测中请耐心等待</p>
</div>
<div class="col-lg-12 text-center errorTip">
</div>
</div>
</div>
<script>
function showPayWait() {
$(".popmask").show()
$(".paywait").show();
$(".loadingBox").show();
$(".errorTip").text("");
}
function hidePayWait() {
$(".popmask").hide()
$(".paywait").hide();
}
function tipPayWait(info) {
showPayWait();
$(".loadingBox").hide();
$(".errorTip").text(info)
}
$(".plClose").on("click", function () { hidePayWait() })
</script>
<!-- 支付等待弹窗结束 -->
<style>
/* 支付等待弹窗开始 */
.paywait {
position: fixed;
z-index: 999;
width: 360px;
height: 500px;
top: 50%;
margin-top: -200px;
left: 50%;
margin-left: -180px;
display: none;
}
.plTop img {
width: 100%;
}
.plFour {
background: #fff;
margin: 0;
padding-bottom: 20px;
}
.plFour img {
width: 90%;
margin: 10px 0;
}
.plClose {
position: absolute;
top: 30px;
right: 10px;
z-index: 999;
}
.errorTip{
margin-top:30px;
color:red;
}
/* 支付等待弹窗结束 */
</style>
<!-- 支付等待 -->
<div class="paywait">
<img src="~/img/close.png" class="plClose">
<div class="plTop">
<img src="~/img/paywait.png">
</div>
<div class="row plFour">
<div class="col-lg-12 text-center loadingBox">
<img src="~/img/loading.gif" style="width:100px;height:20px">
<p>账号检测中请耐心等待</p>
</div>
<div class="col-lg-12 text-center errorTip">
</div>
</div>
</div>
<script>
function showPayWait() {
$(".popmask").show()
$(".paywait").show();
$(".loadingBox").show();
$(".errorTip").text("");
}
function hidePayWait() {
$(".popmask").hide()
$(".paywait").hide();
}
function tipPayWait(info) {
showPayWait();
$(".loadingBox").hide();
$(".errorTip").text(info)
}
$(".plClose").on("click", function () { hidePayWait() })
</script>
<!-- 支付等待弹窗结束 -->

View File

@@ -1,44 +1,44 @@
@using Hncore.Pass.BaseInfo.Response
@using Hncore.Infrastructure.Serializer;
@using Hncore.Pass.BaseInfo.Service
@using Hncore.Infrastructure.Common
@using Microsoft.Extensions.Configuration
@using Hncore.Infrastructure.Extension
@inject IConfiguration m_Configuration
@inject UserService m_UserService
@{
var act = this.Context.Request.Get("act");
var WxAppId = m_Configuration["WxApps:AppID"];
var BaseUrl = m_Configuration["Service_BaseUrl"];
var requestUrl =this.Context.Request.GetUrl().UrlEncode();
UserLoginModel user = null;
Hncore.Pass.BaseInfo.Models.User userEntity = new Hncore.Pass.BaseInfo.Models.User();
if (this.Context.Request.Cookies.TryGetValue("userInfo", out string userCookie))
{
user = userCookie.FromJsonTo<UserLoginModel>();
userEntity = await m_UserService.GetById(user.Id);
}
}
@if (user == null)
{
<script>
function isWeiXin() {
var ua = window.navigator.userAgent.toLowerCase();
if (ua.indexOf('micromessenger')!=-1) {
return true;
} else {
return false;
}
}
if (!isWeiXin() || "login" =="@act") {
window.location.href = "/User/WebLogin?redirect=@requestUrl";
} else {
window.location.href = "@(BaseUrl)User/MP_GetUserInfo?appid=@WxAppId&callbakUrl=@requestUrl";
}
</script>
}
@using Hncore.Pass.BaseInfo.Response
@using Hncore.Infrastructure.Serializer;
@using Hncore.Pass.BaseInfo.Service
@using Hncore.Infrastructure.Common
@using Microsoft.Extensions.Configuration
@using Hncore.Infrastructure.Extension
@inject IConfiguration m_Configuration
@inject UserService m_UserService
@{
var act = this.Context.Request.Get("act");
var WxAppId = m_Configuration["WxApps:AppID"];
var BaseUrl = m_Configuration["Service_BaseUrl"];
var requestUrl =this.Context.Request.GetUrl().UrlEncode();
UserLoginModel user = null;
Hncore.Pass.BaseInfo.Models.User userEntity = new Hncore.Pass.BaseInfo.Models.User();
if (this.Context.Request.Cookies.TryGetValue("userInfo", out string userCookie))
{
user = userCookie.FromJsonTo<UserLoginModel>();
userEntity = await m_UserService.GetById(user.Id);
}
}
@if (user == null)
{
<script>
function isWeiXin() {
var ua = window.navigator.userAgent.toLowerCase();
if (ua.indexOf('micromessenger')!=-1) {
return true;
} else {
return false;
}
}
if (!isWeiXin() || "login" =="@act") {
window.location.href = "/User/WebLogin?redirect=@requestUrl";
} else {
window.location.href = "@(BaseUrl)User/MP_GetUserInfo?appid=@WxAppId&callbakUrl=@requestUrl";
}
</script>
}

View File

@@ -1,25 +1,25 @@
@model ErrorViewModel
@{
ViewData["Title"] = "Error";
}
<h1 class="text-danger">Error.</h1>
<h2 class="text-danger">An error occurred while processing your request.</h2>
@if (Model.ShowRequestId)
{
<p>
<strong>Request ID:</strong> <code>@Model.RequestId</code>
</p>
}
<h3>Development Mode</h3>
<p>
Swapping to <strong>Development</strong> environment will display more detailed information about the error that occurred.
</p>
<p>
<strong>The Development environment shouldn't be enabled for deployed applications.</strong>
It can result in displaying sensitive information from exceptions to end users.
For local debugging, enable the <strong>Development</strong> environment by setting the <strong>ASPNETCORE_ENVIRONMENT</strong> environment variable to <strong>Development</strong>
and restarting the app.
</p>
@model ErrorViewModel
@{
ViewData["Title"] = "Error";
}
<h1 class="text-danger">Error.</h1>
<h2 class="text-danger">An error occurred while processing your request.</h2>
@if (Model.ShowRequestId)
{
<p>
<strong>Request ID:</strong> <code>@Model.RequestId</code>
</p>
}
<h3>Development Mode</h3>
<p>
Swapping to <strong>Development</strong> environment will display more detailed information about the error that occurred.
</p>
<p>
<strong>The Development environment shouldn't be enabled for deployed applications.</strong>
It can result in displaying sensitive information from exceptions to end users.
For local debugging, enable the <strong>Development</strong> environment by setting the <strong>ASPNETCORE_ENVIRONMENT</strong> environment variable to <strong>Development</strong>
and restarting the app.
</p>

View File

@@ -1,25 +1,25 @@
@using Microsoft.AspNetCore.Http.Features
@{
var consentFeature = Context.Features.Get<ITrackingConsentFeature>();
var showBanner = !consentFeature?.CanTrack ?? false;
var cookieString = consentFeature?.CreateConsentCookie();
}
@if (showBanner)
{
<div id="cookieConsent" class="alert alert-info alert-dismissible fade show" role="alert">
Use this space to summarize your privacy and cookie use policy. <a asp-area="" asp-controller="Home" asp-action="Privacy">Learn More</a>.
<button type="button" class="accept-policy close" data-dismiss="alert" aria-label="Close" data-cookie-string="@cookieString">
<span aria-hidden="true">Accept</span>
</button>
</div>
<script>
(function () {
var button = document.querySelector("#cookieConsent button[data-cookie-string]");
button.addEventListener("click", function (event) {
document.cookie = button.dataset.cookieString;
}, false);
})();
</script>
}
@using Microsoft.AspNetCore.Http.Features
@{
var consentFeature = Context.Features.Get<ITrackingConsentFeature>();
var showBanner = !consentFeature?.CanTrack ?? false;
var cookieString = consentFeature?.CreateConsentCookie();
}
@if (showBanner)
{
<div id="cookieConsent" class="alert alert-info alert-dismissible fade show" role="alert">
Use this space to summarize your privacy and cookie use policy. <a asp-area="" asp-controller="Home" asp-action="Privacy">Learn More</a>.
<button type="button" class="accept-policy close" data-dismiss="alert" aria-label="Close" data-cookie-string="@cookieString">
<span aria-hidden="true">Accept</span>
</button>
</div>
<script>
(function () {
var button = document.querySelector("#cookieConsent button[data-cookie-string]");
button.addEventListener("click", function (event) {
document.cookie = button.dataset.cookieString;
}, false);
})();
</script>
}

View File

@@ -1,221 +1,221 @@
@using Hncore.Pass.BaseInfo.Response
@using Hncore.Infrastructure.Serializer;
@using Hncore.Pass.Vpn.Service
@inject ProductService m_ProductService
@{
UserLoginModel user = null;
if (this.Context.Request.Cookies.TryGetValue("userInfo", out string userCookie))
{
user = userCookie.FromJsonTo<UserLoginModel>();
}
var url_s = this.Context.Request.Path;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta content="yes" name="apple-mobile-web-app-capable" />
<meta content="yes" name="apple-touch-fullscreen" />
<meta content="telephone=no,email=no" name="format-detection" />
<meta content="maximum-dpr=2" name="flexible" />
@if(url_s == "/product/index"){
<meta name="Keywords" Content="动态ip代理软件,动态代理ip">
<meta name="Description" Content="聚IP助力企业开工全部动态ip代理软件、动态代理ip等产品量大从优一对一专人客服指导。">
<title>动态ip代理软件_动态代理ip-聚IP</title>
}
else if(url_s == "/LineList/index"){
<meta name="Keywords" Content="l2tp,sstp,pptp,IP线路表">
<meta name="Description" Content="聚IP全部线路表API接口五分钟更新一次确保l2tp、sstp、pptp等IP线路流畅。">
<title>l2tp_sstp_pptp_IP线路表-聚IP</title>
}
else if(url_s == "/product/soft"){
<meta name="Keywords" Content="电脑换ip软件,自动换ip软件">
<meta name="Description" Content="聚IP支持电脑换ip软件、自动换ip软件下载。">
<title>电脑换ip软件_自动换ip软件下载-聚IP</title>
}
else if(url_s == "/article/index"){
<meta name="Keywords" Content="换ip的软件,动态ip代理,教程&咨询">
<meta name="Description" Content="聚IP提供换ip的软件、动态ip代理等详细教程在线指导。">
<title>换ip的软件_动态ip代理_教程&咨询-聚IP</title>
}
else {
<meta name="Keywords" Content="动态ip软件,动态代理ip,sstp,换ip的软件,电脑换ip软件,pptp,L2TP,动态ip代理,动态ip,自动换ip软件">
<meta name="Description" Content="聚IP提供动态代理ip、电脑换ip软件、自动换ip软件、sstp、pptp及L2TP代理服务全国多个城市几十种动态ip任您选择高品质ip资源期待与您合作。">
<title>动态代理ip_电脑换ip软件_自动换ip软件_sstp_pptp_L2TP-聚IP</title>
}
<link rel="stylesheet" type="text/css" href="~/m/css/base.css" />
<link rel="stylesheet" type="text/css" href="~/m/css/swiper.min.css" />
<link rel="stylesheet" type="text/css" href="~/m/css/bootstrap.css" />
<link rel="Shortcut Icon" href="/img/favicon.ico" type="image/x-icon" />
<script src="~/m/js/jquery.min.js" type="text/javascript" charset="utf-8"></script>
<script src="http://g.tbcdn.cn/mtb/lib-flexible/0.3.4/??flexible_css.js,flexible.js"></script>
<script src="~/js/vue.js"></script>
<script src="~/m/js/swiper.min.js" type="text/javascript" charset="utf-8"></script>
<script src="~/m/js/bootstrap.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
$.ajaxSetup({
complete: function (XMLHttpRequest, textStatus) {
console.log(textStatus);
//var sessionstatus = XMLHttpRequest.getResponseHeader("sessionstatus");
if (textStatus == "parsererror") {
//如果超时就处理 ,指定要跳转的页面(比如登陆页)
window.location.href="/user/weblogin"
}
}
});
$(function () {
$(".btnNav").click(function () {
$(".mask").fadeIn();
console.log(1)
});
$(".btnClose").click(function () {
$(".mask").fadeOut();
console.log(2)
});
$(".on_q").click(function () {
$(".side_q").toggle();
});
//$(".item_on_q").mouseover(function () {
// $(".side_q").stop().show();
//});
//$(".item_on_q").mouseleave(function () {
// $(".side_q").stop().hide();
//});
//$(".on_wx").click(function () {
// $(".side_kefu").toggle();
//});
$(".item_on_wx").mouseover(function () {
$(".side_kefu").stop().fadeIn();
});
$(".item_on_wx").mouseleave(function () {
$(".side_kefu").stop().fadeOut();
});
$(".on_gzh").mouseover(function () {
$(".side_gzh").stop().fadeIn();
});
$(".on_gzh").mouseleave(function () {
$(".side_gzh").stop().fadeOut();
});
$(".on_tel").mouseover(function () {
$(".side_tel").stop().fadeIn();
});
$(".on_tel").mouseleave(function () {
$(".side_tel").stop().fadeOut();
});
})
function isWeiXin() {
var ua = window.navigator.userAgent.toLowerCase();
if (ua.indexOf('micromessenger') != -1) {
return true;
} else {
return false;
}
}
</script>
</head>
<body>
<div class="popmask"></div>
<div class="sideBar">
<div class="item item_on_q">
<a href="https://admin.qidian.qq.com/template/blue/mp/menu/qr-code-jump.html?linkType=0&env=ol&kfuin=2852138148&fid=299&key=f377ec024ca45115a03a7632c7bda230&cate=1&source=&isLBS=&isCustomEntry=&type=16&ftype=1&_type=wpa&qidian=true" target="_blank">
<img src="~/img/qq.png" class="on_q"> <div class="kefu_tit">QQ</div>
</a>
</div>
<div class="item item_on_wx">
<a href="https://work.weixin.qq.com/kfid/kfc458bc58e79e5093f" style="color: #0862fe;">
<img src="~/img/weixin.png" class="on_wx"><div class="kefu_tit">微信</div>
</a>
</div>
<div class="item">
<img src="~/img/gzh.png" class="on_gzh"><div class="kefu_tit">公众号</div>
<div class="side_gzh">
<p><img src="~/img/ewm.png"></p>
<p style="color:#f90">实时响应 在线时间 8:30-23:00</p>
<p style="color:#f90">关注公众号可获取免费的到期提醒服务</p>
</div>
</div>
<div class="item">
<img src="~/img/tel.png" class="on_tel"><div class="kefu_tit">电话</div>
<div class="side_tel">
<p><b>400 800 9925</b></p>
<p>实时接通</p>
<p>电话值班时间 8:30-23:00</p>
</div>
</div>
<div class="item">
<a href="#top"><img src="~/img/top.png"></a>
</div>
</div>
<!-- 弹窗导航 -->
<div class="mask">
<ul class="layNav">
<li><a href="/">首页</a></li>
<li><a href="/product/index">产品购买 <span style="color: red;">活动</span></a> </li>
<li><a asp-action="index" asp-controller="LineList" asp-route-Catalog="1">线路表</a> </li>
<li><a asp-action="soft" asp-controller="product">软件下载</a> </li>
<li><a asp-action="index" asp-controller="article">教程&咨询</a></li>
<li><a href="/product/routeros">软路由购买</a></li>
<li><a href="http://vps.juip.com" style="color: red;">动态VPS</a></li>
@* <li><a asp-action="taobao" asp-controller="article">淘宝充值活动</a></li> *@
@if (user != null)
{
<li><a asp-action="index" asp-controller="user">个人中心</a></li>
<li><a asp-action="LoginOut" asp-controller="user">退出</a></li>
}
else
{
<li><a asp-action="WebLogin" asp-controller="user">登录</a></li>
}
<li><img src="~/m/img/close.png" class="btnClose"></li>
</ul>
</div>
<div class="mynav">
<div class="item">
<img src="~/m/img/back.png" onclick="history.go(-1)">
</div>
<div class="item mlogo">
<img src="~/m/img/logo.png">
</div>
<div class="item">
<img src="~/m/img/nav.png" class="btnNav">
</div>
</div>
@RenderBody()
@RenderSection("Scripts", required: false)
<!-- WPA start -->
@* <script id="qd28521381485d6faa97edf5ad07d7e159f6cb902af0" src="https://wp.qiye.qq.com/qidian/2852138148/5d6faa97edf5ad07d7e159f6cb902af0" charset="utf-8" async defer></script> *@
<!-- WPA end -->
<div data-toggle="popovers" data-html="true" data-content="<div style='font-size:2em;'><p><a style='color: #0862fe;' href='https://admin.qidian.qq.com/template/blue/mp/menu/qr-code-jump.html?linkType=0&env=ol&kfuin=2852138148&fid=299&key=f377ec024ca45115a03a7632c7bda230&cate=1&source=&isLBS=&isCustomEntry=&type=16&ftype=1&_type=wpa&qidian=true' target='_blank'>
<img style='width:1.5em;' src='/img/q.png'> QQ在线客服
</a><p><a href='https://work.weixin.qq.com/kfid/kfc458bc58e79e5093f' style='color: #0862fe;'><img src='/img/weixin.png' style='background-color:green;width:1.5em;'> 微信在线客服</a></p></div>" data-placement="top" class="row" id="djkf" style="background-color: white; width:300px;height:85px;position: fixed;z-index: 2000000000;bottom: 200px;right: 0px;cursor:pointer;">
<style>
.top{
padding: 0;
}
</style>
<div class="col-xs-4" style="padding:0;">
<img width="85" src="http://p.qpic.cn/qidian_pic/2852138148/2020071743d6537e611d9ff953f27cbb7430dbe7/0"/>
</div>
<div class="col-xs-8 " style="padding:0;">
<h4><span class="glyphicon glyphicon-user" style="padding:10px 0 0 5px;color:#12b7f5;"></span>在线咨询</h4>
<p style="padding:5px 0 0 10px;">8:30-23:00</p>
</div>
<script>$(function () { $("[data-toggle='popovers']").popover(); });</script>
</div>
</body>
</html>
@using Hncore.Pass.BaseInfo.Response
@using Hncore.Infrastructure.Serializer;
@using Hncore.Pass.Vpn.Service
@inject ProductService m_ProductService
@{
UserLoginModel user = null;
if (this.Context.Request.Cookies.TryGetValue("userInfo", out string userCookie))
{
user = userCookie.FromJsonTo<UserLoginModel>();
}
var url_s = this.Context.Request.Path;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta content="yes" name="apple-mobile-web-app-capable" />
<meta content="yes" name="apple-touch-fullscreen" />
<meta content="telephone=no,email=no" name="format-detection" />
<meta content="maximum-dpr=2" name="flexible" />
@if(url_s == "/product/index"){
<meta name="Keywords" Content="动态ip代理软件,动态代理ip">
<meta name="Description" Content="聚IP助力企业开工全部动态ip代理软件、动态代理ip等产品量大从优一对一专人客服指导。">
<title>动态ip代理软件_动态代理ip-聚IP</title>
}
else if(url_s == "/LineList/index"){
<meta name="Keywords" Content="l2tp,sstp,pptp,IP线路表">
<meta name="Description" Content="聚IP全部线路表API接口五分钟更新一次确保l2tp、sstp、pptp等IP线路流畅。">
<title>l2tp_sstp_pptp_IP线路表-聚IP</title>
}
else if(url_s == "/product/soft"){
<meta name="Keywords" Content="电脑换ip软件,自动换ip软件">
<meta name="Description" Content="聚IP支持电脑换ip软件、自动换ip软件下载。">
<title>电脑换ip软件_自动换ip软件下载-聚IP</title>
}
else if(url_s == "/article/index"){
<meta name="Keywords" Content="换ip的软件,动态ip代理,教程&咨询">
<meta name="Description" Content="聚IP提供换ip的软件、动态ip代理等详细教程在线指导。">
<title>换ip的软件_动态ip代理_教程&咨询-聚IP</title>
}
else {
<meta name="Keywords" Content="动态ip软件,动态代理ip,sstp,换ip的软件,电脑换ip软件,pptp,L2TP,动态ip代理,动态ip,自动换ip软件">
<meta name="Description" Content="聚IP提供动态代理ip、电脑换ip软件、自动换ip软件、sstp、pptp及L2TP代理服务全国多个城市几十种动态ip任您选择高品质ip资源期待与您合作。">
<title>动态代理ip_电脑换ip软件_自动换ip软件_sstp_pptp_L2TP-聚IP</title>
}
<link rel="stylesheet" type="text/css" href="~/m/css/base.css" />
<link rel="stylesheet" type="text/css" href="~/m/css/swiper.min.css" />
<link rel="stylesheet" type="text/css" href="~/m/css/bootstrap.css" />
<link rel="Shortcut Icon" href="/img/favicon.ico" type="image/x-icon" />
<script src="~/m/js/jquery.min.js" type="text/javascript" charset="utf-8"></script>
<script src="http://g.tbcdn.cn/mtb/lib-flexible/0.3.4/??flexible_css.js,flexible.js"></script>
<script src="~/js/vue.js"></script>
<script src="~/m/js/swiper.min.js" type="text/javascript" charset="utf-8"></script>
<script src="~/m/js/bootstrap.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
$.ajaxSetup({
complete: function (XMLHttpRequest, textStatus) {
console.log(textStatus);
//var sessionstatus = XMLHttpRequest.getResponseHeader("sessionstatus");
if (textStatus == "parsererror") {
//如果超时就处理 ,指定要跳转的页面(比如登陆页)
window.location.href="/user/weblogin"
}
}
});
$(function () {
$(".btnNav").click(function () {
$(".mask").fadeIn();
console.log(1)
});
$(".btnClose").click(function () {
$(".mask").fadeOut();
console.log(2)
});
$(".on_q").click(function () {
$(".side_q").toggle();
});
//$(".item_on_q").mouseover(function () {
// $(".side_q").stop().show();
//});
//$(".item_on_q").mouseleave(function () {
// $(".side_q").stop().hide();
//});
//$(".on_wx").click(function () {
// $(".side_kefu").toggle();
//});
$(".item_on_wx").mouseover(function () {
$(".side_kefu").stop().fadeIn();
});
$(".item_on_wx").mouseleave(function () {
$(".side_kefu").stop().fadeOut();
});
$(".on_gzh").mouseover(function () {
$(".side_gzh").stop().fadeIn();
});
$(".on_gzh").mouseleave(function () {
$(".side_gzh").stop().fadeOut();
});
$(".on_tel").mouseover(function () {
$(".side_tel").stop().fadeIn();
});
$(".on_tel").mouseleave(function () {
$(".side_tel").stop().fadeOut();
});
})
function isWeiXin() {
var ua = window.navigator.userAgent.toLowerCase();
if (ua.indexOf('micromessenger') != -1) {
return true;
} else {
return false;
}
}
</script>
</head>
<body>
<div class="popmask"></div>
<div class="sideBar">
<div class="item item_on_q">
<a href="https://admin.qidian.qq.com/template/blue/mp/menu/qr-code-jump.html?linkType=0&env=ol&kfuin=2852138148&fid=299&key=f377ec024ca45115a03a7632c7bda230&cate=1&source=&isLBS=&isCustomEntry=&type=16&ftype=1&_type=wpa&qidian=true" target="_blank">
<img src="~/img/qq.png" class="on_q"> <div class="kefu_tit">QQ</div>
</a>
</div>
<div class="item item_on_wx">
<a href="https://work.weixin.qq.com/kfid/kfc458bc58e79e5093f" style="color: #0862fe;">
<img src="~/img/weixin.png" class="on_wx"><div class="kefu_tit">微信</div>
</a>
</div>
<div class="item">
<img src="~/img/gzh.png" class="on_gzh"><div class="kefu_tit">公众号</div>
<div class="side_gzh">
<p><img src="~/img/ewm.png"></p>
<p style="color:#f90">实时响应 在线时间 8:30-23:00</p>
<p style="color:#f90">关注公众号可获取免费的到期提醒服务</p>
</div>
</div>
<div class="item">
<img src="~/img/tel.png" class="on_tel"><div class="kefu_tit">电话</div>
<div class="side_tel">
<p><b>400 800 9925</b></p>
<p>实时接通</p>
<p>电话值班时间 8:30-23:00</p>
</div>
</div>
<div class="item">
<a href="#top"><img src="~/img/top.png"></a>
</div>
</div>
<!-- 弹窗导航 -->
<div class="mask">
<ul class="layNav">
<li><a href="/">首页</a></li>
<li><a href="/product/index">产品购买 <span style="color: red;">活动</span></a> </li>
<li><a asp-action="index" asp-controller="LineList" asp-route-Catalog="1">线路表</a> </li>
<li><a asp-action="soft" asp-controller="product">软件下载</a> </li>
<li><a asp-action="index" asp-controller="article">教程&咨询</a></li>
<li><a href="/product/routeros">软路由购买</a></li>
<li><a href="http://vps.juip.com" style="color: red;">动态VPS</a></li>
@* <li><a asp-action="taobao" asp-controller="article">淘宝充值活动</a></li> *@
@if (user != null)
{
<li><a asp-action="index" asp-controller="user">个人中心</a></li>
<li><a asp-action="LoginOut" asp-controller="user">退出</a></li>
}
else
{
<li><a asp-action="WebLogin" asp-controller="user">登录</a></li>
}
<li><img src="~/m/img/close.png" class="btnClose"></li>
</ul>
</div>
<div class="mynav">
<div class="item">
<img src="~/m/img/back.png" onclick="history.go(-1)">
</div>
<div class="item mlogo">
<img src="~/m/img/logo.png">
</div>
<div class="item">
<img src="~/m/img/nav.png" class="btnNav">
</div>
</div>
@RenderBody()
@RenderSection("Scripts", required: false)
<!-- WPA start -->
@* <script id="qd28521381485d6faa97edf5ad07d7e159f6cb902af0" src="https://wp.qiye.qq.com/qidian/2852138148/5d6faa97edf5ad07d7e159f6cb902af0" charset="utf-8" async defer></script> *@
<!-- WPA end -->
<div data-toggle="popovers" data-html="true" data-content="<div style='font-size:2em;'><p><a style='color: #0862fe;' href='https://admin.qidian.qq.com/template/blue/mp/menu/qr-code-jump.html?linkType=0&env=ol&kfuin=2852138148&fid=299&key=f377ec024ca45115a03a7632c7bda230&cate=1&source=&isLBS=&isCustomEntry=&type=16&ftype=1&_type=wpa&qidian=true' target='_blank'>
<img style='width:1.5em;' src='/img/q.png'> QQ在线客服
</a><p><a href='https://work.weixin.qq.com/kfid/kfc458bc58e79e5093f' style='color: #0862fe;'><img src='/img/weixin.png' style='background-color:green;width:1.5em;'> 微信在线客服</a></p></div>" data-placement="top" class="row" id="djkf" style="background-color: white; width:300px;height:85px;position: fixed;z-index: 2000000000;bottom: 200px;right: 0px;cursor:pointer;">
<style>
.top{
padding: 0;
}
</style>
<div class="col-xs-4" style="padding:0;">
<img width="85" src="http://p.qpic.cn/qidian_pic/2852138148/2020071743d6537e611d9ff953f27cbb7430dbe7/0"/>
</div>
<div class="col-xs-8 " style="padding:0;">
<h4><span class="glyphicon glyphicon-user" style="padding:10px 0 0 5px;color:#12b7f5;"></span>在线咨询</h4>
<p style="padding:5px 0 0 10px;">8:30-23:00</p>
</div>
<script>$(function () { $("[data-toggle='popovers']").popover(); });</script>
</div>
</body>
</html>

View File

@@ -1,86 +1,86 @@
@using Hncore.Pass.BaseInfo.Response
@using Hncore.Infrastructure.Serializer;
@using Hncore.Pass.Vpn.Service
@inject ProductService m_ProductService
@{
UserLoginModel user = null;
if (this.Context.Request.Cookies.TryGetValue("userInfo", out string userCookie))
{
user = userCookie.FromJsonTo<UserLoginModel>();
}
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta content="yes" name="apple-mobile-web-app-capable" />
<meta content="yes" name="apple-touch-fullscreen" />
<meta content="telephone=no,email=no" name="format-detection" />
<meta content="maximum-dpr=2" name="flexible" />
<title>聚IP JUIP.COM-产品购买</title>
<link rel="stylesheet" type="text/css" href="~/m/css/base.css" />
<link rel="stylesheet" type="text/css" href="~/m/css/swiper.min.css" />
<link rel="stylesheet" type="text/css" href="~/m/css/bootstrap.css" />
<link href="~/m/css/LCalendar.css" rel="stylesheet" />
<link rel="Shortcut Icon" href="/img/favicon.ico" type="image/x-icon" />
<script src="~/m/js/jquery.min.js" type="text/javascript" charset="utf-8"></script>
<script src="http://g.tbcdn.cn/mtb/lib-flexible/0.3.4/??flexible_css.js,flexible.js"></script>
<script src="~/js/vue.js"></script>
<script src="~/m/js/swiper.min.js" type="text/javascript" charset="utf-8"></script>
<script src="~/m/js/bootstrap.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
$(function () {
$(".btnNav").click(function () {
$(".mask").fadeIn();
console.log(1)
});
$(".btnClose").click(function () {
$(".mask").fadeOut();
console.log(2)
})
})
</script>
</head>
<body>
<vc:redirecct-login></vc:redirecct-login>
<!-- 弹窗导航 -->
<div class="mask">
<ul class="layNav">
<li><a href="/">首页</a></li>
<li><a href="/product/index">产品购买 <span style="color: red;">活动</span></a> </li>
<li><a asp-action="index" asp-controller="LineList">线路表</a> </li>
<li><a asp-action="soft" asp-controller="product">软件下载</a> </li>
<li><a asp-action="index" asp-controller="article">教程&咨询</a></li>
<li><a href="/product/routeros">软路由购买</a></li>
<li><a href="http://vps.juip.com" style="color: red;">动态VPS</a></li>
<li>
@if (user != null)
{
<a asp-action="index" asp-controller="user">个人中心</a>
}
else
{
<a asp-action="WebLogin" asp-controller="user">登录</a>
}
</li>
<li><img src="~/m/img/close.png" class="btnClose"></li>
</ul>
</div>
<div class="mynav">
<div class="item">
<img src="~/m/img/back.png" onclick="history.go(-1)">
</div>
<div class="item">
<img src="~/m/img/logo.png">
</div>
<div class="item">
<img src="~/m/img/nav.png" class="btnNav">
</div>
</div>
@RenderBody()
@RenderSection("Scripts", required: false)
</body>
</html>
@using Hncore.Pass.BaseInfo.Response
@using Hncore.Infrastructure.Serializer;
@using Hncore.Pass.Vpn.Service
@inject ProductService m_ProductService
@{
UserLoginModel user = null;
if (this.Context.Request.Cookies.TryGetValue("userInfo", out string userCookie))
{
user = userCookie.FromJsonTo<UserLoginModel>();
}
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta content="yes" name="apple-mobile-web-app-capable" />
<meta content="yes" name="apple-touch-fullscreen" />
<meta content="telephone=no,email=no" name="format-detection" />
<meta content="maximum-dpr=2" name="flexible" />
<title>聚IP JUIP.COM-产品购买</title>
<link rel="stylesheet" type="text/css" href="~/m/css/base.css" />
<link rel="stylesheet" type="text/css" href="~/m/css/swiper.min.css" />
<link rel="stylesheet" type="text/css" href="~/m/css/bootstrap.css" />
<link href="~/m/css/LCalendar.css" rel="stylesheet" />
<link rel="Shortcut Icon" href="/img/favicon.ico" type="image/x-icon" />
<script src="~/m/js/jquery.min.js" type="text/javascript" charset="utf-8"></script>
<script src="http://g.tbcdn.cn/mtb/lib-flexible/0.3.4/??flexible_css.js,flexible.js"></script>
<script src="~/js/vue.js"></script>
<script src="~/m/js/swiper.min.js" type="text/javascript" charset="utf-8"></script>
<script src="~/m/js/bootstrap.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
$(function () {
$(".btnNav").click(function () {
$(".mask").fadeIn();
console.log(1)
});
$(".btnClose").click(function () {
$(".mask").fadeOut();
console.log(2)
})
})
</script>
</head>
<body>
<vc:redirecct-login></vc:redirecct-login>
<!-- 弹窗导航 -->
<div class="mask">
<ul class="layNav">
<li><a href="/">首页</a></li>
<li><a href="/product/index">产品购买 <span style="color: red;">活动</span></a> </li>
<li><a asp-action="index" asp-controller="LineList">线路表</a> </li>
<li><a asp-action="soft" asp-controller="product">软件下载</a> </li>
<li><a asp-action="index" asp-controller="article">教程&咨询</a></li>
<li><a href="/product/routeros">软路由购买</a></li>
<li><a href="http://vps.juip.com" style="color: red;">动态VPS</a></li>
<li>
@if (user != null)
{
<a asp-action="index" asp-controller="user">个人中心</a>
}
else
{
<a asp-action="WebLogin" asp-controller="user">登录</a>
}
</li>
<li><img src="~/m/img/close.png" class="btnClose"></li>
</ul>
</div>
<div class="mynav">
<div class="item">
<img src="~/m/img/back.png" onclick="history.go(-1)">
</div>
<div class="item">
<img src="~/m/img/logo.png">
</div>
<div class="item">
<img src="~/m/img/nav.png" class="btnNav">
</div>
</div>
@RenderBody()
@RenderSection("Scripts", required: false)
</body>
</html>

View File

@@ -1,18 +1,18 @@
<environment include="Development">
<script src="~/lib/jquery-validation/dist/jquery.validate.js"></script>
<script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js"></script>
</environment>
<environment exclude="Development">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.17.0/jquery.validate.min.js"
asp-fallback-src="~/lib/jquery-validation/dist/jquery.validate.min.js"
asp-fallback-test="window.jQuery && window.jQuery.validator"
crossorigin="anonymous"
integrity="sha256-F6h55Qw6sweK+t7SiOJX+2bpSAa3b/fnlrVCJvmEj1A=">
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validation-unobtrusive/3.2.11/jquery.validate.unobtrusive.min.js"
asp-fallback-src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"
asp-fallback-test="window.jQuery && window.jQuery.validator && window.jQuery.validator.unobtrusive"
crossorigin="anonymous"
integrity="sha256-9GycpJnliUjJDVDqP0UEu/bsm9U+3dnQUH8+3W10vkY=">
</script>
</environment>
<environment include="Development">
<script src="~/lib/jquery-validation/dist/jquery.validate.js"></script>
<script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js"></script>
</environment>
<environment exclude="Development">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.17.0/jquery.validate.min.js"
asp-fallback-src="~/lib/jquery-validation/dist/jquery.validate.min.js"
asp-fallback-test="window.jQuery && window.jQuery.validator"
crossorigin="anonymous"
integrity="sha256-F6h55Qw6sweK+t7SiOJX+2bpSAa3b/fnlrVCJvmEj1A=">
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validation-unobtrusive/3.2.11/jquery.validate.unobtrusive.min.js"
asp-fallback-src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"
asp-fallback-test="window.jQuery && window.jQuery.validator && window.jQuery.validator.unobtrusive"
crossorigin="anonymous"
integrity="sha256-9GycpJnliUjJDVDqP0UEu/bsm9U+3dnQUH8+3W10vkY=">
</script>
</environment>

View File

@@ -1,60 +1,60 @@
@{
Layout = "_Layout";
}
<div id="app" style="margin-top: 10%;">
<table class="table">
<caption>提现管理</caption>
<thead>
<tr>
<th>提现金额</th>
<th>支付宝账号</th>
<th>状态</th>
</tr>
</thead>
<tbody>
<tr v-for="info in tableData">
<td>{{info.money}}</td>
<td>{{info.alipay_account}}</td>
<td>{{info.status}}</td>
</tr>
</tbody>
</table>
</div>
<script>
var vm = new Vue({
el:'#app',
data:{
tableData: [],
},
created:function(){
this.post();
},
methods:{
post:function(){
var param = [];
let cashOutData = {
cookie:document.cookie
}
$.ajax({
type: 'POST',
async:false,
url: 'http://php-api.juip.com/order/CashOutIndex/getData',
dataType: "json",
contentType: "application/json",
data: JSON.stringify(cashOutData),
beforeSend: function(xhr) {
xhr.withCredentials = true;
},
crossDomain: true,
success: function (res) {
if (res.Code == 10000) {
param = res.data;
}
}
});
this.tableData = param;
}
}
});
@{
Layout = "_Layout";
}
<div id="app" style="margin-top: 10%;">
<table class="table">
<caption>提现管理</caption>
<thead>
<tr>
<th>提现金额</th>
<th>支付宝账号</th>
<th>状态</th>
</tr>
</thead>
<tbody>
<tr v-for="info in tableData">
<td>{{info.money}}</td>
<td>{{info.alipay_account}}</td>
<td>{{info.status}}</td>
</tr>
</tbody>
</table>
</div>
<script>
var vm = new Vue({
el:'#app',
data:{
tableData: [],
},
created:function(){
this.post();
},
methods:{
post:function(){
var param = [];
let cashOutData = {
cookie:document.cookie
}
$.ajax({
type: 'POST',
async:false,
url: 'http://php-api.juip.com/order/CashOutIndex/getData',
dataType: "json",
contentType: "application/json",
data: JSON.stringify(cashOutData),
beforeSend: function(xhr) {
xhr.withCredentials = true;
},
crossDomain: true,
success: function (res) {
if (res.Code == 10000) {
param = res.data;
}
}
});
this.tableData = param;
}
}
});
</script>

View File

@@ -1,81 +1,81 @@
@using Home.Models
@model UserHomeModel
@{
Layout = "_Layout";
}
<div class="loginArea">
<div class="loginTop">
<p> <img src="~/m/img/logoBlue.png"></p>
<p class="logoTit">找回密码</p>
</div>
<div class="loginCenter">
<p><img src="~/m/img/phone.png"><input type="text" name="" id="username" value="" placeholder="手机号" /></p>
<p><img src="~/m/img/password.png"><input type="text" name="" id="password" value="" placeholder="请输入新密码" /></p>
<p class="yzm"><img src="~/m/img/yanzhengma.png"><input type="text" name="" id="yanzhengma" value="" placeholder="验证码" /><button type="button" class="btnBlue" onclick="getCode(this)">获取验证码</button></p>
</div>
<p><button type="button" class="btnLogin" onclick="reg()">找回密码</button></p>
<p class="tixing">*手机号不是IP账号请登录后开通IP账号*</p>
<p class="bianjie">已有账号?<a asp-action="WebLogin" asp-controller="User">立即登录</a></p>
</div>
<script>
var time = 60;
function getCode(_self) {
var name = $("#username").val()
if(name == '') { alert('手机号不能为空'); return; }
if (!timing(_self)) return;
var url = '/User/SendPhoneCodevefy?key=FindUser_Code&phone=' + name;
$.ajax({
type: 'POST',
url: url,
contentType: "application/json",
success: function (res) {
alert(res.Message)
//if (res.Code == 10000) {
// alert(res.Message)
//}
}
});
}
function timing(_self) {
if (time != 60) return false
var timerHandler = setInterval(function () {
time--;
if (time <= 1) {
clearInterval(timerHandler);
time = 60;
$(_self).text("获取验证码")
} else {
$(_self).text(time + "s");
}
}, 1000)
return true;
}
function reg() {
var name = $("#username").val()
var pwd = $("#password").val()
var code = $("#yanzhengma").val()
if (name == '') { alert('手机号不能为空'); return; }
if (code == '') { alert('验证码不能为空'); return; }
var data = { Phone: name, Pwd: pwd, Code: code };
$.ajax({
type: 'POST',
url: '/User/FindPwd',
contentType: "application/json",
data: JSON.stringify(data),
success: function (res) {
console.log(res);
if (res.Code == 10000) {
alert("密码重置成功,请重新登录")
window.location.href="/User/WebLogin"
} else {
alert(res.Message)
}
}
});
}
@using Home.Models
@model UserHomeModel
@{
Layout = "_Layout";
}
<div class="loginArea">
<div class="loginTop">
<p> <img src="~/m/img/logoBlue.png"></p>
<p class="logoTit">找回密码</p>
</div>
<div class="loginCenter">
<p><img src="~/m/img/phone.png"><input type="text" name="" id="username" value="" placeholder="手机号" /></p>
<p><img src="~/m/img/password.png"><input type="text" name="" id="password" value="" placeholder="请输入新密码" /></p>
<p class="yzm"><img src="~/m/img/yanzhengma.png"><input type="text" name="" id="yanzhengma" value="" placeholder="验证码" /><button type="button" class="btnBlue" onclick="getCode(this)">获取验证码</button></p>
</div>
<p><button type="button" class="btnLogin" onclick="reg()">找回密码</button></p>
<p class="tixing">*手机号不是IP账号请登录后开通IP账号*</p>
<p class="bianjie">已有账号?<a asp-action="WebLogin" asp-controller="User">立即登录</a></p>
</div>
<script>
var time = 60;
function getCode(_self) {
var name = $("#username").val()
if(name == '') { alert('手机号不能为空'); return; }
if (!timing(_self)) return;
var url = '/User/SendPhoneCodevefy?key=FindUser_Code&phone=' + name;
$.ajax({
type: 'POST',
url: url,
contentType: "application/json",
success: function (res) {
alert(res.Message)
//if (res.Code == 10000) {
// alert(res.Message)
//}
}
});
}
function timing(_self) {
if (time != 60) return false
var timerHandler = setInterval(function () {
time--;
if (time <= 1) {
clearInterval(timerHandler);
time = 60;
$(_self).text("获取验证码")
} else {
$(_self).text(time + "s");
}
}, 1000)
return true;
}
function reg() {
var name = $("#username").val()
var pwd = $("#password").val()
var code = $("#yanzhengma").val()
if (name == '') { alert('手机号不能为空'); return; }
if (code == '') { alert('验证码不能为空'); return; }
var data = { Phone: name, Pwd: pwd, Code: code };
$.ajax({
type: 'POST',
url: '/User/FindPwd',
contentType: "application/json",
data: JSON.stringify(data),
success: function (res) {
console.log(res);
if (res.Code == 10000) {
alert("密码重置成功,请重新登录")
window.location.href="/User/WebLogin"
} else {
alert(res.Message)
}
}
});
}
</script>

View File

@@ -1,62 +1,62 @@
@using Home.Models
@using Hncore.Pass.BaseInfo.Response
@model UserHomeModel
@{
Layout = "_Layout";
}
<vc:redirecct-login></vc:redirecct-login>
<div class="ptop">
<a class="pname">@Model.UserModel.LoginCode</a>
</div>
<ul class="plist">
<li><img src="~/m/img/p1.png"><a asp-action="indexInfo" asp-controller="user">个人信息<img src="~/m/img/arrow.png"></a></li>
<li><img src="~/m/img/p3.png"><a asp-action="myaccounts" asp-controller="user">IP账号管理<img src="~/m/img/arrow.png"></a></li>
<li><img src="~/m/img/p3.png"><a asp-action="mymoney" asp-controller="user">资金明细<img src="~/m/img/arrow.png"></a></li>
<li><img src="~/m/img/p3.png"><a href="/user/rosorder">软路由订单<img src="~/m/img/arrow.png"></a></li>
<li><img src="~/m/img/p1.png"><a asp-action="myorders" asp-controller="user">我的订单<img src="~/m/img/arrow.png"></a></li>
<li><img src="~/m/img/p2.png"><a asp-action="myrefundorders" asp-controller="user">退货订单<img src="~/m/img/arrow.png"></a></li>
<li><img src="~/m/img/p4.png"><a asp-action="mycoupons" asp-controller="user">我的优惠券&nbsp;<span style="background-color: red;font-size:25px;" class="badge" id="coupon_num"></span><img src="~/m/img/arrow.png"></a></li>
<li><img src="~/m/img/p4.png"></span><a asp-action="cashout" asp-controller="user">提现管理<img src="~/m/img/arrow.png"></a></li>
</ul>
<script>
var url = '/api/sells/v1/coupon/GetAvailableCoupon';
$.ajax({
type: 'GET',
url: url,
success: function (res) {
$("#coupon_num").text(res.Data.length);
}
})
function getQueryString(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
var r = window.location.search.substr(1).match(reg);
if (r != null) return unescape(r[2]);
return null;
}
var is_realname = getQueryString('realname');
if(is_realname){
let data = {
cookie:document.cookie
}
$.ajax({
type: 'POST',
url: 'http://php-api.juip.com/api/test/aliGetResult',
dataType: "json",
contentType: "application/json",
data: JSON.stringify(data),
beforeSend: function(xhr) {
xhr.withCredentials = true;
},
crossDomain: true,
success: function (res) {
}
});
}
</script>
@using Home.Models
@using Hncore.Pass.BaseInfo.Response
@model UserHomeModel
@{
Layout = "_Layout";
}
<vc:redirecct-login></vc:redirecct-login>
<div class="ptop">
<a class="pname">@Model.UserModel.LoginCode</a>
</div>
<ul class="plist">
<li><img src="~/m/img/p1.png"><a asp-action="indexInfo" asp-controller="user">个人信息<img src="~/m/img/arrow.png"></a></li>
<li><img src="~/m/img/p3.png"><a asp-action="myaccounts" asp-controller="user">IP账号管理<img src="~/m/img/arrow.png"></a></li>
<li><img src="~/m/img/p3.png"><a asp-action="mymoney" asp-controller="user">资金明细<img src="~/m/img/arrow.png"></a></li>
<li><img src="~/m/img/p3.png"><a href="/user/rosorder">软路由订单<img src="~/m/img/arrow.png"></a></li>
<li><img src="~/m/img/p1.png"><a asp-action="myorders" asp-controller="user">我的订单<img src="~/m/img/arrow.png"></a></li>
<li><img src="~/m/img/p2.png"><a asp-action="myrefundorders" asp-controller="user">退货订单<img src="~/m/img/arrow.png"></a></li>
<li><img src="~/m/img/p4.png"><a asp-action="mycoupons" asp-controller="user">我的优惠券&nbsp;<span style="background-color: red;font-size:25px;" class="badge" id="coupon_num"></span><img src="~/m/img/arrow.png"></a></li>
<li><img src="~/m/img/p4.png"></span><a asp-action="cashout" asp-controller="user">提现管理<img src="~/m/img/arrow.png"></a></li>
</ul>
<script>
var url = '/api/sells/v1/coupon/GetAvailableCoupon';
$.ajax({
type: 'GET',
url: url,
success: function (res) {
$("#coupon_num").text(res.Data.length);
}
})
function getQueryString(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
var r = window.location.search.substr(1).match(reg);
if (r != null) return unescape(r[2]);
return null;
}
var is_realname = getQueryString('realname');
if(is_realname){
let data = {
cookie:document.cookie
}
$.ajax({
type: 'POST',
url: 'http://php-api.juip.com/api/test/aliGetResult',
dataType: "json",
contentType: "application/json",
data: JSON.stringify(data),
beforeSend: function(xhr) {
xhr.withCredentials = true;
},
crossDomain: true,
success: function (res) {
}
});
}
</script>

File diff suppressed because it is too large Load Diff

View File

@@ -1,73 +1,73 @@
@using Home.Models
@using Microsoft.Extensions.Configuration
@using Hncore.Infrastructure.Extension
@inject IConfiguration m_Configuration
@model UserHomeModel
@{
Layout = "_Layout";
var BaseUrl = m_Configuration["Service_BaseUrl"];
var WxAppId = m_Configuration["WxApps:AppID"];
}
<div class="loginArea">
<div class="loginTop">
<p> <img src="~/m/img/logoBlue.png"></p>
<p class="logoTit">用户登录</p>
<p><span class="xinyonghu">新用户免费赠送3次测试机会</span></p>
</div>
<div class="loginCenter">
<p><img src="~/m/img/phone.png"><input type="text" name="" id="rLogin_Name" value="" placeholder="淘宝名/会员手机号" /></p>
<p><img src="~/m/img/password.png"><input type="password" name="" id="rLogin_Pwd" value="" placeholder="密码" /></p>
</div>
<p>@*<span><input type="checkbox" name="" id="" value="" />自动登录</span>*@<span class="pull-right"><a asp-action="FindPwd" asp-controller="User">忘记密码?</a></span></p>
<p class="denglu"><button type="button" class="btnLogin" onclick="login()">登录</button></p>
<p class="tixing">*手机号不是IP账号请登录后开通IP账号*</p>
<p class="bianjie">还没有账号?<a asp-action="Regist" asp-controller="User">立即注册</a></p>
</div>
<script>
var redirect = "@ViewBag.redirect" || "/user/index";
function isWeiXin() {
var ua = window.navigator.userAgent.toLowerCase();
if (ua.match(/micromessenger/i) == 'micromessenger') {
return true;
} else {
return false;
}
}
function login() {
var name = $("#rLogin_Name").val()
var pwd = $("#rLogin_Pwd").val()
var data = { Logincode: name, Password: pwd, Code: 1 };
$.ajax({
type: 'POST',
url: '/user/login',
contentType: "application/json",
data: JSON.stringify(data),
success: function (res) {
console.log(res);
if (res.Code == 10000) {
loginSuccess(res.Data.User)
} else {
alert(res.Message)
}
}
});
}
function loginSuccess(user) {
if (!isWeiXin()) {
window.location.href = redirect;
return;
}
window.location.href = "@(BaseUrl)User/MP_GetUserInfo?appid=@WxAppId&callbakUrl=" + redirect + "&state=" + user.Id;
//if (!user.OpenId) {
//} else {
// window.location.href = "/User/Index";
//}
}
@using Home.Models
@using Microsoft.Extensions.Configuration
@using Hncore.Infrastructure.Extension
@inject IConfiguration m_Configuration
@model UserHomeModel
@{
Layout = "_Layout";
var BaseUrl = m_Configuration["Service_BaseUrl"];
var WxAppId = m_Configuration["WxApps:AppID"];
}
<div class="loginArea">
<div class="loginTop">
<p> <img src="~/m/img/logoBlue.png"></p>
<p class="logoTit">用户登录</p>
<p><span class="xinyonghu">新用户免费赠送3次测试机会</span></p>
</div>
<div class="loginCenter">
<p><img src="~/m/img/phone.png"><input type="text" name="" id="rLogin_Name" value="" placeholder="淘宝名/会员手机号" /></p>
<p><img src="~/m/img/password.png"><input type="password" name="" id="rLogin_Pwd" value="" placeholder="密码" /></p>
</div>
<p>@*<span><input type="checkbox" name="" id="" value="" />自动登录</span>*@<span class="pull-right"><a asp-action="FindPwd" asp-controller="User">忘记密码?</a></span></p>
<p class="denglu"><button type="button" class="btnLogin" onclick="login()">登录</button></p>
<p class="tixing">*手机号不是IP账号请登录后开通IP账号*</p>
<p class="bianjie">还没有账号?<a asp-action="Regist" asp-controller="User">立即注册</a></p>
</div>
<script>
var redirect = "@ViewBag.redirect" || "/user/index";
function isWeiXin() {
var ua = window.navigator.userAgent.toLowerCase();
if (ua.match(/micromessenger/i) == 'micromessenger') {
return true;
} else {
return false;
}
}
function login() {
var name = $("#rLogin_Name").val()
var pwd = $("#rLogin_Pwd").val()
var data = { Logincode: name, Password: pwd, Code: 1 };
$.ajax({
type: 'POST',
url: '/user/login',
contentType: "application/json",
data: JSON.stringify(data),
success: function (res) {
console.log(res);
if (res.Code == 10000) {
loginSuccess(res.Data.User)
} else {
alert(res.Message)
}
}
});
}
function loginSuccess(user) {
if (!isWeiXin()) {
window.location.href = redirect;
return;
}
window.location.href = "@(BaseUrl)User/MP_GetUserInfo?appid=@WxAppId&callbakUrl=" + redirect + "&state=" + user.Id;
//if (!user.OpenId) {
//} else {
// window.location.href = "/User/Index";
//}
}
</script>

File diff suppressed because it is too large Load Diff

View File

@@ -1,68 +1,68 @@
@using Hncore.Pass.Sells.Model
@model List<UserCouponModel>
@{
Layout = "_UserLayout";
Func<UserCouponModel, string> format = (item) =>
{
if (item.IsExpired) return "已过期";
if (item.IsUsed) return "已使用";
return "可使用";
};
}
<div class="kong">
</div>
@foreach (var item in Model)
{
<div class="yhq">
@if (item.Coupon.CouponType == ECouponType.Discount)
{
<div class="item">
<span class="jiage">@(item.Coupon.CouponValue)折</span> <span class="zhuangtai">@format(item)</span>
</div>
}
@if (item.Coupon.CouponType == ECouponType.Minus)
{
<div class="item">
<span class="jiage">¥@(item.Coupon.CouponValue)</span><span class="zhuangtai">@format(item)</span>
</div>
}
<div class="item">
<p>@item.Coupon.Name</p>
<p>使用规则:<span>@(item.Coupon.AllowMinAmount > 0 ? $"满{item.Coupon.AllowMinAmount}元可用" : "无限制")</span></p>
<p>有效时间:<span>@(item.Orgin.StartTime.Value.ToString("yyyy.MM.dd"))至@(item.Orgin.EndTime.Value.ToString("yyyy.MM.dd"))</span></p>
<p>获取途径:<span>@(item.Orgin.Remark)</span></p>
</div>
</div>
}
@*<div class="yhq">
<div class="item">
<span class="jiage">¥6</span><span class="zhuangtai">可使用</span>
</div>
<div class="item">
<p>优惠券名称</p>
<p>使用规则:<span>无限制</span></p>
<p>有效时间:<span>2020.1.1至2020.3.1</span></p>
<p>获取途径:<span>淘宝下单赠送</span></p>
</div>
</div>
<div class="yhq gray">
<div class="item">
<span class="jiage">¥6</span><span class="zhuangtai">已使用</span>
</div>
<div class="item">
<p>优惠券名称</p>
<p>使用规则:<span>无限制</span></p>
<p>有效时间:<span>2020.1.1至2020.3.1</span></p>
<p>获取途径:<span>淘宝下单赠送</span></p>
</div>
</div>*@
@using Hncore.Pass.Sells.Model
@model List<UserCouponModel>
@{
Layout = "_UserLayout";
Func<UserCouponModel, string> format = (item) =>
{
if (item.IsExpired) return "已过期";
if (item.IsUsed) return "已使用";
return "可使用";
};
}
<div class="kong">
</div>
@foreach (var item in Model)
{
<div class="yhq">
@if (item.Coupon.CouponType == ECouponType.Discount)
{
<div class="item">
<span class="jiage">@(item.Coupon.CouponValue)折</span> <span class="zhuangtai">@format(item)</span>
</div>
}
@if (item.Coupon.CouponType == ECouponType.Minus)
{
<div class="item">
<span class="jiage">¥@(item.Coupon.CouponValue)</span><span class="zhuangtai">@format(item)</span>
</div>
}
<div class="item">
<p>@item.Coupon.Name</p>
<p>使用规则:<span>@(item.Coupon.AllowMinAmount > 0 ? $"满{item.Coupon.AllowMinAmount}元可用" : "无限制")</span></p>
<p>有效时间:<span>@(item.Orgin.StartTime.Value.ToString("yyyy.MM.dd"))至@(item.Orgin.EndTime.Value.ToString("yyyy.MM.dd"))</span></p>
<p>获取途径:<span>@(item.Orgin.Remark)</span></p>
</div>
</div>
}
@*<div class="yhq">
<div class="item">
<span class="jiage">¥6</span><span class="zhuangtai">可使用</span>
</div>
<div class="item">
<p>优惠券名称</p>
<p>使用规则:<span>无限制</span></p>
<p>有效时间:<span>2020.1.1至2020.3.1</span></p>
<p>获取途径:<span>淘宝下单赠送</span></p>
</div>
</div>
<div class="yhq gray">
<div class="item">
<span class="jiage">¥6</span><span class="zhuangtai">已使用</span>
</div>
<div class="item">
<p>优惠券名称</p>
<p>使用规则:<span>无限制</span></p>
<p>有效时间:<span>2020.1.1至2020.3.1</span></p>
<p>获取途径:<span>淘宝下单赠送</span></p>
</div>
</div>*@

View File

@@ -1,289 +1,289 @@
@using Hncore.Infrastructure.Data
@using Hncore.Pass.Vpn.Domain
@using Hncore.Infrastructure.Extension
@using ViewComponents
@model PageData<ProductOrderEntity>
@{
Layout = "_UserLayout";
Func<string, string> cut = word =>
{
if (word.Length > 15)
return word.Substring(0, 15) + "...";
return word;
};
}
<div id="app">
<form asp-action="myorders" asp-controller="user" method="get">
<div class="chaxun2">
<input type="text" v-model="searchModel.KeyWord" /><button type="button" class="btnOrange" v-on:click="search">查询</button>
</div>
<div class="row riqi">
<div class="col-sm-4 col-xs-4">
日期查询:
</div>
<div class="col-sm-4 col-xs-4">
<input type="text" name="start_date" id="start_date" v-model="searchModel.BTime" placeholder="选择开始日期" readonly="readonly" />
</div>
<div class="col-sm-4 col-xs-4">
<input type="text" name="end_date" id="end_date" v-model="searchModel.ETime" placeholder="选择结束日期" readonly="readonly" />
</div>
</div>
<div class="row shaixuan">
<div class="col-sm-4 col-xs-4">
<select @@change="search" v-model="searchModel.OrderType">
<option value="0">全部类型</option>
<option value="1">新开</option>
<option value="2">续费</option>
<option value="3">批量新开</option>
<option value="4">批量续费</option>
</select>
</div>
<div class="col-sm-4 col-xs-4">
<select @@change="search" v-model="searchModel.ProductId">
<option value="0">全部产品</option>
<option v-for="item in productWithPackage" :value="item.Product.Id">{{item.Product.Name}}</option>
</select>
</div>
<div class="col-sm-4 col-xs-4">
<select @@change="search" v-model="searchModel.PackageId">
<option value="0">全部套餐</option>
<option value="测试卡">测试卡</option>
<option value="天卡">天卡</option>
<option value="周卡">周卡</option>
<option value="月卡">月卡</option>
<option value="月卡(活动)">月卡(活动)</option>
<option value="双月卡(活动)">双月卡(活动)</option>
<option value="季卡">季卡</option>
<option value="季卡(活动)">季卡(活动)</option>
<option value="年卡">年卡</option>
</select>
</div>
</div>
</form>
<table border="0" cellspacing="0" cellpadding="0" class="orderTable">
<tr><th>类型</th><th>产品</th><th>套餐</th><th>详情</th></tr>
@foreach (var item in Model.List)
{
<tr>
<td>@item.OrderType.GetEnumDisplayName()</td>
<td>@item.ProductName</td>
<td>@item.PackageName</td>
<td>
<button type="button" class="btnXq toDetail" onclick="showDetail(this)"
a-date="@item.CreateTime.ToString("yyyy.MM.dd")"
a-orderno="@item.OrderNo"
a-ordertype="@item.OrderType.GetEnumDisplayName()"
a-product="@item.ProductName"
a-package="@item.PackageName"
a-price="@item.DayPrice"
a-conncount="@(item.AccountCount*item.ConnectCount)"
a-account="@item.Accounts"
a-orderamount="@item.OrderAmount"
a-couponamount="@item.CouponAmount"
a-payamount="@item.PaymentAmount">
详情
</button>
</td>
</tr>
}
</table>
<div class="fenye">
@await Component.InvokeAsync("Pager", new PagerModel() { Total = Model.RowCount, PageIndex = this.Context.Request.GetInt("PageIndex") })
</div>
<!-- 弹窗详情 -->
<div class="layerTable">
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td>日期:</td>
<td>{{currentOrder.date}}</td>
</tr>
<tr>
<td>订单编号:</td>
<td>{{currentOrder.orderno}}</td>
</tr>
<tr>
<td>类型:</td>
<td>{{currentOrder.ordertype}}</td>
</tr>
<tr>
<td>产品:</td>
<td>{{currentOrder.product}}</td>
</tr>
<tr>
<td>套餐:</td>
<td>{{currentOrder.package}}</td>
</tr>
<tr>
<td>单价:</td>
<td>{{currentOrder.price}}</td>
</tr>
<tr>
<td>总连接数:</td>
<td>{{currentOrder.conncount}}</td>
</tr>
<tr>
<td>账号:</td>
<td>{{currentOrder.account}}</td>
</tr>
<tr>
<td>订单金额:</td>
<td>{{currentOrder.orderamount}}</td>
</tr>
<tr>
<td>优惠金额:</td>
<td>{{currentOrder.couponamount}}</td>
</tr>
<tr>
<td>实付金额:</td>
<td>{{currentOrder.payamount}}</td>
</tr>
</table>
<div class="back">
<img src="~/m/img/arrowback.png"> 返回列表
</div>
</div>
</div>
<script src="~/m/js/LCalendar.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
var app = new Vue({
el: '#app',
data: {
productWithPackage: [],
packages: [],
searchModel: {
OrderType:0,
ProductId:@this.Context.Request.GetInt("ProductId"),
PackageId:"0",
KeyWord:'',
BTime: '@this.Context.Request.Get("BTime")',
ETime: '@this.Context.Request.Get("ETime")',
},
oneAuthModel: {
ProductId: 0,
Account: "",
Pwd:""
},
mutilAuthModel: {
ProductId: 0,
Account: "",
Pwd: "",
StartNum: 0,
Count:0
},
currentOrder: {
date:"",
orderno:"",
ordertype:"",
product:"",
package:"",
price:"",
conncount:"",
account:"",
orderamount:"",
couponamount:"",
payamount:""
}
},
computed: {
},
watch: {
'searchModel.ProductId': { //加引号监听对象里的属性
handler: function (newValue, oldValue) {
for (var i = 0; i < this.productWithPackage.length; i++) {
var item = this.productWithPackage[i];
if (item.Product.Id == newValue) {
this.packages = item.Packages
return;
}
}
},
immediate: true
}
},
created: function () {
this.getProducts();
},
methods: {
getProducts() {
var that = this;
$.ajax({
type: 'GET',
url: '/api/course/v1/product/ProductWithPackage',
success: function (res) {
if (res.Code == 10000) {
that.productWithPackage = res.Data;
}
}
});
},
search() {
var ps = [];
this.searchModel.BTime = $("#BTime").val();
this.searchModel.ETime = $("#ETime").val();
for (var item in this.searchModel) {
var p = item + "=" + this.searchModel[item];
ps.push(p);
}
window.location.href = "?" + ps.join("&");
},
setOrderInfo(info) {
this.currentOrder = info;
}
}
})
function showDetail(_self) {
var currentOrder = {
date: $(_self).attr('a-date'),
orderno: $(_self).attr('a-orderno'),
ordertype: $(_self).attr('a-ordertype'),
product: $(_self).attr('a-product'),
package: $(_self).attr('a-package'),
price: $(_self).attr('a-price'),
conncount: $(_self).attr('a-conncount'),
account: $(_self).attr('a-account'),
orderamount: $(_self).attr('a-orderamount'),
couponamount: $(_self).attr('a-couponamount'),
payamount: $(_self).attr('a-payamount'),
}
app.setOrderInfo(currentOrder);
$(_self).show();
}
</script>
<script type="text/javascript">
var calendar = new LCalendar();
calendar.init({
'trigger': '#start_date', //标签id
'type': 'date', //date 调出日期选择 datetime 调出日期时间选择 time 调出时间选择 ym 调出年月选择,
'minDate': (new Date().getFullYear() - 3) + '-' + 1 + '-' + 1, //最小日期
'maxDate': (new Date().getFullYear() + 3) + '-' + 12 + '-' + 31 //最大日期
});
var calendar = new LCalendar();
calendar.init({
'trigger': '#end_date', //标签id
'type': 'date', //date 调出日期选择 datetime 调出日期时间选择 time 调出时间选择 ym 调出年月选择,
'minDate': (new Date().getFullYear() - 3) + '-' + 1 + '-' + 1, //最小日期
'maxDate': (new Date().getFullYear() + 3) + '-' + 12 + '-' + 31 //最大日期
});
$(".toDetail").click(function () {
showDetail($(this))
$(".layerTable").show();
});
$(".back").click(function () {
$(".layerTable").hide();
})
</script>
@using Hncore.Infrastructure.Data
@using Hncore.Pass.Vpn.Domain
@using Hncore.Infrastructure.Extension
@using ViewComponents
@model PageData<ProductOrderEntity>
@{
Layout = "_UserLayout";
Func<string, string> cut = word =>
{
if (word.Length > 15)
return word.Substring(0, 15) + "...";
return word;
};
}
<div id="app">
<form asp-action="myorders" asp-controller="user" method="get">
<div class="chaxun2">
<input type="text" v-model="searchModel.KeyWord" /><button type="button" class="btnOrange" v-on:click="search">查询</button>
</div>
<div class="row riqi">
<div class="col-sm-4 col-xs-4">
日期查询:
</div>
<div class="col-sm-4 col-xs-4">
<input type="text" name="start_date" id="start_date" v-model="searchModel.BTime" placeholder="选择开始日期" readonly="readonly" />
</div>
<div class="col-sm-4 col-xs-4">
<input type="text" name="end_date" id="end_date" v-model="searchModel.ETime" placeholder="选择结束日期" readonly="readonly" />
</div>
</div>
<div class="row shaixuan">
<div class="col-sm-4 col-xs-4">
<select @@change="search" v-model="searchModel.OrderType">
<option value="0">全部类型</option>
<option value="1">新开</option>
<option value="2">续费</option>
<option value="3">批量新开</option>
<option value="4">批量续费</option>
</select>
</div>
<div class="col-sm-4 col-xs-4">
<select @@change="search" v-model="searchModel.ProductId">
<option value="0">全部产品</option>
<option v-for="item in productWithPackage" :value="item.Product.Id">{{item.Product.Name}}</option>
</select>
</div>
<div class="col-sm-4 col-xs-4">
<select @@change="search" v-model="searchModel.PackageId">
<option value="0">全部套餐</option>
<option value="测试卡">测试卡</option>
<option value="天卡">天卡</option>
<option value="周卡">周卡</option>
<option value="月卡">月卡</option>
<option value="月卡(活动)">月卡(活动)</option>
<option value="双月卡(活动)">双月卡(活动)</option>
<option value="季卡">季卡</option>
<option value="季卡(活动)">季卡(活动)</option>
<option value="年卡">年卡</option>
</select>
</div>
</div>
</form>
<table border="0" cellspacing="0" cellpadding="0" class="orderTable">
<tr><th>类型</th><th>产品</th><th>套餐</th><th>详情</th></tr>
@foreach (var item in Model.List)
{
<tr>
<td>@item.OrderType.GetEnumDisplayName()</td>
<td>@item.ProductName</td>
<td>@item.PackageName</td>
<td>
<button type="button" class="btnXq toDetail" onclick="showDetail(this)"
a-date="@item.CreateTime.ToString("yyyy.MM.dd")"
a-orderno="@item.OrderNo"
a-ordertype="@item.OrderType.GetEnumDisplayName()"
a-product="@item.ProductName"
a-package="@item.PackageName"
a-price="@item.DayPrice"
a-conncount="@(item.AccountCount*item.ConnectCount)"
a-account="@item.Accounts"
a-orderamount="@item.OrderAmount"
a-couponamount="@item.CouponAmount"
a-payamount="@item.PaymentAmount">
详情
</button>
</td>
</tr>
}
</table>
<div class="fenye">
@await Component.InvokeAsync("Pager", new PagerModel() { Total = Model.RowCount, PageIndex = this.Context.Request.GetInt("PageIndex") })
</div>
<!-- 弹窗详情 -->
<div class="layerTable">
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td>日期:</td>
<td>{{currentOrder.date}}</td>
</tr>
<tr>
<td>订单编号:</td>
<td>{{currentOrder.orderno}}</td>
</tr>
<tr>
<td>类型:</td>
<td>{{currentOrder.ordertype}}</td>
</tr>
<tr>
<td>产品:</td>
<td>{{currentOrder.product}}</td>
</tr>
<tr>
<td>套餐:</td>
<td>{{currentOrder.package}}</td>
</tr>
<tr>
<td>单价:</td>
<td>{{currentOrder.price}}</td>
</tr>
<tr>
<td>总连接数:</td>
<td>{{currentOrder.conncount}}</td>
</tr>
<tr>
<td>账号:</td>
<td>{{currentOrder.account}}</td>
</tr>
<tr>
<td>订单金额:</td>
<td>{{currentOrder.orderamount}}</td>
</tr>
<tr>
<td>优惠金额:</td>
<td>{{currentOrder.couponamount}}</td>
</tr>
<tr>
<td>实付金额:</td>
<td>{{currentOrder.payamount}}</td>
</tr>
</table>
<div class="back">
<img src="~/m/img/arrowback.png"> 返回列表
</div>
</div>
</div>
<script src="~/m/js/LCalendar.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
var app = new Vue({
el: '#app',
data: {
productWithPackage: [],
packages: [],
searchModel: {
OrderType:0,
ProductId:@this.Context.Request.GetInt("ProductId"),
PackageId:"0",
KeyWord:'',
BTime: '@this.Context.Request.Get("BTime")',
ETime: '@this.Context.Request.Get("ETime")',
},
oneAuthModel: {
ProductId: 0,
Account: "",
Pwd:""
},
mutilAuthModel: {
ProductId: 0,
Account: "",
Pwd: "",
StartNum: 0,
Count:0
},
currentOrder: {
date:"",
orderno:"",
ordertype:"",
product:"",
package:"",
price:"",
conncount:"",
account:"",
orderamount:"",
couponamount:"",
payamount:""
}
},
computed: {
},
watch: {
'searchModel.ProductId': { //加引号监听对象里的属性
handler: function (newValue, oldValue) {
for (var i = 0; i < this.productWithPackage.length; i++) {
var item = this.productWithPackage[i];
if (item.Product.Id == newValue) {
this.packages = item.Packages
return;
}
}
},
immediate: true
}
},
created: function () {
this.getProducts();
},
methods: {
getProducts() {
var that = this;
$.ajax({
type: 'GET',
url: '/api/course/v1/product/ProductWithPackage',
success: function (res) {
if (res.Code == 10000) {
that.productWithPackage = res.Data;
}
}
});
},
search() {
var ps = [];
this.searchModel.BTime = $("#BTime").val();
this.searchModel.ETime = $("#ETime").val();
for (var item in this.searchModel) {
var p = item + "=" + this.searchModel[item];
ps.push(p);
}
window.location.href = "?" + ps.join("&");
},
setOrderInfo(info) {
this.currentOrder = info;
}
}
})
function showDetail(_self) {
var currentOrder = {
date: $(_self).attr('a-date'),
orderno: $(_self).attr('a-orderno'),
ordertype: $(_self).attr('a-ordertype'),
product: $(_self).attr('a-product'),
package: $(_self).attr('a-package'),
price: $(_self).attr('a-price'),
conncount: $(_self).attr('a-conncount'),
account: $(_self).attr('a-account'),
orderamount: $(_self).attr('a-orderamount'),
couponamount: $(_self).attr('a-couponamount'),
payamount: $(_self).attr('a-payamount'),
}
app.setOrderInfo(currentOrder);
$(_self).show();
}
</script>
<script type="text/javascript">
var calendar = new LCalendar();
calendar.init({
'trigger': '#start_date', //标签id
'type': 'date', //date 调出日期选择 datetime 调出日期时间选择 time 调出时间选择 ym 调出年月选择,
'minDate': (new Date().getFullYear() - 3) + '-' + 1 + '-' + 1, //最小日期
'maxDate': (new Date().getFullYear() + 3) + '-' + 12 + '-' + 31 //最大日期
});
var calendar = new LCalendar();
calendar.init({
'trigger': '#end_date', //标签id
'type': 'date', //date 调出日期选择 datetime 调出日期时间选择 time 调出时间选择 ym 调出年月选择,
'minDate': (new Date().getFullYear() - 3) + '-' + 1 + '-' + 1, //最小日期
'maxDate': (new Date().getFullYear() + 3) + '-' + 12 + '-' + 31 //最大日期
});
$(".toDetail").click(function () {
showDetail($(this))
$(".layerTable").show();
});
$(".back").click(function () {
$(".layerTable").hide();
})
</script>

View File

@@ -1,281 +1,281 @@
@using Hncore.Infrastructure.Data
@using Hncore.Pass.Vpn.Domain
@using Hncore.Infrastructure.Extension
@using ViewComponents
@model PageData<ProductOrderEntity>
@{
Layout = "_UserLayout";
}
<div id="app">
<form asp-action="myorders" asp-controller="user" method="get">
<div class="chaxun2">
<input type="text" v-model="searchModel.KeyWord" /><button type="button" class="btnOrange" v-on:click="search">查询</button>
</div>
<div class="row riqi">
<div class="col-sm-4 col-xs-4">
日期查询:
</div>
<div class="col-sm-4 col-xs-4">
<input type="text" name="start_date" id="start_date" v-model="searchModel.BTime" placeholder="选择开始日期" readonly="readonly" />
</div>
<div class="col-sm-4 col-xs-4">
<input type="text" name="end_date" id="end_date" v-model="searchModel.ETime" placeholder="选择结束日期" readonly="readonly" />
</div>
</div>
<div class="row shaixuan">
<div class="col-sm-4 col-xs-4">
<select @@change="search" v-model="searchModel.OrderType">
<option value="0">全部类型</option>
<option value="1">新开</option>
<option value="2">续费</option>
<option value="3">批量新开</option>
<option value="4">批量续费</option>
</select>
</div>
<div class="col-sm-4 col-xs-4">
<select @@change="search" v-model="searchModel.ProductId">
<option value="0">全部产品</option>
<option v-for="item in productWithPackage" :value="item.Product.Id">{{item.Product.Name}}</option>
</select>
</div>
<div class="col-sm-4 col-xs-4">
<select @@change="search" v-model="searchModel.PackageId">
<option value="0">全部套餐</option>
<option value="测试卡">测试卡</option>
<option value="天卡">天卡</option>
<option value="周卡">周卡</option>
<option value="月卡">月卡</option>
<option value="月卡(活动)">月卡(活动)</option>
<option value="双月卡(活动)">双月卡(活动)</option>
<option value="季卡">季卡</option>
<option value="季卡(活动)">季卡(活动)</option>
<option value="年卡">年卡</option>
</select>
</div>
</div>
</form>
<table border="0" cellspacing="0" cellpadding="0" class="orderTable">
<tr><th>类型</th><th>产品</th><th>套餐</th><th>详情</th></tr>
@foreach (var item in Model.List)
{
<tr>
<td>@item.OrderType.GetEnumDisplayName()</td>
<td>@item.ProductName</td>
<td>@item.PackageName</td>
<td>
<button type="button" class="btnXq toDetail" onclick="showDetail(this)"
a-date="@item.CreateTime.ToString("yyyy.MM.dd")"
a-orderno="@item.OrderNo"
a-ordertype="@item.OrderType.GetEnumDisplayName()"
a-product="@item.ProductName"
a-package="@item.PackageName"
a-price="@item.DayPrice"
a-dayprice="@item.DayPrice"
a-conncount="@(item.AccountCount*item.ConnectCount)"
a-account="@item.Accounts"
a-orderamount="@item.OrderAmount"
a-refundamount="@item.RefundAmount"
a-payamount="@item.PaymentAmount"
a-refundresttime="@item.RefundRestTime">
详情
</button>
</td>
</tr>
}
</table>
<div class="fenye">
@await Component.InvokeAsync("Pager", new PagerModel() { Total = Model.RowCount, PageIndex = this.Context.Request.GetInt("PageIndex") })
</div>
<!-- 弹窗详情 -->
<div class="layerTable">
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td>日期:</td>
<td>{{currentOrder.date}}</td>
</tr>
<tr>
<td>订单编号:</td>
<td>{{currentOrder.orderno}}</td>
</tr>
<tr>
<td>类型:</td>
<td>{{currentOrder.ordertype}}</td>
</tr>
<tr>
<td>产品:</td>
<td>{{currentOrder.product}}</td>
</tr>
<tr>
<td>套餐:</td>
<td>{{currentOrder.package}}</td>
</tr>
<tr>
<td>总连接数:</td>
<td>{{currentOrder.conncount}}</td>
</tr>
<tr>
<td>账号:</td>
<td>{{currentOrder.account}}</td>
</tr>
<tr>
<td>退款单价:</td>
<td>{{currentOrder.dayprice}}</td>
</tr>
<tr>
<td>退款时长:</td>
<td>{{currentOrder.refundresttime}}</td>
</tr>
<tr>
<td>实付金额:</td>
<td>{{currentOrder.payamount}}</td>
</tr>
<tr>
<td>退款金额:</td>
<td>{{currentOrder.refundamount}}</td>
</tr>
</table>
<div class="back">
<img src="~/m/img/arrowback.png"> 返回列表
</div>
</div>
</div>
<script src="~/m/js/LCalendar.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
var app = new Vue({
el: '#app',
data: {
productWithPackage: [],
packages: [],
searchModel: {
OrderType:0,
ProductId:@this.Context.Request.GetInt("ProductId"),
PackageId:"0",
KeyWord:'',
BTime: '@this.Context.Request.Get("BTime")',
ETime: '@this.Context.Request.Get("ETime")',
},
oneAuthModel: {
ProductId: 0,
Account: "",
Pwd:""
},
mutilAuthModel: {
ProductId: 0,
Account: "",
Pwd: "",
StartNum: 0,
Count:0
},
currentOrder: {
date:"",
orderno:"",
ordertype:"",
product:"",
package:"",
price:"",
conncount:"",
account:"",
orderamount:"",
couponamount:"",
payamount:"",
refundamount:""
}
},
computed: {
},
watch: {
'searchModel.ProductId': { //加引号监听对象里的属性
handler: function (newValue, oldValue) {
for (var i = 0; i < this.productWithPackage.length; i++) {
var item = this.productWithPackage[i];
if (item.Product.Id == newValue) {
this.packages = item.Packages
return;
}
}
},
immediate: true
}
},
created: function () {
this.getProducts();
},
methods: {
getProducts() {
var that = this;
$.ajax({
type: 'GET',
url: '/api/course/v1/product/ProductWithPackage',
success: function (res) {
if (res.Code == 10000) {
that.productWithPackage = res.Data;
}
}
});
},
search() {
var ps = [];
this.searchModel.BTime = $("#BTime").val();
this.searchModel.ETime = $("#ETime").val();
for (var item in this.searchModel) {
var p = item + "=" + this.searchModel[item];
ps.push(p);
}
window.location.href = "?" + ps.join("&");
},
setOrderInfo(info) {
this.currentOrder = info;
}
}
})
function showDetail(_self) {
var currentOrder = {
date: $(_self).attr('a-date'),
orderno: $(_self).attr('a-orderno'),
ordertype: $(_self).attr('a-ordertype'),
product: $(_self).attr('a-product'),
package: $(_self).attr('a-package'),
dayprice: $(_self).attr('a-dayprice'),
conncount: $(_self).attr('a-conncount'),
account: $(_self).attr('a-account'),
orderamount: $(_self).attr('a-orderamount'),
couponamount: $(_self).attr('a-couponamount'),
payamount: $(_self).attr('a-payamount'),
refundresttime: $(_self).attr('a-refundresttime'),
payamount: $(_self).attr('a-payamount'),
refundamount: $(_self).attr('a-refundamount'),
}
app.setOrderInfo(currentOrder);
$(_self).show();
}
</script>
<script type="text/javascript">
var calendar = new LCalendar();
calendar.init({
'trigger': '#start_date', //标签id
'type': 'date', //date 调出日期选择 datetime 调出日期时间选择 time 调出时间选择 ym 调出年月选择,
'minDate': (new Date().getFullYear() - 3) + '-' + 1 + '-' + 1, //最小日期
'maxDate': (new Date().getFullYear() + 3) + '-' + 12 + '-' + 31 //最大日期
});
var calendar = new LCalendar();
calendar.init({
'trigger': '#end_date', //标签id
'type': 'date', //date 调出日期选择 datetime 调出日期时间选择 time 调出时间选择 ym 调出年月选择,
'minDate': (new Date().getFullYear() - 3) + '-' + 1 + '-' + 1, //最小日期
'maxDate': (new Date().getFullYear() + 3) + '-' + 12 + '-' + 31 //最大日期
});
$(".toDetail").click(function () {
showDetail($(this))
$(".layerTable").show();
});
$(".back").click(function () {
$(".layerTable").hide();
})
</script>
@using Hncore.Infrastructure.Data
@using Hncore.Pass.Vpn.Domain
@using Hncore.Infrastructure.Extension
@using ViewComponents
@model PageData<ProductOrderEntity>
@{
Layout = "_UserLayout";
}
<div id="app">
<form asp-action="myorders" asp-controller="user" method="get">
<div class="chaxun2">
<input type="text" v-model="searchModel.KeyWord" /><button type="button" class="btnOrange" v-on:click="search">查询</button>
</div>
<div class="row riqi">
<div class="col-sm-4 col-xs-4">
日期查询:
</div>
<div class="col-sm-4 col-xs-4">
<input type="text" name="start_date" id="start_date" v-model="searchModel.BTime" placeholder="选择开始日期" readonly="readonly" />
</div>
<div class="col-sm-4 col-xs-4">
<input type="text" name="end_date" id="end_date" v-model="searchModel.ETime" placeholder="选择结束日期" readonly="readonly" />
</div>
</div>
<div class="row shaixuan">
<div class="col-sm-4 col-xs-4">
<select @@change="search" v-model="searchModel.OrderType">
<option value="0">全部类型</option>
<option value="1">新开</option>
<option value="2">续费</option>
<option value="3">批量新开</option>
<option value="4">批量续费</option>
</select>
</div>
<div class="col-sm-4 col-xs-4">
<select @@change="search" v-model="searchModel.ProductId">
<option value="0">全部产品</option>
<option v-for="item in productWithPackage" :value="item.Product.Id">{{item.Product.Name}}</option>
</select>
</div>
<div class="col-sm-4 col-xs-4">
<select @@change="search" v-model="searchModel.PackageId">
<option value="0">全部套餐</option>
<option value="测试卡">测试卡</option>
<option value="天卡">天卡</option>
<option value="周卡">周卡</option>
<option value="月卡">月卡</option>
<option value="月卡(活动)">月卡(活动)</option>
<option value="双月卡(活动)">双月卡(活动)</option>
<option value="季卡">季卡</option>
<option value="季卡(活动)">季卡(活动)</option>
<option value="年卡">年卡</option>
</select>
</div>
</div>
</form>
<table border="0" cellspacing="0" cellpadding="0" class="orderTable">
<tr><th>类型</th><th>产品</th><th>套餐</th><th>详情</th></tr>
@foreach (var item in Model.List)
{
<tr>
<td>@item.OrderType.GetEnumDisplayName()</td>
<td>@item.ProductName</td>
<td>@item.PackageName</td>
<td>
<button type="button" class="btnXq toDetail" onclick="showDetail(this)"
a-date="@item.CreateTime.ToString("yyyy.MM.dd")"
a-orderno="@item.OrderNo"
a-ordertype="@item.OrderType.GetEnumDisplayName()"
a-product="@item.ProductName"
a-package="@item.PackageName"
a-price="@item.DayPrice"
a-dayprice="@item.DayPrice"
a-conncount="@(item.AccountCount*item.ConnectCount)"
a-account="@item.Accounts"
a-orderamount="@item.OrderAmount"
a-refundamount="@item.RefundAmount"
a-payamount="@item.PaymentAmount"
a-refundresttime="@item.RefundRestTime">
详情
</button>
</td>
</tr>
}
</table>
<div class="fenye">
@await Component.InvokeAsync("Pager", new PagerModel() { Total = Model.RowCount, PageIndex = this.Context.Request.GetInt("PageIndex") })
</div>
<!-- 弹窗详情 -->
<div class="layerTable">
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td>日期:</td>
<td>{{currentOrder.date}}</td>
</tr>
<tr>
<td>订单编号:</td>
<td>{{currentOrder.orderno}}</td>
</tr>
<tr>
<td>类型:</td>
<td>{{currentOrder.ordertype}}</td>
</tr>
<tr>
<td>产品:</td>
<td>{{currentOrder.product}}</td>
</tr>
<tr>
<td>套餐:</td>
<td>{{currentOrder.package}}</td>
</tr>
<tr>
<td>总连接数:</td>
<td>{{currentOrder.conncount}}</td>
</tr>
<tr>
<td>账号:</td>
<td>{{currentOrder.account}}</td>
</tr>
<tr>
<td>退款单价:</td>
<td>{{currentOrder.dayprice}}</td>
</tr>
<tr>
<td>退款时长:</td>
<td>{{currentOrder.refundresttime}}</td>
</tr>
<tr>
<td>实付金额:</td>
<td>{{currentOrder.payamount}}</td>
</tr>
<tr>
<td>退款金额:</td>
<td>{{currentOrder.refundamount}}</td>
</tr>
</table>
<div class="back">
<img src="~/m/img/arrowback.png"> 返回列表
</div>
</div>
</div>
<script src="~/m/js/LCalendar.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
var app = new Vue({
el: '#app',
data: {
productWithPackage: [],
packages: [],
searchModel: {
OrderType:0,
ProductId:@this.Context.Request.GetInt("ProductId"),
PackageId:"0",
KeyWord:'',
BTime: '@this.Context.Request.Get("BTime")',
ETime: '@this.Context.Request.Get("ETime")',
},
oneAuthModel: {
ProductId: 0,
Account: "",
Pwd:""
},
mutilAuthModel: {
ProductId: 0,
Account: "",
Pwd: "",
StartNum: 0,
Count:0
},
currentOrder: {
date:"",
orderno:"",
ordertype:"",
product:"",
package:"",
price:"",
conncount:"",
account:"",
orderamount:"",
couponamount:"",
payamount:"",
refundamount:""
}
},
computed: {
},
watch: {
'searchModel.ProductId': { //加引号监听对象里的属性
handler: function (newValue, oldValue) {
for (var i = 0; i < this.productWithPackage.length; i++) {
var item = this.productWithPackage[i];
if (item.Product.Id == newValue) {
this.packages = item.Packages
return;
}
}
},
immediate: true
}
},
created: function () {
this.getProducts();
},
methods: {
getProducts() {
var that = this;
$.ajax({
type: 'GET',
url: '/api/course/v1/product/ProductWithPackage',
success: function (res) {
if (res.Code == 10000) {
that.productWithPackage = res.Data;
}
}
});
},
search() {
var ps = [];
this.searchModel.BTime = $("#BTime").val();
this.searchModel.ETime = $("#ETime").val();
for (var item in this.searchModel) {
var p = item + "=" + this.searchModel[item];
ps.push(p);
}
window.location.href = "?" + ps.join("&");
},
setOrderInfo(info) {
this.currentOrder = info;
}
}
})
function showDetail(_self) {
var currentOrder = {
date: $(_self).attr('a-date'),
orderno: $(_self).attr('a-orderno'),
ordertype: $(_self).attr('a-ordertype'),
product: $(_self).attr('a-product'),
package: $(_self).attr('a-package'),
dayprice: $(_self).attr('a-dayprice'),
conncount: $(_self).attr('a-conncount'),
account: $(_self).attr('a-account'),
orderamount: $(_self).attr('a-orderamount'),
couponamount: $(_self).attr('a-couponamount'),
payamount: $(_self).attr('a-payamount'),
refundresttime: $(_self).attr('a-refundresttime'),
payamount: $(_self).attr('a-payamount'),
refundamount: $(_self).attr('a-refundamount'),
}
app.setOrderInfo(currentOrder);
$(_self).show();
}
</script>
<script type="text/javascript">
var calendar = new LCalendar();
calendar.init({
'trigger': '#start_date', //标签id
'type': 'date', //date 调出日期选择 datetime 调出日期时间选择 time 调出时间选择 ym 调出年月选择,
'minDate': (new Date().getFullYear() - 3) + '-' + 1 + '-' + 1, //最小日期
'maxDate': (new Date().getFullYear() + 3) + '-' + 12 + '-' + 31 //最大日期
});
var calendar = new LCalendar();
calendar.init({
'trigger': '#end_date', //标签id
'type': 'date', //date 调出日期选择 datetime 调出日期时间选择 time 调出时间选择 ym 调出年月选择,
'minDate': (new Date().getFullYear() - 3) + '-' + 1 + '-' + 1, //最小日期
'maxDate': (new Date().getFullYear() + 3) + '-' + 12 + '-' + 31 //最大日期
});
$(".toDetail").click(function () {
showDetail($(this))
$(".layerTable").show();
});
$(".back").click(function () {
$(".layerTable").hide();
})
</script>

View File

@@ -1,149 +1,149 @@
@using Home.Models
@using Hncore.Pass.BaseInfo.Response
@using Hncore.Pass.Vpn.Model
@using Hncore.Infrastructure.Extension
@model List<OriginAccountOnlineModel>
@{
Layout = "_Layout";
var productId = this.Context.Request.GetInt("productId");
}
<style type="text/css">
body {
background: #f5f5f5;
}
.msg {
margin-top: 1.466666rem;
}
.lineBar {
background: #3c5eb5;
width: 5px;
height: 30px;
display: inline-block;
vertical-align: middle;
margin-right: 10px;
}
.accout_tit {
height: 1.2rem;
line-height: 1.2rem;
border-bottom: 1px solid #eee;
font-size: 30px;
}
.model {
display: flex;
flex-direction: row;
width: 100%;
height: 0.933333rem;
line-height: 0.933333rem;
background: #fff;
flex-wrap: wrap;
height: auto;
}
.model .item {
border-bottom: 1px solid #f5f5f5;
height: 0.933333rem;
line-height: 0.933333rem;
}
.model .item:nth-child(odd) {
width: 30%;
text-align: right;
}
.model .item:nth-child(even) {
width: 70%;
text-align: center;
color: #ccc;
}
.red {
color: red;
}
.inputBox {
width: 330px;
}
</style>
<vc:redirecct-login></vc:redirecct-login>
<div class="container msg">
@if (Model.Count == 0)
{
<div class="red" style="text-align:center">暂无数据</div>
}
@foreach (var item in Model)
{
<div class="accout_tit"><span class="lineBar"></span>#@(Model.IndexOf(item)+1) <button class="btnXq" onclick="killout(@item.Id)">强制离线</button> </div>
<div class="model">
<div class="item">
账号:
</div>
<div class="item">
@item.Account
</div>
<div class="item">
登录时间:
</div>
<div class="item">
@item.LoginTime
</div>
<div class="item">
在线时间:
</div>
<div class="item">
@item.OnlineTime
</div>
<div class="item">
服务器Ip
</div>
<div class="item">
@item.ServerIP
</div>
<div class="item">
登录ip
</div>
<div class="item">
@item.LoginIP
</div>
<div class="item">
上/下行:
</div>
<div class="item">
@item.UpStream / @item.UpStream
</div>
</div>
}
</div>
<script>
/** 表单序列化成json字符串的方法 */
function form2JsonString(formId) {
var paramArray = $('#' + formId).serializeArray();
var jsonObj = {};
$(paramArray).each(function () {
jsonObj[this.name] = this.value;
});
console.log(jsonObj);
return JSON.stringify(jsonObj);
}
function killout(productId,id) {
var that = this;
$.ajax({
type: 'GET',
url: '/api/course/v1/productaccount/KillOut?productId=@productId&id=' + id,
success: function (res) {
if (res.Code == 10000) {
alert("操作成功");
window.location.reload();
}
}
});
}
</script>
@using Home.Models
@using Hncore.Pass.BaseInfo.Response
@using Hncore.Pass.Vpn.Model
@using Hncore.Infrastructure.Extension
@model List<OriginAccountOnlineModel>
@{
Layout = "_Layout";
var productId = this.Context.Request.GetInt("productId");
}
<style type="text/css">
body {
background: #f5f5f5;
}
.msg {
margin-top: 1.466666rem;
}
.lineBar {
background: #3c5eb5;
width: 5px;
height: 30px;
display: inline-block;
vertical-align: middle;
margin-right: 10px;
}
.accout_tit {
height: 1.2rem;
line-height: 1.2rem;
border-bottom: 1px solid #eee;
font-size: 30px;
}
.model {
display: flex;
flex-direction: row;
width: 100%;
height: 0.933333rem;
line-height: 0.933333rem;
background: #fff;
flex-wrap: wrap;
height: auto;
}
.model .item {
border-bottom: 1px solid #f5f5f5;
height: 0.933333rem;
line-height: 0.933333rem;
}
.model .item:nth-child(odd) {
width: 30%;
text-align: right;
}
.model .item:nth-child(even) {
width: 70%;
text-align: center;
color: #ccc;
}
.red {
color: red;
}
.inputBox {
width: 330px;
}
</style>
<vc:redirecct-login></vc:redirecct-login>
<div class="container msg">
@if (Model.Count == 0)
{
<div class="red" style="text-align:center">暂无数据</div>
}
@foreach (var item in Model)
{
<div class="accout_tit"><span class="lineBar"></span>#@(Model.IndexOf(item)+1) <button class="btnXq" onclick="killout(@item.Id)">强制离线</button> </div>
<div class="model">
<div class="item">
账号:
</div>
<div class="item">
@item.Account
</div>
<div class="item">
登录时间:
</div>
<div class="item">
@item.LoginTime
</div>
<div class="item">
在线时间:
</div>
<div class="item">
@item.OnlineTime
</div>
<div class="item">
服务器Ip
</div>
<div class="item">
@item.ServerIP
</div>
<div class="item">
登录ip
</div>
<div class="item">
@item.LoginIP
</div>
<div class="item">
上/下行:
</div>
<div class="item">
@item.UpStream / @item.UpStream
</div>
</div>
}
</div>
<script>
/** 表单序列化成json字符串的方法 */
function form2JsonString(formId) {
var paramArray = $('#' + formId).serializeArray();
var jsonObj = {};
$(paramArray).each(function () {
jsonObj[this.name] = this.value;
});
console.log(jsonObj);
return JSON.stringify(jsonObj);
}
function killout(productId,id) {
var that = this;
$.ajax({
type: 'GET',
url: '/api/course/v1/productaccount/KillOut?productId=@productId&id=' + id,
success: function (res) {
if (res.Code == 10000) {
alert("操作成功");
window.location.reload();
}
}
});
}
</script>

View File

@@ -1,102 +1,102 @@
@using Home.Models
@using Microsoft.Extensions.Configuration
@using Hncore.Infrastructure.Extension
@inject IConfiguration m_Configuration
@model UserHomeModel
@{
Layout = "_Layout";
var BaseUrl = m_Configuration["Service_BaseUrl"];
var WxAppId = m_Configuration["WxApps:AppID"];
}
<div class="loginArea">
<div class="loginTop">
<p> <img src="~/m/img/logoBlue.png"></p>
<p class="logoTit">用户注册</p>
<p><span class="xinyonghu">新用户免费赠送3次测试机会</span></p>
</div>
<div class="loginCenter">
<p><img src="~/m/img/phone.png"><input type="text" name="" id="username" value="" placeholder="* 手机号" /></p>
<p><img src="~/m/img/password.png"><input type="password" name="" id="password" value="" placeholder="* 密码" /></p>
<p class="yzm"><img src="~/m/img/yanzhengma.png"><input type="text" name="" id="yanzhengma" value="" placeholder="* 验证码" /><button type="button" class="btnBlue" onclick="getCode(this)">获取验证码</button></p>
<p><img src="~/m/img/phone.png"><input type="text" name="" id="wxhao" value="" placeholder="微信号(选填)" /></p>
<p><img src="~/m/img/phone.png"><input type="text" name="" id="wxhao" value="" placeholder="QQ号(选填)" /></p>
</div>
<p class="xieyi"><input type="checkbox" name="" id="xieyi" checked value="" />我同意<span><a href="/LineList/xieyi" target="_blank">《聚IP JUIP.COM用户注册协议》</a></span></p>
<p><button type="button" class="btnLogin" onclick="reg()">注册</button></p>
<p class="tixing">*手机号不是IP账号请登录后开通IP账号*</p>
<p class="bianjie">已有账号?<a href="/User/WebLogin">立即登录</a></p>
</div>
<script>
var redirect = "@ViewBag.redirect" || "/user/index";
var time = 60;
function getCode(_self) {
var name = $("#username").val()
if(name == '') { alert('手机号不能为空'); return; }
if (!timing(_self)) return;
var url = '/user/SendPhoneCodevefy?key=User_Code&phone=' + name;
$.ajax({
type: 'POST',
url: url,
contentType: "application/json",
success: function (res) {
alert(res.Message)
}
});
}
function timing(_self) {
if (time != 60) return false
var timerHandler = setInterval(function () {
time--;
if (time <= 1) {
clearInterval(timerHandler);
time = 60;
$(_self).text("获取验证码")
} else {
$(_self).text(time + "s");
}
}, 1000)
return true;
}
function reg() {
if(!$("input[type='checkbox']").is(':checked')){
alert('请认真阅读用户注册协议后勾选 我同意 方可注册!');
return;
}
var name = $("#username").val()
var pwd = $("#password").val()
var code = $("#yanzhengma").val()
if (name == '') { alert('手机号不能为空'); return; }
if (code == '') { alert('验证码不能为空'); return; }
var wx = $("#wxhao").val()
var qq = $("#qqhao").val()
var data = { Phone: name, Pwd: pwd, Code: code, Wx: wx, QQ: qq };
$.ajax({
type: 'POST',
url: '/user/Regist',
contentType: "application/json",
data: JSON.stringify(data),
success: function (res) {
console.log(res);
if (res.Code == 10000) {
loginSuccess(res.Data.User)
} else {
alert(res.Message)
}
}
});
}
function loginSuccess(user) {
if (!isWeiXin()) {
window.location.href = redirect;
return;
}
if (!user.OpenId) {
window.location.href = "@(BaseUrl)User/MP_GetUserInfo?appid=@WxAppId&callbakUrl="+redirect+"&state="+user.Id;
}
}
@using Home.Models
@using Microsoft.Extensions.Configuration
@using Hncore.Infrastructure.Extension
@inject IConfiguration m_Configuration
@model UserHomeModel
@{
Layout = "_Layout";
var BaseUrl = m_Configuration["Service_BaseUrl"];
var WxAppId = m_Configuration["WxApps:AppID"];
}
<div class="loginArea">
<div class="loginTop">
<p> <img src="~/m/img/logoBlue.png"></p>
<p class="logoTit">用户注册</p>
<p><span class="xinyonghu">新用户免费赠送3次测试机会</span></p>
</div>
<div class="loginCenter">
<p><img src="~/m/img/phone.png"><input type="text" name="" id="username" value="" placeholder="* 手机号" /></p>
<p><img src="~/m/img/password.png"><input type="password" name="" id="password" value="" placeholder="* 密码" /></p>
<p class="yzm"><img src="~/m/img/yanzhengma.png"><input type="text" name="" id="yanzhengma" value="" placeholder="* 验证码" /><button type="button" class="btnBlue" onclick="getCode(this)">获取验证码</button></p>
<p><img src="~/m/img/phone.png"><input type="text" name="" id="wxhao" value="" placeholder="微信号(选填)" /></p>
<p><img src="~/m/img/phone.png"><input type="text" name="" id="wxhao" value="" placeholder="QQ号(选填)" /></p>
</div>
<p class="xieyi"><input type="checkbox" name="" id="xieyi" checked value="" />我同意<span><a href="/LineList/xieyi" target="_blank">《聚IP JUIP.COM用户注册协议》</a></span></p>
<p><button type="button" class="btnLogin" onclick="reg()">注册</button></p>
<p class="tixing">*手机号不是IP账号请登录后开通IP账号*</p>
<p class="bianjie">已有账号?<a href="/User/WebLogin">立即登录</a></p>
</div>
<script>
var redirect = "@ViewBag.redirect" || "/user/index";
var time = 60;
function getCode(_self) {
var name = $("#username").val()
if(name == '') { alert('手机号不能为空'); return; }
if (!timing(_self)) return;
var url = '/user/SendPhoneCodevefy?key=User_Code&phone=' + name;
$.ajax({
type: 'POST',
url: url,
contentType: "application/json",
success: function (res) {
alert(res.Message)
}
});
}
function timing(_self) {
if (time != 60) return false
var timerHandler = setInterval(function () {
time--;
if (time <= 1) {
clearInterval(timerHandler);
time = 60;
$(_self).text("获取验证码")
} else {
$(_self).text(time + "s");
}
}, 1000)
return true;
}
function reg() {
if(!$("input[type='checkbox']").is(':checked')){
alert('请认真阅读用户注册协议后勾选 我同意 方可注册!');
return;
}
var name = $("#username").val()
var pwd = $("#password").val()
var code = $("#yanzhengma").val()
if (name == '') { alert('手机号不能为空'); return; }
if (code == '') { alert('验证码不能为空'); return; }
var wx = $("#wxhao").val()
var qq = $("#qqhao").val()
var data = { Phone: name, Pwd: pwd, Code: code, Wx: wx, QQ: qq };
$.ajax({
type: 'POST',
url: '/user/Regist',
contentType: "application/json",
data: JSON.stringify(data),
success: function (res) {
console.log(res);
if (res.Code == 10000) {
loginSuccess(res.Data.User)
} else {
alert(res.Message)
}
}
});
}
function loginSuccess(user) {
if (!isWeiXin()) {
window.location.href = redirect;
return;
}
if (!user.OpenId) {
window.location.href = "@(BaseUrl)User/MP_GetUserInfo?appid=@WxAppId&callbakUrl="+redirect+"&state="+user.Id;
}
}
</script>

View File

@@ -1,4 +1,4 @@
@using Home
@using Home.Models
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@addTagHelper *, Host
@using Home
@using Home.Models
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@addTagHelper *, Host

View File

@@ -1,3 +1,3 @@
@{
Layout = "_Layout";
}
@{
Layout = "_Layout";
}