【优化】优化微信小程序及微信公众号同时登录同一账号下,同时支付异常的问题。

【优化】优化后台微信用户列表展示,增加区分微信小程序和微信公众号来源的划分。
This commit is contained in:
jianweie code
2023-05-05 23:08:37 +08:00
parent 76802af4a0
commit 8af46f90ed
4 changed files with 859 additions and 768 deletions

View File

@@ -29,6 +29,7 @@ using Newtonsoft.Json.Linq;
using QRCoder; using QRCoder;
using SKIT.FlurlHttpClient.Wechat.Api; using SKIT.FlurlHttpClient.Wechat.Api;
using SKIT.FlurlHttpClient.Wechat.Api.Models; using SKIT.FlurlHttpClient.Wechat.Api.Models;
using SqlSugar;
namespace CoreCms.Net.Services namespace CoreCms.Net.Services
{ {
@@ -80,7 +81,7 @@ namespace CoreCms.Net.Services
var payment = await billPaymentsServices.QueryByClauseAsync(p => p.paymentId == entity.paymentId); var payment = await billPaymentsServices.QueryByClauseAsync(p => p.paymentId == entity.paymentId);
var checkBeforeAddOrder = await checkBeforeAddOrderServices.QueryByClauseAsync(p => p.orderId == payment.sourceId); var checkBeforeAddOrder = await checkBeforeAddOrderServices.QueryByClauseAsync(p => p.orderId == payment.sourceId);
if (checkBeforeAddOrder != null && checkBeforeAddOrder.requireOrder == (int)GlobalEnumVars.RequireOrderType.) if (checkBeforeAddOrder is { requireOrder: (int)GlobalEnumVars.RequireOrderType. })
{ {
var order = await transactionComponentOrderServices.QueryByClauseAsync(p => p.outOrderId == payment.sourceId); var order = await transactionComponentOrderServices.QueryByClauseAsync(p => p.outOrderId == payment.sourceId);
@@ -158,26 +159,38 @@ namespace CoreCms.Net.Services
var openId = string.Empty; var openId = string.Empty;
if (tradeType == GlobalEnumVars.WeiChatPayTradeType.JSAPI.ToString() || tradeType == GlobalEnumVars.WeiChatPayTradeType.JSAPI_OFFICIAL.ToString()) if (tradeType == GlobalEnumVars.WeiChatPayTradeType.JSAPI.ToString() || tradeType == GlobalEnumVars.WeiChatPayTradeType.JSAPI_OFFICIAL.ToString())
{ {
var userAccount = await _userServices.QueryByIdAsync(_user.ID); //var userAccount = await _userServices.QueryByIdAsync(_user.ID);
if (userAccount == null) //if (userAccount == null)
{ //{
jm.msg = "用户账户获取失败"; // jm.msg = "用户账户获取失败";
return jm; // return jm;
} //}
if (userAccount.userWx <= 0) //if (userAccount.userWx <= 0)
{ //{
jm.msg = "账户关联微信用户信息获取失败"; // jm.msg = "账户关联微信用户信息获取失败";
return jm; // return jm;
} //}
var user = await _userWeChatInfoServices.QueryByClauseAsync(p => p.id == userAccount.userWx); //var user = await _userWeChatInfoServices.QueryByClauseAsync(p => p.id == userAccount.userWx);
//if (user == null)
//{
// jm.msg = "微信用户信息获取失败";
// return jm;
//}
var type = tradeType == GlobalEnumVars.WeiChatPayTradeType.JSAPI.ToString()
? (int)GlobalEnumVars.UserAccountTypes.
: (int)GlobalEnumVars.UserAccountTypes.;
var user = await _userWeChatInfoServices.QueryByClauseAsync(p => p.userId == _user.ID && p.type == type, p => p.createTime, OrderByType.Desc);
if (user == null) if (user == null)
{ {
jm.msg = "微信用户信息获取失败"; jm.msg = "微信用户信息获取失败";
return jm; return jm;
} }
openId = user.openid; openId = user.openid;
} }

View File

@@ -34,8 +34,8 @@ using Microsoft.Extensions.DependencyInjection;
using SqlSugar; using SqlSugar;
namespace CoreCms.Net.Services namespace CoreCms.Net.Services;
{
/// <summary> /// <summary>
/// 用户表 接口实现 /// 用户表 接口实现
/// </summary> /// </summary>
@@ -62,10 +62,14 @@ namespace CoreCms.Net.Services
, ICoreCmsUserRepository dal , ICoreCmsUserRepository dal
, ICoreCmsUserBalanceServices userBalanceServices , ICoreCmsUserBalanceServices userBalanceServices
, ICoreCmsSettingServices settingServices , ICoreCmsSettingServices settingServices
, ICoreCmsUserPointLogServices userPointLogServices, ICoreCmsSmsServices smsServices, ICoreCmsUserWeChatInfoServices userWeChatInfoServices, ICoreCmsUserGradeServices userGradeServices, PermissionRequirement permissionRequirement, IHttpContextAccessor httpContextAccessor, ICoreCmsUserLogServices userLogServices, IServiceProvider serviceProvider, ICoreCmsBillPaymentsServices billPaymentsServices) , ICoreCmsUserPointLogServices userPointLogServices, ICoreCmsSmsServices smsServices,
ICoreCmsUserWeChatInfoServices userWeChatInfoServices, ICoreCmsUserGradeServices userGradeServices,
PermissionRequirement permissionRequirement, IHttpContextAccessor httpContextAccessor,
ICoreCmsUserLogServices userLogServices, IServiceProvider serviceProvider,
ICoreCmsBillPaymentsServices billPaymentsServices)
{ {
this._dal = dal; _dal = dal;
base.BaseDal = dal; BaseDal = dal;
_unitOfWork = unitOfWork; _unitOfWork = unitOfWork;
_userBalanceServices = userBalanceServices; _userBalanceServices = userBalanceServices;
_settingServices = settingServices; _settingServices = settingServices;
@@ -100,6 +104,7 @@ namespace CoreCms.Net.Services
jm.msg = "不存在此信息"; jm.msg = "不存在此信息";
return jm; return jm;
} }
var newMoney = model.balance + money; var newMoney = model.balance + money;
var up = await _dal.UpdateAsync(p => new CoreCmsUser() { balance = newMoney }, p => p.id == id); var up = await _dal.UpdateAsync(p => new CoreCmsUser() { balance = newMoney }, p => p.id == id);
if (up) if (up)
@@ -124,6 +129,7 @@ namespace CoreCms.Net.Services
#endregion #endregion
#region #region
/// <summary> /// <summary>
/// 更新积分 /// 更新积分
/// </summary> /// </summary>
@@ -160,6 +166,7 @@ namespace CoreCms.Net.Services
return jm; return jm;
} }
#endregion #endregion
#region #region
@@ -174,36 +181,42 @@ namespace CoreCms.Net.Services
/// <returns></returns> /// <returns></returns>
public async Task<GetUserPointResult> GetUserPoint(int userId, decimal orderMoney, int[] ids, int cartType) public async Task<GetUserPointResult> GetUserPoint(int userId, decimal orderMoney, int[] ids, int cartType)
{ {
var dto = new GetUserPointResult();
GetUserPointResult dto = new GetUserPointResult();
//1是2否 //1是2否
var allConfigs = await _settingServices.GetConfigDictionaries(); var allConfigs = await _settingServices.GetConfigDictionaries();
var pointSwitch = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.PointSwitch).ObjectToInt(); //是否开启积分功能 var pointSwitch = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.PointSwitch)
.ObjectToInt(); //是否开启积分功能
if (pointSwitch == 2) if (pointSwitch == 2)
{ {
dto.@switch = 2; dto.@switch = 2;
return dto; return dto;
} }
var user = await _dal.QueryByClauseAsync(p => p.id == userId); var user = await _dal.QueryByClauseAsync(p => p.id == userId);
if (user != null) if (user != null)
{ {
dto.point = user.point; dto.point = user.point;
var pointExchangeModel = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.PointExchangeModel).ObjectToInt(); //判断是全局模式还是单品模式 var pointExchangeModel = CommonHelper
.GetConfigDictionary(allConfigs, SystemSettingConstVars.PointExchangeModel)
.ObjectToInt(); //判断是全局模式还是单品模式
if (pointExchangeModel == 1) if (pointExchangeModel == 1)
{ {
if (orderMoney != 0) if (orderMoney != 0)
{ {
//计算可用积分//订单积分使用比例 //计算可用积分//订单积分使用比例
var ordersPointProportion = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.OrdersPointProportion).ObjectToDecimal(10); var ordersPointProportion = CommonHelper
.GetConfigDictionary(allConfigs, SystemSettingConstVars.OrdersPointProportion)
.ObjectToDecimal(10);
var proportion = Math.Round(ordersPointProportion / 100, 4); var proportion = Math.Round(ordersPointProportion / 100, 4);
//最多可以抵扣的金额 //最多可以抵扣的金额
var maxPointDeductedMoney = Math.Round(orderMoney * proportion, 4); var maxPointDeductedMoney = Math.Round(orderMoney * proportion, 4);
//订单积分折现比例(多少积分可以折现1块钱) //订单积分折现比例(多少积分可以折现1块钱)
var pointDiscountedProportion = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.PointDiscountedProportion).ObjectToDecimal(100); var pointDiscountedProportion = CommonHelper
.GetConfigDictionary(allConfigs, SystemSettingConstVars.PointDiscountedProportion)
.ObjectToDecimal(100);
//计算需要多少积分 //计算需要多少积分
var needsPoint = maxPointDeductedMoney * pointDiscountedProportion; var needsPoint = maxPointDeductedMoney * pointDiscountedProportion;
//确定是否有那么多积分去抵扣比例计算出的能抵扣的钱 //确定是否有那么多积分去抵扣比例计算出的能抵扣的钱
@@ -221,7 +234,8 @@ namespace CoreCms.Net.Services
var productsServices = container.ServiceProvider.GetService<ICoreCmsProductsServices>(); var productsServices = container.ServiceProvider.GetService<ICoreCmsProductsServices>();
//获取购物车数据 //获取购物车数据
var cartProducts = await cartServices.QueryListByClauseAsync(p => p.type == cartType && p.userId == userId && ids.Contains(p.id)); var cartProducts = await cartServices.QueryListByClauseAsync(p =>
p.type == cartType && p.userId == userId && ids.Contains(p.id));
if (cartProducts.Any()) if (cartProducts.Any())
{ {
//获取购物车货品序列 //获取购物车货品序列
@@ -236,14 +250,14 @@ namespace CoreCms.Net.Services
foreach (var item in products) foreach (var item in products)
{ {
var numObj = cartProducts.Find(p => p.productId == item.id); var numObj = cartProducts.Find(p => p.productId == item.id);
if (numObj != null) if (numObj != null) money += numObj.nums * item.pointsDeduction;
{
money += numObj.nums * item.pointsDeduction;
}
} }
//计算抵扣这么多金额需要多少积分。 //计算抵扣这么多金额需要多少积分。
//订单积分折现比例(多少积分可以折现1块钱) //订单积分折现比例(多少积分可以折现1块钱)
var pointDiscountedProportion = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.PointDiscountedProportion).ObjectToInt(100); var pointDiscountedProportion = CommonHelper
.GetConfigDictionary(allConfigs, SystemSettingConstVars.PointDiscountedProportion)
.ObjectToInt(100);
//计算需要多少积分 //计算需要多少积分
var needsPoint = money * pointDiscountedProportion; var needsPoint = money * pointDiscountedProportion;
@@ -254,14 +268,16 @@ namespace CoreCms.Net.Services
dto.pointExchangeMoney = user.point > needsPoint ? money : 0; dto.pointExchangeMoney = user.point > needsPoint ? money : 0;
} }
} }
}
}
}
}
return dto; return dto;
} }
#endregion #endregion
#region #region
/// <summary> /// <summary>
/// 修改用户密码,如果用户之前没有密码,那么就不校验原密码 /// 修改用户密码,如果用户之前没有密码,那么就不校验原密码
/// </summary> /// </summary>
@@ -307,14 +323,17 @@ namespace CoreCms.Net.Services
return jm; return jm;
} }
var bl = await _dal.UpdateAsync(p => new CoreCmsUser() { passWord = md5Pwd, updataTime = DateTime.Now }, p => p.id == userId); var bl = await _dal.UpdateAsync(p => new CoreCmsUser() { passWord = md5Pwd, updataTime = DateTime.Now },
p => p.id == userId);
jm.status = bl; jm.status = bl;
jm.msg = bl ? "密码修改成功!" : "密码修改失败!"; jm.msg = bl ? "密码修改成功!" : "密码修改失败!";
return jm; return jm;
} }
#endregion #endregion
#region #region
/// <summary> /// <summary>
/// 绑定上级 /// 绑定上级
/// </summary> /// </summary>
@@ -333,12 +352,14 @@ namespace CoreCms.Net.Services
jm.msg = "自己不能邀请自己"; jm.msg = "自己不能邀请自己";
return jm; return jm;
} }
var user = await _dal.QueryByIdAsync(userId); var user = await _dal.QueryByIdAsync(userId);
if (user == null) if (user == null)
{ {
jm.msg = GlobalErrorCodeVars.Code10000; jm.msg = GlobalErrorCodeVars.Code10000;
return jm; return jm;
} }
if (user.parentId != 0) if (user.parentId != 0)
{ {
jm.msg = "已有上级邀请,不能绑定其他的邀请"; jm.msg = "已有上级邀请,不能绑定其他的邀请";
@@ -365,20 +386,22 @@ namespace CoreCms.Net.Services
if (bl) if (bl)
{ {
var allConfigs = await _settingServices.GetConfigDictionaries(); var allConfigs = await _settingServices.GetConfigDictionaries();
var inviterUserIntegral = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.InviterUserIntegral).ObjectToInt(); //是否开启积分功能 var inviterUserIntegral = CommonHelper
.GetConfigDictionary(allConfigs, SystemSettingConstVars.InviterUserIntegral).ObjectToInt(); //是否开启积分功能
if (inviterUserIntegral > 0) if (inviterUserIntegral > 0)
{ await _userPointLogServices.SetPoint(superiorId, inviterUserIntegral,
await _userPointLogServices.SetPoint(superiorId, inviterUserIntegral, (int)GlobalEnumVars.UserPointSourceTypes.PointTypeInviterUser, "发展用户:" + userId + "赠送积分"); (int)GlobalEnumVars.UserPointSourceTypes.PointTypeInviterUser, "发展用户:" + userId + "赠送积分");
}
} }
jm.status = bl; jm.status = bl;
jm.msg = bl ? "填写邀请码成功!" : "填写邀请码失败!"; jm.msg = bl ? "填写邀请码成功!" : "填写邀请码失败!";
return jm; return jm;
} }
#endregion #endregion
#region #region
/// <summary> /// <summary>
/// 获取我的上级邀请人 /// 获取我的上级邀请人
/// </summary> /// </summary>
@@ -394,14 +417,15 @@ namespace CoreCms.Net.Services
jm.msg = GlobalErrorCodeVars.Code10000; jm.msg = GlobalErrorCodeVars.Code10000;
return jm; return jm;
} }
if (user.parentId == 0) if (user.parentId == 0)
{ {
jm.msg = "无上级邀请人"; jm.msg = "无上级邀请人";
return jm; return jm;
} }
var parentUser = await _dal.QueryByClauseAsync(p => p.id == user.parentId); var parentUser = await _dal.QueryByClauseAsync(p => p.id == user.parentId);
if (parentUser != null) if (parentUser != null)
{
jm.data = new jm.data = new
{ {
nickname = parentUser.nickName, nickname = parentUser.nickName,
@@ -409,7 +433,6 @@ namespace CoreCms.Net.Services
mobile = UserHelper.FormatMobile(parentUser.mobile), mobile = UserHelper.FormatMobile(parentUser.mobile),
ctime = parentUser.createTime ctime = parentUser.createTime
}; };
}
return jm; return jm;
} }
@@ -442,18 +465,16 @@ namespace CoreCms.Net.Services
else else
{ {
if (info.parentId == userId) if (info.parentId == userId)
{
return true; return true;
}
else else
{
return IsInvited(userId, info.parentId); return IsInvited(userId, info.parentId);
} }
} }
}
#endregion #endregion
#region #region
/// <summary> /// <summary>
/// 忘记密码,找回密码 /// 忘记密码,找回密码
/// </summary> /// </summary>
@@ -470,24 +491,28 @@ namespace CoreCms.Net.Services
jm.msg = GlobalErrorCodeVars.Code10013; jm.msg = GlobalErrorCodeVars.Code10013;
return jm; return jm;
} }
var smsBool = await _smsServices.Check(mobile, code, "veri"); var smsBool = await _smsServices.Check(mobile, code, "veri");
if (!smsBool) if (!smsBool)
{ {
jm.msg = GlobalErrorCodeVars.Code10012; jm.msg = GlobalErrorCodeVars.Code10012;
return jm; return jm;
} }
var userInfo = await _dal.QueryByClauseAsync(p => p.mobile == mobile); var userInfo = await _dal.QueryByClauseAsync(p => p.mobile == mobile);
if (userInfo == null) if (userInfo == null)
{ {
jm.msg = "没有此手机号码"; jm.msg = "没有此手机号码";
return jm; return jm;
} }
return await EditPwd(userInfo.id, newPwd, userInfo.createTime); return await EditPwd(userInfo.id, newPwd, userInfo.createTime);
} }
#endregion #endregion
#region #region
/// <summary> /// <summary>
/// 修改密码 /// 修改密码
/// </summary> /// </summary>
@@ -504,6 +529,7 @@ namespace CoreCms.Net.Services
jm.msg = GlobalErrorCodeVars.Code11009; jm.msg = GlobalErrorCodeVars.Code11009;
return jm; return jm;
} }
var md5Pwd = CommonHelper.EnPassword(newPwd, createTime); var md5Pwd = CommonHelper.EnPassword(newPwd, createTime);
var up = await _dal.UpdateAsync(p => new CoreCmsUser() { passWord = md5Pwd }, p => p.id == userId); var up = await _dal.UpdateAsync(p => new CoreCmsUser() { passWord = md5Pwd }, p => p.id == userId);
if (!up) if (!up)
@@ -512,10 +538,12 @@ namespace CoreCms.Net.Services
jm.msg = "密码修改失败"; jm.msg = "密码修改失败";
return jm; return jm;
} }
jm.status = true; jm.status = true;
jm.msg = "密码修改成功"; jm.msg = "密码修改成功";
return jm; return jm;
} }
#endregion #endregion
#region #region
@@ -527,7 +555,9 @@ namespace CoreCms.Net.Services
/// <param name="loginType">登录方式(1普通,2短信,3微信小程序拉取手机号)</param> /// <param name="loginType">登录方式(1普通,2短信,3微信小程序拉取手机号)</param>
/// <param name="platform"></param> /// <param name="platform"></param>
/// <returns></returns> /// <returns></returns>
public async Task<WebApiCallBack> SmsLogin(FMWxAccountCreate entity, int loginType = (int)GlobalEnumVars.LoginType.WeChatPhoneNumber, int platform = (int)GlobalEnumVars.CoreShopSystemCategory.Api) public async Task<WebApiCallBack> SmsLogin(FMWxAccountCreate entity,
int loginType = (int)GlobalEnumVars.LoginType.WeChatPhoneNumber,
int platform = (int)GlobalEnumVars.CoreShopSystemCategory.Api)
{ {
var jm = new WebApiCallBack(); var jm = new WebApiCallBack();
@@ -577,21 +607,17 @@ namespace CoreCms.Net.Services
//没有此用户,创建此用户 //没有此用户,创建此用户
if (!string.IsNullOrEmpty(entity.sessionAuthId)) if (!string.IsNullOrEmpty(entity.sessionAuthId))
{ {
var wxUserInfo = await _userWeChatInfoServices.QueryByClauseAsync(p => p.openid == entity.sessionAuthId); var wxUserInfo =
await _userWeChatInfoServices.QueryByClauseAsync(p => p.openid == entity.sessionAuthId);
if (wxUserInfo != null) if (wxUserInfo != null)
{ {
if (string.IsNullOrEmpty(entity.avatar)) if (string.IsNullOrEmpty(entity.avatar)) entity.avatar = wxUserInfo.avatar;
{ if (string.IsNullOrEmpty(entity.nickname)) entity.nickname = wxUserInfo.nickName;
entity.avatar = wxUserInfo.avatar;
}
if (string.IsNullOrEmpty(entity.nickname))
{
entity.nickname = wxUserInfo.nickName;
}
userInfo.sex = wxUserInfo?.gender ?? 3; userInfo.sex = wxUserInfo?.gender ?? 3;
userInfo.userWx = wxUserInfo?.id ?? 0; userInfo.userWx = wxUserInfo?.id ?? 0;
} }
} }
//如果没有头像和昵称,那么就取系统头像和昵称吧 //如果没有头像和昵称,那么就取系统头像和昵称吧
if (!string.IsNullOrEmpty(entity.avatar)) if (!string.IsNullOrEmpty(entity.avatar))
{ {
@@ -600,11 +626,14 @@ namespace CoreCms.Net.Services
else else
{ {
var allConfigs = await _settingServices.GetConfigDictionaries(); var allConfigs = await _settingServices.GetConfigDictionaries();
var defaultImage = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.ShopDefaultImage); var defaultImage =
CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.ShopDefaultImage);
userInfo.avatarImage = defaultImage; userInfo.avatarImage = defaultImage;
} }
userInfo.nickName = !string.IsNullOrEmpty(entity.nickname) ? entity.nickname : UserHelper.FormatMobile(entity.mobile); userInfo.nickName = !string.IsNullOrEmpty(entity.nickname)
? entity.nickname
: UserHelper.FormatMobile(entity.mobile);
if (entity.invitecode > 0) if (entity.invitecode > 0)
{ {
@@ -629,6 +658,7 @@ namespace CoreCms.Net.Services
jm.msg = GlobalErrorCodeVars.Code11009; jm.msg = GlobalErrorCodeVars.Code11009;
return jm; return jm;
} }
userInfo.passWord = CommonHelper.EnPassword(entity.password, userInfo.createTime); userInfo.passWord = CommonHelper.EnPassword(entity.password, userInfo.createTime);
} }
else else
@@ -650,12 +680,14 @@ namespace CoreCms.Net.Services
if (userId > 0 && entity.invitecode > 0 && userInfo.parentId > 0) if (userId > 0 && entity.invitecode > 0 && userInfo.parentId > 0)
{ {
var allConfigs = await _settingServices.GetConfigDictionaries(); var allConfigs = await _settingServices.GetConfigDictionaries();
var inviterUserIntegral = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.InviterUserIntegral).ObjectToInt(); //是否开启积分功能 var inviterUserIntegral = CommonHelper
.GetConfigDictionary(allConfigs, SystemSettingConstVars.InviterUserIntegral)
.ObjectToInt(); //是否开启积分功能
if (inviterUserIntegral > 0) if (inviterUserIntegral > 0)
{ await _userPointLogServices.SetPoint(userInfo.parentId, inviterUserIntegral,
await _userPointLogServices.SetPoint(userInfo.parentId, inviterUserIntegral, (int)GlobalEnumVars.UserPointSourceTypes.PointTypeInviterUser, "发展用户:" + userId + "赠送积分"); (int)GlobalEnumVars.UserPointSourceTypes.PointTypeInviterUser, "发展用户:" + userId + "赠送积分");
}
} }
userInfo = await _dal.QueryByIdAsync(userId); userInfo = await _dal.QueryByIdAsync(userId);
} }
else else
@@ -667,6 +699,7 @@ namespace CoreCms.Net.Services
return jm; return jm;
} }
} }
//判断是否是小程序里的微信登陆,如果是,就给他绑定微信账号 //判断是否是小程序里的微信登陆,如果是,就给他绑定微信账号
if (!string.IsNullOrEmpty(entity.sessionAuthId)) if (!string.IsNullOrEmpty(entity.sessionAuthId))
{ {
@@ -678,14 +711,19 @@ namespace CoreCms.Net.Services
//使用新微信(B)登录,同时又授权此手机号码绑定。 //使用新微信(B)登录,同时又授权此手机号码绑定。
//小程序内微信支付时候因为登录的微信B与拉取手机号码绑定后获取到数据是A //小程序内微信支付时候因为登录的微信B与拉取手机号码绑定后获取到数据是A
//会导致微信数据报错() //会导致微信数据报错()
await _userWeChatInfoServices.UpdateAsync(p => new CoreCmsUserWeChatInfo() { userId = 0 }, p => p.openid != entity.sessionAuthId && p.userId == userInfo.id);
//2023-05-05 屏蔽此代码是为了让公众号小程序实现多openid指向同一个账号但是也存在问题就是多了之后的解绑问题应该做个登录设备管理。
//await _userWeChatInfoServices.UpdateAsync(p => new CoreCmsUserWeChatInfo() { userId = 0 }, p => p.openid != entity.sessionAuthId && p.userId == userInfo.id);
} }
//如果是别的未绑定微信用户进来,则反向直接关联。 //如果是别的未绑定微信用户进来,则反向直接关联。
var wxUserInfo = await _userWeChatInfoServices.QueryByClauseAsync(p => p.openid == entity.sessionAuthId); var wxUserInfo = await _userWeChatInfoServices.QueryByClauseAsync(p => p.openid == entity.sessionAuthId);
if (wxUserInfo != null) if (wxUserInfo != null)
{ {
await _dal.UpdateAsync(p => new CoreCmsUser() { userWx = wxUserInfo.id }, p => p.id == userInfo.id); await _dal.UpdateAsync(p => new CoreCmsUser() { userWx = wxUserInfo.id }, p => p.id == userInfo.id);
} }
} }
if (userInfo.status == (int)GlobalEnumVars.UserStatus.) if (userInfo.status == (int)GlobalEnumVars.UserStatus.)
@@ -696,10 +734,13 @@ namespace CoreCms.Net.Services
if (platform == (int)GlobalEnumVars.CoreShopSystemCategory.Api) if (platform == (int)GlobalEnumVars.CoreShopSystemCategory.Api)
{ {
var claims = new List<Claim> { var claims = new List<Claim>
new Claim(ClaimTypes.Name, userInfo.nickName), {
new Claim(JwtRegisteredClaimNames.Jti, userInfo.id.ToString()), new(ClaimTypes.Name, userInfo.nickName),
new Claim(ClaimTypes.Expiration, DateTime.Now.AddSeconds(_permissionRequirement.Expiration.TotalSeconds).ToString()) }; new(JwtRegisteredClaimNames.Jti, userInfo.id.ToString()),
new(ClaimTypes.Expiration,
DateTime.Now.AddSeconds(_permissionRequirement.Expiration.TotalSeconds).ToString())
};
//用户标识 //用户标识
var identity = new ClaimsIdentity(JwtBearerDefaults.AuthenticationScheme); var identity = new ClaimsIdentity(JwtBearerDefaults.AuthenticationScheme);
identity.AddClaims(claims); identity.AddClaims(claims);
@@ -714,9 +755,12 @@ namespace CoreCms.Net.Services
var log = new CoreCmsUserLog(); var log = new CoreCmsUserLog();
log.userId = userInfo.id; log.userId = userInfo.id;
log.state = isReg ? (int)GlobalEnumVars.UserLogTypes. : (int)GlobalEnumVars.UserLogTypes.; log.state = isReg ? (int)GlobalEnumVars.UserLogTypes. : (int)GlobalEnumVars.UserLogTypes.;
log.ip = _httpContextAccessor.HttpContext?.Connection.RemoteIpAddress != null ? _httpContextAccessor.HttpContext.Connection.RemoteIpAddress.MapToIPv4().ToString() : "127.0.0.1"; log.ip = _httpContextAccessor.HttpContext?.Connection.RemoteIpAddress != null
? _httpContextAccessor.HttpContext.Connection.RemoteIpAddress.MapToIPv4().ToString()
: "127.0.0.1";
log.createTime = DateTime.Now; log.createTime = DateTime.Now;
log.parameters = isReg ? GlobalEnumVars.UserLogTypes..ToString() : GlobalEnumVars.UserLogTypes..ToString(); log.parameters =
isReg ? GlobalEnumVars.UserLogTypes..ToString() : GlobalEnumVars.UserLogTypes..ToString();
await _userLogServices.InsertAsync(log); await _userLogServices.InsertAsync(log);
} }
else else
@@ -724,12 +768,14 @@ namespace CoreCms.Net.Services
jm.msg = GlobalErrorCodeVars.Code11022; jm.msg = GlobalErrorCodeVars.Code11022;
return jm; return jm;
} }
return jm; return jm;
} }
#endregion #endregion
#region #region
/// <summary> /// <summary>
/// 根据条件查询分页数据 /// 根据条件查询分页数据
/// </summary> /// </summary>
@@ -749,6 +795,7 @@ namespace CoreCms.Net.Services
#endregion #endregion
#region #region
/// <summary> /// <summary>
/// 按天统计新会员 /// 按天统计新会员
/// </summary> /// </summary>
@@ -757,22 +804,25 @@ namespace CoreCms.Net.Services
{ {
return await _dal.Statistics(day); return await _dal.Statistics(day);
} }
#endregion #endregion
#region #region
/// <summary> /// <summary>
/// 按天统计当天下单活跃会员 /// 按天统计当天下单活跃会员
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
public async Task<List<StatisticsOut>> StatisticsOrder(int day) public async Task<List<StatisticsOut>> StatisticsOrder(int day)
{ {
return await _dal.StatisticsOrder(day); return await _dal.StatisticsOrder(day);
} }
#endregion #endregion
#region #region
/// <summary> /// <summary>
/// 当关闭分销和代理的时候走个人邀请好友分佣 /// 当关闭分销和代理的时候走个人邀请好友分佣
/// </summary> /// </summary>
@@ -788,21 +838,28 @@ namespace CoreCms.Net.Services
var jm = new WebApiCallBack(); var jm = new WebApiCallBack();
var allConfigs = await _settingServices.GetConfigDictionaries(); var allConfigs = await _settingServices.GetConfigDictionaries();
//分佣类型1百分比/2固定金额 //分佣类型1百分比/2固定金额
var commissionType = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.CommissionType).ObjectToInt(0); var commissionType = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.CommissionType)
.ObjectToInt(0);
//一级佣金 //一级佣金
var commissionFirst = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.CommissionFirst).ObjectToDecimal(0); var commissionFirst = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.CommissionFirst)
.ObjectToDecimal(0);
//二级佣金 //二级佣金
var commissionSecond = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.CommissionSecond).ObjectToDecimal(0); var commissionSecond = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.CommissionSecond)
.ObjectToDecimal(0);
//三级佣金 //三级佣金
var commissionThird = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.CommissionFirst).ObjectToDecimal(0); var commissionThird = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.CommissionFirst)
.ObjectToDecimal(0);
//是否开启三级分销(1开启2未开启) //是否开启三级分销(1开启2未开启)
var openDistribution = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.OpenDistribution).ObjectToInt(0); var openDistribution = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.OpenDistribution)
.ObjectToInt(0);
//是否开启代理模块(1开启2未开启) //是否开启代理模块(1开启2未开启)
var isOpenAgent = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.IsOpenAgent).ObjectToInt(0); var isOpenAgent = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.IsOpenAgent)
.ObjectToInt(0);
//当分销模块和代理模块都关闭的情况下,才去计算邀请好友的操作。 //当分销模块和代理模块都关闭的情况下,才去计算邀请好友的操作。
if (openDistribution != 2 || isOpenAgent != 2) return jm; if (openDistribution != 2 || isOpenAgent != 2) return jm;
var order = await _orderServices.QueryByClauseAsync(p => p.orderId == orderId && p.status == (int)GlobalEnumVars.OrderStatus.Complete); var order = await _orderServices.QueryByClauseAsync(p =>
p.orderId == orderId && p.status == (int)GlobalEnumVars.OrderStatus.Complete);
if (order == null) if (order == null)
{ {
jm.msg = "订单查询失败"; jm.msg = "订单查询失败";
@@ -812,7 +869,8 @@ namespace CoreCms.Net.Services
var user = await _dal.QueryByClauseAsync(p => p.id == order.userId, true); var user = await _dal.QueryByClauseAsync(p => p.id == order.userId, true);
// 获取付款单,我们只拿付款单的实际金额去计算,不用订单的金额。这样直接不用去计算优惠了,只看用户付了多少。从上面提佣金出来。 // 获取付款单,我们只拿付款单的实际金额去计算,不用订单的金额。这样直接不用去计算优惠了,只看用户付了多少。从上面提佣金出来。
var billPayments = await _billPaymentsServices.QueryByClauseAsync(p => p.sourceId == orderId && p.status == (int)GlobalEnumVars.BillPaymentsStatus.Payed); var billPayments = await _billPaymentsServices.QueryByClauseAsync(p =>
p.sourceId == orderId && p.status == (int)GlobalEnumVars.BillPaymentsStatus.Payed);
if (billPayments.money <= 0) return jm; if (billPayments.money <= 0) return jm;
{ {
//1级佣金 //1级佣金
@@ -835,25 +893,25 @@ namespace CoreCms.Net.Services
if (parentLevel1 == null) return jm; if (parentLevel1 == null) return jm;
{ {
//钱挪到会员余额里面 //钱挪到会员余额里面
await _userBalanceServices.Change(user.parentId, (int)GlobalEnumVars.UserBalanceSourceTypes.Distribution, commissionLevel1, orderId); await _userBalanceServices.Change(user.parentId,
(int)GlobalEnumVars.UserBalanceSourceTypes.Distribution, commissionLevel1, orderId);
if (parentLevel1.parentId <= 0) return jm; if (parentLevel1.parentId <= 0) return jm;
var parentLevel2 = await _dal.QueryByClauseAsync(p => p.id == parentLevel1.parentId, true); var parentLevel2 = await _dal.QueryByClauseAsync(p => p.id == parentLevel1.parentId, true);
//钱挪到会员余额里面 //钱挪到会员余额里面
await _userBalanceServices.Change(parentLevel1.parentId, (int)GlobalEnumVars.UserBalanceSourceTypes.Distribution, commissionLevel2, orderId); await _userBalanceServices.Change(parentLevel1.parentId,
(int)GlobalEnumVars.UserBalanceSourceTypes.Distribution, commissionLevel2, orderId);
if (parentLevel2.parentId <= 0) return jm; if (parentLevel2.parentId <= 0) return jm;
{ {
var parentLevel3 = await _dal.QueryByClauseAsync(p => p.id == parentLevel2.parentId, true); var parentLevel3 = await _dal.QueryByClauseAsync(p => p.id == parentLevel2.parentId, true);
if (parentLevel3 != null) if (parentLevel3 != null)
{
//钱挪到会员余额里面 //钱挪到会员余额里面
await _userBalanceServices.Change(parentLevel2.parentId, (int)GlobalEnumVars.UserBalanceSourceTypes.Distribution, commissionLevel3, orderId); await _userBalanceServices.Change(parentLevel2.parentId,
} (int)GlobalEnumVars.UserBalanceSourceTypes.Distribution, commissionLevel3, orderId);
} }
} }
} }
return jm; return jm;
} }
#endregion
} #endregion
} }

