Browse Source

对接用户系统和团队

master
С·æ 4 years ago
parent
commit
a4c387d747
  1. 15
      src/Coldairarrow.Api/Controllers/HuiYan/catsController.cs
  2. 4
      src/Coldairarrow.Api/Controllers/HuiYan/itemlabelsController.cs
  3. 8
      src/Coldairarrow.Api/Controllers/HuiYan/teamitemsController.cs
  4. 15
      src/Coldairarrow.Api/DependencyInjection/Operator.cs
  5. 25
      src/Coldairarrow.Business/HuiYan/catsBusiness.cs
  6. 14
      src/Coldairarrow.Business/HuiYan/itemlabelsBusiness.cs
  7. 15
      src/Coldairarrow.Business/HuiYan/teamitemsBusiness.cs
  8. 16
      src/Coldairarrow.IBusiness/HuiYan/IcatsBusiness.cs
  9. 4
      src/Coldairarrow.IBusiness/IOperator.cs
  10. 72
      客户端/齐越慧眼/齐越慧眼/ApiHelper.cs
  11. 8
      客户端/齐越慧眼/齐越慧眼/App.xaml
  12. 3
      客户端/齐越慧眼/齐越慧眼/App.xaml.cs
  13. 28
      客户端/齐越慧眼/齐越慧眼/LoginWindow.xaml
  14. 32
      客户端/齐越慧眼/齐越慧眼/LoginWindow.xaml.cs
  15. 110
      客户端/齐越慧眼/齐越慧眼/LoginWindowViewModel.cs
  16. 2
      客户端/齐越慧眼/齐越慧眼/MainWindow.xaml
  17. 2
      客户端/齐越慧眼/齐越慧眼/MainWindow.xaml.cs
  18. 75
      客户端/齐越慧眼/齐越慧眼/ToStringConverter.cs
  19. 51
      客户端/齐越慧眼/齐越慧眼/UserControls/BrowerControl.xaml.cs
  20. 1
      客户端/齐越慧眼/齐越慧眼/UserControls/CatControl.xaml
  21. 18
      客户端/齐越慧眼/齐越慧眼/UserControls/CatControl.xaml.cs
  22. 1
      客户端/齐越慧眼/齐越慧眼/UserControls/ItemControl.xaml.cs
  23. 26
      客户端/齐越慧眼/齐越慧眼/vuepage/client/src/views/cats/Index.vue
  24. 4
      客户端/齐越慧眼/齐越慧眼/vuepage/client/src/views/items/Index.vue
  25. 1
      客户端/齐越慧眼/齐越慧眼/vuepage/dist/css/app.3528f00e.css
  26. 1
      客户端/齐越慧眼/齐越慧眼/vuepage/dist/css/app.66edb6c9.css
  27. 2
      客户端/齐越慧眼/齐越慧眼/vuepage/dist/js/about.js
  28. 1
      客户端/齐越慧眼/齐越慧眼/vuepage/dist/js/about.js.map
  29. 2
      客户端/齐越慧眼/齐越慧眼/vuepage/dist/js/app.js
  30. 2
      客户端/齐越慧眼/齐越慧眼/vuepage/dist/js/app.js.map
  31. 15
      客户端/齐越慧眼/齐越慧眼/齐越慧眼.csproj

15
src/Coldairarrow.Api/Controllers/HuiYan/catsController.cs

@ -86,7 +86,7 @@ namespace Coldairarrow.Api.Controllers.HuiYan
/// 获取所有品类词列表
/// </summary>
/// <returns></returns>
[HttpGet, AllowAnonymous]
[HttpGet]
public async Task<List<CatTreeDTO>> GetCatDatas()
{
return await _catsBus.GetTreeDataListAsync();
@ -97,12 +97,23 @@ namespace Coldairarrow.Api.Controllers.HuiYan
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
[HttpPost, AllowAnonymous]
[HttpPost]
public AjaxResult AddPLKeyWord(KeyWordDto model)
{
return _catsBus.AddKeyWord(model);
}
/// <summary>
/// 更新打开时间
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[HttpPost]
public AjaxResult SetKeyOpenTime(string id,ItemPlatform platform)
{
return _catsBus.SetKeyOpenTime(id);
}
#endregion
}
}

4
src/Coldairarrow.Api/Controllers/HuiYan/itemlabelsController.cs

