【新增】新增微信扫码支付功能,对接PC端。

【新增】增加DTO类库,将逐步完善dto层。
【修复】修复【分类】切换后,切换回来未清零原始数据,导致更新数据重复的问题。
【调整】移除模板库功能,防止出现审核因为模板库页面存在而导致的审核失败。暂将模板库的代码存放到会员QQ群内,方便下载使用。
【调整】代码生成器【Repository.tpl】移除Cache手动增删改,【SqlSugarSetup】增加sqlsugar自动检测增删改后清理二级缓存。
【调整】后端新增秒杀独立组件,用于区分团购及秒杀的差异,首页新增秒杀组件。
【优化】重写首页所有组件样式及接口数据获取效率。
【优化】优化拼团,秒杀,团购,接龙数据获取逻辑,提升列表及详情页面数据获取效率。
【优化】调整拼团,秒杀,团购,服务商品推广海报为新式海报效果。增加服务商品推广海报。
【优化】清理h5相关代码判断,移除h5支付组件,提高响应速度。
【优化】移除小程序前端冗余代码。加快代码执行效率。
This commit is contained in:
大灰灰
2022-10-31 05:28:16 +08:00
parent 6ae59c6af7
commit 81dcf814d1
173 changed files with 4172 additions and 3408 deletions

View File

@@ -34,17 +34,15 @@ namespace CoreCms.Net.Web.WebApi.Controllers
private readonly IHttpContextUser _user;
private readonly ICoreCmsPromotionServices _coreCmsPromotionServices;
private ICoreCmsGoodsServices _goodsServices;
/// <summary>
/// 构造函数
/// </summary>
public GroupController(IHttpContextUser user, ICoreCmsPromotionServices coreCmsPromotionServices, ICoreCmsGoodsServices goodsServices)
public GroupController(IHttpContextUser user, ICoreCmsPromotionServices coreCmsPromotionServices)
{
_user = user;
_coreCmsPromotionServices = coreCmsPromotionServices;
_goodsServices = goodsServices;
}
@@ -58,7 +56,7 @@ namespace CoreCms.Net.Web.WebApi.Controllers
[HttpPost]
public async Task<WebApiCallBack> GetList([FromBody] FMGroupGetListPost entity)
{
var jm = await _coreCmsPromotionServices.GetGroupList(entity.type, _user.ID, entity.status, entity.page, entity.limit);
var jm = await _coreCmsPromotionServices.GetGroupList(entity.type, entity.status, entity.page, entity.limit);
return jm;
}
@@ -72,7 +70,7 @@ namespace CoreCms.Net.Web.WebApi.Controllers
[HttpPost]
public async Task<WebApiCallBack> GetGoodsDetial([FromBody] FMGetGoodsDetial entity)
{
var jm = await _coreCmsPromotionServices.GetGroupDetail(entity.id, 0, entity.type, entity.groupId, entity.needSku);
var jm = await _coreCmsPromotionServices.GetGroupDetail(entity.id, 0, entity.type, entity.needSku);
return jm;
}
#endregion

View File

