mirror of
http://git.coreshop.cn/jianweie/coreshoppro.git
synced 2025-12-06 18:03:27 +08:00
# 2022-02-09
### 1.3.5 开源社区版(会员专业版同步修改): 无 ### 0.1.5 会员专业版: 【升级】nuget升级常用组件到最新版本。 【修复】服务商品列表图片组件从image调整为u--image组件。#I4RUC6 【优化】规范coreshop-goods.vue组件for循环未定义key的问题。 【修复】修复因升级uview版本导致【商品选项卡goodTabBar组件】切换失效的问题。 【新增】微信自定义交易组件增加【商品审核结果回调】,【类目审核结果回调】微信服务器消息推送处理。 【优化】调整自定义交易组件sku价格为decimal(18, 2)类型,方便小数处理。 【优化】微信自定义交易组件增加图片同步至微信侧功能。 【优化】重命名一些方法名称大小写。 【新增】首页设计轮播图增加高度设置功能。#I4SWEA 【修复】优化在苹果6/7/8plus及安卓一些机型出现分享海报弹窗文字被遮挡的问题。#I4SWCA
This commit is contained in:
@@ -22,13 +22,14 @@ using CoreCms.Net.Loging;
|
||||
using CoreCms.Net.Model.Entities;
|
||||
using CoreCms.Net.Model.Entities.Expression;
|
||||
using CoreCms.Net.Model.ViewModels.Basics;
|
||||
using CoreCms.Net.Model.ViewModels.DTO;
|
||||
using CoreCms.Net.Model.ViewModels.QueryMuch;
|
||||
using CoreCms.Net.Model.ViewModels.UI;
|
||||
using CoreCms.Net.Model.ViewModels.DTO;
|
||||
using CoreCms.Net.Utility.Extensions;
|
||||
using CoreCms.Net.Utility.Helper;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Hosting;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using SqlSugar;
|
||||
|
||||
@@ -46,7 +47,8 @@ namespace CoreCms.Net.Services
|
||||
private readonly ICoreCmsMessageCenterServices _messageCenterServices;
|
||||
private readonly ICoreCmsUserPointLogServices _userPointLogServices;
|
||||
private readonly IRedisOperationRepository _redisOperationRepository;
|
||||
|
||||
|
||||
|
||||
public CoreCmsBillAftersalesServices(IUnitOfWork unitOfWork, ICoreCmsBillAftersalesRepository dal, IServiceProvider serviceProvider, ICoreCmsMessageCenterServices messageCenterServices, ICoreCmsUserPointLogServices userPointLogServices, IRedisOperationRepository redisOperationRepository)
|
||||
{
|
||||
this._dal = dal;
|
||||
@@ -94,12 +96,12 @@ namespace CoreCms.Net.Services
|
||||
var refundMoney = base.GetSum(where, p => p.refundAmount);
|
||||
|
||||
//算退货商品明细
|
||||
var list = base.QueryMuch<CoreCmsBillAftersalesItem, CoreCmsBillAftersales, QMAftersalesItems>(
|
||||
var list = base.QueryMuch<CoreCmsBillAftersalesItem, CoreCmsBillAftersales, QMAfterSalesItems>(
|
||||
(child, parent) => new object[]
|
||||
{
|
||||
JoinType.Inner, child.aftersalesId == parent.aftersalesId
|
||||
},
|
||||
(child, parent) => new QMAftersalesItems
|
||||
(child, parent) => new QMAfterSalesItems
|
||||
{
|
||||
orderItemsId = child.orderItemsId,
|
||||
nums = child.nums,
|
||||
@@ -127,7 +129,7 @@ namespace CoreCms.Net.Services
|
||||
}
|
||||
|
||||
var billAftersales = base.QueryListByClause(where);
|
||||
jm.data = new OrderToAftersalesDto
|
||||
jm.data = new OrderToAfterSalesDto
|
||||
{
|
||||
refundMoney = refundMoney,
|
||||
reshipGoods = reshipGoods,
|
||||
@@ -181,19 +183,32 @@ namespace CoreCms.Net.Services
|
||||
|
||||
using var container = _serviceProvider.CreateScope();
|
||||
var orderServices = container.ServiceProvider.GetService<ICoreCmsOrderServices>();
|
||||
var settingServices = container.ServiceProvider.GetService<ICoreCmsSettingServices>();
|
||||
var orderItemServices = container.ServiceProvider.GetService<ICoreCmsOrderItemServices>();
|
||||
//var settingServices = container.ServiceProvider.GetService<ICoreCmsSettingServices>();
|
||||
var imagesServices = container.ServiceProvider.GetService<ICoreCmsBillAftersalesImagesServices>();
|
||||
var itemServices = container.ServiceProvider.GetService<ICoreCmsBillAftersalesItemServices>();
|
||||
var result = await orderServices.GetOrderInfoByOrderId(orderId, userId);
|
||||
if (result.status == false)
|
||||
var aftersalesServices = container.ServiceProvider.GetService<ICoreCmsBillAftersalesServices>();
|
||||
|
||||
|
||||
//判断是否存在还未处理的售后单据。
|
||||
var haveAS = await aftersalesServices.ExistsAsync(p => p.orderId == orderId && p.userId == userId && p.status == (int)GlobalEnumVars.BillAftersalesStatus.WaitAudit);
|
||||
if (haveAS)
|
||||
{
|
||||
jm.msg = "存在未处理的售后单";
|
||||
jm.status = false;
|
||||
return jm;
|
||||
}
|
||||
|
||||
var orderInfo = await orderServices.QueryByClauseAsync(p => p.orderId == orderId && p.userId == userId);
|
||||
if (orderInfo == null)
|
||||
{
|
||||
jm.msg = GlobalErrorCodeVars.Code13101;
|
||||
jm.code = 13101;
|
||||
return jm;
|
||||
}
|
||||
orderInfo.items = await orderItemServices.QueryListByClauseAsync(p => p.orderId == orderInfo.orderId);
|
||||
|
||||
var orderInfo = new CoreCmsOrder();
|
||||
orderInfo = result.data as CoreCmsOrder;
|
||||
orderServices.AfterSalesVal(orderInfo);
|
||||
|
||||
if (orderInfo.addAftersalesStatus == false)
|
||||
{
|
||||
@@ -202,7 +217,7 @@ namespace CoreCms.Net.Services
|
||||
return jm;
|
||||
}
|
||||
//生成售后单号
|
||||
var aftersalesId = CommonHelper.GetSerialNumberType((int)GlobalEnumVars.SerialNumberType.售后单编号);
|
||||
var afterSalesId = CommonHelper.GetSerialNumberType((int)GlobalEnumVars.SerialNumberType.售后单编号);
|
||||
|
||||
//校验订单是否可以进行此售后,并且校验订单价格是否合理
|
||||
var verifyResult = Verify(type, orderInfo, refund, items);
|
||||
@@ -218,7 +233,6 @@ namespace CoreCms.Net.Services
|
||||
verifyResult
|
||||
};
|
||||
|
||||
|
||||
//判断图片是否大于系统限定
|
||||
|
||||
//var allConfigs = await settingServices.GetConfigDictionaries();
|
||||
@@ -229,9 +243,29 @@ namespace CoreCms.Net.Services
|
||||
return jm;
|
||||
}
|
||||
|
||||
var aftersalesItemData = new List<CoreCmsBillAftersalesItem>();
|
||||
if (items != null && items.Any())
|
||||
{
|
||||
//如果是退货,判断退货明细,数量是否超出可退的数量
|
||||
var aftersalesItems = FormatAfterSalesItems(orderInfo, items, afterSalesId);
|
||||
if (!aftersalesItems.status)
|
||||
{
|
||||
return aftersalesItems;
|
||||
}
|
||||
//保存售后明细
|
||||
if (aftersalesItems.data != null)
|
||||
{
|
||||
aftersalesItemData = aftersalesItems.data as List<CoreCmsBillAftersalesItem>;
|
||||
}
|
||||
else
|
||||
{
|
||||
jm.msg = "售后明细获取失败";
|
||||
return jm;
|
||||
}
|
||||
}
|
||||
|
||||
var billAftersales = new CoreCmsBillAftersales();
|
||||
billAftersales.aftersalesId = aftersalesId;
|
||||
billAftersales.aftersalesId = afterSalesId;
|
||||
billAftersales.orderId = orderId;
|
||||
billAftersales.userId = userId;
|
||||
billAftersales.type = type;
|
||||
@@ -241,22 +275,7 @@ namespace CoreCms.Net.Services
|
||||
billAftersales.createTime = DateTime.Now;
|
||||
//保存主表数据
|
||||
await _dal.InsertAsync(billAftersales);
|
||||
|
||||
if (items != null && items.Any())
|
||||
{
|
||||
//如果是退货,判断退货明细,数量是否超出可退的数量
|
||||
var aftersalesItems = formatAftersalesItems(orderInfo, items, aftersalesId);
|
||||
if (!aftersalesItems.status)
|
||||
{
|
||||
return aftersalesItems;
|
||||
}
|
||||
//保存售后明细
|
||||
if (aftersalesItems.data != null)
|
||||
{
|
||||
var list = aftersalesItems.data as List<CoreCmsBillAftersalesItem>;
|
||||
await itemServices.InsertAsync(list);
|
||||
}
|
||||
}
|
||||
await itemServices.InsertAsync(aftersalesItemData);
|
||||
|
||||
//保存图片
|
||||
if (images.Length > 0)
|
||||
@@ -266,7 +285,7 @@ namespace CoreCms.Net.Services
|
||||
{
|
||||
imagesList.Add(new CoreCmsBillAftersalesImages()
|
||||
{
|
||||
aftersalesId = aftersalesId,
|
||||
aftersalesId = afterSalesId,
|
||||
imageUrl = images[i],
|
||||
sortId = i
|
||||
});
|
||||
@@ -277,11 +296,15 @@ namespace CoreCms.Net.Services
|
||||
//消息模板推送给客户
|
||||
SmsHelper.SendMessage();
|
||||
|
||||
orderInfo.billAftersalesId = afterSalesId;
|
||||
|
||||
// 微信自定义交易组件-同步创建售后单
|
||||
await _redisOperationRepository.ListLeftPushAsync(RedisMessageQueueKey.TransactionComponentAfterSaleCreateSync, JsonConvert.SerializeObject(orderInfo));
|
||||
|
||||
jm.status = true;
|
||||
jm.data = billAftersales;
|
||||
|
||||
jm.msg = "售后申请成功!";
|
||||
return jm;
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
@@ -385,7 +408,7 @@ namespace CoreCms.Net.Services
|
||||
/// <param name="items">前台选择的退货商品信息</param>
|
||||
/// <param name="aftersalesId">将要保存的售后单的单号</param>
|
||||
/// <returns></returns>
|
||||
private WebApiCallBack formatAftersalesItems(CoreCmsOrder orderInfo, JArray items, string aftersalesId)
|
||||
private WebApiCallBack FormatAfterSalesItems(CoreCmsOrder orderInfo, JArray items, string aftersalesId)
|
||||
{
|
||||
var jm = new WebApiCallBack();
|
||||
var data = new List<CoreCmsBillAftersalesItem>();
|
||||
@@ -433,7 +456,6 @@ namespace CoreCms.Net.Services
|
||||
{
|
||||
jm.msg = GlobalErrorCodeVars.Code13202;
|
||||
jm.data = jm.code = 13202;
|
||||
|
||||
return jm;
|
||||
}
|
||||
jm.status = true;
|
||||
@@ -533,7 +555,7 @@ namespace CoreCms.Net.Services
|
||||
var billAftersalesItems = new List<CoreCmsBillAftersalesItem>();
|
||||
if (items.Count > 0)
|
||||
{
|
||||
var aftersalesItems = formatAftersalesItems(orderInfo, items, aftersalesId);
|
||||
var aftersalesItems = FormatAfterSalesItems(orderInfo, items, aftersalesId);
|
||||
if (!aftersalesItems.status)
|
||||
{
|
||||
return aftersalesItems;
|
||||
@@ -698,7 +720,6 @@ namespace CoreCms.Net.Services
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//更新状态
|
||||
await orderServices.UpdateAsync(
|
||||
p => new CoreCmsOrder() { status = orderInfo.status, payStatus = orderInfo.payStatus },
|
||||
|
||||
@@ -20,8 +20,8 @@ using CoreCms.Net.IServices;
|
||||
using CoreCms.Net.Loging;
|
||||
using CoreCms.Net.Model.Entities;
|
||||
using CoreCms.Net.Model.ViewModels.Api;
|
||||
using CoreCms.Net.Model.ViewModels.UI;
|
||||
using CoreCms.Net.Model.ViewModels.DTO;
|
||||
using CoreCms.Net.Model.ViewModels.UI;
|
||||
using CoreCms.Net.Utility.Helper;
|
||||
using Flurl.Http;
|
||||
using Google.Protobuf.WellKnownTypes;
|
||||
@@ -69,6 +69,7 @@ namespace CoreCms.Net.Services
|
||||
_redisOperationRepository = redisOperationRepository;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 批量发货,可以支持多个订单合并发货,单个订单拆分发货等。
|
||||
/// </summary>
|
||||
@@ -82,8 +83,9 @@ namespace CoreCms.Net.Services
|
||||
/// <param name="shipAreaId">省市区id</param>
|
||||
/// <param name="shipAddress">收货地址</param>
|
||||
/// <param name="memo">发货描述</param>
|
||||
/// <param name="deliveryCompanyId">直播物流编码</param>
|
||||
/// <returns></returns>
|
||||
public async Task<WebApiCallBack> BatchShip(string[] orderId, string logiCode, string logiNo, Dictionary<int, int> items, int storeId = 0, string shipName = "", string shipMobile = "", int shipAreaId = 0, string shipAddress = "", string memo = "")
|
||||
public async Task<WebApiCallBack> BatchShip(string[] orderId, string logiCode, string logiNo, Dictionary<int, int> items, int storeId = 0, string shipName = "", string shipMobile = "", int shipAreaId = 0, string shipAddress = "", string memo = "", string deliveryCompanyId = "")
|
||||
{
|
||||
using var container = _serviceProvider.CreateScope();
|
||||
var jm = new WebApiCallBack();
|
||||
@@ -139,7 +141,7 @@ namespace CoreCms.Net.Services
|
||||
billDelivery.status = (int)GlobalEnumVars.BillDeliveryStatus.Already;
|
||||
billDelivery.memo = memo;
|
||||
billDelivery.createTime = DateTime.Now;
|
||||
|
||||
billDelivery.thirdPartylogiCode = deliveryCompanyId;
|
||||
|
||||
//设置发货明细
|
||||
var bdRel = new List<CoreCmsBillDeliveryItem>();
|
||||
@@ -229,15 +231,14 @@ namespace CoreCms.Net.Services
|
||||
/// <param name="shipAreaId">省市区id</param>
|
||||
/// <param name="shipAddress">收货地址</param>
|
||||
/// <param name="memo">发货描述</param>
|
||||
/// <param name="deliveryCompanyId">直播物流编码</param>
|
||||
/// <returns></returns>
|
||||
public async Task<WebApiCallBack> Ship(string orderId, string logiCode, string logiNo, Dictionary<int, int> items, int storeId = 0, string shipName = "", string shipMobile = "", int shipAreaId = 0, string shipAddress = "", string memo = "")
|
||||
public async Task<WebApiCallBack> Ship(string orderId, string logiCode, string logiNo, Dictionary<int, int> items, int storeId = 0, string shipName = "", string shipMobile = "", int shipAreaId = 0, string shipAddress = "", string memo = "", string deliveryCompanyId = "")
|
||||
{
|
||||
using var container = _serviceProvider.CreateScope();
|
||||
var jm = new WebApiCallBack();
|
||||
|
||||
var orderService = container.ServiceProvider.GetService<ICoreCmsOrderServices>();
|
||||
var stockServices = container.ServiceProvider.GetService<ICoreCmsStockServices>();
|
||||
|
||||
//获取订单详情
|
||||
var dInfoResult = await orderService.GetOrderShipInfo(orderId);
|
||||
if (!dInfoResult.status)
|
||||
@@ -287,7 +288,7 @@ namespace CoreCms.Net.Services
|
||||
billDelivery.status = (int)GlobalEnumVars.BillDeliveryStatus.Already;
|
||||
billDelivery.memo = memo;
|
||||
billDelivery.createTime = DateTime.Now;
|
||||
|
||||
billDelivery.thirdPartylogiCode = deliveryCompanyId;
|
||||
|
||||
//设置发货明细
|
||||
var bdRel = new List<CoreCmsBillDeliveryItem>();
|
||||
@@ -315,6 +316,7 @@ namespace CoreCms.Net.Services
|
||||
//构建发货单明细
|
||||
var bdItem = new CoreCmsBillDeliveryItem();
|
||||
bdItem.deliveryId = billDelivery.deliveryId;
|
||||
bdItem.orderId = orderItem.orderId;
|
||||
bdItem.productId = orderItem.productId;
|
||||
bdItem.goodsId = orderItem.goodsId;
|
||||
bdItem.bn = orderItem.bn;
|
||||
@@ -322,7 +324,7 @@ namespace CoreCms.Net.Services
|
||||
bdItem.weight = orderItem.weight;
|
||||
bdItem.name = orderItem.name;
|
||||
bdItem.addon = !string.IsNullOrEmpty(orderItem.addon) ? orderItem.addon : "";
|
||||
bdItem.nums = item.Value;
|
||||
bdItem.nums = orderItem.nums;
|
||||
bdRel.Add(bdItem);
|
||||
}
|
||||
if (tNum < 1)
|
||||
@@ -342,16 +344,8 @@ namespace CoreCms.Net.Services
|
||||
//订单更新发货状态,发送各种消息
|
||||
await OrderShip(orderInfo, items, billDelivery, storeId);
|
||||
|
||||
var stock = new CoreCmsStock
|
||||
{
|
||||
manager = 0,
|
||||
id = billDelivery.deliveryId,
|
||||
createTime = DateTime.Now,
|
||||
type = (int)GlobalEnumVars.StockType.DeliverGoods,
|
||||
memo = "订单发货操作,发货单号:" + billDelivery.deliveryId
|
||||
};
|
||||
|
||||
await stockServices.InsertAsync(stock);
|
||||
//发货同步处理
|
||||
await _redisOperationRepository.ListLeftPushAsync(RedisMessageQueueKey.TransactionComponentOrderShipSync, billDelivery.deliveryId);
|
||||
|
||||
jm.status = true;
|
||||
jm.msg = "发货成功";
|
||||
|
||||
Reference in New Issue
Block a user