@ -69,7 +69,7 @@ namespace Coldairarrow.Api.Controllers.HuiYan
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
[HttpPost, AllowAnonymous]
[HttpPost]
public AjaxResult SetItemLabel(ItemLabelDto model)
{
return _itemlabelsBus.SetItemLabel(model);
@ -81,7 +81,7 @@ namespace Coldairarrow.Api.Controllers.HuiYan
/// <param name="ids"></param>
/// <param name="platform"></param>
/// <returns></returns>
[HttpPost, AllowAnonymous]
[HttpPost]
public AjaxResult GetLabelByItemIds([FromBody] List<string> ids, [FromQuery] ItemPlatform platform)
{

8
src/Coldairarrow.Api/Controllers/HuiYan/teamitemsController.cs

@ -69,7 +69,7 @@ namespace Coldairarrow.Api.Controllers.HuiYan
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost, AllowAnonymous]
[HttpPost]
public PageResult<TeamitemDto> GetItems(PageInput<ConditionDTO> input)
{
return _teamitemsBus.GetItems(input);
@ -80,7 +80,7 @@ namespace Coldairarrow.Api.Controllers.HuiYan
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
[HttpPost, AllowAnonymous]
[HttpPost]
public AjaxResult AddItem(TeamitemDto model)
{
return _teamitemsBus.AddItem(model);
@ -91,7 +91,7 @@ namespace Coldairarrow.Api.Controllers.HuiYan
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
[HttpPost, AllowAnonymous]
[HttpPost]
public AjaxResult SetItem(TeamitemDto model)
{
return _teamitemsBus.SetItem(model);
@ -103,7 +103,7 @@ namespace Coldairarrow.Api.Controllers.HuiYan
/// <param name="id"></param>
/// <param name="state"></param>
/// <returns></returns>
[HttpPost, AllowAnonymous]
[HttpPost]
public AjaxResult SetState(string id, int state)
{
return _teamitemsBus.SetState(id, state);

15
src/Coldairarrow.Api/DependencyInjection/Operator.cs

@ -25,11 +25,26 @@ namespace Coldairarrow.Api
_userCache = userCache;
UserId = httpContextAccessor?.HttpContext?.User.Claims
.Where(x => x.Type == "userId").FirstOrDefault()?.Value;
if (string.IsNullOrEmpty(UserId))
{
string json = httpContextAccessor?.HttpContext?.User.Claims
.Where(x => x.Type == "user").FirstOrDefault()?.Value;
if (!string.IsNullOrEmpty(json))
{
var user = Newtonsoft.Json.JsonConvert.DeserializeObject<dynamic>(json);
UserId = user.Id;
TeamId = user.TeamId;
}
}
}
private Base_UserDTO _property;
private object _lockObj = new object();
public string TeamId { get; set; }
/// <summary>
/// 当前操作者UserId
/// </summary>

25
src/Coldairarrow.Business/HuiYan/catsBusiness.cs

@ -1,5 +1,6 @@
using Coldairarrow.Entity.DTO;
using Coldairarrow.Entity.HuiYan;
using Coldairarrow.IBusiness;
using Coldairarrow.Util;
using EFCore.Sharding;
using LinqKit;
@ -14,9 +15,11 @@ namespace Coldairarrow.Business.HuiYan
{
public class catsBusiness : BaseBusiness<cats>, IcatsBusiness, ITransientDependency
{
public catsBusiness(IDbAccessor db)
readonly IOperator _operator;
public catsBusiness(IDbAccessor db, IOperator @operator)
: base(db)
{
_operator = @operator;
}
#region 外部接口
@ -208,7 +211,7 @@ namespace Coldairarrow.Business.HuiYan
public async Task<List<CatTreeDTO>> GetTreeDataListAsync()
{
var where = LinqHelper.True<cats>().And(c => c.Type == 0 || string.IsNullOrEmpty(c.TeamId));
var where = LinqHelper.True<cats>().And(c => c.Type == 0 || c.TeamId== _operator.TeamId);
var list = await GetIQueryable().Where(where).ToListAsync();
var treeList = list
@ -218,12 +221,25 @@ namespace Coldairarrow.Business.HuiYan
ParentId = x.ParentId,
Text = x.Name,
Value = x.Id,
Type = x.Type
Type = x.Type,
IsShowJDTime= x.LastShowJDTime==null?true:(DateTime.Now- x.LastShowJDTime.Value).TotalDays>3,
IsShowPddTime = x.LastShowPddTime == null ? true : (DateTime.Now - x.LastShowPddTime.Value).TotalDays > 3,
IsShowTBTime = x.LastShowTBTime == null ? true : (DateTime.Now - x.LastShowTBTime.Value).TotalDays > 3,
}).ToList();
return TreeHelper.BuildTree(treeList);
}
public AjaxResult SetKeyOpenTime(string id)
{
if (Db.Update<cats>(c => c.Id == id, (item) =>
{
item.LastShowTBTime = DateTime.Now;
}) > 0)
return Success();
return Error();
}
public AjaxResult AddKeyWord(KeyWordDto model)
{
var cat = new cats()
@ -237,7 +253,8 @@ namespace Coldairarrow.Business.HuiYan
//设置为团队库
Type = model.Type,
//暂时没有登录信息
TeamId = string.Empty
TeamId = _operator.TeamId
};
int row = Db.Insert<cats>(cat);

14
src/Coldairarrow.Business/HuiYan/itemlabelsBusiness.cs

@ -10,18 +10,22 @@ using System.Linq.Dynamic.Core;
using System;
using System.Threading.Tasks;
using System.Linq.Expressions;
using Coldairarrow.IBusiness;
namespace Coldairarrow.Business.HuiYan
{
public class itemlabelsBusiness : BaseBusiness<itemlabels>, IitemlabelsBusiness, ITransientDependency
{
IteamitemsBusiness iteamitemsBusiness;
public itemlabelsBusiness(IDbAccessor db, IteamitemsBusiness _iteamitemsBusiness)
readonly IOperator _operator;
public itemlabelsBusiness(IDbAccessor db, IteamitemsBusiness _iteamitemsBusiness, IOperator @operator)
: base(db)
{
iteamitemsBusiness = _iteamitemsBusiness;
_operator = @operator;
}
#region 外部接口
public async Task<PageResult<itemlabels>> GetDataListAsync(PageInput<ConditionDTO> input)
@ -88,7 +92,7 @@ namespace Coldairarrow.Business.HuiYan
//查询这边还需要添加 (Teamid筛选,或者HasFilter=True) 的二选一查询
var where = LinqHelper.True<ItemlabelInfoDto>().And(c => c.Platform == (int)platform && ids.Contains(c.GoodsId));
//where = where.And(c => c.TeamId == "" || c.HasFilter ==true);
where = where.And(c => c.TeamId == _operator.TeamId || c.HasFilter ==true);
var list = q.Where(where).ToListAsync().Result;
@ -140,9 +144,9 @@ namespace Coldairarrow.Business.HuiYan
Deleted = false,
Id = IdHelper.GetId(),
ItemsId = item.Id,
CreatorId = string.Empty,
TeamId = string.Empty,
UserId = string.Empty
CreatorId =_operator.UserId,
TeamId =_operator.TeamId,
UserId = _operator.UserId
};
switch (model.Status)

15
src/Coldairarrow.Business/HuiYan/teamitemsBusiness.cs

@ -1,5 +1,6 @@
using Coldairarrow.Entity.DTO;
using Coldairarrow.Entity.HuiYan;
using Coldairarrow.IBusiness;
using Coldairarrow.Util;
using EFCore.Sharding;
using LinqKit;
@ -16,9 +17,11 @@ namespace Coldairarrow.Business.HuiYan
{
public class teamitemsBusiness : BaseBusiness<teamitems>, IteamitemsBusiness, ITransientDependency
{
public teamitemsBusiness(IDbAccessor db)
readonly IOperator _operator;
public teamitemsBusiness(IDbAccessor db, IOperator @operator)
: base(db)
{
_operator = @operator;
}
#region 外部接口
@ -87,6 +90,7 @@ namespace Coldairarrow.Business.HuiYan
//查询对应状态
var where = LinqHelper.True<TeamitemDto>().And(c => c.State == int.Parse(search.Keyword));
where = where.And(c => c.TeamId == _operator.TeamId);
var list = q.Where(where).GetPageResultAsync(input).Result;
@ -113,7 +117,7 @@ namespace Coldairarrow.Business.HuiYan
GoodsId = model.GoodsId,
CreateTime = DateTime.Now,
CreatorId = string.Empty,
CreatorId =_operator.UserId,
Deleted = false,
HasFilter = false,
Id = IdHelper.GetId(),
@ -134,14 +138,13 @@ namespace Coldairarrow.Business.HuiYan
{
State = 0,
CreateTime = DateTime.Now,
CreatorId = string.Empty,
CreatorId = _operator.UserId,
Deleted = false,
ExtensionJson = Newtonsoft.Json.JsonConvert.SerializeObject(model.Extensions),
Id = IdHelper.GetId(),
//待完善
TeamId = string.Empty,
UserId = string.Empty,
TeamId = _operator.TeamId,
UserId =_operator.UserId,
Price = model.Price,
ItemImg = model.ItemImg,

16
src/Coldairarrow.IBusiness/HuiYan/IcatsBusiness.cs

@ -21,6 +21,7 @@ namespace Coldairarrow.Business.HuiYan
AjaxResult AddKeyWord(CatDto model);
Task<List<CatTreeDTO>> GetTreeDataListAsync();
AjaxResult AddKeyWord(KeyWordDto model);
AjaxResult SetKeyOpenTime(string id);
}
@ -37,5 +38,20 @@ namespace Coldairarrow.Business.HuiYan
public string key { get => Id; }
public int Type { get; set; }
/// <summary>
/// 淘宝时间是否超时
/// </summary>
public bool IsShowTBTime { get; set; }
/// <summary>
/// 京东时间
/// </summary>
public bool IsShowJDTime { get; set; }
/// <summary>
/// 拼多多时间是否超时
/// </summary>
public bool IsShowPddTime { get; set; }
}
}

4
src/Coldairarrow.IBusiness/IOperator.cs

@ -8,6 +8,10 @@ namespace Coldairarrow.IBusiness
/// </summary>
public interface IOperator
{
/// <summary>
/// 团队ID
/// </summary>
string TeamId { get; }
/// <summary>
/// 当前操作者UserId
/// </summary>

72
客户端/齐越慧眼/齐越慧眼/ApiHelper.cs

@ -14,6 +14,40 @@ namespace 齐越慧眼
public static string JwtToken { get; set; }
/// <summary>
/// 登录
/// </summary>
/// <param name="userName"></param>
/// <param name="password"></param>
/// <returns></returns>
public static (bool isOk, string msg) LoginUser(string userName, string password)
{
string result = Http("http://mdsapi.qiyue666.com/TaskList/User/SubmitLogin", Newtonsoft.Json.JsonConvert.SerializeObject(new { userName, password }));
if (string.IsNullOrEmpty(result))
return (false, "服务器异常");
var data = Newtonsoft.Json.JsonConvert.DeserializeObject<dynamic>(result);
bool isSuccess = data.Success;
if (isSuccess)
{
string msg = data.Data.ToString();
if (msg.Contains("账号"))
{
return (false, msg);
}
JwtToken = msg;
return (true, data.Msg ?? "");
}
else
{
return (false, data.Msg ?? "");
}
}
/// <summary>
/// 设置商品标签
@ -32,6 +66,8 @@ namespace 齐越慧眼
}
/// <summary>
/// 获取标签信息
/// </summary>
@ -61,6 +97,31 @@ namespace 齐越慧眼
}
/// <summary>
/// 设置关键词打开时间
/// </summary>
/// <param name="id"></param>
/// <param name="platform"></param>
/// <returns></returns>
public static (bool isOk, string msg) SetKeyOpenTime(string id, ItemPlatform platform)
{
try
{
var result = Http($"/HuiYan/cats/SetKeyOpenTime?platform={platform}&id={id}", string.Empty);
var data = Newtonsoft.Json.JsonConvert.DeserializeObject<dynamic>(result);
bool isSuccess = data.Success;
return (isSuccess, data.Msg??"操作失败");
}
catch
{
return (false,"系统异常");
}
}
/// <summary>
/// http接口调用
/// </summary>
@ -71,6 +132,13 @@ namespace 齐越慧眼
{
try
{
string url = api;
if (!url.StartsWith("http"))
{
url = ApiBase + api;
}
HttpClient http = new HttpClient();
http.Timeout = new TimeSpan(0, 0, 35);
http.DefaultRequestHeaders.Add("Authorization", "Bearer " + JwtToken);
@ -78,11 +146,11 @@ namespace 齐越慧眼
{
StringContent content = new StringContent(postData);
content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json");
var result = http.PostAsync(ApiBase + api, content).Result.Content.ReadAsStringAsync().Result;
var result = http.PostAsync(url, content).Result.Content.ReadAsStringAsync().Result;
return result;
}
var request = new HttpRequestMessage() { Method = HttpMethod.Get, RequestUri = new Uri(ApiBase + api) };
var request = new HttpRequestMessage() { Method = HttpMethod.Get, RequestUri = new Uri(url) };
var res = http.SendAsync(request).Result;

8
客户端/齐越慧眼/齐越慧眼/App.xaml

@ -2,12 +2,16 @@
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:齐越慧眼"
StartupUri="MainWindow.xaml">
xmlns:conver="clr-namespace:WPF.Converters"
StartupUri="LoginWindow.xaml">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary >
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/HandyControl;component/Themes/SkinDefault.xaml"/>
<ResourceDictionary Source="pack://application:,,,/HandyControl;component/Themes/Theme.xaml"/>
<ResourceDictionary>
<conver:ToStringConverter x:Key="toString"></conver:ToStringConverter>
</ResourceDictionary>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>

3
客户端/齐越慧眼/齐越慧眼/App.xaml.cs

@ -20,7 +20,8 @@ namespace 齐越慧眼
var settings = new CefSettings() {
CachePath = System.Environment.CurrentDirectory + "\\webDatas\\data",
// LocalesDirPath = System.Environment.CurrentDirectory + "\\webDatas",
RootCachePath= System.Environment.CurrentDirectory + "\\rootCache"
RootCachePath= System.Environment.CurrentDirectory + "\\rootCache",
};
// ...

28
客户端/齐越慧眼/齐越慧眼/LoginWindow.xaml

@ -0,0 +1,28 @@
<hc:GlowWindow x:Class="齐越慧眼.LoginWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:齐越慧眼"
xmlns:hc="https://handyorg.github.io/handycontrol"
mc:Ignorable="d" Background="White"
WindowStartupLocation="CenterScreen"
ActiveGlowColor="{DynamicResource PrimaryColor}"
DataContext="{x:Static local:LoginWindowViewModel.Main}"
Title="登录" Height="250" Width="350">
<Border Padding="20">
<StackPanel>
<DockPanel Margin="0 20 0 0" VerticalAlignment="Center">
<TextBlock VerticalAlignment="Center" Text="账号:"></TextBlock>
<hc:TextBox VerticalAlignment="Center" hc:InfoElement.Placeholder="请输入账号" Text="{Binding UserName}"></hc:TextBox>
</DockPanel>
<DockPanel Margin="0 20 0 20">
<TextBlock Text="密码:" VerticalAlignment="Center"></TextBlock>
<hc:PasswordBox hc:InfoElement.Placeholder="请输入密码" VerticalAlignment="Center" PasswordBox.PasswordChanged="PasswordBox_PasswordChanged"></hc:PasswordBox>
</DockPanel>
<Button Command="{Binding _Btn_OkClick}" Style="{StaticResource ButtonPrimary}" Content="{Binding IsLogin,Converter={StaticResource toString},ConverterParameter=true----请稍后|false----登录|null----请稍后}" Width="200" Cursor="Hand"/>
</StackPanel>
</Border>
</hc:GlowWindow>

32
客户端/齐越慧眼/齐越慧眼/LoginWindow.xaml.cs

@ -0,0 +1,32 @@
using HandyControl.Controls;
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
namespace
{
/// <summary>
/// LoginWindow.xaml 的交互逻辑
/// </summary>
public partial class LoginWindow : GlowWindow
{
public LoginWindow()
{
InitializeComponent();
LoginWindowViewModel.Main.Window = this;
}
private void PasswordBox_PasswordChanged(object sender, RoutedEventArgs e)
{
LoginWindowViewModel.Main.UserPwd = (sender as HandyControl.Controls.PasswordBox).Password;
}
}
}

110
客户端/齐越慧眼/齐越慧眼/LoginWindowViewModel.cs

@ -0,0 +1,110 @@
using GalaSoft.MvvmLight;
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;
using System.Windows;
namespace
{
public class LoginWindowViewModel : ViewModelBase
{
public LoginWindow Window { get; set; }
private static LoginWindowViewModel _main = new LoginWindowViewModel();
public static LoginWindowViewModel Main
{
get
{
return _main;
}
}
public LoginWindowViewModel()
{
_Btn_OkClick = new GalaSoft.MvvmLight.Command.RelayCommand(Btn_OkClick);
}
private string _UserName;
/// <summary>
/// 用戶名
/// </summary>
public string UserName
{
get { return _UserName; }
set { Set(ref _UserName, value); }
}
private string _UserPwd;
/// <summary>
/// 用户密码
/// </summary>
public string UserPwd
{
get { return _UserPwd; }
set { Set(ref _UserPwd, value); }
}
private bool _IsLogin;
public bool IsLogin
{
get { return _IsLogin; }
set { Set(ref _IsLogin, value); }
}
/// <summary>
/// 确定按钮被点击
/// </summary>
public GalaSoft.MvvmLight.Command.RelayCommand _Btn_OkClick { get; set; }
/// <summary>
/// 确定按钮点击
/// </summary>
public void Btn_OkClick()
{
Thread t = new Thread(() =>
{
try
{
if (IsLogin)
return;
IsLogin = true;
//登录
var res = ApiHelper.LoginUser(UserName, UserPwd);
if (res.isOk)
{
Application.Current.Dispatcher.Invoke(() =>
{
MainWindow mainWindow = new MainWindow();
mainWindow.Show();
Application.Current.MainWindow = mainWindow;
Window.Close();
});
}
else
{
MessageBox.Show(res.msg, "登录失败");
}
}
catch (Exception ex)
{
MessageBox.Show("初始化窗口异常!", "提示");
}
finally
{
IsLogin = false;
}
});
t.IsBackground = true;
t.Start();
}
}
}

2
客户端/齐越慧眼/齐越慧眼/MainWindow.xaml

@ -5,7 +5,7 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:hc="https://handyorg.github.io/handycontrol"
xmlns:local="clr-namespace:齐越慧眼"
xmlns:uc="clr-namespace:齐越慧眼.UserControls"
xmlns:uc="clr-namespace:齐越慧眼.UserControls"
mc:Ignorable="d"
Background="White"
WindowStartupLocation="CenterScreen"

2
客户端/齐越慧眼/齐越慧眼/MainWindow.xaml.cs

@ -30,8 +30,6 @@ namespace 齐越慧眼
}
public void ChangeTab(string keyWord,int type)
{
Application.Current.Dispatcher.Invoke(() =>

75
客户端/齐越慧眼/齐越慧眼/ToStringConverter.cs

@ -0,0 +1,75 @@

using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Windows.Data;
namespace WPF.Converters
{
public class ToStringConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (parameter == null)
{
return value;
}
string key = string.Empty;
if (value == null)
{
key = "null";
}
else
{
key = value.ToString().ToLower();
}
string[] arr = parameter.ToString().Split('|');
Dictionary<string, string> dic = new Dictionary<string, string>();
foreach (var str in arr)
{
string[] drr = str.Split(new string[] { "----" }, StringSplitOptions.None);
dic.Add(drr[0].ToLower(), drr[1]);
}
string defa = dic.FirstOrDefault().Value.ToString();
if (dic.ContainsKey(key))
{
if (dic[key] == "Collapsed")
return System.Windows.Visibility.Collapsed;
if (dic[key] == "Visible")
return System.Windows.Visibility.Visible;
return dic[key];
}
else if (defa == "Visible")
{
return System.Windows.Visibility.Collapsed;
}
else
if (defa == "Collapsed")
return System.Windows.Visibility.Visible;
else
if (defa.ToLower() == "false")
return true;
else if (defa.ToLower() == "true")
return false;
return defa;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
string strValue = value.ToString();
return value;
}
}
}

51
客户端/齐越慧眼/齐越慧眼/UserControls/BrowerControl.xaml.cs

@ -14,6 +14,8 @@ namespace 齐越慧眼.UserControls
/// </summary>
public partial class BrowerControl : UserControl
{
public static BrowerControl Main = null;
public ChromiumWebBrowser web;
public BrowerControl()
{
@ -39,12 +41,34 @@ namespace 齐越慧眼.UserControls
web.JavascriptObjectRepository.Settings.LegacyBindingEnabled = true;
web.JavascriptObjectRepository.Register("hyCoreModel", new CefAsyncJS(), BindingOptions.DefaultBinder);
Main = this;
}
private void BrowerControl_Loaded(object sender, RoutedEventArgs e)
{
web.WebBrowser.LoadingStateChanged += WebBrowser_LoadingStateChanged;
Thread t = new Thread(() => {
IWebBrowser webBrowser = null;
Application.Current.Dispatcher.Invoke(() => {
webBrowser = web.WebBrowser;
});
while (webBrowser == null)
{
Thread.Sleep(100);
Application.Current.Dispatcher.Invoke(() => {
webBrowser = web.WebBrowser;
});
}
Application.Current.Dispatcher.Invoke(() => {
web.WebBrowser.LoadingStateChanged += WebBrowser_LoadingStateChanged;
});
});
t.Start();
}
private string lastUrl = string.Empty;
@ -57,7 +81,6 @@ namespace 齐越慧眼.UserControls
//开始单页查询
if (lastUrl.StartsWith("https://s.taobao.com/search"))
{
web.ShowDevTools();
StartPage();
}
@ -94,7 +117,7 @@ namespace 齐越慧眼.UserControls
}
lastUrl = string.Empty;
});
t.Start();
@ -151,6 +174,8 @@ namespace 齐越慧眼.UserControls
}
/// <summary>
/// 添加操作面板
/// </summary>
@ -283,7 +308,7 @@ namespace 齐越慧眼.UserControls
/// </summary>
/// <param name="js"></param>
/// <returns></returns>
private (bool isOk, object result) DoJavaScript(string js)
public (bool isOk, object result) DoJavaScript(string js)
{
js = js.Replace("\n", "").Replace("\r\n", "").Replace(System.Environment.NewLine, "").Replace("\r", "");
Task<JavascriptResponse> task = null;
@ -329,6 +354,24 @@ namespace 齐越慧眼.UserControls
Title = title
});
if (result.isOk)
{
//判断是否团队过滤
if (type == 1)
{
BrowerControl.Main.DoJavaScript($@"$($('div#mainsrp-itemlist .items .item').find('a[data-nid=""{itemId}""]').parent().parent()).find('.myitemState').addClass(""falseBg"")");
}
if (type == 3)
{
BrowerControl.Main.DoJavaScript($@"$($('div#mainsrp-itemlist .items .item').find('a[data-nid=""{itemId}""]').parent().parent()).find('.myitemState').prepend('<div style=""width:20%;height:20%"" class=""bgYellow"">竞</div>')");
}
if (type == 1)
{
BrowerControl.Main.DoJavaScript($@"$($('div#mainsrp-itemlist .items .item').find('a[data-nid=""{itemId}""]').parent().parent()).find('.myitemState').addClass(""trueBg"")");
}
}
MessageBox.Show(result.msg, "提示");
return result.isOk;

1
客户端/齐越慧眼/齐越慧眼/UserControls/CatControl.xaml

@ -8,5 +8,6 @@
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
<Grid x:Name="grid">
</Grid>
</UserControl>

18
客户端/齐越慧眼/齐越慧眼/UserControls/CatControl.xaml.cs

@ -32,25 +32,35 @@ namespace 齐越慧眼.UserControls
DefaultEncoding = "UTF-8",
Plugins= CefState.Enabled,
//关于跨域限制
WebSecurity = CefState.Disabled
WebSecurity = CefState.Disabled,
},
};
grid.Children.Add(web);
web.JavascriptObjectRepository.Settings.LegacyBindingEnabled = true;
web.JavascriptObjectRepository.Register("hyCoreModel", new CatsAsyncJS(), BindingOptions.DefaultBinder);
web.ExecuteScriptAsyncWhenPageLoaded(@$"localStorage.setItem('user', '{{""token"":""{ApiHelper.JwtToken}""}}');window.getDatas();");
}
private void Button_Click(object sender, RoutedEventArgs e)
{
web.ShowDevTools();
}
}
public class CatsAsyncJS
{
public void openTabByKey(string keyWord,int type)
public void openTabByKey(string keyWord,string id,int type)
{
var result= ApiHelper.SetKeyOpenTime(id, (Models.ItemPlatform)type);
MainWindow.Main.ChangeTab(keyWord, type);
}
}