@@ -16,6 +16,7 @@ using CoreCms.Net.Auth.HttpContextUser;
using CoreCms.Net.Caching.AutoMate.RedisCache;
using CoreCms.Net.Configuration;
using CoreCms.Net.IServices;
using CoreCms.Net.Loging;
using CoreCms.Net.Model.Entities;
using CoreCms.Net.Model.Entities.Expression;
using CoreCms.Net.Model.FromBody;
@@ -25,6 +26,7 @@ using CoreCms.Net.Utility.Extensions;
using CoreCms.Net.Utility.Helper;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;
using SqlSugar;
namespace CoreCms.Net.Web.WebApi.Controllers
@@ -48,6 +50,7 @@ namespace CoreCms.Net.Web.WebApi.Controllers
private readonly ICoreCmsGoodsServices _goodsServices;
private readonly ICoreCmsStoreServices _storeServices;
private readonly ICoreCmsOrderDistributionModelServices _orderDistributionModelServices;
private readonly ICoreCmsBillPaymentsServices _billPaymentsServices;
private readonly IRedisOperationRepository _redisOperationRepository;
@@ -61,7 +64,7 @@ namespace CoreCms.Net.Web.WebApi.Controllers
, ICoreCmsSettingServices settingServices
, ICoreCmsAreaServices areaServices
, ICoreCmsBillReshipServices reshipServices, ICoreCmsShipServices shipServices
, ICoreCmsBillDeliveryServices billDeliveryServices, ICoreCmsLogisticsServices logisticsServices, ICoreCmsGoodsServices goodsServices, ICoreCmsStoreServices storeServices, ICoreCmsOrderDistributionModelServices orderDistributionModelServices, IRedisOperationRepository redisOperationRepository)
, ICoreCmsBillDeliveryServices billDeliveryServices, ICoreCmsLogisticsServices logisticsServices, ICoreCmsGoodsServices goodsServices, ICoreCmsStoreServices storeServices, ICoreCmsOrderDistributionModelServices orderDistributionModelServices, IRedisOperationRepository redisOperationRepository, ICoreCmsBillPaymentsServices billPaymentsServices)
{
_user = user;
_orderServices = orderServices;
@@ -76,6 +79,7 @@ namespace CoreCms.Net.Web.WebApi.Controllers
_storeServices = storeServices;
_orderDistributionModelServices = orderDistributionModelServices;
_redisOperationRepository = redisOperationRepository;
_billPaymentsServices = billPaymentsServices;
}
@@ -269,6 +273,52 @@ namespace CoreCms.Net.Web.WebApi.Controllers
}
#endregion
#region ==================================================
/// <summary>
/// 订单预览
/// </summary>
/// <returns></returns>
[HttpPost]
[Authorize]
public async Task<WebApiCallBack> CheckOrderIsPaid([FromBody] FMStringId entity)
{
var jm = new WebApiCallBack();
var lockKey = "LOCK_CheckOrderIsPaid:user_" + _user.ID;
var lockHolder = Guid.NewGuid().ToString("N"); //锁持有者
var redisUserLock = await _redisOperationRepository.LockTakeAsync(lockKey, lockHolder, TimeSpan.FromSeconds(5));
if (redisUserLock)
{
try
{
if (string.IsNullOrEmpty(entity.id))
{
jm.msg = "支付单编号不能为空";
return jm;
}
var bl = await _orderServices.ExistsAsync(p => p.orderId == entity.id && (p.payStatus == (int)GlobalEnumVars.OrderPayStatus.Yes || p.payStatus == (int)GlobalEnumVars.OrderPayStatus.PartialYes), true);
jm.status = true;
jm.data = bl;
}
catch (Exception e)
{
jm.msg = "数据处理异常";
jm.otherData = e;
NLogUtil.WriteFileLog(NLog.LogLevel.Error, LogType.ApiRequest, "用户支付支付", JsonConvert.SerializeObject(jm));
}
finally
{
await _redisOperationRepository.LockReleaseAsync(lockKey, lockHolder);
}
}
else
{
jm.msg = "当前请求太频繁_请稍后再试";
}
return jm;
}
#endregion
#region ==================================================
/// <summary>
/// 获取订单不同状态的数量
@@ -610,5 +660,7 @@ namespace CoreCms.Net.Web.WebApi.Controllers
#endregion
}
}

View File

