@@ -0,0 +1,16 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
namespace BPA.SAAS.Manage.Application.AExternalPlatform.BaseDto | |||||
{ | |||||
public class ResponDataBase | |||||
{ | |||||
public string statusCode { get; set; } | |||||
public object data { get; set; } | |||||
public string succeeded { get; set; } | |||||
public string errors { get; set; } | |||||
} | |||||
} |
@@ -55,6 +55,42 @@ namespace BPA.SAAS.Manage.Application.AExternalPlatform.Enum | |||||
/// </summary> | /// </summary> | ||||
[ErrorCodeItemMetadata("签名过期")] | [ErrorCodeItemMetadata("签名过期")] | ||||
Code1006, | Code1006, | ||||
/// <summary> | |||||
/// 系统异常 | |||||
/// </summary> | |||||
[ErrorCodeItemMetadata("系统异常")] | |||||
Code1007, | |||||
/// <summary> | |||||
/// 商品不存在 | |||||
/// </summary> | |||||
[ErrorCodeItemMetadata("商品不存在")] | |||||
Code1008, | |||||
/// <summary> | |||||
/// 场景id不能为空 | |||||
/// </summary> | |||||
[ErrorCodeItemMetadata("场景id不能为空")] | |||||
Code1009, | |||||
/// <summary> | |||||
/// 产品不存在 | |||||
/// </summary> | |||||
[ErrorCodeItemMetadata("产品不存在")] | |||||
Code10010, | |||||
/// <summary> | |||||
/// 产品版本不存在 | |||||
/// </summary> | |||||
[ErrorCodeItemMetadata("产品版本不存在")] | |||||
Code10011, | |||||
/// <summary> | |||||
/// 设备不存在 | |||||
/// </summary> | |||||
[ErrorCodeItemMetadata("设备不存在")] | |||||
Code10012, | |||||
/// <summary> | |||||
/// 产品标签不存在 | |||||
/// </summary> | |||||
[ErrorCodeItemMetadata("产品标签不存在")] | |||||
Code10013, | |||||
/// <summary> | /// <summary> | ||||
/// 授权过期 | /// 授权过期 | ||||
@@ -0,0 +1,62 @@ | |||||
using BPA.SAAS.Manage.Application.AExternalPlatform.Service.Device.Dtos; | |||||
using BPA.SAAS.Manage.Application.AExternalPlatform.Service.Device.Services; | |||||
using BPA.SAAS.Manage.Core.Base; | |||||
using Microsoft.AspNetCore.Components.Forms; | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
namespace BPA.SAAS.Manage.Application.AExternalPlatform.Service.Device | |||||
{ | |||||
[ApiDescriptionSettings("开放平台", Tag = "设备管理"), AllowAnonymous] | |||||
public class DeviceServices:IDynamicApiController | |||||
{ | |||||
IDeviceService _deviceService; | |||||
public DeviceServices(IDeviceService deviceService) | |||||
{ | |||||
_deviceService= deviceService; | |||||
} | |||||
/// <summary> | |||||
/// 分页查询 | |||||
/// </summary> | |||||
/// <param name="inputDto"></param> | |||||
/// <returns></returns> | |||||
[HttpPost("/api/ExternalPlatform/Device/GetDevicePageList")] | |||||
public async Task<PageUtil<List<DeviceDto>>> GetDevicePageList(DevicePageInputDto inputDto) | |||||
{ | |||||
return await _deviceService.GetDevicePageList(inputDto); | |||||
} | |||||
/// <summary> | |||||
/// 添加 | |||||
/// </summary> | |||||
/// <param name="dto"></param> | |||||
/// <returns></returns> | |||||
[HttpPost("/api/ExternalPlatform/Device/AddDevice")] | |||||
public async Task<bool> AddDevice(DeviceInsertDto dto) | |||||
{ | |||||
return await _deviceService.AddDevice(dto); | |||||
} | |||||
/// <summary> | |||||
/// 更新 | |||||
/// </summary> | |||||
/// <param name="dto"></param> | |||||
/// <returns></returns> | |||||
[HttpPost("/api/ExternalPlatform/Device/UpdateDevice")] | |||||
public async Task<bool> UpdateDevice(DeviceUpateDto dto) | |||||
{ | |||||
return await _deviceService.UpdateDevice(dto); | |||||
} | |||||
/// <summary> | |||||
/// 删除 | |||||
/// </summary> | |||||
/// <param name="ids"></param> | |||||
/// <returns></returns> | |||||
[HttpPost("/api/ExternalPlatform/Device/DeleteDevice")] | |||||
public async Task<bool> DeleteDevice(string[] ids) | |||||
{ | |||||
return await _deviceService.DeleteDevice(ids); | |||||
} | |||||
} | |||||
} |
@@ -0,0 +1,15 @@ | |||||
using BPA.SAAS.Manage.Core.Device; | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
namespace BPA.SAAS.Manage.Application.AExternalPlatform.Service.Device.Dtos | |||||
{ | |||||
public class DeviceDto: BPA_DeviceInfo | |||||
{ | |||||
public string ProductName { get; set; } | |||||
public string ProductVesion { get; set; } | |||||
} | |||||
} |
@@ -0,0 +1,38 @@ | |||||
using BPA.SAAS.Manage.Comm.Enum; | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
namespace BPA.SAAS.Manage.Application.AExternalPlatform.Service.Device.Dtos | |||||
{ | |||||
public class DeviceInsertDto | |||||
{ | |||||
/// <summary> | |||||
/// 设备名称 | |||||
/// </summary> | |||||
public string DeviceName { get; set; } | |||||
/// <summary> | |||||
/// 设备标签 | |||||
/// </summary> | |||||
public string DeviceTypeId { get; set; } | |||||
/// <summary> | |||||
///归属场景(店铺) | |||||
/// </summary> | |||||
public string StopId { get; set; } | |||||
/// <summary> | |||||
/// 所属产品 | |||||
/// </summary> | |||||
public string ProductId { get; set; } | |||||
/// <summary> | |||||
/// 产品标签 | |||||
/// </summary> | |||||
public string ProductCode { get; set; } | |||||
/// <summary> | |||||
/// 产品版本 | |||||
/// </summary> | |||||
public string ProductVersionId { get; set; } | |||||
} | |||||
} |
@@ -0,0 +1,56 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
namespace BPA.SAAS.Manage.Application.AExternalPlatform.Service.Device.Dtos | |||||
{ | |||||
public class DevicePageInputDto | |||||
{ | |||||
public string ProductName { get; set; } | |||||
public string ProductVesion { get; set; } | |||||
/// <summary> | |||||
/// 当前页码 | |||||
/// </summary> | |||||
private int current; | |||||
public virtual int Current | |||||
{ | |||||
get | |||||
{ | |||||
return current; | |||||
} | |||||
set | |||||
{ | |||||
current = value; | |||||
if (current <= 0) | |||||
{ | |||||
current = 1; | |||||
} | |||||
} | |||||
} | |||||
//public int? Status { get; set; } | |||||
/// <summary> | |||||
/// 页码容量 | |||||
/// </summary> | |||||
private int pagesize; | |||||
public virtual int PageSize | |||||
{ | |||||
get | |||||
{ | |||||
return pagesize; | |||||
} | |||||
set | |||||
{ | |||||
pagesize = value; | |||||
if (pagesize <= 0) | |||||
{ | |||||
pagesize = 10; | |||||
} | |||||
} | |||||
} | |||||
} | |||||
} |
@@ -0,0 +1,38 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
namespace BPA.SAAS.Manage.Application.AExternalPlatform.Service.Device.Dtos | |||||
{ | |||||
public class DeviceUpateDto | |||||
{ | |||||
public string Id { get; set; } | |||||
/// <summary> | |||||
/// 设备名称 | |||||
/// </summary> | |||||
public string DeviceName { get; set; } | |||||
/// <summary> | |||||
/// 设备标签 | |||||
/// </summary> | |||||
public string DeviceTypeId { get; set; } | |||||
/// <summary> | |||||
///归属场景(店铺) | |||||
/// </summary> | |||||
public string StopId { get; set; } | |||||
/// <summary> | |||||
/// 所属产品 | |||||
/// </summary> | |||||
public string ProductId { get; set; } | |||||
/// <summary> | |||||
/// 产品标签 | |||||
/// </summary> | |||||
public string ProductCode { get; set; } | |||||
/// <summary> | |||||
/// 产品版本 | |||||
/// </summary> | |||||
public string ProductVersionId { get; set; } | |||||
} | |||||
} |
@@ -0,0 +1,21 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
namespace BPA.SAAS.Manage.Application.AExternalPlatform.Service.Device.Dtos | |||||
{ | |||||
public class StopDto | |||||
{ | |||||
public string Id { get; set; } | |||||
public string Name { get; set; } | |||||
public string OrgId { get; set; } | |||||
public string OrgName { get; set; } | |||||
public string Phone { get; set; } | |||||
public int Sort { get; set; } | |||||
public string Description { get; set; } | |||||
public string GroupId { get; set; } | |||||
public DateTime CreateAt { get; set; } | |||||
} | |||||
} |
@@ -0,0 +1,196 @@ | |||||
using BPA.KitChen.GroupMeal.SqlSugar; | |||||
using BPA.SAAS.Manage.Application.AExternalPlatform.BaseDto; | |||||
using BPA.SAAS.Manage.Application.AExternalPlatform.Enum; | |||||
using BPA.SAAS.Manage.Application.AExternalPlatform.Service.Device.Dtos; | |||||
using BPA.SAAS.Manage.Application.AExternalPlatform.Service.Goods.Dtos; | |||||
using BPA.SAAS.Manage.Application.DataBase.Dtos.GoodsAttribute; | |||||
using BPA.SAAS.Manage.Comm.Const; | |||||
using BPA.SAAS.Manage.Core.Base; | |||||
using BPA.SAAS.Manage.Core.DataBase; | |||||
using BPA.SAAS.Manage.Core.Device; | |||||
using BPA.SAAS.Manage.Core.Product; | |||||
using Furion.DependencyInjection; | |||||
using Furion.RemoteRequest.Extensions; | |||||
using Newtonsoft.Json; | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
using ResponDataBase = BPA.SAAS.Manage.Application.AExternalPlatform.BaseDto.ResponDataBase; | |||||
namespace BPA.SAAS.Manage.Application.AExternalPlatform.Service.Device.Services | |||||
{ | |||||
public class DeviceService: UserAnalysis, IDeviceService, ITransient | |||||
{ | |||||
private string BaseServerUrl = App.GetConfig<string>("baseurl"); | |||||
/// <summary> | |||||
/// 分页查询 | |||||
/// </summary> | |||||
/// <param name="inputDto"></param> | |||||
/// <returns></returns> | |||||
public async Task<PageUtil<List<DeviceDto>>> GetDevicePageList(DevicePageInputDto inputDto) | |||||
{ | |||||
int total = new RefAsync<int>(); | |||||
var data =await SqlSugarDb.Db.Queryable<BPA_DeviceInfo, BPA_Product,BPA_ProductVesion>((a, b,c) => | |||||
new JoinQueryInfos(JoinType.Left, a.ProductId == b.Id, JoinType.Left, a.ProductVersionId == c.Id)) | |||||
.WhereIF(!string.IsNullOrEmpty(inputDto.ProductName), (a, b, c) => b.Name.Contains(inputDto.ProductName)) | |||||
.WhereIF(!string.IsNullOrEmpty(inputDto.ProductVesion), (a, b, c) => c.Vesion.Contains(inputDto.ProductVesion)) | |||||
.Select((a, b, c) => new DeviceDto() | |||||
{ | |||||
Id = a.Id.SelectAll(), | |||||
ProductName = b.Name, | |||||
ProductVesion = c.Vesion | |||||
}).ToPageListAsync(inputDto.Current, inputDto.PageSize, total); | |||||
return new PageUtil<List<DeviceDto>>() | |||||
{ | |||||
Total = total, | |||||
Data = data | |||||
}; | |||||
} | |||||
/// <summary> | |||||
/// 添加 | |||||
/// </summary> | |||||
/// <param name="dto"></param> | |||||
/// <returns></returns> | |||||
public async Task<bool> AddDevice(DeviceInsertDto dto) | |||||
{ | |||||
try | |||||
{ | |||||
SqlSugarDb.Db.BeginTran(); | |||||
var resEntity = new BPA_DeviceInfo(); | |||||
resEntity.DeviceName = dto.DeviceName; | |||||
await CheckInsertParm(dto);//验证参数 | |||||
resEntity.StopId = dto.StopId; | |||||
resEntity.ProductId = dto.ProductId; | |||||
resEntity.ProductVersionId = dto.ProductVersionId; | |||||
if (string.IsNullOrWhiteSpace(dto.ProductCode)) | |||||
{ | |||||
var check = SqlSugarDb.Db.Queryable<BPA_DeviceType>().Where(x => x.Name == "默认标签").First(); | |||||
if (check != null) | |||||
{ | |||||
resEntity.DeviceTypeId = check.Id; | |||||
} | |||||
else | |||||
{ | |||||
var DeviceType = await SqlSugarDb.Db.Insertable(new BPA_DeviceType() { Name = "默认标签" }).CallEntityMethod(m => m.Create()).ExecuteReturnEntityAsync(); | |||||
resEntity.DeviceTypeId = DeviceType.Id; | |||||
} | |||||
} | |||||
var res = await SqlSugarDb.Db.Insertable(resEntity).CallEntityMethod(m => m.Create()).ExecuteCommandAsync(); | |||||
SqlSugarDb.Db.CommitTran(); | |||||
return res > 0; | |||||
} | |||||
catch (Exception) | |||||
{ | |||||
SqlSugarDb.Db.RollbackTran(); | |||||
throw Oops.Oh(ErrorCodeEnum.Code1007); | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 更新 | |||||
/// </summary> | |||||
/// <param name="dto"></param> | |||||
/// <returns></returns> | |||||
public async Task<bool>UpdateDevice(DeviceUpateDto dto) | |||||
{ | |||||
var resEntity = SqlSugarDb.Db.Queryable<BPA_DeviceInfo>().Where(it => it.IsDeleted == 0).First(it => it.Id == dto.Id); | |||||
await CheckUpdateParm(dto);//验证参数 | |||||
resEntity.DeviceName = dto.DeviceName; | |||||
resEntity.StopId = dto.StopId; | |||||
resEntity.ProductId = dto.ProductId; | |||||
resEntity.ProductVersionId = dto.ProductVersionId; | |||||
if (!string.IsNullOrWhiteSpace(dto.ProductCode)) | |||||
{ | |||||
var check = SqlSugarDb.Db.Queryable<BPA_DeviceType>().Where(x => x.Id == dto.ProductCode).First(); | |||||
if (check != null) | |||||
{ | |||||
resEntity.DeviceTypeId = check.Id; | |||||
} | |||||
else | |||||
{ | |||||
throw Oops.Oh(ErrorCodeEnum.Code10013); | |||||
} | |||||
} | |||||
else | |||||
{ | |||||
var check = SqlSugarDb.Db.Queryable<BPA_DeviceType>().Where(x => x.Name == "默认标签").First(); | |||||
if (check != null) | |||||
{ | |||||
resEntity.DeviceTypeId = check.Id; | |||||
} | |||||
else | |||||
{ | |||||
var DeviceType = await SqlSugarDb.Db.Insertable(new BPA_DeviceType() { Name = "默认标签" }).CallEntityMethod(m => m.Create()).ExecuteReturnEntityAsync(); | |||||
resEntity.DeviceTypeId = DeviceType.Id; | |||||
} | |||||
} | |||||
var res = await SqlSugarDb.Db.Updateable(resEntity).ExecuteCommandAsync(); | |||||
return res > 0; | |||||
} | |||||
/// <summary> | |||||
/// 删除 | |||||
/// </summary> | |||||
/// <param name="ids"></param> | |||||
/// <returns></returns> | |||||
public async Task<bool> DeleteDevice(string[] ids) | |||||
{ | |||||
var model = SqlSugarDb.Db.Queryable<BPA_DeviceInfo>().Where(x => ids.Contains(x.Id)).ToList(); | |||||
if (model == null) throw Oops.Oh(ErrorCodeEnum.Code10012); | |||||
var res = await SqlSugarDb.Db.Deleteable(model).ExecuteCommandAsync(); | |||||
return res > 0; | |||||
} | |||||
/// <summary> | |||||
/// 校验参数 | |||||
/// </summary> | |||||
/// <param name="dto"></param> | |||||
/// <returns></returns> | |||||
private async Task CheckInsertParm(DeviceInsertDto dto) | |||||
{ | |||||
if (string.IsNullOrWhiteSpace(dto.StopId)) throw Oops.Oh(ErrorCodeEnum.Code1009); | |||||
var getStopurl = BaseServerUrl + "api/store/getbyIdstorelist_alm?id=" + dto.StopId; | |||||
var responseStop = await getStopurl.SetHeaders(new | |||||
{ | |||||
groupId = App.User?.FindFirst(ClaimConst.GroupId)?.Value | |||||
}).SetHttpMethod(HttpMethod.Get).GetAsStringAsync(); | |||||
var resStop = JsonConvert.DeserializeObject<ResponDataBase>(responseStop); | |||||
if (resStop.statusCode != "200") throw Oops.Oh("获取场景数据失败"); | |||||
var dataStop = JsonConvert.DeserializeObject<List<StopDto>>(resStop.data.ToString()); | |||||
if (dataStop.Count==0) throw Oops.Oh("获取场景数据失败"); | |||||
if(!dataStop.Where(x=>x.Id == dto.StopId).Any()) throw Oops.Oh("场景不存在"); | |||||
var checkProduct = SqlSugarDb.Db.Queryable<BPA_Product>().Where(x => x.Id == dto.ProductId).Any(); | |||||
if (!checkProduct) throw Oops.Oh(ErrorCodeEnum.Code10010); | |||||
var checkProductVesion = SqlSugarDb.Db.Queryable<BPA_ProductVesion>().Where(x => x.Id == dto.ProductVersionId).Any(); | |||||
if (!checkProductVesion) throw Oops.Oh(ErrorCodeEnum.Code10011); | |||||
} | |||||
/// <summary> | |||||
/// 校验参数 | |||||
/// </summary> | |||||
/// <param name="dto"></param> | |||||
/// <returns></returns> | |||||
private async Task CheckUpdateParm(DeviceUpateDto dto) | |||||
{ | |||||
if (string.IsNullOrWhiteSpace(dto.StopId)) throw Oops.Oh(ErrorCodeEnum.Code1009); | |||||
var getStopurl = BaseServerUrl + "api/store/getbyIdstorelist_alm?id=" + dto.StopId; | |||||
var responseStop = await getStopurl.SetHeaders(new | |||||
{ | |||||
groupId = App.User?.FindFirst(ClaimConst.GroupId)?.Value | |||||
}).SetHttpMethod(HttpMethod.Get).GetAsStringAsync(); | |||||
var resStop = JsonConvert.DeserializeObject<ResponDataBase>(responseStop); | |||||
if (resStop.statusCode != "200") throw Oops.Oh("获取场景数据失败"); | |||||
var dataStop = JsonConvert.DeserializeObject<List<StopDto>>(resStop.data.ToString()); | |||||
if (dataStop.Count == 0) throw Oops.Oh("获取场景数据失败"); | |||||
if (!dataStop.Where(x => x.Id == dto.StopId).Any()) throw Oops.Oh("场景不存在"); | |||||
var checkProduct = SqlSugarDb.Db.Queryable<BPA_Product>().Where(x => x.Id == dto.ProductId).Any(); | |||||
if (!checkProduct) throw Oops.Oh(ErrorCodeEnum.Code10010); | |||||
var checkProductVesion = SqlSugarDb.Db.Queryable<BPA_ProductVesion>().Where(x => x.Id == dto.ProductVersionId).Any(); | |||||
if (!checkProductVesion) throw Oops.Oh(ErrorCodeEnum.Code10011); | |||||
} | |||||
} | |||||
} |
@@ -0,0 +1,41 @@ | |||||
using BPA.KitChen.GroupMeal.SqlSugar; | |||||
using BPA.SAAS.Manage.Application.AExternalPlatform.Enum; | |||||
using BPA.SAAS.Manage.Application.AExternalPlatform.Service.Device.Dtos; | |||||
using BPA.SAAS.Manage.Core.Base; | |||||
using BPA.SAAS.Manage.Core.Device; | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
namespace BPA.SAAS.Manage.Application.AExternalPlatform.Service.Device.Services | |||||
{ | |||||
public interface IDeviceService | |||||
{ | |||||
/// <summary> | |||||
/// 分页查询 | |||||
/// </summary> | |||||
/// <param name="inputDto"></param> | |||||
/// <returns></returns> | |||||
Task<PageUtil<List<DeviceDto>>> GetDevicePageList(DevicePageInputDto inputDto); | |||||
/// <summary> | |||||
/// 添加 | |||||
/// </summary> | |||||
/// <param name="dto"></param> | |||||
/// <returns></returns> | |||||
Task<bool> AddDevice(DeviceInsertDto dto); | |||||
/// <summary> | |||||
/// 更新 | |||||
/// </summary> | |||||
/// <param name="dto"></param> | |||||
/// <returns></returns> | |||||
Task<bool> UpdateDevice(DeviceUpateDto dto); | |||||
/// <summary> | |||||
/// 删除 | |||||
/// </summary> | |||||
/// <param name="ids"></param> | |||||
/// <returns></returns> | |||||
Task<bool> DeleteDevice(string[] ids); | |||||
} | |||||
} |
@@ -0,0 +1,15 @@ | |||||
using BPA.SAAS.Manage.Core.DataBase; | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
namespace BPA.SAAS.Manage.Application.AExternalPlatform.Service.Goods.Dtos | |||||
{ | |||||
public class GoodsDto:BPA_GoodsInfo | |||||
{ | |||||
public string GoodsTypeName { get; set; } | |||||
public string GoodsUnitName { get; set; } | |||||
} | |||||
} |
@@ -0,0 +1,40 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
namespace BPA.SAAS.Manage.Application.AExternalPlatform.Service.Goods.Dtos | |||||
{ | |||||
public class GoodsInsertDto | |||||
{ | |||||
/// <summary> | |||||
/// 商品名称 | |||||
/// </summary> | |||||
public string Name { get; set; } | |||||
/// <summary> | |||||
/// 描述 | |||||
/// </summary> | |||||
public string Descritption { get; set; } | |||||
/// <summary> | |||||
/// 图片 | |||||
/// </summary> | |||||
public string ImgUrl { get; set; } | |||||
/// <summary> | |||||
/// 价格 | |||||
/// </summary> | |||||
public decimal Price { get; set; } | |||||
/// <summary> | |||||
/// 是否称重 | |||||
/// </summary> | |||||
public bool IsWeigh { get; set; } | |||||
/// <summary> | |||||
/// 商品分类id | |||||
/// </summary> | |||||
public string GoodsTypeId { get; set; } | |||||
/// <summary> | |||||
/// 商品单位id | |||||
/// </summary> | |||||
public string GoodsUintId { get; set; } | |||||
} | |||||
} |
@@ -0,0 +1,57 @@ | |||||
using BPA.SAAS.Manage.Application.AExternalPlatform.BaseDto; | |||||
using BPA.SAAS.Manage.Core.Base; | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
namespace BPA.SAAS.Manage.Application.AExternalPlatform.Service.Goods.Dtos | |||||
{ | |||||
public class GoodsPageInputDto | |||||
{ | |||||
public string GoodsTypeName { get; set; } | |||||
/// <summary> | |||||
/// 当前页码 | |||||
/// </summary> | |||||
private int current; | |||||
public virtual int Current | |||||
{ | |||||
get | |||||
{ | |||||
return current; | |||||
} | |||||
set | |||||
{ | |||||
current = value; | |||||
if (current <= 0) | |||||
{ | |||||
current = 1; | |||||
} | |||||
} | |||||
} | |||||
//public int? Status { get; set; } | |||||
/// <summary> | |||||
/// 页码容量 | |||||
/// </summary> | |||||
private int pagesize; | |||||
public virtual int PageSize | |||||
{ | |||||
get | |||||
{ | |||||
return pagesize; | |||||
} | |||||
set | |||||
{ | |||||
pagesize = value; | |||||
if (pagesize <= 0) | |||||
{ | |||||
pagesize = 10; | |||||
} | |||||
} | |||||
} | |||||
} | |||||
} |
@@ -0,0 +1,41 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
namespace BPA.SAAS.Manage.Application.AExternalPlatform.Service.Goods.Dtos | |||||
{ | |||||
public class GoodsUpdateDto | |||||
{ | |||||
public string Id { get; set; } | |||||
/// <summary> | |||||
/// 商品名称 | |||||
/// </summary> | |||||
public string Name { get; set; } | |||||
/// <summary> | |||||
/// 描述 | |||||
/// </summary> | |||||
public string Descritption { get; set; } | |||||
/// <summary> | |||||
/// 图片 | |||||
/// </summary> | |||||
public string ImgUrl { get; set; } | |||||
/// <summary> | |||||
/// 价格 | |||||
/// </summary> | |||||
public decimal Price { get; set; } | |||||
/// <summary> | |||||
/// 是否称重 | |||||
/// </summary> | |||||
public bool IsWeigh { get; set; } | |||||
/// <summary> | |||||
/// 商品分类id | |||||
/// </summary> | |||||
public string GoodsTypeId { get; set; } | |||||
/// <summary> | |||||
/// 商品单位id | |||||
/// </summary> | |||||
public string GoodsUintId { get; set; } | |||||
} | |||||
} |
@@ -0,0 +1,64 @@ | |||||
using BPA.SAAS.Manage.Application.AExternalPlatform.Service.Goods.Dtos; | |||||
using BPA.SAAS.Manage.Application.AExternalPlatform.Service.Goods.Services; | |||||
using BPA.SAAS.Manage.Application.AExternalPlatform.Service.Material.Services; | |||||
using BPA.SAAS.Manage.Core.Base; | |||||
using Microsoft.AspNetCore.Components.Forms; | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
namespace BPA.SAAS.Manage.Application.AExternalPlatform.Service.Goods | |||||
{ | |||||
[ApiDescriptionSettings("开放平台", Tag = "商品管理"), AllowAnonymous] | |||||
public class GoodsServices: IDynamicApiController | |||||
{ | |||||
private readonly IGoodsService _goodsService; | |||||
public GoodsServices(IGoodsService goodsService) | |||||
{ | |||||
_goodsService = goodsService; | |||||
} | |||||
/// <summary> | |||||
/// 分页查询商品 | |||||
/// </summary> | |||||
/// <param name="inputDto"></param> | |||||
/// <returns></returns> | |||||
[HttpPost("/api/ExternalPlatform/Goods/GetGoodsPageList")] | |||||
public async Task<PageUtil<List<GoodsDto>>> GetGoodsPageList(GoodsPageInputDto inputDto) | |||||
{ | |||||
return await _goodsService.GetGoodsPageList(inputDto); | |||||
} | |||||
/// <summary> | |||||
/// 添加商品 | |||||
/// </summary> | |||||
/// <param name="dto"></param> | |||||
/// <returns></returns> | |||||
[HttpPost("/api/ExternalPlatform/Goods/AddGoods")] | |||||
public async Task<bool> AddGoods(GoodsInsertDto dto) | |||||
{ | |||||
return await _goodsService.AddGoods(dto); | |||||
} | |||||
/// <summary> | |||||
/// 更新商品 | |||||
/// </summary> | |||||
/// <param name="dto"></param> | |||||
/// <returns></returns> | |||||
[HttpPost("/api/ExternalPlatform/Goods/UpdateGoods")] | |||||
public async Task<bool> UpdateGoods(GoodsUpdateDto dto) | |||||
{ | |||||
return await _goodsService.UpdateGoods(dto); | |||||
} | |||||
/// <summary> | |||||
/// 删除商品 | |||||
/// </summary> | |||||
/// <param name="ids"></param> | |||||
/// <returns></returns> | |||||
[HttpPost("/api/ExternalPlatform/Goods/DeleteGoods")] | |||||
public async Task<bool> DeleteGoods(string[] ids) | |||||
{ | |||||
return await _goodsService.DeleteGoods(ids); | |||||
} | |||||
} | |||||
} |
@@ -0,0 +1,170 @@ | |||||
using BPA.KitChen.GroupMeal.SqlSugar; | |||||
using BPA.SAAS.Manage.Application.AExternalPlatform.BaseDto; | |||||
using BPA.SAAS.Manage.Application.AExternalPlatform.Enum; | |||||
using BPA.SAAS.Manage.Application.AExternalPlatform.Service.Goods.Dtos; | |||||
using BPA.SAAS.Manage.Application.AExternalPlatform.Service.Material.Dtos; | |||||
using BPA.SAAS.Manage.Application.AExternalPlatform.Service.Material.Services; | |||||
using BPA.SAAS.Manage.Application.DataBase.Interface; | |||||
using BPA.SAAS.Manage.Comm.Enum; | |||||
using BPA.SAAS.Manage.Core.Base; | |||||
using BPA.SAAS.Manage.Core.DataBase; | |||||
using Org.BouncyCastle.Crypto; | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
namespace BPA.SAAS.Manage.Application.AExternalPlatform.Service.Goods.Services | |||||
{ | |||||
public class GoodsService: UserAnalysis, IGoodsService, ITransient | |||||
{ | |||||
public GoodsService() | |||||
{ | |||||
} | |||||
/// <summary> | |||||
/// 分页查询商品 | |||||
/// </summary> | |||||
/// <param name="inputDto"></param> | |||||
/// <returns></returns> | |||||
public async Task<PageUtil<List<GoodsDto>>> GetGoodsPageList(GoodsPageInputDto inputDto) | |||||
{ | |||||
int total = new RefAsync<int>(); | |||||
var data = SqlSugarDb.Db.Queryable<BPA_GoodsInfo, BPA_GoodsType, BPA_GoodsUint>((a, b, c) => | |||||
new JoinQueryInfos(JoinType.Left, a.GoodsTypeId == b.Id, | |||||
JoinType.Left, a.GoodsUintId == c.Id)) | |||||
.Where((a, b, c) => a.IsDeleted == 0) | |||||
.WhereIF(!string.IsNullOrEmpty(inputDto.GoodsTypeName), (a, b, c) => b.Name.Contains(inputDto.GoodsTypeName)) | |||||
.Select((a, b, c) => new GoodsDto() | |||||
{ | |||||
Id =a.Id.SelectAll() , | |||||
GoodsTypeName=b.Name, | |||||
GoodsUnitName=c.Name | |||||
}).ToPageList(inputDto.Current, inputDto.PageSize, ref total); | |||||
return new PageUtil<List<GoodsDto>>() | |||||
{ | |||||
Total = total, | |||||
Data = data | |||||
}; | |||||
} | |||||
/// <summary> | |||||
/// 添加商品 | |||||
/// </summary> | |||||
/// <param name="dto"></param> | |||||
/// <returns></returns> | |||||
public async Task<bool> AddGoods(GoodsInsertDto dto) | |||||
{ | |||||
try | |||||
{ | |||||
SqlSugarDb.Db.BeginTran(); | |||||
var resEntity = new BPA_GoodsInfo(); | |||||
resEntity.GoodsTypeId = dto.GoodsTypeId; | |||||
resEntity.GoodsUintId = dto.GoodsUintId; | |||||
if (string.IsNullOrWhiteSpace(dto.GoodsTypeId)) | |||||
{ | |||||
var check=SqlSugarDb.Db.Queryable<BPA_GoodsType>().Where(x => x.Name == "默认分类").First(); | |||||
if (check!=null) | |||||
{ | |||||
resEntity.GoodsTypeId = check.Id; | |||||
} | |||||
else | |||||
{ | |||||
var GoodsType=await SqlSugarDb.Db.Insertable(new BPA_GoodsType() { Pid="",Name= "默认分类" }).CallEntityMethod(m => m.Create()).ExecuteReturnEntityAsync(); | |||||
resEntity.GoodsTypeId = GoodsType.Id; | |||||
} | |||||
} | |||||
if (string.IsNullOrWhiteSpace(dto.GoodsUintId)) | |||||
{ | |||||
var check = SqlSugarDb.Db.Queryable<BPA_GoodsUint>().Where(x => x.Name == "默认单位").First(); | |||||
if (check != null) | |||||
{ | |||||
resEntity.GoodsTypeId = check.Id; | |||||
} | |||||
else | |||||
{ | |||||
var GoodsUint = await SqlSugarDb.Db.Insertable(new BPA_GoodsUint() {Name = "默认单位" }).CallEntityMethod(m => m.Create()).ExecuteReturnEntityAsync(); | |||||
resEntity.GoodsUintId = GoodsUint.Id; | |||||
} | |||||
} | |||||
resEntity.Name = dto.Name; | |||||
resEntity.Descritption = dto.Descritption; | |||||
resEntity.ImgUrl = dto.ImgUrl; | |||||
resEntity.Price = dto.Price; | |||||
resEntity.IsWeigh = dto.IsWeigh; | |||||
resEntity.IsAttrubute = true; | |||||
resEntity.Code = GetNumber2(8); | |||||
var res = await SqlSugarDb.Db.Insertable(resEntity).CallEntityMethod(m => m.Create()).ExecuteCommandAsync(); | |||||
SqlSugarDb.Db.CommitTran(); | |||||
return res > 0; | |||||
} | |||||
catch (Exception) | |||||
{ | |||||
SqlSugarDb.Db.RollbackTran(); | |||||
throw Oops.Oh(ErrorCodeEnum.Code1007); | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 更新商品 | |||||
/// </summary> | |||||
/// <param name="dto"></param> | |||||
/// <returns></returns> | |||||
public async Task<bool> UpdateGoods(GoodsUpdateDto dto) | |||||
{ | |||||
// 查询数据库中是否存在未删除的商品类型 | |||||
var resEntity = SqlSugarDb.Db.Queryable<BPA_GoodsInfo>().Where(it => it.IsDeleted == 0).First(it => it.Id == dto.Id); | |||||
if (null == resEntity) | |||||
{ | |||||
throw Oops.Oh(ErrorCodeEnum.Code1008); | |||||
} | |||||
resEntity.GoodsTypeId = dto.GoodsTypeId; | |||||
resEntity.Name = dto.Name; | |||||
resEntity.Descritption = dto.Descritption; | |||||
resEntity.ImgUrl = dto.ImgUrl; | |||||
resEntity.Price = dto.Price; | |||||
resEntity.IsWeigh = dto.IsWeigh; | |||||
resEntity.GoodsUintId = dto.GoodsUintId; | |||||
var res = await SqlSugarDb.Db.Updateable(resEntity).ExecuteCommandAsync(); | |||||
return res > 0; | |||||
} | |||||
/// <summary> | |||||
/// 删除商品 | |||||
/// </summary> | |||||
/// <param name="ids"></param> | |||||
/// <returns></returns> | |||||
public async Task<bool> DeleteGoods(string[] ids) | |||||
{ | |||||
try | |||||
{ | |||||
SqlSugarDb.Db.BeginTran(); | |||||
var goods = SqlSugarDb.Db.Queryable<BPA_GoodsInfo>().Where(x => ids.Contains(x.Id)).ToList(); | |||||
if (goods == null) throw Oops.Oh(ErrorCodeEnum.Code1008); | |||||
var goodsbom = SqlSugarDb.Db.Queryable<BPA_GoodsBom>().Where(x => ids.Contains( x.Goods_Id)).ToList(); | |||||
var goodsTechnology = SqlSugarDb.Db.Queryable<BPA_GoodsTechnologyAction>().Where(x => ids.Contains(x.GoodsId)).ToList(); | |||||
await SqlSugarDb.Db.Deleteable(goodsbom).ExecuteCommandAsync(); | |||||
await SqlSugarDb.Db.Deleteable(goodsTechnology).ExecuteCommandAsync(); | |||||
var res = await SqlSugarDb.Db.Deleteable(goods).ExecuteCommandAsync(); | |||||
SqlSugarDb.Db.CommitTran(); | |||||
return res > 0; | |||||
} | |||||
catch (Exception) | |||||
{ | |||||
SqlSugarDb.Db.RollbackTran(); | |||||
throw Oops.Oh("删除失败"); | |||||
} | |||||
} | |||||
private string GetNumber2(int Length = 10) | |||||
{ | |||||
byte[] buffer = Guid.NewGuid().ToByteArray(); | |||||
var ram = BitConverter.ToInt64(buffer, 0); | |||||
var str = string.Format("{0}", ram.ToString().Substring(0, Length)); | |||||
return str; | |||||
} | |||||
} | |||||
} |
@@ -0,0 +1,38 @@ | |||||
using BPA.SAAS.Manage.Application.AExternalPlatform.Service.Goods.Dtos; | |||||
using BPA.SAAS.Manage.Core.Base; | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
namespace BPA.SAAS.Manage.Application.AExternalPlatform.Service.Goods.Services | |||||
{ | |||||
public interface IGoodsService | |||||
{ | |||||
/// <summary> | |||||
/// 分页查询商品 | |||||
/// </summary> | |||||
/// <param name="inputDto"></param> | |||||
/// <returns></returns> | |||||
Task<PageUtil<List<GoodsDto>>> GetGoodsPageList(GoodsPageInputDto inputDto); | |||||
/// <summary> | |||||
/// 添加商品 | |||||
/// </summary> | |||||
/// <param name="dto"></param> | |||||
/// <returns></returns> | |||||
Task<bool> AddGoods(GoodsInsertDto dto); | |||||
/// <summary> | |||||
/// 更新商品 | |||||
/// </summary> | |||||
/// <param name="dto"></param> | |||||
/// <returns></returns> | |||||
Task<bool> UpdateGoods(GoodsUpdateDto dto); | |||||
/// <summary> | |||||
/// 删除商品 | |||||
/// </summary> | |||||
/// <param name="ids"></param> | |||||
/// <returns></returns> | |||||
Task<bool> DeleteGoods(string[] ids); | |||||
} | |||||
} |
@@ -14,7 +14,7 @@ | |||||
"ASPNETCORE_ENVIRONMENT": "Development" | "ASPNETCORE_ENVIRONMENT": "Development" | ||||
}, | }, | ||||
"dotnetRunMessages": true, | "dotnetRunMessages": true, | ||||
"applicationUrl": "http://localhost:5006" | |||||
"applicationUrl": "http://localhost:5009" | |||||
}, | }, | ||||
"Docker": { | "Docker": { | ||||
"commandName": "Docker", | "commandName": "Docker", | ||||
@@ -8,7 +8,7 @@ | |||||
} | } | ||||
}, | }, | ||||
"AllowedHosts": "*", | "AllowedHosts": "*", | ||||
"baseurl": "http://192.168.1.19:5008/", | |||||
"baseurl": "http://localhost:5007/", | |||||
"ConnectionConfigs": [ | "ConnectionConfigs": [ | ||||
{ | { | ||||
"ConnectionString": "server=10.2.1.21;Database=bpa_kitchen_kitchenbasemanage;Uid=root;Pwd=cygadmin;Allow Zero Datetime=True;Convert Zero Datetime=True;", | "ConnectionString": "server=10.2.1.21;Database=bpa_kitchen_kitchenbasemanage;Uid=root;Pwd=cygadmin;Allow Zero Datetime=True;Convert Zero Datetime=True;", | ||||