1
客户端/齐越慧眼/齐越慧眼/UserControls/ItemControl.xaml.cs

@ -37,6 +37,7 @@ namespace 齐越慧眼.UserControls
};
grid.Children.Add(web);
web.ExecuteScriptAsyncWhenPageLoaded(@$"localStorage.setItem('user', '{{""token"":""{ApiHelper.JwtToken}""}}');window.getDatas(0);");
}
}

26
客户端/齐越慧眼/齐越慧眼/vuepage/client/src/views/cats/Index.vue

@ -1,13 +1,13 @@
<template>
<div class="card-container">
<a-tabs>
<a-tab-pane key="1" tab="淘宝">
<a-tabs @change="changeTab">
<a-tab-pane key="0" tab="淘宝">
</a-tab-pane>
<a-tab-pane key="2" tab="京东">
<a-tab-pane key="1" tab="京东">
</a-tab-pane>
<a-tab-pane key="3" tab="拼多多">
<a-tab-pane key="2" tab="拼多多">
</a-tab-pane>
</a-tabs>
@ -55,7 +55,7 @@
集团库
</a-col>
<a-col :span="16">
<a-tag style="cursor: pointer;" :key="i4" @click="openKey(keyword.title)"
<a-tag style="cursor: pointer;" :key="i4" @click="openKey(keyword,keyword.title,keyword.Id)"
v-for="(keyword,i4) in lastCat.children.filter(c=>c.Type==0)">
{{keyword.title}}</a-tag>
</a-col>
@ -68,7 +68,7 @@
团队库
</a-col>
<a-col :span="16">
<a-tag style="cursor: pointer;" :key="i4" @click="openKey(keyword.title)"
<a-tag style="cursor: pointer;" :key="i4" @click="openKey(keyword,keyword.title,keyword.Id)" :color="keyword.IsShowTBTime?'gray':''"
v-for="(keyword,i4) in lastCat.children.filter(c=>c.Type==1)">
{{keyword.title}}</a-tag>
</a-col>
@ -91,16 +91,22 @@
export default {
data() {
return {
datas: []
datas: [],
currentTab:0
}
},
mounted() {
this.getDatas()
window.getDatas = this.getDatas
},
methods: {
openKey(key)
changeTab(e){
this.getDatas()
this.currentTab=e
},
openKey(obj,key,id)
{
hyCoreModel.openTabByKey(key,0)
obj.IsShowTBTime=false
hyCoreModel.openTabByKey(key,id,0)
},
getDatas() {
this.http.get('/HuiYan/cats/GetCatDatas').then(res => {

4
客户端/齐越慧眼/齐越慧眼/vuepage/client/src/views/items/Index.vue

@ -58,7 +58,7 @@
<img :src="'http:'+item.ItemImg" width="200" height="165">
<a-row>
<a-col :span="12" style="text-align: left;">¥{{item.Price}}</a-col>
<a-col :span="12" style="text-align: right;">{{item.Sales}}人收货</a-col>
<a-col :span="12" style="text-align: right;">{{item.Sales}}</a-col>
</a-row>
</div>
</div>
@ -188,7 +188,7 @@
}
},
mounted() {
this.getDatas(0)
window.getDatas = this.getDatas
},
methods: {
changeTab(e){

1
客户端/齐越慧眼/齐越慧眼/vuepage/dist/css/app.3528f00e.css

File diff suppressed because one or more lines are too long

1
客户端/齐越慧眼/齐越慧眼/vuepage/dist/css/app.66edb6c9.css

File diff suppressed because one or more lines are too long

2
客户端/齐越慧眼/齐越慧眼/vuepage/dist/js/about.js

@ -1,2 +0,0 @@
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["about"],{f820:function(t,e,n){"use strict";n.r(e);var a=function(){var t=this,e=t.$createElement;t._self._c;return t._m(0)},s=[function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"about"},[n("h1",[t._v("This is an about page")])])}],u=n("2877"),c={},i=Object(u["a"])(c,a,s,!1,null,null,null);e["default"]=i.exports}}]);
//# sourceMappingURL=about.js.map

