├── README.md ├── src └── WechatBribery │ ├── Views │ ├── _ViewStart.cshtml │ ├── Shared │ │ ├── Prompt.cshtml │ │ ├── Exceeded.cshtml │ │ └── Bribery.cshtml │ ├── _ViewImports.cshtml │ ├── Account │ │ ├── Charge.cshtml │ │ ├── ResetPwd.cshtml │ │ ├── Password.cshtml │ │ ├── Index.cshtml │ │ ├── Profile.cshtml │ │ ├── Create.cshtml │ │ └── Login.cshtml │ ├── Home │ │ ├── Index.cshtml │ │ ├── History.cshtml │ │ ├── Deliver.cshtml │ │ └── Activity.cshtml │ └── WeChat │ │ ├── History.cshtml │ │ └── Bribery.cshtml │ ├── wwwroot │ ├── images │ │ ├── blue.png │ │ ├── cry.jpg │ │ ├── main.png │ │ ├── top.jpg │ │ ├── avatar.png │ │ ├── bottom.jpg │ │ ├── bottom.png │ │ ├── drawn.png │ │ ├── icons.png │ │ ├── person.png │ │ ├── photo1.png │ │ ├── photo2.png │ │ ├── photo3.jpg │ │ ├── photo4.jpg │ │ ├── avatar04.png │ │ ├── avatar2.png │ │ ├── avatar3.png │ │ ├── avatar5.png │ │ ├── blue@2x.png │ │ ├── boxed-bg.jpg │ │ ├── boxed-bg.png │ │ ├── close-1.png │ │ ├── close-2.png │ │ ├── drawn-2.png │ │ ├── pending.png │ │ ├── undrawn.png │ │ ├── credit │ │ │ ├── visa.png │ │ │ ├── cirrus.png │ │ │ ├── mestro.png │ │ │ ├── paypal.png │ │ │ ├── paypal2.png │ │ │ ├── mastercard.png │ │ │ └── american-express.png │ │ ├── default-50x50.gif │ │ ├── user1-128x128.jpg │ │ ├── user2-160x160.jpg │ │ ├── user3-128x128.jpg │ │ ├── user4-128x128.jpg │ │ ├── user5-128x128.jpg │ │ ├── user6-128x128.jpg │ │ ├── user7-128x128.jpg │ │ ├── user8-128x128.jpg │ │ └── system │ │ │ └── HelpfurExample.jpg │ ├── fonts │ │ ├── FontAwesome.otf │ │ ├── fontawesome-webfont.eot │ │ ├── fontawesome-webfont.ttf │ │ ├── fontawesome-webfont.woff │ │ ├── fontawesome-webfont.woff2 │ │ ├── glyphicons-halflings-regular.eot │ │ ├── glyphicons-halflings-regular.ttf │ │ ├── glyphicons-halflings-regular.woff │ │ └── glyphicons-halflings-regular.woff2 │ ├── sounds │ │ └── shake_sound.mp3 │ ├── styles │ │ ├── mobile.css │ │ ├── bootstrapValidator.min.css │ │ ├── jquery-jvectormap-1.2.2.css │ │ ├── style.css │ │ ├── blue.css │ │ ├── shaked.css │ │ ├── skins │ │ │ ├── skin-red.min.css │ │ │ ├── skin-green.min.css │ │ │ ├── skin-purple.min.css │ │ │ ├── skin-yellow.min.css │ │ │ ├── skin-blue.min.css │ │ │ ├── skin-black.min.css │ │ │ ├── skin-red-light.min.css │ │ │ ├── skin-green-light.min.css │ │ │ ├── skin-purple-light.min.css │ │ │ ├── skin-yellow-light.min.css │ │ │ ├── skin-blue-light.min.css │ │ │ ├── skin-black-light.min.css │ │ │ ├── skin-red.css │ │ │ ├── skin-green.css │ │ │ ├── skin-purple.css │ │ │ ├── skin-yellow.css │ │ │ ├── skin-blue.css │ │ │ ├── skin-black.css │ │ │ ├── skin-red-light.css │ │ │ ├── skin-green-light.css │ │ │ ├── skin-purple-light.css │ │ │ ├── skin-yellow-light.css │ │ │ ├── skin-blue-light.css │ │ │ └── skin-black-light.css │ │ ├── bootstrap-colorpicker.min.css │ │ ├── bootstrap-timepicker.css │ │ └── bootstrap-colorpicker.css │ └── scripts │ │ ├── html5shiv.min.js │ │ ├── pages │ │ ├── dashboard2.js │ │ └── dashboard.js │ │ ├── respond.min.js │ │ ├── icheck.min.js │ │ └── jquery.slimscroll.min.js │ ├── config.json │ ├── Hubs │ └── BriberyHub.cs │ ├── Controllers │ ├── BaseController.cs │ └── WeChatApiController.cs │ ├── Models │ ├── PayLog.cs │ ├── RuleViewModel.cs │ ├── OpenId.cs │ ├── Activity.cs │ ├── Bribery.cs │ ├── User.cs │ ├── SampleData.cs │ └── BriberyContext.cs │ ├── web.config │ ├── Program.cs │ ├── Properties │ ├── launchSettings.json │ └── PublishProfiles │ │ └── Publish-publish.ps1 │ ├── WechatBribery.xproj │ ├── project.json │ ├── Startup.cs │ └── Common │ └── Wxpay.cs ├── global.json ├── NuGet.config ├── LICENSE ├── WechatBribery.sln └── .gitignore /README.md: -------------------------------------------------------------------------------- 1 | # WechatBribery -------------------------------------------------------------------------------- /src/WechatBribery/Views/_ViewStart.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | Layout = "_Layout"; 3 | } 4 | -------------------------------------------------------------------------------- /global.json: -------------------------------------------------------------------------------- 1 | { 2 | "projects": [ "src", "test" ], 3 | "sdk": { 4 | "version": "1.0.0-preview2-003121" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/images/blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yukozh/WechatBribery/HEAD/src/WechatBribery/wwwroot/images/blue.png -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/images/cry.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yukozh/WechatBribery/HEAD/src/WechatBribery/wwwroot/images/cry.jpg -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/images/main.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yukozh/WechatBribery/HEAD/src/WechatBribery/wwwroot/images/main.png -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/images/top.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yukozh/WechatBribery/HEAD/src/WechatBribery/wwwroot/images/top.jpg -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/images/avatar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yukozh/WechatBribery/HEAD/src/WechatBribery/wwwroot/images/avatar.png -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/images/bottom.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yukozh/WechatBribery/HEAD/src/WechatBribery/wwwroot/images/bottom.jpg -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/images/bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yukozh/WechatBribery/HEAD/src/WechatBribery/wwwroot/images/bottom.png -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/images/drawn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yukozh/WechatBribery/HEAD/src/WechatBribery/wwwroot/images/drawn.png -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/images/icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yukozh/WechatBribery/HEAD/src/WechatBribery/wwwroot/images/icons.png -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/images/person.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yukozh/WechatBribery/HEAD/src/WechatBribery/wwwroot/images/person.png -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/images/photo1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yukozh/WechatBribery/HEAD/src/WechatBribery/wwwroot/images/photo1.png -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/images/photo2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yukozh/WechatBribery/HEAD/src/WechatBribery/wwwroot/images/photo2.png -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/images/photo3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yukozh/WechatBribery/HEAD/src/WechatBribery/wwwroot/images/photo3.jpg -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/images/photo4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yukozh/WechatBribery/HEAD/src/WechatBribery/wwwroot/images/photo4.jpg -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/images/avatar04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yukozh/WechatBribery/HEAD/src/WechatBribery/wwwroot/images/avatar04.png -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/images/avatar2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yukozh/WechatBribery/HEAD/src/WechatBribery/wwwroot/images/avatar2.png -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/images/avatar3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yukozh/WechatBribery/HEAD/src/WechatBribery/wwwroot/images/avatar3.png -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/images/avatar5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yukozh/WechatBribery/HEAD/src/WechatBribery/wwwroot/images/avatar5.png -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/images/blue@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yukozh/WechatBribery/HEAD/src/WechatBribery/wwwroot/images/blue@2x.png -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/images/boxed-bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yukozh/WechatBribery/HEAD/src/WechatBribery/wwwroot/images/boxed-bg.jpg -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/images/boxed-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yukozh/WechatBribery/HEAD/src/WechatBribery/wwwroot/images/boxed-bg.png -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/images/close-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yukozh/WechatBribery/HEAD/src/WechatBribery/wwwroot/images/close-1.png -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/images/close-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yukozh/WechatBribery/HEAD/src/WechatBribery/wwwroot/images/close-2.png -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/images/drawn-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yukozh/WechatBribery/HEAD/src/WechatBribery/wwwroot/images/drawn-2.png -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/images/pending.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yukozh/WechatBribery/HEAD/src/WechatBribery/wwwroot/images/pending.png -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/images/undrawn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yukozh/WechatBribery/HEAD/src/WechatBribery/wwwroot/images/undrawn.png -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yukozh/WechatBribery/HEAD/src/WechatBribery/wwwroot/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/images/credit/visa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yukozh/WechatBribery/HEAD/src/WechatBribery/wwwroot/images/credit/visa.png -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/sounds/shake_sound.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yukozh/WechatBribery/HEAD/src/WechatBribery/wwwroot/sounds/shake_sound.mp3 -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/images/credit/cirrus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yukozh/WechatBribery/HEAD/src/WechatBribery/wwwroot/images/credit/cirrus.png -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/images/credit/mestro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yukozh/WechatBribery/HEAD/src/WechatBribery/wwwroot/images/credit/mestro.png -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/images/credit/paypal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yukozh/WechatBribery/HEAD/src/WechatBribery/wwwroot/images/credit/paypal.png -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/images/credit/paypal2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yukozh/WechatBribery/HEAD/src/WechatBribery/wwwroot/images/credit/paypal2.png -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/images/default-50x50.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yukozh/WechatBribery/HEAD/src/WechatBribery/wwwroot/images/default-50x50.gif -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/images/user1-128x128.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yukozh/WechatBribery/HEAD/src/WechatBribery/wwwroot/images/user1-128x128.jpg -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/images/user2-160x160.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yukozh/WechatBribery/HEAD/src/WechatBribery/wwwroot/images/user2-160x160.jpg -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/images/user3-128x128.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yukozh/WechatBribery/HEAD/src/WechatBribery/wwwroot/images/user3-128x128.jpg -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/images/user4-128x128.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yukozh/WechatBribery/HEAD/src/WechatBribery/wwwroot/images/user4-128x128.jpg -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/images/user5-128x128.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yukozh/WechatBribery/HEAD/src/WechatBribery/wwwroot/images/user5-128x128.jpg -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/images/user6-128x128.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yukozh/WechatBribery/HEAD/src/WechatBribery/wwwroot/images/user6-128x128.jpg -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/images/user7-128x128.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yukozh/WechatBribery/HEAD/src/WechatBribery/wwwroot/images/user7-128x128.jpg -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/images/user8-128x128.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yukozh/WechatBribery/HEAD/src/WechatBribery/wwwroot/images/user8-128x128.jpg -------------------------------------------------------------------------------- /src/WechatBribery/Views/Shared/Prompt.cshtml: -------------------------------------------------------------------------------- 1 | @model Prompt 2 | @{ 3 | ViewBag.Title = Model.Title; 4 | } 5 | 6 |

@ViewBag.Title

7 |

@Model.Details

-------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yukozh/WechatBribery/HEAD/src/WechatBribery/wwwroot/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yukozh/WechatBribery/HEAD/src/WechatBribery/wwwroot/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yukozh/WechatBribery/HEAD/src/WechatBribery/wwwroot/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/images/credit/mastercard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yukozh/WechatBribery/HEAD/src/WechatBribery/wwwroot/images/credit/mastercard.png -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yukozh/WechatBribery/HEAD/src/WechatBribery/wwwroot/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/images/system/HelpfurExample.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yukozh/WechatBribery/HEAD/src/WechatBribery/wwwroot/images/system/HelpfurExample.jpg -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/images/credit/american-express.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yukozh/WechatBribery/HEAD/src/WechatBribery/wwwroot/images/credit/american-express.png -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yukozh/WechatBribery/HEAD/src/WechatBribery/wwwroot/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yukozh/WechatBribery/HEAD/src/WechatBribery/wwwroot/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yukozh/WechatBribery/HEAD/src/WechatBribery/wwwroot/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yukozh/WechatBribery/HEAD/src/WechatBribery/wwwroot/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /src/WechatBribery/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "WeChat": { 3 | "AppId": "", 4 | "Secret": "", 5 | "MchId": "", 6 | "SignKey": "", 7 | "TransferDescription": "红包" 8 | }, 9 | "Ip": "" 10 | } 11 | -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/styles/mobile.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 0; 3 | background-image: url(../images/main.png); 4 | background-color: #fefae1; 5 | background-repeat: no-repeat; 6 | background-position: top; 7 | background-size: 100% auto; 8 | height: 100%; 9 | } -------------------------------------------------------------------------------- /src/WechatBribery/Views/_ViewImports.cshtml: -------------------------------------------------------------------------------- 1 | @using Microsoft.AspNetCore.Html 2 | @using Microsoft.AspNetCore.Http 3 | @using WechatBribery.Models 4 | @using System.Security.Claims 5 | @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers 6 | @inject Microsoft.AspNetCore.Identity.SmartUser User -------------------------------------------------------------------------------- /NuGet.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/WechatBribery/Hubs/BriberyHub.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.SignalR; 2 | 3 | namespace WechatBribery.Hubs 4 | { 5 | public class BriberyHub : Hub 6 | { 7 | public void Join(string name) 8 | { 9 | Groups.Add(Context.ConnectionId, name); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/WechatBribery/Controllers/BaseController.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Mvc; 2 | using Microsoft.AspNetCore.Identity.EntityFrameworkCore; 3 | using WechatBribery.Models; 4 | 5 | namespace WechatBribery.Controllers 6 | { 7 | public class BaseController : BaseController 8 | { 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/WechatBribery/Models/PayLog.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.ComponentModel.DataAnnotations.Schema; 3 | 4 | namespace WechatBribery.Models 5 | { 6 | public class PayLog 7 | { 8 | public Guid Id { get; set; } 9 | 10 | [ForeignKey("User")] 11 | public string UserId { get; set; } 12 | 13 | public virtual User User { get; set; } 14 | 15 | public double Price { get; set; } 16 | 17 | public double Current { get; set; } 18 | 19 | public DateTime Time { get; set; } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/WechatBribery/Views/Account/Charge.cshtml: -------------------------------------------------------------------------------- 1 | @model User 2 | @{ 3 | ViewBag.Title = "商户充值 - " + Model.UserName; 4 | } 5 | 6 |

@ViewBag.Title

7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 |
充值金额(元)
15 | 16 |
-------------------------------------------------------------------------------- /src/WechatBribery/Views/Account/ResetPwd.cshtml: -------------------------------------------------------------------------------- 1 | @model User 2 | @{ 3 | ViewBag.Title = "重置密码 - " + Model.UserName; 4 | } 5 | 6 |

@ViewBag.Title

