using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Mapster;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using NCC.Common.Core.Manager;
using NCC.Common.Enum;
using NCC.Common.Filter;
using NCC.Common.Helper;
using NCC.Dependency;
using NCC.DynamicApiController;
using NCC.Extend.Entitys.Dto.LqXhFeedback;
using NCC.Extend.Entitys.lq_xh_feedback;
using NCC.Extend.Entitys.lq_xh_hyhk;
using NCC.Extend.Interfaces.LqXhFeedback;
using NCC.FriendlyException;
using NCC.System.Entitys.Permission;
using SqlSugar;
using Yitter.IdGenerator;
namespace NCC.Extend
{
///
/// 绿纤耗卡服务日志服务
///
[ApiDescriptionSettings(Tag = "绿纤耗卡服务日志", Name = "LqXhFeedback", Order = 200, Groups = new[] { "Default" })]
[Route("api/Extend/[controller]")]
public class LqXhFeedbackService : ILqXhFeedbackService, IDynamicApiController, ITransient
{
private readonly ISqlSugarClient _db;
private readonly IUserManager _userManager;
private readonly ILogger _logger;
public LqXhFeedbackService(ISqlSugarClient db, IUserManager userManager, ILogger logger)
{
_db = db;
_userManager = userManager;
_logger = logger;
}
#region 获取耗卡反馈详情
///
/// 获取耗卡反馈详情
///
///
/// 根据反馈记录ID获取详细信息
///
/// 示例请求:
/// GET /api/Extend/LqXhFeedback/GetInfo/{id}
///
/// 参数说明:
/// - id: 反馈记录ID(路径参数)
///
/// 反馈记录ID
/// 耗卡反馈详情
/// 成功返回耗卡反馈详情
/// 记录不存在
/// 服务器错误
[HttpGet("GetInfo/{id}")]
public async Task GetInfo(string id)
{
try
{
var entity = await _db.Queryable().Where(p => p.Id == id).FirstAsync();
if (entity == null)
{
throw NCCException.Oh(ErrorCode.COM1005, "耗卡反馈记录不存在");
}
var output = entity.Adapt();
// 获取添加人姓名
var createUser = await _db.Queryable().Where(x => x.Id == entity.CreateUser).Select(x => x.RealName).FirstAsync();
output.createUserName = createUser;
return output;
}
catch (Exception ex)
{
throw NCCException.Oh($"获取耗卡反馈详情失败: {ex.Message}");
}
}
#endregion
#region 创建耗卡反馈
///
/// 创建耗卡反馈
///
///
/// 创建新的耗卡反馈记录
///
/// 示例请求:
/// ```json
/// {
/// "consumeId": "耗卡记录ID",
/// "beforeImage": "前图片路径或Base64",
/// "afterImage": "后图片路径或Base64",
/// "remark": "反馈备注"
/// }
/// ```
///
/// 参数说明:
/// - consumeId: 耗卡记录ID(必填)
/// - beforeImage: 前图片(可选)
/// - afterImage: 后图片(可选)
/// - remark: 反馈备注(可选)
///
/// 创建参数
/// 创建的耗卡反馈记录
/// 成功创建耗卡反馈
/// 参数错误
/// 服务器错误
[HttpPost("Create")]
public async Task Create([FromBody] LqXhFeedbackCrInput input)
{
try
{
// 验证耗卡记录是否存在
var consumeRecord = await _db.Queryable().Where(p => p.Id == input.ConsumeId).FirstAsync();
if (consumeRecord == null)
{
throw NCCException.Oh(ErrorCode.COM1005, "耗卡记录不存在");
}
var entity = input.Adapt();
entity.Id = YitIdHelper.NextId().ToString();
entity.CreateUser = _userManager.UserId;
entity.CreateTime = DateTime.Now;
entity.UpdateTime = DateTime.Now;
await _db.Insertable(entity).ExecuteCommandAsync();
return entity.Adapt();
}
catch (Exception ex)
{
throw NCCException.Oh($"创建耗卡反馈失败: {ex.Message}");
}
}
#endregion
#region 更新耗卡反馈
///
/// 更新耗卡反馈
///
///
/// 更新现有的耗卡反馈记录
///
/// 示例请求:
/// ```json
/// {
/// "id": "反馈记录ID",
/// "consumeId": "耗卡记录ID",
/// "beforeImage": "前图片路径或Base64",
/// "afterImage": "后图片路径或Base64",
/// "remark": "反馈备注"
/// }
/// ```
///
/// 参数说明:
/// - id: 反馈记录ID(必填)
/// - consumeId: 耗卡记录ID(必填)
/// - beforeImage: 前图片(可选)
/// - afterImage: 后图片(可选)
/// - remark: 反馈备注(可选)
///
/// 更新参数
/// 更新后的耗卡反馈记录
/// 成功更新耗卡反馈
/// 参数错误
/// 记录不存在
/// 服务器错误
[HttpPut("Update")]
public async Task Update([FromBody] LqXhFeedbackUpInput input)
{
try
{
var entity = await _db.Queryable().Where(p => p.Id == input.id).FirstAsync();
if (entity == null)
{
throw NCCException.Oh(ErrorCode.COM1005, "耗卡反馈记录不存在");
}
// 验证耗卡记录是否存在
var consumeRecord = await _db.Queryable().Where(p => p.Id == input.ConsumeId).FirstAsync();
if (consumeRecord == null)
{
throw NCCException.Oh(ErrorCode.COM1005, "耗卡记录不存在");
}
entity.ConsumeId = input.ConsumeId;
entity.BeforeImage = input.BeforeImage;
entity.AfterImage = input.AfterImage;
entity.Remark = input.Remark;
entity.UpdateTime = DateTime.Now;
await _db.Updateable(entity).ExecuteCommandAsync();
return entity.Adapt();
}
catch (Exception ex)
{
throw NCCException.Oh($"更新耗卡反馈失败: {ex.Message}");
}
}
#endregion
#region 删除耗卡反馈
///
/// 删除耗卡反馈
///
///
/// 根据反馈记录ID删除记录
///
/// 示例请求:
/// DELETE /api/Extend/LqXhFeedback/Delete/{id}
///
/// 参数说明:
/// - id: 反馈记录ID(路径参数)
///
/// 反馈记录ID
/// 删除结果
/// 成功删除耗卡反馈
/// 记录不存在
/// 服务器错误
[HttpDelete("Delete/{id}")]
public async Task Delete(string id)
{
try
{
var entity = await _db.Queryable()
.Where(p => p.Id == id)
.FirstAsync();
if (entity == null)
{
throw NCCException.Oh(ErrorCode.COM1005, "耗卡反馈记录不存在");
}
await _db.Deleteable()
.Where(p => p.Id == id)
.ExecuteCommandAsync();
return new { message = "删除成功" };
}
catch (Exception ex)
{
throw NCCException.Oh($"删除耗卡反馈失败: {ex.Message}");
}
}
#endregion
#region 根据耗卡记录ID获取反馈
///
/// 根据耗卡记录ID获取反馈
///
///
/// 根据耗卡记录ID获取相关的所有反馈记录
///
/// 示例请求:
/// GET /api/Extend/LqXhFeedback/GetByConsumeId/{consumeId}
///
/// 参数说明:
/// - consumeId: 耗卡记录ID(路径参数)
///
/// 耗卡记录ID
/// 耗卡反馈列表
/// 成功返回耗卡反馈列表
/// 服务器错误
[HttpGet("GetByConsumeId/{consumeId}")]
public async Task GetByConsumeId(string consumeId)
{
try
{
var data = await _db.Queryable()
.Where(p => p.ConsumeId == consumeId)
.OrderBy(p => p.CreateTime, OrderByType.Desc)
.Select(it => new LqXhFeedbackListOutput
{
id = it.Id,
consumeId = it.ConsumeId,
beforeImage = it.BeforeImage,
afterImage = it.AfterImage,
remark = it.Remark,
createUser = it.CreateUser,
createUserName = SqlFunc.Subqueryable().Where(x => x.Id == it.CreateUser).Select(x => x.RealName),
createTime = it.CreateTime,
updateTime = it.UpdateTime
})
.ToListAsync();
return data;
}
catch (Exception ex)
{
throw NCCException.Oh($"获取耗卡反馈失败: {ex.Message}");
}
}
#endregion
}
}