1
客户端/齐越慧眼/齐越慧眼/vuepage/dist/js/about.js.map

@ -1 +0,0 @@
{"version":3,"sources":["webpack:///./src/views/About.vue?e60c","webpack:///./src/views/About.vue"],"names":["render","_vm","this","_h","$createElement","_self","_c","_m","staticRenderFns","staticClass","_v","script","component"],"mappings":"8GAAA,IAAIA,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAsBH,EAAII,MAAMC,GAAO,OAAOL,EAAIM,GAAG,IACnGC,EAAkB,CAAC,WAAa,IAAIP,EAAIC,KAASC,EAAGF,EAAIG,eAAmBE,EAAGL,EAAII,MAAMC,IAAIH,EAAG,OAAOG,EAAG,MAAM,CAACG,YAAY,SAAS,CAACH,EAAG,KAAK,CAACL,EAAIS,GAAG,+B,YCAtJC,EAAS,GAKTC,EAAY,eACdD,EACAX,EACAQ,GACA,EACA,KACA,KACA,MAIa,aAAAI,E","file":"js/about.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _vm._m(0)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"about\"},[_c('h1',[_vm._v(\"This is an about page\")])])}]\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./About.vue?vue&type=template&id=1ae8a7be&\"\nvar script = {}\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""}

2
客户端/齐越慧眼/齐越慧眼/vuepage/dist/js/app.js

File diff suppressed because one or more lines are too long

2
客户端/齐越慧眼/齐越慧眼/vuepage/dist/js/app.js.map

File diff suppressed because one or more lines are too long

15
客户端/齐越慧眼/齐越慧眼/齐越慧眼.csproj

@ -40,8 +40,6 @@
<None Remove="vuepage\client\.eslintrc.js" />
<None Remove="vuepage\client\.gitignore" />
<None Remove="vuepage\client\.postcssrc.js" />
<None Remove="vuepage\dist\css\app.3528f00e.css" />
<None Remove="vuepage\dist\css\app.66edb6c9.css" />
<None Remove="vuepage\dist\css\app.aed7bccd.css" />
<None Remove="vuepage\dist\css\app.b0aefef5.css" />
<None Remove="vuepage\dist\css\app.css" />
@ -49,14 +47,12 @@
<None Remove="vuepage\dist\css\chunk-vendors.css" />
<None Remove="vuepage\dist\img\close.png" />
<None Remove="vuepage\dist\img\true.png" />
<None Remove="vuepage\dist\jp.png" />
<None Remove="vuepage\dist\js\about.js" />
<None Remove="vuepage\dist\js\about.js.map" />
<None Remove="vuepage\client\index.html" />
<None Remove="vuepage\client\package.json" />
<None Remove="vuepage\client\README.md" />
<None Remove="vuepage\client\vue.config.js" />
<None Remove="vuepage\client\yarn.lock" />
<None Remove="vuepage\dist\jp.png" />
<None Remove="vuepage\dist\js\app.js" />
<None Remove="vuepage\dist\js\app.js.map" />
<None Remove="vuepage\dist\js\chunk-vendors.js" />
@ -66,26 +62,23 @@
<ItemGroup>
<PackageReference Include="CefSharp.Wpf.NETCore" Version="89.0.170" />
<PackageReference Include="HandyControl" Version="3.2.0" />
<PackageReference Include="MvvmLightLibsStd10" Version="5.4.1.1" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="vuepage\dist\css\app.3528f00e.css" />
<EmbeddedResource Include="vuepage\dist\css\app.66edb6c9.css" />
<EmbeddedResource Include="vuepage\dist\css\app.aed7bccd.css" />
<EmbeddedResource Include="vuepage\dist\css\app.css" />
<EmbeddedResource Include="vuepage\dist\css\chunk-vendors.09af4a6b.css" />
<EmbeddedResource Include="vuepage\dist\css\chunk-vendors.css" />
<EmbeddedResource Include="vuepage\dist\img\close.png" />
<EmbeddedResource Include="vuepage\dist\img\true.png" />
<EmbeddedResource Include="vuepage\dist\jp.png" />
<EmbeddedResource Include="vuepage\dist\js\about.js" />
<EmbeddedResource Include="vuepage\dist\js\about.js.map" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="vuepage\dist\favicon.ico" />
<EmbeddedResource Include="vuepage\dist\index.html" />
<EmbeddedResource Include="vuepage\dist\jp.png" />
<EmbeddedResource Include="vuepage\dist\js\app.js" />
<EmbeddedResource Include="vuepage\dist\js\app.js.map" />
<EmbeddedResource Include="vuepage\dist\js\chunk-vendors.js" />
@ -94,6 +87,8 @@
<ItemGroup>
<Folder Include="vuepage\client\" />
<Folder Include="vuepage\client\dist\css\" />
<Folder Include="vuepage\client\dist\js\" />
</ItemGroup>
</Project>

Loading…
Cancel
Save