@@ -84,45 +84,24 @@ namespace CoreCms.Net.Web.WebApi.Controllers
/// </summary>
[HttpPost]
[Description("获取用户购买记录")]
public async Task<WebApiCallBack> GetRecod([FromBody] FMGetRecodPost entity)
public async Task<WebApiCallBack> GetRecord([FromBody] FMGetRecodPost entity)
{
var jm = new WebApiCallBack() { status = true, msg = "获取成功", otherData = entity };
/***
* 随机数
* 其它随机数据,需要自己补充
*/
//logo作为头像
Random rand = new Random();
//随机数
var rand = new Random();
//获取配置项
var allConfigs = await _settingServices.GetConfigDictionaries();
//logo作为头像
var avatar = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.ShopLogo);
var names = new string[] { "无人像你", "啭裑①羣豞", "朕射妳无罪", "骑着蜗牛狂奔", "残孤星", "上网可以别开QVOD", "请把QQ留下", "蹭网可以,一小时两块钱", "I在。哭泣", "不倾国倾城只倾他一人", "你再发光我就拔你插头", "家,世间最温暖的地方", "挥着鸡翅膀的女孩", "难不难过都是一个人过", "原谅我盛装出席只为错过你", "残孤星", "只适合被遗忘", "爱情,算个屁丶", "执子辶掱", "朕今晚翻你牌子", "①苆兜媞命", "中华一样的高傲", "始于心动止于枯骨", "我们幸福呢", "表白失败,勿扰", "髮型吥能亂", "陽咣丅啲憂喐", "你棺材是翻盖的还是滑盖的", "孤枕", "泪颜葬相思", "喵星人", "超拽霸气的微博名字", "晚安晚安晚晚难安", "却输给了秒", "为什么我吃德芙没有黑丝飘", "请输入我大" };
var listUsers = new List<RandUser>();
foreach (var itemName in names)
{
var min = rand.Next(100, 1000);
var createTime = DateTime.Now.AddMinutes(-min);
listUsers.Add(new RandUser()
{
avatar = avatar,
createTime = CommonHelper.TimeAgo(createTime),
nickname = itemName,
desc = "下单成功",
dt = createTime
});
}
if (entity.type == "home")
{
//数据库里面随机取出来几条数据
var orders = await _orderServices.QueryListByClauseAsync(p => p.isdel == false, 20, p => p.createTime,
OrderByType.Desc);
var orders = await _orderServices.QueryListByClauseAsync(p => p.isdel == false, 20, p => p.createTime, OrderByType.Desc, true, true, 60);
if (orders != null && orders.Any())
{
Random rd = new Random();
var rd = new Random();
var index = rd.Next(orders.Count);
var orderItem = orders[index];
if (orderItem != null)
@@ -143,7 +122,24 @@ namespace CoreCms.Net.Web.WebApi.Controllers
}
else
{
Random rd = new Random();
var names = new[] { "无人像你", "啭裑①羣豞", "朕射妳无罪", "骑着蜗牛狂奔", "残孤星", "上网可以别开QVOD", "请把QQ留下", "蹭网可以,一小时两块钱", "I在。哭泣", "不倾国倾城只倾他一人", "你再发光我就拔你插头", "家,世间最温暖的地方", "挥着鸡翅膀的女孩", "难不难过都是一个人过", "原谅我盛装出席只为错过你", "残孤星", "只适合被遗忘", "爱情,算个屁丶", "执子辶掱", "朕今晚翻你牌子", "①苆兜媞命", "中华一样的高傲", "始于心动止于枯骨", "我们幸福呢", "表白失败,勿扰", "髮型吥能亂", "陽咣丅啲憂喐", "你棺材是翻盖的还是滑盖的", "孤枕", "泪颜葬相思", "喵星人", "超拽霸气的微博名字", "晚安晚安晚晚难安", "却输给了秒", "为什么我吃德芙没有黑丝飘", "请输入我大" };
var listUsers = new List<RandUser>();
foreach (var itemName in names)
{
var min = rand.Next(100, 1000);
var createTime = DateTime.Now.AddMinutes(-min);
listUsers.Add(new RandUser()
{
avatar = avatar,
createTime = CommonHelper.TimeAgo(createTime),
nickname = itemName,
desc = "下单成功",
dt = createTime
});
}
var rd = new Random();
var listI = rd.Next(listUsers.Count);
jm.data = listUsers[listI];
}

View File

@@ -66,7 +66,7 @@ namespace CoreCms.Net.Web.WebApi.Controllers
/// </summary>
/// <returns></returns>
[HttpPost]
public async Task<WebApiCallBack> GetList()
public async Task<WebApiCallBack> GetList([FromBody] FMPageByIntId entity)
{
WebApiCallBack jm;
@@ -75,7 +75,7 @@ namespace CoreCms.Net.Web.WebApi.Controllers
{
userId = _user.ID;
}
jm = await _pinTuanRuleServices.GetPinTuanList(userId);
jm = await _pinTuanRuleServices.GetPinTuanList(userId, entity.page, entity.limit);
return jm;
}

View File

@@ -92,7 +92,7 @@ namespace CoreCms.Net.Web.WebApi.Controllers
where = where.And(p => p.status == (int)GlobalEnumVars.ServicesStatus.Shelve);
where = where.And(p => p.amount > 0);
where = where.And(p => p.startTime < dt && p.endTime > dt);
//where = where.And(p => p.startTime < dt && p.endTime > dt);
var list = await _servicesServices.QueryPageAsync(where, p => p.createTime, OrderByType.Desc, entity.page, entity.limit);
@@ -101,30 +101,45 @@ namespace CoreCms.Net.Web.WebApi.Controllers
var storesAll = await _storeServices.QueryAsync();
var userGradesAll = await _userGradeServices.QueryAsync();
foreach (var data in list)
foreach (var item in list)
{
TimeSpan ts = data.endTime.Subtract(dt);
data.timestamp = (int)ts.TotalSeconds;
if (!string.IsNullOrEmpty(data.consumableStore))
if (item.startTime > dt)
{
var consumableStoreStr = CommonHelper.GetCaptureInterceptedText(data.consumableStore, ",");
item.openStatus = (int)GlobalEnumVars.ServicesOpenStatus.notBegun;
TimeSpan ts = item.startTime.Subtract(dt);
item.timestamp = (int)ts.TotalSeconds;
}
else if (item.startTime <= dt && item.endTime > dt)
{
item.openStatus = (int)GlobalEnumVars.ServicesOpenStatus.begin;
TimeSpan ts = item.endTime.Subtract(dt);
item.timestamp = (int)ts.TotalSeconds;
}
else
{
item.openStatus = (int)GlobalEnumVars.ServicesOpenStatus.haveExpired;
}
if (!string.IsNullOrEmpty(item.consumableStore))
{
var consumableStoreStr = CommonHelper.GetCaptureInterceptedText(item.consumableStore, ",");
var consumableStoreIds = CommonHelper.StringToIntArray(consumableStoreStr);
if (consumableStoreIds.Any())
{
var stores = storesAll.Where(p => consumableStoreIds.Contains(p.id)).ToList();
data.consumableStores = stores.Select(p => p.storeName).ToList();
item.consumableStores = stores.Select(p => p.storeName).ToList();
}
}
if (!string.IsNullOrEmpty(data.allowedMembership))
if (!string.IsNullOrEmpty(item.allowedMembership))
{
var allowedMembershipStr = CommonHelper.GetCaptureInterceptedText(data.allowedMembership, ",");
var allowedMembershipStr = CommonHelper.GetCaptureInterceptedText(item.allowedMembership, ",");
var allowedMembershipIds = CommonHelper.StringToIntArray(allowedMembershipStr);
if (allowedMembershipIds.Any())
{
var userGrades = userGradesAll.Where(p => allowedMembershipIds.Contains(p.id)).ToList();
data.allowedMemberships = userGrades.Select(p => p.title).ToList();
item.allowedMemberships = userGrades.Select(p => p.title).ToList();
}
}
}
@@ -184,35 +199,25 @@ namespace CoreCms.Net.Web.WebApi.Controllers
}
}
int openStatus;
var lastTime = 0;
if (serviceInfo.startTime > dt)
{
openStatus = (int)GlobalEnumVars.ServicesOpenStatus.notBegun;
serviceInfo.openStatus = (int)GlobalEnumVars.ServicesOpenStatus.notBegun;
var ts = serviceInfo.startTime.Subtract(dt);
lastTime = (int)ts.TotalSeconds;
serviceInfo.timestamp = (int)ts.TotalSeconds;
}
else if (serviceInfo.startTime <= dt && serviceInfo.endTime > dt)
{
openStatus = (int)GlobalEnumVars.ServicesOpenStatus.begin;
serviceInfo.openStatus = (int)GlobalEnumVars.ServicesOpenStatus.begin;
var ts = serviceInfo.endTime.Subtract(dt);
lastTime = (int)ts.TotalSeconds;
serviceInfo.timestamp = (int)ts.TotalSeconds;
}
else
{
openStatus = (int)GlobalEnumVars.ServicesOpenStatus.haveExpired;
serviceInfo.openStatus = (int)GlobalEnumVars.ServicesOpenStatus.haveExpired;
}
jm.status = true;
jm.data = new
{
serviceInfo,
timer=new
{
openStatus,
lastTime,
}
};
jm.data = serviceInfo;
return jm;
}

View File

@@ -74,7 +74,7 @@ namespace CoreCms.Net.Web.WebApi.Controllers
{
var jm = new WebApiCallBack();
var ship = await _storeServices.QueryByClauseAsync(p => p.isDefault == true);
var ship = await _storeServices.QueryByClauseAsync(p => p.isDefault == true, true, true);
jm.status = true;
jm.data = ship;
@@ -119,7 +119,7 @@ namespace CoreCms.Net.Web.WebApi.Controllers
}
else
{
item.distanceStr = "未知";
item.distanceStr = "";
}
}
jm.data = data;
@@ -243,7 +243,7 @@ namespace CoreCms.Net.Web.WebApi.Controllers
var store = await _storeServices.GetStoreByUserId(_user.ID);
if (store != null)
{
jm = await _orderServices.GetOrderPageByMerchant(entity.dateType, entity.date, entity.status,entity.receiptType, entity.storeId, entity.page, entity.limit);
jm = await _orderServices.GetOrderPageByMerchant(entity.dateType, entity.date, entity.status, entity.receiptType, entity.storeId, entity.page, entity.limit);
}
else
{