忽略dll文件git
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -1,104 +1,104 @@
|
||||
using Hncore.Infrastructure.Common;
|
||||
using Hncore.Infrastructure.Extension;
|
||||
using Hncore.Infrastructure.WebApi;
|
||||
using Hncore.Pass.BaseInfo.Models;
|
||||
using Hncore.Pass.BaseInfo.Request;
|
||||
using Hncore.Pass.BaseInfo.Request.User;
|
||||
using Hncore.Pass.BaseInfo.Service;
|
||||
using Hncore.Pass.Vpn.Service;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Linq.Expressions;
|
||||
using System.Threading.Tasks;
|
||||
using Hncore.Infrastructure.EntitiesExtension;
|
||||
namespace Hncore.Pass.BaseInfo.Controllers
|
||||
{
|
||||
[ApiVersion("1.0")]
|
||||
[Route("api/baseinfo/v{version:apiVersion}/chargeorder/[action]")]
|
||||
public class ChargeOrderController : HncoreControllerBase
|
||||
{
|
||||
private UserService _userService;
|
||||
private WxAppUserService m_WxAppUserService;
|
||||
private IConfiguration _Configuration;
|
||||
private UserScoreService m_UserScoreService;
|
||||
|
||||
private UserChargeOrderService m_ChargeOrderService;
|
||||
public ChargeOrderController(UserService userService
|
||||
, UserScoreService _UserScoreService
|
||||
, UserChargeOrderService _ChargeOrderService
|
||||
, IConfiguration configuration)
|
||||
{
|
||||
_userService = userService;
|
||||
_Configuration = configuration;
|
||||
m_ChargeOrderService = _ChargeOrderService;
|
||||
m_UserScoreService = _UserScoreService;
|
||||
}
|
||||
|
||||
public async Task<ApiResult> Page([FromQuery]QueryChargeOrdertRequest request)
|
||||
{
|
||||
Expression<Func<UserChargeOrderEntity, bool>> expr = m => m.OrderState == UOrderStatus.PayOk || m.OrderState == UOrderStatus.Complete;
|
||||
if (request.KeyWord.Has())
|
||||
{
|
||||
expr = expr.And(m =>
|
||||
m.UserName.Contains(request.KeyWord)
|
||||
|| m.OrderNo.Contains(request.KeyWord)
|
||||
|| m.TradeNo.Contains(request.KeyWord));
|
||||
}
|
||||
if (request.BTime.HasValue && request.ETime.HasValue)
|
||||
{
|
||||
expr = expr.And(m => m.CreateTime >= request.BTime && m.CreateTime <= request.ETime);
|
||||
}
|
||||
var ret = await m_ChargeOrderService.PageDesc(request.PageIndex, request.PageSize, expr, true, m => m.Id);
|
||||
|
||||
// ret.List.ForEach(
|
||||
// m => {m.UserName = m.UserName.Substring(0,3) + "***";
|
||||
// });
|
||||
var data = ret.ToApiResult();
|
||||
return data;
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
public async Task<IActionResult> ExportOrder([FromQuery]QueryChargeOrdertRequest request)
|
||||
{
|
||||
Expression<Func<UserChargeOrderEntity, bool>> expr = m => m.OrderState == UOrderStatus.PayOk || m.OrderState == UOrderStatus.Complete;
|
||||
if (request.KeyWord.Has())
|
||||
{
|
||||
expr = expr.And(m =>
|
||||
m.UserName.Contains(request.KeyWord)
|
||||
|| m.OrderNo.Contains(request.KeyWord)
|
||||
|| m.TradeNo.Contains(request.KeyWord));
|
||||
}
|
||||
if (request.BTime.HasValue && request.ETime.HasValue)
|
||||
{
|
||||
expr = expr.And(m => m.CreateTime >= request.BTime && m.CreateTime <= request.ETime);
|
||||
}
|
||||
var ret = await m_ChargeOrderService.PageDesc(1, 10000, expr, true, m => m.Id);
|
||||
|
||||
|
||||
var data = new ExcelData<UserChargeOrderEntity>
|
||||
{
|
||||
SheetName = DateTime.Now.ToString("yyyy-MM-dd"),
|
||||
Data = ret.List
|
||||
};
|
||||
|
||||
var title = new List<ExcelTitle>(){
|
||||
new ExcelTitle { Property = "CreateTime", Title = "创建日期",Format=(val)=>((DateTime) val).ToString("yyyy-MM-dd hh:mm:ss") },
|
||||
new ExcelTitle { Property = "OrderNo", Title = "订单号" },
|
||||
new ExcelTitle { Property = "TradeNo", Title = "交易号" },
|
||||
new ExcelTitle { Property = "UserName", Title = "用户" },
|
||||
new ExcelTitle { Property = "OrderAmount", Title = "充值金额" },
|
||||
|
||||
};
|
||||
var fileBytes = ExcelHelper.ExportListToExcel(data, title);
|
||||
|
||||
var fileName = $"{DateTime.Now.ToString("yyyyMMdd")}充值明细.xlsx";
|
||||
Response.Headers.Add("X-Suggested-Filename", fileName.UrlEncode());
|
||||
return File(fileBytes, "application/octet-stream", fileName);
|
||||
|
||||
}
|
||||
}
|
||||
using Hncore.Infrastructure.Common;
|
||||
using Hncore.Infrastructure.Extension;
|
||||
using Hncore.Infrastructure.WebApi;
|
||||
using Hncore.Pass.BaseInfo.Models;
|
||||
using Hncore.Pass.BaseInfo.Request;
|
||||
using Hncore.Pass.BaseInfo.Request.User;
|
||||
using Hncore.Pass.BaseInfo.Service;
|
||||
using Hncore.Pass.Vpn.Service;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Linq.Expressions;
|
||||
using System.Threading.Tasks;
|
||||
using Hncore.Infrastructure.EntitiesExtension;
|
||||
namespace Hncore.Pass.BaseInfo.Controllers
|
||||
{
|
||||
[ApiVersion("1.0")]
|
||||
[Route("api/baseinfo/v{version:apiVersion}/chargeorder/[action]")]
|
||||
public class ChargeOrderController : HncoreControllerBase
|
||||
{
|
||||
private UserService _userService;
|
||||
private WxAppUserService m_WxAppUserService;
|
||||
private IConfiguration _Configuration;
|
||||
private UserScoreService m_UserScoreService;
|
||||
|
||||
private UserChargeOrderService m_ChargeOrderService;
|
||||
public ChargeOrderController(UserService userService
|
||||
, UserScoreService _UserScoreService
|
||||
, UserChargeOrderService _ChargeOrderService
|
||||
, IConfiguration configuration)
|
||||
{
|
||||
_userService = userService;
|
||||
_Configuration = configuration;
|
||||
m_ChargeOrderService = _ChargeOrderService;
|
||||
m_UserScoreService = _UserScoreService;
|
||||
}
|
||||
|
||||
public async Task<ApiResult> Page([FromQuery]QueryChargeOrdertRequest request)
|
||||
{
|
||||
Expression<Func<UserChargeOrderEntity, bool>> expr = m => m.OrderState == UOrderStatus.PayOk || m.OrderState == UOrderStatus.Complete;
|
||||
if (request.KeyWord.Has())
|
||||
{
|
||||
expr = expr.And(m =>
|
||||
m.UserName.Contains(request.KeyWord)
|
||||
|| m.OrderNo.Contains(request.KeyWord)
|
||||
|| m.TradeNo.Contains(request.KeyWord));
|
||||
}
|
||||
if (request.BTime.HasValue && request.ETime.HasValue)
|
||||
{
|
||||
expr = expr.And(m => m.CreateTime >= request.BTime && m.CreateTime <= request.ETime);
|
||||
}
|
||||
var ret = await m_ChargeOrderService.PageDesc(request.PageIndex, request.PageSize, expr, true, m => m.Id);
|
||||
|
||||
// ret.List.ForEach(
|
||||
// m => {m.UserName = m.UserName.Substring(0,3) + "***";
|
||||
// });
|
||||
var data = ret.ToApiResult();
|
||||
return data;
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
public async Task<IActionResult> ExportOrder([FromQuery]QueryChargeOrdertRequest request)
|
||||
{
|
||||
Expression<Func<UserChargeOrderEntity, bool>> expr = m => m.OrderState == UOrderStatus.PayOk || m.OrderState == UOrderStatus.Complete;
|
||||
if (request.KeyWord.Has())
|
||||
{
|
||||
expr = expr.And(m =>
|
||||
m.UserName.Contains(request.KeyWord)
|
||||
|| m.OrderNo.Contains(request.KeyWord)
|
||||
|| m.TradeNo.Contains(request.KeyWord));
|
||||
}
|
||||
if (request.BTime.HasValue && request.ETime.HasValue)
|
||||
{
|
||||
expr = expr.And(m => m.CreateTime >= request.BTime && m.CreateTime <= request.ETime);
|
||||
}
|
||||
var ret = await m_ChargeOrderService.PageDesc(1, 10000, expr, true, m => m.Id);
|
||||
|
||||
|
||||
var data = new ExcelData<UserChargeOrderEntity>
|
||||
{
|
||||
SheetName = DateTime.Now.ToString("yyyy-MM-dd"),
|
||||
Data = ret.List
|
||||
};
|
||||
|
||||
var title = new List<ExcelTitle>(){
|
||||
new ExcelTitle { Property = "CreateTime", Title = "创建日期",Format=(val)=>((DateTime) val).ToString("yyyy-MM-dd hh:mm:ss") },
|
||||
new ExcelTitle { Property = "OrderNo", Title = "订单号" },
|
||||
new ExcelTitle { Property = "TradeNo", Title = "交易号" },
|
||||
new ExcelTitle { Property = "UserName", Title = "用户" },
|
||||
new ExcelTitle { Property = "OrderAmount", Title = "充值金额" },
|
||||
|
||||
};
|
||||
var fileBytes = ExcelHelper.ExportListToExcel(data, title);
|
||||
|
||||
var fileName = $"{DateTime.Now.ToString("yyyyMMdd")}充值明细.xlsx";
|
||||
Response.Headers.Add("X-Suggested-Filename", fileName.UrlEncode());
|
||||
return File(fileBytes, "application/octet-stream", fileName);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,103 +1,103 @@
|
||||
using Hncore.Infrastructure.Common;
|
||||
using Hncore.Infrastructure.WebApi;
|
||||
using Hncore.Pass.BaseInfo.Models;
|
||||
using Hncore.Pass.BaseInfo.Request;
|
||||
using Hncore.Pass.BaseInfo.Request.Manager;
|
||||
using Hncore.Pass.BaseInfo.Request.User;
|
||||
using Hncore.Pass.BaseInfo.Service;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using System;
|
||||
using System.Threading.Tasks;
|
||||
using System.Web;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo.Controllers
|
||||
{
|
||||
[ApiVersion("1.0")]
|
||||
[Route("api/baseinfo/v{version:apiVersion}/Manager/[action]")]
|
||||
public class ManagerController : HncoreControllerBase
|
||||
{
|
||||
private ManageService _manageService;
|
||||
private IConfiguration _Configuration;
|
||||
|
||||
public ManagerController(ManageService manageService, IConfiguration configuration)
|
||||
{
|
||||
_manageService = manageService;
|
||||
_Configuration = configuration;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 登录
|
||||
/// </summary>
|
||||
/// <param name="request"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost, AllowAnonymous]
|
||||
public async Task<ApiResult> LogIn([FromBody] LoginRequest request)
|
||||
{
|
||||
return Success(await _manageService.Login(request));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 登录
|
||||
/// </summary>
|
||||
/// <param name="request"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost, AllowAnonymous]
|
||||
public async Task<ApiResult> LogInTemp([FromBody] LoginRequest request)
|
||||
{
|
||||
return Success(await _manageService.LoginTemp(request));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 登录
|
||||
/// </summary>
|
||||
/// <param name="request"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost, AllowAnonymous]
|
||||
public async Task<ApiResult> LoginAndroidTemp([FromBody] LoginRequest request)
|
||||
{
|
||||
return Success(await _manageService.LoginAndroidTemp(request));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 图片验证码
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[AllowAnonymous]
|
||||
public async Task<ApiResult> GetValidateCode()
|
||||
{
|
||||
var code = "1234";// vCode.MakeCode(4);
|
||||
|
||||
var key = "validate:" + DateTime.Now.ToString("yyyyMMddHHmmss") + "-" + Guid.NewGuid().ToString("N");
|
||||
|
||||
if (!EnvironmentVariableHelper.IsAspNetCoreProduction)
|
||||
{
|
||||
LogHelper.Debug("登录验证码", $"code:{code},key:{key}");
|
||||
}
|
||||
var expireSeconds = 600;
|
||||
// await RedisHelper.SetAsync(key, code, expireSeconds);
|
||||
|
||||
var img = ValidateCodeHelper.GenerateCodeImg(code);
|
||||
var data = new
|
||||
{
|
||||
key = key,
|
||||
img = img,
|
||||
expireSeconds = expireSeconds,
|
||||
};
|
||||
return Success(data);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 刷新token
|
||||
/// </summary>
|
||||
/// <param name="request"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<ApiResult> AgainGetToken(RequestBase<AgainTokenDTO> request)
|
||||
{
|
||||
request.TenantId = Request.GetManageUserInfo().TenantId;
|
||||
request.OperaterId = Request.GetManageUserInfo().OperaterId;
|
||||
return Success(await _manageService.AgainGetToken(request),"");
|
||||
}
|
||||
}
|
||||
using Hncore.Infrastructure.Common;
|
||||
using Hncore.Infrastructure.WebApi;
|
||||
using Hncore.Pass.BaseInfo.Models;
|
||||
using Hncore.Pass.BaseInfo.Request;
|
||||
using Hncore.Pass.BaseInfo.Request.Manager;
|
||||
using Hncore.Pass.BaseInfo.Request.User;
|
||||
using Hncore.Pass.BaseInfo.Service;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using System;
|
||||
using System.Threading.Tasks;
|
||||
using System.Web;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo.Controllers
|
||||
{
|
||||
[ApiVersion("1.0")]
|
||||
[Route("api/baseinfo/v{version:apiVersion}/Manager/[action]")]
|
||||
public class ManagerController : HncoreControllerBase
|
||||
{
|
||||
private ManageService _manageService;
|
||||
private IConfiguration _Configuration;
|
||||
|
||||
public ManagerController(ManageService manageService, IConfiguration configuration)
|
||||
{
|
||||
_manageService = manageService;
|
||||
_Configuration = configuration;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 登录
|
||||
/// </summary>
|
||||
/// <param name="request"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost, AllowAnonymous]
|
||||
public async Task<ApiResult> LogIn([FromBody] LoginRequest request)
|
||||
{
|
||||
return Success(await _manageService.Login(request));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 登录
|
||||
/// </summary>
|
||||
/// <param name="request"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost, AllowAnonymous]
|
||||
public async Task<ApiResult> LogInTemp([FromBody] LoginRequest request)
|
||||
{
|
||||
return Success(await _manageService.LoginTemp(request));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 登录
|
||||
/// </summary>
|
||||
/// <param name="request"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost, AllowAnonymous]
|
||||
public async Task<ApiResult> LoginAndroidTemp([FromBody] LoginRequest request)
|
||||
{
|
||||
return Success(await _manageService.LoginAndroidTemp(request));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 图片验证码
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[AllowAnonymous]
|
||||
public async Task<ApiResult> GetValidateCode()
|
||||
{
|
||||
var code = "1234";// vCode.MakeCode(4);
|
||||
|
||||
var key = "validate:" + DateTime.Now.ToString("yyyyMMddHHmmss") + "-" + Guid.NewGuid().ToString("N");
|
||||
|
||||
if (!EnvironmentVariableHelper.IsAspNetCoreProduction)
|
||||
{
|
||||
LogHelper.Debug("登录验证码", $"code:{code},key:{key}");
|
||||
}
|
||||
var expireSeconds = 600;
|
||||
// await RedisHelper.SetAsync(key, code, expireSeconds);
|
||||
|
||||
var img = ValidateCodeHelper.GenerateCodeImg(code);
|
||||
var data = new
|
||||
{
|
||||
key = key,
|
||||
img = img,
|
||||
expireSeconds = expireSeconds,
|
||||
};
|
||||
return Success(data);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 刷新token
|
||||
/// </summary>
|
||||
/// <param name="request"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<ApiResult> AgainGetToken(RequestBase<AgainTokenDTO> request)
|
||||
{
|
||||
request.TenantId = Request.GetManageUserInfo().TenantId;
|
||||
request.OperaterId = Request.GetManageUserInfo().OperaterId;
|
||||
return Success(await _manageService.AgainGetToken(request),"");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,334 +1,334 @@
|
||||
using Hncore.Infrastructure.Common;
|
||||
using Hncore.Infrastructure.EntitiesExtension;
|
||||
using Hncore.Infrastructure.Extension;
|
||||
using Hncore.Infrastructure.WebApi;
|
||||
using Hncore.Pass.BaseInfo.Models;
|
||||
using Hncore.Pass.BaseInfo.Request;
|
||||
using Hncore.Pass.BaseInfo.Request.User;
|
||||
using Hncore.Pass.BaseInfo.Service;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Linq.Expressions;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo.Controllers
|
||||
{
|
||||
[ApiVersion("1.0")]
|
||||
[Route("api/baseinfo/v{version:apiVersion}/user/[action]")]
|
||||
public class UserController : HncoreControllerBase
|
||||
{
|
||||
private UserService _userService;
|
||||
private WxAppUserService m_WxAppUserService;
|
||||
private IConfiguration _Configuration;
|
||||
private UserScoreService m_UserScoreService;
|
||||
public UserController(UserService userService, UserScoreService _UserScoreService, WxAppUserService _WxAppUserService, IConfiguration configuration)
|
||||
{
|
||||
_userService = userService;
|
||||
_Configuration = configuration;
|
||||
m_WxAppUserService = _WxAppUserService;
|
||||
m_UserScoreService = _UserScoreService;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 登录
|
||||
/// </summary>
|
||||
/// <param name="request"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost, AllowAnonymous]
|
||||
public async Task<ApiResult> WxLogin([FromBody] WxLoginRequest request)
|
||||
{
|
||||
return Success(await _userService.LoginAndBindWx(request));
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 登录
|
||||
/// </summary>
|
||||
/// <param name="request"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost, AllowAnonymous]
|
||||
public async Task<ApiResult> WebLogin([FromBody] LoginRequest request)
|
||||
{
|
||||
return Success(await _userService.Login(request));
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 添加
|
||||
/// </summary>
|
||||
/// <param name="request"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
public async Task<ApiResult> Post([FromBody]PostUserRequest request)
|
||||
{
|
||||
var entity = request.MapTo<User>();
|
||||
entity.CreateType = UserCreateType.ManagerAdd;
|
||||
return await _userService.Regist(entity);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 修改
|
||||
/// </summary>
|
||||
/// <param name="request"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
public async Task<ApiResult> Put([FromBody]PostUserRequest request)
|
||||
{
|
||||
var userEntity = await _userService.GetById(request.Id);
|
||||
userEntity.Phone = request.Phone;
|
||||
userEntity.QQ = request.QQ;
|
||||
userEntity.Wx = request.Wx;
|
||||
userEntity.TaoBao = request.TaoBao;
|
||||
userEntity.Email = request.Email;
|
||||
if (request.Password.Has()) {
|
||||
userEntity.Password =UserService.HashPassword(request.Password);
|
||||
}
|
||||
var ret= await _userService.Update(userEntity);
|
||||
if (ret)
|
||||
{
|
||||
return Success("设置成功");
|
||||
}
|
||||
else
|
||||
{
|
||||
return Error("设置失败");
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 删除
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
public async Task<ApiResult> Delete([FromQuery]int id)
|
||||
{
|
||||
var flag = await _userService.DeleteById(id);
|
||||
if (flag)
|
||||
return Success();
|
||||
else
|
||||
return Error("删除失败");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查询
|
||||
/// </summary>
|
||||
/// <param name="request"></param>
|
||||
/// <returns></returns>
|
||||
|
||||
[HttpGet]
|
||||
public async Task<ApiResult> Page([FromQuery]PageRequestBase request)
|
||||
{
|
||||
var ret = await _userService.PageDesc(request.PageIndex, request.PageSize,
|
||||
m=> request.KeyWord.NotHas()
|
||||
||m.LoginCode.Contains(request.KeyWord)
|
||||
|| m.Phone.Contains(request.KeyWord)
|
||||
|| m.Name.Contains(request.KeyWord),true,m=>m.Id);
|
||||
ret.List.ForEach(
|
||||
m => {m.Password = "";
|
||||
// m.LoginCode = m.LoginCode.Substring(0,3) + "***";
|
||||
if(m.id_code.Length > 3){
|
||||
m.id_code = m.id_code.Substring(0,6) + "***";
|
||||
if(m.is_verify == 1){
|
||||
m.Remark = "认证成功";
|
||||
} else {
|
||||
m.Remark = "认证失败";
|
||||
}
|
||||
} else {
|
||||
m.Remark = "未认证";
|
||||
}
|
||||
});
|
||||
|
||||
var data = ret.ToApiResult();
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
public async Task<ApiResult> Search([FromQuery]QueryUserRequest request)
|
||||
{
|
||||
Expression<Func<User, bool>> exp = (m) => 1 == 1;
|
||||
if (request.All.HasValue && request.All == 0)
|
||||
{
|
||||
exp = exp.And(m => m.ManagerId == 0);
|
||||
}
|
||||
if (request.KeyWord.Has())
|
||||
{
|
||||
exp = exp.And(m => m.Phone.Contains(request.KeyWord));
|
||||
}
|
||||
|
||||
var ret = await _userService.PageDesc(request.PageIndex, request.PageSize, exp, true, m => m.Id);
|
||||
ret.List.ForEach(m => m.Password = "");
|
||||
var data = ret.ToApiResult();
|
||||
return data;
|
||||
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
public async Task<ApiResult> SearchInfo([FromQuery]PageRequestBase request)
|
||||
{
|
||||
if (request.KeyWord.Has())
|
||||
{
|
||||
var ret = await _userService.PageDesc(request.PageIndex, 50,
|
||||
m => m.LoginCode== request.KeyWord
|
||||
|| m.Phone== request.KeyWord, true, m => m.Id);
|
||||
ret.List.ForEach(
|
||||
m => {m.Password = "";
|
||||
if(m.id_code.Length > 3){
|
||||
m.id_code = m.id_code.Substring(0,6) + "***";
|
||||
if(m.is_verify == 1){
|
||||
m.Remark = "认证成功";
|
||||
} else {
|
||||
m.Remark = "认证失败";
|
||||
}
|
||||
} else {
|
||||
m.Remark = "未认证";
|
||||
}
|
||||
});
|
||||
var data = ret.ToApiResult();
|
||||
return data;
|
||||
}
|
||||
return Error("请输入关键字");
|
||||
|
||||
}
|
||||
|
||||
public async Task<ApiResult> UpdateAmount([FromBody] UpdateAmountRequest request)
|
||||
{
|
||||
request.OperateUserName = this.Request.GetManageUserInfo().LoginName;
|
||||
return await _userService.UpdateAmount(request);
|
||||
}
|
||||
|
||||
public async Task<ApiResult> UpdateTestCount([FromBody] UpdateTestCountRequest request)
|
||||
{
|
||||
var userEntity = await _userService.GetById(request.UserId);
|
||||
userEntity.TestCountLimit = request.Limit;
|
||||
await _userService.Update(userEntity);
|
||||
return Success();
|
||||
}
|
||||
|
||||
//public async Task<ApiResult> ChargeByTaoBao([FromBody] UpdateAmountRequest request)
|
||||
//{
|
||||
// return await _userService.UpdateAmount(request);
|
||||
//}
|
||||
|
||||
[HttpGet]
|
||||
public async Task<ApiResult> AmountDetail([FromQuery] int userId)
|
||||
{
|
||||
var model = await m_UserScoreService.Details(userId);
|
||||
return Success(model);
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
public async Task<ApiResult> AmountDetails([FromQuery] QueryAmountRequest request)
|
||||
{
|
||||
var model = await m_UserScoreService.Details(request);
|
||||
// model.List.ForEach(
|
||||
// m => {m.UserName = m.UserName.Substring(0,3) + "***";
|
||||
// });
|
||||
return model.ToApiResult();
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
public async Task<IActionResult> ExportAmount([FromQuery]QueryAmountRequest request)
|
||||
{
|
||||
var model = await m_UserScoreService.DetailsAll(request);
|
||||
|
||||
|
||||
var data = new ExcelData<UserScore>
|
||||
{
|
||||
SheetName = DateTime.Now.ToString("yyyy-MM-dd"),
|
||||
Data = model
|
||||
};
|
||||
|
||||
var title = new List<ExcelTitle>(){
|
||||
new ExcelTitle { Property = "CreateTime", Title = "创建日期",Format=(val)=>((DateTime) val).ToString("yyyy-MM-dd hh:mm:ss") },
|
||||
new ExcelTitle { Property = "UserName", Title = "用户" },
|
||||
new ExcelTitle { Property = "OperateUserName", Title = "操作人员" },
|
||||
new ExcelTitle { Property = "ScoreTypeName", Title = "资金项目" },
|
||||
new ExcelTitle { Property = "ScoreValue", Title = "金额" },
|
||||
new ExcelTitle { Property = "Remark", Title = "备注" },
|
||||
new ExcelTitle { Property = "RestAmount1", Title = "操作前金额" },
|
||||
new ExcelTitle { Property = "RestAmount2", Title = "操作后金额" }
|
||||
};
|
||||
var fileBytes = ExcelHelper.ExportListToExcel(data, title);
|
||||
|
||||
var fileName = $"{DateTime.Now.ToString("yyyyMMdd")}资金明细.xlsx";
|
||||
Response.Headers.Add("X-Suggested-Filename", fileName.UrlEncode());
|
||||
return File(fileBytes, "application/octet-stream", fileName);
|
||||
|
||||
}
|
||||
|
||||
|
||||
[HttpGet]
|
||||
public async Task<IActionResult> Export()
|
||||
{
|
||||
var ret = await _userService.GetAll(true);
|
||||
|
||||
var data = new ExcelData<User>
|
||||
{
|
||||
SheetName = DateTime.Now.ToString("yyyy-MM-dd"),
|
||||
Data = ret
|
||||
};
|
||||
|
||||
var title = new List<ExcelTitle>(){
|
||||
// new ExcelTitle { Property = "LoginCode", Title = "手机号" },
|
||||
new ExcelTitle { Property = "CreateTime", Title = "注册时间",Format=(val)=>((DateTime) val).ToString("yyyy-MM-dd hh:mm:ss") },
|
||||
new ExcelTitle { Property = "CreateType", Title = "注册方式", Format=(val)=>((UserCreateType)val).GetEnumDisplayName() },
|
||||
new ExcelTitle { Property = "RestAmount", Title = "余额"},
|
||||
new ExcelTitle { Property = "TestCountLimit", Title = "测试限额",Format=(val)=>((int)val)==0?3:(int)val },
|
||||
new ExcelTitle { Property = "UseTestCount", Title = "领用数",Format=(val)=>((int)val)==0?3:(int)val },
|
||||
// new ExcelTitle { Property = "Wx", Title = "微信"},
|
||||
// new ExcelTitle { Property = "QQ", Title = "QQ"},
|
||||
// new ExcelTitle { Property = "Email", Title = "Email"},
|
||||
// new ExcelTitle { Property = "TaoBao", Title = "淘宝"},
|
||||
// new ExcelTitle { Property = "WangWang", Title = "旺旺"},
|
||||
};
|
||||
var fileBytes = ExcelHelper.ExportListToExcel(data, title);
|
||||
|
||||
var fileName = $"{DateTime.Now.ToString("yyyyMMdd")}用户明细.xlsx";
|
||||
Response.Headers.Add("X-Suggested-Filename", fileName.UrlEncode());
|
||||
return File(fileBytes, "application/octet-stream", fileName);
|
||||
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
public async Task<ApiResult> SetManager([FromBody] SetManagerRequest request)
|
||||
{
|
||||
if (request.ManagerId == 0 || request.ManagerName.NotHas())
|
||||
{
|
||||
return Error("请选择客户经理");
|
||||
}
|
||||
|
||||
if (request.UserIds == null || request.UserIds.Count() == 0)
|
||||
{
|
||||
return Error("请选择用户");
|
||||
}
|
||||
|
||||
var users = await _userService.Query(m => request.UserIds.Contains(m.Id)).ToListAsync();
|
||||
|
||||
if (users != null)
|
||||
{
|
||||
users.ForEach(m =>
|
||||
{
|
||||
m.ManagerId = request.ManagerId;
|
||||
m.ManagerName = request.ManagerName;
|
||||
});
|
||||
await _userService.Update(users);
|
||||
}
|
||||
return Success();
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
public async Task<ApiResult> UpdateProfile([FromBody] UpdateProfileRequest request)
|
||||
{
|
||||
var userInfo = await _userService.GetById(request.UserId);
|
||||
userInfo.Profile = request.Profile;
|
||||
await _userService.Update(userInfo);
|
||||
return Success();
|
||||
}
|
||||
}
|
||||
using Hncore.Infrastructure.Common;
|
||||
using Hncore.Infrastructure.EntitiesExtension;
|
||||
using Hncore.Infrastructure.Extension;
|
||||
using Hncore.Infrastructure.WebApi;
|
||||
using Hncore.Pass.BaseInfo.Models;
|
||||
using Hncore.Pass.BaseInfo.Request;
|
||||
using Hncore.Pass.BaseInfo.Request.User;
|
||||
using Hncore.Pass.BaseInfo.Service;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Linq.Expressions;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo.Controllers
|
||||
{
|
||||
[ApiVersion("1.0")]
|
||||
[Route("api/baseinfo/v{version:apiVersion}/user/[action]")]
|
||||
public class UserController : HncoreControllerBase
|
||||
{
|
||||
private UserService _userService;
|
||||
private WxAppUserService m_WxAppUserService;
|
||||
private IConfiguration _Configuration;
|
||||
private UserScoreService m_UserScoreService;
|
||||
public UserController(UserService userService, UserScoreService _UserScoreService, WxAppUserService _WxAppUserService, IConfiguration configuration)
|
||||
{
|
||||
_userService = userService;
|
||||
_Configuration = configuration;
|
||||
m_WxAppUserService = _WxAppUserService;
|
||||
m_UserScoreService = _UserScoreService;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 登录
|
||||
/// </summary>
|
||||
/// <param name="request"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost, AllowAnonymous]
|
||||
public async Task<ApiResult> WxLogin([FromBody] WxLoginRequest request)
|
||||
{
|
||||
return Success(await _userService.LoginAndBindWx(request));
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 登录
|
||||
/// </summary>
|
||||
/// <param name="request"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost, AllowAnonymous]
|
||||
public async Task<ApiResult> WebLogin([FromBody] LoginRequest request)
|
||||
{
|
||||
return Success(await _userService.Login(request));
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 添加
|
||||
/// </summary>
|
||||
/// <param name="request"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
public async Task<ApiResult> Post([FromBody]PostUserRequest request)
|
||||
{
|
||||
var entity = request.MapTo<User>();
|
||||
entity.CreateType = UserCreateType.ManagerAdd;
|
||||
return await _userService.Regist(entity);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 修改
|
||||
/// </summary>
|
||||
/// <param name="request"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
public async Task<ApiResult> Put([FromBody]PostUserRequest request)
|
||||
{
|
||||
var userEntity = await _userService.GetById(request.Id);
|
||||
userEntity.Phone = request.Phone;
|
||||
userEntity.QQ = request.QQ;
|
||||
userEntity.Wx = request.Wx;
|
||||
userEntity.TaoBao = request.TaoBao;
|
||||
userEntity.Email = request.Email;
|
||||
if (request.Password.Has()) {
|
||||
userEntity.Password =UserService.HashPassword(request.Password);
|
||||
}
|
||||
var ret= await _userService.Update(userEntity);
|
||||
if (ret)
|
||||
{
|
||||
return Success("设置成功");
|
||||
}
|
||||
else
|
||||
{
|
||||
return Error("设置失败");
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 删除
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
public async Task<ApiResult> Delete([FromQuery]int id)
|
||||
{
|
||||
var flag = await _userService.DeleteById(id);
|
||||
if (flag)
|
||||
return Success();
|
||||
else
|
||||
return Error("删除失败");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查询
|
||||
/// </summary>
|
||||
/// <param name="request"></param>
|
||||
/// <returns></returns>
|
||||
|
||||
[HttpGet]
|
||||
public async Task<ApiResult> Page([FromQuery]PageRequestBase request)
|
||||
{
|
||||
var ret = await _userService.PageDesc(request.PageIndex, request.PageSize,
|
||||
m=> request.KeyWord.NotHas()
|
||||
||m.LoginCode.Contains(request.KeyWord)
|
||||
|| m.Phone.Contains(request.KeyWord)
|
||||
|| m.Name.Contains(request.KeyWord),true,m=>m.Id);
|
||||
ret.List.ForEach(
|
||||
m => {m.Password = "";
|
||||
// m.LoginCode = m.LoginCode.Substring(0,3) + "***";
|
||||
if(m.id_code.Length > 3){
|
||||
m.id_code = m.id_code.Substring(0,6) + "***";
|
||||
if(m.is_verify == 1){
|
||||
m.Remark = "认证成功";
|
||||
} else {
|
||||
m.Remark = "认证失败";
|
||||
}
|
||||
} else {
|
||||
m.Remark = "未认证";
|
||||
}
|
||||
});
|
||||
|
||||
var data = ret.ToApiResult();
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
public async Task<ApiResult> Search([FromQuery]QueryUserRequest request)
|
||||
{
|
||||
Expression<Func<User, bool>> exp = (m) => 1 == 1;
|
||||
if (request.All.HasValue && request.All == 0)
|
||||
{
|
||||
exp = exp.And(m => m.ManagerId == 0);
|
||||
}
|
||||
if (request.KeyWord.Has())
|
||||
{
|
||||
exp = exp.And(m => m.Phone.Contains(request.KeyWord));
|
||||
}
|
||||
|
||||
var ret = await _userService.PageDesc(request.PageIndex, request.PageSize, exp, true, m => m.Id);
|
||||
ret.List.ForEach(m => m.Password = "");
|
||||
var data = ret.ToApiResult();
|
||||
return data;
|
||||
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
public async Task<ApiResult> SearchInfo([FromQuery]PageRequestBase request)
|
||||
{
|
||||
if (request.KeyWord.Has())
|
||||
{
|
||||
var ret = await _userService.PageDesc(request.PageIndex, 50,
|
||||
m => m.LoginCode== request.KeyWord
|
||||
|| m.Phone== request.KeyWord, true, m => m.Id);
|
||||
ret.List.ForEach(
|
||||
m => {m.Password = "";
|
||||
if(m.id_code.Length > 3){
|
||||
m.id_code = m.id_code.Substring(0,6) + "***";
|
||||
if(m.is_verify == 1){
|
||||
m.Remark = "认证成功";
|
||||
} else {
|
||||
m.Remark = "认证失败";
|
||||
}
|
||||
} else {
|
||||
m.Remark = "未认证";
|
||||
}
|
||||
});
|
||||
var data = ret.ToApiResult();
|
||||
return data;
|
||||
}
|
||||
return Error("请输入关键字");
|
||||
|
||||
}
|
||||
|
||||
public async Task<ApiResult> UpdateAmount([FromBody] UpdateAmountRequest request)
|
||||
{
|
||||
request.OperateUserName = this.Request.GetManageUserInfo().LoginName;
|
||||
return await _userService.UpdateAmount(request);
|
||||
}
|
||||
|
||||
public async Task<ApiResult> UpdateTestCount([FromBody] UpdateTestCountRequest request)
|
||||
{
|
||||
var userEntity = await _userService.GetById(request.UserId);
|
||||
userEntity.TestCountLimit = request.Limit;
|
||||
await _userService.Update(userEntity);
|
||||
return Success();
|
||||
}
|
||||
|
||||
//public async Task<ApiResult> ChargeByTaoBao([FromBody] UpdateAmountRequest request)
|
||||
//{
|
||||
// return await _userService.UpdateAmount(request);
|
||||
//}
|
||||
|
||||
[HttpGet]
|
||||
public async Task<ApiResult> AmountDetail([FromQuery] int userId)
|
||||
{
|
||||
var model = await m_UserScoreService.Details(userId);
|
||||
return Success(model);
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
public async Task<ApiResult> AmountDetails([FromQuery] QueryAmountRequest request)
|
||||
{
|
||||
var model = await m_UserScoreService.Details(request);
|
||||
// model.List.ForEach(
|
||||
// m => {m.UserName = m.UserName.Substring(0,3) + "***";
|
||||
// });
|
||||
return model.ToApiResult();
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
public async Task<IActionResult> ExportAmount([FromQuery]QueryAmountRequest request)
|
||||
{
|
||||
var model = await m_UserScoreService.DetailsAll(request);
|
||||
|
||||
|
||||
var data = new ExcelData<UserScore>
|
||||
{
|
||||
SheetName = DateTime.Now.ToString("yyyy-MM-dd"),
|
||||
Data = model
|
||||
};
|
||||
|
||||
var title = new List<ExcelTitle>(){
|
||||
new ExcelTitle { Property = "CreateTime", Title = "创建日期",Format=(val)=>((DateTime) val).ToString("yyyy-MM-dd hh:mm:ss") },
|
||||
new ExcelTitle { Property = "UserName", Title = "用户" },
|
||||
new ExcelTitle { Property = "OperateUserName", Title = "操作人员" },
|
||||
new ExcelTitle { Property = "ScoreTypeName", Title = "资金项目" },
|
||||
new ExcelTitle { Property = "ScoreValue", Title = "金额" },
|
||||
new ExcelTitle { Property = "Remark", Title = "备注" },
|
||||
new ExcelTitle { Property = "RestAmount1", Title = "操作前金额" },
|
||||
new ExcelTitle { Property = "RestAmount2", Title = "操作后金额" }
|
||||
};
|
||||
var fileBytes = ExcelHelper.ExportListToExcel(data, title);
|
||||
|
||||
var fileName = $"{DateTime.Now.ToString("yyyyMMdd")}资金明细.xlsx";
|
||||
Response.Headers.Add("X-Suggested-Filename", fileName.UrlEncode());
|
||||
return File(fileBytes, "application/octet-stream", fileName);
|
||||
|
||||
}
|
||||
|
||||
|
||||
[HttpGet]
|
||||
public async Task<IActionResult> Export()
|
||||
{
|
||||
var ret = await _userService.GetAll(true);
|
||||
|
||||
var data = new ExcelData<User>
|
||||
{
|
||||
SheetName = DateTime.Now.ToString("yyyy-MM-dd"),
|
||||
Data = ret
|
||||
};
|
||||
|
||||
var title = new List<ExcelTitle>(){
|
||||
// new ExcelTitle { Property = "LoginCode", Title = "手机号" },
|
||||
new ExcelTitle { Property = "CreateTime", Title = "注册时间",Format=(val)=>((DateTime) val).ToString("yyyy-MM-dd hh:mm:ss") },
|
||||
new ExcelTitle { Property = "CreateType", Title = "注册方式", Format=(val)=>((UserCreateType)val).GetEnumDisplayName() },
|
||||
new ExcelTitle { Property = "RestAmount", Title = "余额"},
|
||||
new ExcelTitle { Property = "TestCountLimit", Title = "测试限额",Format=(val)=>((int)val)==0?3:(int)val },
|
||||
new ExcelTitle { Property = "UseTestCount", Title = "领用数",Format=(val)=>((int)val)==0?3:(int)val },
|
||||
// new ExcelTitle { Property = "Wx", Title = "微信"},
|
||||
// new ExcelTitle { Property = "QQ", Title = "QQ"},
|
||||
// new ExcelTitle { Property = "Email", Title = "Email"},
|
||||
// new ExcelTitle { Property = "TaoBao", Title = "淘宝"},
|
||||
// new ExcelTitle { Property = "WangWang", Title = "旺旺"},
|
||||
};
|
||||
var fileBytes = ExcelHelper.ExportListToExcel(data, title);
|
||||
|
||||
var fileName = $"{DateTime.Now.ToString("yyyyMMdd")}用户明细.xlsx";
|
||||
Response.Headers.Add("X-Suggested-Filename", fileName.UrlEncode());
|
||||
return File(fileBytes, "application/octet-stream", fileName);
|
||||
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
public async Task<ApiResult> SetManager([FromBody] SetManagerRequest request)
|
||||
{
|
||||
if (request.ManagerId == 0 || request.ManagerName.NotHas())
|
||||
{
|
||||
return Error("请选择客户经理");
|
||||
}
|
||||
|
||||
if (request.UserIds == null || request.UserIds.Count() == 0)
|
||||
{
|
||||
return Error("请选择用户");
|
||||
}
|
||||
|
||||
var users = await _userService.Query(m => request.UserIds.Contains(m.Id)).ToListAsync();
|
||||
|
||||
if (users != null)
|
||||
{
|
||||
users.ForEach(m =>
|
||||
{
|
||||
m.ManagerId = request.ManagerId;
|
||||
m.ManagerName = request.ManagerName;
|
||||
});
|
||||
await _userService.Update(users);
|
||||
}
|
||||
return Success();
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
public async Task<ApiResult> UpdateProfile([FromBody] UpdateProfileRequest request)
|
||||
{
|
||||
var userInfo = await _userService.GetById(request.UserId);
|
||||
userInfo.Profile = request.Profile;
|
||||
await _userService.Update(userInfo);
|
||||
return Success();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,148 +1,148 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo.Models
|
||||
{
|
||||
|
||||
#region 管理员
|
||||
public enum ManagerState
|
||||
{
|
||||
/// <summary>
|
||||
/// 禁用
|
||||
/// </summary>
|
||||
[Display(Name = "未启用")]
|
||||
Disabled = 0,
|
||||
/// <summary>
|
||||
/// 启用
|
||||
/// </summary>
|
||||
[Display(Name = "启用")]
|
||||
Enabled = 1
|
||||
}
|
||||
public enum AgainTokenType
|
||||
{
|
||||
/// <summary>
|
||||
/// 刷新过期时间
|
||||
/// </summary>
|
||||
[Display(Name = "刷新token过期时间")]
|
||||
Expire = 0,
|
||||
/// <summary>
|
||||
/// 刷新管理项目
|
||||
/// </summary>
|
||||
[Display(Name = "刷新管理项目")]
|
||||
Project = 1
|
||||
}
|
||||
#endregion
|
||||
|
||||
/// <summary>
|
||||
/// 用户注册来源
|
||||
/// </summary>
|
||||
public enum UserCreateType
|
||||
{
|
||||
[Display(Name = "管理员添加")]
|
||||
ManagerAdd = 1,
|
||||
[Display(Name = "用户注册")]
|
||||
UserRegist = 2,
|
||||
[Display(Name = "淘宝注册")]
|
||||
TaoBaoRegist = 3,
|
||||
}
|
||||
|
||||
public enum ScoreType
|
||||
{
|
||||
[Display(Name = "管理员充值")]
|
||||
ManagerAdd = 1,
|
||||
[Display(Name = "管理员扣除")]
|
||||
ManagerDeduct = 2,
|
||||
[Display(Name = "淘宝充值")]
|
||||
TaoBaoAdd = 3,
|
||||
[Display(Name = "淘宝退款")]
|
||||
TaoBaoRefund = 4,
|
||||
[Display(Name = "账号退款")]
|
||||
AccountRefund = 5,
|
||||
|
||||
[Display(Name = "账号付款")]
|
||||
Pay = 6,
|
||||
|
||||
[Display(Name = "用户充值")]
|
||||
UserCharge = 7,
|
||||
|
||||
[Display(Name = "用户提现扣除")]
|
||||
UserCashOut = 8,
|
||||
[Display(Name = "提现被拒退还")]
|
||||
ReturnMoney = 9,
|
||||
}
|
||||
|
||||
public enum UPayChannel
|
||||
{
|
||||
/// <summary>
|
||||
/// 微信H5
|
||||
/// </summary>
|
||||
[Display(Name = "微信H5")]
|
||||
WxH5 = 10,
|
||||
/// <summary>
|
||||
/// 微信公众号
|
||||
/// </summary>
|
||||
[Display(Name = "微信公众号")]
|
||||
WxMp = 20,
|
||||
|
||||
/// <summary>
|
||||
/// 微信公众号
|
||||
/// </summary>
|
||||
[Display(Name = "微信Pc")]
|
||||
WxPc = 30,
|
||||
|
||||
/// <summary>
|
||||
/// 支付宝H5
|
||||
/// </summary>
|
||||
[Display(Name = "支付宝H5")]
|
||||
AliH5 = 40,
|
||||
/// <summary>
|
||||
/// 支付宝
|
||||
/// </summary>
|
||||
[Display(Name = "支付宝Pc")]
|
||||
AliPc = 50,
|
||||
}
|
||||
|
||||
public enum UOrderStatus
|
||||
{
|
||||
[Display(Name = "默认")]
|
||||
None = 0,
|
||||
/// <summary>
|
||||
/// 待支付
|
||||
/// </summary>
|
||||
[Display(Name = "待付款")]
|
||||
NoPay = 10,
|
||||
/// <summary>
|
||||
/// 已支付
|
||||
/// </summary>
|
||||
[Display(Name = "已付款")]
|
||||
PayOk = 20,
|
||||
/// <summary>
|
||||
/// 申请退款
|
||||
/// </summary>
|
||||
[Display(Name = "申请退款")]
|
||||
RequestRefund = 30,
|
||||
/// <summary>
|
||||
/// 人工退款
|
||||
/// </summary>
|
||||
[Display(Name = "人工退款")]
|
||||
UserRefundOver = 40,
|
||||
/// <summary>
|
||||
/// 自送退款
|
||||
/// </summary>
|
||||
[Display(Name = "自动退款")]
|
||||
AutoRefundOver = 50,
|
||||
/// <summary>
|
||||
/// 订单超时关闭
|
||||
/// </summary>
|
||||
[Display(Name = "超时关闭")]
|
||||
TimeOutClose = 80,
|
||||
|
||||
/// <summary>
|
||||
/// 订单完成
|
||||
/// </summary>
|
||||
[Display(Name = "订单完成")]
|
||||
Complete = 90,
|
||||
|
||||
}
|
||||
|
||||
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo.Models
|
||||
{
|
||||
|
||||
#region 管理员
|
||||
public enum ManagerState
|
||||
{
|
||||
/// <summary>
|
||||
/// 禁用
|
||||
/// </summary>
|
||||
[Display(Name = "未启用")]
|
||||
Disabled = 0,
|
||||
/// <summary>
|
||||
/// 启用
|
||||
/// </summary>
|
||||
[Display(Name = "启用")]
|
||||
Enabled = 1
|
||||
}
|
||||
public enum AgainTokenType
|
||||
{
|
||||
/// <summary>
|
||||
/// 刷新过期时间
|
||||
/// </summary>
|
||||
[Display(Name = "刷新token过期时间")]
|
||||
Expire = 0,
|
||||
/// <summary>
|
||||
/// 刷新管理项目
|
||||
/// </summary>
|
||||
[Display(Name = "刷新管理项目")]
|
||||
Project = 1
|
||||
}
|
||||
#endregion
|
||||
|
||||
/// <summary>
|
||||
/// 用户注册来源
|
||||
/// </summary>
|
||||
public enum UserCreateType
|
||||
{
|
||||
[Display(Name = "管理员添加")]
|
||||
ManagerAdd = 1,
|
||||
[Display(Name = "用户注册")]
|
||||
UserRegist = 2,
|
||||
[Display(Name = "淘宝注册")]
|
||||
TaoBaoRegist = 3,
|
||||
}
|
||||
|
||||
public enum ScoreType
|
||||
{
|
||||
[Display(Name = "管理员充值")]
|
||||
ManagerAdd = 1,
|
||||
[Display(Name = "管理员扣除")]
|
||||
ManagerDeduct = 2,
|
||||
[Display(Name = "淘宝充值")]
|
||||
TaoBaoAdd = 3,
|
||||
[Display(Name = "淘宝退款")]
|
||||
TaoBaoRefund = 4,
|
||||
[Display(Name = "账号退款")]
|
||||
AccountRefund = 5,
|
||||
|
||||
[Display(Name = "账号付款")]
|
||||
Pay = 6,
|
||||
|
||||
[Display(Name = "用户充值")]
|
||||
UserCharge = 7,
|
||||
|
||||
[Display(Name = "用户提现扣除")]
|
||||
UserCashOut = 8,
|
||||
[Display(Name = "提现被拒退还")]
|
||||
ReturnMoney = 9,
|
||||
}
|
||||
|
||||
public enum UPayChannel
|
||||
{
|
||||
/// <summary>
|
||||
/// 微信H5
|
||||
/// </summary>
|
||||
[Display(Name = "微信H5")]
|
||||
WxH5 = 10,
|
||||
/// <summary>
|
||||
/// 微信公众号
|
||||
/// </summary>
|
||||
[Display(Name = "微信公众号")]
|
||||
WxMp = 20,
|
||||
|
||||
/// <summary>
|
||||
/// 微信公众号
|
||||
/// </summary>
|
||||
[Display(Name = "微信Pc")]
|
||||
WxPc = 30,
|
||||
|
||||
/// <summary>
|
||||
/// 支付宝H5
|
||||
/// </summary>
|
||||
[Display(Name = "支付宝H5")]
|
||||
AliH5 = 40,
|
||||
/// <summary>
|
||||
/// 支付宝
|
||||
/// </summary>
|
||||
[Display(Name = "支付宝Pc")]
|
||||
AliPc = 50,
|
||||
}
|
||||
|
||||
public enum UOrderStatus
|
||||
{
|
||||
[Display(Name = "默认")]
|
||||
None = 0,
|
||||
/// <summary>
|
||||
/// 待支付
|
||||
/// </summary>
|
||||
[Display(Name = "待付款")]
|
||||
NoPay = 10,
|
||||
/// <summary>
|
||||
/// 已支付
|
||||
/// </summary>
|
||||
[Display(Name = "已付款")]
|
||||
PayOk = 20,
|
||||
/// <summary>
|
||||
/// 申请退款
|
||||
/// </summary>
|
||||
[Display(Name = "申请退款")]
|
||||
RequestRefund = 30,
|
||||
/// <summary>
|
||||
/// 人工退款
|
||||
/// </summary>
|
||||
[Display(Name = "人工退款")]
|
||||
UserRefundOver = 40,
|
||||
/// <summary>
|
||||
/// 自送退款
|
||||
/// </summary>
|
||||
[Display(Name = "自动退款")]
|
||||
AutoRefundOver = 50,
|
||||
/// <summary>
|
||||
/// 订单超时关闭
|
||||
/// </summary>
|
||||
[Display(Name = "超时关闭")]
|
||||
TimeOutClose = 80,
|
||||
|
||||
/// <summary>
|
||||
/// 订单完成
|
||||
/// </summary>
|
||||
[Display(Name = "订单完成")]
|
||||
Complete = 90,
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -1,99 +1,99 @@
|
||||
using Hncore.Infrastructure.DDD;
|
||||
using System;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo.Models
|
||||
{
|
||||
public partial class Manager : EntityWithTime<int>, ITenant
|
||||
{
|
||||
/// <summary>
|
||||
/// 所属物业ID
|
||||
/// <summary>
|
||||
public int TenantId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 更新人ID
|
||||
/// <summary>
|
||||
public int UpdatorId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建人ID
|
||||
/// <summary>
|
||||
public int CreatorId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 管理员登录名[16
|
||||
/// </summary>
|
||||
public string LoginCode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 登录密码[20]
|
||||
/// </summary>
|
||||
public string Password { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 管理员角色
|
||||
/// </summary>
|
||||
public int RoleId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 状态
|
||||
/// </summary>
|
||||
public int State { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 头像地址[30
|
||||
/// </summary>
|
||||
public string PhotoUrl { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 微信openid[50]
|
||||
/// </summary>
|
||||
public string WxOpenid { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 微信昵称
|
||||
/// </summary>
|
||||
public string WxNickName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 微信头像
|
||||
/// </summary>
|
||||
public string WxImage { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 注册来源
|
||||
/// </summary>
|
||||
public int Source { get; set; }
|
||||
/// <summary>
|
||||
/// 系统ID
|
||||
/// </summary>
|
||||
public int systemid { get; set; }
|
||||
/// <summary>
|
||||
/// 管理员手机号
|
||||
/// </summary>
|
||||
public string Phone { get; set; }
|
||||
/// <summary>
|
||||
/// 账号code
|
||||
/// </summary>
|
||||
public string ManagerCode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 管理员姓名
|
||||
/// </summary>
|
||||
public string RealName { get; set; }
|
||||
/// <summary>
|
||||
/// 电子邮箱
|
||||
/// </summary>
|
||||
public string Email { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 是否主管理员权限
|
||||
/// </summary>
|
||||
public int IsRoot { get; set; }
|
||||
|
||||
public int SystemId { get; set; }
|
||||
|
||||
public string Tags { get; set; }
|
||||
}
|
||||
using Hncore.Infrastructure.DDD;
|
||||
using System;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo.Models
|
||||
{
|
||||
public partial class Manager : EntityWithTime<int>, ITenant
|
||||
{
|
||||
/// <summary>
|
||||
/// 所属物业ID
|
||||
/// <summary>
|
||||
public int TenantId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 更新人ID
|
||||
/// <summary>
|
||||
public int UpdatorId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建人ID
|
||||
/// <summary>
|
||||
public int CreatorId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 管理员登录名[16
|
||||
/// </summary>
|
||||
public string LoginCode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 登录密码[20]
|
||||
/// </summary>
|
||||
public string Password { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 管理员角色
|
||||
/// </summary>
|
||||
public int RoleId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 状态
|
||||
/// </summary>
|
||||
public int State { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 头像地址[30
|
||||
/// </summary>
|
||||
public string PhotoUrl { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 微信openid[50]
|
||||
/// </summary>
|
||||
public string WxOpenid { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 微信昵称
|
||||
/// </summary>
|
||||
public string WxNickName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 微信头像
|
||||
/// </summary>
|
||||
public string WxImage { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 注册来源
|
||||
/// </summary>
|
||||
public int Source { get; set; }
|
||||
/// <summary>
|
||||
/// 系统ID
|
||||
/// </summary>
|
||||
public int systemid { get; set; }
|
||||
/// <summary>
|
||||
/// 管理员手机号
|
||||
/// </summary>
|
||||
public string Phone { get; set; }
|
||||
/// <summary>
|
||||
/// 账号code
|
||||
/// </summary>
|
||||
public string ManagerCode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 管理员姓名
|
||||
/// </summary>
|
||||
public string RealName { get; set; }
|
||||
/// <summary>
|
||||
/// 电子邮箱
|
||||
/// </summary>
|
||||
public string Email { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 是否主管理员权限
|
||||
/// </summary>
|
||||
public int IsRoot { get; set; }
|
||||
|
||||
public int SystemId { get; set; }
|
||||
|
||||
public string Tags { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,88 +1,88 @@
|
||||
using Hncore.Infrastructure.DDD;
|
||||
using System;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo.Models
|
||||
{
|
||||
public partial class User : EntityWithTime<int>, ITenant
|
||||
{
|
||||
/// <summary>
|
||||
/// ID
|
||||
/// <summary>
|
||||
|
||||
public string apikey { get; set; }
|
||||
public int TenantId { get; set; }
|
||||
public int agent_id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 管理员登录名[16
|
||||
/// </summary>
|
||||
public string LoginCode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 登录密码[20]
|
||||
/// </summary>
|
||||
public string Password { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 微信昵称
|
||||
/// </summary>
|
||||
public string Name { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 微信头像
|
||||
/// </summary>
|
||||
public string Phone { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 注册来源
|
||||
/// </summary>
|
||||
public string Profile { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 状态
|
||||
/// </summary>
|
||||
public int Enabled { get; set; } = 1;
|
||||
|
||||
/// <summary>
|
||||
/// 头像地址[30
|
||||
/// </summary>
|
||||
public string PhotoUrl { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 是否主管理员权限
|
||||
/// </summary>
|
||||
public DateTime? LastLoginDate { get; set; } = DateTime.Now;
|
||||
|
||||
public int Sex { get; set; }
|
||||
|
||||
//1:管理员添加 2:自己注册 3:来自淘宝
|
||||
public UserCreateType CreateType { get; set; }= UserCreateType.ManagerAdd;
|
||||
|
||||
public int ProductAccountCount { get; set; } = 0;
|
||||
|
||||
public int ExpiredProductAccountCount { get; set; } = 0;
|
||||
|
||||
public decimal RestAmount { get; set; } = 0;
|
||||
|
||||
public decimal ConsumeAmount { get; set; } = 0;
|
||||
|
||||
public string Remark { get; set; }
|
||||
public string Wx { get; set; }
|
||||
public string QQ { get; set; }
|
||||
public string Email { get; set; }
|
||||
public string TaoBao { get; set; }
|
||||
public string WangWang { get; set; }
|
||||
|
||||
public int? TestCountLimit { get; set; } = 0;
|
||||
public int? UseTestCount { get; set; } = 0;
|
||||
|
||||
public int? ManagerId { get; set; } = 0;
|
||||
public string ManagerName { get; set; }
|
||||
public string id_code { get; set; }
|
||||
public int is_verify { get; set; }
|
||||
public int is_agent { get; set; }
|
||||
public int parent_id { get; set; }
|
||||
}
|
||||
using Hncore.Infrastructure.DDD;
|
||||
using System;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo.Models
|
||||
{
|
||||
public partial class User : EntityWithTime<int>, ITenant
|
||||
{
|
||||
/// <summary>
|
||||
/// ID
|
||||
/// <summary>
|
||||
|
||||
public string apikey { get; set; }
|
||||
public int TenantId { get; set; }
|
||||
public int agent_id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 管理员登录名[16
|
||||
/// </summary>
|
||||
public string LoginCode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 登录密码[20]
|
||||
/// </summary>
|
||||
public string Password { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 微信昵称
|
||||
/// </summary>
|
||||
public string Name { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 微信头像
|
||||
/// </summary>
|
||||
public string Phone { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 注册来源
|
||||
/// </summary>
|
||||
public string Profile { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 状态
|
||||
/// </summary>
|
||||
public int Enabled { get; set; } = 1;
|
||||
|
||||
/// <summary>
|
||||
/// 头像地址[30
|
||||
/// </summary>
|
||||
public string PhotoUrl { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 是否主管理员权限
|
||||
/// </summary>
|
||||
public DateTime? LastLoginDate { get; set; } = DateTime.Now;
|
||||
|
||||
public int Sex { get; set; }
|
||||
|
||||
//1:管理员添加 2:自己注册 3:来自淘宝
|
||||
public UserCreateType CreateType { get; set; }= UserCreateType.ManagerAdd;
|
||||
|
||||
public int ProductAccountCount { get; set; } = 0;
|
||||
|
||||
public int ExpiredProductAccountCount { get; set; } = 0;
|
||||
|
||||
public decimal RestAmount { get; set; } = 0;
|
||||
|
||||
public decimal ConsumeAmount { get; set; } = 0;
|
||||
|
||||
public string Remark { get; set; }
|
||||
public string Wx { get; set; }
|
||||
public string QQ { get; set; }
|
||||
public string Email { get; set; }
|
||||
public string TaoBao { get; set; }
|
||||
public string WangWang { get; set; }
|
||||
|
||||
public int? TestCountLimit { get; set; } = 0;
|
||||
public int? UseTestCount { get; set; } = 0;
|
||||
|
||||
public int? ManagerId { get; set; } = 0;
|
||||
public string ManagerName { get; set; }
|
||||
public string id_code { get; set; }
|
||||
public int is_verify { get; set; }
|
||||
public int is_agent { get; set; }
|
||||
public int parent_id { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,24 +1,24 @@
|
||||
using Hncore.Infrastructure.DDD;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo.Models
|
||||
{
|
||||
public partial class UserChargeOrderEntity : EntityWithTime<int>
|
||||
{
|
||||
public int TenantId { get; set; }
|
||||
public int UserId { get; set; }
|
||||
public string UserName { get; set; }
|
||||
public string OrderName { get; set; }
|
||||
public string OrderNo { get; set; }
|
||||
public string TradeNo { get; set; }
|
||||
public UOrderStatus OrderState { get; set; }
|
||||
public UPayChannel PayChannel { get; set; } = UPayChannel.WxPc;
|
||||
public int PayState { get; set; } = 0;
|
||||
public decimal OrderAmount { get; set; }
|
||||
public decimal PaymentAmount { get; set; }
|
||||
public int ChannelType { get; set; }
|
||||
public string Channel { get; set; }
|
||||
public string Remark { get; set; }
|
||||
}
|
||||
}
|
||||
using Hncore.Infrastructure.DDD;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo.Models
|
||||
{
|
||||
public partial class UserChargeOrderEntity : EntityWithTime<int>
|
||||
{
|
||||
public int TenantId { get; set; }
|
||||
public int UserId { get; set; }
|
||||
public string UserName { get; set; }
|
||||
public string OrderName { get; set; }
|
||||
public string OrderNo { get; set; }
|
||||
public string TradeNo { get; set; }
|
||||
public UOrderStatus OrderState { get; set; }
|
||||
public UPayChannel PayChannel { get; set; } = UPayChannel.WxPc;
|
||||
public int PayState { get; set; } = 0;
|
||||
public decimal OrderAmount { get; set; }
|
||||
public decimal PaymentAmount { get; set; }
|
||||
public int ChannelType { get; set; }
|
||||
public string Channel { get; set; }
|
||||
public string Remark { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,72 +1,72 @@
|
||||
using Hncore.Infrastructure.EF;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using System;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo.Models
|
||||
{
|
||||
public class UserDbContext : DbContextBase
|
||||
{
|
||||
public UserDbContext(DbContextOptions<UserDbContext> options, IHttpContextAccessor httpContextAccessor) :
|
||||
base(options, httpContextAccessor)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
||||
{
|
||||
modelBuilder.Entity<Manager>(entity =>
|
||||
{
|
||||
entity.ToTable("manager");
|
||||
entity.HasKey(t => t.Id);
|
||||
entity.Property(t => t.Id).ValueGeneratedOnAdd();
|
||||
});
|
||||
modelBuilder.Entity<User>(entity =>
|
||||
{
|
||||
entity.ToTable("user");
|
||||
entity.HasKey(t => t.Id);
|
||||
entity.Property(t => t.Id).ValueGeneratedOnAdd();
|
||||
});
|
||||
//modelBuilder.Entity<etor_authority_role>(entity =>
|
||||
//{
|
||||
// entity.ToTable("Wx_App");
|
||||
// entity.HasKey(t => t.Id);
|
||||
// entity.Property(t => t.Id).ValueGeneratedOnAdd();
|
||||
//});
|
||||
//modelBuilder.Entity<etor_authority_managerdatadomain>(entity =>
|
||||
//{
|
||||
// entity.ToTable("Wx_App");
|
||||
// entity.HasKey(t => t.Id);
|
||||
// entity.Property(t => t.Id).ValueGeneratedOnAdd();
|
||||
//});
|
||||
modelBuilder.Entity<WxAppEntity>(entity =>
|
||||
{
|
||||
entity.ToTable("Wx_App");
|
||||
entity.HasKey(t => t.Id);
|
||||
entity.Property(t => t.Id).ValueGeneratedOnAdd();
|
||||
});
|
||||
modelBuilder.Entity<WxAppUserEntity>(entity =>
|
||||
{
|
||||
entity.ToTable("wx_app_user");
|
||||
entity.HasKey(t => t.Id);
|
||||
entity.Property(t => t.Id).ValueGeneratedOnAdd();
|
||||
});
|
||||
|
||||
modelBuilder.Entity<UserScore>(entity =>
|
||||
{
|
||||
entity.ToTable("user_score");
|
||||
entity.HasKey(t => t.Id);
|
||||
entity.Property(t => t.Id).ValueGeneratedOnAdd();
|
||||
});
|
||||
|
||||
modelBuilder.Entity<UserChargeOrderEntity>(entity =>
|
||||
{
|
||||
entity.ToTable("user_charge_order");
|
||||
entity.HasKey(t => t.Id);
|
||||
entity.Property(t => t.Id).ValueGeneratedOnAdd();
|
||||
});
|
||||
|
||||
base.OnModelCreating(modelBuilder);
|
||||
}
|
||||
}
|
||||
using Hncore.Infrastructure.EF;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using System;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo.Models
|
||||
{
|
||||
public class UserDbContext : DbContextBase
|
||||
{
|
||||
public UserDbContext(DbContextOptions<UserDbContext> options, IHttpContextAccessor httpContextAccessor) :
|
||||
base(options, httpContextAccessor)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
||||
{
|
||||
modelBuilder.Entity<Manager>(entity =>
|
||||
{
|
||||
entity.ToTable("manager");
|
||||
entity.HasKey(t => t.Id);
|
||||
entity.Property(t => t.Id).ValueGeneratedOnAdd();
|
||||
});
|
||||
modelBuilder.Entity<User>(entity =>
|
||||
{
|
||||
entity.ToTable("user");
|
||||
entity.HasKey(t => t.Id);
|
||||
entity.Property(t => t.Id).ValueGeneratedOnAdd();
|
||||
});
|
||||
//modelBuilder.Entity<etor_authority_role>(entity =>
|
||||
//{
|
||||
// entity.ToTable("Wx_App");
|
||||
// entity.HasKey(t => t.Id);
|
||||
// entity.Property(t => t.Id).ValueGeneratedOnAdd();
|
||||
//});
|
||||
//modelBuilder.Entity<etor_authority_managerdatadomain>(entity =>
|
||||
//{
|
||||
// entity.ToTable("Wx_App");
|
||||
// entity.HasKey(t => t.Id);
|
||||
// entity.Property(t => t.Id).ValueGeneratedOnAdd();
|
||||
//});
|
||||
modelBuilder.Entity<WxAppEntity>(entity =>
|
||||
{
|
||||
entity.ToTable("Wx_App");
|
||||
entity.HasKey(t => t.Id);
|
||||
entity.Property(t => t.Id).ValueGeneratedOnAdd();
|
||||
});
|
||||
modelBuilder.Entity<WxAppUserEntity>(entity =>
|
||||
{
|
||||
entity.ToTable("wx_app_user");
|
||||
entity.HasKey(t => t.Id);
|
||||
entity.Property(t => t.Id).ValueGeneratedOnAdd();
|
||||
});
|
||||
|
||||
modelBuilder.Entity<UserScore>(entity =>
|
||||
{
|
||||
entity.ToTable("user_score");
|
||||
entity.HasKey(t => t.Id);
|
||||
entity.Property(t => t.Id).ValueGeneratedOnAdd();
|
||||
});
|
||||
|
||||
modelBuilder.Entity<UserChargeOrderEntity>(entity =>
|
||||
{
|
||||
entity.ToTable("user_charge_order");
|
||||
entity.HasKey(t => t.Id);
|
||||
entity.Property(t => t.Id).ValueGeneratedOnAdd();
|
||||
});
|
||||
|
||||
base.OnModelCreating(modelBuilder);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,36 +1,36 @@
|
||||
using Hncore.Infrastructure.DDD;
|
||||
using System;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo.Models
|
||||
{
|
||||
public partial class UserScore : EntityWithTime<int>, ITenant
|
||||
{
|
||||
public int TenantId { get; set; } = 0;
|
||||
|
||||
public int UserId { get; set; }
|
||||
|
||||
public string UserName { get; set; }
|
||||
|
||||
public string OperateUserName { get; set; }
|
||||
|
||||
public ScoreType ScoreType { get; set; }
|
||||
|
||||
public string ScoreTypeName { get; set; }
|
||||
|
||||
public decimal ScoreValue { get; set; } = 0;
|
||||
|
||||
public string ScoreTarget { get; set; }
|
||||
|
||||
public string Remark { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Ïû·ÑǰÓà¶î
|
||||
/// </summary>
|
||||
public decimal? RestAmount1 { get; set; } = 0;
|
||||
|
||||
/// <summary>
|
||||
/// Ïû·ÑºóÓà¶î
|
||||
/// </summary>
|
||||
public decimal? RestAmount2 { get; set; } = 0;
|
||||
}
|
||||
using Hncore.Infrastructure.DDD;
|
||||
using System;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo.Models
|
||||
{
|
||||
public partial class UserScore : EntityWithTime<int>, ITenant
|
||||
{
|
||||
public int TenantId { get; set; } = 0;
|
||||
|
||||
public int UserId { get; set; }
|
||||
|
||||
public string UserName { get; set; }
|
||||
|
||||
public string OperateUserName { get; set; }
|
||||
|
||||
public ScoreType ScoreType { get; set; }
|
||||
|
||||
public string ScoreTypeName { get; set; }
|
||||
|
||||
public decimal ScoreValue { get; set; } = 0;
|
||||
|
||||
public string ScoreTarget { get; set; }
|
||||
|
||||
public string Remark { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Ïû·ÑǰÓà¶î
|
||||
/// </summary>
|
||||
public decimal? RestAmount1 { get; set; } = 0;
|
||||
|
||||
/// <summary>
|
||||
/// Ïû·ÑºóÓà¶î
|
||||
/// </summary>
|
||||
public decimal? RestAmount2 { get; set; } = 0;
|
||||
}
|
||||
}
|
||||
@@ -1,28 +1,28 @@
|
||||
using Hncore.Infrastructure.DDD;
|
||||
using System;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo.Models
|
||||
{
|
||||
public partial class WxAppEntity : EntityWithDelete<int>, ITenant
|
||||
{
|
||||
public int TenantId { get; set; }
|
||||
public int StoreId { get; set; }
|
||||
public string OpenAppId { get; set; }
|
||||
public string Appid { get; set; }
|
||||
public int AppType { get; set; }
|
||||
|
||||
public string HeadImg { get; set; }
|
||||
public string NickName { get; set; }
|
||||
public string UserName { get; set; }
|
||||
public string PrincipalName { get; set; }
|
||||
public string Bussinessinfo { get; set; }
|
||||
public string Createtime { get; set; }
|
||||
|
||||
public int AuthorizerState { get; set; }
|
||||
public string RefreshToken { get; set; }
|
||||
|
||||
public int ExpiresIn { get; set; }
|
||||
|
||||
public DateTime UpdateTime { get; set; } = DateTime.Now;
|
||||
}
|
||||
}
|
||||
using Hncore.Infrastructure.DDD;
|
||||
using System;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo.Models
|
||||
{
|
||||
public partial class WxAppEntity : EntityWithDelete<int>, ITenant
|
||||
{
|
||||
public int TenantId { get; set; }
|
||||
public int StoreId { get; set; }
|
||||
public string OpenAppId { get; set; }
|
||||
public string Appid { get; set; }
|
||||
public int AppType { get; set; }
|
||||
|
||||
public string HeadImg { get; set; }
|
||||
public string NickName { get; set; }
|
||||
public string UserName { get; set; }
|
||||
public string PrincipalName { get; set; }
|
||||
public string Bussinessinfo { get; set; }
|
||||
public string Createtime { get; set; }
|
||||
|
||||
public int AuthorizerState { get; set; }
|
||||
public string RefreshToken { get; set; }
|
||||
|
||||
public int ExpiresIn { get; set; }
|
||||
|
||||
public DateTime UpdateTime { get; set; } = DateTime.Now;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,31 +1,31 @@
|
||||
using Hncore.Infrastructure.DDD;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo.Models
|
||||
{
|
||||
public partial class WxAppUserEntity : EntityWithDelete<int>, ITenant
|
||||
{
|
||||
public int TenantId { get; set; } = 0;
|
||||
public int StoreId { get; set; } = 0;
|
||||
public string Appid { get; set; }
|
||||
public int AppType { get; set; } = 0;
|
||||
public int UserId { get; set; }
|
||||
public string Unionid { get; set; }
|
||||
public string Openid { get; set; }
|
||||
public string NickName { get; set; }
|
||||
public string UserName { get; set; }
|
||||
public string HeadImgUrl { get; set; }
|
||||
public int Sex { get; set; }
|
||||
public string City { get; set; }
|
||||
public string Country { get; set; }
|
||||
public int IsSubscribe { get; set; }
|
||||
public int InvateUserId { get; set; }
|
||||
public DateTime CreateTime { get; set; } = DateTime.Now;
|
||||
|
||||
public DateTime UpdateTime{ get; set; } = DateTime.Now;
|
||||
|
||||
}
|
||||
}
|
||||
using Hncore.Infrastructure.DDD;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo.Models
|
||||
{
|
||||
public partial class WxAppUserEntity : EntityWithDelete<int>, ITenant
|
||||
{
|
||||
public int TenantId { get; set; } = 0;
|
||||
public int StoreId { get; set; } = 0;
|
||||
public string Appid { get; set; }
|
||||
public int AppType { get; set; } = 0;
|
||||
public int UserId { get; set; }
|
||||
public string Unionid { get; set; }
|
||||
public string Openid { get; set; }
|
||||
public string NickName { get; set; }
|
||||
public string UserName { get; set; }
|
||||
public string HeadImgUrl { get; set; }
|
||||
public int Sex { get; set; }
|
||||
public string City { get; set; }
|
||||
public string Country { get; set; }
|
||||
public int IsSubscribe { get; set; }
|
||||
public int InvateUserId { get; set; }
|
||||
public DateTime CreateTime { get; set; } = DateTime.Now;
|
||||
|
||||
public DateTime UpdateTime{ get; set; } = DateTime.Now;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,53 +1,53 @@
|
||||
using System;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo.Models
|
||||
{
|
||||
public class etor_authority_managerdatadomain
|
||||
{
|
||||
/// <summary>
|
||||
/// 流水id
|
||||
/// <summary>
|
||||
public int ID { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建时间
|
||||
/// <summary>
|
||||
public DateTime CreateTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 更新时间
|
||||
/// <summary>
|
||||
public DateTime UpdateTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 删除标记
|
||||
/// <summary>
|
||||
public int DeleteTag { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 所属物业ID
|
||||
/// <summary>
|
||||
public int owner_id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 更新人ID
|
||||
/// <summary>
|
||||
public int updatorid { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建人ID
|
||||
/// <summary>
|
||||
public int creatorid { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 管理员id
|
||||
/// </summary>
|
||||
public int managerid { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 小区/写字楼编码
|
||||
/// </summary>
|
||||
public int projectcode { get; set; }
|
||||
|
||||
}
|
||||
using System;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo.Models
|
||||
{
|
||||
public class etor_authority_managerdatadomain
|
||||
{
|
||||
/// <summary>
|
||||
/// 流水id
|
||||
/// <summary>
|
||||
public int ID { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建时间
|
||||
/// <summary>
|
||||
public DateTime CreateTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 更新时间
|
||||
/// <summary>
|
||||
public DateTime UpdateTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 删除标记
|
||||
/// <summary>
|
||||
public int DeleteTag { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 所属物业ID
|
||||
/// <summary>
|
||||
public int owner_id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 更新人ID
|
||||
/// <summary>
|
||||
public int updatorid { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建人ID
|
||||
/// <summary>
|
||||
public int creatorid { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 管理员id
|
||||
/// </summary>
|
||||
public int managerid { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 小区/写字楼编码
|
||||
/// </summary>
|
||||
public int projectcode { get; set; }
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,61 +1,61 @@
|
||||
using System;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo.Models
|
||||
{
|
||||
public class etor_authority_role
|
||||
{
|
||||
/// <summary>
|
||||
/// 角色id
|
||||
/// <summary>
|
||||
public int ID { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建时间
|
||||
/// <summary>
|
||||
public DateTime CreateTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 更新时间
|
||||
/// <summary>
|
||||
public DateTime UpdateTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 删除标记
|
||||
/// <summary>
|
||||
public int DeleteTag { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 所属物业ID
|
||||
/// <summary>
|
||||
public int owner_id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 更新人ID
|
||||
/// <summary>
|
||||
public int updatorid { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建人ID
|
||||
/// <summary>
|
||||
public int creatorid { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 角色名称[16]
|
||||
/// </summary>
|
||||
public string rolename { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 状态
|
||||
/// </summary>
|
||||
public byte state { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 是否物业的根角色(超级管理员角色)
|
||||
/// </summary>
|
||||
public bool isroot { get; set; }
|
||||
/// <summary>
|
||||
/// 系统ID
|
||||
/// </summary>
|
||||
public int systemid { get; set; }
|
||||
}
|
||||
using System;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo.Models
|
||||
{
|
||||
public class etor_authority_role
|
||||
{
|
||||
/// <summary>
|
||||
/// 角色id
|
||||
/// <summary>
|
||||
public int ID { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建时间
|
||||
/// <summary>
|
||||
public DateTime CreateTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 更新时间
|
||||
/// <summary>
|
||||
public DateTime UpdateTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 删除标记
|
||||
/// <summary>
|
||||
public int DeleteTag { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 所属物业ID
|
||||
/// <summary>
|
||||
public int owner_id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 更新人ID
|
||||
/// <summary>
|
||||
public int updatorid { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建人ID
|
||||
/// <summary>
|
||||
public int creatorid { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 角色名称[16]
|
||||
/// </summary>
|
||||
public string rolename { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 状态
|
||||
/// </summary>
|
||||
public byte state { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 是否物业的根角色(超级管理员角色)
|
||||
/// </summary>
|
||||
public bool isroot { get; set; }
|
||||
/// <summary>
|
||||
/// 系统ID
|
||||
/// </summary>
|
||||
public int systemid { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,98 +1,98 @@
|
||||
namespace Etor.PSIP.BaseInfo.Models
|
||||
{
|
||||
using System;
|
||||
|
||||
/// <summary>
|
||||
/// 缴费项目关联表
|
||||
/// </summary>
|
||||
public partial class etor_property_feeitem_relation
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// 流水id
|
||||
/// <summary>
|
||||
public int ID { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建时间
|
||||
/// <summary>
|
||||
public DateTime CreateTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 更新时间
|
||||
/// <summary>
|
||||
public DateTime UpdateTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 删除标记
|
||||
/// <summary>
|
||||
public int DeleteTag { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 所属物业ID
|
||||
/// <summary>
|
||||
public int owner_id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 更新人ID
|
||||
/// <summary>
|
||||
public int updatorid { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建人ID
|
||||
/// <summary>
|
||||
public int creatorid { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 收费项目id
|
||||
/// </summary>
|
||||
public int feeitemid { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 收费标准id
|
||||
/// </summary>
|
||||
public int feestandardid { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 开始时间
|
||||
/// </summary>
|
||||
public DateTime begintime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 是否有结束时间
|
||||
/// </summary>
|
||||
public bool islong { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 金额计算方式为每户单独输入
|
||||
/// </summary>
|
||||
public decimal amount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 结束时间
|
||||
/// </summary>
|
||||
public DateTime? endtime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 缴费类型 房屋
|
||||
/// </summary>
|
||||
public int sourcetype { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 缴费 房屋
|
||||
/// </summary>
|
||||
public string sourcecode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 备注[100]
|
||||
/// </summary>
|
||||
public string bak { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 账单生成时间
|
||||
/// </summary>
|
||||
public DateTime billtime { get; set; }
|
||||
|
||||
}
|
||||
|
||||
namespace Etor.PSIP.BaseInfo.Models
|
||||
{
|
||||
using System;
|
||||
|
||||
/// <summary>
|
||||
/// 缴费项目关联表
|
||||
/// </summary>
|
||||
public partial class etor_property_feeitem_relation
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// 流水id
|
||||
/// <summary>
|
||||
public int ID { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建时间
|
||||
/// <summary>
|
||||
public DateTime CreateTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 更新时间
|
||||
/// <summary>
|
||||
public DateTime UpdateTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 删除标记
|
||||
/// <summary>
|
||||
public int DeleteTag { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 所属物业ID
|
||||
/// <summary>
|
||||
public int owner_id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 更新人ID
|
||||
/// <summary>
|
||||
public int updatorid { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建人ID
|
||||
/// <summary>
|
||||
public int creatorid { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 收费项目id
|
||||
/// </summary>
|
||||
public int feeitemid { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 收费标准id
|
||||
/// </summary>
|
||||
public int feestandardid { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 开始时间
|
||||
/// </summary>
|
||||
public DateTime begintime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 是否有结束时间
|
||||
/// </summary>
|
||||
public bool islong { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 金额计算方式为每户单独输入
|
||||
/// </summary>
|
||||
public decimal amount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 结束时间
|
||||
/// </summary>
|
||||
public DateTime? endtime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 缴费类型 房屋
|
||||
/// </summary>
|
||||
public int sourcetype { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 缴费 房屋
|
||||
/// </summary>
|
||||
public string sourcecode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 备注[100]
|
||||
/// </summary>
|
||||
public string bak { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 账单生成时间
|
||||
/// </summary>
|
||||
public DateTime billtime { get; set; }
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,53 +1,53 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netcoreapp2.2</TargetFramework>
|
||||
<AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
|
||||
<ServerGarbageCollection>false</ServerGarbageCollection>
|
||||
<ConcurrentGarbageCollection>true</ConcurrentGarbageCollection>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
<NoWarn>1701;1702;1998</NoWarn>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Compile Remove="Response\Room\**" />
|
||||
<Content Remove="Response\Room\**" />
|
||||
<EmbeddedResource Remove="Response\Room\**" />
|
||||
<None Remove="Response\Room\**" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Compile Remove="Domain\etor_property_feeitem_relation.cs" />
|
||||
<Compile Remove="Request\QueryPropertyFeeitemRequest.cs" />
|
||||
<Compile Remove="Response\QueryPropertyFeeitemResponse.cs" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.AspNetCore.App">
|
||||
<PrivateAssets Condition="'%(PackageReference.Version)' == ''">all</PrivateAssets>
|
||||
<Publish Condition="'%(PackageReference.Version)' == ''">true</Publish>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.2.0" PrivateAssets="All" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.2.0" />
|
||||
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.2.3" />
|
||||
<PackageReference Include="NPinyin.Core" Version="2.1.3" />
|
||||
<PackageReference Include="PinYinConverterCore" Version="1.0.2" />
|
||||
<PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="2.2.0" />
|
||||
<PackageReference Include="Pomelo.EntityFrameworkCore.MySql.Design" Version="1.1.2" />
|
||||
<PackageReference Include="ThoughtWorks.QRCode.Core" Version="1.0.1.2" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\Infrastructure\Hncore.Infrastructure\Hncore.Infrastructure.csproj" />
|
||||
<ProjectReference Include="..\Hncore.Pass.Sells\Hncore.Pass.Sells.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Content Update="AppData\enums.json">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netcoreapp2.2</TargetFramework>
|
||||
<AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
|
||||
<ServerGarbageCollection>false</ServerGarbageCollection>
|
||||
<ConcurrentGarbageCollection>true</ConcurrentGarbageCollection>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
<NoWarn>1701;1702;1998</NoWarn>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Compile Remove="Response\Room\**" />
|
||||
<Content Remove="Response\Room\**" />
|
||||
<EmbeddedResource Remove="Response\Room\**" />
|
||||
<None Remove="Response\Room\**" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Compile Remove="Domain\etor_property_feeitem_relation.cs" />
|
||||
<Compile Remove="Request\QueryPropertyFeeitemRequest.cs" />
|
||||
<Compile Remove="Response\QueryPropertyFeeitemResponse.cs" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.AspNetCore.App">
|
||||
<PrivateAssets Condition="'%(PackageReference.Version)' == ''">all</PrivateAssets>
|
||||
<Publish Condition="'%(PackageReference.Version)' == ''">true</Publish>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.2.0" PrivateAssets="All" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.2.0" />
|
||||
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.2.3" />
|
||||
<PackageReference Include="NPinyin.Core" Version="2.1.3" />
|
||||
<PackageReference Include="PinYinConverterCore" Version="1.0.2" />
|
||||
<PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="2.2.0" />
|
||||
<PackageReference Include="Pomelo.EntityFrameworkCore.MySql.Design" Version="1.1.2" />
|
||||
<PackageReference Include="ThoughtWorks.QRCode.Core" Version="1.0.1.2" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\Infrastructure\Hncore.Infrastructure\Hncore.Infrastructure.csproj" />
|
||||
<ProjectReference Include="..\Hncore.Pass.Sells\Hncore.Pass.Sells.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Content Update="AppData\enums.json">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
using Hncore.Infrastructure.Extension;
|
||||
using Hncore.Pass.BaseInfo.Models;
|
||||
using Hncore.Pass.BaseInfo.Request;
|
||||
using Hncore.Pass.BaseInfo.Request.User;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo.Map
|
||||
{
|
||||
public class MapConfig
|
||||
{
|
||||
public static void Config()
|
||||
{
|
||||
TinyMapperExtension.Binds<WxLoginRequest, WxAppUserEntity>();
|
||||
|
||||
TinyMapperExtension.Binds<PostUserRequest, User>();
|
||||
}
|
||||
}
|
||||
}
|
||||
using Hncore.Infrastructure.Extension;
|
||||
using Hncore.Pass.BaseInfo.Models;
|
||||
using Hncore.Pass.BaseInfo.Request;
|
||||
using Hncore.Pass.BaseInfo.Request.User;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo.Map
|
||||
{
|
||||
public class MapConfig
|
||||
{
|
||||
public static void Config()
|
||||
{
|
||||
TinyMapperExtension.Binds<WxLoginRequest, WxAppUserEntity>();
|
||||
|
||||
TinyMapperExtension.Binds<PostUserRequest, User>();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,32 +1,32 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using Hncore.Infrastructure.Common;
|
||||
using Microsoft.AspNetCore;
|
||||
using Microsoft.AspNetCore.Hosting;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo
|
||||
{
|
||||
public class Program
|
||||
{
|
||||
public static void Main(string[] args)
|
||||
{
|
||||
AppDomain.CurrentDomain.UnhandledException += (sender, e) =>
|
||||
{
|
||||
LogHelper.Fatal("未捕获的异常", e.ExceptionObject.ToString());
|
||||
};
|
||||
|
||||
TaskScheduler.UnobservedTaskException += (_, ev) => { LogHelper.Fatal("未捕获的异常", ev.Exception); };
|
||||
|
||||
CreateWebHostBuilder(args).Build().Run();
|
||||
}
|
||||
|
||||
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
|
||||
WebHost.CreateDefaultBuilder(args)
|
||||
.UseStartup<Startup>();
|
||||
}
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using Hncore.Infrastructure.Common;
|
||||
using Microsoft.AspNetCore;
|
||||
using Microsoft.AspNetCore.Hosting;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo
|
||||
{
|
||||
public class Program
|
||||
{
|
||||
public static void Main(string[] args)
|
||||
{
|
||||
AppDomain.CurrentDomain.UnhandledException += (sender, e) =>
|
||||
{
|
||||
LogHelper.Fatal("未捕获的异常", e.ExceptionObject.ToString());
|
||||
};
|
||||
|
||||
TaskScheduler.UnobservedTaskException += (_, ev) => { LogHelper.Fatal("未捕获的异常", ev.Exception); };
|
||||
|
||||
CreateWebHostBuilder(args).Build().Run();
|
||||
}
|
||||
|
||||
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
|
||||
WebHost.CreateDefaultBuilder(args)
|
||||
.UseStartup<Startup>();
|
||||
}
|
||||
}
|
||||
@@ -1,27 +1,27 @@
|
||||
{
|
||||
"iisSettings": {
|
||||
"windowsAuthentication": false,
|
||||
"anonymousAuthentication": true,
|
||||
"iisExpress": {
|
||||
"applicationUrl": "http://localhost:16867",
|
||||
"sslPort": 44324
|
||||
}
|
||||
},
|
||||
"profiles": {
|
||||
"IIS Express": {
|
||||
"commandName": "IISExpress",
|
||||
"launchBrowser": true,
|
||||
"environmentVariables": {
|
||||
"ASPNETCORE_ENVIRONMENT": "Development"
|
||||
}
|
||||
},
|
||||
"Hncore.Pass.BaseInfo": {
|
||||
"commandName": "Project",
|
||||
"launchBrowser": true,
|
||||
"environmentVariables": {
|
||||
"ASPNETCORE_ENVIRONMENT": "Development"
|
||||
},
|
||||
"applicationUrl": "http://localhost:5008"
|
||||
}
|
||||
}
|
||||
{
|
||||
"iisSettings": {
|
||||
"windowsAuthentication": false,
|
||||
"anonymousAuthentication": true,
|
||||
"iisExpress": {
|
||||
"applicationUrl": "http://localhost:16867",
|
||||
"sslPort": 44324
|
||||
}
|
||||
},
|
||||
"profiles": {
|
||||
"IIS Express": {
|
||||
"commandName": "IISExpress",
|
||||
"launchBrowser": true,
|
||||
"environmentVariables": {
|
||||
"ASPNETCORE_ENVIRONMENT": "Development"
|
||||
}
|
||||
},
|
||||
"Hncore.Pass.BaseInfo": {
|
||||
"commandName": "Project",
|
||||
"launchBrowser": true,
|
||||
"environmentVariables": {
|
||||
"ASPNETCORE_ENVIRONMENT": "Development"
|
||||
},
|
||||
"applicationUrl": "http://localhost:5008"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,17 +1,17 @@
|
||||
using Hncore.Pass.BaseInfo.Models;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo.Request.Manager
|
||||
{
|
||||
public class AgainTokenDTO
|
||||
{
|
||||
public string Token { get; set; }
|
||||
/// <summary>
|
||||
/// 0刷新过期时间,1刷新管理项目
|
||||
/// </summary>
|
||||
public AgainTokenType Type { get; set; }
|
||||
}
|
||||
}
|
||||
using Hncore.Pass.BaseInfo.Models;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo.Request.Manager
|
||||
{
|
||||
public class AgainTokenDTO
|
||||
{
|
||||
public string Token { get; set; }
|
||||
/// <summary>
|
||||
/// 0刷新过期时间,1刷新管理项目
|
||||
/// </summary>
|
||||
public AgainTokenType Type { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,24 +1,24 @@
|
||||
namespace Hncore.Pass.BaseInfo.Request
|
||||
{
|
||||
public class LoginRequest
|
||||
{
|
||||
/// <summary>
|
||||
/// 登录名
|
||||
/// </summary>
|
||||
public System.String Logincode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 密码
|
||||
/// </summary>
|
||||
public System.String Password { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 验证码
|
||||
/// </summary>
|
||||
public string Code { get; set; }
|
||||
/// <summary>
|
||||
/// 验证码key
|
||||
/// </summary>
|
||||
public string CodeKey { get; set; }
|
||||
}
|
||||
namespace Hncore.Pass.BaseInfo.Request
|
||||
{
|
||||
public class LoginRequest
|
||||
{
|
||||
/// <summary>
|
||||
/// 登录名
|
||||
/// </summary>
|
||||
public System.String Logincode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 密码
|
||||
/// </summary>
|
||||
public System.String Password { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 验证码
|
||||
/// </summary>
|
||||
public string Code { get; set; }
|
||||
/// <summary>
|
||||
/// 验证码key
|
||||
/// </summary>
|
||||
public string CodeKey { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,21 +1,21 @@
|
||||
using Etor.Infrastructure.WebApi;
|
||||
using Etor.PSIP.BaseInfo.Models;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Etor.PSIP.BaseInfo.Request
|
||||
{
|
||||
public class QueryPropertyFeeitemRequest: PageRequestBase
|
||||
{
|
||||
[FromQuery(Name = "data.SceneType")] public SceneType SceneType { get; set; }
|
||||
public BillSourceType? BillSourceType { get; set; }
|
||||
|
||||
}
|
||||
//Request URL: https://psiptestapi.wx.weiyu.etor.vip/api/v1/PropertyFeeitem/
|
||||
//GetByScene?PageIndex=&PageSize=&OwnerID=1157&OperaterID=282&ProjectCode=&uuid=+&Data=&data.SceneType=2
|
||||
|
||||
|
||||
}
|
||||
using Etor.Infrastructure.WebApi;
|
||||
using Etor.PSIP.BaseInfo.Models;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Etor.PSIP.BaseInfo.Request
|
||||
{
|
||||
public class QueryPropertyFeeitemRequest: PageRequestBase
|
||||
{
|
||||
[FromQuery(Name = "data.SceneType")] public SceneType SceneType { get; set; }
|
||||
public BillSourceType? BillSourceType { get; set; }
|
||||
|
||||
}
|
||||
//Request URL: https://psiptestapi.wx.weiyu.etor.vip/api/v1/PropertyFeeitem/
|
||||
//GetByScene?PageIndex=&PageSize=&OwnerID=1157&OperaterID=282&ProjectCode=&uuid=+&Data=&data.SceneType=2
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -1,19 +1,19 @@
|
||||
using Hncore.Pass.BaseInfo.Models;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo.Request.User
|
||||
{
|
||||
public class AmountDetailRequest
|
||||
{
|
||||
public int UserId { get; set; }
|
||||
|
||||
public ScoreType OpAmountType { get; set; }
|
||||
|
||||
public decimal Amount { get; set; }
|
||||
|
||||
public string AttchInfo { get; set; }
|
||||
}
|
||||
}
|
||||
using Hncore.Pass.BaseInfo.Models;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo.Request.User
|
||||
{
|
||||
public class AmountDetailRequest
|
||||
{
|
||||
public int UserId { get; set; }
|
||||
|
||||
public ScoreType OpAmountType { get; set; }
|
||||
|
||||
public decimal Amount { get; set; }
|
||||
|
||||
public string AttchInfo { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
using Hncore.Pass.BaseInfo.Models;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo.Request
|
||||
{
|
||||
public class CreateOrderRequest {
|
||||
public decimal ChargeAmount { get; set; }
|
||||
public UPayChannel PayChannel { get; set; }
|
||||
|
||||
public string Channel { get; set; }
|
||||
public string Remark { get; set; }
|
||||
}
|
||||
}
|
||||
using Hncore.Pass.BaseInfo.Models;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo.Request
|
||||
{
|
||||
public class CreateOrderRequest {
|
||||
public decimal ChargeAmount { get; set; }
|
||||
public UPayChannel PayChannel { get; set; }
|
||||
|
||||
public string Channel { get; set; }
|
||||
public string Remark { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,50 +1,50 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo.Request.User
|
||||
{
|
||||
public class PostUserRequest
|
||||
{
|
||||
|
||||
public int Id { get; set; }
|
||||
/// <summary>
|
||||
/// 管理员登录名[16
|
||||
/// </summary>
|
||||
public string LoginCode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 登录密码[20]
|
||||
/// </summary>
|
||||
public string Password { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 微信昵称
|
||||
/// </summary>
|
||||
public string Name { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 微信头像
|
||||
/// </summary>
|
||||
public string Phone { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 注册来源
|
||||
/// </summary>
|
||||
public int Profile { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 注册来源
|
||||
/// </summary>
|
||||
public int Remark { get; set; }
|
||||
|
||||
public string QQ { get; set; }
|
||||
|
||||
public string Wx { get; set; }
|
||||
public string TaoBao { get; set; }
|
||||
public string Email { get; set; }
|
||||
|
||||
}
|
||||
}
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo.Request.User
|
||||
{
|
||||
public class PostUserRequest
|
||||
{
|
||||
|
||||
public int Id { get; set; }
|
||||
/// <summary>
|
||||
/// 管理员登录名[16
|
||||
/// </summary>
|
||||
public string LoginCode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 登录密码[20]
|
||||
/// </summary>
|
||||
public string Password { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 微信昵称
|
||||
/// </summary>
|
||||
public string Name { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 微信头像
|
||||
/// </summary>
|
||||
public string Phone { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 注册来源
|
||||
/// </summary>
|
||||
public int Profile { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 注册来源
|
||||
/// </summary>
|
||||
public int Remark { get; set; }
|
||||
|
||||
public string QQ { get; set; }
|
||||
|
||||
public string Wx { get; set; }
|
||||
public string TaoBao { get; set; }
|
||||
public string Email { get; set; }
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
using Hncore.Infrastructure.WebApi;
|
||||
using Hncore.Pass.BaseInfo.Models;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo.Request.User
|
||||
{
|
||||
public class QueryAmountRequest: PageRequestBase
|
||||
{
|
||||
public string UserName { get; set; }
|
||||
|
||||
public int? Type { get; set; } = 0;
|
||||
}
|
||||
}
|
||||
using Hncore.Infrastructure.WebApi;
|
||||
using Hncore.Pass.BaseInfo.Models;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo.Request.User
|
||||
{
|
||||
public class QueryAmountRequest: PageRequestBase
|
||||
{
|
||||
public string UserName { get; set; }
|
||||
|
||||
public int? Type { get; set; } = 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
using Hncore.Infrastructure.WebApi;
|
||||
using Hncore.Pass.BaseInfo.Models;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo.Request.User
|
||||
{
|
||||
public class QueryChargeOrdertRequest : PageRequestBase
|
||||
{
|
||||
public DateTime? BTime { get; set; }
|
||||
public DateTime? ETime { get; set; }
|
||||
}
|
||||
}
|
||||
using Hncore.Infrastructure.WebApi;
|
||||
using Hncore.Pass.BaseInfo.Models;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo.Request.User
|
||||
{
|
||||
public class QueryChargeOrdertRequest : PageRequestBase
|
||||
{
|
||||
public DateTime? BTime { get; set; }
|
||||
public DateTime? ETime { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
using Hncore.Infrastructure.WebApi;
|
||||
using Hncore.Pass.BaseInfo.Models;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo.Request.User
|
||||
{
|
||||
public class QueryUserRequest : PageRequestBase
|
||||
{
|
||||
public int? All { get; set; } = 1;
|
||||
}
|
||||
}
|
||||
using Hncore.Infrastructure.WebApi;
|
||||
using Hncore.Pass.BaseInfo.Models;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo.Request.User
|
||||
{
|
||||
public class QueryUserRequest : PageRequestBase
|
||||
{
|
||||
public int? All { get; set; } = 1;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
using Hncore.Pass.BaseInfo.Models;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo.Request.User
|
||||
{
|
||||
public class SetManagerRequest
|
||||
{
|
||||
public int ManagerId { get; set; }
|
||||
public string ManagerName { get; set; }
|
||||
public List<int> UserIds { get; set; }
|
||||
|
||||
}
|
||||
}
|
||||
using Hncore.Pass.BaseInfo.Models;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo.Request.User
|
||||
{
|
||||
public class SetManagerRequest
|
||||
{
|
||||
public int ManagerId { get; set; }
|
||||
public string ManagerName { get; set; }
|
||||
public List<int> UserIds { get; set; }
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,21 +1,21 @@
|
||||
using Hncore.Pass.BaseInfo.Models;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo.Request.User
|
||||
{
|
||||
public class UpdateAmountRequest
|
||||
{
|
||||
public int UserId { get; set; }
|
||||
|
||||
public string OperateUserName { get; set; }
|
||||
|
||||
public ScoreType OpAmountType { get; set; }
|
||||
|
||||
public decimal Amount { get; set; }
|
||||
|
||||
public string AttchInfo { get; set; }
|
||||
}
|
||||
}
|
||||
using Hncore.Pass.BaseInfo.Models;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo.Request.User
|
||||
{
|
||||
public class UpdateAmountRequest
|
||||
{
|
||||
public int UserId { get; set; }
|
||||
|
||||
public string OperateUserName { get; set; }
|
||||
|
||||
public ScoreType OpAmountType { get; set; }
|
||||
|
||||
public decimal Amount { get; set; }
|
||||
|
||||
public string AttchInfo { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
using Hncore.Pass.BaseInfo.Models;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo.Request.User
|
||||
{
|
||||
public class UpdateProfileRequest
|
||||
{
|
||||
public int UserId { get; set; }
|
||||
|
||||
public string Profile { get; set; }
|
||||
}
|
||||
}
|
||||
using Hncore.Pass.BaseInfo.Models;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo.Request.User
|
||||
{
|
||||
public class UpdateProfileRequest
|
||||
{
|
||||
public int UserId { get; set; }
|
||||
|
||||
public string Profile { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
using Hncore.Pass.BaseInfo.Models;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo.Request.User
|
||||
{
|
||||
public class UpdateTestCountRequest
|
||||
{
|
||||
public int UserId { get; set; }
|
||||
public int Limit { get; set; }
|
||||
}
|
||||
}
|
||||
using Hncore.Pass.BaseInfo.Models;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo.Request.User
|
||||
{
|
||||
public class UpdateTestCountRequest
|
||||
{
|
||||
public int UserId { get; set; }
|
||||
public int Limit { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,44 +1,44 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo.Request.User
|
||||
{
|
||||
public class WxAuthUserInfo
|
||||
{
|
||||
//
|
||||
// 摘要:
|
||||
// 用户的唯一标识
|
||||
public string openid { get; set; }
|
||||
//
|
||||
// 摘要:
|
||||
// 用户昵称
|
||||
public string nickname { get; set; }
|
||||
//
|
||||
// 摘要:
|
||||
// 用户的性别,值为1时是男性,值为2时是女性,值为0时是未知
|
||||
public int sex { get; set; }
|
||||
//
|
||||
// 摘要:
|
||||
// 用户个人资料填写的省份
|
||||
public string province { get; set; }
|
||||
//
|
||||
// 摘要:
|
||||
// 普通用户个人资料填写的城市
|
||||
public string city { get; set; }
|
||||
//
|
||||
// 摘要:
|
||||
// 国家,如中国为CN
|
||||
public string country { get; set; }
|
||||
//
|
||||
// 摘要:
|
||||
// 用户头像,最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像),用户没有头像时该项为空
|
||||
public string headimgurl { get; set; }
|
||||
//
|
||||
// 摘要:
|
||||
// 用户特权信息,json 数组,如微信沃卡用户为(chinaunicom) 作者注:其实这个格式称不上JSON,只是个单纯数组。
|
||||
public string[] privilege { get; set; }
|
||||
public string unionid { get; set; }
|
||||
}
|
||||
}
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo.Request.User
|
||||
{
|
||||
public class WxAuthUserInfo
|
||||
{
|
||||
//
|
||||
// 摘要:
|
||||
// 用户的唯一标识
|
||||
public string openid { get; set; }
|
||||
//
|
||||
// 摘要:
|
||||
// 用户昵称
|
||||
public string nickname { get; set; }
|
||||
//
|
||||
// 摘要:
|
||||
// 用户的性别,值为1时是男性,值为2时是女性,值为0时是未知
|
||||
public int sex { get; set; }
|
||||
//
|
||||
// 摘要:
|
||||
// 用户个人资料填写的省份
|
||||
public string province { get; set; }
|
||||
//
|
||||
// 摘要:
|
||||
// 普通用户个人资料填写的城市
|
||||
public string city { get; set; }
|
||||
//
|
||||
// 摘要:
|
||||
// 国家,如中国为CN
|
||||
public string country { get; set; }
|
||||
//
|
||||
// 摘要:
|
||||
// 用户头像,最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像),用户没有头像时该项为空
|
||||
public string headimgurl { get; set; }
|
||||
//
|
||||
// 摘要:
|
||||
// 用户特权信息,json 数组,如微信沃卡用户为(chinaunicom) 作者注:其实这个格式称不上JSON,只是个单纯数组。
|
||||
public string[] privilege { get; set; }
|
||||
public string unionid { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
namespace Hncore.Pass.BaseInfo.Request
|
||||
{
|
||||
public class WxLoginRequest
|
||||
{
|
||||
public string AppId { get; set; }
|
||||
public int AppType { get; set; } = 1;
|
||||
public string Unionid { get; set; }
|
||||
public string Openid { get; set; }
|
||||
public string NickName { get; set; }
|
||||
public string UserName { get; set; }
|
||||
public string HeadImgUrl { get; set; }
|
||||
public int Sex { get; set; }
|
||||
public string City { get; set; }
|
||||
public string Country { get; set; }
|
||||
}
|
||||
namespace Hncore.Pass.BaseInfo.Request
|
||||
{
|
||||
public class WxLoginRequest
|
||||
{
|
||||
public string AppId { get; set; }
|
||||
public int AppType { get; set; } = 1;
|
||||
public string Unionid { get; set; }
|
||||
public string Openid { get; set; }
|
||||
public string NickName { get; set; }
|
||||
public string UserName { get; set; }
|
||||
public string HeadImgUrl { get; set; }
|
||||
public int Sex { get; set; }
|
||||
public string City { get; set; }
|
||||
public string Country { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,214 +1,214 @@
|
||||
using System;
|
||||
using Hncore.Pass.BaseInfo.Models;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo.Response
|
||||
{
|
||||
public class LoginResponse
|
||||
{
|
||||
public string Token { get; set; }
|
||||
|
||||
public LoginManagerResponse Manager { get; set; }
|
||||
}
|
||||
public class LoginManagerResponse
|
||||
{
|
||||
public System.Int32 ID { get; set; }
|
||||
public System.DateTime CreateTime { get; set; }
|
||||
public System.DateTime UpdateTime { get; set; }
|
||||
public System.Int32 DeleteTag { get; set; }
|
||||
public System.Int32 TenantId { get; set; }
|
||||
public System.Int32 Updatorid { get; set; }
|
||||
public System.Int32 Creatorid { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 登录名
|
||||
/// </summary>
|
||||
public System.String Logincode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 密码
|
||||
/// </summary>
|
||||
///public System.String Password { get; set; }
|
||||
/// <summary>
|
||||
/// 员工id
|
||||
/// </summary>
|
||||
public System.Int32 Workerid { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 角色id
|
||||
/// </summary>
|
||||
public System.Int32 Roleid { get; set; }
|
||||
/// <summary>
|
||||
/// 状态 (枚举: ManagerState)
|
||||
/// </summary>
|
||||
//public System.Int32 State { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 头像路径
|
||||
/// </summary>
|
||||
public System.String Photourl { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 角色名称
|
||||
/// </summary>
|
||||
public string RoleName { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 员工姓名
|
||||
/// </summary>
|
||||
public string WorkerName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 员工方式
|
||||
/// </summary>
|
||||
public string WorkerMobile { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 关联的楼宇数量
|
||||
/// </summary>
|
||||
public int BuildingCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 微信openid[50]
|
||||
/// </summary>
|
||||
public string Wxopenid { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 部门名称
|
||||
/// </summary>
|
||||
public string DepartmentName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 微信昵称
|
||||
/// </summary>
|
||||
public string Wxnickname { get; set; }
|
||||
|
||||
public System.String PropertyCompanyName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 真实姓名
|
||||
/// </summary>
|
||||
public string RealName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 电子邮箱
|
||||
/// </summary>
|
||||
public string Email { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 管理员手机号
|
||||
/// </summary>
|
||||
public string Phone { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 应用编码(有值为单一应用,无值为混合应用)
|
||||
/// </summary>
|
||||
public string AppCode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 过期时间
|
||||
/// </summary>
|
||||
public DateTime ExpiredTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 系统有效期
|
||||
/// </summary>
|
||||
public int ValidDays { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 是否是超级管理员
|
||||
/// </summary>
|
||||
public bool IsRootUser { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 性别
|
||||
/// </summary>
|
||||
public int? Sex { get; set; }
|
||||
|
||||
public LoginManagerResponse FromEntity(Manager manager)
|
||||
{
|
||||
ID = manager.Id;
|
||||
CreateTime = manager.CreateTime;
|
||||
UpdateTime = manager.UpdateTime;
|
||||
DeleteTag = manager.DeleteTag;
|
||||
TenantId = manager.TenantId;
|
||||
Updatorid = manager.UpdatorId;
|
||||
Creatorid = manager.CreatorId;
|
||||
Logincode = manager.LoginCode;
|
||||
Workerid =0;
|
||||
Roleid = manager.RoleId;
|
||||
Photourl = manager.PhotoUrl;
|
||||
Wxopenid = manager.WxOpenid;
|
||||
Wxnickname = manager.WxNickName;
|
||||
RealName = manager.RealName;
|
||||
Email = manager.Email;
|
||||
Phone = manager.Phone;
|
||||
IsRootUser = manager.IsRoot==1;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 安卓登陆的返回
|
||||
/// </summary>
|
||||
public class LoginAndroidManagerResponse
|
||||
{
|
||||
public System.Int32 ID { get; set; }
|
||||
public System.Int32 OwnerId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 登录名
|
||||
/// </summary>
|
||||
public System.String Logincode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 头像路径
|
||||
/// </summary>
|
||||
public System.String Photourl { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 角色名称
|
||||
/// </summary>
|
||||
public string RoleName { get; set; }
|
||||
|
||||
|
||||
public System.String PropertyCompanyName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 真实姓名
|
||||
/// </summary>
|
||||
public string RealName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 电子邮箱
|
||||
/// </summary>
|
||||
public string Email { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 管理员手机号
|
||||
/// </summary>
|
||||
public string Phone { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 性别
|
||||
/// </summary>
|
||||
public int? Sex { get; set; }
|
||||
|
||||
public string Logo { get; set; }
|
||||
|
||||
public LoginAndroidManagerResponse FromEntity(Manager manager)
|
||||
{
|
||||
ID = manager.Id;
|
||||
OwnerId = manager.TenantId;
|
||||
Logincode = manager.LoginCode;
|
||||
Photourl = manager.PhotoUrl;
|
||||
RealName = manager.RealName;
|
||||
Email = manager.Email;
|
||||
Phone = manager.Phone;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
using System;
|
||||
using Hncore.Pass.BaseInfo.Models;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo.Response
|
||||
{
|
||||
public class LoginResponse
|
||||
{
|
||||
public string Token { get; set; }
|
||||
|
||||
public LoginManagerResponse Manager { get; set; }
|
||||
}
|
||||
public class LoginManagerResponse
|
||||
{
|
||||
public System.Int32 ID { get; set; }
|
||||
public System.DateTime CreateTime { get; set; }
|
||||
public System.DateTime UpdateTime { get; set; }
|
||||
public System.Int32 DeleteTag { get; set; }
|
||||
public System.Int32 TenantId { get; set; }
|
||||
public System.Int32 Updatorid { get; set; }
|
||||
public System.Int32 Creatorid { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 登录名
|
||||
/// </summary>
|
||||
public System.String Logincode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 密码
|
||||
/// </summary>
|
||||
///public System.String Password { get; set; }
|
||||
/// <summary>
|
||||
/// 员工id
|
||||
/// </summary>
|
||||
public System.Int32 Workerid { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 角色id
|
||||
/// </summary>
|
||||
public System.Int32 Roleid { get; set; }
|
||||
/// <summary>
|
||||
/// 状态 (枚举: ManagerState)
|
||||
/// </summary>
|
||||
//public System.Int32 State { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 头像路径
|
||||
/// </summary>
|
||||
public System.String Photourl { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 角色名称
|
||||
/// </summary>
|
||||
public string RoleName { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 员工姓名
|
||||
/// </summary>
|
||||
public string WorkerName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 员工方式
|
||||
/// </summary>
|
||||
public string WorkerMobile { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 关联的楼宇数量
|
||||
/// </summary>
|
||||
public int BuildingCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 微信openid[50]
|
||||
/// </summary>
|
||||
public string Wxopenid { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 部门名称
|
||||
/// </summary>
|
||||
public string DepartmentName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 微信昵称
|
||||
/// </summary>
|
||||
public string Wxnickname { get; set; }
|
||||
|
||||
public System.String PropertyCompanyName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 真实姓名
|
||||
/// </summary>
|
||||
public string RealName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 电子邮箱
|
||||
/// </summary>
|
||||
public string Email { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 管理员手机号
|
||||
/// </summary>
|
||||
public string Phone { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 应用编码(有值为单一应用,无值为混合应用)
|
||||
/// </summary>
|
||||
public string AppCode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 过期时间
|
||||
/// </summary>
|
||||
public DateTime ExpiredTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 系统有效期
|
||||
/// </summary>
|
||||
public int ValidDays { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 是否是超级管理员
|
||||
/// </summary>
|
||||
public bool IsRootUser { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 性别
|
||||
/// </summary>
|
||||
public int? Sex { get; set; }
|
||||
|
||||
public LoginManagerResponse FromEntity(Manager manager)
|
||||
{
|
||||
ID = manager.Id;
|
||||
CreateTime = manager.CreateTime;
|
||||
UpdateTime = manager.UpdateTime;
|
||||
DeleteTag = manager.DeleteTag;
|
||||
TenantId = manager.TenantId;
|
||||
Updatorid = manager.UpdatorId;
|
||||
Creatorid = manager.CreatorId;
|
||||
Logincode = manager.LoginCode;
|
||||
Workerid =0;
|
||||
Roleid = manager.RoleId;
|
||||
Photourl = manager.PhotoUrl;
|
||||
Wxopenid = manager.WxOpenid;
|
||||
Wxnickname = manager.WxNickName;
|
||||
RealName = manager.RealName;
|
||||
Email = manager.Email;
|
||||
Phone = manager.Phone;
|
||||
IsRootUser = manager.IsRoot==1;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 安卓登陆的返回
|
||||
/// </summary>
|
||||
public class LoginAndroidManagerResponse
|
||||
{
|
||||
public System.Int32 ID { get; set; }
|
||||
public System.Int32 OwnerId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 登录名
|
||||
/// </summary>
|
||||
public System.String Logincode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 头像路径
|
||||
/// </summary>
|
||||
public System.String Photourl { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 角色名称
|
||||
/// </summary>
|
||||
public string RoleName { get; set; }
|
||||
|
||||
|
||||
public System.String PropertyCompanyName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 真实姓名
|
||||
/// </summary>
|
||||
public string RealName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 电子邮箱
|
||||
/// </summary>
|
||||
public string Email { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 管理员手机号
|
||||
/// </summary>
|
||||
public string Phone { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 性别
|
||||
/// </summary>
|
||||
public int? Sex { get; set; }
|
||||
|
||||
public string Logo { get; set; }
|
||||
|
||||
public LoginAndroidManagerResponse FromEntity(Manager manager)
|
||||
{
|
||||
ID = manager.Id;
|
||||
OwnerId = manager.TenantId;
|
||||
Logincode = manager.LoginCode;
|
||||
Photourl = manager.PhotoUrl;
|
||||
RealName = manager.RealName;
|
||||
Email = manager.Email;
|
||||
Phone = manager.Phone;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,17 +1,17 @@
|
||||
using Etor.Infrastructure.WebApi;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Etor.PSIP.BaseInfo.Response
|
||||
{
|
||||
/// <summary>
|
||||
/// 收费输出
|
||||
/// </summary>
|
||||
public class QueryPropertyFeeitemResponse
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
using Etor.Infrastructure.WebApi;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Etor.PSIP.BaseInfo.Response
|
||||
{
|
||||
/// <summary>
|
||||
/// 收费输出
|
||||
/// </summary>
|
||||
public class QueryPropertyFeeitemResponse
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,39 +1,39 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo.Response
|
||||
{
|
||||
/// <summary>
|
||||
/// 用户统计
|
||||
/// </summary>
|
||||
/// mzh 2018/1/6 add
|
||||
public class PropertyUserStatisticsDTO
|
||||
{
|
||||
/// <summary>
|
||||
/// 总用户数
|
||||
/// </summary>
|
||||
public int AllUserCount { get; set; }
|
||||
/// <summary>
|
||||
/// 已迁入用户数
|
||||
/// </summary>
|
||||
public int InRoomUserCount { get; set; }
|
||||
/// <summary>
|
||||
/// 未审核用户数
|
||||
/// </summary>
|
||||
public int NotCheckUserCount { get; set; }
|
||||
/// <summary>
|
||||
/// 未通过用户数
|
||||
/// </summary>
|
||||
public int NotPassUserCount { get; set; }
|
||||
/// <summary>
|
||||
/// 已迁出用户数
|
||||
/// </summary>
|
||||
public int OutRoomUserCount { get; set; }
|
||||
/// <summary>
|
||||
/// 黑名单用户数
|
||||
/// </summary>
|
||||
public int BlackUserCount { get; set; }
|
||||
}
|
||||
}
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo.Response
|
||||
{
|
||||
/// <summary>
|
||||
/// 用户统计
|
||||
/// </summary>
|
||||
/// mzh 2018/1/6 add
|
||||
public class PropertyUserStatisticsDTO
|
||||
{
|
||||
/// <summary>
|
||||
/// 总用户数
|
||||
/// </summary>
|
||||
public int AllUserCount { get; set; }
|
||||
/// <summary>
|
||||
/// 已迁入用户数
|
||||
/// </summary>
|
||||
public int InRoomUserCount { get; set; }
|
||||
/// <summary>
|
||||
/// 未审核用户数
|
||||
/// </summary>
|
||||
public int NotCheckUserCount { get; set; }
|
||||
/// <summary>
|
||||
/// 未通过用户数
|
||||
/// </summary>
|
||||
public int NotPassUserCount { get; set; }
|
||||
/// <summary>
|
||||
/// 已迁出用户数
|
||||
/// </summary>
|
||||
public int OutRoomUserCount { get; set; }
|
||||
/// <summary>
|
||||
/// 黑名单用户数
|
||||
/// </summary>
|
||||
public int BlackUserCount { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,71 +1,71 @@
|
||||
using System;
|
||||
using Hncore.Pass.BaseInfo.Models;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo.Response
|
||||
{
|
||||
public class UserLoginResponse
|
||||
{
|
||||
public string Token { get; set; }
|
||||
|
||||
public WxMpUserModel MpUser{get;set;}
|
||||
|
||||
public UserLoginModel User { get; set; }
|
||||
}
|
||||
public class UserLoginModel
|
||||
{
|
||||
public int Id { get; set; }
|
||||
public int TenantId { get; set; }
|
||||
public string LoginCode { get; set; }
|
||||
/// <summary>
|
||||
/// 微信昵称
|
||||
/// </summary>
|
||||
public string Name { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 微信头像
|
||||
/// </summary>
|
||||
public string Phone { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 注册来源
|
||||
/// </summary>
|
||||
public string Profile { get; set; }
|
||||
/// <summary>
|
||||
/// 状态
|
||||
/// </summary>
|
||||
public int Enabled { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 头像地址[30
|
||||
/// </summary>
|
||||
public string PhotoUrl { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 是否主管理员权限
|
||||
/// </summary>
|
||||
public DateTime? LastLoginDate { get; set; }
|
||||
|
||||
public int Sex { get; set; }
|
||||
public string OpenId { get; set; }
|
||||
public UserLoginModel FromEntity(User manager)
|
||||
{
|
||||
Id = manager.Id;
|
||||
LastLoginDate = manager.LastLoginDate;
|
||||
TenantId = manager.TenantId;
|
||||
LoginCode = manager.LoginCode;
|
||||
Phone = manager.Phone;
|
||||
LoginCode = manager.LoginCode;
|
||||
Profile = manager.Profile;
|
||||
Enabled = manager.Enabled;
|
||||
PhotoUrl = manager.PhotoUrl;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
public class WxMpUserModel
|
||||
{
|
||||
public string AppId { get; set; }
|
||||
|
||||
public string OpenId { get; set; }
|
||||
}
|
||||
using System;
|
||||
using Hncore.Pass.BaseInfo.Models;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo.Response
|
||||
{
|
||||
public class UserLoginResponse
|
||||
{
|
||||
public string Token { get; set; }
|
||||
|
||||
public WxMpUserModel MpUser{get;set;}
|
||||
|
||||
public UserLoginModel User { get; set; }
|
||||
}
|
||||
public class UserLoginModel
|
||||
{
|
||||
public int Id { get; set; }
|
||||
public int TenantId { get; set; }
|
||||
public string LoginCode { get; set; }
|
||||
/// <summary>
|
||||
/// 微信昵称
|
||||
/// </summary>
|
||||
public string Name { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 微信头像
|
||||
/// </summary>
|
||||
public string Phone { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 注册来源
|
||||
/// </summary>
|
||||
public string Profile { get; set; }
|
||||
/// <summary>
|
||||
/// 状态
|
||||
/// </summary>
|
||||
public int Enabled { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 头像地址[30
|
||||
/// </summary>
|
||||
public string PhotoUrl { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 是否主管理员权限
|
||||
/// </summary>
|
||||
public DateTime? LastLoginDate { get; set; }
|
||||
|
||||
public int Sex { get; set; }
|
||||
public string OpenId { get; set; }
|
||||
public UserLoginModel FromEntity(User manager)
|
||||
{
|
||||
Id = manager.Id;
|
||||
LastLoginDate = manager.LastLoginDate;
|
||||
TenantId = manager.TenantId;
|
||||
LoginCode = manager.LoginCode;
|
||||
Phone = manager.Phone;
|
||||
LoginCode = manager.LoginCode;
|
||||
Profile = manager.Profile;
|
||||
Enabled = manager.Enabled;
|
||||
PhotoUrl = manager.PhotoUrl;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
public class WxMpUserModel
|
||||
{
|
||||
public string AppId { get; set; }
|
||||
|
||||
public string OpenId { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,342 +1,344 @@
|
||||
using Hncore.Infrastructure.Common;
|
||||
using Hncore.Infrastructure.Data;
|
||||
using Hncore.Infrastructure.Extension;
|
||||
using Hncore.Infrastructure.Serializer;
|
||||
using Hncore.Infrastructure.WebApi;
|
||||
using Hncore.Pass.BaseInfo.Models;
|
||||
using Hncore.Pass.BaseInfo.Request;
|
||||
using Hncore.Pass.BaseInfo.Request.Manager;
|
||||
using Hncore.Pass.BaseInfo.Response;
|
||||
using JWT;
|
||||
using JWT.Algorithms;
|
||||
using JWT.Serializers;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo.Service
|
||||
{
|
||||
public class ManageService
|
||||
{
|
||||
private static string _secret = "etor_yh_lzh_20f_2020_YES";
|
||||
|
||||
private UserDbContext _dbContext;
|
||||
|
||||
public ManageService(UserDbContext dbContext)
|
||||
{
|
||||
_dbContext = dbContext;
|
||||
}
|
||||
|
||||
public async Task<LoginResponse> Login(LoginRequest request)
|
||||
{
|
||||
if (request == null
|
||||
// || !request.Code.Has()
|
||||
|| !request.CodeKey.Has()
|
||||
|| !request.Logincode.Has()
|
||||
|| !request.Password.Has()
|
||||
)
|
||||
{
|
||||
BusinessException.Throw("登陆信息异常");
|
||||
}
|
||||
|
||||
//string valCode = await RedisHelper.GetAsync(request.CodeKey);
|
||||
//if (!valCode.Has() || valCode.ToLower() != request.Code.ToLower())
|
||||
//{
|
||||
// BusinessException.Throw("验证码错误");
|
||||
//}
|
||||
|
||||
var manage = await _dbContext.Set<Manager>()
|
||||
.FirstOrDefaultAsync(m => (m.LoginCode == request.Logincode || m.Phone == request.Logincode)
|
||||
&& m.State == (int)ManagerState.Enabled);
|
||||
|
||||
if (manage == null)
|
||||
{
|
||||
BusinessException.Throw("登录名不存在");
|
||||
}
|
||||
|
||||
if (HashPassword(request.Password).ToUpper() != manage.Password.ToUpper())
|
||||
{
|
||||
BusinessException.Throw("密码错误");
|
||||
}
|
||||
|
||||
return await LoginInternal(manage);
|
||||
}
|
||||
|
||||
public async Task<LoginResponse> LoginTemp(LoginRequest request)
|
||||
{
|
||||
if (request == null
|
||||
|| !request.Logincode.Has()
|
||||
|| !request.Password.Has()
|
||||
)
|
||||
{
|
||||
BusinessException.Throw("登陆信息异常");
|
||||
}
|
||||
|
||||
var manage = await _dbContext.Set<Manager>()
|
||||
.FirstOrDefaultAsync(m => (m.LoginCode == request.Logincode || m.Phone == request.Logincode)
|
||||
&& m.State == (int)ManagerState.Enabled);
|
||||
|
||||
if (manage == null)
|
||||
{
|
||||
BusinessException.Throw("登录名不存在");
|
||||
}
|
||||
|
||||
if (HashPassword(request.Password).ToUpper() != manage.Password.ToUpper())
|
||||
{
|
||||
BusinessException.Throw("密码错误");
|
||||
}
|
||||
|
||||
return await LoginInternal(manage);
|
||||
}
|
||||
|
||||
public async Task<LoginAndroidManagerResponse> LoginAndroidTemp(LoginRequest request)
|
||||
{
|
||||
if (request == null
|
||||
|| !request.Logincode.Has()
|
||||
|| !request.Password.Has()
|
||||
)
|
||||
{
|
||||
BusinessException.Throw("登陆信息异常");
|
||||
}
|
||||
|
||||
var manage = await _dbContext.Set<Manager>()
|
||||
.FirstOrDefaultAsync(m => (m.LoginCode == request.Logincode || m.Phone == request.Logincode)
|
||||
&& m.DeleteTag == 0
|
||||
&& m.State == (int)ManagerState.Enabled);
|
||||
|
||||
if (manage == null)
|
||||
{
|
||||
BusinessException.Throw("登录名不存在");
|
||||
}
|
||||
|
||||
if (HashPassword(request.Password).ToUpper() != manage.Password.ToUpper())
|
||||
{
|
||||
BusinessException.Throw("密码错误");
|
||||
}
|
||||
|
||||
return await LoginAndroidInternal(manage);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 通过微信的opid登录
|
||||
/// </summary>
|
||||
/// <param name="openId"></param>
|
||||
/// <returns></returns>
|
||||
|
||||
public async Task<LoginResponse> LoginOpenid(string openId)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(openId))
|
||||
{
|
||||
BusinessException.Throw("登陆信息异常");
|
||||
}
|
||||
|
||||
openId = openId.Trim();
|
||||
var manage = await _dbContext.Set<Manager>()
|
||||
.FirstOrDefaultAsync(m => (m.WxOpenid == openId
|
||||
&& m.DeleteTag == 0
|
||||
&& m.State == (int)ManagerState.Enabled));
|
||||
if (manage == null)
|
||||
{
|
||||
BusinessException.Throw("没有绑定微信登录");
|
||||
}
|
||||
|
||||
return await LoginInternal(manage);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 通过微信的opid登录
|
||||
/// </summary>
|
||||
/// <param name="openId"></param>
|
||||
/// <returns></returns>
|
||||
|
||||
public async Task<string> GenerateTokenByOpenid(string openId)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(openId))
|
||||
{
|
||||
BusinessException.Throw("登陆信息异常");
|
||||
}
|
||||
|
||||
openId = openId.Trim();
|
||||
var manage = await _dbContext.Set<Manager>()
|
||||
.FirstOrDefaultAsync(m => (m.WxOpenid == openId
|
||||
&& m.DeleteTag == 0
|
||||
&& m.State == (int)ManagerState.Enabled));
|
||||
if (manage == null)
|
||||
{
|
||||
BusinessException.Throw("没有绑定微信登录");
|
||||
}
|
||||
|
||||
var tokenDic = new Dictionary<string, object>()
|
||||
{
|
||||
{"OpenId",openId},
|
||||
{"LoginName", manage.LoginCode},
|
||||
{"RoleName", ""},
|
||||
{"OperaterID", manage.Id},
|
||||
{"TenantId", manage.TenantId}
|
||||
};
|
||||
|
||||
var token = GenerateToken(tokenDic);
|
||||
return token;
|
||||
}
|
||||
|
||||
private async Task<LoginResponse> LoginInternal(Manager manage)
|
||||
{
|
||||
var tokenDic = new Dictionary<string, object>()
|
||||
{
|
||||
{"LoginName", manage.LoginCode},
|
||||
{"RoleName", ""},
|
||||
{"OperaterID", manage.Id},
|
||||
{"TenantId", manage.TenantId}
|
||||
};
|
||||
|
||||
if (manage.IsRoot != 1)
|
||||
{
|
||||
//int[] domains = await _dbContext.Set<etor_authority_managerdatadomain>()
|
||||
// .Where(p => p.owner_id == manage.TenantId && p.DeleteTag == 0 && p.managerid == manage.Id)
|
||||
// .Select(t => t.projectcode)
|
||||
// .ToArrayAsync();
|
||||
|
||||
//tokenDic.Add("DataDomain", domains);
|
||||
}
|
||||
|
||||
var token = GenerateToken(tokenDic);
|
||||
|
||||
var response = new LoginManagerResponse().FromEntity(manage);
|
||||
return new LoginResponse()
|
||||
{
|
||||
Token = token,
|
||||
Manager = response
|
||||
};
|
||||
}
|
||||
/// <summary>
|
||||
/// 重新获取token
|
||||
/// </summary>
|
||||
/// <param name="request"></param>
|
||||
/// <returns></returns>
|
||||
internal async Task<string> AgainGetToken(RequestBase<AgainTokenDTO> request)
|
||||
{
|
||||
if (null == request|| request.Data==null) BusinessException.Throw("参数错误");
|
||||
var token = request.Data.Token;
|
||||
var ManageUserInfo = new ManageUserInfo();
|
||||
if (CheckToken(request.Data.Token, out ManageUserInfo))
|
||||
{
|
||||
var tokenDic = new Dictionary<string, object>()
|
||||
{
|
||||
{"LoginName", ManageUserInfo.LoginName},
|
||||
{"RoleName", ManageUserInfo.RoleName},
|
||||
{"OperaterID", ManageUserInfo.OperaterId},
|
||||
{"OwnerID", ManageUserInfo.TenantId}
|
||||
};
|
||||
switch (request.Data.Type)
|
||||
{
|
||||
case AgainTokenType.Expire:
|
||||
break;
|
||||
//case AgainTokenType.Project:
|
||||
// var manager = await _dbContext.Set<Manager>()
|
||||
// .FirstOrDefaultAsync(s=>s.Id == request.OperaterId);
|
||||
// if (manager.IsRoot != 1)
|
||||
// {
|
||||
// int[] domains = await _dbContext.Set<etor_authority_managerdatadomain>()
|
||||
// .Where(p => p.owner_id == manager.TenantId && p.DeleteTag == 0 && p.managerid == manager.Id)
|
||||
// .Select(t => t.projectcode)
|
||||
// .ToArrayAsync();
|
||||
|
||||
// tokenDic.Add("DataDomain", domains);
|
||||
// }
|
||||
// break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
token = GenerateToken(tokenDic);
|
||||
}
|
||||
else
|
||||
{
|
||||
BusinessException.Throw("参数错误");
|
||||
}
|
||||
return token;
|
||||
}
|
||||
|
||||
private async Task<LoginAndroidManagerResponse> LoginAndroidInternal(Manager manage)
|
||||
{
|
||||
var response = new LoginAndroidManagerResponse().FromEntity(manage);
|
||||
return response;
|
||||
}
|
||||
|
||||
private static string GenerateToken(Dictionary<string, object> param, int timeoutMinutes = 180)
|
||||
{
|
||||
IJwtAlgorithm algorithm = new HMACSHA256Algorithm();
|
||||
IJsonSerializer serializer = new JsonNetSerializer();
|
||||
IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder();
|
||||
IJwtEncoder encoder = new JwtEncoder(algorithm, serializer, urlEncoder);
|
||||
|
||||
long now = DateTimeHelper.ToUnixTimestamp(DateTime.Now);
|
||||
|
||||
param["iat"] = now; //签发时间
|
||||
param["exp"] = now + Math.Max(0, timeoutMinutes) * 60; //过期时间
|
||||
|
||||
var token = encoder.Encode(param, _secret);
|
||||
|
||||
return token;
|
||||
}
|
||||
|
||||
public bool CheckToken(string token, out ManageUserInfo userInfo)
|
||||
{
|
||||
userInfo = null;
|
||||
try
|
||||
{
|
||||
IJsonSerializer serializer = new JsonNetSerializer();
|
||||
IDateTimeProvider provider = new UtcDateTimeProvider();
|
||||
IJwtValidator validator = new JwtValidator(serializer, provider);
|
||||
IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder();
|
||||
IJwtDecoder decoder = new JwtDecoder(serializer, validator, urlEncoder);
|
||||
var payload = decoder.Decode(token, _secret, verify: true);
|
||||
|
||||
userInfo = payload.FromJsonTo<ManageUserInfo>();
|
||||
|
||||
if (userInfo == null || userInfo.TenantId == 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (userInfo.IssueTimestamp == 0
|
||||
|| DateTimeHelper.UnixTimeStampToDateTime(userInfo.IssueTimestamp) <
|
||||
DateTime.Now.AddHours(-4))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
catch (TokenExpiredException ex)
|
||||
{
|
||||
LogHelper.Error("oken has expired", ex.Message);
|
||||
return false;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LogHelper.Error("CheckToken失败", ex.Message);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public static string HashPassword(string password)
|
||||
{
|
||||
using (MD5 md5 = MD5.Create())
|
||||
{
|
||||
byte[] bytes = md5.ComputeHash(Encoding.UTF8.GetBytes(password));
|
||||
return Convert.ToBase64String(bytes);
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<Manager> GetById(int id)
|
||||
{
|
||||
var manage = await _dbContext.Set<Manager>().FindAsync(id);
|
||||
|
||||
return manage;
|
||||
|
||||
}
|
||||
}
|
||||
using Hncore.Infrastructure.Common;
|
||||
using Hncore.Infrastructure.Data;
|
||||
using Hncore.Infrastructure.Extension;
|
||||
using Hncore.Infrastructure.Serializer;
|
||||
using Hncore.Infrastructure.WebApi;
|
||||
using Hncore.Pass.BaseInfo.Models;
|
||||
using Hncore.Pass.BaseInfo.Request;
|
||||
using Hncore.Pass.BaseInfo.Request.Manager;
|
||||
using Hncore.Pass.BaseInfo.Response;
|
||||
using JWT;
|
||||
using JWT.Algorithms;
|
||||
using JWT.Serializers;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo.Service
|
||||
{
|
||||
public class ManageService
|
||||
{
|
||||
private static string _secret = "etor_yh_lzh_20f_2020_YES";
|
||||
|
||||
private UserDbContext _dbContext;
|
||||
|
||||
public ManageService(UserDbContext dbContext)
|
||||
{
|
||||
_dbContext = dbContext;
|
||||
}
|
||||
|
||||
public async Task<LoginResponse> Login(LoginRequest request)
|
||||
{
|
||||
if (request == null
|
||||
// || !request.Code.Has()
|
||||
|| !request.CodeKey.Has()
|
||||
|| !request.Logincode.Has()
|
||||
|| !request.Password.Has()
|
||||
)
|
||||
{
|
||||
BusinessException.Throw("登陆信息异常");
|
||||
}
|
||||
|
||||
//string valCode = await RedisHelper.GetAsync(request.CodeKey);
|
||||
//if (!valCode.Has() || valCode.ToLower() != request.Code.ToLower())
|
||||
//{
|
||||
// BusinessException.Throw("验证码错误");
|
||||
//}
|
||||
|
||||
var manage = await _dbContext.Set<Manager>()
|
||||
.FirstOrDefaultAsync(m => (m.LoginCode == request.Logincode || m.Phone == request.Logincode)
|
||||
&& m.State == (int)ManagerState.Enabled);
|
||||
|
||||
if (manage == null)
|
||||
{
|
||||
BusinessException.Throw("登录名不存在");
|
||||
}
|
||||
|
||||
if (HashPassword(request.Password).ToUpper() != manage.Password.ToUpper())
|
||||
{
|
||||
BusinessException.Throw("密码错误");
|
||||
}
|
||||
manage.TenantId = 1;
|
||||
_dbContext.Set<Manager>().Update(manage);
|
||||
|
||||
return await LoginInternal(manage);
|
||||
}
|
||||
|
||||
public async Task<LoginResponse> LoginTemp(LoginRequest request)
|
||||
{
|
||||
if (request == null
|
||||
|| !request.Logincode.Has()
|
||||
|| !request.Password.Has()
|
||||
)
|
||||
{
|
||||
BusinessException.Throw("登陆信息异常");
|
||||
}
|
||||
|
||||
var manage = await _dbContext.Set<Manager>()
|
||||
.FirstOrDefaultAsync(m => (m.LoginCode == request.Logincode || m.Phone == request.Logincode)
|
||||
&& m.State == (int)ManagerState.Enabled);
|
||||
|
||||
if (manage == null)
|
||||
{
|
||||
BusinessException.Throw("登录名不存在");
|
||||
}
|
||||
|
||||
if (HashPassword(request.Password).ToUpper() != manage.Password.ToUpper())
|
||||
{
|
||||
BusinessException.Throw("密码错误");
|
||||
}
|
||||
|
||||
return await LoginInternal(manage);
|
||||
}
|
||||
|
||||
public async Task<LoginAndroidManagerResponse> LoginAndroidTemp(LoginRequest request)
|
||||
{
|
||||
if (request == null
|
||||
|| !request.Logincode.Has()
|
||||
|| !request.Password.Has()
|
||||
)
|
||||
{
|
||||
BusinessException.Throw("登陆信息异常");
|
||||
}
|
||||
|
||||
var manage = await _dbContext.Set<Manager>()
|
||||
.FirstOrDefaultAsync(m => (m.LoginCode == request.Logincode || m.Phone == request.Logincode)
|
||||
&& m.DeleteTag == 0
|
||||
&& m.State == (int)ManagerState.Enabled);
|
||||
|
||||
if (manage == null)
|
||||
{
|
||||
BusinessException.Throw("登录名不存在");
|
||||
}
|
||||
|
||||
if (HashPassword(request.Password).ToUpper() != manage.Password.ToUpper())
|
||||
{
|
||||
BusinessException.Throw("密码错误");
|
||||
}
|
||||
|
||||
return await LoginAndroidInternal(manage);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 通过微信的opid登录
|
||||
/// </summary>
|
||||
/// <param name="openId"></param>
|
||||
/// <returns></returns>
|
||||
|
||||
public async Task<LoginResponse> LoginOpenid(string openId)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(openId))
|
||||
{
|
||||
BusinessException.Throw("登陆信息异常");
|
||||
}
|
||||
|
||||
openId = openId.Trim();
|
||||
var manage = await _dbContext.Set<Manager>()
|
||||
.FirstOrDefaultAsync(m => (m.WxOpenid == openId
|
||||
&& m.DeleteTag == 0
|
||||
&& m.State == (int)ManagerState.Enabled));
|
||||
if (manage == null)
|
||||
{
|
||||
BusinessException.Throw("没有绑定微信登录");
|
||||
}
|
||||
|
||||
return await LoginInternal(manage);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 通过微信的opid登录
|
||||
/// </summary>
|
||||
/// <param name="openId"></param>
|
||||
/// <returns></returns>
|
||||
|
||||
public async Task<string> GenerateTokenByOpenid(string openId)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(openId))
|
||||
{
|
||||
BusinessException.Throw("登陆信息异常");
|
||||
}
|
||||
|
||||
openId = openId.Trim();
|
||||
var manage = await _dbContext.Set<Manager>()
|
||||
.FirstOrDefaultAsync(m => (m.WxOpenid == openId
|
||||
&& m.DeleteTag == 0
|
||||
&& m.State == (int)ManagerState.Enabled));
|
||||
if (manage == null)
|
||||
{
|
||||
BusinessException.Throw("没有绑定微信登录");
|
||||
}
|
||||
|
||||
var tokenDic = new Dictionary<string, object>()
|
||||
{
|
||||
{"OpenId",openId},
|
||||
{"LoginName", manage.LoginCode},
|
||||
{"RoleName", ""},
|
||||
{"OperaterID", manage.Id},
|
||||
{"TenantId", manage.TenantId}
|
||||
};
|
||||
|
||||
var token = GenerateToken(tokenDic);
|
||||
return token;
|
||||
}
|
||||
|
||||
private async Task<LoginResponse> LoginInternal(Manager manage)
|
||||
{
|
||||
var tokenDic = new Dictionary<string, object>()
|
||||
{
|
||||
{"LoginName", manage.LoginCode},
|
||||
{"RoleName", ""},
|
||||
{"OperaterID", manage.Id},
|
||||
{"TenantId", manage.TenantId}
|
||||
};
|
||||
|
||||
if (manage.IsRoot != 1)
|
||||
{
|
||||
//int[] domains = await _dbContext.Set<etor_authority_managerdatadomain>()
|
||||
// .Where(p => p.owner_id == manage.TenantId && p.DeleteTag == 0 && p.managerid == manage.Id)
|
||||
// .Select(t => t.projectcode)
|
||||
// .ToArrayAsync();
|
||||
|
||||
//tokenDic.Add("DataDomain", domains);
|
||||
}
|
||||
|
||||
var token = GenerateToken(tokenDic);
|
||||
|
||||
var response = new LoginManagerResponse().FromEntity(manage);
|
||||
return new LoginResponse()
|
||||
{
|
||||
Token = token,
|
||||
Manager = response
|
||||
};
|
||||
}
|
||||
/// <summary>
|
||||
/// 重新获取token
|
||||
/// </summary>
|
||||
/// <param name="request"></param>
|
||||
/// <returns></returns>
|
||||
internal async Task<string> AgainGetToken(RequestBase<AgainTokenDTO> request)
|
||||
{
|
||||
if (null == request|| request.Data==null) BusinessException.Throw("参数错误");
|
||||
var token = request.Data.Token;
|
||||
var ManageUserInfo = new ManageUserInfo();
|
||||
if (CheckToken(request.Data.Token, out ManageUserInfo))
|
||||
{
|
||||
var tokenDic = new Dictionary<string, object>()
|
||||
{
|
||||
{"LoginName", ManageUserInfo.LoginName},
|
||||
{"RoleName", ManageUserInfo.RoleName},
|
||||
{"OperaterID", ManageUserInfo.OperaterId},
|
||||
{"OwnerID", ManageUserInfo.TenantId}
|
||||
};
|
||||
switch (request.Data.Type)
|
||||
{
|
||||
case AgainTokenType.Expire:
|
||||
break;
|
||||
//case AgainTokenType.Project:
|
||||
// var manager = await _dbContext.Set<Manager>()
|
||||
// .FirstOrDefaultAsync(s=>s.Id == request.OperaterId);
|
||||
// if (manager.IsRoot != 1)
|
||||
// {
|
||||
// int[] domains = await _dbContext.Set<etor_authority_managerdatadomain>()
|
||||
// .Where(p => p.owner_id == manager.TenantId && p.DeleteTag == 0 && p.managerid == manager.Id)
|
||||
// .Select(t => t.projectcode)
|
||||
// .ToArrayAsync();
|
||||
|
||||
// tokenDic.Add("DataDomain", domains);
|
||||
// }
|
||||
// break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
token = GenerateToken(tokenDic);
|
||||
}
|
||||
else
|
||||
{
|
||||
BusinessException.Throw("参数错误");
|
||||
}
|
||||
return token;
|
||||
}
|
||||
|
||||
private async Task<LoginAndroidManagerResponse> LoginAndroidInternal(Manager manage)
|
||||
{
|
||||
var response = new LoginAndroidManagerResponse().FromEntity(manage);
|
||||
return response;
|
||||
}
|
||||
|
||||
private static string GenerateToken(Dictionary<string, object> param, int timeoutMinutes = 180)
|
||||
{
|
||||
IJwtAlgorithm algorithm = new HMACSHA256Algorithm();
|
||||
IJsonSerializer serializer = new JsonNetSerializer();
|
||||
IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder();
|
||||
IJwtEncoder encoder = new JwtEncoder(algorithm, serializer, urlEncoder);
|
||||
|
||||
long now = DateTimeHelper.ToUnixTimestamp(DateTime.Now);
|
||||
|
||||
param["iat"] = now; //签发时间
|
||||
param["exp"] = now + Math.Max(0, timeoutMinutes) * 60; //过期时间
|
||||
|
||||
var token = encoder.Encode(param, _secret);
|
||||
|
||||
return token;
|
||||
}
|
||||
|
||||
public bool CheckToken(string token, out ManageUserInfo userInfo)
|
||||
{
|
||||
userInfo = null;
|
||||
try
|
||||
{
|
||||
IJsonSerializer serializer = new JsonNetSerializer();
|
||||
IDateTimeProvider provider = new UtcDateTimeProvider();
|
||||
IJwtValidator validator = new JwtValidator(serializer, provider);
|
||||
IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder();
|
||||
IJwtDecoder decoder = new JwtDecoder(serializer, validator, urlEncoder);
|
||||
var payload = decoder.Decode(token, _secret, verify: true);
|
||||
|
||||
userInfo = payload.FromJsonTo<ManageUserInfo>();
|
||||
|
||||
if (userInfo == null || userInfo.TenantId == 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (userInfo.IssueTimestamp == 0
|
||||
|| DateTimeHelper.UnixTimeStampToDateTime(userInfo.IssueTimestamp) <
|
||||
DateTime.Now.AddHours(-4))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
catch (TokenExpiredException ex)
|
||||
{
|
||||
LogHelper.Error("oken has expired", ex.Message);
|
||||
return false;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LogHelper.Error("CheckToken失败", ex.Message);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public static string HashPassword(string password)
|
||||
{
|
||||
using (MD5 md5 = MD5.Create())
|
||||
{
|
||||
byte[] bytes = md5.ComputeHash(Encoding.UTF8.GetBytes(password));
|
||||
return Convert.ToBase64String(bytes);
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<Manager> GetById(int id)
|
||||
{
|
||||
var manage = await _dbContext.Set<Manager>().FindAsync(id);
|
||||
|
||||
return manage;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,115 +1,115 @@
|
||||
using Hncore.Infrastructure.Common;
|
||||
using Hncore.Infrastructure.Data;
|
||||
using Hncore.Infrastructure.Service;
|
||||
using Hncore.Infrastructure.WebApi;
|
||||
using Hncore.Pass.BaseInfo.Models;
|
||||
using Hncore.Pass.BaseInfo.Request;
|
||||
using Hncore.Pass.BaseInfo.Request.User;
|
||||
using Hncore.Pass.BaseInfo.Service;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Hncore.Pass.Vpn.Service
|
||||
{
|
||||
public partial class UserChargeOrderService : ServiceBase<UserChargeOrderEntity>, IFindService
|
||||
{
|
||||
UserDbContext m_DbContext;
|
||||
UserService m_UserService;
|
||||
public UserChargeOrderService(UserDbContext dbContext
|
||||
, UserService _UserService
|
||||
, IHttpContextAccessor httpContextAccessor) : base(dbContext, httpContextAccessor)
|
||||
{
|
||||
m_DbContext = dbContext;
|
||||
m_UserService = _UserService;
|
||||
}
|
||||
|
||||
public async Task<ApiResult<UserChargeOrderEntity>> CreateOrder(CreateOrderRequest request, int userId)
|
||||
{
|
||||
if (request.ChargeAmount <= 0)
|
||||
{
|
||||
BusinessException.Throw("充值金额不正确");
|
||||
}
|
||||
var userEntity = await m_UserService.GetById(userId);
|
||||
|
||||
if (userEntity == null)
|
||||
{
|
||||
BusinessException.Throw("用户不存在");
|
||||
}
|
||||
var order = new UserChargeOrderEntity()
|
||||
{
|
||||
OrderName = $"充值{request.ChargeAmount}",
|
||||
OrderNo = GeneratOrderNO(userId),
|
||||
OrderState = UOrderStatus.NoPay,
|
||||
UserId = userId,
|
||||
UserName = userEntity.LoginCode,
|
||||
PayChannel = request.PayChannel,
|
||||
Channel = request.Channel,
|
||||
OrderAmount = request.ChargeAmount,
|
||||
PaymentAmount = request.ChargeAmount,
|
||||
};
|
||||
await this.Add(order);
|
||||
return new ApiResult<UserChargeOrderEntity>(order);
|
||||
}
|
||||
|
||||
private string GeneratOrderNO(int userId)
|
||||
{
|
||||
var code = ValidateCodeHelper.MakeNumCode(6);
|
||||
var userStr = userId.ToString().PadRight(6, '0');
|
||||
var str = $"{DateTime.Now.ToString("yyyyMMdd")}{userStr}{code}";
|
||||
var pre = "cz";
|
||||
return pre + str;
|
||||
}
|
||||
|
||||
public async Task<UserChargeOrderEntity> GetOrderByNo(string no, UOrderStatus status = 0)
|
||||
{
|
||||
var order = await this.Query(m => m.OrderNo == no && (status == 0 || m.OrderState == status)).FirstOrDefaultAsync();
|
||||
return order;
|
||||
}
|
||||
|
||||
public async Task<List<UserChargeOrderEntity>> GetOrders(UOrderStatus status = 0, int top = 100)
|
||||
{
|
||||
var orders = await this.Query(m => m.OrderState == status).OrderByDescending(m => m.Id).Take(top).ToListAsync();
|
||||
return orders;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 处理成功的订单
|
||||
/// </summary>
|
||||
/// <param name="order"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<bool> ProcessOrderAccount(UserChargeOrderEntity order)
|
||||
{
|
||||
if (order.OrderState != UOrderStatus.PayOk) return false;
|
||||
|
||||
var request = new UpdateAmountRequest()
|
||||
{
|
||||
Amount = order.OrderAmount,
|
||||
AttchInfo = order.OrderNo,
|
||||
OpAmountType = ScoreType.UserCharge,
|
||||
OperateUserName = order.UserName,
|
||||
UserId = order.UserId
|
||||
};
|
||||
|
||||
try
|
||||
{
|
||||
var ret = await m_UserService.UpdateAmount(request);
|
||||
if (ret.Code == ResultCode.C_SUCCESS)
|
||||
{
|
||||
order.OrderState = UOrderStatus.Complete;
|
||||
await this.Update(order);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LogHelper.Error("处理充值订单", ex);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
using Hncore.Infrastructure.Common;
|
||||
using Hncore.Infrastructure.Data;
|
||||
using Hncore.Infrastructure.Service;
|
||||
using Hncore.Infrastructure.WebApi;
|
||||
using Hncore.Pass.BaseInfo.Models;
|
||||
using Hncore.Pass.BaseInfo.Request;
|
||||
using Hncore.Pass.BaseInfo.Request.User;
|
||||
using Hncore.Pass.BaseInfo.Service;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Hncore.Pass.Vpn.Service
|
||||
{
|
||||
public partial class UserChargeOrderService : ServiceBase<UserChargeOrderEntity>, IFindService
|
||||
{
|
||||
UserDbContext m_DbContext;
|
||||
UserService m_UserService;
|
||||
public UserChargeOrderService(UserDbContext dbContext
|
||||
, UserService _UserService
|
||||
, IHttpContextAccessor httpContextAccessor) : base(dbContext, httpContextAccessor)
|
||||
{
|
||||
m_DbContext = dbContext;
|
||||
m_UserService = _UserService;
|
||||
}
|
||||
|
||||
public async Task<ApiResult<UserChargeOrderEntity>> CreateOrder(CreateOrderRequest request, int userId)
|
||||
{
|
||||
if (request.ChargeAmount <= 0)
|
||||
{
|
||||
BusinessException.Throw("充值金额不正确");
|
||||
}
|
||||
var userEntity = await m_UserService.GetById(userId);
|
||||
|
||||
if (userEntity == null)
|
||||
{
|
||||
BusinessException.Throw("用户不存在");
|
||||
}
|
||||
var order = new UserChargeOrderEntity()
|
||||
{
|
||||
OrderName = $"充值{request.ChargeAmount}",
|
||||
OrderNo = GeneratOrderNO(userId),
|
||||
OrderState = UOrderStatus.NoPay,
|
||||
UserId = userId,
|
||||
UserName = userEntity.LoginCode,
|
||||
PayChannel = request.PayChannel,
|
||||
Channel = request.Channel,
|
||||
OrderAmount = request.ChargeAmount,
|
||||
PaymentAmount = request.ChargeAmount,
|
||||
};
|
||||
await this.Add(order);
|
||||
return new ApiResult<UserChargeOrderEntity>(order);
|
||||
}
|
||||
|
||||
private string GeneratOrderNO(int userId)
|
||||
{
|
||||
var code = ValidateCodeHelper.MakeNumCode(6);
|
||||
var userStr = userId.ToString().PadRight(6, '0');
|
||||
var str = $"{DateTime.Now.ToString("yyyyMMdd")}{userStr}{code}";
|
||||
var pre = "cz";
|
||||
return pre + str;
|
||||
}
|
||||
|
||||
public async Task<UserChargeOrderEntity> GetOrderByNo(string no, UOrderStatus status = 0)
|
||||
{
|
||||
var order = await this.Query(m => m.OrderNo == no && (status == 0 || m.OrderState == status)).FirstOrDefaultAsync();
|
||||
return order;
|
||||
}
|
||||
|
||||
public async Task<List<UserChargeOrderEntity>> GetOrders(UOrderStatus status = 0, int top = 100)
|
||||
{
|
||||
var orders = await this.Query(m => m.OrderState == status).OrderByDescending(m => m.Id).Take(top).ToListAsync();
|
||||
return orders;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 处理成功的订单
|
||||
/// </summary>
|
||||
/// <param name="order"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<bool> ProcessOrderAccount(UserChargeOrderEntity order)
|
||||
{
|
||||
if (order.OrderState != UOrderStatus.PayOk) return false;
|
||||
|
||||
var request = new UpdateAmountRequest()
|
||||
{
|
||||
Amount = order.OrderAmount,
|
||||
AttchInfo = order.OrderNo,
|
||||
OpAmountType = ScoreType.UserCharge,
|
||||
OperateUserName = order.UserName,
|
||||
UserId = order.UserId
|
||||
};
|
||||
|
||||
try
|
||||
{
|
||||
var ret = await m_UserService.UpdateAmount(request);
|
||||
if (ret.Code == ResultCode.C_SUCCESS)
|
||||
{
|
||||
order.OrderState = UOrderStatus.Complete;
|
||||
await this.Update(order);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LogHelper.Error("处理充值订单", ex);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,70 +1,70 @@
|
||||
using Hncore.Infrastructure.Service;
|
||||
using Hncore.Pass.BaseInfo.Models;
|
||||
using Hncore.Pass.BaseInfo.Request.User;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq.Expressions;
|
||||
using System.Threading.Tasks;
|
||||
using Hncore.Infrastructure.Extension;
|
||||
using Hncore.Infrastructure.EntitiesExtension;
|
||||
using Hncore.Infrastructure.Data;
|
||||
using System.Linq;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo.Service
|
||||
{
|
||||
public class UserScoreService : ServiceBase<UserScore>, IFindService
|
||||
{
|
||||
private UserDbContext m_DbContext;
|
||||
public UserScoreService(UserDbContext dbContext, IHttpContextAccessor httpContextAccessor) : base(dbContext, httpContextAccessor)
|
||||
{
|
||||
m_DbContext = dbContext;
|
||||
}
|
||||
|
||||
public bool ExistTaoBaoScore(string orderNo)
|
||||
{
|
||||
return this.Exist(m => m.ScoreType == ScoreType.TaoBaoAdd && m.Remark == orderNo);
|
||||
}
|
||||
|
||||
public async Task<List<UserScore>> Details(int userId)
|
||||
{
|
||||
return await this.Query(m => m.UserId == userId).OrderByDescending(m => m.Id).ToListAsync();
|
||||
}
|
||||
|
||||
public async Task<PageData<UserScore>> Details(QueryAmountRequest request)
|
||||
{
|
||||
|
||||
Expression<Func<UserScore, bool>> exp = m => true;
|
||||
|
||||
if (request.KeyWord.Has())
|
||||
{
|
||||
exp = exp.And(m => m.UserName.Contains(request.KeyWord) || m.OperateUserName.Contains(request.KeyWord) || m.ScoreTypeName.Contains(request.KeyWord) || m.Remark.Contains(request.KeyWord));
|
||||
}
|
||||
if (request.Type.HasValue&&request.Type>0)
|
||||
{
|
||||
exp = exp.And(m => m.ScoreType == (ScoreType)request.Type);
|
||||
}
|
||||
|
||||
return await this.Query(exp).OrderByDescending(m=>m.Id).ListPagerAsync(request.PageSize, request.PageIndex,true);
|
||||
}
|
||||
|
||||
|
||||
public async Task<List<UserScore>> DetailsAll(QueryAmountRequest request)
|
||||
{
|
||||
|
||||
Expression<Func<UserScore, bool>> exp = m => true;
|
||||
|
||||
if (request.KeyWord.Has())
|
||||
{
|
||||
exp = exp.And(m => m.UserName.Contains(request.KeyWord) || m.OperateUserName.Contains(request.KeyWord));
|
||||
}
|
||||
if (request.Type.HasValue && request.Type > 0)
|
||||
{
|
||||
exp = exp.And(m => m.ScoreType == (ScoreType)request.Type);
|
||||
}
|
||||
|
||||
return await this.Query(exp).OrderByDescending(m => m.Id).ToListAsync();
|
||||
}
|
||||
}
|
||||
using Hncore.Infrastructure.Service;
|
||||
using Hncore.Pass.BaseInfo.Models;
|
||||
using Hncore.Pass.BaseInfo.Request.User;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq.Expressions;
|
||||
using System.Threading.Tasks;
|
||||
using Hncore.Infrastructure.Extension;
|
||||
using Hncore.Infrastructure.EntitiesExtension;
|
||||
using Hncore.Infrastructure.Data;
|
||||
using System.Linq;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo.Service
|
||||
{
|
||||
public class UserScoreService : ServiceBase<UserScore>, IFindService
|
||||
{
|
||||
private UserDbContext m_DbContext;
|
||||
public UserScoreService(UserDbContext dbContext, IHttpContextAccessor httpContextAccessor) : base(dbContext, httpContextAccessor)
|
||||
{
|
||||
m_DbContext = dbContext;
|
||||
}
|
||||
|
||||
public bool ExistTaoBaoScore(string orderNo)
|
||||
{
|
||||
return this.Exist(m => m.ScoreType == ScoreType.TaoBaoAdd && m.Remark == orderNo);
|
||||
}
|
||||
|
||||
public async Task<List<UserScore>> Details(int userId)
|
||||
{
|
||||
return await this.Query(m => m.UserId == userId).OrderByDescending(m => m.Id).ToListAsync();
|
||||
}
|
||||
|
||||
public async Task<PageData<UserScore>> Details(QueryAmountRequest request)
|
||||
{
|
||||
|
||||
Expression<Func<UserScore, bool>> exp = m => true;
|
||||
|
||||
if (request.KeyWord.Has())
|
||||
{
|
||||
exp = exp.And(m => m.UserName.Contains(request.KeyWord) || m.OperateUserName.Contains(request.KeyWord) || m.ScoreTypeName.Contains(request.KeyWord) || m.Remark.Contains(request.KeyWord));
|
||||
}
|
||||
if (request.Type.HasValue&&request.Type>0)
|
||||
{
|
||||
exp = exp.And(m => m.ScoreType == (ScoreType)request.Type);
|
||||
}
|
||||
|
||||
return await this.Query(exp).OrderByDescending(m=>m.Id).ListPagerAsync(request.PageSize, request.PageIndex,true);
|
||||
}
|
||||
|
||||
|
||||
public async Task<List<UserScore>> DetailsAll(QueryAmountRequest request)
|
||||
{
|
||||
|
||||
Expression<Func<UserScore, bool>> exp = m => true;
|
||||
|
||||
if (request.KeyWord.Has())
|
||||
{
|
||||
exp = exp.And(m => m.UserName.Contains(request.KeyWord) || m.OperateUserName.Contains(request.KeyWord));
|
||||
}
|
||||
if (request.Type.HasValue && request.Type > 0)
|
||||
{
|
||||
exp = exp.And(m => m.ScoreType == (ScoreType)request.Type);
|
||||
}
|
||||
|
||||
return await this.Query(exp).OrderByDescending(m => m.Id).ToListAsync();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,361 +1,361 @@
|
||||
using Hncore.Infrastructure.Common;
|
||||
using Hncore.Infrastructure.Data;
|
||||
using Hncore.Infrastructure.Extension;
|
||||
using Hncore.Infrastructure.Service;
|
||||
using Hncore.Infrastructure.WebApi;
|
||||
using Hncore.Pass.BaseInfo.Models;
|
||||
using Hncore.Pass.BaseInfo.Request;
|
||||
using Hncore.Pass.BaseInfo.Request.User;
|
||||
using Hncore.Pass.BaseInfo.Response;
|
||||
using JWT;
|
||||
using JWT.Algorithms;
|
||||
using JWT.Serializers;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||
using System;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.EntityFrameworkCore.Internal;
|
||||
using Hncore.Infrastructure.SMS;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo.Service
|
||||
{
|
||||
public class UserService : ServiceBase<User>, IFindService
|
||||
{
|
||||
private static readonly AsyncLock _mutex1 = new AsyncLock();
|
||||
private static string _secret = "hncore_yh_lzh_20f_2020_READY";
|
||||
|
||||
private UserDbContext _dbContext;
|
||||
|
||||
private WxAppService m_WxAppService;
|
||||
private WxAppUserService m_WxAppUserService;
|
||||
private UserScoreService m_UserScoreService;
|
||||
private ManageService m_ManageService;
|
||||
|
||||
private static ConcurrentDictionary<int, int> manangeDic = new ConcurrentDictionary<int, int>();
|
||||
public UserService(UserDbContext dbContext
|
||||
, WxAppService _WxAppService
|
||||
, WxAppUserService _WxAppUserService
|
||||
,UserScoreService _UserScoreService
|
||||
, ManageService _ManageService
|
||||
, IHttpContextAccessor httpContextAccessor) : base(dbContext, httpContextAccessor)
|
||||
{
|
||||
_dbContext = dbContext;
|
||||
m_WxAppUserService = _WxAppUserService;
|
||||
m_WxAppService = _WxAppService;
|
||||
m_UserScoreService = _UserScoreService;
|
||||
m_ManageService = _ManageService;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 通过微信的opid登录
|
||||
/// </summary>
|
||||
/// <param name="openId"></param>
|
||||
/// <returns></returns>
|
||||
|
||||
public async Task<UserLoginResponse> LoginAndBindWx(WxLoginRequest request)
|
||||
{
|
||||
|
||||
if (request == null || request.Openid.NotHas() || request.AppId.NotHas())
|
||||
{
|
||||
BusinessException.Throw("登陆信息异常");
|
||||
}
|
||||
|
||||
var existWxUserInfo = await m_WxAppUserService.GetWxAppUserInfo(request.AppId, request.Openid);
|
||||
if (existWxUserInfo == null || existWxUserInfo.UserId == 0)
|
||||
{
|
||||
var wxApp = await m_WxAppService.GetApp(request.AppId);
|
||||
if (wxApp == null)
|
||||
BusinessException.Throw("没有关联公众号");
|
||||
var userEntity = new User()
|
||||
{
|
||||
Name = request.UserName,
|
||||
PhotoUrl = request.HeadImgUrl,
|
||||
Sex = request.Sex,
|
||||
TenantId = wxApp.TenantId,
|
||||
Password = RandomHelper.GetRandomString(6)
|
||||
};
|
||||
await this.Add(userEntity);
|
||||
var wxUserInfo = request.MapTo<WxAppUserEntity>();
|
||||
wxUserInfo.UserId = userEntity.Id;
|
||||
wxUserInfo.TenantId = wxApp.TenantId;
|
||||
wxUserInfo.StoreId = wxApp.StoreId;
|
||||
existWxUserInfo = await m_WxAppUserService.Bind(wxUserInfo);
|
||||
}
|
||||
var user = new User()
|
||||
{
|
||||
TenantId = existWxUserInfo.TenantId,
|
||||
Id = existWxUserInfo.UserId
|
||||
};
|
||||
var ret = LoginInternal(user, existWxUserInfo);
|
||||
ret.MpUser = new WxMpUserModel()
|
||||
{
|
||||
AppId = request.AppId,
|
||||
OpenId = existWxUserInfo.Openid,
|
||||
};
|
||||
return ret;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 通过微信的opid登录
|
||||
/// </summary>
|
||||
/// <param name="openId"></param>
|
||||
/// <returns></returns>
|
||||
|
||||
public async Task<UserLoginResponse> Login(LoginRequest request)
|
||||
{
|
||||
|
||||
if (request == null || request.Logincode.NotHas() || request.Password.NotHas())
|
||||
{
|
||||
BusinessException.Throw("用户名或者密码为空");
|
||||
}
|
||||
var userInfo = await this.Query(m => (m.Phone == request.Logincode && m.Password == HashPassword(request.Password))||(m.LoginCode == request.Logincode && m.Password == HashPassword(request.Password))||(m.TaoBao == request.Logincode && m.Password == HashPassword(request.Password))).FirstOrDefaultAsync();
|
||||
if (userInfo == null)
|
||||
{
|
||||
BusinessException.Throw("用户名或者密码不正确");
|
||||
}
|
||||
var ret = LoginInternal(userInfo);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
public UserLoginResponse LoginInternal(User manage, WxAppUserEntity wxUser)
|
||||
{
|
||||
var tokenDic = new Dictionary<string, object>()
|
||||
{
|
||||
{"LoginName", manage.LoginCode},
|
||||
{ "Name", wxUser.NickName},
|
||||
{"UserId", manage.Id},
|
||||
{"TenantId", manage.TenantId},
|
||||
{"OpenId", wxUser.Openid},
|
||||
{"AppType", wxUser.AppType},
|
||||
{"AppId", wxUser.Appid},
|
||||
{"StoreId", wxUser.StoreId},
|
||||
};
|
||||
var token = GenerateToken(tokenDic);
|
||||
var response = new UserLoginModel().FromEntity(manage);
|
||||
return new UserLoginResponse()
|
||||
{
|
||||
Token = token,
|
||||
User = response
|
||||
};
|
||||
}
|
||||
private UserLoginResponse LoginInternal(User manage)
|
||||
{
|
||||
var tokenDic = new Dictionary<string, object>()
|
||||
{
|
||||
{"LoginName", manage.LoginCode},
|
||||
{ "Name", manage.Name},
|
||||
{"UserId", manage.Id},
|
||||
{"TenantId", manage.TenantId},
|
||||
{"OpenId", ""},
|
||||
{"AppType", ""},
|
||||
{"AppId", ""},
|
||||
{"StoreId", "0"},
|
||||
};
|
||||
var token = GenerateToken(tokenDic);
|
||||
var response = new UserLoginModel().FromEntity(manage);
|
||||
return new UserLoginResponse()
|
||||
{
|
||||
Token = token,
|
||||
User = response
|
||||
};
|
||||
}
|
||||
|
||||
private static string GenerateToken(Dictionary<string, object> param, int timeoutMinutes = 180)
|
||||
{
|
||||
IJwtAlgorithm algorithm = new HMACSHA256Algorithm();
|
||||
IJsonSerializer serializer = new JsonNetSerializer();
|
||||
IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder();
|
||||
IJwtEncoder encoder = new JwtEncoder(algorithm, serializer, urlEncoder);
|
||||
|
||||
long now = DateTimeHelper.ToUnixTimestamp(DateTime.Now);
|
||||
|
||||
param["iat"] = now; //签发时间
|
||||
param["exp"] = DateTimeHelper.ToUnixTimestamp(DateTime.Now.AddDays(10)); //now + Math.Max(0, timeoutMinutes) * 60; //过期时间
|
||||
|
||||
var token = encoder.Encode(param, _secret);
|
||||
|
||||
return token;
|
||||
}
|
||||
|
||||
|
||||
public static string HashPassword(string password)
|
||||
{
|
||||
using (MD5 md5 = MD5.Create())
|
||||
{
|
||||
byte[] bytes = md5.ComputeHash(Encoding.UTF8.GetBytes(password));
|
||||
return Convert.ToBase64String(bytes);
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<ApiResult> Regist(User entity)
|
||||
{
|
||||
if (entity.LoginCode.NotHas() || entity.Phone.NotHas())
|
||||
{
|
||||
return new ApiResult(ResultCode.C_LONGIN_NAME_ERROR, "账号或者手机号为空");
|
||||
}
|
||||
|
||||
if (this.Exist(m => m.LoginCode == entity.LoginCode || m.Phone == entity.Phone || m.TaoBao == entity.Phone))
|
||||
{
|
||||
return new ApiResult(ResultCode.C_ALREADY_EXISTS_ERROR, "该账号或者手机号被注册了");
|
||||
}
|
||||
entity.Password = HashPassword(entity.Password);
|
||||
entity.id_code="";
|
||||
|
||||
entity = await this.Add(entity);
|
||||
|
||||
await RandomAssignManager(entity.Id);
|
||||
|
||||
return new ApiResult(entity);
|
||||
}
|
||||
|
||||
public async Task<User> GetByPhone(string phone)
|
||||
{
|
||||
var entity = await this.Query(m => m.Phone == phone).FirstOrDefaultAsync();
|
||||
return entity;
|
||||
}
|
||||
|
||||
public async Task<ApiResult> UpdatePwd(int userId, string oldPwd, string newPwd)
|
||||
{
|
||||
var entity = await this.GetById(userId);
|
||||
if (newPwd.NotHas())
|
||||
{
|
||||
return new ApiResult(ResultCode.C_INVALID_ERROR, "新密码不能为空");
|
||||
}
|
||||
if (entity.Password != HashPassword(oldPwd))
|
||||
{
|
||||
return new ApiResult(ResultCode.C_INVALID_ERROR, "密码不正确");
|
||||
}
|
||||
entity.Password = HashPassword(newPwd);
|
||||
await this.Update(entity);
|
||||
return new ApiResult(entity);
|
||||
}
|
||||
|
||||
public async Task<ApiResult> UpdatePwd(User entity, string newPwd)
|
||||
{
|
||||
if (newPwd.NotHas())
|
||||
{
|
||||
return new ApiResult(ResultCode.C_INVALID_ERROR, "新密码不能为空");
|
||||
}
|
||||
entity.Password = HashPassword(newPwd);
|
||||
await this.Update(entity);
|
||||
return new ApiResult(ResultCode.C_SUCCESS,"重置成功");
|
||||
}
|
||||
|
||||
public async Task<ApiResult> UpdateAmount(UpdateAmountRequest request,String product="",String package="",String account="")
|
||||
{
|
||||
using (await _mutex1.LockAsync())
|
||||
{
|
||||
var entity = await this.GetById(request.UserId);
|
||||
if (entity == null)
|
||||
return new ApiResult(ResultCode.C_NOT_EXISTS_ERROR, "用户不存在");
|
||||
if (request.Amount <= 0)
|
||||
return new ApiResult(ResultCode.C_INVALID_ERROR, "金额必须大于0");
|
||||
|
||||
var remark = request.AttchInfo;
|
||||
if (product != "") {
|
||||
remark = product+"-"+package+"-"+account;
|
||||
}
|
||||
|
||||
var userScore = new UserScore()
|
||||
{
|
||||
UserId = request.UserId,
|
||||
UserName = entity.LoginCode,
|
||||
ScoreType = request.OpAmountType,
|
||||
ScoreValue = request.Amount,
|
||||
ScoreTypeName = request.OpAmountType.GetEnumDisplayName(),
|
||||
Remark = remark,
|
||||
OperateUserName = request.OperateUserName
|
||||
};
|
||||
|
||||
if (request.OpAmountType == ScoreType.ManagerDeduct || request.OpAmountType == ScoreType.Pay)
|
||||
{
|
||||
if (entity.RestAmount < request.Amount)
|
||||
{
|
||||
return new ApiResult(ResultCode.C_INVALID_ERROR, "余额不足");
|
||||
}
|
||||
userScore.RestAmount1 = entity.RestAmount;
|
||||
entity.RestAmount -= request.Amount;
|
||||
userScore.RestAmount2 = entity.RestAmount;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
userScore.RestAmount1 = entity.RestAmount;
|
||||
entity.RestAmount += request.Amount;
|
||||
userScore.RestAmount2 = entity.RestAmount;
|
||||
}
|
||||
|
||||
using (var tran = await m_DbContextBase.Database.BeginTransactionAsync())
|
||||
{
|
||||
try
|
||||
{
|
||||
await m_UserScoreService.Add(userScore);
|
||||
await this.Update(entity);
|
||||
tran.Commit();
|
||||
return new ApiResult(ResultCode.C_SUCCESS);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
tran.Rollback();
|
||||
LogHelper.Error("UpdateAmount", ex.Message);
|
||||
return new ApiResult(ResultCode.C_INVALID_ERROR);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<bool> RandomAssignManager(int userId)
|
||||
{
|
||||
var userEntity = await this.GetById(userId);
|
||||
var manage = await _dbContext.Set<Manager>()
|
||||
.Where(m => m.RoleId == 100).ToListAsync();
|
||||
|
||||
if (manage == null || manage.Count == 0)
|
||||
return false;
|
||||
|
||||
manage.ForEach(m =>
|
||||
{
|
||||
|
||||
if (!manangeDic.ContainsKey(m.Id))
|
||||
manangeDic[m.Id] = 1;
|
||||
|
||||
|
||||
});
|
||||
|
||||
var removeIds = manangeDic.Where(m => !manage.Select(p => p.Id).Contains(m.Key));
|
||||
|
||||
|
||||
foreach (var kv in removeIds)
|
||||
{
|
||||
manangeDic.TryRemove(kv.Key, out int data);
|
||||
}
|
||||
|
||||
var minKv = manangeDic.OrderBy(m => m.Value).FirstOrDefault();
|
||||
|
||||
//获取管理员信息
|
||||
var manger_info = manage.FirstOrDefault(m => m.Id == minKv.Key);
|
||||
|
||||
userEntity.ManagerId = minKv.Key;
|
||||
userEntity.ManagerName = manger_info.RealName;
|
||||
|
||||
await this.Update(userEntity);
|
||||
|
||||
manangeDic[minKv.Key] = manangeDic[minKv.Key] + 1;
|
||||
|
||||
if (manger_info.RoleId == 100) {
|
||||
AliSmsService.Send("SMS_462001365", new { name = manger_info.RealName,phone=userEntity.Phone }, "聚IP", manger_info.Phone);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
using Hncore.Infrastructure.Common;
|
||||
using Hncore.Infrastructure.Data;
|
||||
using Hncore.Infrastructure.Extension;
|
||||
using Hncore.Infrastructure.Service;
|
||||
using Hncore.Infrastructure.WebApi;
|
||||
using Hncore.Pass.BaseInfo.Models;
|
||||
using Hncore.Pass.BaseInfo.Request;
|
||||
using Hncore.Pass.BaseInfo.Request.User;
|
||||
using Hncore.Pass.BaseInfo.Response;
|
||||
using JWT;
|
||||
using JWT.Algorithms;
|
||||
using JWT.Serializers;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||
using System;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.EntityFrameworkCore.Internal;
|
||||
using Hncore.Infrastructure.SMS;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo.Service
|
||||
{
|
||||
public class UserService : ServiceBase<User>, IFindService
|
||||
{
|
||||
private static readonly AsyncLock _mutex1 = new AsyncLock();
|
||||
private static string _secret = "hncore_yh_lzh_20f_2020_READY";
|
||||
|
||||
private UserDbContext _dbContext;
|
||||
|
||||
private WxAppService m_WxAppService;
|
||||
private WxAppUserService m_WxAppUserService;
|
||||
private UserScoreService m_UserScoreService;
|
||||
private ManageService m_ManageService;
|
||||
|
||||
private static ConcurrentDictionary<int, int> manangeDic = new ConcurrentDictionary<int, int>();
|
||||
public UserService(UserDbContext dbContext
|
||||
, WxAppService _WxAppService
|
||||
, WxAppUserService _WxAppUserService
|
||||
,UserScoreService _UserScoreService
|
||||
, ManageService _ManageService
|
||||
, IHttpContextAccessor httpContextAccessor) : base(dbContext, httpContextAccessor)
|
||||
{
|
||||
_dbContext = dbContext;
|
||||
m_WxAppUserService = _WxAppUserService;
|
||||
m_WxAppService = _WxAppService;
|
||||
m_UserScoreService = _UserScoreService;
|
||||
m_ManageService = _ManageService;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 通过微信的opid登录
|
||||
/// </summary>
|
||||
/// <param name="openId"></param>
|
||||
/// <returns></returns>
|
||||
|
||||
public async Task<UserLoginResponse> LoginAndBindWx(WxLoginRequest request)
|
||||
{
|
||||
|
||||
if (request == null || request.Openid.NotHas() || request.AppId.NotHas())
|
||||
{
|
||||
BusinessException.Throw("登陆信息异常");
|
||||
}
|
||||
|
||||
var existWxUserInfo = await m_WxAppUserService.GetWxAppUserInfo(request.AppId, request.Openid);
|
||||
if (existWxUserInfo == null || existWxUserInfo.UserId == 0)
|
||||
{
|
||||
var wxApp = await m_WxAppService.GetApp(request.AppId);
|
||||
if (wxApp == null)
|
||||
BusinessException.Throw("没有关联公众号");
|
||||
var userEntity = new User()
|
||||
{
|
||||
Name = request.UserName,
|
||||
PhotoUrl = request.HeadImgUrl,
|
||||
Sex = request.Sex,
|
||||
TenantId = wxApp.TenantId,
|
||||
Password = RandomHelper.GetRandomString(6)
|
||||
};
|
||||
await this.Add(userEntity);
|
||||
var wxUserInfo = request.MapTo<WxAppUserEntity>();
|
||||
wxUserInfo.UserId = userEntity.Id;
|
||||
wxUserInfo.TenantId = wxApp.TenantId;
|
||||
wxUserInfo.StoreId = wxApp.StoreId;
|
||||
existWxUserInfo = await m_WxAppUserService.Bind(wxUserInfo);
|
||||
}
|
||||
var user = new User()
|
||||
{
|
||||
TenantId = existWxUserInfo.TenantId,
|
||||
Id = existWxUserInfo.UserId
|
||||
};
|
||||
var ret = LoginInternal(user, existWxUserInfo);
|
||||
ret.MpUser = new WxMpUserModel()
|
||||
{
|
||||
AppId = request.AppId,
|
||||
OpenId = existWxUserInfo.Openid,
|
||||
};
|
||||
return ret;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 通过微信的opid登录
|
||||
/// </summary>
|
||||
/// <param name="openId"></param>
|
||||
/// <returns></returns>
|
||||
|
||||
public async Task<UserLoginResponse> Login(LoginRequest request)
|
||||
{
|
||||
|
||||
if (request == null || request.Logincode.NotHas() || request.Password.NotHas())
|
||||
{
|
||||
BusinessException.Throw("用户名或者密码为空");
|
||||
}
|
||||
var userInfo = await this.Query(m => (m.Phone == request.Logincode && m.Password == HashPassword(request.Password))||(m.LoginCode == request.Logincode && m.Password == HashPassword(request.Password))||(m.TaoBao == request.Logincode && m.Password == HashPassword(request.Password))).FirstOrDefaultAsync();
|
||||
if (userInfo == null)
|
||||
{
|
||||
BusinessException.Throw("用户名或者密码不正确");
|
||||
}
|
||||
var ret = LoginInternal(userInfo);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
public UserLoginResponse LoginInternal(User manage, WxAppUserEntity wxUser)
|
||||
{
|
||||
var tokenDic = new Dictionary<string, object>()
|
||||
{
|
||||
{"LoginName", manage.LoginCode},
|
||||
{ "Name", wxUser.NickName},
|
||||
{"UserId", manage.Id},
|
||||
{"TenantId", manage.TenantId},
|
||||
{"OpenId", wxUser.Openid},
|
||||
{"AppType", wxUser.AppType},
|
||||
{"AppId", wxUser.Appid},
|
||||
{"StoreId", wxUser.StoreId},
|
||||
};
|
||||
var token = GenerateToken(tokenDic);
|
||||
var response = new UserLoginModel().FromEntity(manage);
|
||||
return new UserLoginResponse()
|
||||
{
|
||||
Token = token,
|
||||
User = response
|
||||
};
|
||||
}
|
||||
private UserLoginResponse LoginInternal(User manage)
|
||||
{
|
||||
var tokenDic = new Dictionary<string, object>()
|
||||
{
|
||||
{"LoginName", manage.LoginCode},
|
||||
{ "Name", manage.Name},
|
||||
{"UserId", manage.Id},
|
||||
{"TenantId", manage.TenantId},
|
||||
{"OpenId", ""},
|
||||
{"AppType", ""},
|
||||
{"AppId", ""},
|
||||
{"StoreId", "0"},
|
||||
};
|
||||
var token = GenerateToken(tokenDic);
|
||||
var response = new UserLoginModel().FromEntity(manage);
|
||||
return new UserLoginResponse()
|
||||
{
|
||||
Token = token,
|
||||
User = response
|
||||
};
|
||||
}
|
||||
|
||||
private static string GenerateToken(Dictionary<string, object> param, int timeoutMinutes = 180)
|
||||
{
|
||||
IJwtAlgorithm algorithm = new HMACSHA256Algorithm();
|
||||
IJsonSerializer serializer = new JsonNetSerializer();
|
||||
IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder();
|
||||
IJwtEncoder encoder = new JwtEncoder(algorithm, serializer, urlEncoder);
|
||||
|
||||
long now = DateTimeHelper.ToUnixTimestamp(DateTime.Now);
|
||||
|
||||
param["iat"] = now; //签发时间
|
||||
param["exp"] = DateTimeHelper.ToUnixTimestamp(DateTime.Now.AddDays(10)); //now + Math.Max(0, timeoutMinutes) * 60; //过期时间
|
||||
|
||||
var token = encoder.Encode(param, _secret);
|
||||
|
||||
return token;
|
||||
}
|
||||
|
||||
|
||||
public static string HashPassword(string password)
|
||||
{
|
||||
using (MD5 md5 = MD5.Create())
|
||||
{
|
||||
byte[] bytes = md5.ComputeHash(Encoding.UTF8.GetBytes(password));
|
||||
return Convert.ToBase64String(bytes);
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<ApiResult> Regist(User entity)
|
||||
{
|
||||
if (entity.LoginCode.NotHas() || entity.Phone.NotHas())
|
||||
{
|
||||
return new ApiResult(ResultCode.C_LONGIN_NAME_ERROR, "账号或者手机号为空");
|
||||
}
|
||||
|
||||
if (this.Exist(m => m.LoginCode == entity.LoginCode || m.Phone == entity.Phone || m.TaoBao == entity.Phone))
|
||||
{
|
||||
return new ApiResult(ResultCode.C_ALREADY_EXISTS_ERROR, "该账号或者手机号被注册了");
|
||||
}
|
||||
entity.Password = HashPassword(entity.Password);
|
||||
entity.id_code="";
|
||||
|
||||
entity = await this.Add(entity);
|
||||
|
||||
await RandomAssignManager(entity.Id);
|
||||
|
||||
return new ApiResult(entity);
|
||||
}
|
||||
|
||||
public async Task<User> GetByPhone(string phone)
|
||||
{
|
||||
var entity = await this.Query(m => m.Phone == phone).FirstOrDefaultAsync();
|
||||
return entity;
|
||||
}
|
||||
|
||||
public async Task<ApiResult> UpdatePwd(int userId, string oldPwd, string newPwd)
|
||||
{
|
||||
var entity = await this.GetById(userId);
|
||||
if (newPwd.NotHas())
|
||||
{
|
||||
return new ApiResult(ResultCode.C_INVALID_ERROR, "新密码不能为空");
|
||||
}
|
||||
if (entity.Password != HashPassword(oldPwd))
|
||||
{
|
||||
return new ApiResult(ResultCode.C_INVALID_ERROR, "密码不正确");
|
||||
}
|
||||
entity.Password = HashPassword(newPwd);
|
||||
await this.Update(entity);
|
||||
return new ApiResult(entity);
|
||||
}
|
||||
|
||||
public async Task<ApiResult> UpdatePwd(User entity, string newPwd)
|
||||
{
|
||||
if (newPwd.NotHas())
|
||||
{
|
||||
return new ApiResult(ResultCode.C_INVALID_ERROR, "新密码不能为空");
|
||||
}
|
||||
entity.Password = HashPassword(newPwd);
|
||||
await this.Update(entity);
|
||||
return new ApiResult(ResultCode.C_SUCCESS,"重置成功");
|
||||
}
|
||||
|
||||
public async Task<ApiResult> UpdateAmount(UpdateAmountRequest request,String product="",String package="",String account="")
|
||||
{
|
||||
using (await _mutex1.LockAsync())
|
||||
{
|
||||
var entity = await this.GetById(request.UserId);
|
||||
if (entity == null)
|
||||
return new ApiResult(ResultCode.C_NOT_EXISTS_ERROR, "用户不存在");
|
||||
if (request.Amount <= 0)
|
||||
return new ApiResult(ResultCode.C_INVALID_ERROR, "金额必须大于0");
|
||||
|
||||
var remark = request.AttchInfo;
|
||||
if (product != "") {
|
||||
remark = product+"-"+package+"-"+account;
|
||||
}
|
||||
|
||||
var userScore = new UserScore()
|
||||
{
|
||||
UserId = request.UserId,
|
||||
UserName = entity.LoginCode,
|
||||
ScoreType = request.OpAmountType,
|
||||
ScoreValue = request.Amount,
|
||||
ScoreTypeName = request.OpAmountType.GetEnumDisplayName(),
|
||||
Remark = remark,
|
||||
OperateUserName = request.OperateUserName
|
||||
};
|
||||
|
||||
if (request.OpAmountType == ScoreType.ManagerDeduct || request.OpAmountType == ScoreType.Pay)
|
||||
{
|
||||
if (entity.RestAmount < request.Amount)
|
||||
{
|
||||
return new ApiResult(ResultCode.C_INVALID_ERROR, "余额不足");
|
||||
}
|
||||
userScore.RestAmount1 = entity.RestAmount;
|
||||
entity.RestAmount -= request.Amount;
|
||||
userScore.RestAmount2 = entity.RestAmount;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
userScore.RestAmount1 = entity.RestAmount;
|
||||
entity.RestAmount += request.Amount;
|
||||
userScore.RestAmount2 = entity.RestAmount;
|
||||
}
|
||||
|
||||
using (var tran = await m_DbContextBase.Database.BeginTransactionAsync())
|
||||
{
|
||||
try
|
||||
{
|
||||
await m_UserScoreService.Add(userScore);
|
||||
await this.Update(entity);
|
||||
tran.Commit();
|
||||
return new ApiResult(ResultCode.C_SUCCESS);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
tran.Rollback();
|
||||
LogHelper.Error("UpdateAmount", ex.Message);
|
||||
return new ApiResult(ResultCode.C_INVALID_ERROR);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<bool> RandomAssignManager(int userId)
|
||||
{
|
||||
var userEntity = await this.GetById(userId);
|
||||
var manage = await _dbContext.Set<Manager>()
|
||||
.Where(m => m.RoleId == 100).ToListAsync();
|
||||
|
||||
if (manage == null || manage.Count == 0)
|
||||
return false;
|
||||
|
||||
manage.ForEach(m =>
|
||||
{
|
||||
|
||||
if (!manangeDic.ContainsKey(m.Id))
|
||||
manangeDic[m.Id] = 1;
|
||||
|
||||
|
||||
});
|
||||
|
||||
var removeIds = manangeDic.Where(m => !manage.Select(p => p.Id).Contains(m.Key));
|
||||
|
||||
|
||||
foreach (var kv in removeIds)
|
||||
{
|
||||
manangeDic.TryRemove(kv.Key, out int data);
|
||||
}
|
||||
|
||||
var minKv = manangeDic.OrderBy(m => m.Value).FirstOrDefault();
|
||||
|
||||
//获取管理员信息
|
||||
var manger_info = manage.FirstOrDefault(m => m.Id == minKv.Key);
|
||||
|
||||
userEntity.ManagerId = minKv.Key;
|
||||
userEntity.ManagerName = manger_info.RealName;
|
||||
|
||||
await this.Update(userEntity);
|
||||
|
||||
manangeDic[minKv.Key] = manangeDic[minKv.Key] + 1;
|
||||
|
||||
if (manger_info.RoleId == 100 && manger_info.TenantId == 1 && DateTime.Now.Hour<23) {
|
||||
AliSmsService.Send("SMS_462001365", new { name = manger_info.RealName,phone=userEntity.Phone }, "聚IP", manger_info.Phone);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,22 +1,22 @@
|
||||
using Hncore.Infrastructure.Service;
|
||||
using Hncore.Pass.BaseInfo.Models;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo.Service
|
||||
{
|
||||
|
||||
public partial class WxAppService : ServiceBase<WxAppEntity>, IFindService
|
||||
{
|
||||
public WxAppService(UserDbContext dbContext, IHttpContextAccessor httpContextAccessor) : base(dbContext, httpContextAccessor)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public async Task<WxAppEntity> GetApp(string appId,int appType=1)
|
||||
{
|
||||
return await this.Query(m => m.AppType == appType && m.Appid == appId).FirstOrDefaultAsync();
|
||||
}
|
||||
}
|
||||
using Hncore.Infrastructure.Service;
|
||||
using Hncore.Pass.BaseInfo.Models;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo.Service
|
||||
{
|
||||
|
||||
public partial class WxAppService : ServiceBase<WxAppEntity>, IFindService
|
||||
{
|
||||
public WxAppService(UserDbContext dbContext, IHttpContextAccessor httpContextAccessor) : base(dbContext, httpContextAccessor)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public async Task<WxAppEntity> GetApp(string appId,int appType=1)
|
||||
{
|
||||
return await this.Query(m => m.AppType == appType && m.Appid == appId).FirstOrDefaultAsync();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,63 +1,63 @@
|
||||
|
||||
using Hncore.Infrastructure.Service;
|
||||
using Hncore.Pass.BaseInfo.Models;
|
||||
using Hncore.Pass.Sells.Service;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo.Service
|
||||
{
|
||||
|
||||
public partial class WxAppUserService : ServiceBase<WxAppUserEntity>, IFindService
|
||||
{
|
||||
WxAppService m_WxAppService;
|
||||
CouponService couponService;
|
||||
public WxAppUserService(WxAppService _WxAppService, CouponService _couponService, UserDbContext dbContext, IHttpContextAccessor httpContextAccessor) : base(dbContext, httpContextAccessor)
|
||||
{
|
||||
m_WxAppService = _WxAppService;
|
||||
couponService = _couponService;
|
||||
}
|
||||
|
||||
public async Task<WxAppUserEntity> GetWxAppUserInfo(string appId,string openId, int appType=1)
|
||||
{
|
||||
var wxappInfo = await this.Query(false).FirstOrDefaultAsync(m => m.Appid == appId&&m.AppType==appType&&m.Openid==openId);
|
||||
|
||||
return wxappInfo;
|
||||
}
|
||||
|
||||
public async Task<WxAppUserEntity> Bind(WxAppUserEntity userInfo)
|
||||
{
|
||||
var wxUserInfo = await GetWxUser(userInfo.Appid, userInfo.Openid);
|
||||
if (wxUserInfo == null)
|
||||
{
|
||||
wxUserInfo = await this.Add(userInfo);
|
||||
}
|
||||
else //if (!string.IsNullOrEmpty(userInfo.Openid))
|
||||
{
|
||||
if (wxUserInfo.UserId == 0 && wxUserInfo.IsSubscribe == 1)
|
||||
{
|
||||
await couponService.Give(5, "", userInfo.UserId, 1, Hncore.Pass.Sells.Domain.Enums.CouponOriginType.MP, "¹Ø×¢¹«ÖÚºÅÔùËÍ");
|
||||
}
|
||||
wxUserInfo.UserId = userInfo.UserId;
|
||||
await this.Update(wxUserInfo);
|
||||
}
|
||||
return wxUserInfo;
|
||||
}
|
||||
|
||||
public async Task<WxAppUserEntity> GetWxUser(string appId, int userId)
|
||||
{
|
||||
return await this.Query(m => m.Appid == appId && m.UserId == userId).FirstOrDefaultAsync();
|
||||
}
|
||||
public async Task<WxAppUserEntity> GetWxUser(string appId, string openId)
|
||||
{
|
||||
return await this.Query(m => m.Appid == appId && m.Openid == openId).FirstOrDefaultAsync();
|
||||
}
|
||||
public WxAppUserEntity GetByOpenId(string openId)
|
||||
{
|
||||
return this.Query(m => m.Openid == openId).FirstOrDefault();
|
||||
}
|
||||
}
|
||||
|
||||
using Hncore.Infrastructure.Service;
|
||||
using Hncore.Pass.BaseInfo.Models;
|
||||
using Hncore.Pass.Sells.Service;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo.Service
|
||||
{
|
||||
|
||||
public partial class WxAppUserService : ServiceBase<WxAppUserEntity>, IFindService
|
||||
{
|
||||
WxAppService m_WxAppService;
|
||||
CouponService couponService;
|
||||
public WxAppUserService(WxAppService _WxAppService, CouponService _couponService, UserDbContext dbContext, IHttpContextAccessor httpContextAccessor) : base(dbContext, httpContextAccessor)
|
||||
{
|
||||
m_WxAppService = _WxAppService;
|
||||
couponService = _couponService;
|
||||
}
|
||||
|
||||
public async Task<WxAppUserEntity> GetWxAppUserInfo(string appId,string openId, int appType=1)
|
||||
{
|
||||
var wxappInfo = await this.Query(false).FirstOrDefaultAsync(m => m.Appid == appId&&m.AppType==appType&&m.Openid==openId);
|
||||
|
||||
return wxappInfo;
|
||||
}
|
||||
|
||||
public async Task<WxAppUserEntity> Bind(WxAppUserEntity userInfo)
|
||||
{
|
||||
var wxUserInfo = await GetWxUser(userInfo.Appid, userInfo.Openid);
|
||||
if (wxUserInfo == null)
|
||||
{
|
||||
wxUserInfo = await this.Add(userInfo);
|
||||
}
|
||||
else //if (!string.IsNullOrEmpty(userInfo.Openid))
|
||||
{
|
||||
if (wxUserInfo.UserId == 0 && wxUserInfo.IsSubscribe == 1)
|
||||
{
|
||||
await couponService.Give(5, "", userInfo.UserId, 1, Hncore.Pass.Sells.Domain.Enums.CouponOriginType.MP, "¹Ø×¢¹«ÖÚºÅÔùËÍ");
|
||||
}
|
||||
wxUserInfo.UserId = userInfo.UserId;
|
||||
await this.Update(wxUserInfo);
|
||||
}
|
||||
return wxUserInfo;
|
||||
}
|
||||
|
||||
public async Task<WxAppUserEntity> GetWxUser(string appId, int userId)
|
||||
{
|
||||
return await this.Query(m => m.Appid == appId && m.UserId == userId).FirstOrDefaultAsync();
|
||||
}
|
||||
public async Task<WxAppUserEntity> GetWxUser(string appId, string openId)
|
||||
{
|
||||
return await this.Query(m => m.Appid == appId && m.Openid == openId).FirstOrDefaultAsync();
|
||||
}
|
||||
public WxAppUserEntity GetByOpenId(string openId)
|
||||
{
|
||||
return this.Query(m => m.Openid == openId).FirstOrDefault();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,52 +1,52 @@
|
||||
using Hncore.Infrastructure.Service;
|
||||
using Hncore.Infrastructure.WebApi;
|
||||
using Hncore.Pass.BaseInfo.Map;
|
||||
using Hncore.Pass.BaseInfo.Models;
|
||||
using Hncore.Pass.BaseInfo.Service;
|
||||
using Microsoft.AspNetCore.Builder;
|
||||
using Microsoft.AspNetCore.Hosting;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using System;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo
|
||||
{
|
||||
public class Startup
|
||||
{
|
||||
public IConfiguration Configuration { get; }
|
||||
|
||||
public Startup(IHostingEnvironment env)
|
||||
{
|
||||
Configuration = env.UseAppsettings();
|
||||
}
|
||||
|
||||
public IServiceProvider ConfigureServices(IServiceCollection services)
|
||||
{
|
||||
services.AddDbContext<UserDbContext>(opt => { opt.UseMySql(Configuration["MySql"]); });
|
||||
|
||||
RedisHelper.Initialization(new CSRedis.CSRedisClient(Configuration["Redis"]));
|
||||
|
||||
services.AddHttpClient();
|
||||
|
||||
services.AddScoped<ManageService>();
|
||||
services.AddScoped<UserService>();
|
||||
services.AutoAddService();
|
||||
|
||||
return services.Init(Configuration, CompatibilityVersion.Version_2_2, new ServiceOption
|
||||
{
|
||||
UseGlobalManageAuthFilter = true,
|
||||
IgnoreJsonNullValue=true
|
||||
});
|
||||
}
|
||||
|
||||
public void Configure(IApplicationBuilder app, IApplicationLifetime applicationLifetime,
|
||||
ILoggerFactory loggerFactory)
|
||||
{
|
||||
app.Init(loggerFactory, applicationLifetime);
|
||||
MapConfig.Config();
|
||||
}
|
||||
}
|
||||
using Hncore.Infrastructure.Service;
|
||||
using Hncore.Infrastructure.WebApi;
|
||||
using Hncore.Pass.BaseInfo.Map;
|
||||
using Hncore.Pass.BaseInfo.Models;
|
||||
using Hncore.Pass.BaseInfo.Service;
|
||||
using Microsoft.AspNetCore.Builder;
|
||||
using Microsoft.AspNetCore.Hosting;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using System;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo
|
||||
{
|
||||
public class Startup
|
||||
{
|
||||
public IConfiguration Configuration { get; }
|
||||
|
||||
public Startup(IHostingEnvironment env)
|
||||
{
|
||||
Configuration = env.UseAppsettings();
|
||||
}
|
||||
|
||||
public IServiceProvider ConfigureServices(IServiceCollection services)
|
||||
{
|
||||
services.AddDbContext<UserDbContext>(opt => { opt.UseMySql(Configuration["MySql"]); });
|
||||
|
||||
RedisHelper.Initialization(new CSRedis.CSRedisClient(Configuration["Redis"]));
|
||||
|
||||
services.AddHttpClient();
|
||||
|
||||
services.AddScoped<ManageService>();
|
||||
services.AddScoped<UserService>();
|
||||
services.AutoAddService();
|
||||
|
||||
return services.Init(Configuration, CompatibilityVersion.Version_2_2, new ServiceOption
|
||||
{
|
||||
UseGlobalManageAuthFilter = true,
|
||||
IgnoreJsonNullValue=true
|
||||
});
|
||||
}
|
||||
|
||||
public void Configure(IApplicationBuilder app, IApplicationLifetime applicationLifetime,
|
||||
ILoggerFactory loggerFactory)
|
||||
{
|
||||
app.Init(loggerFactory, applicationLifetime);
|
||||
MapConfig.Config();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,100 +1,100 @@
|
||||
using Microsoft.International.Converters.PinYinConverter;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo.Common
|
||||
{
|
||||
public class PinYinHelper
|
||||
{
|
||||
/*
|
||||
两种方法共用://优先使用NPinyin,转换失败则用 Pinyinconverter
|
||||
NPinyin 错误集:洺(不识别)
|
||||
Pinyinconverter 多音字错误集:广a,区o,强j。都是多音字
|
||||
*/
|
||||
/// <summary>
|
||||
/// 汉字转全拼
|
||||
/// </summary>
|
||||
/// <param name="strChinese"></param>
|
||||
/// <returns></returns>
|
||||
public static string ConvertToAllSpell(string strChinese)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (strChinese.Length != 0)
|
||||
{
|
||||
StringBuilder fullSpell = new StringBuilder();
|
||||
for (int i = 0; i < strChinese.Length; i++)
|
||||
{
|
||||
var chr = strChinese[i];
|
||||
fullSpell.Append(GetSpell(chr));
|
||||
}
|
||||
|
||||
return fullSpell.ToString().ToUpper();
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
return string.Empty;
|
||||
}
|
||||
return string.Empty;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 汉字转首字母
|
||||
/// </summary>
|
||||
/// <param name="strChinese"></param>
|
||||
/// <returns></returns>
|
||||
public static string GetFirstSpell(string strChinese)
|
||||
{
|
||||
//NPinyin.Pinyin.GetInitials(strChinese) 有Bug 洺无法识别
|
||||
//return NPinyin.Pinyin.GetInitials(strChinese);
|
||||
|
||||
try
|
||||
{
|
||||
if (strChinese.Length != 0)
|
||||
{
|
||||
StringBuilder fullSpell = new StringBuilder();
|
||||
for (int i = 0; i < strChinese.Length; i++)
|
||||
{
|
||||
var chr = strChinese[i];
|
||||
fullSpell.Append(GetSpell(chr)[0]);
|
||||
}
|
||||
|
||||
return fullSpell.ToString().ToUpper();
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
return string.Empty;
|
||||
}
|
||||
return string.Empty;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 汉字转拼音
|
||||
/// </summary>
|
||||
/// <param name="chr"></param>
|
||||
/// <returns></returns>
|
||||
private static string GetSpell(char chr)
|
||||
{
|
||||
var coverchr = NPinyin.Pinyin.GetPinyin(chr);
|
||||
//优先使用NPinyin,转换失败则用 Pinyinconverter
|
||||
bool isChineses = ChineseChar.IsValidChar(coverchr[0]);
|
||||
if (isChineses)
|
||||
{
|
||||
ChineseChar chineseChar = new ChineseChar(coverchr[0]);
|
||||
foreach (string value in chineseChar.Pinyins)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(value))
|
||||
{
|
||||
return value.Remove(value.Length - 1, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
return coverchr;
|
||||
}
|
||||
}
|
||||
}
|
||||
using Microsoft.International.Converters.PinYinConverter;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo.Common
|
||||
{
|
||||
public class PinYinHelper
|
||||
{
|
||||
/*
|
||||
两种方法共用://优先使用NPinyin,转换失败则用 Pinyinconverter
|
||||
NPinyin 错误集:洺(不识别)
|
||||
Pinyinconverter 多音字错误集:广a,区o,强j。都是多音字
|
||||
*/
|
||||
/// <summary>
|
||||
/// 汉字转全拼
|
||||
/// </summary>
|
||||
/// <param name="strChinese"></param>
|
||||
/// <returns></returns>
|
||||
public static string ConvertToAllSpell(string strChinese)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (strChinese.Length != 0)
|
||||
{
|
||||
StringBuilder fullSpell = new StringBuilder();
|
||||
for (int i = 0; i < strChinese.Length; i++)
|
||||
{
|
||||
var chr = strChinese[i];
|
||||
fullSpell.Append(GetSpell(chr));
|
||||
}
|
||||
|
||||
return fullSpell.ToString().ToUpper();
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
return string.Empty;
|
||||
}
|
||||
return string.Empty;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 汉字转首字母
|
||||
/// </summary>
|
||||
/// <param name="strChinese"></param>
|
||||
/// <returns></returns>
|
||||
public static string GetFirstSpell(string strChinese)
|
||||
{
|
||||
//NPinyin.Pinyin.GetInitials(strChinese) 有Bug 洺无法识别
|
||||
//return NPinyin.Pinyin.GetInitials(strChinese);
|
||||
|
||||
try
|
||||
{
|
||||
if (strChinese.Length != 0)
|
||||
{
|
||||
StringBuilder fullSpell = new StringBuilder();
|
||||
for (int i = 0; i < strChinese.Length; i++)
|
||||
{
|
||||
var chr = strChinese[i];
|
||||
fullSpell.Append(GetSpell(chr)[0]);
|
||||
}
|
||||
|
||||
return fullSpell.ToString().ToUpper();
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
return string.Empty;
|
||||
}
|
||||
return string.Empty;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 汉字转拼音
|
||||
/// </summary>
|
||||
/// <param name="chr"></param>
|
||||
/// <returns></returns>
|
||||
private static string GetSpell(char chr)
|
||||
{
|
||||
var coverchr = NPinyin.Pinyin.GetPinyin(chr);
|
||||
//优先使用NPinyin,转换失败则用 Pinyinconverter
|
||||
bool isChineses = ChineseChar.IsValidChar(coverchr[0]);
|
||||
if (isChineses)
|
||||
{
|
||||
ChineseChar chineseChar = new ChineseChar(coverchr[0]);
|
||||
foreach (string value in chineseChar.Pinyins)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(value))
|
||||
{
|
||||
return value.Remove(value.Length - 1, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
return coverchr;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace Hncore.Infrastructure.Common
|
||||
{
|
||||
public class RedisConfig
|
||||
{
|
||||
public static string EstateKey = "PROPERTY:ESTATE_{0}";
|
||||
public static string RoomKey = "PROPERTY:ESTATE_ROOM_{0}";
|
||||
public static string VISITORKey = "PROPERTY:VISITOR:UNIONID_{0}";
|
||||
public static string WxKey = "Wechat:{0}";
|
||||
public static string Payment = "Payment:{0}";
|
||||
public static string WxOauth = "WxOauth:{0}";
|
||||
public static string FaceVisitor = "FaceVisitor:{0}";
|
||||
public static string Order = "Order:{0}";
|
||||
}
|
||||
}
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace Hncore.Infrastructure.Common
|
||||
{
|
||||
public class RedisConfig
|
||||
{
|
||||
public static string EstateKey = "PROPERTY:ESTATE_{0}";
|
||||
public static string RoomKey = "PROPERTY:ESTATE_ROOM_{0}";
|
||||
public static string VISITORKey = "PROPERTY:VISITOR:UNIONID_{0}";
|
||||
public static string WxKey = "Wechat:{0}";
|
||||
public static string Payment = "Payment:{0}";
|
||||
public static string WxOauth = "WxOauth:{0}";
|
||||
public static string FaceVisitor = "FaceVisitor:{0}";
|
||||
public static string Order = "Order:{0}";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,27 +1,27 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo.Common
|
||||
{
|
||||
///// <summary>
|
||||
///// 自然数0,1,2...
|
||||
///// </summary>
|
||||
//[AttributeUsage(AttributeTargets.Property)]
|
||||
//public class ValidNaturalNumberAttribute : Attribute
|
||||
//{
|
||||
|
||||
//}
|
||||
public sealed class RequiredAttribute : Attribute
|
||||
{
|
||||
public bool Validate(object value)
|
||||
{
|
||||
if (value == null) return true;
|
||||
if (string.IsNullOrEmpty(value.ToString())) return true;
|
||||
if (string.IsNullOrWhiteSpace(value.ToString())) return true;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Hncore.Pass.BaseInfo.Common
|
||||
{
|
||||
///// <summary>
|
||||
///// 自然数0,1,2...
|
||||
///// </summary>
|
||||
//[AttributeUsage(AttributeTargets.Property)]
|
||||
//public class ValidNaturalNumberAttribute : Attribute
|
||||
//{
|
||||
|
||||
//}
|
||||
public sealed class RequiredAttribute : Attribute
|
||||
{
|
||||
public bool Validate(object value)
|
||||
{
|
||||
if (value == null) return true;
|
||||
if (string.IsNullOrEmpty(value.ToString())) return true;
|
||||
if (string.IsNullOrWhiteSpace(value.ToString())) return true;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
//{
|
||||
// "MySql": "Server=rm-bp12e1533udh1827azo.mysql.rds.aliyuncs.com;Database=etor_property_test;User=etor_test;Password=etor_test!QAZ2wsx;Convert Zero Datetime=True;TreatTinyAsBoolean=false;",
|
||||
// "Redis": "47.92.85.90:6379,password=etor0070x01,defaultDatabase=7,poolsize=1"
|
||||
//}
|
||||
{
|
||||
"Host_BaseUrl": "http://ipistest.etor.top11",
|
||||
"Wx_Mp_Appid": "wxd6b150a17c252fec",
|
||||
"MySql": "Server=47.92.244.89;Database=property;User=root;Password=qaz123!@#;Convert Zero Datetime=True;TreatTinyAsBoolean=false;port=5000;",
|
||||
"Redis": "47.92.244.89:8088,password=123456,defaultDatabase=7,poolsize=1"
|
||||
}
|
||||
//{
|
||||
// "MySql": "Server=rm-bp12e1533udh1827azo.mysql.rds.aliyuncs.com;Database=etor_property_test;User=etor_test;Password=etor_test!QAZ2wsx;Convert Zero Datetime=True;TreatTinyAsBoolean=false;",
|
||||
// "Redis": "47.92.85.90:6379,password=etor0070x01,defaultDatabase=7,poolsize=1"
|
||||
//}
|
||||
{
|
||||
"Host_BaseUrl": "http://ipistest.etor.top11",
|
||||
"Wx_Mp_Appid": "wxd6b150a17c252fec",
|
||||
"MySql": "Server=47.92.244.89;Database=property;User=root;Password=qaz123!@#;Convert Zero Datetime=True;TreatTinyAsBoolean=false;port=5000;",
|
||||
"Redis": "47.92.244.89:8088,password=123456,defaultDatabase=7,poolsize=1"
|
||||
}
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
//{
|
||||
// "MySql": "Server=rm-bp12e1533udh1827azo.mysql.rds.aliyuncs.com;Database=etor_property_test;User=etor_test;Password=etor_test!QAZ2wsx;Convert Zero Datetime=True;TreatTinyAsBoolean=false;",
|
||||
// "Redis": "47.92.85.90:6379,password=etor0070x01,defaultDatabase=7,poolsize=1"
|
||||
//}
|
||||
{
|
||||
"Host_BaseUrl": "http://ipistest.etor.top11",
|
||||
"Wx_Mp_Appid": "wxd6b150a17c252fec",
|
||||
"MySql": "Server=47.92.244.89;Database=property;User=root;Password=qaz123!@#;Convert Zero Datetime=True;TreatTinyAsBoolean=false;port=5000;",
|
||||
"Redis": "47.92.85.90:6379,password=etor0070x01,defaultDatabase=10,poolsize=1"
|
||||
}
|
||||
//{
|
||||
// "MySql": "Server=rm-bp12e1533udh1827azo.mysql.rds.aliyuncs.com;Database=etor_property_test;User=etor_test;Password=etor_test!QAZ2wsx;Convert Zero Datetime=True;TreatTinyAsBoolean=false;",
|
||||
// "Redis": "47.92.85.90:6379,password=etor0070x01,defaultDatabase=7,poolsize=1"
|
||||
//}
|
||||
{
|
||||
"Host_BaseUrl": "http://ipistest.etor.top11",
|
||||
"Wx_Mp_Appid": "wxd6b150a17c252fec",
|
||||
"MySql": "Server=47.92.244.89;Database=property;User=root;Password=qaz123!@#;Convert Zero Datetime=True;TreatTinyAsBoolean=false;port=5000;",
|
||||
"Redis": "47.92.85.90:6379,password=etor0070x01,defaultDatabase=10,poolsize=1"
|
||||
}
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
//{
|
||||
// "MySql": "Server=rm-bp12e1533udh1827azo.mysql.rds.aliyuncs.com;Database=etor_property_test;User=etor_test;Password=etor_test!QAZ2wsx;Convert Zero Datetime=True;TreatTinyAsBoolean=false;",
|
||||
// "Redis": "47.92.85.90:6379,password=etor0070x01,defaultDatabase=7,poolsize=1"
|
||||
//}
|
||||
{
|
||||
"Host_BaseUrl": "http://ipistest.etor.top11",
|
||||
"Wx_Mp_Appid": "wxd6b150a17c252fec",
|
||||
"MySql": "Server=47.92.244.89;Database=property;User=root;Password=qaz123!@#;Convert Zero Datetime=True;TreatTinyAsBoolean=false;port=5000;",
|
||||
"Redis": "47.92.244.89:8088,password=123456,defaultDatabase=7,poolsize=1"
|
||||
}
|
||||
//{
|
||||
// "MySql": "Server=rm-bp12e1533udh1827azo.mysql.rds.aliyuncs.com;Database=etor_property_test;User=etor_test;Password=etor_test!QAZ2wsx;Convert Zero Datetime=True;TreatTinyAsBoolean=false;",
|
||||
// "Redis": "47.92.85.90:6379,password=etor0070x01,defaultDatabase=7,poolsize=1"
|
||||
//}
|
||||
{
|
||||
"Host_BaseUrl": "http://ipistest.etor.top11",
|
||||
"Wx_Mp_Appid": "wxd6b150a17c252fec",
|
||||
"MySql": "Server=47.92.244.89;Database=property;User=root;Password=qaz123!@#;Convert Zero Datetime=True;TreatTinyAsBoolean=false;port=5000;",
|
||||
"Redis": "47.92.244.89:8088,password=123456,defaultDatabase=7,poolsize=1"
|
||||
}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"Logging": {
|
||||
"LogLevel": {
|
||||
"Default": "Warning"
|
||||
}
|
||||
},
|
||||
"AllowedHosts": "*"
|
||||
}
|
||||
{
|
||||
"Logging": {
|
||||
"LogLevel": {
|
||||
"Default": "Warning"
|
||||
}
|
||||
},
|
||||
"AllowedHosts": "*"
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
@@ -1,10 +0,0 @@
|
||||
{
|
||||
"runtimeOptions": {
|
||||
"additionalProbingPaths": [
|
||||
"C:\\Users\\Administrator\\.dotnet\\store\\|arch|\\|tfm|",
|
||||
"C:\\Users\\Administrator\\.nuget\\packages",
|
||||
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages",
|
||||
"C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
{
|
||||
"runtimeOptions": {
|
||||
"tfm": "netcoreapp2.2",
|
||||
"framework": {
|
||||
"name": "Microsoft.AspNetCore.App",
|
||||
"version": "2.2.0"
|
||||
},
|
||||
"configProperties": {
|
||||
"System.GC.Concurrent": true,
|
||||
"System.GC.Server": false
|
||||
}
|
||||
}
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
@@ -1,25 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
autoReload="true"
|
||||
throwConfigExceptions="true"
|
||||
internalLogLevel="Info"
|
||||
internalLogToTrace="true">
|
||||
|
||||
<targets>
|
||||
|
||||
<target xsi:type="Null" name="blackhole" />
|
||||
|
||||
|
||||
<target name="LOG_FILE"
|
||||
xsi:type="File"
|
||||
layout="[${longdate}] ${pad:padding=-5:inner=${level:uppercase=true}}${newline}${message}${newline}"
|
||||
encoding="utf-8"
|
||||
fileName="Logs/${date:format=yyyyMMdd}/${filesystem-normalize:inner=${level}}.log" />
|
||||
</targets>
|
||||
|
||||
<rules>
|
||||
<logger name="UserLog" minlevel="Trace" writeTo="LOG_FILE" />
|
||||
</rules>
|
||||
</nlog>
|
||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
@@ -1,10 +0,0 @@
|
||||
{
|
||||
"runtimeOptions": {
|
||||
"additionalProbingPaths": [
|
||||
"C:\\Users\\Administrator\\.dotnet\\store\\|arch|\\|tfm|",
|
||||
"C:\\Users\\Administrator\\.nuget\\packages",
|
||||
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages",
|
||||
"C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
{
|
||||
"runtimeOptions": {
|
||||
"tfm": "netcoreapp2.2",
|
||||
"framework": {
|
||||
"name": "Microsoft.AspNetCore.App",
|
||||
"version": "2.2.0"
|
||||
},
|
||||
"configProperties": {
|
||||
"System.GC.Concurrent": true,
|
||||
"System.GC.Server": false
|
||||
}
|
||||
}
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
@@ -1,25 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
autoReload="true"
|
||||
throwConfigExceptions="true"
|
||||
internalLogLevel="Info"
|
||||
internalLogToTrace="true">
|
||||
|
||||
<targets>
|
||||
|
||||
<target xsi:type="Null" name="blackhole" />
|
||||
|
||||
|
||||
<target name="LOG_FILE"
|
||||
xsi:type="File"
|
||||
layout="[${longdate}] ${pad:padding=-5:inner=${level:uppercase=true}}${newline}${message}${newline}"
|
||||
encoding="utf-8"
|
||||
fileName="Logs/${date:format=yyyyMMdd}/${filesystem-normalize:inner=${level}}.log" />
|
||||
</targets>
|
||||
|
||||
<rules>
|
||||
<logger name="UserLog" minlevel="Trace" writeTo="LOG_FILE" />
|
||||
</rules>
|
||||
</nlog>
|
||||
@@ -1,4 +0,0 @@
|
||||
// <autogenerated />
|
||||
using System;
|
||||
using System.Reflection;
|
||||
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v2.2", FrameworkDisplayName = "")]
|
||||
@@ -1,16 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// 由 MSBuild WriteCodeFragment 类生成。
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
using System;
|
||||
using System.Reflection;
|
||||
|
||||
[assembly: System.Reflection.AssemblyCompanyAttribute("Hncore.Pass.BaseInfo")]
|
||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
|
||||
[assembly: System.Reflection.AssemblyProductAttribute("Hncore.Pass.BaseInfo")]
|
||||
[assembly: System.Reflection.AssemblyTitleAttribute("Hncore.Pass.BaseInfo")]
|
||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||
@@ -1 +0,0 @@
|
||||
5208bd75e6d82595767ae255a8df9c25872eabb0
|
||||
@@ -1 +0,0 @@
|
||||
94b14447996a84bcc3ac326943c1339f31d06a82
|
||||
@@ -1,13 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// 由 MSBuild WriteCodeFragment 类生成。
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
using System;
|
||||
using System.Reflection;
|
||||
|
||||
[assembly: Microsoft.AspNetCore.Mvc.ApplicationParts.RelatedAssemblyAttribute("Hncore.Pass.BaseInfo.Views")]
|
||||
[assembly: Microsoft.AspNetCore.Razor.Hosting.RazorLanguageVersionAttribute("2.1")]
|
||||
[assembly: Microsoft.AspNetCore.Razor.Hosting.RazorConfigurationNameAttribute("MVC-2.1")]
|
||||
[assembly: Microsoft.AspNetCore.Razor.Hosting.RazorExtensionAssemblyNameAttribute("MVC-2.1", "Microsoft.AspNetCore.Mvc.Razor.Extensions")]
|
||||
@@ -1 +0,0 @@
|
||||
51302c54ec912cc0b00de595073632bd213cf324
|
||||
Binary file not shown.
@@ -1 +0,0 @@
|
||||
6e0838cfb994a0ea48f7b5545dfbfff4790ff90a
|
||||
@@ -1,42 +0,0 @@
|
||||
D:\test\juipnet\Services\Hncore.Pass.BaseInfo\bin\Debug\netcoreapp2.2\nlog.config
|
||||
D:\test\juipnet\Services\Hncore.Pass.BaseInfo\bin\Debug\netcoreapp2.2\AppData\enums.json
|
||||
D:\test\juipnet\Services\Hncore.Pass.BaseInfo\bin\Debug\netcoreapp2.2\Hncore.Pass.BaseInfo.deps.json
|
||||
D:\test\juipnet\Services\Hncore.Pass.BaseInfo\bin\Debug\netcoreapp2.2\Hncore.Pass.BaseInfo.runtimeconfig.json
|
||||
D:\test\juipnet\Services\Hncore.Pass.BaseInfo\bin\Debug\netcoreapp2.2\Hncore.Pass.BaseInfo.runtimeconfig.dev.json
|
||||
D:\test\juipnet\Services\Hncore.Pass.BaseInfo\bin\Debug\netcoreapp2.2\Hncore.Pass.BaseInfo.dll
|
||||
D:\test\juipnet\Services\Hncore.Pass.BaseInfo\bin\Debug\netcoreapp2.2\Hncore.Pass.BaseInfo.pdb
|
||||
D:\test\juipnet\Services\Hncore.Pass.BaseInfo\bin\Debug\netcoreapp2.2\Hncore.Infrastructure.dll
|
||||
D:\test\juipnet\Services\Hncore.Pass.BaseInfo\bin\Debug\netcoreapp2.2\Hncore.Pass.Sells.dll
|
||||
D:\test\juipnet\Services\Hncore.Pass.BaseInfo\bin\Debug\netcoreapp2.2\Hncore.Infrastructure.pdb
|
||||
D:\test\juipnet\Services\Hncore.Pass.BaseInfo\bin\Debug\netcoreapp2.2\Hncore.Pass.Sells.pdb
|
||||
D:\test\juipnet\Services\Hncore.Pass.BaseInfo\obj\Debug\netcoreapp2.2\Hncore.Pass.BaseInfo.csprojAssemblyReference.cache
|
||||
D:\test\juipnet\Services\Hncore.Pass.BaseInfo\obj\Debug\netcoreapp2.2\Hncore.Pass.BaseInfo.csproj.CoreCompileInputs.cache
|
||||
D:\test\juipnet\Services\Hncore.Pass.BaseInfo\obj\Debug\netcoreapp2.2\Hncore.Pass.BaseInfo.RazorAssemblyInfo.cache
|
||||
D:\test\juipnet\Services\Hncore.Pass.BaseInfo\obj\Debug\netcoreapp2.2\Hncore.Pass.BaseInfo.RazorAssemblyInfo.cs
|
||||
D:\test\juipnet\Services\Hncore.Pass.BaseInfo\obj\Debug\netcoreapp2.2\Hncore.Pass.BaseInfo.AssemblyInfoInputs.cache
|
||||
D:\test\juipnet\Services\Hncore.Pass.BaseInfo\obj\Debug\netcoreapp2.2\Hncore.Pass.BaseInfo.AssemblyInfo.cs
|
||||
D:\test\juipnet\Services\Hncore.Pass.BaseInfo\obj\Debug\netcoreapp2.2\Hncore.Pass.BaseInfo.RazorTargetAssemblyInfo.cache
|
||||
D:\test\juipnet\Services\Hncore.Pass.BaseInfo\obj\Debug\netcoreapp2.2\Hncore.Pass.BaseInfo.csproj.CopyComplete
|
||||
D:\test\juipnet\Services\Hncore.Pass.BaseInfo\obj\Debug\netcoreapp2.2\Hncore.Pass.BaseInfo.dll
|
||||
D:\test\juipnet\Services\Hncore.Pass.BaseInfo\obj\Debug\netcoreapp2.2\Hncore.Pass.BaseInfo.pdb
|
||||
D:\www\juipnet\Services\Hncore.Pass.BaseInfo\bin\Debug\netcoreapp2.2\nlog.config
|
||||
D:\www\juipnet\Services\Hncore.Pass.BaseInfo\bin\Debug\netcoreapp2.2\AppData\enums.json
|
||||
D:\www\juipnet\Services\Hncore.Pass.BaseInfo\bin\Debug\netcoreapp2.2\Hncore.Pass.BaseInfo.deps.json
|
||||
D:\www\juipnet\Services\Hncore.Pass.BaseInfo\bin\Debug\netcoreapp2.2\Hncore.Pass.BaseInfo.runtimeconfig.json
|
||||
D:\www\juipnet\Services\Hncore.Pass.BaseInfo\bin\Debug\netcoreapp2.2\Hncore.Pass.BaseInfo.runtimeconfig.dev.json
|
||||
D:\www\juipnet\Services\Hncore.Pass.BaseInfo\bin\Debug\netcoreapp2.2\Hncore.Pass.BaseInfo.dll
|
||||
D:\www\juipnet\Services\Hncore.Pass.BaseInfo\bin\Debug\netcoreapp2.2\Hncore.Pass.BaseInfo.pdb
|
||||
D:\www\juipnet\Services\Hncore.Pass.BaseInfo\bin\Debug\netcoreapp2.2\Hncore.Infrastructure.dll
|
||||
D:\www\juipnet\Services\Hncore.Pass.BaseInfo\bin\Debug\netcoreapp2.2\Hncore.Pass.Sells.dll
|
||||
D:\www\juipnet\Services\Hncore.Pass.BaseInfo\bin\Debug\netcoreapp2.2\Hncore.Infrastructure.pdb
|
||||
D:\www\juipnet\Services\Hncore.Pass.BaseInfo\bin\Debug\netcoreapp2.2\Hncore.Pass.Sells.pdb
|
||||
D:\www\juipnet\Services\Hncore.Pass.BaseInfo\obj\Debug\netcoreapp2.2\Hncore.Pass.BaseInfo.csproj.CoreCompileInputs.cache
|
||||
D:\www\juipnet\Services\Hncore.Pass.BaseInfo\obj\Debug\netcoreapp2.2\Hncore.Pass.BaseInfo.RazorAssemblyInfo.cache
|
||||
D:\www\juipnet\Services\Hncore.Pass.BaseInfo\obj\Debug\netcoreapp2.2\Hncore.Pass.BaseInfo.RazorAssemblyInfo.cs
|
||||
D:\www\juipnet\Services\Hncore.Pass.BaseInfo\obj\Debug\netcoreapp2.2\Hncore.Pass.BaseInfo.AssemblyInfoInputs.cache
|
||||
D:\www\juipnet\Services\Hncore.Pass.BaseInfo\obj\Debug\netcoreapp2.2\Hncore.Pass.BaseInfo.AssemblyInfo.cs
|
||||
D:\www\juipnet\Services\Hncore.Pass.BaseInfo\obj\Debug\netcoreapp2.2\Hncore.Pass.BaseInfo.RazorTargetAssemblyInfo.cache
|
||||
D:\www\juipnet\Services\Hncore.Pass.BaseInfo\obj\Debug\netcoreapp2.2\Hncore.Pass.BaseInfo.csproj.CopyComplete
|
||||
D:\www\juipnet\Services\Hncore.Pass.BaseInfo\obj\Debug\netcoreapp2.2\Hncore.Pass.BaseInfo.dll
|
||||
D:\www\juipnet\Services\Hncore.Pass.BaseInfo\obj\Debug\netcoreapp2.2\Hncore.Pass.BaseInfo.pdb
|
||||
D:\www\juipnet\Services\Hncore.Pass.BaseInfo\obj\Debug\netcoreapp2.2\Hncore.Pass.BaseInfo.csprojAssemblyReference.cache
|
||||
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@@ -1,5 +0,0 @@
|
||||
{
|
||||
"version": 1,
|
||||
"dgSpecHash": "zgf0ytVjn5gqN0aGB5vyfKHXedspVffy9EZ27f7l6iox+Gd/igyrK9jHldo64gWTqjORFZLcx4p64zq05O940g==",
|
||||
"success": true
|
||||
}
|
||||
@@ -1,30 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||
<RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess>
|
||||
<RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
|
||||
<ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">D:\www\juipnet\Services\Hncore.Pass.BaseInfo\obj\project.assets.json</ProjectAssetsFile>
|
||||
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">$(UserProfile)\.nuget\packages\</NuGetPackageRoot>
|
||||
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">C:\Users\Administrator\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages;C:\Program Files\dotnet\sdk\NuGetFallbackFolder</NuGetPackageFolders>
|
||||
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
|
||||
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">4.9.0</NuGetToolVersion>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects>
|
||||
</PropertyGroup>
|
||||
<ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||
<Import Project="C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.extensions.fileproviders.embedded\2.2.0\build\netstandard2.0\Microsoft.Extensions.FileProviders.Embedded.props" Condition="Exists('C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.extensions.fileproviders.embedded\2.2.0\build\netstandard2.0\Microsoft.Extensions.FileProviders.Embedded.props')" />
|
||||
<Import Project="C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.netcore.app\2.2.0\build\netcoreapp2.2\Microsoft.NETCore.App.props" Condition="Exists('C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.netcore.app\2.2.0\build\netcoreapp2.2\Microsoft.NETCore.App.props')" />
|
||||
<Import Project="C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.extensions.configuration.usersecrets\2.2.0\build\netstandard2.0\Microsoft.Extensions.Configuration.UserSecrets.props" Condition="Exists('C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.extensions.configuration.usersecrets\2.2.0\build\netstandard2.0\Microsoft.Extensions.Configuration.UserSecrets.props')" />
|
||||
<Import Project="C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.entityframeworkcore.design\2.2.0\build\netcoreapp2.0\Microsoft.EntityFrameworkCore.Design.props" Condition="Exists('C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.entityframeworkcore.design\2.2.0\build\netcoreapp2.0\Microsoft.EntityFrameworkCore.Design.props')" />
|
||||
<Import Project="C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.aspnetcore.mvc.razor.extensions\2.2.0\build\netstandard2.0\Microsoft.AspNetCore.Mvc.Razor.Extensions.props" Condition="Exists('C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.aspnetcore.mvc.razor.extensions\2.2.0\build\netstandard2.0\Microsoft.AspNetCore.Mvc.Razor.Extensions.props')" />
|
||||
<Import Project="C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.aspnetcore.razor.design\2.2.0\build\netstandard2.0\Microsoft.AspNetCore.Razor.Design.props" Condition="Exists('C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.aspnetcore.razor.design\2.2.0\build\netstandard2.0\Microsoft.AspNetCore.Razor.Design.props')" />
|
||||
<Import Project="C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.aspnetcore.app\2.2.0\build\netcoreapp2.2\Microsoft.AspNetCore.App.props" Condition="Exists('C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.aspnetcore.app\2.2.0\build\netcoreapp2.2\Microsoft.AspNetCore.App.props')" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||
<Pkgxunit_analyzers Condition=" '$(Pkgxunit_analyzers)' == '' ">C:\Users\Administrator\.nuget\packages\xunit.analyzers\0.10.0</Pkgxunit_analyzers>
|
||||
<PkgMicrosoft_CodeAnalysis_Analyzers Condition=" '$(PkgMicrosoft_CodeAnalysis_Analyzers)' == '' ">C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.codeanalysis.analyzers\1.1.0</PkgMicrosoft_CodeAnalysis_Analyzers>
|
||||
<PkgMicrosoft_EntityFrameworkCore_Tools Condition=" '$(PkgMicrosoft_EntityFrameworkCore_Tools)' == '' ">C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.entityframeworkcore.tools\2.2.0</PkgMicrosoft_EntityFrameworkCore_Tools>
|
||||
<PkgMicrosoft_AspNetCore_Razor_Design Condition=" '$(PkgMicrosoft_AspNetCore_Razor_Design)' == '' ">C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.aspnetcore.razor.design\2.2.0</PkgMicrosoft_AspNetCore_Razor_Design>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
@@ -1,17 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects>
|
||||
</PropertyGroup>
|
||||
<ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||
<Import Project="C:\Program Files\dotnet\sdk\NuGetFallbackFolder\netstandard.library\2.0.3\build\netstandard2.0\NETStandard.Library.targets" Condition="Exists('C:\Program Files\dotnet\sdk\NuGetFallbackFolder\netstandard.library\2.0.3\build\netstandard2.0\NETStandard.Library.targets')" />
|
||||
<Import Project="C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.extensions.fileproviders.embedded\2.2.0\build\netstandard2.0\Microsoft.Extensions.FileProviders.Embedded.targets" Condition="Exists('C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.extensions.fileproviders.embedded\2.2.0\build\netstandard2.0\Microsoft.Extensions.FileProviders.Embedded.targets')" />
|
||||
<Import Project="C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.netcore.app\2.2.0\build\netcoreapp2.2\Microsoft.NETCore.App.targets" Condition="Exists('C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.netcore.app\2.2.0\build\netcoreapp2.2\Microsoft.NETCore.App.targets')" />
|
||||
<Import Project="C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.extensions.configuration.usersecrets\2.2.0\build\netstandard2.0\Microsoft.Extensions.Configuration.UserSecrets.targets" Condition="Exists('C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.extensions.configuration.usersecrets\2.2.0\build\netstandard2.0\Microsoft.Extensions.Configuration.UserSecrets.targets')" />
|
||||
<Import Project="C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.aspnetcore.mvc.razor.extensions\2.2.0\build\netstandard2.0\Microsoft.AspNetCore.Mvc.Razor.Extensions.targets" Condition="Exists('C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.aspnetcore.mvc.razor.extensions\2.2.0\build\netstandard2.0\Microsoft.AspNetCore.Mvc.Razor.Extensions.targets')" />
|
||||
<Import Project="C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.aspnetcore.server.iisintegration\2.2.0\build\netstandard2.0\Microsoft.AspNetCore.Server.IISIntegration.targets" Condition="Exists('C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.aspnetcore.server.iisintegration\2.2.0\build\netstandard2.0\Microsoft.AspNetCore.Server.IISIntegration.targets')" />
|
||||
<Import Project="C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.aspnetcore.server.iis\2.2.0\build\netstandard2.0\Microsoft.AspNetCore.Server.IIS.targets" Condition="Exists('C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.aspnetcore.server.iis\2.2.0\build\netstandard2.0\Microsoft.AspNetCore.Server.IIS.targets')" />
|
||||
<Import Project="C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.aspnetcore.mvc.razor.viewcompilation\2.2.0\build\netstandard2.0\Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.targets" Condition="Exists('C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.aspnetcore.mvc.razor.viewcompilation\2.2.0\build\netstandard2.0\Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.targets')" />
|
||||
<Import Project="C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.aspnetcore.app\2.2.0\build\netcoreapp2.2\Microsoft.AspNetCore.App.targets" Condition="Exists('C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.aspnetcore.app\2.2.0\build\netcoreapp2.2\Microsoft.AspNetCore.App.targets')" />
|
||||
</ImportGroup>
|
||||
</Project>
|
||||
@@ -1,16 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// 由 MSBuild WriteCodeFragment 类生成。
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
using System;
|
||||
using System.Reflection;
|
||||
|
||||
[assembly: System.Reflection.AssemblyCompanyAttribute("Hncore.Pass.BaseInfo")]
|
||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")]
|
||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
|
||||
[assembly: System.Reflection.AssemblyProductAttribute("Hncore.Pass.BaseInfo")]
|
||||
[assembly: System.Reflection.AssemblyTitleAttribute("Hncore.Pass.BaseInfo")]
|
||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||
@@ -1 +0,0 @@
|
||||
3b61a383572003e0eee9968d9530e56ad58acbf0
|
||||
@@ -1 +0,0 @@
|
||||
94b14447996a84bcc3ac326943c1339f31d06a82
|
||||
@@ -1,13 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// 由 MSBuild WriteCodeFragment 类生成。
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
using System;
|
||||
using System.Reflection;
|
||||
|
||||
[assembly: Microsoft.AspNetCore.Mvc.ApplicationParts.RelatedAssemblyAttribute("Hncore.Pass.BaseInfo.Views")]
|
||||
[assembly: Microsoft.AspNetCore.Razor.Hosting.RazorLanguageVersionAttribute("2.1")]
|
||||
[assembly: Microsoft.AspNetCore.Razor.Hosting.RazorConfigurationNameAttribute("MVC-2.1")]
|
||||
[assembly: Microsoft.AspNetCore.Razor.Hosting.RazorExtensionAssemblyNameAttribute("MVC-2.1", "Microsoft.AspNetCore.Mvc.Razor.Extensions")]
|
||||
@@ -1 +0,0 @@
|
||||
04cc9c3bf26528ae32501d61b737b0f5036a21f2
|
||||
Binary file not shown.
@@ -1 +0,0 @@
|
||||
0f8bc764227bed72c7be561507b9dc6d37311b9a
|
||||
@@ -1,42 +0,0 @@
|
||||
D:\test\juipnet\Services\Hncore.Pass.BaseInfo\bin\Release\netcoreapp2.2\nlog.config
|
||||
D:\test\juipnet\Services\Hncore.Pass.BaseInfo\bin\Release\netcoreapp2.2\AppData\enums.json
|
||||
D:\test\juipnet\Services\Hncore.Pass.BaseInfo\bin\Release\netcoreapp2.2\Hncore.Pass.BaseInfo.deps.json
|
||||
D:\test\juipnet\Services\Hncore.Pass.BaseInfo\bin\Release\netcoreapp2.2\Hncore.Pass.BaseInfo.runtimeconfig.json
|
||||
D:\test\juipnet\Services\Hncore.Pass.BaseInfo\bin\Release\netcoreapp2.2\Hncore.Pass.BaseInfo.runtimeconfig.dev.json
|
||||
D:\test\juipnet\Services\Hncore.Pass.BaseInfo\bin\Release\netcoreapp2.2\Hncore.Pass.BaseInfo.dll
|
||||
D:\test\juipnet\Services\Hncore.Pass.BaseInfo\bin\Release\netcoreapp2.2\Hncore.Pass.BaseInfo.pdb
|
||||
D:\test\juipnet\Services\Hncore.Pass.BaseInfo\bin\Release\netcoreapp2.2\Hncore.Infrastructure.dll
|
||||
D:\test\juipnet\Services\Hncore.Pass.BaseInfo\bin\Release\netcoreapp2.2\Hncore.Pass.Sells.dll
|
||||
D:\test\juipnet\Services\Hncore.Pass.BaseInfo\bin\Release\netcoreapp2.2\Hncore.Infrastructure.pdb
|
||||
D:\test\juipnet\Services\Hncore.Pass.BaseInfo\bin\Release\netcoreapp2.2\Hncore.Pass.Sells.pdb
|
||||
D:\test\juipnet\Services\Hncore.Pass.BaseInfo\obj\Release\netcoreapp2.2\Hncore.Pass.BaseInfo.csprojAssemblyReference.cache
|
||||
D:\test\juipnet\Services\Hncore.Pass.BaseInfo\obj\Release\netcoreapp2.2\Hncore.Pass.BaseInfo.csproj.CoreCompileInputs.cache
|
||||
D:\test\juipnet\Services\Hncore.Pass.BaseInfo\obj\Release\netcoreapp2.2\Hncore.Pass.BaseInfo.RazorAssemblyInfo.cache
|
||||
D:\test\juipnet\Services\Hncore.Pass.BaseInfo\obj\Release\netcoreapp2.2\Hncore.Pass.BaseInfo.RazorAssemblyInfo.cs
|
||||
D:\test\juipnet\Services\Hncore.Pass.BaseInfo\obj\Release\netcoreapp2.2\Hncore.Pass.BaseInfo.AssemblyInfoInputs.cache
|
||||
D:\test\juipnet\Services\Hncore.Pass.BaseInfo\obj\Release\netcoreapp2.2\Hncore.Pass.BaseInfo.AssemblyInfo.cs
|
||||
D:\test\juipnet\Services\Hncore.Pass.BaseInfo\obj\Release\netcoreapp2.2\Hncore.Pass.BaseInfo.RazorTargetAssemblyInfo.cache
|
||||
D:\test\juipnet\Services\Hncore.Pass.BaseInfo\obj\Release\netcoreapp2.2\Hncore.Pass.BaseInfo.csproj.CopyComplete
|
||||
D:\test\juipnet\Services\Hncore.Pass.BaseInfo\obj\Release\netcoreapp2.2\Hncore.Pass.BaseInfo.dll
|
||||
D:\test\juipnet\Services\Hncore.Pass.BaseInfo\obj\Release\netcoreapp2.2\Hncore.Pass.BaseInfo.pdb
|
||||
D:\www\juipnet\Services\Hncore.Pass.BaseInfo\bin\Release\netcoreapp2.2\nlog.config
|
||||
D:\www\juipnet\Services\Hncore.Pass.BaseInfo\bin\Release\netcoreapp2.2\AppData\enums.json
|
||||
D:\www\juipnet\Services\Hncore.Pass.BaseInfo\bin\Release\netcoreapp2.2\Hncore.Pass.BaseInfo.deps.json
|
||||
D:\www\juipnet\Services\Hncore.Pass.BaseInfo\bin\Release\netcoreapp2.2\Hncore.Pass.BaseInfo.runtimeconfig.json
|
||||
D:\www\juipnet\Services\Hncore.Pass.BaseInfo\bin\Release\netcoreapp2.2\Hncore.Pass.BaseInfo.runtimeconfig.dev.json
|
||||
D:\www\juipnet\Services\Hncore.Pass.BaseInfo\bin\Release\netcoreapp2.2\Hncore.Pass.BaseInfo.dll
|
||||
D:\www\juipnet\Services\Hncore.Pass.BaseInfo\bin\Release\netcoreapp2.2\Hncore.Pass.BaseInfo.pdb
|
||||
D:\www\juipnet\Services\Hncore.Pass.BaseInfo\bin\Release\netcoreapp2.2\Hncore.Infrastructure.dll
|
||||
D:\www\juipnet\Services\Hncore.Pass.BaseInfo\bin\Release\netcoreapp2.2\Hncore.Pass.Sells.dll
|
||||
D:\www\juipnet\Services\Hncore.Pass.BaseInfo\bin\Release\netcoreapp2.2\Hncore.Infrastructure.pdb
|
||||
D:\www\juipnet\Services\Hncore.Pass.BaseInfo\bin\Release\netcoreapp2.2\Hncore.Pass.Sells.pdb
|
||||
D:\www\juipnet\Services\Hncore.Pass.BaseInfo\obj\Release\netcoreapp2.2\Hncore.Pass.BaseInfo.csproj.CoreCompileInputs.cache
|
||||
D:\www\juipnet\Services\Hncore.Pass.BaseInfo\obj\Release\netcoreapp2.2\Hncore.Pass.BaseInfo.RazorAssemblyInfo.cache
|
||||
D:\www\juipnet\Services\Hncore.Pass.BaseInfo\obj\Release\netcoreapp2.2\Hncore.Pass.BaseInfo.RazorAssemblyInfo.cs
|
||||
D:\www\juipnet\Services\Hncore.Pass.BaseInfo\obj\Release\netcoreapp2.2\Hncore.Pass.BaseInfo.AssemblyInfoInputs.cache
|
||||
D:\www\juipnet\Services\Hncore.Pass.BaseInfo\obj\Release\netcoreapp2.2\Hncore.Pass.BaseInfo.AssemblyInfo.cs
|
||||
D:\www\juipnet\Services\Hncore.Pass.BaseInfo\obj\Release\netcoreapp2.2\Hncore.Pass.BaseInfo.RazorTargetAssemblyInfo.cache
|
||||
D:\www\juipnet\Services\Hncore.Pass.BaseInfo\obj\Release\netcoreapp2.2\Hncore.Pass.BaseInfo.csproj.CopyComplete
|
||||
D:\www\juipnet\Services\Hncore.Pass.BaseInfo\obj\Release\netcoreapp2.2\Hncore.Pass.BaseInfo.dll
|
||||
D:\www\juipnet\Services\Hncore.Pass.BaseInfo\obj\Release\netcoreapp2.2\Hncore.Pass.BaseInfo.pdb
|
||||
D:\www\juipnet\Services\Hncore.Pass.BaseInfo\obj\Release\netcoreapp2.2\Hncore.Pass.BaseInfo.csprojAssemblyReference.cache
|
||||
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user