View File

@@ -30,6 +30,7 @@ using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using NPOI.HSSF.UserModel; using NPOI.HSSF.UserModel;
using SqlSugar; using SqlSugar;
using static CoreCms.Net.Configuration.GlobalEnumVars;
namespace CoreCms.Net.Web.Admin.Controllers namespace CoreCms.Net.Web.Admin.Controllers
{ {
@@ -255,6 +256,13 @@ namespace CoreCms.Net.Web.Admin.Controllers
{ {
//返回数据 //返回数据
var jm = new AdminUiCallBack { code = 0 }; var jm = new AdminUiCallBack { code = 0 };
var userAccountTypes = EnumHelper.EnumToList<GlobalEnumVars.UserAccountTypes>();
jm.data = new
{
userAccountTypes
};
return jm; return jm;
} }
#endregion #endregion

View File

@@ -118,6 +118,18 @@
{ type: "checkbox", fixed: "left" }, { type: "checkbox", fixed: "left" },
{ field: 'id', title: '微信序列', width: 70, sort: false }, { field: 'id', title: '微信序列', width: 70, sort: false },
//{ field: 'type', title: '第三方登录类型', sort: false, width: 105 }, //{ field: 'type', title: '第三方登录类型', sort: false, width: 105 },
{
field: 'type', title: '登录类型', align: "center",
templet: function (data) {
var str = '';
for (i = 0; i < d.data.userAccountTypes.length; i++) {
if (data.type === d.data.userAccountTypes[i].value) { str = d.data.userAccountTypes[i].title }
}
//return str;
return "<img src='/static/images/common/userwx_" + data.type + ".jpg' style='width:28px;' title='" + str + "' />";
}, width: 90
},
{ field: 'userId', title: '用户序列', sort: false, width: 80 }, { field: 'userId', title: '用户序列', sort: false, width: 80 },
{ field: 'openid', title: 'openId', sort: false }, { field: 'openid', title: 'openId', sort: false },
//{ field: 'sessionKey', title: '缓存key', sort: false,width: 105 }, //{ field: 'sessionKey', title: '缓存key', sort: false,width: 105 },