using LifePayment.Application.Contracts; using LifePayment.Domain.Shared; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Volo.Abp; using Volo.Abp.AspNetCore.Mvc; using Volo.Abp.AspNetCore.WebClientInfo; using ZeroD.Util; namespace LifePayment.HttpApi { [Route("api/[controller]/[action]")] [ApiController] [Authorize] public class LifePayController : AbpController { private readonly ILifePayService _lifePayService; private readonly IWebClientInfoProvider _webClientInfoProvider; private readonly ILogger<LifePayController> _logger; public LifePayController( ILifePayService lifePayService, IWebClientInfoProvider webClientInfoProvider , ILogger<LifePayController> logger ) { _lifePayService = lifePayService; _webClientInfoProvider = webClientInfoProvider; _logger = logger; } #region 查询 /// <summary> /// 获å–电费é¢å€¼ /// </summary> /// <returns></returns> [HttpPost] [AllowAnonymous] [ChannelFilter] public async Task<ElectricParValueResponse> GetElectricParValue(ChannelsBaseInput input) { return await _lifePayService.GetElectricParValue(); } /// <summary> /// 获å–电费充值区域 /// </summary> /// <returns></returns> [HttpPost] [AllowAnonymous] [ChannelFilter] public async Task<ElectricSupportAreaResponse> GetElectricSupportArea(ChannelsBaseInput input) { var aresResult = await _lifePayService.GetElectricSupportArea(); var parValues = await _lifePayService.GetElectricParValue(); CheckExtensions.IfTrueThrowUserFriendlyException(aresResult == null, "电费充值区域ä¸å˜åœ¨"); CheckExtensions.IfTrueThrowUserFriendlyException(parValues == null, "电费é¢é¢ä¸å˜åœ¨"); foreach (var item in aresResult.ElectricAreaList) { var paritem = parValues.ElectricParValue.Where(r => r.AreaName == item.CityName).FirstOrDefault(); if (paritem != null) { item.ElectricType = paritem.ElectricType; item.ParValue = paritem.ParValue; item.Rate = paritem.Rate; } } return aresResult; } /// <summary> /// 获å–è¯è´¹é¢å€¼ /// </summary> /// <returns></returns> [HttpPost] [AllowAnonymous] [ChannelFilter] public async Task<PhoneParValueResponse> GetPhoneParValue(ChannelsBaseInput input) { return await _lifePayService.GetPhoneParValue(); } /// <summary> /// 获å–燃气é¢å€¼ /// </summary> /// <returns></returns> [HttpPost] [AllowAnonymous] [ChannelFilter] public async Task<GasParValueResponse> GetGasParValue(ChannelsBaseInput input) { return await _lifePayService.GetGasParValue(); } /// <summary> /// 获å–燃气支æŒå•†æˆ· /// </summary> /// <returns></returns> [HttpPost] [AllowAnonymous] [ChannelFilter] public async Task<GasOrgTypeValueResponse> GetGasOrgType(ChannelsBaseInput input) { return await _lifePayService.GetGasOrgType(); } /// <summary> /// æ·»åŠ æ—¥å¿— /// </summary> /// <returns></returns> [HttpPost] [AllowAnonymous] public async Task<int> AddLogger(LogErrorInput input) { Logger.LogError("å‰ç«¯é”™è¯¯ï¼š" + input.Error); return Constant.SUCCESS; } /// <summary> /// èŽ·å–æŠ˜æ‰£ /// </summary> /// <returns></returns> [HttpGet] [AllowAnonymous] public async Task<List<LifePayRateListOutput>> GetRate() { return await _lifePayService.GetRate(); } /// <summary> /// èŽ·å–æ‰‹ç»è´¹è´¹çއ /// </summary> /// <returns></returns> [HttpGet] [AllowAnonymous] public async Task<List<LifePayPremiumListOutput>> GetPremium() { return await _lifePayService.GetPremium(); } /// <summary> /// 获å–须知 /// </summary> /// <returns></returns> [HttpGet] [AllowAnonymous] public async Task<List<LifePayIntroInfoOutput>> GetIntroInfo(LifePayOrderTypeEnum type) { return await _lifePayService.GetIntroInfo(type); } /// <summary> /// 获å–ç”¨æˆ·åˆ†é¡µæ•°æ® /// </summary> /// <param name="input"></param> /// <returns></returns> [HttpPost] public async Task<PageOutput<UserListOutput>> GetUserPage(QueryUserPageInput input) { return await _lifePayService.GetUserPage(input); } /// <summary> /// 获å–订å•åˆ†é¡µæ•°æ® /// </summary> /// <param name="input"></param> /// <returns></returns> [HttpPost] public async Task<PageOutput<LifePayOrderListOutput>> GetLifePayOrderPage(QueryLifePayOrderListInput input) { return await _lifePayService.GetLifePayOrderPage(input); } /// <summary> /// èŽ·å–æˆ‘的订å•åˆ†é¡µæ•°æ® /// </summary> /// <param name="input"></param> /// <returns></returns> [HttpPost] [AllowAnonymous] [ChannelFilter] public async Task<PageOutput<UserLifePayOrderOutput>> GetUserLifePayOrderPage(QueryLifePayOrderListInput input) { return await _lifePayService.GetUserLifePayOrderPage(input); } /// <summary> /// èŽ·å–æˆ‘的订å•详情 /// </summary> /// <param name="orderNo"></param> /// <returns></returns> [HttpGet] [AllowAnonymous] public async Task<UserLifePayOrderOutput> GetUserLifePayOrderDetail(string orderNo) { return await _lifePayService.GetUserLifePayOrderDetail(orderNo); } /// <summary> /// æ ¹æ®è®¢å•å·èŽ·å–æ”¯ä»˜çŠ¶æ€ /// </summary> /// <param name="input"></param> /// <returns></returns> [HttpPost] [AllowAnonymous] [ChannelFilter] public async Task<LifePayStatusEnum> GetPayStatusByOrderNo(GetPayStatusByOrderNoInput input) { return await _lifePayService.GetPayStatusByOrderNo(input.OrderNo); } /// <summary> /// 获å–ç¼´è´¹æ¸ é“列表 /// </summary> /// <param name="input"></param> /// <returns></returns> [HttpPost] public async Task<PageOutput<CreateEditPayChannelsInput>> GetLifePayChannlesPage(PageInput input) { return await _lifePayService.GetLifePayChannlesPage(input); } /// <summary> /// 获å–å…¨éƒ¨ç¼´è´¹æ¸ é“ /// </summary> [HttpGet] public async Task<List<CreateEditPayChannelsInput>> GetLifePayChannlesAllList() { return await _lifePayService.GetLifePayChannlesAllList(); } /// <summary> /// èŽ·å–æ¸ é“详情 /// </summary> /// <param name="id"></param> /// <returns></returns> [HttpGet] public async Task<CreateEditPayChannelsInput> GetLifePayChannlesDto(Guid id) { return await _lifePayService.GetLifePayChannlesDto(id); } /// <summary> /// 用户查看生活缴费退款失败详情 /// </summary> /// <param name="id"></param> /// <returns></returns> /// <exception cref="UserFriendlyException"></exception> [HttpGet] [AllowAnonymous] public async Task<UserLifePayOrderRefundOutput> GetUserLifePayOrderRefund(Guid id) { return await _lifePayService.GetUserLifePayOrderRefund(id); } /// <summary> /// 获å–用户户å·åˆ†é¡µæ•°æ® /// </summary> /// <param name="input"></param> /// <returns></returns> [HttpPost] public async Task<PageOutput<UserAccountOutput>> GetAccountPage(QueryUserAccountListInput input) { return await _lifePayService.GetAccountPage(input); } /// <summary> /// èŽ·å–æˆ‘的户å·åˆ—表 /// </summary> /// <param name="input"></param> /// <returns></returns> [HttpPost] [AllowAnonymous] [ChannelFilter] public async Task<PageOutput<UserAccountOutput>> GetUserAccountList(QueryUserAccountListInput input) { return await _lifePayService.GetUserAccountList(input); } /// <summary> /// èŽ·å–æˆ‘的全部户å·åˆ—表 /// </summary> /// <param name="input"></param> /// <returns></returns> [HttpPost] [AllowAnonymous] [ChannelFilter] public async Task<List<UserAccountOutput>> GetUserAccountAllList(QueryUserAccountAllListInput input) { return await _lifePayService.GetUserAccountAllList(input); } /// <summary> /// èŽ·å–æˆ‘的户å·è¯¦æƒ… /// </summary> /// <param name="id"></param> /// <returns></returns> [HttpGet] [AllowAnonymous] public async Task<UserAccountOutput> GetUserAccountDetail(Guid id) { return await _lifePayService.GetUserAccountDetail(id); } /// <summary> /// 导出订å•Excel /// </summary> /// <param name="input"></param> /// <returns></returns> [HttpPost] public async Task<ActionResult> GetLifePayOrderPageExport(QueryLifePayOrderListInput input) { var data = await _lifePayService.GetLifePayOrderPageExport(input); if (data.Any()) { var bytes = ExcelHelper.ListToByteForExcel(data, "xlsx"); return File(bytes, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "订å•管ç†" + ".xlsx"); } return Json(default); } #endregion #region æ“作 /// <summary> /// 创建生活缴费è¯è´¹è®¢å• /// </summary> /// <param name="input"></param> /// <returns></returns> [HttpPost] [AllowAnonymous] [ChannelFilter] public async Task<CreateLifePayOrderOutput> CreateLifePayPhoneOrder(CreateLifePayOrderInput<LifePhoneData> input) { return await _lifePayService.CreateLifePayPhoneOrder(input); } /// <summary> /// åˆ›å»ºç”Ÿæ´»ç¼´è´¹ç”µè´¹è®¢å• /// </summary> /// <param name="input"></param> /// <returns></returns> [HttpPost] [AllowAnonymous] [ChannelFilter] public async Task<CreateLifePayOrderOutput> CreateLifePayElectricOrder(CreateLifePayOrderInput<LifeElectricData> input) { return await _lifePayService.CreateLifePayElectricOrder(input); } /// <summary> /// åˆ›å»ºç”Ÿæ´»ç¼´è´¹ç‡ƒæ°”è®¢å• /// </summary> /// <param name="input"></param> /// <returns></returns> [HttpPost] [AllowAnonymous] [ChannelFilter] public async Task<CreateLifePayOrderOutput> CreateLifePayGasOrder(CreateLifePayOrderInput<LifeGasData> input) { return await _lifePayService.CreateLifePayGasOrder(input); } /// <summary> /// é€€æ¬¾ç”Ÿæ´»ç¼´è´¹è®¢å• /// </summary> /// <param name="input"></param> /// <returns></returns> /// <exception cref="UserFriendlyException"></exception> [HttpPost] public async Task<int> RefundLifePayOrder(RefundLifePayOrderInput input) { await _lifePayService.RefundLifePayOrder(input); return Constant.SUCCESS; } /// <summary> /// 用户å‘起生活缴费退款 /// </summary> /// <param name="input"></param> /// <returns></returns> /// <exception cref="UserFriendlyException"></exception> [HttpPost] [AllowAnonymous] [ChannelFilter] public async Task<int> RefundUserLifePayOrder(RefundUserLifePayOrderInput input) { await _lifePayService.RefundUserLifePayOrder(input); return Constant.SUCCESS; } /// <summary> /// æ·»åŠ æˆ–ä¿®æ”¹æˆ‘çš„æˆ·å· /// </summary> /// <param name="input"></param> /// <returns></returns> [HttpPost] [AllowAnonymous] [ChannelFilter] public async Task<int> AddUpdateUserAccount(AddUpdateUserAccountInput input) { await _lifePayService.AddUpdateUserAccount(input); return Constant.SUCCESS; } /// <summary> /// åˆ é™¤æˆ‘çš„æˆ·å· /// </summary> /// <param name="id"></param> /// <returns></returns> [HttpPost] [AllowAnonymous] public async Task<int> DeleteUserAccount(Guid id) { await _lifePayService.DeleteUserAccount(id); return Constant.SUCCESS; } /// <summary> /// 退款驳回 /// </summary> /// <param name="input"></param> /// <returns></returns> [HttpPost] public async Task<int> RejectRefundLifePayOrder(RefundLifePayOrderInput input) { await _lifePayService.RejectRefundLifePayOrder(input); return Constant.SUCCESS; } /// <summary> /// æ¸ é“ç®¡ç† /// </summary> /// <param name="input"></param> /// <returns></returns> [HttpPost] public async Task<int> CreateEditPayChannels(CreateEditPayChannelsInput input) { await _lifePayService.CreateEditPayChannels(input); return Constant.SUCCESS; } /// <summary> /// è®¾ç½®æ¸ é“å¯ç”¨çŠ¶æ€ /// </summary> /// <param name="id"></param> /// <param name="status"></param> /// <returns></returns> [HttpGet] public async Task<int> SetLifePayChannelsStatus(Guid id, LifePayChannelsStatsEnum status) { await _lifePayService.SetLifePayChannelsStatus(id, status); return Constant.SUCCESS; } /// <summary> /// 折扣é…ç½® /// </summary> /// <param name="input"></param> /// <returns></returns> [HttpPost] public async Task<int> CreateEditLifePayRate(List<LifePayRateInput> input) { await _lifePayService.CreateEditLifePayRate(input); return Constant.SUCCESS; } /// <summary> /// 手ç»è´¹è´¹çއé…ç½® /// </summary> /// <param name="input"></param> /// <returns></returns> [HttpPost] public async Task<int> CreateEditLifePayPremium(List<LifePayPremiumInput> input) { await _lifePayService.CreateEditLifePayPremium(input); return Constant.SUCCESS; } /// <summary> /// 须知é…ç½® /// </summary> /// <param name="input"></param> /// <returns></returns> [HttpPost] public async Task<int> EditIntroInfo(LifePayIntroInfoInput input) { await _lifePayService.EditIntroInfo(input); return Constant.SUCCESS; } /// <summary> /// 设置生活缴费支付类型 /// </summary> /// <param name="input"></param> /// <returns></returns> [HttpPost] [AllowAnonymous] [ChannelFilter] public async Task<string> SetLifePayOrderPayType(SetLifePayOrderPayTypeInput input) { return await _lifePayService.SetLifePayOrderPayType(input, _webClientInfoProvider.ClientIpAddress); } /// <summary> /// 获å–微信支付的JSAPI /// </summary> /// <param name="input"></param> /// <returns></returns> [HttpPost] [AllowAnonymous] [ChannelFilter] public async Task<ModelPaymentMiniPay> GetPayOrderForJsAPI(GetPayOrderForJsAPIInput input) { return await _lifePayService.GetPayOrderForJsAPI(input, _webClientInfoProvider.ClientIpAddress); } #endregion } }