7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 |
新密码
15 | 16 |
-------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/styles/bootstrapValidator.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * BootstrapValidator (http://bootstrapvalidator.com) 3 | * The best jQuery plugin to validate form fields. Designed to use with Bootstrap 3 4 | * 5 | * @version v0.5.1-dev, built on 2014-07-23 6:05:15 AM 6 | * @author https://twitter.com/nghuuphuoc 7 | * @copyright (c) 2013 - 2014 Nguyen Huu Phuoc 8 | * @license MIT 9 | */ 10 | 11 | .bv-form .help-block{margin-bottom:0}.bv-form .tooltip-inner{text-align:left}.nav-tabs li.bv-tab-success>a{color:#3c763d}.nav-tabs li.bv-tab-error>a{color:#a94442} -------------------------------------------------------------------------------- /src/WechatBribery/Models/RuleViewModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | 6 | namespace WechatBribery.Models 7 | { 8 | public class RuleViewModel 9 | { 10 | /// 11 | /// 以分为单位 12 | /// 13 | public int From { get; set; } 14 | 15 | /// 16 | /// 以分为单位 17 | /// 18 | public int To { get; set; } 19 | 20 | public double Ratio { get; set; } 21 | 22 | public long Count { get; set; } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/WechatBribery/web.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /src/WechatBribery/Models/OpenId.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.ComponentModel.DataAnnotations; 3 | 4 | namespace WechatBribery.Models 5 | { 6 | public class OpenIdViewModel 7 | { 8 | [MaxLength(128)] 9 | public string Id { get; set; } 10 | 11 | public string AccessToken { get; set; } 12 | 13 | public string RefreshToken { get; set; } 14 | 15 | public DateTime AccessTokenExpire { get; set; } 16 | 17 | public DateTime RefreshTokenExpire { get; set; } 18 | 19 | public string NickName { get; set; } 20 | 21 | public string AvatarUrl { get; set; } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/WechatBribery/Views/Shared/Exceeded.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | Layout = null; 3 | } 4 | 5 | 6 | 7 | 8 | 摇一摇抽红包 9 | 10 | 11 | 12 | 13 | 14 |

15 |

今天您已经抢到@(WechatBribery.Startup.Config["MaxPerDay"])个红包了,把好运留给别人吧!

16 | 17 | -------------------------------------------------------------------------------- /src/WechatBribery/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using System.Linq; 5 | using System.Threading.Tasks; 6 | using Microsoft.AspNetCore.Hosting; 7 | 8 | namespace WechatBribery 9 | { 10 | public class Program 11 | { 12 | public static void Main(string[] args) 13 | { 14 | var host = new WebHostBuilder() 15 | .UseKestrel() 16 | .UseUrls("http://*:80") 17 | .UseContentRoot(Directory.GetCurrentDirectory()) 18 | .UseIISIntegration() 19 | .UseStartup() 20 | .Build(); 21 | 22 | host.Run(); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/WechatBribery/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "iisSettings": { 3 | "windowsAuthentication": false, 4 | "anonymousAuthentication": true, 5 | "iisExpress": { 6 | "applicationUrl": "http://localhost:43677/", 7 | "sslPort": 0 8 | } 9 | }, 10 | "profiles": { 11 | "IIS Express": { 12 | "commandName": "IISExpress", 13 | "launchBrowser": true, 14 | "environmentVariables": { 15 | "ASPNETCORE_ENVIRONMENT": "Development" 16 | } 17 | }, 18 | "WechatBribery": { 19 | "commandName": "Project", 20 | "launchBrowser": true, 21 | "launchUrl": "http://localhost", 22 | "environmentVariables": { 23 | "ASPNETCORE_ENVIRONMENT": "Development" 24 | } 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /src/WechatBribery/Models/Activity.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.ComponentModel.DataAnnotations.Schema; 3 | 4 | namespace WechatBribery.Models 5 | { 6 | public class Activity 7 | { 8 | public Guid Id { get; set; } 9 | 10 | public string Title { get; set; } 11 | 12 | public string RuleJson { get; set; } 13 | 14 | public DateTime Begin { get; set; } 15 | 16 | public DateTime? End { get; set; } 17 | 18 | public double Ratio { get; set; } 19 | 20 | public long BriberiesCount { get; set; } 21 | 22 | public long Price { get; set; } 23 | 24 | public long Attend { get; set; } 25 | 26 | [ForeignKey("Owner")] 27 | public string OwnerId { get; set; } 28 | 29 | public virtual User Owner { get; set; } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/WechatBribery/Models/Bribery.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | 6 | namespace WechatBribery.Models 7 | { 8 | public class Bribery 9 | { 10 | public Guid Id { get; set; } 11 | 12 | public Guid ActivityId { get; set; } 13 | 14 | public virtual Activity Activity { get; set; } 15 | 16 | /// 17 | /// 领取时间 18 | /// 19 | public DateTime? ReceivedTime { get; set; } 20 | 21 | /// 22 | /// 以分为单位 23 | /// 24 | public long Price { get; set; } 25 | 26 | public string OpenId { get; set; } 27 | 28 | public string AvatarUrl { get; set; } 29 | 30 | public string NickName { get; set; } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/WechatBribery/Models/User.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.ComponentModel.DataAnnotations; 3 | using System.ComponentModel.DataAnnotations.Schema; 4 | using Microsoft.AspNetCore.Identity.EntityFrameworkCore; 5 | using Pomelo.AspNetCore.Extensions.BlobStorage.Models; 6 | 7 | namespace WechatBribery.Models 8 | { 9 | public class User : IdentityUser 10 | { 11 | public double Balance { get; set; } 12 | 13 | [ForeignKey("TopPicture")] 14 | public Guid? TopPictureId { get; set; } 15 | 16 | public virtual Blob TopPicture { get; set; } 17 | 18 | [ForeignKey("BottomPicture")] 19 | public Guid? BottomPictureId { get; set; } 20 | 21 | public virtual Blob BottomPicture { get; set; } 22 | 23 | [MaxLength(256)] 24 | public string ActivityURL { get; set; } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/WechatBribery/Views/Account/Password.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | ViewBag.Title = "修改密码"; 3 | } 4 | 5 |

@ViewBag.Title

6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 |
旧密码
新密码
密码重复
22 | 23 |
-------------------------------------------------------------------------------- /src/WechatBribery/Properties/PublishProfiles/Publish-publish.ps1: -------------------------------------------------------------------------------- 1 | [cmdletbinding(SupportsShouldProcess=$true)] 2 | param($publishProperties=@{}, $packOutput, $pubProfilePath) 3 | 4 | # to learn more about this file visit https://go.microsoft.com/fwlink/?LinkId=524327 5 | 6 | try{ 7 | if ($publishProperties['ProjectGuid'] -eq $null){ 8 | $publishProperties['ProjectGuid'] = '4c144181-5d5b-4722-bfbe-30633e19b287' 9 | } 10 | 11 | $publishModulePath = Join-Path (Split-Path $MyInvocation.MyCommand.Path) 'publish-module.psm1' 12 | Import-Module $publishModulePath -DisableNameChecking -Force 13 | 14 | # call Publish-AspNet to perform the publish operation 15 | Publish-AspNet -publishProperties $publishProperties -packOutput $packOutput -pubProfilePath $pubProfilePath 16 | } 17 | catch{ 18 | "An error occurred during publish.`n{0}" -f $_.Exception.Message | Write-Error 19 | } -------------------------------------------------------------------------------- /src/WechatBribery/Views/Home/Index.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | ViewBag.Title = "后台首页"; 3 | } 4 | 5 |

@ViewBag.Title

6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 |
运行时.NET Core CLR 1.0.0
数据库MySQL 5.6
操作系统@System.Platform.OS.ToString()
微信链接@Context.Request.Scheme://@Context.Request.Host/WeChat/Index/@User.Current.UserName
我的余额¥@((User.Current.Balance).ToString("0.00"))
-------------------------------------------------------------------------------- /src/WechatBribery/Views/Account/Index.cshtml: -------------------------------------------------------------------------------- 1 | @model IEnumerable 2 | @{ 3 | ViewBag.Title = "用户列表"; 4 | } 5 |

@ViewBag.Title

6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | @foreach(var x in Model) 17 | { 18 | 19 | 20 | 21 | 22 | 26 | 27 | } 28 | 29 |
用户名角色余额操作
@x.UserName@((await User.Manager.GetRolesAsync(x)).First() == "Root" ? "管理员" : "普通商户")¥@(x.Balance.ToString("0.00")) 23 | 充值 24 | 修改密码 25 |
-------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/styles/jquery-jvectormap-1.2.2.css: -------------------------------------------------------------------------------- 1 | .jvectormap-label { 2 | position: absolute; 3 | display: none; 4 | border: solid 1px #CDCDCD; 5 | -webkit-border-radius: 3px; 6 | -moz-border-radius: 3px; 7 | border-radius: 3px; 8 | background: #292929; 9 | color: white; 10 | font-size: 10px!important; 11 | padding: 3px; 12 | z-index: 9999; 13 | } 14 | 15 | .jvectormap-zoomin, .jvectormap-zoomout { 16 | position: absolute; 17 | top: 100%; 18 | margin-top: -25px; 19 | -webkit-border-radius: 2px; 20 | -moz-border-radius: 2px; 21 | border-radius: 2px; 22 | background: #d2d6de;//rgba(0,0,0,0.4); 23 | padding: 5px; 24 | color: #444; 25 | cursor: pointer; 26 | line-height: 10px; 27 | text-align: center; 28 | font-weight: bold; 29 | box-shadow: 0 1px 2px rgba(0,0,0,0.2); 30 | } 31 | 32 | .jvectormap-zoomin { 33 | left: 100%; 34 | margin-left: -50px; 35 | } 36 | 37 | .jvectormap-zoomout { 38 | left: 100%; 39 | margin-left: -30px; 40 | } -------------------------------------------------------------------------------- /src/WechatBribery/Models/SampleData.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Threading.Tasks; 3 | using Microsoft.AspNetCore.Identity; 4 | using Microsoft.AspNetCore.Identity.EntityFrameworkCore; 5 | using Microsoft.Extensions.DependencyInjection; 6 | 7 | namespace WechatBribery.Models 8 | { 9 | public static class SampleData 10 | { 11 | public static async Task InitDB(IServiceProvider services) 12 | { 13 | var DB = services.GetRequiredService(); 14 | var UserManager = services.GetRequiredService>(); 15 | var RoleManager = services.GetRequiredService>(); 16 | DB.Database.EnsureCreated(); 17 | await RoleManager.CreateAsync(new IdentityRole("Root")); 18 | await RoleManager.CreateAsync(new IdentityRole("Member")); 19 | var user = new User { UserName = "admin", Balance = 10000.00 }; 20 | await UserManager.CreateAsync(user, "123456"); 21 | await UserManager.AddToRoleAsync(user, "Root"); 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/WechatBribery/Views/Account/Profile.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | ViewBag.Title = "修改商户信息"; 3 | } 4 | 5 |

@ViewBag.Title

6 | 7 |
8 | 9 | 10 | 11 | 15 | 16 | 17 | 18 | 22 | 23 | 24 | 25 | 26 | 27 |
上半部图片 12 | 13 | 14 |
下半部图片 19 | 20 | 21 |
活动规则URL
28 | 29 |
-------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 あまみや ゆうこ 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /src/WechatBribery/Views/Account/Create.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | ViewBag.Title = "创建用户"; 3 | } 4 | 5 |
6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 23 | 24 | 25 | 26 | 27 | 28 |
用户名
密码
角色 18 | 22 |
初始金额(元)
29 | 30 |
-------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/styles/style.css: -------------------------------------------------------------------------------- 1 | .row-title 2 | { 3 | width: 120px; 4 | background-color: #eee; 5 | font-weight: bold; 6 | } 7 | 8 | .detail-table { 9 | background-color: #fff; 10 | } 11 | 12 | .table td { 13 | border-color: #ccc!important; 14 | } 15 | 16 | .post-nav { 17 | padding: 0; 18 | } 19 | 20 | .post-nav-page { 21 | display: block; 22 | float: left; 23 | background: #ececec; 24 | line-height: 30px; 25 | width: 29px; 26 | margin-right: 1px; 27 | text-align: center; 28 | font-size: .8em; 29 | -webkit-transition: background-color .2s linear; 30 | transition: background-color .2s linear; 31 | } 32 | 33 | .post-nav-page:hover { 34 | background: #e7e7e7!important; 35 | } 36 | 37 | .post-nav-page a, .post-nav-page a:active, .post-nav-page a:hover, .post-nav-page a:visited { 38 | color: #222; 39 | text-decoration: none; 40 | } 41 | 42 | .post-nav-page-current { 43 | background: #323232 !important; 44 | } 45 | 46 | .post-nav-page-current a { 47 | color: #fff !important; 48 | } 49 | 50 | .post-nav-page-current:hover { 51 | background: #636363 !important; 52 | } 53 | 54 | .post-nav-page-current:hover a { 55 | color: #fff!important; 56 | } -------------------------------------------------------------------------------- /src/WechatBribery/WechatBribery.xproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 14.0 5 | $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) 6 | 7 | 8 | 9 | 10 | 4c144181-5d5b-4722-bfbe-30633e19b287 11 | WechatBribery 12 | .\obj 13 | .\bin\ 14 | v4.5.2 15 | 16 | 17 | 18 | 2.0 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /src/WechatBribery/Controllers/WeChatApiController.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Linq; 3 | using System.Threading.Tasks; 4 | using Microsoft.AspNetCore.Http; 5 | using Microsoft.AspNetCore.Mvc; 6 | using Microsoft.AspNetCore.SignalR; 7 | using WechatBribery.Hubs; 8 | using static WechatBribery.Common.Wxpay; 9 | 10 | namespace WechatBribery.Controllers 11 | { 12 | public class WeChatApiController : BaseController 13 | { 14 | [Route("[controller]/ExchangeCode/{owner}")] 15 | public async Task ExchangeCode(string code, string state, string owner, [FromServices] IHubContext Hub) 16 | { 17 | try 18 | { 19 | var oid = await AuthorizeAsync(code); 20 | HttpContext.Session.SetString("OpenId", oid.Id); 21 | HttpContext.Session.SetString("AccessToken", oid.AccessToken); 22 | HttpContext.Session.SetString("Expire", oid.AccessTokenExpire.ToString()); 23 | HttpContext.Session.SetString("Nickname", oid.NickName); 24 | HttpContext.Session.SetString("AvatarUrl", oid.AvatarUrl); 25 | return RedirectToAction("Index", "WeChat", new { id = owner }); 26 | } 27 | catch 28 | { 29 | return RedirectToAction("Index", "WeChat", new { id = owner }); 30 | } 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/WechatBribery/Views/WeChat/History.cshtml: -------------------------------------------------------------------------------- 1 | @model IEnumerable 2 | @{ 3 | Layout = null; 4 | } 5 | 6 | 7 | 8 | 9 | 摇一摇抽红包 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | @foreach(var x in Model) 18 | { 19 | 20 | 22 | 25 | 26 | 27 | } 28 |
21 | @x.NickName 23 | @x.Time 24 | ¥@((x.Price / 100.0).ToString("0.00"))
29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /WechatBribery.sln: -------------------------------------------------------------------------------- 1 | 2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 14 4 | VisualStudioVersion = 14.0.25420.1 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{77800E57-8703-46C3-89B3-09716FD37A10}" 7 | EndProject 8 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{15683B52-D1BB-47A4-BD7E-B749A6FF402B}" 9 | ProjectSection(SolutionItems) = preProject 10 | global.json = global.json 11 | NuGet.config = NuGet.config 12 | EndProjectSection 13 | EndProject 14 | Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "WechatBribery", "src\WechatBribery\WechatBribery.xproj", "{4C144181-5D5B-4722-BFBE-30633E19B287}" 15 | EndProject 16 | Global 17 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 18 | Debug|Any CPU = Debug|Any CPU 19 | Release|Any CPU = Release|Any CPU 20 | EndGlobalSection 21 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 22 | {4C144181-5D5B-4722-BFBE-30633E19B287}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 23 | {4C144181-5D5B-4722-BFBE-30633E19B287}.Debug|Any CPU.Build.0 = Debug|Any CPU 24 | {4C144181-5D5B-4722-BFBE-30633E19B287}.Release|Any CPU.ActiveCfg = Release|Any CPU 25 | {4C144181-5D5B-4722-BFBE-30633E19B287}.Release|Any CPU.Build.0 = Release|Any CPU 26 | EndGlobalSection 27 | GlobalSection(SolutionProperties) = preSolution 28 | HideSolutionNode = FALSE 29 | EndGlobalSection 30 | GlobalSection(NestedProjects) = preSolution 31 | {4C144181-5D5B-4722-BFBE-30633E19B287} = {77800E57-8703-46C3-89B3-09716FD37A10} 32 | EndGlobalSection 33 | EndGlobal 34 | -------------------------------------------------------------------------------- /src/WechatBribery/Models/BriberyContext.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.EntityFrameworkCore; 2 | using Microsoft.AspNetCore.Identity.EntityFrameworkCore; 3 | using Npgsql.EntityFrameworkCore.PostgreSQL; 4 | using Pomelo.AspNetCore.Extensions.BlobStorage.Models; 5 | 6 | namespace WechatBribery.Models 7 | { 8 | public class BriberyContext : IdentityDbContext, IBlobStorageDbContext 9 | { 10 | public BriberyContext(DbContextOptions opt) 11 | : base(opt) 12 | { 13 | } 14 | 15 | public DbSet PayLogs { get; set; } 16 | 17 | public DbSet Blobs { get; set; } 18 | 19 | public DbSet Briberies { get; set; } 20 | 21 | public DbSet Activities { get; set; } 22 | 23 | protected override void OnModelCreating(ModelBuilder builder) 24 | { 25 | base.OnModelCreating(builder); 26 | 27 | builder.HasPostgresExtension("uuid-ossp"); 28 | 29 | builder.Entity(e => 30 | { 31 | e.HasIndex(x => x.ReceivedTime); 32 | e.HasIndex(x => x.Price); 33 | }); 34 | 35 | builder.Entity(e => 36 | { 37 | e.HasIndex(x => x.Price); 38 | e.HasIndex(x => x.Time); 39 | }); 40 | 41 | builder.Entity(e => 42 | { 43 | e.HasIndex(x => x.Price); 44 | e.HasIndex(x => x.Begin); 45 | e.HasIndex(x => x.End); 46 | }); 47 | 48 | builder.Entity(e => 49 | { 50 | e.HasIndex(x => x.ReceivedTime); 51 | }); 52 | } 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /src/WechatBribery/Views/Home/History.cshtml: -------------------------------------------------------------------------------- 1 | @model IEnumerable 2 | @{ 3 | ViewBag.Title = "历史活动"; 4 | } 5 | 6 |

@ViewBag.Title

7 | 8 | 9 | 10 | 11 | 12 | @if (User.IsInRole("Root")) 13 | { 14 | 15 | } 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | @foreach(var x in Model) 27 | { 28 | 29 | 30 | @if (x.End.HasValue) 31 | { 32 | 33 | } 34 | else 35 | { 36 | 37 | } 38 | @if (User.IsInRole("Root")) 39 | { 40 | 41 | } 42 | 43 | 44 | 45 | 46 | 47 | 51 | 52 | } 53 | 54 |
活动名称创建者状态开始时间结束时间总金额红包数中奖率操作
@x.Title已经结束正在进行@x.Owner.UserName@x.Begin@x.End¥@((x.Price / 100.0).ToString("0.00"))@x.BriberiesCount@((x.Ratio * 100).ToString("0.00"))% 48 | 查看详情 49 | 导出报表 50 |
55 | @Html.Paging("post-nav-page", "post-nav-page-current", "post-nav", null, new[] { "raw" }) -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/styles/blue.css: -------------------------------------------------------------------------------- 1 | /* iCheck plugin Square skin, blue 2 | ----------------------------------- */ 3 | .icheckbox_square-blue, 4 | .iradio_square-blue { 5 | display: inline-block; 6 | *display: inline; 7 | vertical-align: middle; 8 | margin: 0; 9 | padding: 0; 10 | width: 22px; 11 | height: 22px; 12 | background: url(/img/blue.png) no-repeat; 13 | border: none; 14 | cursor: pointer; 15 | } 16 | 17 | .icheckbox_square-blue { 18 | background-position: 0 0; 19 | } 20 | .icheckbox_square-blue.hover { 21 | background-position: -24px 0; 22 | } 23 | .icheckbox_square-blue.checked { 24 | background-position: -48px 0; 25 | } 26 | .icheckbox_square-blue.disabled { 27 | background-position: -72px 0; 28 | cursor: default; 29 | } 30 | .icheckbox_square-blue.checked.disabled { 31 | background-position: -96px 0; 32 | } 33 | 34 | .iradio_square-blue { 35 | background-position: -120px 0; 36 | } 37 | .iradio_square-blue.hover { 38 | background-position: -144px 0; 39 | } 40 | .iradio_square-blue.checked { 41 | background-position: -168px 0; 42 | } 43 | .iradio_square-blue.disabled { 44 | background-position: -192px 0; 45 | cursor: default; 46 | } 47 | .iradio_square-blue.checked.disabled { 48 | background-position: -216px 0; 49 | } 50 | 51 | /* Retina support */ 52 | @media only screen and (-webkit-min-device-pixel-ratio: 1.5), 53 | only screen and (-moz-min-device-pixel-ratio: 1.5), 54 | only screen and (-o-min-device-pixel-ratio: 3/2), 55 | only screen and (min-device-pixel-ratio: 1.5) { 56 | .icheckbox_square-blue, 57 | .iradio_square-blue { 58 | background-image: url(/img/blue@2x.png); 59 | -webkit-background-size: 240px 24px; 60 | background-size: 240px 24px; 61 | } 62 | } -------------------------------------------------------------------------------- /src/WechatBribery/Views/Shared/Bribery.cshtml: -------------------------------------------------------------------------------- 1 | @model Bribery 2 | @{ 3 | Layout = null; 4 | } 5 | 6 | 7 | 8 | 9 | 摇一摇抽红包 10 | 11 | 12 | 13 | 14 | 33 | 34 | 35 | 36 |
¥@((Model.Price / 100.0).ToString("0.00"))
37 | 再来一次 38 | 49 | 50 | -------------------------------------------------------------------------------- /src/WechatBribery/Views/WeChat/Bribery.cshtml: -------------------------------------------------------------------------------- 1 | @model Bribery 2 | @{ 3 | Layout = null; 4 | } 5 | 6 | 7 | 8 | 9 | 摇一摇抽红包 10 | 11 | 12 | 13 | 14 | 33 | 34 | 35 | 36 |
¥@((Model.Price / 100.0).ToString("0.00"))
37 | 再来一次 38 | 49 | 50 | -------------------------------------------------------------------------------- /src/WechatBribery/project.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "Microsoft.AspNetCore.Diagnostics": "1.0.0", 4 | "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0", 5 | "Microsoft.AspNetCore.Server.Kestrel": "1.0.0", 6 | "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "1.0.0", 7 | "Microsoft.AspNetCore.Mvc": "1.0.0", 8 | "Microsoft.AspNetCore.Mvc.TagHelpers": "1.0.0", 9 | "Microsoft.AspNetCore.SignalR.Server": "0.1.0", 10 | "Microsoft.AspNetCore.StaticFiles": "1.0.0", 11 | "Microsoft.AspNetCore.Session": "1.0.0", 12 | "Microsoft.Extensions.Logging.Console": "1.0.0", 13 | "Pomelo.EntityFrameworkCore.MySql": "1.0.0", 14 | "Npgsql.EntityFrameworkCore.PostgreSQL": "1.0.0", 15 | "Pomelo.AspNetCore.Extensions": "1.0.0", 16 | "Pomelo.AspNetCore.TimedJob": "1.0.0", 17 | "Pomelo.Data.Excel": "1.0.0" 18 | }, 19 | 20 | "tools": { 21 | "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final" 22 | }, 23 | 24 | "frameworks": { 25 | "netcoreapp1.0": { 26 | "dependencies": { 27 | "Microsoft.NETCore.App": { 28 | "version": "1.0.0", 29 | "type": "platform" 30 | }, 31 | "System.Security.Cryptography.Algorithms": "4.2.0" 32 | }, 33 | "imports": [ 34 | "dotnet5.6", 35 | "portable-net45+win8" 36 | ] 37 | } 38 | }, 39 | 40 | "buildOptions": { 41 | "emitEntryPoint": true, 42 | "preserveCompilationContext": true 43 | }, 44 | 45 | "runtimeOptions": { 46 | "configProperties": { 47 | "System.GC.Server": true 48 | } 49 | }, 50 | 51 | "publishOptions": { 52 | "include": [ 53 | "wwwroot", 54 | "Views", 55 | "web.config", 56 | "config.json", 57 | "apiclient_cert.p12" 58 | ] 59 | }, 60 | 61 | "scripts": { 62 | "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ] 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /src/WechatBribery/Startup.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Builder; 2 | using Microsoft.AspNetCore.Hosting; 3 | using Microsoft.AspNetCore.Identity.EntityFrameworkCore; 4 | using Microsoft.Extensions.Configuration; 5 | using Microsoft.Extensions.DependencyInjection; 6 | using Microsoft.Extensions.Logging; 7 | using Microsoft.EntityFrameworkCore; 8 | using WechatBribery.Models; 9 | 10 | namespace WechatBribery 11 | { 12 | public class Startup 13 | { 14 | public static IConfiguration Config; 15 | 16 | public void ConfigureServices(IServiceCollection services) 17 | { 18 | services.AddMvc(); 19 | services.AddSignalR(); 20 | services.AddLogging(); 21 | services.AddConfiguration(out Config); 22 | services.AddSmartCookies(); 23 | services.AddSmartUser(); 24 | services.AddMemoryCache(); 25 | services.AddSession(o => 26 | { 27 | o.IdleTimeout = new System.TimeSpan(0, 20, 0); 28 | }); 29 | 30 | services.AddDbContext(x => x.UseNpgsql(Config["Conn"])); 31 | 32 | services.AddIdentity(x => 33 | { 34 | x.Password.RequireDigit = false; 35 | x.Password.RequiredLength = 0; 36 | x.Password.RequireLowercase = false; 37 | x.Password.RequireNonAlphanumeric = false; 38 | x.Password.RequireUppercase = false; 39 | x.User.AllowedUserNameCharacters = null; 40 | }) 41 | .AddDefaultTokenProviders() 42 | .AddEntityFrameworkStores(); 43 | } 44 | 45 | public async void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) 46 | { 47 | loggerFactory.AddConsole(LogLevel.Error, true); 48 | app.UseSession(); 49 | app.UseSignalR(); 50 | app.UseIdentity(); 51 | app.UseDeveloperExceptionPage(); 52 | app.UseBlobStorage(); 53 | app.UseMvcWithDefaultRoute(); 54 | app.UseStaticFiles(); 55 | 56 | await SampleData.InitDB(app.ApplicationServices); 57 | } 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/styles/shaked.css: -------------------------------------------------------------------------------- 1 | *{padding:0;margin:0;-webkit-tap-highlight-color:rgba(0,0,0,0);text-decoration:none;} 2 | .zhezhaoceng{width:100%;height:100%;background:rgba(52, 52, 52, 0.8);position:absolute;z-index:9998} 3 | .shakTop { 4 | background:url(../images/top.jpg) no-repeat;background-size:100% 100%; 5 | position : absolute; 6 | width : 100%; 7 | height: 50%; 8 | } 9 | .shakBottom { 10 | background:url(../images/bottom.jpg) no-repeat;background-size:100% 100%; 11 | position : absolute; 12 | width : 100%; 13 | height: 50%; 14 | } 15 | .shakTop {top : 0;} 16 | .shakBottom {bottom : 0;} 17 | 18 | .shakTop span,.shakBottom span{ 19 | 20 | } 21 | .shakTop span{bottom : 0;} 22 | .shakBottom span{ 23 | 24 | top : 0; 25 | } 26 | 27 | .shake_box_focus .shakTop{ 28 | animation : shakTop 1s 1 linear; 29 | -moz-animation : shakTop 1s 1 linear; 30 | -webkit-animation: shakTop 1s 1 linear; 31 | -ms-animation : shakTop 1s 1 linear; 32 | -o-animation : shakTop 1s 1 linear; 33 | } 34 | .shake_box_focus .shakBottom{ 35 | animation : shakBottom 1s 1 linear; 36 | -moz-animation : shakBottom 1s 1 linear; 37 | -webkit-animation: shakBottom 1s 1 linear; 38 | -ms-animation : shakBottom 1s 1 linear; 39 | -o-animation : shakBottom 1s 1 linear; 40 | } 41 | 42 | /* 向上拉动画效果 */ 43 | @-webkit-keyframes shakTop { 44 | 0% {top: 0;} 45 | 50% {top: -200px;} 46 | 100% {top: 0;} 47 | } 48 | @-moz-keyframes shakTop { 49 | 0% {top: 0;} 50 | 50% {top: -200px;} 51 | 100% {top: 0;} 52 | } 53 | @-ms-keyframes shakTop { 54 | 0% {top: 0;} 55 | 50% {top: -200px;} 56 | 100% {top: 0;} 57 | } 58 | @-o-keyframes shakTop { 59 | 0% {top: 0;} 60 | 50% {top: -200px;} 61 | 100% {top: 0;} 62 | } 63 | 64 | /* 向下拉动画效果 */ 65 | @-webkit-keyframes shakBottom { 66 | 0% {bottom: 0;} 67 | 50% {bottom: -200px;} 68 | 100% {bottom: 0;} 69 | } 70 | @-moz-keyframes shakBottom { 71 | 0% {bottom: 0;} 72 | 50% {bottom: -200px;} 73 | 100% {bottom: 0;} 74 | } 75 | @-ms-keyframes shakBottom { 76 | 0% {bottom: 0;} 77 | 50% {bottom: -200px;} 78 | 100% {bottom: 0;} 79 | } 80 | @-o-keyframes shakBottom { 81 | 0% {bottom: 0;} 82 | 50% {bottom: -200px;} 83 | 100% {bottom: 0;} 84 | } 85 | -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/scripts/html5shiv.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @preserve HTML5 Shiv 3.7.3 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed 3 | */ 4 | !function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=t.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=t.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),t.elements=c+" "+a,j(b)}function f(a){var b=s[a[q]];return b||(b={},r++,a[q]=r,s[r]=b),b}function g(a,c,d){if(c||(c=b),l)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():p.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||o.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),l)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return t.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(t,b.frag)}function j(a){a||(a=b);var d=f(a);return!t.shivCSS||k||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),l||i(a,d),a}var k,l,m="3.7.3",n=a.html5||{},o=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,p=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,q="_html5shiv",r=0,s={};!function(){try{var a=b.createElement("a");a.innerHTML="",k="hidden"in a,l=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){k=!0,l=!0}}();var t={elements:n.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:m,shivCSS:n.shivCSS!==!1,supportsUnknownElements:l,shivMethods:n.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=t,j(b),"object"==typeof module&&module.exports&&(module.exports=t)}("undefined"!=typeof window?window:this,document); -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/styles/skins/skin-red.min.css: -------------------------------------------------------------------------------- 1 | .skin-red .main-header .navbar{background-color:#dd4b39}.skin-red .main-header .navbar .nav>li>a{color:#fff}.skin-red .main-header .navbar .nav>li>a:hover,.skin-red .main-header .navbar .nav>li>a:active,.skin-red .main-header .navbar .nav>li>a:focus,.skin-red .main-header .navbar .nav .open>a,.skin-red .main-header .navbar .nav .open>a:hover,.skin-red .main-header .navbar .nav .open>a:focus,.skin-red .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-red .main-header .navbar .sidebar-toggle{color:#fff}.skin-red .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-red .main-header .navbar .sidebar-toggle{color:#fff}.skin-red .main-header .navbar .sidebar-toggle:hover{background-color:#d73925}@media (max-width:767px){.skin-red .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-red .main-header .navbar .dropdown-menu li a{color:#fff}.skin-red .main-header .navbar .dropdown-menu li a:hover{background:#d73925}}.skin-red .main-header .logo{background-color:#d73925;color:#fff;border-bottom:0 solid transparent}.skin-red .main-header .logo:hover{background-color:#d33724}.skin-red .main-header li.user-header{background-color:#dd4b39}.skin-red .content-header{background:transparent}.skin-red .wrapper,.skin-red .main-sidebar,.skin-red .left-side{background-color:#222d32}.skin-red .user-panel>.info,.skin-red .user-panel>.info>a{color:#fff}.skin-red .sidebar-menu>li.header{color:#4b646f;background:#1a2226}.skin-red .sidebar-menu>li>a{border-left:3px solid transparent}.skin-red .sidebar-menu>li:hover>a,.skin-red .sidebar-menu>li.active>a{color:#fff;background:#1e282c;border-left-color:#dd4b39}.skin-red .sidebar-menu>li>.treeview-menu{margin:0 1px;background:#2c3b41}.skin-red .sidebar a{color:#b8c7ce}.skin-red .sidebar a:hover{text-decoration:none}.skin-red .treeview-menu>li>a{color:#8aa4af}.skin-red .treeview-menu>li.active>a,.skin-red .treeview-menu>li>a:hover{color:#fff}.skin-red .sidebar-form{border-radius:3px;border:1px solid #374850;margin:10px 10px}.skin-red .sidebar-form input[type="text"],.skin-red .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-red .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-red .sidebar-form input[type="text"]:focus,.skin-red .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-red .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-red .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0} -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/styles/skins/skin-green.min.css: -------------------------------------------------------------------------------- 1 | .skin-green .main-header .navbar{background-color:#00a65a}.skin-green .main-header .navbar .nav>li>a{color:#fff}.skin-green .main-header .navbar .nav>li>a:hover,.skin-green .main-header .navbar .nav>li>a:active,.skin-green .main-header .navbar .nav>li>a:focus,.skin-green .main-header .navbar .nav .open>a,.skin-green .main-header .navbar .nav .open>a:hover,.skin-green .main-header .navbar .nav .open>a:focus,.skin-green .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-green .main-header .navbar .sidebar-toggle{color:#fff}.skin-green .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-green .main-header .navbar .sidebar-toggle{color:#fff}.skin-green .main-header .navbar .sidebar-toggle:hover{background-color:#008d4c}@media (max-width:767px){.skin-green .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-green .main-header .navbar .dropdown-menu li a{color:#fff}.skin-green .main-header .navbar .dropdown-menu li a:hover{background:#008d4c}}.skin-green .main-header .logo{background-color:#008d4c;color:#fff;border-bottom:0 solid transparent}.skin-green .main-header .logo:hover{background-color:#008749}.skin-green .main-header li.user-header{background-color:#00a65a}.skin-green .content-header{background:transparent}.skin-green .wrapper,.skin-green .main-sidebar,.skin-green .left-side{background-color:#222d32}.skin-green .user-panel>.info,.skin-green .user-panel>.info>a{color:#fff}.skin-green .sidebar-menu>li.header{color:#4b646f;background:#1a2226}.skin-green .sidebar-menu>li>a{border-left:3px solid transparent}.skin-green .sidebar-menu>li:hover>a,.skin-green .sidebar-menu>li.active>a{color:#fff;background:#1e282c;border-left-color:#00a65a}.skin-green .sidebar-menu>li>.treeview-menu{margin:0 1px;background:#2c3b41}.skin-green .sidebar a{color:#b8c7ce}.skin-green .sidebar a:hover{text-decoration:none}.skin-green .treeview-menu>li>a{color:#8aa4af}.skin-green .treeview-menu>li.active>a,.skin-green .treeview-menu>li>a:hover{color:#fff}.skin-green .sidebar-form{border-radius:3px;border:1px solid #374850;margin:10px 10px}.skin-green .sidebar-form input[type="text"],.skin-green .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-green .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-green .sidebar-form input[type="text"]:focus,.skin-green .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-green .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-green .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0} -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/styles/skins/skin-purple.min.css: -------------------------------------------------------------------------------- 1 | .skin-purple .main-header .navbar{background-color:#605ca8}.skin-purple .main-header .navbar .nav>li>a{color:#fff}.skin-purple .main-header .navbar .nav>li>a:hover,.skin-purple .main-header .navbar .nav>li>a:active,.skin-purple .main-header .navbar .nav>li>a:focus,.skin-purple .main-header .navbar .nav .open>a,.skin-purple .main-header .navbar .nav .open>a:hover,.skin-purple .main-header .navbar .nav .open>a:focus,.skin-purple .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-purple .main-header .navbar .sidebar-toggle{color:#fff}.skin-purple .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-purple .main-header .navbar .sidebar-toggle{color:#fff}.skin-purple .main-header .navbar .sidebar-toggle:hover{background-color:#555299}@media (max-width:767px){.skin-purple .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-purple .main-header .navbar .dropdown-menu li a{color:#fff}.skin-purple .main-header .navbar .dropdown-menu li a:hover{background:#555299}}.skin-purple .main-header .logo{background-color:#555299;color:#fff;border-bottom:0 solid transparent}.skin-purple .main-header .logo:hover{background-color:#545096}.skin-purple .main-header li.user-header{background-color:#605ca8}.skin-purple .content-header{background:transparent}.skin-purple .wrapper,.skin-purple .main-sidebar,.skin-purple .left-side{background-color:#222d32}.skin-purple .user-panel>.info,.skin-purple .user-panel>.info>a{color:#fff}.skin-purple .sidebar-menu>li.header{color:#4b646f;background:#1a2226}.skin-purple .sidebar-menu>li>a{border-left:3px solid transparent}.skin-purple .sidebar-menu>li:hover>a,.skin-purple .sidebar-menu>li.active>a{color:#fff;background:#1e282c;border-left-color:#605ca8}.skin-purple .sidebar-menu>li>.treeview-menu{margin:0 1px;background:#2c3b41}.skin-purple .sidebar a{color:#b8c7ce}.skin-purple .sidebar a:hover{text-decoration:none}.skin-purple .treeview-menu>li>a{color:#8aa4af}.skin-purple .treeview-menu>li.active>a,.skin-purple .treeview-menu>li>a:hover{color:#fff}.skin-purple .sidebar-form{border-radius:3px;border:1px solid #374850;margin:10px 10px}.skin-purple .sidebar-form input[type="text"],.skin-purple .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-purple .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-purple .sidebar-form input[type="text"]:focus,.skin-purple .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-purple .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-purple .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0} -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/styles/skins/skin-yellow.min.css: -------------------------------------------------------------------------------- 1 | .skin-yellow .main-header .navbar{background-color:#f39c12}.skin-yellow .main-header .navbar .nav>li>a{color:#fff}.skin-yellow .main-header .navbar .nav>li>a:hover,.skin-yellow .main-header .navbar .nav>li>a:active,.skin-yellow .main-header .navbar .nav>li>a:focus,.skin-yellow .main-header .navbar .nav .open>a,.skin-yellow .main-header .navbar .nav .open>a:hover,.skin-yellow .main-header .navbar .nav .open>a:focus,.skin-yellow .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-yellow .main-header .navbar .sidebar-toggle{color:#fff}.skin-yellow .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-yellow .main-header .navbar .sidebar-toggle{color:#fff}.skin-yellow .main-header .navbar .sidebar-toggle:hover{background-color:#e08e0b}@media (max-width:767px){.skin-yellow .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-yellow .main-header .navbar .dropdown-menu li a{color:#fff}.skin-yellow .main-header .navbar .dropdown-menu li a:hover{background:#e08e0b}}.skin-yellow .main-header .logo{background-color:#e08e0b;color:#fff;border-bottom:0 solid transparent}.skin-yellow .main-header .logo:hover{background-color:#db8b0b}.skin-yellow .main-header li.user-header{background-color:#f39c12}.skin-yellow .content-header{background:transparent}.skin-yellow .wrapper,.skin-yellow .main-sidebar,.skin-yellow .left-side{background-color:#222d32}.skin-yellow .user-panel>.info,.skin-yellow .user-panel>.info>a{color:#fff}.skin-yellow .sidebar-menu>li.header{color:#4b646f;background:#1a2226}.skin-yellow .sidebar-menu>li>a{border-left:3px solid transparent}.skin-yellow .sidebar-menu>li:hover>a,.skin-yellow .sidebar-menu>li.active>a{color:#fff;background:#1e282c;border-left-color:#f39c12}.skin-yellow .sidebar-menu>li>.treeview-menu{margin:0 1px;background:#2c3b41}.skin-yellow .sidebar a{color:#b8c7ce}.skin-yellow .sidebar a:hover{text-decoration:none}.skin-yellow .treeview-menu>li>a{color:#8aa4af}.skin-yellow .treeview-menu>li.active>a,.skin-yellow .treeview-menu>li>a:hover{color:#fff}.skin-yellow .sidebar-form{border-radius:3px;border:1px solid #374850;margin:10px 10px}.skin-yellow .sidebar-form input[type="text"],.skin-yellow .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-yellow .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-yellow .sidebar-form input[type="text"]:focus,.skin-yellow .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-yellow .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-yellow .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0} -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/styles/skins/skin-blue.min.css: -------------------------------------------------------------------------------- 1 | .skin-blue .main-header .navbar{background-color:#3c8dbc}.skin-blue .main-header .navbar .nav>li>a{color:#fff}.skin-blue .main-header .navbar .nav>li>a:hover,.skin-blue .main-header .navbar .nav>li>a:active,.skin-blue .main-header .navbar .nav>li>a:focus,.skin-blue .main-header .navbar .nav .open>a,.skin-blue .main-header .navbar .nav .open>a:hover,.skin-blue .main-header .navbar .nav .open>a:focus,.skin-blue .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-blue .main-header .navbar .sidebar-toggle{color:#fff}.skin-blue .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-blue .main-header .navbar .sidebar-toggle{color:#fff}.skin-blue .main-header .navbar .sidebar-toggle:hover{background-color:#367fa9}@media (max-width:767px){.skin-blue .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-blue .main-header .navbar .dropdown-menu li a{color:#fff}.skin-blue .main-header .navbar .dropdown-menu li a:hover{background:#367fa9}}.skin-blue .main-header .logo{background-color:#367fa9;color:#fff;border-bottom:0 solid transparent}.skin-blue .main-header .logo:hover{background-color:#357ca5}.skin-blue .main-header li.user-header{background-color:#3c8dbc}.skin-blue .content-header{background:transparent}.skin-blue .wrapper,.skin-blue .main-sidebar,.skin-blue .left-side{background-color:#222d32}.skin-blue .user-panel>.info,.skin-blue .user-panel>.info>a{color:#fff}.skin-blue .sidebar-menu>li.header{color:#4b646f;background:#1a2226}.skin-blue .sidebar-menu>li>a{border-left:3px solid transparent}.skin-blue .sidebar-menu>li:hover>a,.skin-blue .sidebar-menu>li.active>a{color:#fff;background:#1e282c;border-left-color:#3c8dbc}.skin-blue .sidebar-menu>li>.treeview-menu{margin:0 1px;background:#2c3b41}.skin-blue .sidebar a{color:#b8c7ce}.skin-blue .sidebar a:hover{text-decoration:none}.skin-blue .treeview-menu>li>a{color:#8aa4af}.skin-blue .treeview-menu>li.active>a,.skin-blue .treeview-menu>li>a:hover{color:#fff}.skin-blue .sidebar-form{border-radius:3px;border:1px solid #374850;margin:10px 10px}.skin-blue .sidebar-form input[type="text"],.skin-blue .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-blue .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-blue .sidebar-form input[type="text"]:focus,.skin-blue .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-blue .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-blue .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}.skin-blue.layout-top-nav .main-header>.logo{background-color:#3c8dbc;color:#fff;border-bottom:0 solid transparent}.skin-blue.layout-top-nav .main-header>.logo:hover{background-color:#3b8ab8} -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/styles/bootstrap-colorpicker.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap Colorpicker 3 | * http://mjolnic.github.io/bootstrap-colorpicker/ 4 | * 5 | * Originally written by (c) 2012 Stefan Petre 6 | * Licensed under the Apache License v2.0 7 | * http://www.apache.org/licenses/LICENSE-2.0.txt 8 | * 9 | */.colorpicker-saturation{float:left;width:100px;height:100px;cursor:crosshair;background-image:url("img/saturation.png")}.colorpicker-saturation i{position:absolute;top:0;left:0;display:block;width:5px;height:5px;margin:-4px 0 0 -4px;border:1px solid #000;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.colorpicker-saturation i b{display:block;width:5px;height:5px;border:1px solid #fff;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.colorpicker-hue,.colorpicker-alpha{float:left;width:15px;height:100px;margin-bottom:4px;margin-left:4px;cursor:row-resize}.colorpicker-hue i,.colorpicker-alpha i{position:absolute;top:0;left:0;display:block;width:100%;height:1px;margin-top:-1px;background:#000;border-top:1px solid #fff}.colorpicker-hue{background-image:url("img/hue.png")}.colorpicker-alpha{display:none;background-image:url("img/alpha.png")}.colorpicker{top:0;left:0;z-index:2500;min-width:130px;padding:4px;margin-top:1px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;*zoom:1}.colorpicker:before,.colorpicker:after{display:table;line-height:0;content:""}.colorpicker:after{clear:both}.colorpicker:before{position:absolute;top:-7px;left:6px;display:inline-block;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-left:7px solid transparent;border-bottom-color:rgba(0,0,0,0.2);content:''}.colorpicker:after{position:absolute;top:-6px;left:7px;display:inline-block;border-right:6px solid transparent;border-bottom:6px solid #fff;border-left:6px solid transparent;content:''}.colorpicker div{position:relative}.colorpicker.colorpicker-with-alpha{min-width:140px}.colorpicker.colorpicker-with-alpha .colorpicker-alpha{display:block}.colorpicker-color{height:10px;margin-top:5px;clear:both;background-image:url("img/alpha.png");background-position:0 100%}.colorpicker-color div{height:10px}.colorpicker-element .input-group-addon i{display:block;width:16px;height:16px;cursor:pointer}.colorpicker.colorpicker-inline{position:relative;display:inline-block;float:none}.colorpicker.colorpicker-horizontal{width:110px;height:auto;min-width:110px}.colorpicker.colorpicker-horizontal .colorpicker-saturation{margin-bottom:4px}.colorpicker.colorpicker-horizontal .colorpicker-color{width:100px}.colorpicker.colorpicker-horizontal .colorpicker-hue,.colorpicker.colorpicker-horizontal .colorpicker-alpha{float:left;width:100px;height:15px;margin-bottom:4px;margin-left:0;cursor:col-resize}.colorpicker.colorpicker-horizontal .colorpicker-hue i,.colorpicker.colorpicker-horizontal .colorpicker-alpha i{position:absolute;top:0;left:0;display:block;width:1px;height:15px;margin-top:0;background:#fff;border:0}.colorpicker.colorpicker-horizontal .colorpicker-hue{background-image:url("img/hue-horizontal.png")}.colorpicker.colorpicker-horizontal .colorpicker-alpha{background-image:url("img/alpha-horizontal.png")}.colorpicker.colorpicker-hidden{display:none}.colorpicker.colorpicker-visible{display:block}.colorpicker-inline.colorpicker-visible{display:inline-block} -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/styles/skins/skin-black.min.css: -------------------------------------------------------------------------------- 1 | .skin-black .main-header{-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.skin-black .main-header .navbar-toggle{color:#333}.skin-black .main-header .navbar-brand{color:#333;border-right:1px solid #eee}.skin-black .main-header>.navbar{background-color:#fff}.skin-black .main-header>.navbar .nav>li>a{color:#333}.skin-black .main-header>.navbar .nav>li>a:hover,.skin-black .main-header>.navbar .nav>li>a:active,.skin-black .main-header>.navbar .nav>li>a:focus,.skin-black .main-header>.navbar .nav .open>a,.skin-black .main-header>.navbar .nav .open>a:hover,.skin-black .main-header>.navbar .nav .open>a:focus,.skin-black .main-header>.navbar .nav>.active>a{background:#fff;color:#999}.skin-black .main-header>.navbar .sidebar-toggle{color:#333}.skin-black .main-header>.navbar .sidebar-toggle:hover{color:#999;background:#fff}.skin-black .main-header>.navbar>.sidebar-toggle{color:#333;border-right:1px solid #eee}.skin-black .main-header>.navbar .navbar-nav>li>a{border-right:1px solid #eee}.skin-black .main-header>.navbar .navbar-custom-menu .navbar-nav>li>a,.skin-black .main-header>.navbar .navbar-right>li>a{border-left:1px solid #eee;border-right-width:0}.skin-black .main-header>.logo{background-color:#fff;color:#333;border-bottom:0 solid transparent;border-right:1px solid #eee}.skin-black .main-header>.logo:hover{background-color:#fcfcfc}@media (max-width:767px){.skin-black .main-header>.logo{background-color:#222;color:#fff;border-bottom:0 solid transparent;border-right:none}.skin-black .main-header>.logo:hover{background-color:#1f1f1f}}.skin-black .main-header li.user-header{background-color:#222}.skin-black .content-header{background:transparent;box-shadow:none}.skin-black .wrapper,.skin-black .main-sidebar,.skin-black .left-side{background-color:#222d32}.skin-black .user-panel>.info,.skin-black .user-panel>.info>a{color:#fff}.skin-black .sidebar-menu>li.header{color:#4b646f;background:#1a2226}.skin-black .sidebar-menu>li>a{border-left:3px solid transparent}.skin-black .sidebar-menu>li:hover>a,.skin-black .sidebar-menu>li.active>a{color:#fff;background:#1e282c;border-left-color:#fff}.skin-black .sidebar-menu>li>.treeview-menu{margin:0 1px;background:#2c3b41}.skin-black .sidebar a{color:#b8c7ce}.skin-black .sidebar a:hover{text-decoration:none}.skin-black .treeview-menu>li>a{color:#8aa4af}.skin-black .treeview-menu>li.active>a,.skin-black .treeview-menu>li>a:hover{color:#fff}.skin-black .sidebar-form{border-radius:3px;border:1px solid #374850;margin:10px 10px}.skin-black .sidebar-form input[type="text"],.skin-black .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-black .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-black .sidebar-form input[type="text"]:focus,.skin-black .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-black .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-black .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0} -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/styles/bootstrap-timepicker.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Timepicker Component for Twitter Bootstrap 3 | * 4 | * Copyright 2013 Joris de Wit 5 | * 6 | * Contributors https://github.com/jdewit/bootstrap-timepicker/graphs/contributors 7 | * 8 | * For the full copyright and license information, please view the LICENSE 9 | * file that was distributed with this source code. 10 | */ 11 | .bootstrap-timepicker { 12 | position: relative; 13 | } 14 | .bootstrap-timepicker.pull-right .bootstrap-timepicker-widget.dropdown-menu { 15 | left: auto; 16 | right: 0; 17 | } 18 | .bootstrap-timepicker.pull-right .bootstrap-timepicker-widget.dropdown-menu:before { 19 | left: auto; 20 | right: 12px; 21 | } 22 | .bootstrap-timepicker.pull-right .bootstrap-timepicker-widget.dropdown-menu:after { 23 | left: auto; 24 | right: 13px; 25 | } 26 | .bootstrap-timepicker .add-on { 27 | cursor: pointer; 28 | } 29 | .bootstrap-timepicker .add-on i { 30 | display: inline-block; 31 | width: 16px; 32 | height: 16px; 33 | } 34 | .bootstrap-timepicker-widget.dropdown-menu { 35 | padding: 2px 3px 2px 2px; 36 | } 37 | .bootstrap-timepicker-widget.dropdown-menu.open { 38 | display: inline-block; 39 | } 40 | .bootstrap-timepicker-widget.dropdown-menu:before { 41 | border-bottom: 7px solid rgba(0, 0, 0, 0.2); 42 | border-left: 7px solid transparent; 43 | border-right: 7px solid transparent; 44 | content: ""; 45 | display: inline-block; 46 | left: 9px; 47 | position: absolute; 48 | top: -7px; 49 | } 50 | .bootstrap-timepicker-widget.dropdown-menu:after { 51 | border-bottom: 6px solid #FFFFFF; 52 | border-left: 6px solid transparent; 53 | border-right: 6px solid transparent; 54 | content: ""; 55 | display: inline-block; 56 | left: 10px; 57 | position: absolute; 58 | top: -6px; 59 | } 60 | .bootstrap-timepicker-widget a.btn, 61 | .bootstrap-timepicker-widget input { 62 | border-radius: 4px; 63 | } 64 | .bootstrap-timepicker-widget table { 65 | width: 100%; 66 | margin: 0; 67 | } 68 | .bootstrap-timepicker-widget table td { 69 | text-align: center; 70 | height: 30px; 71 | margin: 0; 72 | padding: 2px; 73 | } 74 | .bootstrap-timepicker-widget table td:not(.separator) { 75 | min-width: 30px; 76 | } 77 | .bootstrap-timepicker-widget table td span { 78 | width: 100%; 79 | } 80 | .bootstrap-timepicker-widget table td a { 81 | border: 1px transparent solid; 82 | width: 100%; 83 | display: inline-block; 84 | margin: 0; 85 | padding: 8px 0; 86 | outline: 0; 87 | color: #333; 88 | } 89 | .bootstrap-timepicker-widget table td a:hover { 90 | text-decoration: none; 91 | background-color: #eee; 92 | -webkit-border-radius: 4px; 93 | -moz-border-radius: 4px; 94 | border-radius: 4px; 95 | border-color: #ddd; 96 | } 97 | .bootstrap-timepicker-widget table td a i { 98 | margin-top: 2px; 99 | } 100 | .bootstrap-timepicker-widget table td input { 101 | width: 25px; 102 | margin: 0; 103 | text-align: center; 104 | } 105 | .bootstrap-timepicker-widget .modal-content { 106 | padding: 4px; 107 | } 108 | @media (min-width: 767px) { 109 | .bootstrap-timepicker-widget.modal { 110 | width: 200px; 111 | margin-left: -100px; 112 | } 113 | } 114 | @media (max-width: 767px) { 115 | .bootstrap-timepicker { 116 | width: 100%; 117 | } 118 | .bootstrap-timepicker .dropdown-menu { 119 | width: 100%; 120 | } 121 | } 122 | -------------------------------------------------------------------------------- /src/WechatBribery/Views/Home/Deliver.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | ViewBag.Title = "发放红包"; 3 | } 4 | 5 |

@ViewBag.Title

6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 36 | 37 |
活动名称
中奖率%
红包设定 20 | 21 | 添加固定金额红包 22 |     23 | 添加区间金额红包 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 |
红包类型金额个数操作
35 |
38 |

39 |
40 | -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/styles/skins/skin-red-light.min.css: -------------------------------------------------------------------------------- 1 | .skin-red-light .main-header .navbar{background-color:#dd4b39}.skin-red-light .main-header .navbar .nav>li>a{color:#fff}.skin-red-light .main-header .navbar .nav>li>a:hover,.skin-red-light .main-header .navbar .nav>li>a:active,.skin-red-light .main-header .navbar .nav>li>a:focus,.skin-red-light .main-header .navbar .nav .open>a,.skin-red-light .main-header .navbar .nav .open>a:hover,.skin-red-light .main-header .navbar .nav .open>a:focus,.skin-red-light .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-red-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-red-light .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-red-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-red-light .main-header .navbar .sidebar-toggle:hover{background-color:#d73925}@media (max-width:767px){.skin-red-light .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-red-light .main-header .navbar .dropdown-menu li a{color:#fff}.skin-red-light .main-header .navbar .dropdown-menu li a:hover{background:#d73925}}.skin-red-light .main-header .logo{background-color:#dd4b39;color:#fff;border-bottom:0 solid transparent}.skin-red-light .main-header .logo:hover{background-color:#dc4735}.skin-red-light .main-header li.user-header{background-color:#dd4b39}.skin-red-light .content-header{background:transparent}.skin-red-light .wrapper,.skin-red-light .main-sidebar,.skin-red-light .left-side{background-color:#f9fafc}.skin-red-light .content-wrapper,.skin-red-light .main-footer{border-left:1px solid #d2d6de}.skin-red-light .user-panel>.info,.skin-red-light .user-panel>.info>a{color:#444}.skin-red-light .sidebar-menu>li{-webkit-transition:border-left-color .3s ease;-o-transition:border-left-color .3s ease;transition:border-left-color .3s ease}.skin-red-light .sidebar-menu>li.header{color:#848484;background:#f9fafc}.skin-red-light .sidebar-menu>li>a{border-left:3px solid transparent;font-weight:600}.skin-red-light .sidebar-menu>li:hover>a,.skin-red-light .sidebar-menu>li.active>a{color:#000;background:#f4f4f5}.skin-red-light .sidebar-menu>li.active{border-left-color:#dd4b39}.skin-red-light .sidebar-menu>li.active>a{font-weight:600}.skin-red-light .sidebar-menu>li>.treeview-menu{background:#f4f4f5}.skin-red-light .sidebar a{color:#444}.skin-red-light .sidebar a:hover{text-decoration:none}.skin-red-light .treeview-menu>li>a{color:#777}.skin-red-light .treeview-menu>li.active>a,.skin-red-light .treeview-menu>li>a:hover{color:#000}.skin-red-light .treeview-menu>li.active>a{font-weight:600}.skin-red-light .sidebar-form{border-radius:3px;border:1px solid #d2d6de;margin:10px 10px}.skin-red-light .sidebar-form input[type="text"],.skin-red-light .sidebar-form .btn{box-shadow:none;background-color:#fff;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-red-light .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-red-light .sidebar-form input[type="text"]:focus,.skin-red-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-red-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-red-light .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}@media (min-width:768px){.skin-red-light.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{border-left:1px solid #d2d6de}} -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/styles/skins/skin-green-light.min.css: -------------------------------------------------------------------------------- 1 | .skin-green-light .main-header .navbar{background-color:#00a65a}.skin-green-light .main-header .navbar .nav>li>a{color:#fff}.skin-green-light .main-header .navbar .nav>li>a:hover,.skin-green-light .main-header .navbar .nav>li>a:active,.skin-green-light .main-header .navbar .nav>li>a:focus,.skin-green-light .main-header .navbar .nav .open>a,.skin-green-light .main-header .navbar .nav .open>a:hover,.skin-green-light .main-header .navbar .nav .open>a:focus,.skin-green-light .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-green-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-green-light .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-green-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-green-light .main-header .navbar .sidebar-toggle:hover{background-color:#008d4c}@media (max-width:767px){.skin-green-light .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-green-light .main-header .navbar .dropdown-menu li a{color:#fff}.skin-green-light .main-header .navbar .dropdown-menu li a:hover{background:#008d4c}}.skin-green-light .main-header .logo{background-color:#00a65a;color:#fff;border-bottom:0 solid transparent}.skin-green-light .main-header .logo:hover{background-color:#00a157}.skin-green-light .main-header li.user-header{background-color:#00a65a}.skin-green-light .content-header{background:transparent}.skin-green-light .wrapper,.skin-green-light .main-sidebar,.skin-green-light .left-side{background-color:#f9fafc}.skin-green-light .content-wrapper,.skin-green-light .main-footer{border-left:1px solid #d2d6de}.skin-green-light .user-panel>.info,.skin-green-light .user-panel>.info>a{color:#444}.skin-green-light .sidebar-menu>li{-webkit-transition:border-left-color .3s ease;-o-transition:border-left-color .3s ease;transition:border-left-color .3s ease}.skin-green-light .sidebar-menu>li.header{color:#848484;background:#f9fafc}.skin-green-light .sidebar-menu>li>a{border-left:3px solid transparent;font-weight:600}.skin-green-light .sidebar-menu>li:hover>a,.skin-green-light .sidebar-menu>li.active>a{color:#000;background:#f4f4f5}.skin-green-light .sidebar-menu>li.active{border-left-color:#00a65a}.skin-green-light .sidebar-menu>li.active>a{font-weight:600}.skin-green-light .sidebar-menu>li>.treeview-menu{background:#f4f4f5}.skin-green-light .sidebar a{color:#444}.skin-green-light .sidebar a:hover{text-decoration:none}.skin-green-light .treeview-menu>li>a{color:#777}.skin-green-light .treeview-menu>li.active>a,.skin-green-light .treeview-menu>li>a:hover{color:#000}.skin-green-light .treeview-menu>li.active>a{font-weight:600}.skin-green-light .sidebar-form{border-radius:3px;border:1px solid #d2d6de;margin:10px 10px}.skin-green-light .sidebar-form input[type="text"],.skin-green-light .sidebar-form .btn{box-shadow:none;background-color:#fff;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-green-light .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-green-light .sidebar-form input[type="text"]:focus,.skin-green-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-green-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-green-light .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}@media (min-width:768px){.skin-green-light.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{border-left:1px solid #d2d6de}} -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/styles/skins/skin-purple-light.min.css: -------------------------------------------------------------------------------- 1 | .skin-purple-light .main-header .navbar{background-color:#605ca8}.skin-purple-light .main-header .navbar .nav>li>a{color:#fff}.skin-purple-light .main-header .navbar .nav>li>a:hover,.skin-purple-light .main-header .navbar .nav>li>a:active,.skin-purple-light .main-header .navbar .nav>li>a:focus,.skin-purple-light .main-header .navbar .nav .open>a,.skin-purple-light .main-header .navbar .nav .open>a:hover,.skin-purple-light .main-header .navbar .nav .open>a:focus,.skin-purple-light .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-purple-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-purple-light .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-purple-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-purple-light .main-header .navbar .sidebar-toggle:hover{background-color:#555299}@media (max-width:767px){.skin-purple-light .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-purple-light .main-header .navbar .dropdown-menu li a{color:#fff}.skin-purple-light .main-header .navbar .dropdown-menu li a:hover{background:#555299}}.skin-purple-light .main-header .logo{background-color:#605ca8;color:#fff;border-bottom:0 solid transparent}.skin-purple-light .main-header .logo:hover{background-color:#5d59a6}.skin-purple-light .main-header li.user-header{background-color:#605ca8}.skin-purple-light .content-header{background:transparent}.skin-purple-light .wrapper,.skin-purple-light .main-sidebar,.skin-purple-light .left-side{background-color:#f9fafc}.skin-purple-light .content-wrapper,.skin-purple-light .main-footer{border-left:1px solid #d2d6de}.skin-purple-light .user-panel>.info,.skin-purple-light .user-panel>.info>a{color:#444}.skin-purple-light .sidebar-menu>li{-webkit-transition:border-left-color .3s ease;-o-transition:border-left-color .3s ease;transition:border-left-color .3s ease}.skin-purple-light .sidebar-menu>li.header{color:#848484;background:#f9fafc}.skin-purple-light .sidebar-menu>li>a{border-left:3px solid transparent;font-weight:600}.skin-purple-light .sidebar-menu>li:hover>a,.skin-purple-light .sidebar-menu>li.active>a{color:#000;background:#f4f4f5}.skin-purple-light .sidebar-menu>li.active{border-left-color:#605ca8}.skin-purple-light .sidebar-menu>li.active>a{font-weight:600}.skin-purple-light .sidebar-menu>li>.treeview-menu{background:#f4f4f5}.skin-purple-light .sidebar a{color:#444}.skin-purple-light .sidebar a:hover{text-decoration:none}.skin-purple-light .treeview-menu>li>a{color:#777}.skin-purple-light .treeview-menu>li.active>a,.skin-purple-light .treeview-menu>li>a:hover{color:#000}.skin-purple-light .treeview-menu>li.active>a{font-weight:600}.skin-purple-light .sidebar-form{border-radius:3px;border:1px solid #d2d6de;margin:10px 10px}.skin-purple-light .sidebar-form input[type="text"],.skin-purple-light .sidebar-form .btn{box-shadow:none;background-color:#fff;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-purple-light .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-purple-light .sidebar-form input[type="text"]:focus,.skin-purple-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-purple-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-purple-light .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}@media (min-width:768px){.skin-purple-light.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{border-left:1px solid #d2d6de}} -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/styles/skins/skin-yellow-light.min.css: -------------------------------------------------------------------------------- 1 | .skin-yellow-light .main-header .navbar{background-color:#f39c12}.skin-yellow-light .main-header .navbar .nav>li>a{color:#fff}.skin-yellow-light .main-header .navbar .nav>li>a:hover,.skin-yellow-light .main-header .navbar .nav>li>a:active,.skin-yellow-light .main-header .navbar .nav>li>a:focus,.skin-yellow-light .main-header .navbar .nav .open>a,.skin-yellow-light .main-header .navbar .nav .open>a:hover,.skin-yellow-light .main-header .navbar .nav .open>a:focus,.skin-yellow-light .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-yellow-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-yellow-light .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-yellow-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-yellow-light .main-header .navbar .sidebar-toggle:hover{background-color:#e08e0b}@media (max-width:767px){.skin-yellow-light .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-yellow-light .main-header .navbar .dropdown-menu li a{color:#fff}.skin-yellow-light .main-header .navbar .dropdown-menu li a:hover{background:#e08e0b}}.skin-yellow-light .main-header .logo{background-color:#f39c12;color:#fff;border-bottom:0 solid transparent}.skin-yellow-light .main-header .logo:hover{background-color:#f39a0d}.skin-yellow-light .main-header li.user-header{background-color:#f39c12}.skin-yellow-light .content-header{background:transparent}.skin-yellow-light .wrapper,.skin-yellow-light .main-sidebar,.skin-yellow-light .left-side{background-color:#f9fafc}.skin-yellow-light .content-wrapper,.skin-yellow-light .main-footer{border-left:1px solid #d2d6de}.skin-yellow-light .user-panel>.info,.skin-yellow-light .user-panel>.info>a{color:#444}.skin-yellow-light .sidebar-menu>li{-webkit-transition:border-left-color .3s ease;-o-transition:border-left-color .3s ease;transition:border-left-color .3s ease}.skin-yellow-light .sidebar-menu>li.header{color:#848484;background:#f9fafc}.skin-yellow-light .sidebar-menu>li>a{border-left:3px solid transparent;font-weight:600}.skin-yellow-light .sidebar-menu>li:hover>a,.skin-yellow-light .sidebar-menu>li.active>a{color:#000;background:#f4f4f5}.skin-yellow-light .sidebar-menu>li.active{border-left-color:#f39c12}.skin-yellow-light .sidebar-menu>li.active>a{font-weight:600}.skin-yellow-light .sidebar-menu>li>.treeview-menu{background:#f4f4f5}.skin-yellow-light .sidebar a{color:#444}.skin-yellow-light .sidebar a:hover{text-decoration:none}.skin-yellow-light .treeview-menu>li>a{color:#777}.skin-yellow-light .treeview-menu>li.active>a,.skin-yellow-light .treeview-menu>li>a:hover{color:#000}.skin-yellow-light .treeview-menu>li.active>a{font-weight:600}.skin-yellow-light .sidebar-form{border-radius:3px;border:1px solid #d2d6de;margin:10px 10px}.skin-yellow-light .sidebar-form input[type="text"],.skin-yellow-light .sidebar-form .btn{box-shadow:none;background-color:#fff;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-yellow-light .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-yellow-light .sidebar-form input[type="text"]:focus,.skin-yellow-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-yellow-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-yellow-light .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}@media (min-width:768px){.skin-yellow-light.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{border-left:1px solid #d2d6de}} -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/scripts/pages/dashboard2.js: -------------------------------------------------------------------------------- 1 | $(function () { 2 | 3 | 'use strict'; 4 | 5 | 6 | /* jVector Maps 7 | * ------------ 8 | * Create a world map with markers 9 | */ 10 | $('#world-map-markers').vectorMap({ 11 | map: 'world_mill_en', 12 | normalizeFunction: 'polynomial', 13 | hoverOpacity: 0.7, 14 | hoverColor: false, 15 | backgroundColor: 'transparent', 16 | regionStyle: { 17 | initial: { 18 | fill: 'rgba(210, 214, 222, 1)', 19 | "fill-opacity": 1, 20 | stroke: 'none', 21 | "stroke-width": 0, 22 | "stroke-opacity": 1 23 | }, 24 | hover: { 25 | "fill-opacity": 0.7, 26 | cursor: 'pointer' 27 | }, 28 | selected: { 29 | fill: 'yellow' 30 | }, 31 | selectedHover: { 32 | } 33 | }, 34 | markerStyle: { 35 | initial: { 36 | fill: '#00a65a', 37 | stroke: '#111' 38 | } 39 | }, 40 | markers: [ 41 | {latLng: [41.90, 12.45], name: 'Vatican City'}, 42 | {latLng: [43.73, 7.41], name: 'Monaco'}, 43 | {latLng: [-0.52, 166.93], name: 'Nauru'}, 44 | {latLng: [-8.51, 179.21], name: 'Tuvalu'}, 45 | {latLng: [43.93, 12.46], name: 'San Marino'}, 46 | {latLng: [47.14, 9.52], name: 'Liechtenstein'}, 47 | {latLng: [7.11, 171.06], name: 'Marshall Islands'}, 48 | {latLng: [17.3, -62.73], name: 'Saint Kitts and Nevis'}, 49 | {latLng: [3.2, 73.22], name: 'Maldives'}, 50 | {latLng: [35.88, 14.5], name: 'Malta'}, 51 | {latLng: [12.05, -61.75], name: 'Grenada'}, 52 | {latLng: [13.16, -61.23], name: 'Saint Vincent and the Grenadines'}, 53 | {latLng: [13.16, -59.55], name: 'Barbados'}, 54 | {latLng: [17.11, -61.85], name: 'Antigua and Barbuda'}, 55 | {latLng: [-4.61, 55.45], name: 'Seychelles'}, 56 | {latLng: [7.35, 134.46], name: 'Palau'}, 57 | {latLng: [42.5, 1.51], name: 'Andorra'}, 58 | {latLng: [14.01, -60.98], name: 'Saint Lucia'}, 59 | {latLng: [6.91, 158.18], name: 'Federated States of Micronesia'}, 60 | {latLng: [1.3, 103.8], name: 'Singapore'}, 61 | {latLng: [1.46, 173.03], name: 'Kiribati'}, 62 | {latLng: [-21.13, -175.2], name: 'Tonga'}, 63 | {latLng: [15.3, -61.38], name: 'Dominica'}, 64 | {latLng: [-20.2, 57.5], name: 'Mauritius'}, 65 | {latLng: [26.02, 50.55], name: 'Bahrain'}, 66 | {latLng: [0.33, 6.73], name: 'São Tomé and Príncipe'} 67 | ] 68 | }); 69 | 70 | /* SPARKLINE CHARTS 71 | * ---------------- 72 | * Create a inline charts with spark line 73 | */ 74 | 75 | //----------------- 76 | //- SPARKLINE BAR - 77 | //----------------- 78 | $('.sparkbar').each(function () { 79 | var $this = $(this); 80 | $this.sparkline('html', { 81 | type: 'bar', 82 | height: $this.data('height') ? $this.data('height') : '30', 83 | barColor: $this.data('color') 84 | }); 85 | }); 86 | 87 | //----------------- 88 | //- SPARKLINE PIE - 89 | //----------------- 90 | $('.sparkpie').each(function () { 91 | var $this = $(this); 92 | $this.sparkline('html', { 93 | type: 'pie', 94 | height: $this.data('height') ? $this.data('height') : '90', 95 | sliceColors: $this.data('color') 96 | }); 97 | }); 98 | 99 | //------------------ 100 | //- SPARKLINE LINE - 101 | //------------------ 102 | $('.sparkline').each(function () { 103 | var $this = $(this); 104 | $this.sparkline('html', { 105 | type: 'line', 106 | height: $this.data('height') ? $this.data('height') : '90', 107 | width: '100%', 108 | lineColor: $this.data('linecolor'), 109 | fillColor: $this.data('fillcolor'), 110 | spotColor: $this.data('spotcolor') 111 | }); 112 | }); 113 | }); 114 | -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/styles/skins/skin-blue-light.min.css: -------------------------------------------------------------------------------- 1 | .skin-blue-light .main-header .navbar{background-color:#3c8dbc}.skin-blue-light .main-header .navbar .nav>li>a{color:#fff}.skin-blue-light .main-header .navbar .nav>li>a:hover,.skin-blue-light .main-header .navbar .nav>li>a:active,.skin-blue-light .main-header .navbar .nav>li>a:focus,.skin-blue-light .main-header .navbar .nav .open>a,.skin-blue-light .main-header .navbar .nav .open>a:hover,.skin-blue-light .main-header .navbar .nav .open>a:focus,.skin-blue-light .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-blue-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-blue-light .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-blue-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-blue-light .main-header .navbar .sidebar-toggle:hover{background-color:#367fa9}@media (max-width:767px){.skin-blue-light .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-blue-light .main-header .navbar .dropdown-menu li a{color:#fff}.skin-blue-light .main-header .navbar .dropdown-menu li a:hover{background:#367fa9}}.skin-blue-light .main-header .logo{background-color:#3c8dbc;color:#fff;border-bottom:0 solid transparent}.skin-blue-light .main-header .logo:hover{background-color:#3b8ab8}.skin-blue-light .main-header li.user-header{background-color:#3c8dbc}.skin-blue-light .content-header{background:transparent}.skin-blue-light .wrapper,.skin-blue-light .main-sidebar,.skin-blue-light .left-side{background-color:#f9fafc}.skin-blue-light .content-wrapper,.skin-blue-light .main-footer{border-left:1px solid #d2d6de}.skin-blue-light .user-panel>.info,.skin-blue-light .user-panel>.info>a{color:#444}.skin-blue-light .sidebar-menu>li{-webkit-transition:border-left-color .3s ease;-o-transition:border-left-color .3s ease;transition:border-left-color .3s ease}.skin-blue-light .sidebar-menu>li.header{color:#848484;background:#f9fafc}.skin-blue-light .sidebar-menu>li>a{border-left:3px solid transparent;font-weight:600}.skin-blue-light .sidebar-menu>li:hover>a,.skin-blue-light .sidebar-menu>li.active>a{color:#000;background:#f4f4f5}.skin-blue-light .sidebar-menu>li.active{border-left-color:#3c8dbc}.skin-blue-light .sidebar-menu>li.active>a{font-weight:600}.skin-blue-light .sidebar-menu>li>.treeview-menu{background:#f4f4f5}.skin-blue-light .sidebar a{color:#444}.skin-blue-light .sidebar a:hover{text-decoration:none}.skin-blue-light .treeview-menu>li>a{color:#777}.skin-blue-light .treeview-menu>li.active>a,.skin-blue-light .treeview-menu>li>a:hover{color:#000}.skin-blue-light .treeview-menu>li.active>a{font-weight:600}.skin-blue-light .sidebar-form{border-radius:3px;border:1px solid #d2d6de;margin:10px 10px}.skin-blue-light .sidebar-form input[type="text"],.skin-blue-light .sidebar-form .btn{box-shadow:none;background-color:#fff;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-blue-light .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-blue-light .sidebar-form input[type="text"]:focus,.skin-blue-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-blue-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-blue-light .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}@media (min-width:768px){.skin-blue-light.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{border-left:1px solid #d2d6de}}.skin-blue-light .main-footer{border-top-color:#d2d6de}.skin-blue.layout-top-nav .main-header>.logo{background-color:#3c8dbc;color:#fff;border-bottom:0 solid transparent}.skin-blue.layout-top-nav .main-header>.logo:hover{background-color:#3b8ab8} -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/styles/skins/skin-black-light.min.css: -------------------------------------------------------------------------------- 1 | .skin-black-light .main-header{-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.skin-black-light .main-header .navbar-toggle{color:#333}.skin-black-light .main-header .navbar-brand{color:#333;border-right:1px solid #eee}.skin-black-light .main-header>.navbar{background-color:#fff}.skin-black-light .main-header>.navbar .nav>li>a{color:#333}.skin-black-light .main-header>.navbar .nav>li>a:hover,.skin-black-light .main-header>.navbar .nav>li>a:active,.skin-black-light .main-header>.navbar .nav>li>a:focus,.skin-black-light .main-header>.navbar .nav .open>a,.skin-black-light .main-header>.navbar .nav .open>a:hover,.skin-black-light .main-header>.navbar .nav .open>a:focus,.skin-black-light .main-header>.navbar .nav>.active>a{background:#fff;color:#999}.skin-black-light .main-header>.navbar .sidebar-toggle{color:#333}.skin-black-light .main-header>.navbar .sidebar-toggle:hover{color:#999;background:#fff}.skin-black-light .main-header>.navbar>.sidebar-toggle{color:#333;border-right:1px solid #eee}.skin-black-light .main-header>.navbar .navbar-nav>li>a{border-right:1px solid #eee}.skin-black-light .main-header>.navbar .navbar-custom-menu .navbar-nav>li>a,.skin-black-light .main-header>.navbar .navbar-right>li>a{border-left:1px solid #eee;border-right-width:0}.skin-black-light .main-header>.logo{background-color:#fff;color:#333;border-bottom:0 solid transparent;border-right:1px solid #eee}.skin-black-light .main-header>.logo:hover{background-color:#fcfcfc}@media (max-width:767px){.skin-black-light .main-header>.logo{background-color:#222;color:#fff;border-bottom:0 solid transparent;border-right:none}.skin-black-light .main-header>.logo:hover{background-color:#1f1f1f}}.skin-black-light .main-header li.user-header{background-color:#222}.skin-black-light .content-header{background:transparent;box-shadow:none}.skin-black-light .wrapper,.skin-black-light .main-sidebar,.skin-black-light .left-side{background-color:#f9fafc}.skin-black-light .content-wrapper,.skin-black-light .main-footer{border-left:1px solid #d2d6de}.skin-black-light .user-panel>.info,.skin-black-light .user-panel>.info>a{color:#444}.skin-black-light .sidebar-menu>li{-webkit-transition:border-left-color .3s ease;-o-transition:border-left-color .3s ease;transition:border-left-color .3s ease}.skin-black-light .sidebar-menu>li.header{color:#848484;background:#f9fafc}.skin-black-light .sidebar-menu>li>a{border-left:3px solid transparent;font-weight:600}.skin-black-light .sidebar-menu>li:hover>a,.skin-black-light .sidebar-menu>li.active>a{color:#000;background:#f4f4f5}.skin-black-light .sidebar-menu>li.active{border-left-color:#fff}.skin-black-light .sidebar-menu>li.active>a{font-weight:600}.skin-black-light .sidebar-menu>li>.treeview-menu{background:#f4f4f5}.skin-black-light .sidebar a{color:#444}.skin-black-light .sidebar a:hover{text-decoration:none}.skin-black-light .treeview-menu>li>a{color:#777}.skin-black-light .treeview-menu>li.active>a,.skin-black-light .treeview-menu>li>a:hover{color:#000}.skin-black-light .treeview-menu>li.active>a{font-weight:600}.skin-black-light .sidebar-form{border-radius:3px;border:1px solid #d2d6de;margin:10px 10px}.skin-black-light .sidebar-form input[type="text"],.skin-black-light .sidebar-form .btn{box-shadow:none;background-color:#fff;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-black-light .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-black-light .sidebar-form input[type="text"]:focus,.skin-black-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-black-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-black-light .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}@media (min-width:768px){.skin-black-light.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{border-left:1px solid #d2d6de}} -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/styles/skins/skin-red.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Skin: Red 3 | * --------- 4 | */ 5 | .skin-red .main-header .navbar { 6 | background-color: #dd4b39; 7 | } 8 | .skin-red .main-header .navbar .nav > li > a { 9 | color: #ffffff; 10 | } 11 | .skin-red .main-header .navbar .nav > li > a:hover, 12 | .skin-red .main-header .navbar .nav > li > a:active, 13 | .skin-red .main-header .navbar .nav > li > a:focus, 14 | .skin-red .main-header .navbar .nav .open > a, 15 | .skin-red .main-header .navbar .nav .open > a:hover, 16 | .skin-red .main-header .navbar .nav .open > a:focus, 17 | .skin-red .main-header .navbar .nav > .active > a { 18 | background: rgba(0, 0, 0, 0.1); 19 | color: #f6f6f6; 20 | } 21 | .skin-red .main-header .navbar .sidebar-toggle { 22 | color: #ffffff; 23 | } 24 | .skin-red .main-header .navbar .sidebar-toggle:hover { 25 | color: #f6f6f6; 26 | background: rgba(0, 0, 0, 0.1); 27 | } 28 | .skin-red .main-header .navbar .sidebar-toggle { 29 | color: #fff; 30 | } 31 | .skin-red .main-header .navbar .sidebar-toggle:hover { 32 | background-color: #d73925; 33 | } 34 | @media (max-width: 767px) { 35 | .skin-red .main-header .navbar .dropdown-menu li.divider { 36 | background-color: rgba(255, 255, 255, 0.1); 37 | } 38 | .skin-red .main-header .navbar .dropdown-menu li a { 39 | color: #fff; 40 | } 41 | .skin-red .main-header .navbar .dropdown-menu li a:hover { 42 | background: #d73925; 43 | } 44 | } 45 | .skin-red .main-header .logo { 46 | background-color: #d73925; 47 | color: #ffffff; 48 | border-bottom: 0 solid transparent; 49 | } 50 | .skin-red .main-header .logo:hover { 51 | background-color: #d33724; 52 | } 53 | .skin-red .main-header li.user-header { 54 | background-color: #dd4b39; 55 | } 56 | .skin-red .content-header { 57 | background: transparent; 58 | } 59 | .skin-red .wrapper, 60 | .skin-red .main-sidebar, 61 | .skin-red .left-side { 62 | background-color: #222d32; 63 | } 64 | .skin-red .user-panel > .info, 65 | .skin-red .user-panel > .info > a { 66 | color: #fff; 67 | } 68 | .skin-red .sidebar-menu > li.header { 69 | color: #4b646f; 70 | background: #1a2226; 71 | } 72 | .skin-red .sidebar-menu > li > a { 73 | border-left: 3px solid transparent; 74 | } 75 | .skin-red .sidebar-menu > li:hover > a, 76 | .skin-red .sidebar-menu > li.active > a { 77 | color: #ffffff; 78 | background: #1e282c; 79 | border-left-color: #dd4b39; 80 | } 81 | .skin-red .sidebar-menu > li > .treeview-menu { 82 | margin: 0 1px; 83 | background: #2c3b41; 84 | } 85 | .skin-red .sidebar a { 86 | color: #b8c7ce; 87 | } 88 | .skin-red .sidebar a:hover { 89 | text-decoration: none; 90 | } 91 | .skin-red .treeview-menu > li > a { 92 | color: #8aa4af; 93 | } 94 | .skin-red .treeview-menu > li.active > a, 95 | .skin-red .treeview-menu > li > a:hover { 96 | color: #ffffff; 97 | } 98 | .skin-red .sidebar-form { 99 | border-radius: 3px; 100 | border: 1px solid #374850; 101 | margin: 10px 10px; 102 | } 103 | .skin-red .sidebar-form input[type="text"], 104 | .skin-red .sidebar-form .btn { 105 | box-shadow: none; 106 | background-color: #374850; 107 | border: 1px solid transparent; 108 | height: 35px; 109 | -webkit-transition: all 0.3s ease-in-out; 110 | -o-transition: all 0.3s ease-in-out; 111 | transition: all 0.3s ease-in-out; 112 | } 113 | .skin-red .sidebar-form input[type="text"] { 114 | color: #666; 115 | border-top-left-radius: 2px; 116 | border-top-right-radius: 0; 117 | border-bottom-right-radius: 0; 118 | border-bottom-left-radius: 2px; 119 | } 120 | .skin-red .sidebar-form input[type="text"]:focus, 121 | .skin-red .sidebar-form input[type="text"]:focus + .input-group-btn .btn { 122 | background-color: #fff; 123 | color: #666; 124 | } 125 | .skin-red .sidebar-form input[type="text"]:focus + .input-group-btn .btn { 126 | border-left-color: #fff; 127 | } 128 | .skin-red .sidebar-form .btn { 129 | color: #999; 130 | border-top-left-radius: 0; 131 | border-top-right-radius: 2px; 132 | border-bottom-right-radius: 2px; 133 | border-bottom-left-radius: 0; 134 | } 135 | -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/styles/skins/skin-green.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Skin: Green 3 | * ----------- 4 | */ 5 | .skin-green .main-header .navbar { 6 | background-color: #00a65a; 7 | } 8 | .skin-green .main-header .navbar .nav > li > a { 9 | color: #ffffff; 10 | } 11 | .skin-green .main-header .navbar .nav > li > a:hover, 12 | .skin-green .main-header .navbar .nav > li > a:active, 13 | .skin-green .main-header .navbar .nav > li > a:focus, 14 | .skin-green .main-header .navbar .nav .open > a, 15 | .skin-green .main-header .navbar .nav .open > a:hover, 16 | .skin-green .main-header .navbar .nav .open > a:focus, 17 | .skin-green .main-header .navbar .nav > .active > a { 18 | background: rgba(0, 0, 0, 0.1); 19 | color: #f6f6f6; 20 | } 21 | .skin-green .main-header .navbar .sidebar-toggle { 22 | color: #ffffff; 23 | } 24 | .skin-green .main-header .navbar .sidebar-toggle:hover { 25 | color: #f6f6f6; 26 | background: rgba(0, 0, 0, 0.1); 27 | } 28 | .skin-green .main-header .navbar .sidebar-toggle { 29 | color: #fff; 30 | } 31 | .skin-green .main-header .navbar .sidebar-toggle:hover { 32 | background-color: #008d4c; 33 | } 34 | @media (max-width: 767px) { 35 | .skin-green .main-header .navbar .dropdown-menu li.divider { 36 | background-color: rgba(255, 255, 255, 0.1); 37 | } 38 | .skin-green .main-header .navbar .dropdown-menu li a { 39 | color: #fff; 40 | } 41 | .skin-green .main-header .navbar .dropdown-menu li a:hover { 42 | background: #008d4c; 43 | } 44 | } 45 | .skin-green .main-header .logo { 46 | background-color: #008d4c; 47 | color: #ffffff; 48 | border-bottom: 0 solid transparent; 49 | } 50 | .skin-green .main-header .logo:hover { 51 | background-color: #008749; 52 | } 53 | .skin-green .main-header li.user-header { 54 | background-color: #00a65a; 55 | } 56 | .skin-green .content-header { 57 | background: transparent; 58 | } 59 | .skin-green .wrapper, 60 | .skin-green .main-sidebar, 61 | .skin-green .left-side { 62 | background-color: #222d32; 63 | } 64 | .skin-green .user-panel > .info, 65 | .skin-green .user-panel > .info > a { 66 | color: #fff; 67 | } 68 | .skin-green .sidebar-menu > li.header { 69 | color: #4b646f; 70 | background: #1a2226; 71 | } 72 | .skin-green .sidebar-menu > li > a { 73 | border-left: 3px solid transparent; 74 | } 75 | .skin-green .sidebar-menu > li:hover > a, 76 | .skin-green .sidebar-menu > li.active > a { 77 | color: #ffffff; 78 | background: #1e282c; 79 | border-left-color: #00a65a; 80 | } 81 | .skin-green .sidebar-menu > li > .treeview-menu { 82 | margin: 0 1px; 83 | background: #2c3b41; 84 | } 85 | .skin-green .sidebar a { 86 | color: #b8c7ce; 87 | } 88 | .skin-green .sidebar a:hover { 89 | text-decoration: none; 90 | } 91 | .skin-green .treeview-menu > li > a { 92 | color: #8aa4af; 93 | } 94 | .skin-green .treeview-menu > li.active > a, 95 | .skin-green .treeview-menu > li > a:hover { 96 | color: #ffffff; 97 | } 98 | .skin-green .sidebar-form { 99 | border-radius: 3px; 100 | border: 1px solid #374850; 101 | margin: 10px 10px; 102 | } 103 | .skin-green .sidebar-form input[type="text"], 104 | .skin-green .sidebar-form .btn { 105 | box-shadow: none; 106 | background-color: #374850; 107 | border: 1px solid transparent; 108 | height: 35px; 109 | -webkit-transition: all 0.3s ease-in-out; 110 | -o-transition: all 0.3s ease-in-out; 111 | transition: all 0.3s ease-in-out; 112 | } 113 | .skin-green .sidebar-form input[type="text"] { 114 | color: #666; 115 | border-top-left-radius: 2px; 116 | border-top-right-radius: 0; 117 | border-bottom-right-radius: 0; 118 | border-bottom-left-radius: 2px; 119 | } 120 | .skin-green .sidebar-form input[type="text"]:focus, 121 | .skin-green .sidebar-form input[type="text"]:focus + .input-group-btn .btn { 122 | background-color: #fff; 123 | color: #666; 124 | } 125 | .skin-green .sidebar-form input[type="text"]:focus + .input-group-btn .btn { 126 | border-left-color: #fff; 127 | } 128 | .skin-green .sidebar-form .btn { 129 | color: #999; 130 | border-top-left-radius: 0; 131 | border-top-right-radius: 2px; 132 | border-bottom-right-radius: 2px; 133 | border-bottom-left-radius: 0; 134 | } 135 | -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/styles/skins/skin-purple.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Skin: Purple 3 | * ------------ 4 | */ 5 | .skin-purple .main-header .navbar { 6 | background-color: #605ca8; 7 | } 8 | .skin-purple .main-header .navbar .nav > li > a { 9 | color: #ffffff; 10 | } 11 | .skin-purple .main-header .navbar .nav > li > a:hover, 12 | .skin-purple .main-header .navbar .nav > li > a:active, 13 | .skin-purple .main-header .navbar .nav > li > a:focus, 14 | .skin-purple .main-header .navbar .nav .open > a, 15 | .skin-purple .main-header .navbar .nav .open > a:hover, 16 | .skin-purple .main-header .navbar .nav .open > a:focus, 17 | .skin-purple .main-header .navbar .nav > .active > a { 18 | background: rgba(0, 0, 0, 0.1); 19 | color: #f6f6f6; 20 | } 21 | .skin-purple .main-header .navbar .sidebar-toggle { 22 | color: #ffffff; 23 | } 24 | .skin-purple .main-header .navbar .sidebar-toggle:hover { 25 | color: #f6f6f6; 26 | background: rgba(0, 0, 0, 0.1); 27 | } 28 | .skin-purple .main-header .navbar .sidebar-toggle { 29 | color: #fff; 30 | } 31 | .skin-purple .main-header .navbar .sidebar-toggle:hover { 32 | background-color: #555299; 33 | } 34 | @media (max-width: 767px) { 35 | .skin-purple .main-header .navbar .dropdown-menu li.divider { 36 | background-color: rgba(255, 255, 255, 0.1); 37 | } 38 | .skin-purple .main-header .navbar .dropdown-menu li a { 39 | color: #fff; 40 | } 41 | .skin-purple .main-header .navbar .dropdown-menu li a:hover { 42 | background: #555299; 43 | } 44 | } 45 | .skin-purple .main-header .logo { 46 | background-color: #555299; 47 | color: #ffffff; 48 | border-bottom: 0 solid transparent; 49 | } 50 | .skin-purple .main-header .logo:hover { 51 | background-color: #545096; 52 | } 53 | .skin-purple .main-header li.user-header { 54 | background-color: #605ca8; 55 | } 56 | .skin-purple .content-header { 57 | background: transparent; 58 | } 59 | .skin-purple .wrapper, 60 | .skin-purple .main-sidebar, 61 | .skin-purple .left-side { 62 | background-color: #222d32; 63 | } 64 | .skin-purple .user-panel > .info, 65 | .skin-purple .user-panel > .info > a { 66 | color: #fff; 67 | } 68 | .skin-purple .sidebar-menu > li.header { 69 | color: #4b646f; 70 | background: #1a2226; 71 | } 72 | .skin-purple .sidebar-menu > li > a { 73 | border-left: 3px solid transparent; 74 | } 75 | .skin-purple .sidebar-menu > li:hover > a, 76 | .skin-purple .sidebar-menu > li.active > a { 77 | color: #ffffff; 78 | background: #1e282c; 79 | border-left-color: #605ca8; 80 | } 81 | .skin-purple .sidebar-menu > li > .treeview-menu { 82 | margin: 0 1px; 83 | background: #2c3b41; 84 | } 85 | .skin-purple .sidebar a { 86 | color: #b8c7ce; 87 | } 88 | .skin-purple .sidebar a:hover { 89 | text-decoration: none; 90 | } 91 | .skin-purple .treeview-menu > li > a { 92 | color: #8aa4af; 93 | } 94 | .skin-purple .treeview-menu > li.active > a, 95 | .skin-purple .treeview-menu > li > a:hover { 96 | color: #ffffff; 97 | } 98 | .skin-purple .sidebar-form { 99 | border-radius: 3px; 100 | border: 1px solid #374850; 101 | margin: 10px 10px; 102 | } 103 | .skin-purple .sidebar-form input[type="text"], 104 | .skin-purple .sidebar-form .btn { 105 | box-shadow: none; 106 | background-color: #374850; 107 | border: 1px solid transparent; 108 | height: 35px; 109 | -webkit-transition: all 0.3s ease-in-out; 110 | -o-transition: all 0.3s ease-in-out; 111 | transition: all 0.3s ease-in-out; 112 | } 113 | .skin-purple .sidebar-form input[type="text"] { 114 | color: #666; 115 | border-top-left-radius: 2px; 116 | border-top-right-radius: 0; 117 | border-bottom-right-radius: 0; 118 | border-bottom-left-radius: 2px; 119 | } 120 | .skin-purple .sidebar-form input[type="text"]:focus, 121 | .skin-purple .sidebar-form input[type="text"]:focus + .input-group-btn .btn { 122 | background-color: #fff; 123 | color: #666; 124 | } 125 | .skin-purple .sidebar-form input[type="text"]:focus + .input-group-btn .btn { 126 | border-left-color: #fff; 127 | } 128 | .skin-purple .sidebar-form .btn { 129 | color: #999; 130 | border-top-left-radius: 0; 131 | border-top-right-radius: 2px; 132 | border-bottom-right-radius: 2px; 133 | border-bottom-left-radius: 0; 134 | } 135 | -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/styles/skins/skin-yellow.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Skin: Yellow 3 | * ------------ 4 | */ 5 | .skin-yellow .main-header .navbar { 6 | background-color: #f39c12; 7 | } 8 | .skin-yellow .main-header .navbar .nav > li > a { 9 | color: #ffffff; 10 | } 11 | .skin-yellow .main-header .navbar .nav > li > a:hover, 12 | .skin-yellow .main-header .navbar .nav > li > a:active, 13 | .skin-yellow .main-header .navbar .nav > li > a:focus, 14 | .skin-yellow .main-header .navbar .nav .open > a, 15 | .skin-yellow .main-header .navbar .nav .open > a:hover, 16 | .skin-yellow .main-header .navbar .nav .open > a:focus, 17 | .skin-yellow .main-header .navbar .nav > .active > a { 18 | background: rgba(0, 0, 0, 0.1); 19 | color: #f6f6f6; 20 | } 21 | .skin-yellow .main-header .navbar .sidebar-toggle { 22 | color: #ffffff; 23 | } 24 | .skin-yellow .main-header .navbar .sidebar-toggle:hover { 25 | color: #f6f6f6; 26 | background: rgba(0, 0, 0, 0.1); 27 | } 28 | .skin-yellow .main-header .navbar .sidebar-toggle { 29 | color: #fff; 30 | } 31 | .skin-yellow .main-header .navbar .sidebar-toggle:hover { 32 | background-color: #e08e0b; 33 | } 34 | @media (max-width: 767px) { 35 | .skin-yellow .main-header .navbar .dropdown-menu li.divider { 36 | background-color: rgba(255, 255, 255, 0.1); 37 | } 38 | .skin-yellow .main-header .navbar .dropdown-menu li a { 39 | color: #fff; 40 | } 41 | .skin-yellow .main-header .navbar .dropdown-menu li a:hover { 42 | background: #e08e0b; 43 | } 44 | } 45 | .skin-yellow .main-header .logo { 46 | background-color: #e08e0b; 47 | color: #ffffff; 48 | border-bottom: 0 solid transparent; 49 | } 50 | .skin-yellow .main-header .logo:hover { 51 | background-color: #db8b0b; 52 | } 53 | .skin-yellow .main-header li.user-header { 54 | background-color: #f39c12; 55 | } 56 | .skin-yellow .content-header { 57 | background: transparent; 58 | } 59 | .skin-yellow .wrapper, 60 | .skin-yellow .main-sidebar, 61 | .skin-yellow .left-side { 62 | background-color: #222d32; 63 | } 64 | .skin-yellow .user-panel > .info, 65 | .skin-yellow .user-panel > .info > a { 66 | color: #fff; 67 | } 68 | .skin-yellow .sidebar-menu > li.header { 69 | color: #4b646f; 70 | background: #1a2226; 71 | } 72 | .skin-yellow .sidebar-menu > li > a { 73 | border-left: 3px solid transparent; 74 | } 75 | .skin-yellow .sidebar-menu > li:hover > a, 76 | .skin-yellow .sidebar-menu > li.active > a { 77 | color: #ffffff; 78 | background: #1e282c; 79 | border-left-color: #f39c12; 80 | } 81 | .skin-yellow .sidebar-menu > li > .treeview-menu { 82 | margin: 0 1px; 83 | background: #2c3b41; 84 | } 85 | .skin-yellow .sidebar a { 86 | color: #b8c7ce; 87 | } 88 | .skin-yellow .sidebar a:hover { 89 | text-decoration: none; 90 | } 91 | .skin-yellow .treeview-menu > li > a { 92 | color: #8aa4af; 93 | } 94 | .skin-yellow .treeview-menu > li.active > a, 95 | .skin-yellow .treeview-menu > li > a:hover { 96 | color: #ffffff; 97 | } 98 | .skin-yellow .sidebar-form { 99 | border-radius: 3px; 100 | border: 1px solid #374850; 101 | margin: 10px 10px; 102 | } 103 | .skin-yellow .sidebar-form input[type="text"], 104 | .skin-yellow .sidebar-form .btn { 105 | box-shadow: none; 106 | background-color: #374850; 107 | border: 1px solid transparent; 108 | height: 35px; 109 | -webkit-transition: all 0.3s ease-in-out; 110 | -o-transition: all 0.3s ease-in-out; 111 | transition: all 0.3s ease-in-out; 112 | } 113 | .skin-yellow .sidebar-form input[type="text"] { 114 | color: #666; 115 | border-top-left-radius: 2px; 116 | border-top-right-radius: 0; 117 | border-bottom-right-radius: 0; 118 | border-bottom-left-radius: 2px; 119 | } 120 | .skin-yellow .sidebar-form input[type="text"]:focus, 121 | .skin-yellow .sidebar-form input[type="text"]:focus + .input-group-btn .btn { 122 | background-color: #fff; 123 | color: #666; 124 | } 125 | .skin-yellow .sidebar-form input[type="text"]:focus + .input-group-btn .btn { 126 | border-left-color: #fff; 127 | } 128 | .skin-yellow .sidebar-form .btn { 129 | color: #999; 130 | border-top-left-radius: 0; 131 | border-top-right-radius: 2px; 132 | border-bottom-right-radius: 2px; 133 | border-bottom-left-radius: 0; 134 | } 135 | -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/scripts/respond.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | ! Respond.js v1.4.2: min/max-width media query polyfill * Copyright 2013 Scott Jehl 3 | * Licensed under https://github.com/scottjehl/Respond/blob/master/LICENSE-MIT 4 | * */ 5 | 6 | !function(a){"use strict";a.matchMedia=a.matchMedia||function(a){var b,c=a.documentElement,d=c.firstElementChild||c.firstChild,e=a.createElement("body"),f=a.createElement("div");return f.id="mq-test-1",f.style.cssText="position:absolute;top:-100em",e.style.background="none",e.appendChild(f),function(a){return f.innerHTML='­',c.insertBefore(e,d),b=42===f.offsetWidth,c.removeChild(e),{matches:b,media:a}}}(a.document)}(this),function(a){"use strict";function b(){u(!0)}var c={};a.respond=c,c.update=function(){};var d=[],e=function(){var b=!1;try{b=new a.XMLHttpRequest}catch(c){b=new a.ActiveXObject("Microsoft.XMLHTTP")}return function(){return b}}(),f=function(a,b){var c=e();c&&(c.open("GET",a,!0),c.onreadystatechange=function(){4!==c.readyState||200!==c.status&&304!==c.status||b(c.responseText)},4!==c.readyState&&c.send(null))};if(c.ajax=f,c.queue=d,c.regex={media:/@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi,keyframes:/@(?:\-(?:o|moz|webkit)\-)?keyframes[^\{]+\{(?:[^\{\}]*\{[^\}\{]*\})+[^\}]*\}/gi,urls:/(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,findStyles:/@media *([^\{]+)\{([\S\s]+?)$/,only:/(only\s+)?([a-zA-Z]+)\s?/,minw:/\([\s]*min\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/,maxw:/\([\s]*max\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/},c.mediaQueriesSupported=a.matchMedia&&null!==a.matchMedia("only all")&&a.matchMedia("only all").matches,!c.mediaQueriesSupported){var g,h,i,j=a.document,k=j.documentElement,l=[],m=[],n=[],o={},p=30,q=j.getElementsByTagName("head")[0]||k,r=j.getElementsByTagName("base")[0],s=q.getElementsByTagName("link"),t=function(){var a,b=j.createElement("div"),c=j.body,d=k.style.fontSize,e=c&&c.style.fontSize,f=!1;return b.style.cssText="position:absolute;font-size:1em;width:1em",c||(c=f=j.createElement("body"),c.style.background="none"),k.style.fontSize="100%",c.style.fontSize="100%",c.appendChild(b),f&&k.insertBefore(c,k.firstChild),a=b.offsetWidth,f?k.removeChild(c):c.removeChild(b),k.style.fontSize=d,e&&(c.style.fontSize=e),a=i=parseFloat(a)},u=function(b){var c="clientWidth",d=k[c],e="CSS1Compat"===j.compatMode&&d||j.body[c]||d,f={},o=s[s.length-1],r=(new Date).getTime();if(b&&g&&p>r-g)return a.clearTimeout(h),h=a.setTimeout(u,p),void 0;g=r;for(var v in l)if(l.hasOwnProperty(v)){var w=l[v],x=w.minw,y=w.maxw,z=null===x,A=null===y,B="em";x&&(x=parseFloat(x)*(x.indexOf(B)>-1?i||t():1)),y&&(y=parseFloat(y)*(y.indexOf(B)>-1?i||t():1)),w.hasquery&&(z&&A||!(z||e>=x)||!(A||y>=e))||(f[w.media]||(f[w.media]=[]),f[w.media].push(m[w.rules]))}for(var C in n)n.hasOwnProperty(C)&&n[C]&&n[C].parentNode===q&&q.removeChild(n[C]);n.length=0;for(var D in f)if(f.hasOwnProperty(D)){var E=j.createElement("style"),F=f[D].join("\n");E.type="text/css",E.media=D,q.insertBefore(E,o.nextSibling),E.styleSheet?E.styleSheet.cssText=F:E.appendChild(j.createTextNode(F)),n.push(E)}},v=function(a,b,d){var e=a.replace(c.regex.keyframes,"").match(c.regex.media),f=e&&e.length||0;b=b.substring(0,b.lastIndexOf("/"));var g=function(a){return a.replace(c.regex.urls,"$1"+b+"$2$3")},h=!f&&d;b.length&&(b+="/"),h&&(f=1);for(var i=0;f>i;i++){var j,k,n,o;h?(j=d,m.push(g(a))):(j=e[i].match(c.regex.findStyles)&&RegExp.$1,m.push(RegExp.$2&&g(RegExp.$2))),n=j.split(","),o=n.length;for(var p=0;o>p;p++)k=n[p],l.push({media:k.split("(")[0].match(c.regex.only)&&RegExp.$2||"all",rules:m.length-1,hasquery:k.indexOf("(")>-1,minw:k.match(c.regex.minw)&&parseFloat(RegExp.$1)+(RegExp.$2||""),maxw:k.match(c.regex.maxw)&&parseFloat(RegExp.$1)+(RegExp.$2||"")})}u()},w=function(){if(d.length){var b=d.shift();f(b.href,function(c){v(c,b.href,b.media),o[b.href]=!0,a.setTimeout(function(){w()},0)})}},x=function(){for(var b=0;b li > a { 9 | color: #ffffff; 10 | } 11 | .skin-blue .main-header .navbar .nav > li > a:hover, 12 | .skin-blue .main-header .navbar .nav > li > a:active, 13 | .skin-blue .main-header .navbar .nav > li > a:focus, 14 | .skin-blue .main-header .navbar .nav .open > a, 15 | .skin-blue .main-header .navbar .nav .open > a:hover, 16 | .skin-blue .main-header .navbar .nav .open > a:focus, 17 | .skin-blue .main-header .navbar .nav > .active > a { 18 | background: rgba(0, 0, 0, 0.1); 19 | color: #f6f6f6; 20 | } 21 | .skin-blue .main-header .navbar .sidebar-toggle { 22 | color: #ffffff; 23 | } 24 | .skin-blue .main-header .navbar .sidebar-toggle:hover { 25 | color: #f6f6f6; 26 | background: rgba(0, 0, 0, 0.1); 27 | } 28 | .skin-blue .main-header .navbar .sidebar-toggle { 29 | color: #fff; 30 | } 31 | .skin-blue .main-header .navbar .sidebar-toggle:hover { 32 | background-color: #367fa9; 33 | } 34 | @media (max-width: 767px) { 35 | .skin-blue .main-header .navbar .dropdown-menu li.divider { 36 | background-color: rgba(255, 255, 255, 0.1); 37 | } 38 | .skin-blue .main-header .navbar .dropdown-menu li a { 39 | color: #fff; 40 | } 41 | .skin-blue .main-header .navbar .dropdown-menu li a:hover { 42 | background: #367fa9; 43 | } 44 | } 45 | .skin-blue .main-header .logo { 46 | background-color: #367fa9; 47 | color: #ffffff; 48 | border-bottom: 0 solid transparent; 49 | } 50 | .skin-blue .main-header .logo:hover { 51 | background-color: #357ca5; 52 | } 53 | .skin-blue .main-header li.user-header { 54 | background-color: #3c8dbc; 55 | } 56 | .skin-blue .content-header { 57 | background: transparent; 58 | } 59 | .skin-blue .wrapper, 60 | .skin-blue .main-sidebar, 61 | .skin-blue .left-side { 62 | background-color: #222d32; 63 | } 64 | .skin-blue .user-panel > .info, 65 | .skin-blue .user-panel > .info > a { 66 | color: #fff; 67 | } 68 | .skin-blue .sidebar-menu > li.header { 69 | color: #4b646f; 70 | background: #1a2226; 71 | } 72 | .skin-blue .sidebar-menu > li > a { 73 | border-left: 3px solid transparent; 74 | } 75 | .skin-blue .sidebar-menu > li:hover > a, 76 | .skin-blue .sidebar-menu > li.active > a { 77 | color: #ffffff; 78 | background: #1e282c; 79 | border-left-color: #3c8dbc; 80 | } 81 | .skin-blue .sidebar-menu > li > .treeview-menu { 82 | margin: 0 1px; 83 | background: #2c3b41; 84 | } 85 | .skin-blue .sidebar a { 86 | color: #b8c7ce; 87 | } 88 | .skin-blue .sidebar a:hover { 89 | text-decoration: none; 90 | } 91 | .skin-blue .treeview-menu > li > a { 92 | color: #8aa4af; 93 | } 94 | .skin-blue .treeview-menu > li.active > a, 95 | .skin-blue .treeview-menu > li > a:hover { 96 | color: #ffffff; 97 | } 98 | .skin-blue .sidebar-form { 99 | border-radius: 3px; 100 | border: 1px solid #374850; 101 | margin: 10px 10px; 102 | } 103 | .skin-blue .sidebar-form input[type="text"], 104 | .skin-blue .sidebar-form .btn { 105 | box-shadow: none; 106 | background-color: #374850; 107 | border: 1px solid transparent; 108 | height: 35px; 109 | -webkit-transition: all 0.3s ease-in-out; 110 | -o-transition: all 0.3s ease-in-out; 111 | transition: all 0.3s ease-in-out; 112 | } 113 | .skin-blue .sidebar-form input[type="text"] { 114 | color: #666; 115 | border-top-left-radius: 2px; 116 | border-top-right-radius: 0; 117 | border-bottom-right-radius: 0; 118 | border-bottom-left-radius: 2px; 119 | } 120 | .skin-blue .sidebar-form input[type="text"]:focus, 121 | .skin-blue .sidebar-form input[type="text"]:focus + .input-group-btn .btn { 122 | background-color: #fff; 123 | color: #666; 124 | } 125 | .skin-blue .sidebar-form input[type="text"]:focus + .input-group-btn .btn { 126 | border-left-color: #fff; 127 | } 128 | .skin-blue .sidebar-form .btn { 129 | color: #999; 130 | border-top-left-radius: 0; 131 | border-top-right-radius: 2px; 132 | border-bottom-right-radius: 2px; 133 | border-bottom-left-radius: 0; 134 | } 135 | .skin-blue.layout-top-nav .main-header > .logo { 136 | background-color: #3c8dbc; 137 | color: #ffffff; 138 | border-bottom: 0 solid transparent; 139 | } 140 | .skin-blue.layout-top-nav .main-header > .logo:hover { 141 | background-color: #3b8ab8; 142 | } 143 | -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/scripts/icheck.min.js: -------------------------------------------------------------------------------- 1 | /*! iCheck v1.0.1 by Damir Sultanov, http://git.io/arlzeA, MIT Licensed */ 2 | (function(h){function F(a,b,d){var c=a[0],e=/er/.test(d)?m:/bl/.test(d)?s:l,f=d==H?{checked:c[l],disabled:c[s],indeterminate:"true"==a.attr(m)||"false"==a.attr(w)}:c[e];if(/^(ch|di|in)/.test(d)&&!f)D(a,e);else if(/^(un|en|de)/.test(d)&&f)t(a,e);else if(d==H)for(e in f)f[e]?D(a,e,!0):t(a,e,!0);else if(!b||"toggle"==d){if(!b)a[p]("ifClicked");f?c[n]!==u&&t(a,e):D(a,e)}}function D(a,b,d){var c=a[0],e=a.parent(),f=b==l,A=b==m,B=b==s,K=A?w:f?E:"enabled",p=k(a,K+x(c[n])),N=k(a,b+x(c[n]));if(!0!==c[b]){if(!d&& 3 | b==l&&c[n]==u&&c.name){var C=a.closest("form"),r='input[name="'+c.name+'"]',r=C.length?C.find(r):h(r);r.each(function(){this!==c&&h(this).data(q)&&t(h(this),b)})}A?(c[b]=!0,c[l]&&t(a,l,"force")):(d||(c[b]=!0),f&&c[m]&&t(a,m,!1));L(a,f,b,d)}c[s]&&k(a,y,!0)&&e.find("."+I).css(y,"default");e[v](N||k(a,b)||"");B?e.attr("aria-disabled","true"):e.attr("aria-checked",A?"mixed":"true");e[z](p||k(a,K)||"")}function t(a,b,d){var c=a[0],e=a.parent(),f=b==l,h=b==m,q=b==s,p=h?w:f?E:"enabled",t=k(a,p+x(c[n])), 4 | u=k(a,b+x(c[n]));if(!1!==c[b]){if(h||!d||"force"==d)c[b]=!1;L(a,f,p,d)}!c[s]&&k(a,y,!0)&&e.find("."+I).css(y,"pointer");e[z](u||k(a,b)||"");q?e.attr("aria-disabled","false"):e.attr("aria-checked","false");e[v](t||k(a,p)||"")}function M(a,b){if(a.data(q)){a.parent().html(a.attr("style",a.data(q).s||""));if(b)a[p](b);a.off(".i").unwrap();h(G+'[for="'+a[0].id+'"]').add(a.closest(G)).off(".i")}}function k(a,b,d){if(a.data(q))return a.data(q).o[b+(d?"":"Class")]}function x(a){return a.charAt(0).toUpperCase()+ 5 | a.slice(1)}function L(a,b,d,c){if(!c){if(b)a[p]("ifToggled");a[p]("ifChanged")[p]("if"+x(d))}}var q="iCheck",I=q+"-helper",u="radio",l="checked",E="un"+l,s="disabled",w="determinate",m="in"+w,H="update",n="type",v="addClass",z="removeClass",p="trigger",G="label",y="cursor",J=/ipad|iphone|ipod|android|blackberry|windows phone|opera mini|silk/i.test(navigator.userAgent);h.fn[q]=function(a,b){var d='input[type="checkbox"], input[type="'+u+'"]',c=h(),e=function(a){a.each(function(){var a=h(this);c=a.is(d)? 6 | c.add(a):c.add(a.find(d))})};if(/^(check|uncheck|toggle|indeterminate|determinate|disable|enable|update|destroy)$/i.test(a))return a=a.toLowerCase(),e(this),c.each(function(){var c=h(this);"destroy"==a?M(c,"ifDestroyed"):F(c,!0,a);h.isFunction(b)&&b()});if("object"!=typeof a&&a)return this;var f=h.extend({checkedClass:l,disabledClass:s,indeterminateClass:m,labelHover:!0,aria:!1},a),k=f.handle,B=f.hoverClass||"hover",x=f.focusClass||"focus",w=f.activeClass||"active",y=!!f.labelHover,C=f.labelHoverClass|| 7 | "hover",r=(""+f.increaseArea).replace("%","")|0;if("checkbox"==k||k==u)d='input[type="'+k+'"]';-50>r&&(r=-50);e(this);return c.each(function(){var a=h(this);M(a);var c=this,b=c.id,e=-r+"%",d=100+2*r+"%",d={position:"absolute",top:e,left:e,display:"block",width:d,height:d,margin:0,padding:0,background:"#fff",border:0,opacity:0},e=J?{position:"absolute",visibility:"hidden"}:r?d:{position:"absolute",opacity:0},k="checkbox"==c[n]?f.checkboxClass||"icheckbox":f.radioClass||"i"+u,m=h(G+'[for="'+b+'"]').add(a.closest(G)), 8 | A=!!f.aria,E=q+"-"+Math.random().toString(36).replace("0.",""),g='
")[p]("ifCreated").parent().append(f.insert);d=h('').css(d).appendTo(g);a.data(q,{o:f,s:a.attr("style")}).css(e);f.inheritClass&&g[v](c.className||"");f.inheritID&&b&&g.attr("id",q+"-"+b);"static"==g.css("position")&&g.css("position","relative");F(a,!0,H); 9 | if(m.length)m.on("click.i mouseover.i mouseout.i touchbegin.i touchend.i",function(b){var d=b[n],e=h(this);if(!c[s]){if("click"==d){if(h(b.target).is("a"))return;F(a,!1,!0)}else y&&(/ut|nd/.test(d)?(g[z](B),e[z](C)):(g[v](B),e[v](C)));if(J)b.stopPropagation();else return!1}});a.on("click.i focus.i blur.i keyup.i keydown.i keypress.i",function(b){var d=b[n];b=b.keyCode;if("click"==d)return!1;if("keydown"==d&&32==b)return c[n]==u&&c[l]||(c[l]?t(a,l):D(a,l)),!1;if("keyup"==d&&c[n]==u)!c[l]&&D(a,l);else if(/us|ur/.test(d))g["blur"== 10 | d?z:v](x)});d.on("click mousedown mouseup mouseover mouseout touchbegin.i touchend.i",function(b){var d=b[n],e=/wn|up/.test(d)?w:B;if(!c[s]){if("click"==d)F(a,!1,!0);else{if(/wn|er|in/.test(d))g[v](e);else g[z](e+" "+w);if(m.length&&y&&e==B)m[/ut|nd/.test(d)?z:v](C)}if(J)b.stopPropagation();else return!1}})})}})(window.jQuery||window.Zepto); 11 | -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/styles/skins/skin-black.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Skin: Black 3 | * ----------- 4 | */ 5 | /* skin-black navbar */ 6 | .skin-black .main-header { 7 | -webkit-box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.05); 8 | box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.05); 9 | } 10 | .skin-black .main-header .navbar-toggle { 11 | color: #333; 12 | } 13 | .skin-black .main-header .navbar-brand { 14 | color: #333; 15 | border-right: 1px solid #eee; 16 | } 17 | .skin-black .main-header > .navbar { 18 | background-color: #ffffff; 19 | } 20 | .skin-black .main-header > .navbar .nav > li > a { 21 | color: #333333; 22 | } 23 | .skin-black .main-header > .navbar .nav > li > a:hover, 24 | .skin-black .main-header > .navbar .nav > li > a:active, 25 | .skin-black .main-header > .navbar .nav > li > a:focus, 26 | .skin-black .main-header > .navbar .nav .open > a, 27 | .skin-black .main-header > .navbar .nav .open > a:hover, 28 | .skin-black .main-header > .navbar .nav .open > a:focus, 29 | .skin-black .main-header > .navbar .nav > .active > a { 30 | background: #ffffff; 31 | color: #999999; 32 | } 33 | .skin-black .main-header > .navbar .sidebar-toggle { 34 | color: #333333; 35 | } 36 | .skin-black .main-header > .navbar .sidebar-toggle:hover { 37 | color: #999999; 38 | background: #ffffff; 39 | } 40 | .skin-black .main-header > .navbar > .sidebar-toggle { 41 | color: #333; 42 | border-right: 1px solid #eee; 43 | } 44 | .skin-black .main-header > .navbar .navbar-nav > li > a { 45 | border-right: 1px solid #eee; 46 | } 47 | .skin-black .main-header > .navbar .navbar-custom-menu .navbar-nav > li > a, 48 | .skin-black .main-header > .navbar .navbar-right > li > a { 49 | border-left: 1px solid #eee; 50 | border-right-width: 0; 51 | } 52 | .skin-black .main-header > .logo { 53 | background-color: #ffffff; 54 | color: #333333; 55 | border-bottom: 0 solid transparent; 56 | border-right: 1px solid #eee; 57 | } 58 | .skin-black .main-header > .logo:hover { 59 | background-color: #fcfcfc; 60 | } 61 | @media (max-width: 767px) { 62 | .skin-black .main-header > .logo { 63 | background-color: #222222; 64 | color: #ffffff; 65 | border-bottom: 0 solid transparent; 66 | border-right: none; 67 | } 68 | .skin-black .main-header > .logo:hover { 69 | background-color: #1f1f1f; 70 | } 71 | } 72 | .skin-black .main-header li.user-header { 73 | background-color: #222; 74 | } 75 | .skin-black .content-header { 76 | background: transparent; 77 | box-shadow: none; 78 | } 79 | .skin-black .wrapper, 80 | .skin-black .main-sidebar, 81 | .skin-black .left-side { 82 | background-color: #222d32; 83 | } 84 | .skin-black .user-panel > .info, 85 | .skin-black .user-panel > .info > a { 86 | color: #fff; 87 | } 88 | .skin-black .sidebar-menu > li.header { 89 | color: #4b646f; 90 | background: #1a2226; 91 | } 92 | .skin-black .sidebar-menu > li > a { 93 | border-left: 3px solid transparent; 94 | } 95 | .skin-black .sidebar-menu > li:hover > a, 96 | .skin-black .sidebar-menu > li.active > a { 97 | color: #ffffff; 98 | background: #1e282c; 99 | border-left-color: #ffffff; 100 | } 101 | .skin-black .sidebar-menu > li > .treeview-menu { 102 | margin: 0 1px; 103 | background: #2c3b41; 104 | } 105 | .skin-black .sidebar a { 106 | color: #b8c7ce; 107 | } 108 | .skin-black .sidebar a:hover { 109 | text-decoration: none; 110 | } 111 | .skin-black .treeview-menu > li > a { 112 | color: #8aa4af; 113 | } 114 | .skin-black .treeview-menu > li.active > a, 115 | .skin-black .treeview-menu > li > a:hover { 116 | color: #ffffff; 117 | } 118 | .skin-black .sidebar-form { 119 | border-radius: 3px; 120 | border: 1px solid #374850; 121 | margin: 10px 10px; 122 | } 123 | .skin-black .sidebar-form input[type="text"], 124 | .skin-black .sidebar-form .btn { 125 | box-shadow: none; 126 | background-color: #374850; 127 | border: 1px solid transparent; 128 | height: 35px; 129 | -webkit-transition: all 0.3s ease-in-out; 130 | -o-transition: all 0.3s ease-in-out; 131 | transition: all 0.3s ease-in-out; 132 | } 133 | .skin-black .sidebar-form input[type="text"] { 134 | color: #666; 135 | border-top-left-radius: 2px; 136 | border-top-right-radius: 0; 137 | border-bottom-right-radius: 0; 138 | border-bottom-left-radius: 2px; 139 | } 140 | .skin-black .sidebar-form input[type="text"]:focus, 141 | .skin-black .sidebar-form input[type="text"]:focus + .input-group-btn .btn { 142 | background-color: #fff; 143 | color: #666; 144 | } 145 | .skin-black .sidebar-form input[type="text"]:focus + .input-group-btn .btn { 146 | border-left-color: #fff; 147 | } 148 | .skin-black .sidebar-form .btn { 149 | color: #999; 150 | border-top-left-radius: 0; 151 | border-top-right-radius: 2px; 152 | border-bottom-right-radius: 2px; 153 | border-bottom-left-radius: 0; 154 | } 155 | -------------------------------------------------------------------------------- /src/WechatBribery/Common/Wxpay.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using System.Net.Http; 6 | using System.Text; 7 | using System.IO; 8 | using System.Security.Cryptography; 9 | using WechatBribery.Models; 10 | using static Newtonsoft.Json.JsonConvert; 11 | 12 | namespace WechatBribery.Common 13 | { 14 | public static class Wxpay 15 | { 16 | public static async Task AuthorizeAsync(string code) 17 | { 18 | using (var client = new HttpClient { BaseAddress = new Uri("https://api.weixin.qq.com") }) 19 | { 20 | // 获取用户基本信息 21 | var result = await client.GetAsync($"/sns/oauth2/access_token?appid={ Startup.Config["WeChat:AppId"] }&secret={ Startup.Config["WeChat:Secret"] }&code={ code }&grant_type=authorization_code"); 22 | var jsonStr = await result.Content.ReadAsStringAsync(); 23 | var json = DeserializeObject(jsonStr); 24 | var ret = new OpenIdViewModel(); 25 | ret.AccessToken = json.access_token; 26 | ret.AccessTokenExpire = DateTime.Now.AddSeconds((int)json.expires_in); 27 | ret.RefreshToken = json.refresh_token; 28 | ret.AccessTokenExpire = DateTime.Now.AddDays(30); 29 | ret.Id = json.openid; 30 | 31 | // 获取用户头像及昵称 32 | var result2 = await client.GetAsync($"/sns/userinfo?access_token={ ret.AccessToken }&openid={ ret.Id }&lang=zh_CN"); 33 | var jsonStr2 = await result2.Content.ReadAsStringAsync(); 34 | var json2 = DeserializeObject(jsonStr2); 35 | ret.AvatarUrl = json2.headimgurl; 36 | ret.NickName = json2.nickname; 37 | 38 | return ret; 39 | } 40 | } 41 | 42 | public static async Task TransferMoneyAsync(Guid DeliverId, string OpenId, long Price, string Description) 43 | { 44 | var nounce = Guid.NewGuid().ToString().Replace("-", ""); 45 | var requestUrl = ""; 46 | var dic = new Dictionary(); 47 | dic.Add("mch_appid", Startup.Config["WeChat:AppId"]); 48 | dic.Add("mchid", Startup.Config["WeChat:MchId"]); 49 | dic.Add("nonce_str", nounce); 50 | dic.Add("partner_trade_no", DeliverId.ToString()); 51 | dic.Add("openid", OpenId); 52 | dic.Add("amount", Price.ToString()); 53 | dic.Add("desc", Description); 54 | dic.Add("spbill_create_ip", Startup.Config["Ip"]); 55 | dic.Add("check_name", "NO_CHECK"); 56 | foreach (var x in dic.OrderBy(x => x.Key)) 57 | requestUrl += x.Key + "=" + x.Value + "&"; 58 | requestUrl += "key=" + Startup.Config["WeChat:SignKey"]; 59 | string requestXml; 60 | 61 | using (var md5 = MD5.Create()) 62 | { 63 | var result = md5.ComputeHash(Encoding.UTF8.GetBytes(requestUrl)); 64 | var strResult = ToHex(result, true); 65 | requestXml = $@" 66 | { Startup.Config["WeChat:AppId"] } 67 | { Startup.Config["WeChat:MchId"] } 68 | { nounce } 69 | { DeliverId } 70 | { OpenId } 71 | { Price } 72 | { Description } 73 | { Startup.Config["Ip"] } 74 | NO_CHECK 75 | { strResult } 76 | "; 77 | } 78 | 79 | var handler = new HttpClientHandler(); 80 | var path = Path.Combine(Directory.GetCurrentDirectory(), "apiclient_cert.p12"); 81 | handler.ClientCertificates.Add(new System.Security.Cryptography.X509Certificates.X509Certificate2(path, Startup.Config["WeChat:MchId"])); 82 | using (var client = new HttpClient(handler) { BaseAddress = new Uri("https://api.mch.weixin.qq.com") }) 83 | { 84 | var result = await client.PostAsync("/mmpaymkttransfers/promotion/transfers", new ByteArrayContent(Encoding.UTF8.GetBytes(requestXml))); 85 | var html = await result.Content.ReadAsStringAsync(); 86 | if (html.IndexOf("ERROR") == 0) 87 | return true; 88 | return false; 89 | } 90 | } 91 | 92 | public static string ToHex(this byte[] bytes, bool upperCase) 93 | { 94 | StringBuilder result = new StringBuilder(bytes.Length * 2); 95 | 96 | for (int i = 0; i < bytes.Length; i++) 97 | result.Append(bytes[i].ToString(upperCase ? "X2" : "x2")); 98 | 99 | return result.ToString(); 100 | } 101 | } 102 | } 103 | -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/styles/bootstrap-colorpicker.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap Colorpicker 3 | * http://mjolnic.github.io/bootstrap-colorpicker/ 4 | * 5 | * Originally written by (c) 2012 Stefan Petre 6 | * Licensed under the Apache License v2.0 7 | * http://www.apache.org/licenses/LICENSE-2.0.txt 8 | * 9 | */ 10 | 11 | .colorpicker-saturation { 12 | float: left; 13 | width: 100px; 14 | height: 100px; 15 | cursor: crosshair; 16 | background-image: url("img/saturation.png"); 17 | } 18 | 19 | .colorpicker-saturation i { 20 | position: absolute; 21 | top: 0; 22 | left: 0; 23 | display: block; 24 | width: 5px; 25 | height: 5px; 26 | margin: -4px 0 0 -4px; 27 | border: 1px solid #000; 28 | -webkit-border-radius: 5px; 29 | -moz-border-radius: 5px; 30 | border-radius: 5px; 31 | } 32 | 33 | .colorpicker-saturation i b { 34 | display: block; 35 | width: 5px; 36 | height: 5px; 37 | border: 1px solid #fff; 38 | -webkit-border-radius: 5px; 39 | -moz-border-radius: 5px; 40 | border-radius: 5px; 41 | } 42 | 43 | .colorpicker-hue, 44 | .colorpicker-alpha { 45 | float: left; 46 | width: 15px; 47 | height: 100px; 48 | margin-bottom: 4px; 49 | margin-left: 4px; 50 | cursor: row-resize; 51 | } 52 | 53 | .colorpicker-hue i, 54 | .colorpicker-alpha i { 55 | position: absolute; 56 | top: 0; 57 | left: 0; 58 | display: block; 59 | width: 100%; 60 | height: 1px; 61 | margin-top: -1px; 62 | background: #000; 63 | border-top: 1px solid #fff; 64 | } 65 | 66 | .colorpicker-hue { 67 | background-image: url("img/hue.png"); 68 | } 69 | 70 | .colorpicker-alpha { 71 | display: none; 72 | background-image: url("img/alpha.png"); 73 | } 74 | 75 | .colorpicker { 76 | top: 0; 77 | left: 0; 78 | z-index: 2500; 79 | min-width: 130px; 80 | padding: 4px; 81 | margin-top: 1px; 82 | -webkit-border-radius: 4px; 83 | -moz-border-radius: 4px; 84 | border-radius: 4px; 85 | *zoom: 1; 86 | } 87 | 88 | .colorpicker:before, 89 | .colorpicker:after { 90 | display: table; 91 | line-height: 0; 92 | content: ""; 93 | } 94 | 95 | .colorpicker:after { 96 | clear: both; 97 | } 98 | 99 | .colorpicker:before { 100 | position: absolute; 101 | top: -7px; 102 | left: 6px; 103 | display: inline-block; 104 | border-right: 7px solid transparent; 105 | border-bottom: 7px solid #ccc; 106 | border-left: 7px solid transparent; 107 | border-bottom-color: rgba(0, 0, 0, 0.2); 108 | content: ''; 109 | } 110 | 111 | .colorpicker:after { 112 | position: absolute; 113 | top: -6px; 114 | left: 7px; 115 | display: inline-block; 116 | border-right: 6px solid transparent; 117 | border-bottom: 6px solid #ffffff; 118 | border-left: 6px solid transparent; 119 | content: ''; 120 | } 121 | 122 | .colorpicker div { 123 | position: relative; 124 | } 125 | 126 | .colorpicker.colorpicker-with-alpha { 127 | min-width: 140px; 128 | } 129 | 130 | .colorpicker.colorpicker-with-alpha .colorpicker-alpha { 131 | display: block; 132 | } 133 | 134 | .colorpicker-color { 135 | height: 10px; 136 | margin-top: 5px; 137 | clear: both; 138 | background-image: url("img/alpha.png"); 139 | background-position: 0 100%; 140 | } 141 | 142 | .colorpicker-color div { 143 | height: 10px; 144 | } 145 | 146 | .colorpicker-element .input-group-addon i { 147 | display: block; 148 | width: 16px; 149 | height: 16px; 150 | cursor: pointer; 151 | } 152 | 153 | .colorpicker.colorpicker-inline { 154 | position: relative; 155 | display: inline-block; 156 | float: none; 157 | } 158 | 159 | .colorpicker.colorpicker-horizontal { 160 | width: 110px; 161 | height: auto; 162 | min-width: 110px; 163 | } 164 | 165 | .colorpicker.colorpicker-horizontal .colorpicker-saturation { 166 | margin-bottom: 4px; 167 | } 168 | 169 | .colorpicker.colorpicker-horizontal .colorpicker-color { 170 | width: 100px; 171 | } 172 | 173 | .colorpicker.colorpicker-horizontal .colorpicker-hue, 174 | .colorpicker.colorpicker-horizontal .colorpicker-alpha { 175 | float: left; 176 | width: 100px; 177 | height: 15px; 178 | margin-bottom: 4px; 179 | margin-left: 0; 180 | cursor: col-resize; 181 | } 182 | 183 | .colorpicker.colorpicker-horizontal .colorpicker-hue i, 184 | .colorpicker.colorpicker-horizontal .colorpicker-alpha i { 185 | position: absolute; 186 | top: 0; 187 | left: 0; 188 | display: block; 189 | width: 1px; 190 | height: 15px; 191 | margin-top: 0; 192 | background: #ffffff; 193 | border: none; 194 | } 195 | 196 | .colorpicker.colorpicker-horizontal .colorpicker-hue { 197 | background-image: url("img/hue-horizontal.png"); 198 | } 199 | 200 | .colorpicker.colorpicker-horizontal .colorpicker-alpha { 201 | background-image: url("img/alpha-horizontal.png"); 202 | } 203 | 204 | .colorpicker.colorpicker-hidden { 205 | display: none; 206 | } 207 | 208 | .colorpicker.colorpicker-visible { 209 | display: block; 210 | } 211 | 212 | .colorpicker-inline.colorpicker-visible { 213 | display: inline-block; 214 | } -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/styles/skins/skin-red-light.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Skin: Red 3 | * --------- 4 | */ 5 | .skin-red-light .main-header .navbar { 6 | background-color: #dd4b39; 7 | } 8 | .skin-red-light .main-header .navbar .nav > li > a { 9 | color: #ffffff; 10 | } 11 | .skin-red-light .main-header .navbar .nav > li > a:hover, 12 | .skin-red-light .main-header .navbar .nav > li > a:active, 13 | .skin-red-light .main-header .navbar .nav > li > a:focus, 14 | .skin-red-light .main-header .navbar .nav .open > a, 15 | .skin-red-light .main-header .navbar .nav .open > a:hover, 16 | .skin-red-light .main-header .navbar .nav .open > a:focus, 17 | .skin-red-light .main-header .navbar .nav > .active > a { 18 | background: rgba(0, 0, 0, 0.1); 19 | color: #f6f6f6; 20 | } 21 | .skin-red-light .main-header .navbar .sidebar-toggle { 22 | color: #ffffff; 23 | } 24 | .skin-red-light .main-header .navbar .sidebar-toggle:hover { 25 | color: #f6f6f6; 26 | background: rgba(0, 0, 0, 0.1); 27 | } 28 | .skin-red-light .main-header .navbar .sidebar-toggle { 29 | color: #fff; 30 | } 31 | .skin-red-light .main-header .navbar .sidebar-toggle:hover { 32 | background-color: #d73925; 33 | } 34 | @media (max-width: 767px) { 35 | .skin-red-light .main-header .navbar .dropdown-menu li.divider { 36 | background-color: rgba(255, 255, 255, 0.1); 37 | } 38 | .skin-red-light .main-header .navbar .dropdown-menu li a { 39 | color: #fff; 40 | } 41 | .skin-red-light .main-header .navbar .dropdown-menu li a:hover { 42 | background: #d73925; 43 | } 44 | } 45 | .skin-red-light .main-header .logo { 46 | background-color: #dd4b39; 47 | color: #ffffff; 48 | border-bottom: 0 solid transparent; 49 | } 50 | .skin-red-light .main-header .logo:hover { 51 | background-color: #dc4735; 52 | } 53 | .skin-red-light .main-header li.user-header { 54 | background-color: #dd4b39; 55 | } 56 | .skin-red-light .content-header { 57 | background: transparent; 58 | } 59 | .skin-red-light .wrapper, 60 | .skin-red-light .main-sidebar, 61 | .skin-red-light .left-side { 62 | background-color: #f9fafc; 63 | } 64 | .skin-red-light .content-wrapper, 65 | .skin-red-light .main-footer { 66 | border-left: 1px solid #d2d6de; 67 | } 68 | .skin-red-light .user-panel > .info, 69 | .skin-red-light .user-panel > .info > a { 70 | color: #444444; 71 | } 72 | .skin-red-light .sidebar-menu > li { 73 | -webkit-transition: border-left-color 0.3s ease; 74 | -o-transition: border-left-color 0.3s ease; 75 | transition: border-left-color 0.3s ease; 76 | } 77 | .skin-red-light .sidebar-menu > li.header { 78 | color: #848484; 79 | background: #f9fafc; 80 | } 81 | .skin-red-light .sidebar-menu > li > a { 82 | border-left: 3px solid transparent; 83 | font-weight: 600; 84 | } 85 | .skin-red-light .sidebar-menu > li:hover > a, 86 | .skin-red-light .sidebar-menu > li.active > a { 87 | color: #000000; 88 | background: #f4f4f5; 89 | } 90 | .skin-red-light .sidebar-menu > li.active { 91 | border-left-color: #dd4b39; 92 | } 93 | .skin-red-light .sidebar-menu > li.active > a { 94 | font-weight: 600; 95 | } 96 | .skin-red-light .sidebar-menu > li > .treeview-menu { 97 | background: #f4f4f5; 98 | } 99 | .skin-red-light .sidebar a { 100 | color: #444444; 101 | } 102 | .skin-red-light .sidebar a:hover { 103 | text-decoration: none; 104 | } 105 | .skin-red-light .treeview-menu > li > a { 106 | color: #777777; 107 | } 108 | .skin-red-light .treeview-menu > li.active > a, 109 | .skin-red-light .treeview-menu > li > a:hover { 110 | color: #000000; 111 | } 112 | .skin-red-light .treeview-menu > li.active > a { 113 | font-weight: 600; 114 | } 115 | .skin-red-light .sidebar-form { 116 | border-radius: 3px; 117 | border: 1px solid #d2d6de; 118 | margin: 10px 10px; 119 | } 120 | .skin-red-light .sidebar-form input[type="text"], 121 | .skin-red-light .sidebar-form .btn { 122 | box-shadow: none; 123 | background-color: #fff; 124 | border: 1px solid transparent; 125 | height: 35px; 126 | -webkit-transition: all 0.3s ease-in-out; 127 | -o-transition: all 0.3s ease-in-out; 128 | transition: all 0.3s ease-in-out; 129 | } 130 | .skin-red-light .sidebar-form input[type="text"] { 131 | color: #666; 132 | border-top-left-radius: 2px; 133 | border-top-right-radius: 0; 134 | border-bottom-right-radius: 0; 135 | border-bottom-left-radius: 2px; 136 | } 137 | .skin-red-light .sidebar-form input[type="text"]:focus, 138 | .skin-red-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { 139 | background-color: #fff; 140 | color: #666; 141 | } 142 | .skin-red-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { 143 | border-left-color: #fff; 144 | } 145 | .skin-red-light .sidebar-form .btn { 146 | color: #999; 147 | border-top-left-radius: 0; 148 | border-top-right-radius: 2px; 149 | border-bottom-right-radius: 2px; 150 | border-bottom-left-radius: 0; 151 | } 152 | @media (min-width: 768px) { 153 | .skin-red-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu { 154 | border-left: 1px solid #d2d6de; 155 | } 156 | } 157 | -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/styles/skins/skin-green-light.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Skin: Green 3 | * ----------- 4 | */ 5 | .skin-green-light .main-header .navbar { 6 | background-color: #00a65a; 7 | } 8 | .skin-green-light .main-header .navbar .nav > li > a { 9 | color: #ffffff; 10 | } 11 | .skin-green-light .main-header .navbar .nav > li > a:hover, 12 | .skin-green-light .main-header .navbar .nav > li > a:active, 13 | .skin-green-light .main-header .navbar .nav > li > a:focus, 14 | .skin-green-light .main-header .navbar .nav .open > a, 15 | .skin-green-light .main-header .navbar .nav .open > a:hover, 16 | .skin-green-light .main-header .navbar .nav .open > a:focus, 17 | .skin-green-light .main-header .navbar .nav > .active > a { 18 | background: rgba(0, 0, 0, 0.1); 19 | color: #f6f6f6; 20 | } 21 | .skin-green-light .main-header .navbar .sidebar-toggle { 22 | color: #ffffff; 23 | } 24 | .skin-green-light .main-header .navbar .sidebar-toggle:hover { 25 | color: #f6f6f6; 26 | background: rgba(0, 0, 0, 0.1); 27 | } 28 | .skin-green-light .main-header .navbar .sidebar-toggle { 29 | color: #fff; 30 | } 31 | .skin-green-light .main-header .navbar .sidebar-toggle:hover { 32 | background-color: #008d4c; 33 | } 34 | @media (max-width: 767px) { 35 | .skin-green-light .main-header .navbar .dropdown-menu li.divider { 36 | background-color: rgba(255, 255, 255, 0.1); 37 | } 38 | .skin-green-light .main-header .navbar .dropdown-menu li a { 39 | color: #fff; 40 | } 41 | .skin-green-light .main-header .navbar .dropdown-menu li a:hover { 42 | background: #008d4c; 43 | } 44 | } 45 | .skin-green-light .main-header .logo { 46 | background-color: #00a65a; 47 | color: #ffffff; 48 | border-bottom: 0 solid transparent; 49 | } 50 | .skin-green-light .main-header .logo:hover { 51 | background-color: #00a157; 52 | } 53 | .skin-green-light .main-header li.user-header { 54 | background-color: #00a65a; 55 | } 56 | .skin-green-light .content-header { 57 | background: transparent; 58 | } 59 | .skin-green-light .wrapper, 60 | .skin-green-light .main-sidebar, 61 | .skin-green-light .left-side { 62 | background-color: #f9fafc; 63 | } 64 | .skin-green-light .content-wrapper, 65 | .skin-green-light .main-footer { 66 | border-left: 1px solid #d2d6de; 67 | } 68 | .skin-green-light .user-panel > .info, 69 | .skin-green-light .user-panel > .info > a { 70 | color: #444444; 71 | } 72 | .skin-green-light .sidebar-menu > li { 73 | -webkit-transition: border-left-color 0.3s ease; 74 | -o-transition: border-left-color 0.3s ease; 75 | transition: border-left-color 0.3s ease; 76 | } 77 | .skin-green-light .sidebar-menu > li.header { 78 | color: #848484; 79 | background: #f9fafc; 80 | } 81 | .skin-green-light .sidebar-menu > li > a { 82 | border-left: 3px solid transparent; 83 | font-weight: 600; 84 | } 85 | .skin-green-light .sidebar-menu > li:hover > a, 86 | .skin-green-light .sidebar-menu > li.active > a { 87 | color: #000000; 88 | background: #f4f4f5; 89 | } 90 | .skin-green-light .sidebar-menu > li.active { 91 | border-left-color: #00a65a; 92 | } 93 | .skin-green-light .sidebar-menu > li.active > a { 94 | font-weight: 600; 95 | } 96 | .skin-green-light .sidebar-menu > li > .treeview-menu { 97 | background: #f4f4f5; 98 | } 99 | .skin-green-light .sidebar a { 100 | color: #444444; 101 | } 102 | .skin-green-light .sidebar a:hover { 103 | text-decoration: none; 104 | } 105 | .skin-green-light .treeview-menu > li > a { 106 | color: #777777; 107 | } 108 | .skin-green-light .treeview-menu > li.active > a, 109 | .skin-green-light .treeview-menu > li > a:hover { 110 | color: #000000; 111 | } 112 | .skin-green-light .treeview-menu > li.active > a { 113 | font-weight: 600; 114 | } 115 | .skin-green-light .sidebar-form { 116 | border-radius: 3px; 117 | border: 1px solid #d2d6de; 118 | margin: 10px 10px; 119 | } 120 | .skin-green-light .sidebar-form input[type="text"], 121 | .skin-green-light .sidebar-form .btn { 122 | box-shadow: none; 123 | background-color: #fff; 124 | border: 1px solid transparent; 125 | height: 35px; 126 | -webkit-transition: all 0.3s ease-in-out; 127 | -o-transition: all 0.3s ease-in-out; 128 | transition: all 0.3s ease-in-out; 129 | } 130 | .skin-green-light .sidebar-form input[type="text"] { 131 | color: #666; 132 | border-top-left-radius: 2px; 133 | border-top-right-radius: 0; 134 | border-bottom-right-radius: 0; 135 | border-bottom-left-radius: 2px; 136 | } 137 | .skin-green-light .sidebar-form input[type="text"]:focus, 138 | .skin-green-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { 139 | background-color: #fff; 140 | color: #666; 141 | } 142 | .skin-green-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { 143 | border-left-color: #fff; 144 | } 145 | .skin-green-light .sidebar-form .btn { 146 | color: #999; 147 | border-top-left-radius: 0; 148 | border-top-right-radius: 2px; 149 | border-bottom-right-radius: 2px; 150 | border-bottom-left-radius: 0; 151 | } 152 | @media (min-width: 768px) { 153 | .skin-green-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu { 154 | border-left: 1px solid #d2d6de; 155 | } 156 | } 157 | -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/styles/skins/skin-purple-light.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Skin: Purple 3 | * ------------ 4 | */ 5 | .skin-purple-light .main-header .navbar { 6 | background-color: #605ca8; 7 | } 8 | .skin-purple-light .main-header .navbar .nav > li > a { 9 | color: #ffffff; 10 | } 11 | .skin-purple-light .main-header .navbar .nav > li > a:hover, 12 | .skin-purple-light .main-header .navbar .nav > li > a:active, 13 | .skin-purple-light .main-header .navbar .nav > li > a:focus, 14 | .skin-purple-light .main-header .navbar .nav .open > a, 15 | .skin-purple-light .main-header .navbar .nav .open > a:hover, 16 | .skin-purple-light .main-header .navbar .nav .open > a:focus, 17 | .skin-purple-light .main-header .navbar .nav > .active > a { 18 | background: rgba(0, 0, 0, 0.1); 19 | color: #f6f6f6; 20 | } 21 | .skin-purple-light .main-header .navbar .sidebar-toggle { 22 | color: #ffffff; 23 | } 24 | .skin-purple-light .main-header .navbar .sidebar-toggle:hover { 25 | color: #f6f6f6; 26 | background: rgba(0, 0, 0, 0.1); 27 | } 28 | .skin-purple-light .main-header .navbar .sidebar-toggle { 29 | color: #fff; 30 | } 31 | .skin-purple-light .main-header .navbar .sidebar-toggle:hover { 32 | background-color: #555299; 33 | } 34 | @media (max-width: 767px) { 35 | .skin-purple-light .main-header .navbar .dropdown-menu li.divider { 36 | background-color: rgba(255, 255, 255, 0.1); 37 | } 38 | .skin-purple-light .main-header .navbar .dropdown-menu li a { 39 | color: #fff; 40 | } 41 | .skin-purple-light .main-header .navbar .dropdown-menu li a:hover { 42 | background: #555299; 43 | } 44 | } 45 | .skin-purple-light .main-header .logo { 46 | background-color: #605ca8; 47 | color: #ffffff; 48 | border-bottom: 0 solid transparent; 49 | } 50 | .skin-purple-light .main-header .logo:hover { 51 | background-color: #5d59a6; 52 | } 53 | .skin-purple-light .main-header li.user-header { 54 | background-color: #605ca8; 55 | } 56 | .skin-purple-light .content-header { 57 | background: transparent; 58 | } 59 | .skin-purple-light .wrapper, 60 | .skin-purple-light .main-sidebar, 61 | .skin-purple-light .left-side { 62 | background-color: #f9fafc; 63 | } 64 | .skin-purple-light .content-wrapper, 65 | .skin-purple-light .main-footer { 66 | border-left: 1px solid #d2d6de; 67 | } 68 | .skin-purple-light .user-panel > .info, 69 | .skin-purple-light .user-panel > .info > a { 70 | color: #444444; 71 | } 72 | .skin-purple-light .sidebar-menu > li { 73 | -webkit-transition: border-left-color 0.3s ease; 74 | -o-transition: border-left-color 0.3s ease; 75 | transition: border-left-color 0.3s ease; 76 | } 77 | .skin-purple-light .sidebar-menu > li.header { 78 | color: #848484; 79 | background: #f9fafc; 80 | } 81 | .skin-purple-light .sidebar-menu > li > a { 82 | border-left: 3px solid transparent; 83 | font-weight: 600; 84 | } 85 | .skin-purple-light .sidebar-menu > li:hover > a, 86 | .skin-purple-light .sidebar-menu > li.active > a { 87 | color: #000000; 88 | background: #f4f4f5; 89 | } 90 | .skin-purple-light .sidebar-menu > li.active { 91 | border-left-color: #605ca8; 92 | } 93 | .skin-purple-light .sidebar-menu > li.active > a { 94 | font-weight: 600; 95 | } 96 | .skin-purple-light .sidebar-menu > li > .treeview-menu { 97 | background: #f4f4f5; 98 | } 99 | .skin-purple-light .sidebar a { 100 | color: #444444; 101 | } 102 | .skin-purple-light .sidebar a:hover { 103 | text-decoration: none; 104 | } 105 | .skin-purple-light .treeview-menu > li > a { 106 | color: #777777; 107 | } 108 | .skin-purple-light .treeview-menu > li.active > a, 109 | .skin-purple-light .treeview-menu > li > a:hover { 110 | color: #000000; 111 | } 112 | .skin-purple-light .treeview-menu > li.active > a { 113 | font-weight: 600; 114 | } 115 | .skin-purple-light .sidebar-form { 116 | border-radius: 3px; 117 | border: 1px solid #d2d6de; 118 | margin: 10px 10px; 119 | } 120 | .skin-purple-light .sidebar-form input[type="text"], 121 | .skin-purple-light .sidebar-form .btn { 122 | box-shadow: none; 123 | background-color: #fff; 124 | border: 1px solid transparent; 125 | height: 35px; 126 | -webkit-transition: all 0.3s ease-in-out; 127 | -o-transition: all 0.3s ease-in-out; 128 | transition: all 0.3s ease-in-out; 129 | } 130 | .skin-purple-light .sidebar-form input[type="text"] { 131 | color: #666; 132 | border-top-left-radius: 2px; 133 | border-top-right-radius: 0; 134 | border-bottom-right-radius: 0; 135 | border-bottom-left-radius: 2px; 136 | } 137 | .skin-purple-light .sidebar-form input[type="text"]:focus, 138 | .skin-purple-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { 139 | background-color: #fff; 140 | color: #666; 141 | } 142 | .skin-purple-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { 143 | border-left-color: #fff; 144 | } 145 | .skin-purple-light .sidebar-form .btn { 146 | color: #999; 147 | border-top-left-radius: 0; 148 | border-top-right-radius: 2px; 149 | border-bottom-right-radius: 2px; 150 | border-bottom-left-radius: 0; 151 | } 152 | @media (min-width: 768px) { 153 | .skin-purple-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu { 154 | border-left: 1px solid #d2d6de; 155 | } 156 | } 157 | -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/styles/skins/skin-yellow-light.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Skin: Yellow 3 | * ------------ 4 | */ 5 | .skin-yellow-light .main-header .navbar { 6 | background-color: #f39c12; 7 | } 8 | .skin-yellow-light .main-header .navbar .nav > li > a { 9 | color: #ffffff; 10 | } 11 | .skin-yellow-light .main-header .navbar .nav > li > a:hover, 12 | .skin-yellow-light .main-header .navbar .nav > li > a:active, 13 | .skin-yellow-light .main-header .navbar .nav > li > a:focus, 14 | .skin-yellow-light .main-header .navbar .nav .open > a, 15 | .skin-yellow-light .main-header .navbar .nav .open > a:hover, 16 | .skin-yellow-light .main-header .navbar .nav .open > a:focus, 17 | .skin-yellow-light .main-header .navbar .nav > .active > a { 18 | background: rgba(0, 0, 0, 0.1); 19 | color: #f6f6f6; 20 | } 21 | .skin-yellow-light .main-header .navbar .sidebar-toggle { 22 | color: #ffffff; 23 | } 24 | .skin-yellow-light .main-header .navbar .sidebar-toggle:hover { 25 | color: #f6f6f6; 26 | background: rgba(0, 0, 0, 0.1); 27 | } 28 | .skin-yellow-light .main-header .navbar .sidebar-toggle { 29 | color: #fff; 30 | } 31 | .skin-yellow-light .main-header .navbar .sidebar-toggle:hover { 32 | background-color: #e08e0b; 33 | } 34 | @media (max-width: 767px) { 35 | .skin-yellow-light .main-header .navbar .dropdown-menu li.divider { 36 | background-color: rgba(255, 255, 255, 0.1); 37 | } 38 | .skin-yellow-light .main-header .navbar .dropdown-menu li a { 39 | color: #fff; 40 | } 41 | .skin-yellow-light .main-header .navbar .dropdown-menu li a:hover { 42 | background: #e08e0b; 43 | } 44 | } 45 | .skin-yellow-light .main-header .logo { 46 | background-color: #f39c12; 47 | color: #ffffff; 48 | border-bottom: 0 solid transparent; 49 | } 50 | .skin-yellow-light .main-header .logo:hover { 51 | background-color: #f39a0d; 52 | } 53 | .skin-yellow-light .main-header li.user-header { 54 | background-color: #f39c12; 55 | } 56 | .skin-yellow-light .content-header { 57 | background: transparent; 58 | } 59 | .skin-yellow-light .wrapper, 60 | .skin-yellow-light .main-sidebar, 61 | .skin-yellow-light .left-side { 62 | background-color: #f9fafc; 63 | } 64 | .skin-yellow-light .content-wrapper, 65 | .skin-yellow-light .main-footer { 66 | border-left: 1px solid #d2d6de; 67 | } 68 | .skin-yellow-light .user-panel > .info, 69 | .skin-yellow-light .user-panel > .info > a { 70 | color: #444444; 71 | } 72 | .skin-yellow-light .sidebar-menu > li { 73 | -webkit-transition: border-left-color 0.3s ease; 74 | -o-transition: border-left-color 0.3s ease; 75 | transition: border-left-color 0.3s ease; 76 | } 77 | .skin-yellow-light .sidebar-menu > li.header { 78 | color: #848484; 79 | background: #f9fafc; 80 | } 81 | .skin-yellow-light .sidebar-menu > li > a { 82 | border-left: 3px solid transparent; 83 | font-weight: 600; 84 | } 85 | .skin-yellow-light .sidebar-menu > li:hover > a, 86 | .skin-yellow-light .sidebar-menu > li.active > a { 87 | color: #000000; 88 | background: #f4f4f5; 89 | } 90 | .skin-yellow-light .sidebar-menu > li.active { 91 | border-left-color: #f39c12; 92 | } 93 | .skin-yellow-light .sidebar-menu > li.active > a { 94 | font-weight: 600; 95 | } 96 | .skin-yellow-light .sidebar-menu > li > .treeview-menu { 97 | background: #f4f4f5; 98 | } 99 | .skin-yellow-light .sidebar a { 100 | color: #444444; 101 | } 102 | .skin-yellow-light .sidebar a:hover { 103 | text-decoration: none; 104 | } 105 | .skin-yellow-light .treeview-menu > li > a { 106 | color: #777777; 107 | } 108 | .skin-yellow-light .treeview-menu > li.active > a, 109 | .skin-yellow-light .treeview-menu > li > a:hover { 110 | color: #000000; 111 | } 112 | .skin-yellow-light .treeview-menu > li.active > a { 113 | font-weight: 600; 114 | } 115 | .skin-yellow-light .sidebar-form { 116 | border-radius: 3px; 117 | border: 1px solid #d2d6de; 118 | margin: 10px 10px; 119 | } 120 | .skin-yellow-light .sidebar-form input[type="text"], 121 | .skin-yellow-light .sidebar-form .btn { 122 | box-shadow: none; 123 | background-color: #fff; 124 | border: 1px solid transparent; 125 | height: 35px; 126 | -webkit-transition: all 0.3s ease-in-out; 127 | -o-transition: all 0.3s ease-in-out; 128 | transition: all 0.3s ease-in-out; 129 | } 130 | .skin-yellow-light .sidebar-form input[type="text"] { 131 | color: #666; 132 | border-top-left-radius: 2px; 133 | border-top-right-radius: 0; 134 | border-bottom-right-radius: 0; 135 | border-bottom-left-radius: 2px; 136 | } 137 | .skin-yellow-light .sidebar-form input[type="text"]:focus, 138 | .skin-yellow-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { 139 | background-color: #fff; 140 | color: #666; 141 | } 142 | .skin-yellow-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { 143 | border-left-color: #fff; 144 | } 145 | .skin-yellow-light .sidebar-form .btn { 146 | color: #999; 147 | border-top-left-radius: 0; 148 | border-top-right-radius: 2px; 149 | border-bottom-right-radius: 2px; 150 | border-bottom-left-radius: 0; 151 | } 152 | @media (min-width: 768px) { 153 | .skin-yellow-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu { 154 | border-left: 1px solid #d2d6de; 155 | } 156 | } 157 | -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/styles/skins/skin-blue-light.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Skin: Blue 3 | * ---------- 4 | */ 5 | .skin-blue-light .main-header .navbar { 6 | background-color: #3c8dbc; 7 | } 8 | .skin-blue-light .main-header .navbar .nav > li > a { 9 | color: #ffffff; 10 | } 11 | .skin-blue-light .main-header .navbar .nav > li > a:hover, 12 | .skin-blue-light .main-header .navbar .nav > li > a:active, 13 | .skin-blue-light .main-header .navbar .nav > li > a:focus, 14 | .skin-blue-light .main-header .navbar .nav .open > a, 15 | .skin-blue-light .main-header .navbar .nav .open > a:hover, 16 | .skin-blue-light .main-header .navbar .nav .open > a:focus, 17 | .skin-blue-light .main-header .navbar .nav > .active > a { 18 | background: rgba(0, 0, 0, 0.1); 19 | color: #f6f6f6; 20 | } 21 | .skin-blue-light .main-header .navbar .sidebar-toggle { 22 | color: #ffffff; 23 | } 24 | .skin-blue-light .main-header .navbar .sidebar-toggle:hover { 25 | color: #f6f6f6; 26 | background: rgba(0, 0, 0, 0.1); 27 | } 28 | .skin-blue-light .main-header .navbar .sidebar-toggle { 29 | color: #fff; 30 | } 31 | .skin-blue-light .main-header .navbar .sidebar-toggle:hover { 32 | background-color: #367fa9; 33 | } 34 | @media (max-width: 767px) { 35 | .skin-blue-light .main-header .navbar .dropdown-menu li.divider { 36 | background-color: rgba(255, 255, 255, 0.1); 37 | } 38 | .skin-blue-light .main-header .navbar .dropdown-menu li a { 39 | color: #fff; 40 | } 41 | .skin-blue-light .main-header .navbar .dropdown-menu li a:hover { 42 | background: #367fa9; 43 | } 44 | } 45 | .skin-blue-light .main-header .logo { 46 | background-color: #3c8dbc; 47 | color: #ffffff; 48 | border-bottom: 0 solid transparent; 49 | } 50 | .skin-blue-light .main-header .logo:hover { 51 | background-color: #3b8ab8; 52 | } 53 | .skin-blue-light .main-header li.user-header { 54 | background-color: #3c8dbc; 55 | } 56 | .skin-blue-light .content-header { 57 | background: transparent; 58 | } 59 | .skin-blue-light .wrapper, 60 | .skin-blue-light .main-sidebar, 61 | .skin-blue-light .left-side { 62 | background-color: #f9fafc; 63 | } 64 | .skin-blue-light .content-wrapper, 65 | .skin-blue-light .main-footer { 66 | border-left: 1px solid #d2d6de; 67 | } 68 | .skin-blue-light .user-panel > .info, 69 | .skin-blue-light .user-panel > .info > a { 70 | color: #444444; 71 | } 72 | .skin-blue-light .sidebar-menu > li { 73 | -webkit-transition: border-left-color 0.3s ease; 74 | -o-transition: border-left-color 0.3s ease; 75 | transition: border-left-color 0.3s ease; 76 | } 77 | .skin-blue-light .sidebar-menu > li.header { 78 | color: #848484; 79 | background: #f9fafc; 80 | } 81 | .skin-blue-light .sidebar-menu > li > a { 82 | border-left: 3px solid transparent; 83 | font-weight: 600; 84 | } 85 | .skin-blue-light .sidebar-menu > li:hover > a, 86 | .skin-blue-light .sidebar-menu > li.active > a { 87 | color: #000000; 88 | background: #f4f4f5; 89 | } 90 | .skin-blue-light .sidebar-menu > li.active { 91 | border-left-color: #3c8dbc; 92 | } 93 | .skin-blue-light .sidebar-menu > li.active > a { 94 | font-weight: 600; 95 | } 96 | .skin-blue-light .sidebar-menu > li > .treeview-menu { 97 | background: #f4f4f5; 98 | } 99 | .skin-blue-light .sidebar a { 100 | color: #444444; 101 | } 102 | .skin-blue-light .sidebar a:hover { 103 | text-decoration: none; 104 | } 105 | .skin-blue-light .treeview-menu > li > a { 106 | color: #777777; 107 | } 108 | .skin-blue-light .treeview-menu > li.active > a, 109 | .skin-blue-light .treeview-menu > li > a:hover { 110 | color: #000000; 111 | } 112 | .skin-blue-light .treeview-menu > li.active > a { 113 | font-weight: 600; 114 | } 115 | .skin-blue-light .sidebar-form { 116 | border-radius: 3px; 117 | border: 1px solid #d2d6de; 118 | margin: 10px 10px; 119 | } 120 | .skin-blue-light .sidebar-form input[type="text"], 121 | .skin-blue-light .sidebar-form .btn { 122 | box-shadow: none; 123 | background-color: #fff; 124 | border: 1px solid transparent; 125 | height: 35px; 126 | -webkit-transition: all 0.3s ease-in-out; 127 | -o-transition: all 0.3s ease-in-out; 128 | transition: all 0.3s ease-in-out; 129 | } 130 | .skin-blue-light .sidebar-form input[type="text"] { 131 | color: #666; 132 | border-top-left-radius: 2px; 133 | border-top-right-radius: 0; 134 | border-bottom-right-radius: 0; 135 | border-bottom-left-radius: 2px; 136 | } 137 | .skin-blue-light .sidebar-form input[type="text"]:focus, 138 | .skin-blue-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { 139 | background-color: #fff; 140 | color: #666; 141 | } 142 | .skin-blue-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { 143 | border-left-color: #fff; 144 | } 145 | .skin-blue-light .sidebar-form .btn { 146 | color: #999; 147 | border-top-left-radius: 0; 148 | border-top-right-radius: 2px; 149 | border-bottom-right-radius: 2px; 150 | border-bottom-left-radius: 0; 151 | } 152 | @media (min-width: 768px) { 153 | .skin-blue-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu { 154 | border-left: 1px solid #d2d6de; 155 | } 156 | } 157 | .skin-blue-light .main-footer { 158 | border-top-color: #d2d6de; 159 | } 160 | .skin-blue.layout-top-nav .main-header > .logo { 161 | background-color: #3c8dbc; 162 | color: #ffffff; 163 | border-bottom: 0 solid transparent; 164 | } 165 | .skin-blue.layout-top-nav .main-header > .logo:hover { 166 | background-color: #3b8ab8; 167 | } 168 | -------------------------------------------------------------------------------- /src/WechatBribery/Views/Home/Activity.cshtml: -------------------------------------------------------------------------------- 1 | @model Activity 2 | @{ 3 | ViewBag.Title = Model.Title; 4 | } 5 | 6 |

7 | @ViewBag.Title 8 | @if (Model.End.HasValue) 9 | { 10 | 已经结束 11 | } 12 | else 13 | { 14 | 正在进行 15 | } 16 |

17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 |
活动用时当前领取钱数本轮总钱数当前领取红包数本轮总红包数中奖率参与人数
@((ViewBag.Price / 100.0).ToString("0.00"))@((Model.Price / 100.0).ToString("0.00"))@ViewBag.Amount@Model.BriberiesCount@((Model.Ratio * 100).ToString("0.00"))%@Model.Attend
42 | @if (!Model.End.HasValue) 43 | { 44 |
45 | 46 |
47 | 55 | } 56 | 57 |

红包分发规则

58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | @foreach(var x in Newtonsoft.Json.JsonConvert.DeserializeObject>(Model.RuleJson)) 69 | { 70 | 71 | @if (x.From == x.To) 72 | { 73 | 74 | 75 | } 76 | else 77 | { 78 | 79 | 80 | } 81 | 82 | 83 | 84 | } 85 | 86 |
类型金额(元)数量(个)
固定金额¥@((x.From / 100.0).ToString("0.00"))区间金额¥@((x.From / 100.0).ToString("0.00")) ~ ¥@((x.To / 100.0).ToString("0.00"))@x.Count
87 | 88 |

实时红包领取详情

89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | @foreach(Bribery x in ViewBag.Briberies) 102 | { 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | } 111 | 112 |
ID头像昵称金额时间
@x.OpenId@x.NickName¥@((x.Price / 100.0).ToString("0.00"))@x.ReceivedTime
113 | 114 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files, build results, and 2 | ## files generated by popular Visual Studio add-ons. 3 | 4 | # User-specific files 5 | *.suo 6 | *.user 7 | *.userosscache 8 | *.sln.docstates 9 | 10 | # User-specific files (MonoDevelop/Xamarin Studio) 11 | *.userprefs 12 | 13 | # Build results 14 | [Dd]ebug/ 15 | [Dd]ebugPublic/ 16 | [Rr]elease/ 17 | [Rr]eleases/ 18 | x64/ 19 | x86/ 20 | bld/ 21 | [Bb]in/ 22 | [Oo]bj/ 23 | [Ll]og/ 24 | 25 | # Visual Studio 2015 cache/options directory 26 | .vs/ 27 | # Uncomment if you have tasks that create the project's static files in wwwroot 28 | #wwwroot/ 29 | 30 | # MSTest test Results 31 | [Tt]est[Rr]esult*/ 32 | [Bb]uild[Ll]og.* 33 | 34 | # NUNIT 35 | *.VisualState.xml 36 | TestResult.xml 37 | 38 | # Build Results of an ATL Project 39 | [Dd]ebugPS/ 40 | [Rr]eleasePS/ 41 | dlldata.c 42 | 43 | # DNX 44 | project.lock.json 45 | artifacts/ 46 | 47 | *_i.c 48 | *_p.c 49 | *_i.h 50 | *.ilk 51 | *.meta 52 | *.obj 53 | *.pch 54 | *.pdb 55 | *.pgc 56 | *.pgd 57 | *.rsp 58 | *.sbr 59 | *.tlb 60 | *.tli 61 | *.tlh 62 | *.tmp 63 | *.tmp_proj 64 | *.log 65 | *.vspscc 66 | *.vssscc 67 | .builds 68 | *.pidb 69 | *.svclog 70 | *.scc 71 | 72 | # Chutzpah Test files 73 | _Chutzpah* 74 | 75 | # Visual C++ cache files 76 | ipch/ 77 | *.aps 78 | *.ncb 79 | *.opendb 80 | *.opensdf 81 | *.sdf 82 | *.cachefile 83 | *.VC.db 84 | *.VC.VC.opendb 85 | 86 | # Visual Studio profiler 87 | *.psess 88 | *.vsp 89 | *.vspx 90 | *.sap 91 | 92 | # TFS 2012 Local Workspace 93 | $tf/ 94 | 95 | # Guidance Automation Toolkit 96 | *.gpState 97 | 98 | # ReSharper is a .NET coding add-in 99 | _ReSharper*/ 100 | *.[Rr]e[Ss]harper 101 | *.DotSettings.user 102 | 103 | # JustCode is a .NET coding add-in 104 | .JustCode 105 | 106 | # TeamCity is a build add-in 107 | _TeamCity* 108 | 109 | # DotCover is a Code Coverage Tool 110 | *.dotCover 111 | 112 | # NCrunch 113 | _NCrunch_* 114 | .*crunch*.local.xml 115 | nCrunchTemp_* 116 | 117 | # MightyMoose 118 | *.mm.* 119 | AutoTest.Net/ 120 | 121 | # Web workbench (sass) 122 | .sass-cache/ 123 | 124 | # Installshield output folder 125 | [Ee]xpress/ 126 | 127 | # DocProject is a documentation generator add-in 128 | DocProject/buildhelp/ 129 | DocProject/Help/*.HxT 130 | DocProject/Help/*.HxC 131 | DocProject/Help/*.hhc 132 | DocProject/Help/*.hhk 133 | DocProject/Help/*.hhp 134 | DocProject/Help/Html2 135 | DocProject/Help/html 136 | 137 | # Click-Once directory 138 | publish/ 139 | 140 | # Publish Web Output 141 | *.[Pp]ublish.xml 142 | *.azurePubxml 143 | # TODO: Comment the next line if you want to checkin your web deploy settings 144 | # but database connection strings (with potential passwords) will be unencrypted 145 | *.pubxml 146 | *.publishproj 147 | 148 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 149 | # checkin your Azure Web App publish settings, but sensitive information contained 150 | # in these scripts will be unencrypted 151 | PublishScripts/ 152 | 153 | # NuGet Packages 154 | *.nupkg 155 | # The packages folder can be ignored because of Package Restore 156 | **/packages/* 157 | # except build/, which is used as an MSBuild target. 158 | !**/packages/build/ 159 | # Uncomment if necessary however generally it will be regenerated when needed 160 | #!**/packages/repositories.config 161 | # NuGet v3's project.json files produces more ignoreable files 162 | *.nuget.props 163 | *.nuget.targets 164 | 165 | # Microsoft Azure Build Output 166 | csx/ 167 | *.build.csdef 168 | 169 | # Microsoft Azure Emulator 170 | ecf/ 171 | rcf/ 172 | 173 | # Windows Store app package directories and files 174 | AppPackages/ 175 | BundleArtifacts/ 176 | Package.StoreAssociation.xml 177 | _pkginfo.txt 178 | 179 | # Visual Studio cache files 180 | # files ending in .cache can be ignored 181 | *.[Cc]ache 182 | # but keep track of directories ending in .cache 183 | !*.[Cc]ache/ 184 | 185 | # Others 186 | ClientBin/ 187 | ~$* 188 | *~ 189 | *.dbmdl 190 | *.dbproj.schemaview 191 | *.pfx 192 | *.publishsettings 193 | node_modules/ 194 | orleans.codegen.cs 195 | 196 | # Since there are multiple workflows, uncomment next line to ignore bower_components 197 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 198 | #bower_components/ 199 | 200 | # RIA/Silverlight projects 201 | Generated_Code/ 202 | 203 | # Backup & report files from converting an old project file 204 | # to a newer Visual Studio version. Backup files are not needed, 205 | # because we have git ;-) 206 | _UpgradeReport_Files/ 207 | Backup*/ 208 | UpgradeLog*.XML 209 | UpgradeLog*.htm 210 | 211 | # SQL Server files 212 | *.mdf 213 | *.ldf 214 | 215 | # Business Intelligence projects 216 | *.rdl.data 217 | *.bim.layout 218 | *.bim_*.settings 219 | 220 | # Microsoft Fakes 221 | FakesAssemblies/ 222 | 223 | # GhostDoc plugin setting file 224 | *.GhostDoc.xml 225 | 226 | # Node.js Tools for Visual Studio 227 | .ntvs_analysis.dat 228 | 229 | # Visual Studio 6 build log 230 | *.plg 231 | 232 | # Visual Studio 6 workspace options file 233 | *.opt 234 | 235 | # Visual Studio LightSwitch build output 236 | **/*.HTMLClient/GeneratedArtifacts 237 | **/*.DesktopClient/GeneratedArtifacts 238 | **/*.DesktopClient/ModelManifest.xml 239 | **/*.Server/GeneratedArtifacts 240 | **/*.Server/ModelManifest.xml 241 | _Pvt_Extensions 242 | 243 | # Paket dependency manager 244 | .paket/paket.exe 245 | paket-files/ 246 | 247 | # FAKE - F# Make 248 | .fake/ 249 | 250 | # JetBrains Rider 251 | .idea/ 252 | *.sln.iml 253 | -------------------------------------------------------------------------------- /src/WechatBribery/Views/Account/Login.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | Layout = null; 3 | } 4 | 5 | 6 | 7 | 8 | 9 | 登录 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 29 | 30 | 31 | 52 | 53 | 54 | 55 | 56 | 57 | 129 | 130 | 131 | -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/styles/skins/skin-black-light.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Skin: Black 3 | * ----------- 4 | */ 5 | /* skin-black navbar */ 6 | .skin-black-light .main-header { 7 | -webkit-box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.05); 8 | box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.05); 9 | } 10 | .skin-black-light .main-header .navbar-toggle { 11 | color: #333; 12 | } 13 | .skin-black-light .main-header .navbar-brand { 14 | color: #333; 15 | border-right: 1px solid #eee; 16 | } 17 | .skin-black-light .main-header > .navbar { 18 | background-color: #ffffff; 19 | } 20 | .skin-black-light .main-header > .navbar .nav > li > a { 21 | color: #333333; 22 | } 23 | .skin-black-light .main-header > .navbar .nav > li > a:hover, 24 | .skin-black-light .main-header > .navbar .nav > li > a:active, 25 | .skin-black-light .main-header > .navbar .nav > li > a:focus, 26 | .skin-black-light .main-header > .navbar .nav .open > a, 27 | .skin-black-light .main-header > .navbar .nav .open > a:hover, 28 | .skin-black-light .main-header > .navbar .nav .open > a:focus, 29 | .skin-black-light .main-header > .navbar .nav > .active > a { 30 | background: #ffffff; 31 | color: #999999; 32 | } 33 | .skin-black-light .main-header > .navbar .sidebar-toggle { 34 | color: #333333; 35 | } 36 | .skin-black-light .main-header > .navbar .sidebar-toggle:hover { 37 | color: #999999; 38 | background: #ffffff; 39 | } 40 | .skin-black-light .main-header > .navbar > .sidebar-toggle { 41 | color: #333; 42 | border-right: 1px solid #eee; 43 | } 44 | .skin-black-light .main-header > .navbar .navbar-nav > li > a { 45 | border-right: 1px solid #eee; 46 | } 47 | .skin-black-light .main-header > .navbar .navbar-custom-menu .navbar-nav > li > a, 48 | .skin-black-light .main-header > .navbar .navbar-right > li > a { 49 | border-left: 1px solid #eee; 50 | border-right-width: 0; 51 | } 52 | .skin-black-light .main-header > .logo { 53 | background-color: #ffffff; 54 | color: #333333; 55 | border-bottom: 0 solid transparent; 56 | border-right: 1px solid #eee; 57 | } 58 | .skin-black-light .main-header > .logo:hover { 59 | background-color: #fcfcfc; 60 | } 61 | @media (max-width: 767px) { 62 | .skin-black-light .main-header > .logo { 63 | background-color: #222222; 64 | color: #ffffff; 65 | border-bottom: 0 solid transparent; 66 | border-right: none; 67 | } 68 | .skin-black-light .main-header > .logo:hover { 69 | background-color: #1f1f1f; 70 | } 71 | } 72 | .skin-black-light .main-header li.user-header { 73 | background-color: #222; 74 | } 75 | .skin-black-light .content-header { 76 | background: transparent; 77 | box-shadow: none; 78 | } 79 | .skin-black-light .wrapper, 80 | .skin-black-light .main-sidebar, 81 | .skin-black-light .left-side { 82 | background-color: #f9fafc; 83 | } 84 | .skin-black-light .content-wrapper, 85 | .skin-black-light .main-footer { 86 | border-left: 1px solid #d2d6de; 87 | } 88 | .skin-black-light .user-panel > .info, 89 | .skin-black-light .user-panel > .info > a { 90 | color: #444444; 91 | } 92 | .skin-black-light .sidebar-menu > li { 93 | -webkit-transition: border-left-color 0.3s ease; 94 | -o-transition: border-left-color 0.3s ease; 95 | transition: border-left-color 0.3s ease; 96 | } 97 | .skin-black-light .sidebar-menu > li.header { 98 | color: #848484; 99 | background: #f9fafc; 100 | } 101 | .skin-black-light .sidebar-menu > li > a { 102 | border-left: 3px solid transparent; 103 | font-weight: 600; 104 | } 105 | .skin-black-light .sidebar-menu > li:hover > a, 106 | .skin-black-light .sidebar-menu > li.active > a { 107 | color: #000000; 108 | background: #f4f4f5; 109 | } 110 | .skin-black-light .sidebar-menu > li.active { 111 | border-left-color: #ffffff; 112 | } 113 | .skin-black-light .sidebar-menu > li.active > a { 114 | font-weight: 600; 115 | } 116 | .skin-black-light .sidebar-menu > li > .treeview-menu { 117 | background: #f4f4f5; 118 | } 119 | .skin-black-light .sidebar a { 120 | color: #444444; 121 | } 122 | .skin-black-light .sidebar a:hover { 123 | text-decoration: none; 124 | } 125 | .skin-black-light .treeview-menu > li > a { 126 | color: #777777; 127 | } 128 | .skin-black-light .treeview-menu > li.active > a, 129 | .skin-black-light .treeview-menu > li > a:hover { 130 | color: #000000; 131 | } 132 | .skin-black-light .treeview-menu > li.active > a { 133 | font-weight: 600; 134 | } 135 | .skin-black-light .sidebar-form { 136 | border-radius: 3px; 137 | border: 1px solid #d2d6de; 138 | margin: 10px 10px; 139 | } 140 | .skin-black-light .sidebar-form input[type="text"], 141 | .skin-black-light .sidebar-form .btn { 142 | box-shadow: none; 143 | background-color: #fff; 144 | border: 1px solid transparent; 145 | height: 35px; 146 | -webkit-transition: all 0.3s ease-in-out; 147 | -o-transition: all 0.3s ease-in-out; 148 | transition: all 0.3s ease-in-out; 149 | } 150 | .skin-black-light .sidebar-form input[type="text"] { 151 | color: #666; 152 | border-top-left-radius: 2px; 153 | border-top-right-radius: 0; 154 | border-bottom-right-radius: 0; 155 | border-bottom-left-radius: 2px; 156 | } 157 | .skin-black-light .sidebar-form input[type="text"]:focus, 158 | .skin-black-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { 159 | background-color: #fff; 160 | color: #666; 161 | } 162 | .skin-black-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { 163 | border-left-color: #fff; 164 | } 165 | .skin-black-light .sidebar-form .btn { 166 | color: #999; 167 | border-top-left-radius: 0; 168 | border-top-right-radius: 2px; 169 | border-bottom-right-radius: 2px; 170 | border-bottom-left-radius: 0; 171 | } 172 | @media (min-width: 768px) { 173 | .skin-black-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu { 174 | border-left: 1px solid #d2d6de; 175 | } 176 | } 177 | -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/scripts/jquery.slimscroll.min.js: -------------------------------------------------------------------------------- 1 | (function($){$.fn.extend({slimScroll:function(options){var defaults={width:"auto",height:"250px",size:"7px",color:"#000",position:"right",distance:"1px",start:"top",opacity:.4,alwaysVisible:false,disableFadeOut:false,railVisible:false,railColor:"#333",railOpacity:.2,railDraggable:true,railClass:"slimScrollRail",barClass:"slimScrollBar",wrapperClass:"slimScrollDiv",allowPageScroll:false,wheelStep:20,touchScrollStep:200,borderRadius:"7px",railBorderRadius:"7px"};var o=$.extend(defaults,options);this.each(function(){var isOverPanel,isOverBar,isDragg,queueHide,touchDif,barHeight,percentScroll,lastScroll,divS="
",minBarHeight=30,releaseScroll=false;var me=$(this);if(me.parent().hasClass(o.wrapperClass)){var offset=me.scrollTop();bar=me.parent().find("."+o.barClass);rail=me.parent().find("."+o.railClass);getBarHeight();if($.isPlainObject(options)){if("height"in options&&options.height=="auto"){me.parent().css("height","auto");me.css("height","auto");var height=me.parent().parent().height();me.parent().css("height",height);me.css("height",height)}if("scrollTo"in options){offset=parseInt(o.scrollTo)}else if("scrollBy"in options){offset+=parseInt(o.scrollBy)}else if("destroy"in options){bar.remove();rail.remove();me.unwrap();return}scrollContent(offset,false,true)}return}else if($.isPlainObject(options)){if("destroy"in options){return}}o.height=o.height=="auto"?me.parent().height():o.height;var wrapper=$(divS).addClass(o.wrapperClass).css({position:"relative",overflow:"hidden",width:o.width,height:o.height});me.css({overflow:"hidden",width:o.width,height:o.height,"-ms-touch-action":"none"});var rail=$(divS).addClass(o.railClass).css({width:o.size,height:"100%",position:"absolute",top:0,display:o.alwaysVisible&&o.railVisible?"block":"none","border-radius":o.railBorderRadius,background:o.railColor,opacity:o.railOpacity,zIndex:90});var bar=$(divS).addClass(o.barClass).css({background:o.color,width:o.size,position:"absolute",top:0,opacity:o.opacity,display:o.alwaysVisible?"block":"none","border-radius":o.borderRadius,BorderRadius:o.borderRadius,MozBorderRadius:o.borderRadius,WebkitBorderRadius:o.borderRadius,zIndex:99});var posCss=o.position=="right"?{right:o.distance}:{left:o.distance};rail.css(posCss);bar.css(posCss);me.wrap(wrapper);me.parent().append(bar);me.parent().append(rail);if(o.railDraggable){bar.bind("mousedown",function(e){var $doc=$(document);isDragg=true;t=parseFloat(bar.css("top"));pageY=e.pageY;$doc.bind("mousemove.slimscroll",function(e){currTop=t+e.pageY-pageY;bar.css("top",currTop);scrollContent(0,bar.position().top,false)});$doc.bind("mouseup.slimscroll",function(e){isDragg=false;hideBar();$doc.unbind(".slimscroll")});return false}).bind("selectstart.slimscroll",function(e){e.stopPropagation();e.preventDefault();return false})}rail.hover(function(){showBar()},function(){hideBar()});bar.hover(function(){isOverBar=true},function(){isOverBar=false});me.hover(function(){isOverPanel=true;showBar();hideBar()},function(){isOverPanel=false;hideBar()});if(window.navigator.msPointerEnabled){me.bind("MSPointerDown",function(e,b){if(e.originalEvent.targetTouches.length){touchDif=e.originalEvent.targetTouches[0].pageY}});me.bind("MSPointerMove",function(e){e.originalEvent.preventDefault();if(e.originalEvent.targetTouches.length){var diff=(touchDif-e.originalEvent.targetTouches[0].pageY)/o.touchScrollStep;scrollContent(diff,true);touchDif=e.originalEvent.targetTouches[0].pageY}})}else{me.bind("touchstart",function(e,b){if(e.originalEvent.touches.length){touchDif=e.originalEvent.touches[0].pageY}});me.bind("touchmove",function(e){if(!releaseScroll){e.originalEvent.preventDefault()}if(e.originalEvent.touches.length){var diff=(touchDif-e.originalEvent.touches[0].pageY)/o.touchScrollStep;scrollContent(diff,true);touchDif=e.originalEvent.touches[0].pageY}})}getBarHeight();if(o.start==="bottom"){bar.css({top:me.outerHeight()-bar.outerHeight()});scrollContent(0,true)}else if(o.start!=="top"){scrollContent($(o.start).position().top,null,true);if(!o.alwaysVisible){bar.hide()}}attachWheel();function _onWheel(e){if(!isOverPanel){return}var e=e||window.event;var delta=0;if(e.wheelDelta){delta=-e.wheelDelta/120}if(e.detail){delta=e.detail/3}var target=e.target||e.srcTarget||e.srcElement;if($(target).closest("."+o.wrapperClass).is(me.parent())){scrollContent(delta,true)}if(e.preventDefault&&!releaseScroll){e.preventDefault()}if(!releaseScroll){e.returnValue=false}}function scrollContent(y,isWheel,isJump){releaseScroll=false;var delta=y;var maxTop=me.outerHeight()-bar.outerHeight();if(isWheel){delta=parseInt(bar.css("top"))+y*parseInt(o.wheelStep)/100*bar.outerHeight();delta=Math.min(Math.max(delta,0),maxTop);delta=y>0?Math.ceil(delta):Math.floor(delta);bar.css({top:delta+"px"})}percentScroll=parseInt(bar.css("top"))/(me.outerHeight()-bar.outerHeight());delta=percentScroll*(me[0].scrollHeight-me.outerHeight());if(isJump){delta=y;var offsetTop=delta/me[0].scrollHeight*me.outerHeight();offsetTop=Math.min(Math.max(offsetTop,0),maxTop);bar.css({top:offsetTop+"px"})}me.scrollTop(delta);me.trigger("slimscrolling",~~delta);showBar();hideBar()}function attachWheel(){if(window.addEventListener){this.addEventListener("DOMMouseScroll",_onWheel,false);this.addEventListener("mousewheel",_onWheel,false)}else{document.attachEvent("onmousewheel",_onWheel)}}function getBarHeight(){barHeight=Math.max(me.outerHeight()/me[0].scrollHeight*me.outerHeight(),minBarHeight);bar.css({height:barHeight+"px"});var display=barHeight==me.outerHeight()?"none":"block";bar.css({display:display})}function showBar(){getBarHeight();clearTimeout(queueHide);if(percentScroll==~~percentScroll){releaseScroll=o.allowPageScroll;if(lastScroll!=percentScroll){var msg=~~percentScroll==0?"top":"bottom";me.trigger("slimscroll",msg)}}else{releaseScroll=false}lastScroll=percentScroll;if(barHeight>=me.outerHeight()){releaseScroll=true;return}bar.stop(true,true).fadeIn("fast");if(o.railVisible){rail.stop(true,true).fadeIn("fast")}}function hideBar(){if(!o.alwaysVisible){queueHide=setTimeout(function(){if(!(o.disableFadeOut&&isOverPanel)&&!isOverBar&&!isDragg){bar.fadeOut("slow");rail.fadeOut("slow")}},1e3)}}});return this}});$.fn.extend({slimscroll:$.fn.slimScroll})})(jQuery); -------------------------------------------------------------------------------- /src/WechatBribery/wwwroot/scripts/pages/dashboard.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Author: Abdullah A Almsaeed 3 | * Date: 4 Jan 2014 4 | * Description: 5 | * This is a demo file used only for the main dashboard (index.html) 6 | **/ 7 | 8 | $(function () { 9 | 10 | "use strict"; 11 | 12 | //Make the dashboard widgets sortable Using jquery UI 13 | $(".connectedSortable").sortable({ 14 | placeholder: "sort-highlight", 15 | connectWith: ".connectedSortable", 16 | handle: ".box-header, .nav-tabs", 17 | forcePlaceholderSize: true, 18 | zIndex: 999999 19 | }); 20 | $(".connectedSortable .box-header, .connectedSortable .nav-tabs-custom").css("cursor", "move"); 21 | 22 | //jQuery UI sortable for the todo list 23 | $(".todo-list").sortable({ 24 | placeholder: "sort-highlight", 25 | handle: ".handle", 26 | forcePlaceholderSize: true, 27 | zIndex: 999999 28 | }); 29 | 30 | //bootstrap WYSIHTML5 - text editor 31 | $(".textarea").wysihtml5(); 32 | 33 | $('.daterange').daterangepicker({ 34 | ranges: { 35 | 'Today': [moment(), moment()], 36 | 'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')], 37 | 'Last 7 Days': [moment().subtract(6, 'days'), moment()], 38 | 'Last 30 Days': [moment().subtract(29, 'days'), moment()], 39 | 'This Month': [moment().startOf('month'), moment().endOf('month')], 40 | 'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')] 41 | }, 42 | startDate: moment().subtract(29, 'days'), 43 | endDate: moment() 44 | }, function (start, end) { 45 | window.alert("You chose: " + start.format('MMMM D, YYYY') + ' - ' + end.format('MMMM D, YYYY')); 46 | }); 47 | 48 | /* jQueryKnob */ 49 | $(".knob").knob(); 50 | 51 | //jvectormap data 52 | var visitorsData = { 53 | "US": 398, //USA 54 | "SA": 400, //Saudi Arabia 55 | "CA": 1000, //Canada 56 | "DE": 500, //Germany 57 | "FR": 760, //France 58 | "CN": 300, //China 59 | "AU": 700, //Australia 60 | "BR": 600, //Brazil 61 | "IN": 800, //India 62 | "GB": 320, //Great Britain 63 | "RU": 3000 //Russia 64 | }; 65 | //World map by jvectormap 66 | $('#world-map').vectorMap({ 67 | map: 'world_mill_en', 68 | backgroundColor: "transparent", 69 | regionStyle: { 70 | initial: { 71 | fill: '#e4e4e4', 72 | "fill-opacity": 1, 73 | stroke: 'none', 74 | "stroke-width": 0, 75 | "stroke-opacity": 1 76 | } 77 | }, 78 | series: { 79 | regions: [{ 80 | values: visitorsData, 81 | scale: ["#92c1dc", "#ebf4f9"], 82 | normalizeFunction: 'polynomial' 83 | }] 84 | }, 85 | onRegionLabelShow: function (e, el, code) { 86 | if (typeof visitorsData[code] != "undefined") 87 | el.html(el.html() + ': ' + visitorsData[code] + ' new visitors'); 88 | } 89 | }); 90 | 91 | //Sparkline charts 92 | var myvalues = [1000, 1200, 920, 927, 931, 1027, 819, 930, 1021]; 93 | $('#sparkline-1').sparkline(myvalues, { 94 | type: 'line', 95 | lineColor: '#92c1dc', 96 | fillColor: "#ebf4f9", 97 | height: '50', 98 | width: '80' 99 | }); 100 | myvalues = [515, 519, 520, 522, 652, 810, 370, 627, 319, 630, 921]; 101 | $('#sparkline-2').sparkline(myvalues, { 102 | type: 'line', 103 | lineColor: '#92c1dc', 104 | fillColor: "#ebf4f9", 105 | height: '50', 106 | width: '80' 107 | }); 108 | myvalues = [15, 19, 20, 22, 33, 27, 31, 27, 19, 30, 21]; 109 | $('#sparkline-3').sparkline(myvalues, { 110 | type: 'line', 111 | lineColor: '#92c1dc', 112 | fillColor: "#ebf4f9", 113 | height: '50', 114 | width: '80' 115 | }); 116 | 117 | //The Calender 118 | $("#calendar").datepicker(); 119 | 120 | //SLIMSCROLL FOR CHAT WIDGET 121 | $('#chat-box').slimScroll({ 122 | height: '250px' 123 | }); 124 | 125 | /* Morris.js Charts */ 126 | // Sales chart 127 | var area = new Morris.Area({ 128 | element: 'revenue-chart', 129 | resize: true, 130 | data: [ 131 | {y: '2011 Q1', item1: 2666, item2: 2666}, 132 | {y: '2011 Q2', item1: 2778, item2: 2294}, 133 | {y: '2011 Q3', item1: 4912, item2: 1969}, 134 | {y: '2011 Q4', item1: 3767, item2: 3597}, 135 | {y: '2012 Q1', item1: 6810, item2: 1914}, 136 | {y: '2012 Q2', item1: 5670, item2: 4293}, 137 | {y: '2012 Q3', item1: 4820, item2: 3795}, 138 | {y: '2012 Q4', item1: 15073, item2: 5967}, 139 | {y: '2013 Q1', item1: 10687, item2: 4460}, 140 | {y: '2013 Q2', item1: 8432, item2: 5713} 141 | ], 142 | xkey: 'y', 143 | ykeys: ['item1', 'item2'], 144 | labels: ['Item 1', 'Item 2'], 145 | lineColors: ['#a0d0e0', '#3c8dbc'], 146 | hideHover: 'auto' 147 | }); 148 | var line = new Morris.Line({ 149 | element: 'line-chart', 150 | resize: true, 151 | data: [ 152 | {y: '2011 Q1', item1: 2666}, 153 | {y: '2011 Q2', item1: 2778}, 154 | {y: '2011 Q3', item1: 4912}, 155 | {y: '2011 Q4', item1: 3767}, 156 | {y: '2012 Q1', item1: 6810}, 157 | {y: '2012 Q2', item1: 5670}, 158 | {y: '2012 Q3', item1: 4820}, 159 | {y: '2012 Q4', item1: 15073}, 160 | {y: '2013 Q1', item1: 10687}, 161 | {y: '2013 Q2', item1: 8432} 162 | ], 163 | xkey: 'y', 164 | ykeys: ['item1'], 165 | labels: ['Item 1'], 166 | lineColors: ['#efefef'], 167 | lineWidth: 2, 168 | hideHover: 'auto', 169 | gridTextColor: "#fff", 170 | gridStrokeWidth: 0.4, 171 | pointSize: 4, 172 | pointStrokeColors: ["#efefef"], 173 | gridLineColor: "#efefef", 174 | gridTextFamily: "Open Sans", 175 | gridTextSize: 10 176 | }); 177 | 178 | //Donut Chart 179 | var donut = new Morris.Donut({ 180 | element: 'sales-chart', 181 | resize: true, 182 | colors: ["#3c8dbc", "#f56954", "#00a65a"], 183 | data: [ 184 | {label: "Download Sales", value: 12}, 185 | {label: "In-Store Sales", value: 30}, 186 | {label: "Mail-Order Sales", value: 20} 187 | ], 188 | hideHover: 'auto' 189 | }); 190 | 191 | //Fix for charts under tabs 192 | $('.box ul.nav a').on('shown.bs.tab', function () { 193 | area.redraw(); 194 | donut.redraw(); 195 | line.redraw(); 196 | }); 197 | 198 | /* The todo list plugin */ 199 | $(".todo-list").todolist({ 200 | onCheck: function (ele) { 201 | window.console.log("The element has been checked"); 202 | return ele; 203 | }, 204 | onUncheck: function (ele) { 205 | window.console.log("The element has been unchecked"); 206 | return ele; 207 | } 208 | }); 209 | 210 | }); 211 | --------------------------------------------------------------------------------