Commit 6192d280 authored by liudong1993's avatar liudong1993

1

parent 6eba9fa4
using System;
using System.Collections.Generic;
using System.Text;
namespace EduSpider.Cache
{
public class CacheKey
{
/// <summary>
/// 用户登录缓存Key
/// </summary>
public static string User_Login_Key = "JJSW_Login_";
}
}
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Configuration" Version="6.0.1" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="6.0.0" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
<PackageReference Include="StackExchange.Redis" Version="2.0.601" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\EduSpider.Model\EduSpider.Model.csproj" />
<ProjectReference Include="..\EduSpider.Repository\EduSpider.Repository.csproj" />
</ItemGroup>
</Project>
using EduSpider.Model.Cache;
using EduSpider.Repository;
using EduSpider.Utility;
using EduSpider.Utility.Enum;
using System;
using System.Linq;
using VTX.FW.Helper;
using VTX.FW.Api;
using VTX.FW.Cache;
namespace EduSpider.Cache.User
{
/// <summary>
/// redis缓存
/// </summary>
public class UserReidsCache
{
readonly static RedisCache redis = new(new RedisConfig
{
DbNum = 3,
RedisServer = ConfigHelper.GetAppsettings("RedisSetting", "RedisServer"),
RedisPort = Convert.ToInt32(ConfigHelper.GetAppsettings("RedisSetting", "RedisPort")),
RedisPwd = ConfigHelper.GetAppsettings("RedisSetting", "RedisPwd")
});
/// <summary>
/// 设置缓存
/// </summary>
/// <param name="model"></param>
public static void UserInfoSet(string cacheKey, UserInfo model, int JwtExpirTime)
{
try
{
TimeSpan ts = GetExpirTime(JwtExpirTime);
redis.StringSet<UserInfo>(cacheKey, model, ts);
}
catch (Exception ex)
{
LogHelper.WriteError("UserInfoSet", "缓存设置失败", ex);
}
}
/// <summary>
/// 获取缓存时长
/// </summary>
/// <param name="JwtExpirTime"></param>
/// <returns></returns>
private static TimeSpan GetExpirTime(int JwtExpirTime)
{
DateTime dt = DateTime.Now;
DateTime dt2 = DateTime.Now;
TimeSpan ts = dt.AddSeconds(JwtExpirTime) - dt2;
return ts;
}
/// <summary>
/// 判断key是否存在
/// </summary>
/// <param name="cacheKey"></param>
/// <returns></returns>
public static bool Exists(string cacheKey)
{
return redis.KeyExists(cacheKey);
}
/// <summary>
/// 设置缓存
/// </summary>
/// <param name="cacheKey"></param>
/// <param name="Data"></param>
/// <param name="JwtExpirTime"></param>
public static void Set(string cacheKey, object Data, int JwtExpirTime)
{
try
{
TimeSpan ts = GetExpirTime(JwtExpirTime);
redis.StringSet(cacheKey, Data, ts);
}
catch (Exception)
{
}
}
/// <summary>
/// 获取缓存
/// </summary>
/// <param name="cacheKey"></param>
public static object Get(string cacheKey)
{
try
{
object info = redis.StringGet<object>(cacheKey);
return info;
}
catch (Exception)
{
return "";
}
}
/// <summary>
/// 账号仓储层对象
/// </summary>
private static readonly AccountRepository accountRepository = new();
/// <summary>
/// 获取用户登录信息
/// </summary>
/// <param name="Id">账号Id</param>
/// <param name="apiRequestFromEnum">请求来源</param>
/// <returns></returns>
public static UserInfo GetUserLoginInfo(object Id, ApiRequestFromEnum apiRequestFromEnum = ApiRequestFromEnum.MiniProgram)
{
UserInfo userInfo = null;
if (Id != null)
{
string cacheKey = CacheKey.User_Login_Key + Id.ToString();
try
{
userInfo = redis.StringGet<UserInfo>(cacheKey);
}
catch (Exception ex)
{
LogHelper.WriteError("GetUserLoginInfo", "获取缓存失败", ex);
}
if (userInfo == null)
{
Int32.TryParse(Id.ToString(), out int NewId);
if (NewId > 0)
{
string token = "";
var model = accountRepository.GetAccountList(new Model.Extend.RB_Account_Extend()
{
Id = NewId
})?.FirstOrDefault();
if (model != null)
{
userInfo = new UserInfo
{
Id = model.Id,
AccountType = model.AccountType,
AccountName = model.AccountName,
Token = token,
ApiRequestFromEnum = apiRequestFromEnum,
AccountId = model.AccountId,
UserMobile = model.Account,
UserIcon = model.UserIcon,
};
UserInfoSet(CacheKey.User_Login_Key + Id.ToString(), userInfo, Config.JwtExpirTime);
}
}
}
}
else
{
userInfo = new UserInfo();
}
return userInfo;
}
}
}
\ No newline at end of file
using EduSpider.Model.Extend;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using VTX.FW.Config;
namespace EduSpider.IServices
{
/// <summary>
/// 账号服务层接口
/// </summary>
public interface IAccountService : IDependency
{
List<RB_Account_Extend> GetAccountList(RB_Account_Extend demodel);
bool UpdateAccountUnionId(RB_Account_Extend model);
}
}
using EduSpider.Utility.Enum;
using System.Collections.Generic;
namespace EduSpider.Model.Cache
{
/// <summary>
/// 用户缓存
/// </summary>
public class UserInfo
{
/// <summary>
/// 账号编号
/// </summary>
public int Id { get; set; }
/// <summary>
/// 账号名称
/// </summary>
public string AccountName { get; set; }
/// <summary>
/// 请求来源
/// </summary>
public ApiRequestFromEnum ApiRequestFromEnum { get; set; }
/// <summary>
/// 账号类型(1-管理端,2,-教师端,3-助教,4-学生)
/// </summary>
public AccountTypeEnum AccountType { get; set; }
/// <summary>
/// 对应的账户id
/// </summary>
public int AccountId { get; set; }
/// <summary>
/// Token验证
/// </summary>
public string Token { get; set; }
/// <summary>
/// 用户头像
/// </summary>
public string UserIcon { get; set; }
/// <summary>
/// 用户手机号码
/// </summary>
public string UserMobile { get; set; }
}
}
\ No newline at end of file
using System;
using EduSpider.Utility.Enum;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
......@@ -29,7 +30,7 @@ namespace EduSpider.Model.Entity
/// <summary>
/// 类型 1老师 2学生
/// </summary>
public int AccountType { get; set; }
public AccountTypeEnum AccountType { get; set; }
/// <summary>
/// 对应 老师/学生ID
......@@ -39,7 +40,7 @@ namespace EduSpider.Model.Entity
/// <summary>
/// 删除状态
/// </summary>
public int Status { get; set; }
public DateStateEnum Status { get; set; }
/// <summary>
/// 微信唯一识别码
......
......@@ -16,5 +16,10 @@ namespace EduSpider.Model.Extend
/// 帐号名称
/// </summary>
public string AccountName { get; set; }
/// <summary>
/// 用户头像
/// </summary>
public string UserIcon { get; set; }
}
}
......@@ -38,15 +38,15 @@ namespace EduSpider.Repository
}
if (demodel.AccountType > 0)
{
where += $" and t.{nameof(RB_Account_Extend.AccountType)} ={demodel.AccountType}";
where += $" and t.{nameof(RB_Account_Extend.AccountType)} ={(int)demodel.AccountType}";
}
if (demodel.AccountId > 0)
{
where += $" and t.{nameof(RB_Account_Extend.AccountId)} ={demodel.AccountId}";
}
if (demodel.Status > -1)
if (demodel.Status >= 0)
{
where += $" and t.{nameof(RB_Account_Extend.Status)} ={demodel.Status}";
where += $" and t.{nameof(RB_Account_Extend.Status)} ={(int)demodel.Status}";
}
if (!string.IsNullOrEmpty(demodel.Account))
{
......@@ -59,10 +59,10 @@ namespace EduSpider.Repository
string sql = $@"
select * from(
SELECT a.Id,a.Account,a.`Password`,a.AccountType,a.AccountId,t.TeacherName AS AccountName,a.Status FROM rb_account a
SELECT a.Id,a.Account,a.`Password`,a.AccountType,a.AccountId,t.TeacherName AS AccountName,t.Logo as UserIcon,a.Status FROM rb_account a
INNER JOIN rb_teacher t on a.AccountId =t.TeacherId and a.AccountType =1
UNION
SELECT a.Id,a.Account,a.`Password`,a.AccountType,a.AccountId,s.StudentName AS AccountName,a.Status FROM rb_account a
SELECT a.Id,a.Account,a.`Password`,a.AccountType,a.AccountId,s.StudentName AS AccountName,'' as UserIcon,a.Status FROM rb_account a
INNER JOIN rb_student s on a.AccountId =s.StudId and a.AccountType =2
) t where {where}
";
......

using EduSpider.IServices;
using EduSpider.Model.Extend;
using EduSpider.Repository;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using VTX.FW.Attr;
using VTX.FW.DB;
namespace EduSpider.Services
{
/// <summary>
/// 账号服务实现
/// </summary>
public class AccountService : IAccountService
{
/// <summary>
/// 帐号仓储接口
/// </summary>
[Autowired]
public IAccountRepository accountRepository { get; set; }
/// <summary>
/// 获取列表
/// </summary>
/// <param name="demodel"></param>
/// <returns></returns>
public List<RB_Account_Extend> GetAccountList(RB_Account_Extend demodel)
{
return accountRepository.GetAccountList(demodel);
}
/// <summary>
/// 更新微信信息
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
public bool UpdateAccountUnionId(RB_Account_Extend model)
{
Dictionary<string, object> keyValues = new() {
{ nameof(RB_Account_Extend.OpenId), model.OpenId},
{ nameof(RB_Account_Extend.UnionId), model.UnionId},
};
List<WhereHelper> wheres = new() {
new WhereHelper(){
FiledName = nameof(RB_Account_Extend.Id),
FiledValue = model.Id,
OperatorEnum = OperatorEnum.Equal
}
};
return accountRepository.Update(keyValues, wheres);
}
}
}
using EduSpider.Utility.Enum;
using System;
namespace EduSpider.Utility.API
{
/// <summary>
/// API请求token携带的用户信息
/// </summary>
public class TokenUserInfo
{
/// <summary>
/// 用户ID
/// </summary>
public string uid { get; set; }
/// <summary>
/// 请求消息
/// </summary>
public ApiRequestFromEnum requestFrom { get; set; }
/// <summary>
/// 集团编号
/// </summary>
public int groupId { get; set; }
}
}
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Configuration.Json;
using System;
using System.IO;
using System.Text.RegularExpressions;
using VTX.FW.Helper;
namespace EduSpider.Utility
{
/// <summary>
/// 全局配置
/// </summary>
public class Config
{
/// <summary>
/// 配置文件注入
/// </summary>
public readonly static IConfiguration Configuration;
static Config()
{
try
{
Configuration = new ConfigurationBuilder()
.Add(new JsonConfigurationSource { Path = "appsettings.json", ReloadOnChange = true })
.Build();
}
catch (Exception ex)
{
LogHelper.WriteError("Config", "获取配置文件", ex);
}
}
/// <summary>
/// 获取连接字符串
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
public static string GetConnectionString(string key)
{
try
{
return Configuration.GetConnectionString(key);
}
catch
{
return "";
}
}
/// <summary>
/// 读取配置文件key的值
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
public static string ReadConfigKey(string key, string subKey = "")
{
string valueStr = "";
try
{
if (!string.IsNullOrWhiteSpace(subKey))
{
valueStr = Configuration.GetSection(key)[subKey].ToString();
}
else
{
valueStr = Configuration.GetSection(key).Value;
}
}
catch
{
}
return valueStr;
}
/// <summary>
/// 异常日志保存路径
/// </summary>
public static string LogPath
{
get
{
string logPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "log/error");
return logPath.ToString();
}
}
/// <summary>
/// 打印日志保存路径
/// </summary>
public static string InofLogPath
{
get
{
string logPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "log/info");
return logPath.ToString();
}
}
/// <summary>
/// 接口请求日志保存路径
/// </summary>
public static string RequestLogPath
{
get
{
string logPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "log/request");
return logPath.ToString();
}
}
/// <summary>
/// JWT加密秘钥
/// </summary>
public static string JwtSecretKey
{
get
{
return ReadConfigKey("JwtSecretKey");
}
}
/// <summary>
/// 过期时间,单位为秒
/// </summary>
public static int JwtExpirTime
{
get
{
Int32.TryParse(ReadConfigKey("JwtExpirTime"), out int JwtExpirTime);
return JwtExpirTime;
}
}
/// <summary>
/// 获取文件相对路径
/// </summary>
public static string GetFilePath(string path)
{
if (!string.IsNullOrWhiteSpace(path))
{
string p = @"(http|https)://(?<domain>[^(:|/]*)";
Regex reg = new Regex(p, RegexOptions.IgnoreCase);
string value = reg.Match(path).Value;
if (!string.IsNullOrEmpty(value))
{
Uri url = new Uri(path);
return url.AbsolutePath;
}
else
{
return path;
}
}
else
{
return path;
}
}
/// <summary>
/// 甲鹤小程序AppId
/// </summary>
public static string AppID
{
get { return "wx38e054ee42b054f4"; }
}
/// <summary>
/// 甲鹤小程序AppSecret
/// </summary>
public static string AppSecret
{
get { return "d3ad4699265ba885ae2c8b65bf574ea5"; }
}
/// <summary>
/// 微信小程序Api地址
/// </summary>
public static string WechatApi
{
get { return "https://api.weixin.qq.com/"; }
}
/// <summary>
/// 是否是本地服务器
/// </summary>
public static int IsLocal
{
get
{
Int32.TryParse(ReadConfigKey("IsLocal"), out int _IsLocal);
return _IsLocal;
}
}
}
}
\ No newline at end of file
......@@ -5,6 +5,8 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Configuration" Version="6.0.1" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="6.0.0" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
<PackageReference Include="VTX.FW" Version="1.1.0" />
</ItemGroup>
......
using VTX.FW.Attr;
namespace EduSpider.Utility.Enum
{
/// <summary>
/// 账号类型
/// </summary>
public enum AccountTypeEnum
{
/// <summary>
/// 老师
/// </summary>
[EnumField("老师")]
Teacher = 1,
/// <summary>
/// 学生
/// </summary>
[EnumField("学生")]
Student = 2
}
}
using VTX.FW.Attr;
namespace EduSpider.Utility.Enum
{
/// <summary>
/// 接口请求来源
/// </summary>
public enum ApiRequestFromEnum
{
/// <summary>
/// Web端
/// </summary>
[EnumField("Web端")]
Web = 1,
/// <summary>
/// 小程序
/// </summary>
[EnumField("小程序")]
MiniProgram = 2,
}
}
\ No newline at end of file
using VTX.FW.Attr;
namespace EduSpider.Utility.Enum
{
/// <summary>
/// 数据状态
/// </summary>
public enum DateStateEnum
{
/// <summary>
/// 正常
/// </summary>
[EnumField("正常")]
Normal = 0,
/// <summary>
/// 已删除
/// </summary>
[EnumField("已删除")]
Delete = 1
}
}
\ No newline at end of file
using System;
using System.IO;
using System.Net;
using System.Net.Http;
using System.Text;
using VTX.FW.Helper;
namespace EduSpider.Utility
{
......@@ -76,5 +78,84 @@ namespace EduSpider.Utility
}
return cc;
}
/// <summary>
/// Post提交数据
/// </summary>
/// <param name="url">url地址</param>
/// <param name="body">参数</param>
/// <param name="contenttype">参数</param>
/// <returns></returns>
public static string HttpPost(string url, string body, string contenttype = "")
{
try
{
Encoding encoding = Encoding.UTF8;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
request.Accept = "application/json, text/javascript, */*"; //"text/html, application/xhtml+xml, */*";
request.ContentType = "application/json; charset=utf-8";
if (contenttype != "")
{
request.ContentType = contenttype;
}
byte[] buffer = encoding.GetBytes(body);
request.ContentLength = buffer.Length;
request.GetRequestStream().Write(buffer, 0, buffer.Length);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
using StreamReader reader = new StreamReader(response.GetResponseStream(), encoding);
return reader.ReadToEnd();
}
catch (WebException ex)
{
var res = (HttpWebResponse)ex.Response;
StringBuilder sb = new StringBuilder();
StreamReader sr = new StreamReader(res.GetResponseStream(), Encoding.UTF8);
sb.Append(sr.ReadToEnd());
throw new Exception(sb.ToString());
}
}
/// <summary>
/// 执行HTTP GET请求。
/// </summary>
/// <param name="url">请求地址</param>
/// <returns>HTTP响应</returns>
public static string HttpGet(string url)
{
string result = "";
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.Method = "GET";
req.ContentType = "application/json";
HttpWebResponse rsp = (HttpWebResponse)req.GetResponse();
Encoding encoding = Encoding.UTF8;
if (!string.IsNullOrWhiteSpace(rsp.CharacterSet))
{
encoding = Encoding.GetEncoding(rsp.CharacterSet);
}
System.IO.Stream stream = null;
StreamReader reader = null;
try
{
// 以字符流的方式读取HTTP响应
stream = rsp.GetResponseStream();
reader = new StreamReader(stream, encoding);
result = reader.ReadToEnd();
}
catch (Exception ex)
{
LogHelper.WriteError("", string.Format("HttpGet:url=={0}", url), ex);
result = "";
}
finally
{
// 释放资源
if (reader != null) reader.Close();
if (stream != null) stream.Close();
if (rsp != null) rsp.Close();
}
return result;
}
}
}
\ No newline at end of file
This diff is collapsed.
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Security.Cryptography;
using System.Text;
using VTX.FW.Helper;
namespace EduSpider.Utility
{
/// <summary>
/// 微信帮助类
/// </summary>
public class WeChatHelper
{
/// <summary>
/// 获取access_token
/// </summary>
/// <param name="AppID"></param>
/// <param name="AppSecret"></param>
/// <returns></returns>
public static string GetAccessToken(string AppID, string AppSecret)
{
string token = string.Empty;
try
{
string wechatapi = Config.WechatApi;
string appID = AppID;
string appSecret = AppSecret;
//获取微信token
string token_url = wechatapi + "cgi-bin/token?grant_type=client_credential&appid=" + appID + "&secret=" + appSecret;
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(token_url);
//请求方式
myRequest.Method = "GET";
HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
string content = reader.ReadToEnd();
myResponse.Close();
reader.Dispose();
JObject jo = (JObject)JsonConvert.DeserializeObject(content);
token = jo["access_token"].ToString();
}
catch (Exception ex)
{
token = "";
LogHelper.WriteError("GetAccessToken", "获取微信token", ex);
}
return token;
}
/// <summary>
/// 获取微信用户OpenId
/// </summary>
/// <param name="AppId"></param>
/// <param name="AppSecret"></param>
/// <param name="Code"></param>
/// <returns></returns>
public static result GetWeChatOpenId(string AppId, string AppSecret, string Code)
{
// string result = "";
result userInfo = new result();
string resultInfo = "";
try
{
//请求路径
string url = "https://api.weixin.qq.com/sns/jscode2session?appid=" + AppId + "&secret=" + AppSecret + "&js_code=" + Code + "&grant_type=authorization_code";
resultInfo = HttpHelper.HttpGet(url);
if (resultInfo != null && !string.IsNullOrEmpty(resultInfo))
{
userInfo = JsonConvert.DeserializeObject<result>(resultInfo);
}
}
catch (Exception ex)
{
//GetWeChatOpenId:result={"errcode":40163,"errmsg":"code been used, hints: [ req_id: AHGbGiqNe-OhJh.a ]"}&&Code=051S1Ykl2wYCF64U7gnl2AK6ga0S1Yk2
//Code过期
LogHelper.WriteError("GetWeChatOpenId", string.Format("GetWeChatOpenId:result={0}&&Code={1}", resultInfo, Code), ex);
}
return userInfo;
}
/// <summary>
/// 获取微信授权手机号码
/// </summary>
/// <param name="encryptedData"></param>
/// <param name="code"></param>
/// <param name="ivStr"></param>
/// <returns></returns>
public static result GetWechatMobile(string encryptedData, string code, string iv)
{
string Appid = Config.AppID;
var Secret = Config.AppSecret;
string grant_type = "authorization_code";
//向微信服务端 使用登录凭证 code 获取 session_key 和 openid
string url = "https://api.weixin.qq.com/sns/jscode2session?appid=" + Appid + "&secret=" + Secret + "&js_code=" + code + "&grant_type=" + grant_type;
string type = "utf-8";
GetUsersHelper GetUsersHelper = new GetUsersHelper();
result res = new result();
string j = GetUsersHelper.GetUrltoHtml(url, type);//获取微信服务器返回字符串
//将字符串转换为json格式
JObject jo = JObject.Parse(j);
//微信服务器验证成功
res.openid = jo.GetString("openid");
res.session_key = jo.GetString("session_key");
res.unionid = jo.GetString("unionid");
if (!string.IsNullOrWhiteSpace(res.openid))
{
if (!string.IsNullOrEmpty(encryptedData) && !string.IsNullOrEmpty(iv))
{
//解析手机号码
res.phoneNumber = EncryptionHelper.AES_decrypt(encryptedData, res.session_key, iv);
}
}
return res;
}
}
/// <summary>
/// 获取用心信息帮助类
/// </summary>
public class GetUsersHelper
{
/// <summary>
/// 获取链接返回数据
/// </summary>
/// <param name="Url">链接</param>
/// <param name="type">请求类型</param>
/// <returns></returns>
public string GetUrltoHtml(string Url, string type)
{
try
{
System.Net.WebRequest wReq = System.Net.WebRequest.Create(Url);
// Get the response instance.
System.Net.WebResponse wResp = wReq.GetResponse();
System.IO.Stream respStream = wResp.GetResponseStream();
// Dim reader As StreamReader = New StreamReader(respStream)
using System.IO.StreamReader reader = new System.IO.StreamReader(respStream, Encoding.GetEncoding(type));
return reader.ReadToEnd();
}
catch (System.Exception ex)
{
return ex.Message;
}
}
}
/// <summary>
/// 微信小程序验证返回结果
/// </summary>
public class result
{
/// <summary>
/// openid
/// </summary>
public string openid { get; set; }
/// <summary>
/// openid
/// </summary>
public string unionid { get; set; }
/// <summary>
/// session_key
/// </summary>
public string session_key { get; set; }
/// <summary>
/// 错误状态码
/// </summary>
public string errcode { get; set; }
/// <summary>
/// 错误提示信息
/// </summary>
public string errmsg { get; set; }
/// <summary>
/// 电话号码
/// </summary>
public string phoneNumber { get; set; }
}
}
\ No newline at end of file
This diff is collapsed.
......@@ -9,6 +9,7 @@
<PackageReference Include="Autofac.Extensions.DependencyInjection" Version="7.2.0" />
<PackageReference Include="Autofac.Extras.DynamicProxy" Version="6.0.1" />
<PackageReference Include="Castle.Core" Version="4.4.0" />
<PackageReference Include="JWT" Version="9.0.1" />
<PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="6.0.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="6.0.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="6.0.0" />
......@@ -16,10 +17,11 @@
<PackageReference Include="SqlSugarCore" Version="5.0.8.3" />
<PackageReference Include="StackExchange.Redis" Version="2.0.601" />
<PackageReference Include="System.Data.SqlClient" Version="4.8.3" />
<PackageReference Include="VTX.FW" Version="1.0.0" />
<PackageReference Include="VTX.FW" Version="1.1.0" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\EduSpider.Cache\EduSpider.Cache.csproj" />
<ProjectReference Include="..\EduSpider.IRepository\EduSpider.IRepository.csproj" />
<ProjectReference Include="..\EduSpider.IServices\EduSpider.IServices.csproj" />
<ProjectReference Include="..\EduSpider.Model\EduSpider.Model.csproj" />
......
......@@ -25,5 +25,13 @@
"ConnectionStrings": {
"DefaultConnection": "server=192.168.10.214;user id=reborn;password=Reborn@2018;database=reborn_think;CharSet=utf8mb4; Convert Zero Datetime=true; ",
"DefaultConnectionPName": "MySql.Data.MySqlClient"
}
},
"JwtSecretKey": "@VIITTOREBORN*2022",
"JwtExpirTime": 2592000,
"RedisSetting": {
"RedisServer": "47.96.23.199",
"RedisPort": "6379",
"RedisPwd": "Viitto2018"
},
"IsLocal": 1
}
......@@ -23,6 +23,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EduSpider.Utility", "EduSpi
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EduSpider", "EduSpider\EduSpider.csproj", "{DAC5E8C6-98DF-4B33-9E2C-452DDE54A5FA}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EduSpider.Cache", "EduSpider.Cache\EduSpider.Cache.csproj", "{6D059BFB-A071-4856-A35D-38EB893FED74}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
......
......@@ -87,7 +87,7 @@ namespace EduSpider.Spiders.ClassInRule
Id = item.StudentUid,
Account = item.StudentAccount,
AccountId = item.StudId,
AccountType = 2,
AccountType = Utility.Enum.AccountTypeEnum.Student,
OpenId = "",
Password = Utility.DES.Encrypt(item.StudentAccount[^6..]),
Status = 0,
......
......@@ -86,7 +86,7 @@ namespace EduSpider.Spiders.ClassInRule
Id = item.TeacherUid,
Account = item.TeacherAccount,
AccountId = item.TeacherId,
AccountType = 1,
AccountType = AccountTypeEnum.Teacher,
OpenId = "",
Password = Utility.DES.Encrypt(item.TeacherAccount[^6..]),
Status = 0,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment