mirror of
http://git.coreshop.cn/jianweie/coreshoppro.git
synced 2026-02-04 19:39:48 +08:00
【新增】后台提现审核功能增加【企业付款到零钱】【企业付款到银行卡】
This commit is contained in:
@@ -320,15 +320,31 @@ namespace CoreCms.Net.Configuration
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 用户提现状态[对应CoreCmsUserTocash表的status字段]
|
/// 用户提现状态[对应CoreCmsUserTocash表的status字段]
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public enum UserTocashTypes
|
public enum UserTocashStatus
|
||||||
{
|
{
|
||||||
[Description("待审核")]
|
[Description("待审核")]
|
||||||
待审核 = 1,
|
待审核 = 1,
|
||||||
[Description("提现成功")]
|
[Description("提现成功")]
|
||||||
提现成功 = 2,
|
提现成功 = 2,
|
||||||
[Description("提现失败")]
|
[Description("提现失败")]
|
||||||
提现失败 = 3
|
提现失败 = 3,
|
||||||
|
[Description("提现异常")]
|
||||||
|
提现异常 = 4
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 用户提现状态[对应CoreCmsUserTocash表的type字段]
|
||||||
|
/// </summary>
|
||||||
|
public enum UserTocashType
|
||||||
|
{
|
||||||
|
[Description("银行线下转账")]
|
||||||
|
银行线下转账 = 0,
|
||||||
|
[Description("微信付款到零钱")]
|
||||||
|
微信付款到零钱 = 1,
|
||||||
|
[Description("微信付款到银行卡")]
|
||||||
|
微信付款到银行卡 = 2
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Order订单相关=========================================================
|
#region Order订单相关=========================================================
|
||||||
|
|||||||
@@ -11,6 +11,7 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Linq.Expressions;
|
using System.Linq.Expressions;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using CoreCms.Net.Configuration;
|
||||||
using CoreCms.Net.Model.Entities;
|
using CoreCms.Net.Model.Entities;
|
||||||
using CoreCms.Net.Model.ViewModels.Basics;
|
using CoreCms.Net.Model.ViewModels.Basics;
|
||||||
using CoreCms.Net.Model.ViewModels.UI;
|
using CoreCms.Net.Model.ViewModels.UI;
|
||||||
@@ -46,7 +47,7 @@ namespace CoreCms.Net.IServices
|
|||||||
/// <param name="id"></param>
|
/// <param name="id"></param>
|
||||||
/// <param name="status"></param>
|
/// <param name="status"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
Task<WebApiCallBack> Examine(int id = 0, int status = 0);
|
Task<WebApiCallBack> Examine(int id = 0, int status = 0, int type = (int)GlobalEnumVars.UserTocashType.银行线下转账);
|
||||||
|
|
||||||
|
|
||||||
#region 重写根据条件查询分页数据
|
#region 重写根据条件查询分页数据
|
||||||
|
|||||||
@@ -3,11 +3,13 @@
|
|||||||
* ProjectName: 核心内容管理系统
|
* ProjectName: 核心内容管理系统
|
||||||
* Web: https://www.corecms.net
|
* Web: https://www.corecms.net
|
||||||
* Author: 大灰灰
|
* Author: 大灰灰
|
||||||
* Email: jianweie@163.com
|
* Email: jianweie@163.com
|
||||||
* CreateTime: 2021-06-08 22:14:59
|
* CreateTime: 2022/7/4 23:39:39
|
||||||
* Description: 暂无
|
* Description: 暂无
|
||||||
***********************************************************************/
|
***********************************************************************/
|
||||||
|
|
||||||
using SqlSugar;
|
using SqlSugar;
|
||||||
|
using System.ComponentModel;
|
||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
namespace CoreCms.Net.Model.Entities
|
namespace CoreCms.Net.Model.Entities
|
||||||
@@ -15,11 +17,10 @@ namespace CoreCms.Net.Model.Entities
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 用户提现记录表
|
/// 用户提现记录表
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[SugarTable("CoreCmsUserTocash",TableDescription = "用户提现记录表")]
|
|
||||||
public partial class CoreCmsUserTocash
|
public partial class CoreCmsUserTocash
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 用户提现记录表
|
/// 构造函数
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public CoreCmsUserTocash()
|
public CoreCmsUserTocash()
|
||||||
{
|
{
|
||||||
@@ -29,90 +30,144 @@ namespace CoreCms.Net.Model.Entities
|
|||||||
/// id
|
/// id
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Display(Name = "id")]
|
[Display(Name = "id")]
|
||||||
[SugarColumn(ColumnDescription = "id", IsPrimaryKey = true, IsIdentity = true)]
|
[SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
|
||||||
[Required(ErrorMessage = "请输入{0}")]
|
[Required(ErrorMessage = "请输入{0}")]
|
||||||
|
|
||||||
|
|
||||||
public System.Int32 id { get; set; }
|
public System.Int32 id { get; set; }
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 用户ID
|
/// 用户ID
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Display(Name = "用户ID")]
|
[Display(Name = "用户ID")]
|
||||||
[SugarColumn(ColumnDescription = "用户ID")]
|
|
||||||
[Required(ErrorMessage = "请输入{0}")]
|
[Required(ErrorMessage = "请输入{0}")]
|
||||||
|
|
||||||
|
|
||||||
public System.Int32 userId { get; set; }
|
public System.Int32 userId { get; set; }
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 提现金额
|
/// 提现金额
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Display(Name = "提现金额")]
|
[Display(Name = "提现金额")]
|
||||||
[SugarColumn(ColumnDescription = "提现金额")]
|
|
||||||
[Required(ErrorMessage = "请输入{0}")]
|
[Required(ErrorMessage = "请输入{0}")]
|
||||||
|
|
||||||
|
|
||||||
public System.Decimal money { get; set; }
|
public System.Decimal money { get; set; }
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 银行名称
|
/// 银行名称
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Display(Name = "银行名称")]
|
[Display(Name = "银行名称")]
|
||||||
[SugarColumn(ColumnDescription = "银行名称", IsNullable = true)]
|
[StringLength(maximumLength: 60, ErrorMessage = "{0}不能超过{1}字")]
|
||||||
[StringLength(60, ErrorMessage = "【{0}】不能超过{1}字符长度")]
|
|
||||||
|
|
||||||
public System.String bankName { get; set; }
|
public System.String bankName { get; set; }
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 银行缩写
|
/// 银行缩写
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Display(Name = "银行缩写")]
|
[Display(Name = "银行缩写")]
|
||||||
[SugarColumn(ColumnDescription = "银行缩写", IsNullable = true)]
|
[StringLength(maximumLength: 12, ErrorMessage = "{0}不能超过{1}字")]
|
||||||
[StringLength(12, ErrorMessage = "【{0}】不能超过{1}字符长度")]
|
|
||||||
|
|
||||||
public System.String bankCode { get; set; }
|
public System.String bankCode { get; set; }
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 账号地区ID
|
/// 账号地区ID
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Display(Name = "账号地区ID")]
|
[Display(Name = "账号地区ID")]
|
||||||
[SugarColumn(ColumnDescription = "账号地区ID", IsNullable = true)]
|
|
||||||
public System.Int32? bankAreaId { get; set; }
|
public System.Int32? bankAreaId { get; set; }
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 开户行
|
/// 开户行
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Display(Name = "开户行")]
|
[Display(Name = "开户行")]
|
||||||
[SugarColumn(ColumnDescription = "开户行", IsNullable = true)]
|
[StringLength(maximumLength: 255, ErrorMessage = "{0}不能超过{1}字")]
|
||||||
[StringLength(255, ErrorMessage = "【{0}】不能超过{1}字符长度")]
|
|
||||||
|
|
||||||
public System.String accountBank { get; set; }
|
public System.String accountBank { get; set; }
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 账户名
|
/// 账户名
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Display(Name = "账户名")]
|
[Display(Name = "账户名")]
|
||||||
[SugarColumn(ColumnDescription = "账户名", IsNullable = true)]
|
[StringLength(maximumLength: 60, ErrorMessage = "{0}不能超过{1}字")]
|
||||||
[StringLength(60, ErrorMessage = "【{0}】不能超过{1}字符长度")]
|
|
||||||
|
|
||||||
public System.String accountName { get; set; }
|
public System.String accountName { get; set; }
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 卡号
|
/// 卡号
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Display(Name = "卡号")]
|
[Display(Name = "卡号")]
|
||||||
[SugarColumn(ColumnDescription = "卡号", IsNullable = true)]
|
[StringLength(maximumLength: 30, ErrorMessage = "{0}不能超过{1}字")]
|
||||||
[StringLength(30, ErrorMessage = "【{0}】不能超过{1}字符长度")]
|
|
||||||
|
|
||||||
public System.String cardNumber { get; set; }
|
public System.String cardNumber { get; set; }
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 提现服务费
|
/// 提现服务费
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Display(Name = "提现服务费")]
|
[Display(Name = "提现服务费")]
|
||||||
[SugarColumn(ColumnDescription = "提现服务费")]
|
|
||||||
[Required(ErrorMessage = "请输入{0}")]
|
[Required(ErrorMessage = "请输入{0}")]
|
||||||
|
|
||||||
|
|
||||||
public System.Decimal withdrawals { get; set; }
|
public System.Decimal withdrawals { get; set; }
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 提现状态
|
/// 提现状态
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Display(Name = "提现状态")]
|
[Display(Name = "提现状态")]
|
||||||
[SugarColumn(ColumnDescription = "提现状态")]
|
|
||||||
[Required(ErrorMessage = "请输入{0}")]
|
[Required(ErrorMessage = "请输入{0}")]
|
||||||
|
|
||||||
|
|
||||||
public System.Int32 status { get; set; }
|
public System.Int32 status { get; set; }
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 创建时间
|
/// 创建时间
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Display(Name = "创建时间")]
|
[Display(Name = "创建时间")]
|
||||||
[SugarColumn(ColumnDescription = "创建时间")]
|
|
||||||
[Required(ErrorMessage = "请输入{0}")]
|
[Required(ErrorMessage = "请输入{0}")]
|
||||||
|
|
||||||
|
|
||||||
public System.DateTime createTime { get; set; }
|
public System.DateTime createTime { get; set; }
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 更新时间
|
/// 更新时间
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Display(Name = "更新时间")]
|
[Display(Name = "更新时间")]
|
||||||
[SugarColumn(ColumnDescription = "更新时间", IsNullable = true)]
|
|
||||||
public System.DateTime? updateTime { get; set; }
|
public System.DateTime? updateTime { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 提现方式
|
||||||
|
/// </summary>
|
||||||
|
[Display(Name = "提现方式")]
|
||||||
|
[Required(ErrorMessage = "请输入{0}")]
|
||||||
|
|
||||||
|
|
||||||
|
public System.Int32 type { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 反馈结果
|
||||||
|
/// </summary>
|
||||||
|
[Display(Name = "反馈结果")]
|
||||||
|
[StringLength(maximumLength: 100, ErrorMessage = "{0}不能超过{1}字")]
|
||||||
|
|
||||||
|
|
||||||
|
public System.String message { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -140,4 +140,26 @@ namespace CoreCms.Net.Model.FromBody
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public string propsDate { get; set; }
|
public string propsDate { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public class FMUserTocash
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 提现记录序列
|
||||||
|
/// </summary>
|
||||||
|
public int id { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 设置状态
|
||||||
|
/// </summary>
|
||||||
|
public int status { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 提现方式
|
||||||
|
/// </summary>
|
||||||
|
public int type { get; set; }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -12,6 +12,7 @@ using System;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Linq.Expressions;
|
using System.Linq.Expressions;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using CoreCms.Net.Caching.AccressToken;
|
||||||
using CoreCms.Net.Configuration;
|
using CoreCms.Net.Configuration;
|
||||||
using CoreCms.Net.IRepository;
|
using CoreCms.Net.IRepository;
|
||||||
using CoreCms.Net.IRepository.UnitOfWork;
|
using CoreCms.Net.IRepository.UnitOfWork;
|
||||||
@@ -23,9 +24,17 @@ using CoreCms.Net.Model.ViewModels.Basics;
|
|||||||
using CoreCms.Net.Model.ViewModels.UI;
|
using CoreCms.Net.Model.ViewModels.UI;
|
||||||
using CoreCms.Net.Utility.Extensions;
|
using CoreCms.Net.Utility.Extensions;
|
||||||
using CoreCms.Net.Utility.Helper;
|
using CoreCms.Net.Utility.Helper;
|
||||||
|
using CoreCms.Net.WeChat.Service.HttpClients;
|
||||||
|
using Essensoft.Paylink.WeChatPay;
|
||||||
|
using Essensoft.Paylink.WeChatPay.V2;
|
||||||
|
using Essensoft.Paylink.WeChatPay.V2.Request;
|
||||||
|
using Microsoft.AspNetCore.Http;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
using Microsoft.Extensions.Hosting;
|
using Microsoft.Extensions.Hosting;
|
||||||
|
using Microsoft.Extensions.Options;
|
||||||
|
using Newtonsoft.Json;
|
||||||
using SqlSugar;
|
using SqlSugar;
|
||||||
|
using Yitter.IdGenerator;
|
||||||
|
|
||||||
|
|
||||||
namespace CoreCms.Net.Services
|
namespace CoreCms.Net.Services
|
||||||
@@ -38,22 +47,28 @@ namespace CoreCms.Net.Services
|
|||||||
private readonly ICoreCmsUserTocashRepository _dal;
|
private readonly ICoreCmsUserTocashRepository _dal;
|
||||||
private readonly IUnitOfWork _unitOfWork;
|
private readonly IUnitOfWork _unitOfWork;
|
||||||
private readonly IServiceProvider _serviceProvider;
|
private readonly IServiceProvider _serviceProvider;
|
||||||
private readonly ICoreCmsSettingServices _settingServices;
|
|
||||||
private readonly ICoreCmsUserServices _userServices;
|
private readonly ICoreCmsUserServices _userServices;
|
||||||
private readonly ICoreCmsUserBalanceServices _userBalanceServices;
|
private readonly ICoreCmsUserBalanceServices _userBalanceServices;
|
||||||
|
private readonly ICoreCmsUserWeChatInfoServices _weChatInfoServices;
|
||||||
|
private readonly IOptions<WeChatPayOptions> _optionsAccessor;
|
||||||
|
private readonly IWeChatPayClient _client;
|
||||||
|
private readonly IHttpContextAccessor _httpContextAccessor;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public CoreCmsUserTocashServices(IUnitOfWork unitOfWork, ICoreCmsUserTocashRepository dal,
|
public CoreCmsUserTocashServices(IUnitOfWork unitOfWork, ICoreCmsUserTocashRepository dal,
|
||||||
IServiceProvider serviceProvider, ICoreCmsSettingServices settingServices, ICoreCmsUserServices userServices, ICoreCmsUserBalanceServices userBalanceServices)
|
IServiceProvider serviceProvider, ICoreCmsUserServices userServices, ICoreCmsUserBalanceServices userBalanceServices, ICoreCmsUserWeChatInfoServices weChatInfoServices, IOptions<WeChatPayOptions> optionsAccessor, IWeChatPayClient client, IHttpContextAccessor httpContextAccessor)
|
||||||
{
|
{
|
||||||
this._dal = dal;
|
this._dal = dal;
|
||||||
base.BaseDal = dal;
|
base.BaseDal = dal;
|
||||||
_unitOfWork = unitOfWork;
|
_unitOfWork = unitOfWork;
|
||||||
_serviceProvider = serviceProvider;
|
_serviceProvider = serviceProvider;
|
||||||
_settingServices = settingServices;
|
|
||||||
_userServices = userServices;
|
_userServices = userServices;
|
||||||
_userBalanceServices = userBalanceServices;
|
_userBalanceServices = userBalanceServices;
|
||||||
|
_weChatInfoServices = weChatInfoServices;
|
||||||
|
_optionsAccessor = optionsAccessor;
|
||||||
|
_client = client;
|
||||||
|
_httpContextAccessor = httpContextAccessor;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -134,9 +149,10 @@ namespace CoreCms.Net.Services
|
|||||||
cashModel.accountBank = bankcardsInfo.accountBank;
|
cashModel.accountBank = bankcardsInfo.accountBank;
|
||||||
cashModel.accountName = bankcardsInfo.accountName;
|
cashModel.accountName = bankcardsInfo.accountName;
|
||||||
cashModel.cardNumber = bankcardsInfo.cardNumber;
|
cashModel.cardNumber = bankcardsInfo.cardNumber;
|
||||||
cashModel.status = (int)GlobalEnumVars.UserTocashTypes.待审核;
|
cashModel.status = (int)GlobalEnumVars.UserTocashStatus.待审核;
|
||||||
cashModel.withdrawals = cateMoney;
|
cashModel.withdrawals = cateMoney;
|
||||||
cashModel.createTime = DateTime.Now;
|
cashModel.createTime = DateTime.Now;
|
||||||
|
cashModel.type = (int)GlobalEnumVars.UserTocashType.银行线下转账;
|
||||||
|
|
||||||
var res = await _dal.InsertAsync(cashModel);
|
var res = await _dal.InsertAsync(cashModel);
|
||||||
if (res > 0)
|
if (res > 0)
|
||||||
@@ -182,7 +198,7 @@ namespace CoreCms.Net.Services
|
|||||||
{
|
{
|
||||||
foreach (var item in list)
|
foreach (var item in list)
|
||||||
{
|
{
|
||||||
item.statusName = EnumHelper.GetEnumDescriptionByValue<GlobalEnumVars.UserTocashTypes>(item.status);
|
item.statusName = EnumHelper.GetEnumDescriptionByValue<GlobalEnumVars.UserTocashStatus>(item.status);
|
||||||
item.cardNumber = UserHelper.BankCardNoFormat(item.cardNumber);
|
item.cardNumber = UserHelper.BankCardNoFormat(item.cardNumber);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -206,57 +222,156 @@ namespace CoreCms.Net.Services
|
|||||||
/// <param name="id"></param>
|
/// <param name="id"></param>
|
||||||
/// <param name="status"></param>
|
/// <param name="status"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public async Task<WebApiCallBack> Examine(int id = 0, int status = 0)
|
public async Task<WebApiCallBack> Examine(int id = 0, int status = 0, int type = (int)GlobalEnumVars.UserTocashType.银行线下转账)
|
||||||
{
|
{
|
||||||
var jm = new WebApiCallBack();
|
var jm = new WebApiCallBack();
|
||||||
|
|
||||||
var info = await _dal.QueryByClauseAsync(p =>
|
var info = await _dal.QueryByClauseAsync(p => p.id == id && (p.status == (int)GlobalEnumVars.UserTocashStatus.待审核 || p.status == (int)GlobalEnumVars.UserTocashStatus.提现异常));
|
||||||
p.id == id && p.status == (int)GlobalEnumVars.UserTocashTypes.待审核);
|
|
||||||
if (info == null)
|
if (info == null)
|
||||||
{
|
{
|
||||||
jm.msg = "没有此记录或不是待审核状态";
|
jm.msg = "没有此记录或不是待审核状态";
|
||||||
return jm;
|
return jm;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (status > 0)
|
switch (type)
|
||||||
{
|
{
|
||||||
var bl = await _dal.UpdateAsync(p => new CoreCmsUserTocash() { status = status, updateTime = DateTime.Now }, p =>
|
case (int)GlobalEnumVars.UserTocashType.银行线下转账 when status > 0:
|
||||||
p.id == id && p.status == (int)GlobalEnumVars.UserTocashTypes.待审核);
|
|
||||||
jm.status = bl;
|
|
||||||
jm.data = status;
|
|
||||||
if (bl)
|
|
||||||
{
|
|
||||||
//失败给用户退钱到余额
|
|
||||||
if (status == (int)GlobalEnumVars.UserTocashTypes.提现失败)
|
|
||||||
{
|
{
|
||||||
var toCashInfo = await _dal.QueryByIdAsync(id);
|
var bl = await _dal.UpdateAsync(p => new CoreCmsUserTocash() { status = status, updateTime = DateTime.Now }, p => p.id == id && (p.status == (int)GlobalEnumVars.UserTocashStatus.待审核 || p.status == (int)GlobalEnumVars.UserTocashStatus.提现异常));
|
||||||
|
jm.status = bl;
|
||||||
// 提现金额 加 服务费返还
|
jm.data = status;
|
||||||
var newMoney = toCashInfo.money + toCashInfo.withdrawals;
|
if (bl)
|
||||||
var up = await _userServices.UpdateAsync(p => new CoreCmsUser() { balance = p.balance + newMoney }, p => p.id == toCashInfo.userId);
|
|
||||||
if (up)
|
|
||||||
{
|
{
|
||||||
//添加记录
|
//失败给用户退钱到余额
|
||||||
var user = await _userServices.QueryByIdAsync(toCashInfo.userId);
|
if (status == (int)GlobalEnumVars.UserTocashStatus.提现失败)
|
||||||
|
{
|
||||||
|
var toCashInfo = await _dal.QueryByIdAsync(id);
|
||||||
|
|
||||||
var balance = new CoreCmsUserBalance();
|
// 提现金额 加 服务费返还
|
||||||
balance.type = (int)GlobalEnumVars.UserBalanceSourceTypes.Tocash;
|
var newMoney = toCashInfo.money + toCashInfo.withdrawals;
|
||||||
balance.userId = toCashInfo.userId;
|
var up = await _userServices.UpdateAsync(p => new CoreCmsUser() { balance = p.balance + newMoney }, p => p.id == toCashInfo.userId);
|
||||||
balance.balance = user.balance;
|
if (up)
|
||||||
balance.createTime = DateTime.Now;
|
{
|
||||||
balance.memo = UserHelper.GetMemo(balance.type, toCashInfo.money);
|
//添加记录
|
||||||
balance.money = newMoney;
|
var user = await _userServices.QueryByIdAsync(toCashInfo.userId);
|
||||||
balance.sourceId = id.ToString();
|
|
||||||
|
|
||||||
await _userBalanceServices.InsertAsync(balance);
|
var balance = new CoreCmsUserBalance();
|
||||||
|
balance.type = (int)GlobalEnumVars.UserBalanceSourceTypes.Tocash;
|
||||||
|
balance.userId = toCashInfo.userId;
|
||||||
|
balance.balance = user.balance;
|
||||||
|
balance.createTime = DateTime.Now;
|
||||||
|
balance.memo = UserHelper.GetMemo(balance.type, toCashInfo.money);
|
||||||
|
balance.money = newMoney;
|
||||||
|
balance.sourceId = id.ToString();
|
||||||
|
|
||||||
|
await _userBalanceServices.InsertAsync(balance);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
case (int)GlobalEnumVars.UserTocashType.银行线下转账:
|
||||||
}
|
jm.msg = GlobalErrorCodeVars.Code10000;
|
||||||
else
|
jm.status = false;
|
||||||
{
|
break;
|
||||||
jm.msg = GlobalErrorCodeVars.Code10000;
|
case (int)GlobalEnumVars.UserTocashType.微信付款到零钱:
|
||||||
jm.status = false;
|
{
|
||||||
|
var user = await _userServices.QueryByIdAsync(info.userId);
|
||||||
|
if (user == null)
|
||||||
|
{
|
||||||
|
jm.msg = "用户信息获取失败";
|
||||||
|
return jm;
|
||||||
|
}
|
||||||
|
var weChatUserInfo = await _weChatInfoServices.QueryByClauseAsync(p => p.userId == info.userId);
|
||||||
|
if (weChatUserInfo == null)
|
||||||
|
{
|
||||||
|
jm.msg = "微信用户数据获取失败";
|
||||||
|
return jm;
|
||||||
|
}
|
||||||
|
//按分计算
|
||||||
|
var amount = Convert.ToInt16((info.money - info.withdrawals) * 100);
|
||||||
|
//企业付款到零钱
|
||||||
|
var request = new WeChatPayPromotionTransfersRequest
|
||||||
|
{
|
||||||
|
PartnerTradeNo = YitIdHelper.NextId().ToString(),
|
||||||
|
OpenId = weChatUserInfo.openid,
|
||||||
|
CheckName = "NO_CHECK",
|
||||||
|
ReUserName = info.accountName,
|
||||||
|
Amount = amount,
|
||||||
|
Desc = "余额提现零钱",
|
||||||
|
SpBillCreateIp = _httpContextAccessor.HttpContext?.Connection.RemoteIpAddress != null ? _httpContextAccessor.HttpContext.Connection.RemoteIpAddress.MapToIPv4().ToString() : "127.0.0.1"
|
||||||
|
};
|
||||||
|
var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
|
||||||
|
if (response.ReturnCode == WeChatPayCode.Success && response.ResultCode == WeChatPayCode.Success)
|
||||||
|
{
|
||||||
|
status = (int)GlobalEnumVars.UserTocashStatus.提现成功;
|
||||||
|
var message = JsonConvert.SerializeObject(response);
|
||||||
|
var bl = await _dal.UpdateAsync(p => new CoreCmsUserTocash() { status = status, updateTime = DateTime.Now, message = message }, p => p.id == id && (p.status == (int)GlobalEnumVars.UserTocashStatus.待审核 || p.status == (int)GlobalEnumVars.UserTocashStatus.提现异常));
|
||||||
|
jm.status = bl;
|
||||||
|
jm.data = status;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
status = (int)GlobalEnumVars.UserTocashStatus.提现异常;
|
||||||
|
var message = JsonConvert.SerializeObject(response);
|
||||||
|
var bl = await _dal.UpdateAsync(p => new CoreCmsUserTocash() { status = status, updateTime = DateTime.Now, message = message }, p => p.id == id && (p.status == (int)GlobalEnumVars.UserTocashStatus.待审核 || p.status == (int)GlobalEnumVars.UserTocashStatus.提现异常));
|
||||||
|
jm.status = bl;
|
||||||
|
jm.data = status;
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case (int)GlobalEnumVars.UserTocashType.微信付款到银行卡:
|
||||||
|
{
|
||||||
|
var user = await _userServices.QueryByIdAsync(info.userId);
|
||||||
|
if (user == null)
|
||||||
|
{
|
||||||
|
jm.msg = "用户信息获取失败";
|
||||||
|
return jm;
|
||||||
|
}
|
||||||
|
var weChatUserInfo = await _weChatInfoServices.QueryByClauseAsync(p => p.userId == info.userId);
|
||||||
|
if (weChatUserInfo == null)
|
||||||
|
{
|
||||||
|
jm.msg = "微信用户数据获取失败";
|
||||||
|
return jm;
|
||||||
|
}
|
||||||
|
//按分计算
|
||||||
|
var amount = Convert.ToInt16((info.money - info.withdrawals) * 100);
|
||||||
|
//企业付款到零钱
|
||||||
|
var request = new WeChatPayPayBankRequest
|
||||||
|
{
|
||||||
|
PartnerTradeNo = YitIdHelper.NextId().ToString(),
|
||||||
|
BankNo = info.cardNumber,
|
||||||
|
TrueName = info.accountName,
|
||||||
|
BankCode = info.accountBank,
|
||||||
|
Amount = amount,
|
||||||
|
Desc = "余额提现银行卡",
|
||||||
|
};
|
||||||
|
var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
|
||||||
|
if (response.ReturnCode == WeChatPayCode.Success && response.ResultCode == WeChatPayCode.Success)
|
||||||
|
{
|
||||||
|
status = (int)GlobalEnumVars.UserTocashStatus.提现成功;
|
||||||
|
var message = JsonConvert.SerializeObject(response);
|
||||||
|
var bl = await _dal.UpdateAsync(p => new CoreCmsUserTocash() { status = status, updateTime = DateTime.Now, message = message }, p => p.id == id && (p.status == (int)GlobalEnumVars.UserTocashStatus.待审核 || p.status == (int)GlobalEnumVars.UserTocashStatus.提现异常));
|
||||||
|
jm.status = bl;
|
||||||
|
jm.data = status;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
status = (int)GlobalEnumVars.UserTocashStatus.提现异常;
|
||||||
|
var message = JsonConvert.SerializeObject(response);
|
||||||
|
var bl = await _dal.UpdateAsync(p => new CoreCmsUserTocash() { status = status, updateTime = DateTime.Now, message = message }, p => p.id == id && (p.status == (int)GlobalEnumVars.UserTocashStatus.待审核 || p.status == (int)GlobalEnumVars.UserTocashStatus.提现异常));
|
||||||
|
jm.status = bl;
|
||||||
|
jm.data = status;
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
jm.msg = "提现方式获取失败";
|
||||||
|
jm.status = false;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return jm;
|
return jm;
|
||||||
|
|||||||
@@ -224,17 +224,54 @@ namespace CoreCms.Net.Web.Admin.Controllers
|
|||||||
//返回数据
|
//返回数据
|
||||||
var jm = new AdminUiCallBack { code = 0 };
|
var jm = new AdminUiCallBack { code = 0 };
|
||||||
|
|
||||||
var userTocashTypes = EnumHelper.EnumToList<GlobalEnumVars.UserTocashTypes>();
|
var userTocashStatus = EnumHelper.EnumToList<GlobalEnumVars.UserTocashStatus>();
|
||||||
|
var userTocashType = EnumHelper.EnumToList<GlobalEnumVars.UserTocashType>();
|
||||||
|
|
||||||
jm.data = new
|
jm.data = new
|
||||||
{
|
{
|
||||||
userTocashTypes
|
userTocashStatus,
|
||||||
|
userTocashType
|
||||||
};
|
};
|
||||||
return jm;
|
return jm;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
#region 提现处理============================================================
|
||||||
|
// POST: Api/CoreCmsUserTocash/GetTocash
|
||||||
|
/// <summary>
|
||||||
|
/// 提现处理
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="entity"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
[Description("提现处理")]
|
||||||
|
public async Task<AdminUiCallBack> GetTocash([FromBody] FMIntId entity)
|
||||||
|
{
|
||||||
|
var jm = new AdminUiCallBack();
|
||||||
|
|
||||||
|
var model = await _coreCmsUserTocashServices.QueryByIdAsync(entity.id, false);
|
||||||
|
if (model == null)
|
||||||
|
{
|
||||||
|
jm.msg = "不存在此信息";
|
||||||
|
return jm;
|
||||||
|
}
|
||||||
|
jm.code = 0;
|
||||||
|
|
||||||
|
var userTocashStatus = EnumHelper.EnumToList<GlobalEnumVars.UserTocashStatus>();
|
||||||
|
var userTocashType = EnumHelper.EnumToList<GlobalEnumVars.UserTocashType>();
|
||||||
|
|
||||||
|
jm.data = new
|
||||||
|
{
|
||||||
|
model,
|
||||||
|
userTocashStatus,
|
||||||
|
userTocashType
|
||||||
|
};
|
||||||
|
|
||||||
|
return jm;
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
#region 设置状态============================================================
|
#region 设置状态============================================================
|
||||||
|
|
||||||
@@ -246,7 +283,7 @@ namespace CoreCms.Net.Web.Admin.Controllers
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
[Description("设置状态")]
|
[Description("设置状态")]
|
||||||
public async Task<AdminUiCallBack> SetStatus([FromBody] FMIntId entity)
|
public async Task<AdminUiCallBack> SetStatus([FromBody] FMUserTocash entity)
|
||||||
{
|
{
|
||||||
var jm = new AdminUiCallBack();
|
var jm = new AdminUiCallBack();
|
||||||
|
|
||||||
@@ -257,17 +294,54 @@ namespace CoreCms.Net.Web.Admin.Controllers
|
|||||||
return jm;
|
return jm;
|
||||||
}
|
}
|
||||||
|
|
||||||
var res = await _coreCmsUserTocashServices.Examine(entity.id, entity.data.ObjectToInt(0));
|
var res = await _coreCmsUserTocashServices.Examine(entity.id, entity.status, entity.type);
|
||||||
jm.code = res.status ? 0 : 1;
|
jm.code = res.status ? 0 : 1;
|
||||||
jm.data = res.data;
|
jm.data = res.data;
|
||||||
jm.msg = res.status ? GlobalConstVars.EditSuccess : GlobalConstVars.EditFailure;
|
jm.msg = res.msg;
|
||||||
|
jm.otherData = entity;
|
||||||
return jm;
|
return jm;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#region 预览数据============================================================
|
||||||
|
// POST: Api/CoreCmsUserTocash/GetDetails/10
|
||||||
|
/// <summary>
|
||||||
|
/// 预览数据
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="entity"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
[Description("预览数据")]
|
||||||
|
public async Task<AdminUiCallBack> GetDetails([FromBody] FMIntId entity)
|
||||||
|
{
|
||||||
|
var jm = new AdminUiCallBack();
|
||||||
|
|
||||||
|
var model = await _coreCmsUserTocashServices.QueryByIdAsync(entity.id, false);
|
||||||
|
if (model == null)
|
||||||
|
{
|
||||||
|
jm.msg = "不存在此信息";
|
||||||
|
return jm;
|
||||||
|
}
|
||||||
|
jm.code = 0;
|
||||||
|
|
||||||
|
var userTocashStatus = EnumHelper.EnumToList<GlobalEnumVars.UserTocashStatus>();
|
||||||
|
var userTocashType = EnumHelper.EnumToList<GlobalEnumVars.UserTocashType>();
|
||||||
|
|
||||||
|
jm.data = new
|
||||||
|
{
|
||||||
|
model,
|
||||||
|
userTocashStatus,
|
||||||
|
userTocashType
|
||||||
|
};
|
||||||
|
|
||||||
|
return jm;
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
#region 选择导出============================================================
|
#region 选择导出============================================================
|
||||||
|
|
||||||
// POST: Api/CoreCmsUserTocash/SelectExportExcel/10
|
// POST: Api/CoreCmsUserTocash/SelectExportExcel/10
|
||||||
|
|||||||
@@ -0,0 +1,170 @@
|
|||||||
|
<script type="text/html" template lay-done="layui.data.done(d);">
|
||||||
|
<table class="layui-table layui-form" lay-filter="LAY-app-CoreCmsUserTocash-detailsForm" id="LAY-app-CoreCmsUserTocash-detailsForm">
|
||||||
|
<colgroup>
|
||||||
|
<col width="100">
|
||||||
|
<col>
|
||||||
|
</colgroup>
|
||||||
|
<tbody>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<label for="id">id</label>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ d.params.data.model.id || '' }}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<label for="userId">用户ID</label>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ d.params.data.model.userId || '' }}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<label for="money">提现金额</label>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ d.params.data.model.money || '' }}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<label for="bankName">银行名称</label>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ d.params.data.model.bankName || '' }}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<label for="bankCode">银行缩写</label>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ d.params.data.model.bankCode || '' }}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<label for="bankAreaId">账号地区ID</label>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ d.params.data.model.bankAreaId || '' }}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<label for="accountBank">开户行</label>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ d.params.data.model.accountBank || '' }}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<label for="accountName">账户名</label>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ d.params.data.model.accountName || '' }}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<label for="cardNumber">卡号</label>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ d.params.data.model.cardNumber || '' }}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<label for="withdrawals">提现服务费</label>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ d.params.data.model.withdrawals || '' }}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<label for="status">提现状态</label>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{# layui.each(indexData.userTocashStatus, function(index, item){ }}
|
||||||
|
{{# if (d.params.data.model.status===item.value) {}}
|
||||||
|
{{ item.title }}
|
||||||
|
{{# }}}
|
||||||
|
{{# }); }}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<label for="createTime">创建时间</label>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ d.params.data.model.createTime || '' }}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<label for="updateTime">更新时间</label>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ d.params.data.model.updateTime || '' }}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<label for="type">提现方式</label>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{# layui.each(indexData.userTocashType, function(index, item){ }}
|
||||||
|
{{# if (d.params.data.model.type===item.value) {}}
|
||||||
|
{{ item.title }}
|
||||||
|
{{# }}}
|
||||||
|
{{# }); }}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<label for="message">反馈结果</label>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ d.params.data.model.message || '' }}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</script>
|
||||||
|
<script>
|
||||||
|
var debug = layui.setter.debug;
|
||||||
|
layui.data.done = function (d) {
|
||||||
|
//开启调试情况下获取接口赋值数据
|
||||||
|
if (debug) { console.log(d.params.data); }
|
||||||
|
|
||||||
|
layui.use(['admin', 'form', 'coreHelper'], function () {
|
||||||
|
var $ = layui.$
|
||||||
|
, setter = layui.setter
|
||||||
|
, admin = layui.admin
|
||||||
|
, coreHelper = layui.coreHelper
|
||||||
|
, form = layui.form;
|
||||||
|
form.render(null, 'LAY-app-CoreCmsUserTocash-detailsForm');
|
||||||
|
});
|
||||||
|
};
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,74 @@
|
|||||||
|
<script type="text/html" template lay-done="layui.data.sendParams(d);">
|
||||||
|
<div class="layui-form coreshop-form layui-form-pane" lay-filter="LAY-app-CoreCmsUserTocash-editForm" id="LAY-app-CoreCmsUserTocash-editForm">
|
||||||
|
<input type="hidden" name="id" value="{{d.params.data.model.id }}" />
|
||||||
|
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label for="type" class="layui-form-label layui-form-required">提现方式</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<select name="type" lay-verify="required|number" lay-reqText="请选择提现方式" lay-filter="selectType">
|
||||||
|
<option value="">请选择提现方式</option>
|
||||||
|
{{# layui.each(indexData.userTocashType, function(index, item){ }}
|
||||||
|
<option value="{{ item.value }}">{{ item.title }}</option>
|
||||||
|
{{# }); }}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="layui-form-item" id="selectStatusBox">
|
||||||
|
<label for="type" class="layui-form-label layui-form-required">审核状态</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<select name="status" lay-verify="required|number" lay-reqText="请选择审核状态">
|
||||||
|
{{# layui.each(indexData.userTocashStatus, function(index, item){ }}
|
||||||
|
<option value="{{ item.value }}" {{item.value===d.params.data.model.status?'selected="selected"':''}}>{{ item.title }}</option>
|
||||||
|
{{# }); }}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<div class="layui-form-mid">
|
||||||
|
注:<br />
|
||||||
|
1、微信提现需微信支付商户开通了企业付款到零钱功能。<br />
|
||||||
|
2、只有【提现方式】为【银行卡】,才可主动设置成功失败。<br />
|
||||||
|
3、微信提现方式下,将依据请求微信api接口返回信息,进行状态处理。<br />
|
||||||
|
4、【微信提现付款到零钱】【微信提现付款到银行卡】再有异常的情况下,都可继续进行新的处理,可能会存在网络,微信支付商户余额,用户填写的银行卡信息错误等。<br />
|
||||||
|
5、【微信提现付款到银行卡】需要配置【RsaPublicKey】,请自行添加,不然会报异常。
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="layui-form-item text-right core-hidden">
|
||||||
|
<input type="button" class="layui-btn" lay-submit lay-filter="LAY-app-CoreCmsUserTocash-editForm-submit" id="LAY-app-CoreCmsUserTocash-editForm-submit" value="确认提现">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</script>
|
||||||
|
<script>
|
||||||
|
var debug = layui.setter.debug;
|
||||||
|
layui.data.sendParams = function (d) {
|
||||||
|
//开启调试情况下获取接口赋值数据
|
||||||
|
if (debug) { console.log(d.params.data); }
|
||||||
|
layui.use(['admin', 'form', 'laydate', 'upload', 'coreHelper', 'cropperImg'],
|
||||||
|
function () {
|
||||||
|
var $ = layui.$
|
||||||
|
, form = layui.form
|
||||||
|
, admin = layui.admin
|
||||||
|
, laydate = layui.laydate
|
||||||
|
, upload = layui.upload
|
||||||
|
, cropperImg = layui.cropperImg
|
||||||
|
, coreHelper = layui.coreHelper;
|
||||||
|
|
||||||
|
$('#selectStatusBox').hide();
|
||||||
|
|
||||||
|
form.on('select(selectType)', function (data) {
|
||||||
|
console.log(data.value); //复选框value值,也可以通过data.elem.value得到
|
||||||
|
if (data.value === '0') {
|
||||||
|
$('#selectStatusBox').show();
|
||||||
|
} else {
|
||||||
|
$('#selectStatusBox').hide();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//重载form
|
||||||
|
form.render(null, 'LAY-app-CoreCmsUserTocash-editForm');
|
||||||
|
})
|
||||||
|
};
|
||||||
|
</script>
|
||||||
@@ -31,9 +31,19 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="layui-inline">
|
<div class="layui-inline">
|
||||||
<div class="layui-input-inline">
|
<div class="layui-input-inline">
|
||||||
<select name="status" id="status" lay-filter="conditionCode">
|
<select name="status">
|
||||||
<option value="">请选择提现状态</option>
|
<option value="">请选择提现状态</option>
|
||||||
{{# layui.each(indexData.userTocashTypes, function(index, item){ }}
|
{{# layui.each(indexData.userTocashStatus, function(index, item){ }}
|
||||||
|
<option value="{{ item.value }}">{{ item.title }}</option>
|
||||||
|
{{# }); }}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="layui-inline">
|
||||||
|
<div class="layui-input-inline">
|
||||||
|
<select name="type">
|
||||||
|
<option value="">请选择提现方式</option>
|
||||||
|
{{# layui.each(indexData.userTocashType, function(index, item){ }}
|
||||||
<option value="{{ item.value }}">{{ item.title }}</option>
|
<option value="{{ item.value }}">{{ item.title }}</option>
|
||||||
{{# }); }}
|
{{# }); }}
|
||||||
</select>
|
</select>
|
||||||
@@ -58,6 +68,16 @@
|
|||||||
</div>
|
</div>
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
<script type="text/html" id="LAY-app-CoreCmsUserTocash-tableBox-bar">
|
||||||
|
<a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">查看</a>
|
||||||
|
{{# if(d.status === 1 || d.status === 4) { }}
|
||||||
|
<a class="layui-btn layui-btn-xs" lay-event="getTocash">处理</a>
|
||||||
|
{{# } }}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
var indexData;
|
var indexData;
|
||||||
var debug = layui.setter.debug;
|
var debug = layui.setter.debug;
|
||||||
@@ -78,7 +98,7 @@
|
|||||||
, util = layui.util
|
, util = layui.util
|
||||||
, view = layui.view;
|
, view = layui.view;
|
||||||
|
|
||||||
|
|
||||||
//重载form
|
//重载form
|
||||||
form.render();
|
form.render();
|
||||||
var searchwhere;
|
var searchwhere;
|
||||||
@@ -109,20 +129,20 @@
|
|||||||
{ type: "checkbox", fixed: "left" },
|
{ type: "checkbox", fixed: "left" },
|
||||||
{ field: 'id', title: 'ID号', width: 60, sort: false },
|
{ field: 'id', title: 'ID号', width: 60, sort: false },
|
||||||
{
|
{
|
||||||
field: 'userNickName', title: '用户', sort: false, width: 105, templet: function (d) {
|
field: 'userNickName', title: '用户', sort: false, width: 200, templet: function (d) {
|
||||||
return d.userNickName + '(' + d.userId + ')';
|
return d.userNickName + '(' + d.userId + ')';
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
//{
|
||||||
field: 'operating', title: '操作', width: 100, align: 'center', templet: function (data) {
|
// field: 'operating', title: '操作', width: 100, align: 'center', templet: function (data) {
|
||||||
var html = '';
|
// var html = '';
|
||||||
if (data.status == 1) {
|
// if (data.status == 1) {
|
||||||
html += '<a class="layui-btn layui-btn-xs option-yes" data-type="2" data-id="' + data.id + '">通过</a>';
|
// html += '<a class="layui-btn layui-btn-xs option-yes" data-type="2" data-id="' + data.id + '">通过</a>';
|
||||||
html += '<a class="layui-btn layui-btn-danger layui-btn-xs option-no" data-type="3" data-id="' + data.id + '" >驳回</a>';
|
// html += '<a class="layui-btn layui-btn-danger layui-btn-xs option-no" data-type="3" data-id="' + data.id + '" >驳回</a>';
|
||||||
}
|
// }
|
||||||
return html;
|
// return html;
|
||||||
}
|
// }
|
||||||
},
|
//},
|
||||||
{ field: 'money', title: '提现金额', sort: false, width: 80, templet: function (data) { return '¥' + data.money } },
|
{ field: 'money', title: '提现金额', sort: false, width: 80, templet: function (data) { return '¥' + data.money } },
|
||||||
{ field: 'bankName', title: '银行名称', sort: false, width: 105 },
|
{ field: 'bankName', title: '银行名称', sort: false, width: 105 },
|
||||||
{ field: 'bankCode', title: '银行缩写', sort: false, width: 65 },
|
{ field: 'bankCode', title: '银行缩写', sort: false, width: 65 },
|
||||||
@@ -133,9 +153,9 @@
|
|||||||
{ field: 'withdrawals', title: '提现服务费', sort: false, width: 85 },
|
{ field: 'withdrawals', title: '提现服务费', sort: false, width: 85 },
|
||||||
{
|
{
|
||||||
field: 'status', title: '提现状态', sort: false, width: 65, templet: function (data) {
|
field: 'status', title: '提现状态', sort: false, width: 65, templet: function (data) {
|
||||||
for (var i = 0; i < d.data.userTocashTypes.length; i++) {
|
for (var i = 0; i < d.data.userTocashStatus.length; i++) {
|
||||||
if (data.status == d.data.userTocashTypes[i].value) {
|
if (data.status == d.data.userTocashStatus[i].value) {
|
||||||
return d.data.userTocashTypes[i].title;
|
return d.data.userTocashStatus[i].title;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return "";
|
return "";
|
||||||
@@ -143,6 +163,8 @@
|
|||||||
},
|
},
|
||||||
{ field: 'createTime', title: '创建时间', width: 130, sort: false },
|
{ field: 'createTime', title: '创建时间', width: 130, sort: false },
|
||||||
{ field: 'updateTime', title: '更新时间', width: 130, sort: false },
|
{ field: 'updateTime', title: '更新时间', width: 130, sort: false },
|
||||||
|
{ width: 120, align: 'center', title: '操作', fixed: 'right', toolbar: '#LAY-app-CoreCmsUserTocash-tableBox-bar' },
|
||||||
|
{ field: 'message', title: '反馈信息', width: 130, sort: false },
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
@@ -173,8 +195,57 @@
|
|||||||
function (obj) {
|
function (obj) {
|
||||||
if (obj.event === 'detail') {
|
if (obj.event === 'detail') {
|
||||||
doDetails(obj);
|
doDetails(obj);
|
||||||
|
} else if (obj.event === 'getTocash') {
|
||||||
|
getTocash(obj)
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
//执行提现操作
|
||||||
|
function getTocash(obj) {
|
||||||
|
coreHelper.Post("Api/CoreCmsUserTocash/GetTocash", { id: obj.data.id }, function (e) {
|
||||||
|
if (e.code === 0) {
|
||||||
|
admin.popup({
|
||||||
|
shadeClose: false,
|
||||||
|
title: '提现操作',
|
||||||
|
area: ['400px', '400px'],
|
||||||
|
id: 'LAY-popup-CoreCmsUserTocash-edit',
|
||||||
|
success: function (layero, index) {
|
||||||
|
view(this.id).render('financial/usertocash/edit', { data: e.data }).done(function () {
|
||||||
|
//监听提交
|
||||||
|
form.on('submit(LAY-app-CoreCmsUserTocash-editForm-submit)',
|
||||||
|
function (data) {
|
||||||
|
var field = data.field; //获取提交的字段
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if (debug) { console.log(field); } //开启调试返回数据
|
||||||
|
//提交 Ajax 成功后,关闭当前弹层并重载表格
|
||||||
|
coreHelper.Post("Api/CoreCmsUserTocash/SetStatus", field, function (e) {
|
||||||
|
console.log(e)
|
||||||
|
if (e.code === 0) {
|
||||||
|
layui.table.reloadData('LAY-app-CoreCmsUserTocash-tableBox'); //重载表格
|
||||||
|
layer.close(index); //再执行关闭
|
||||||
|
layer.msg(e.msg);
|
||||||
|
} else {
|
||||||
|
layer.msg(e.msg);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
})
|
||||||
|
// 禁止弹窗出现滚动条
|
||||||
|
$(layero).children('.layui-layer-content').css('overflow', 'visible');
|
||||||
|
}
|
||||||
|
, btn: ['确定', '取消']
|
||||||
|
, yes: function (index, layero) {
|
||||||
|
layero.contents().find("#LAY-app-CoreCmsUserTocash-editForm-submit").click();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
layer.msg(e.msg);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
//执行预览操作
|
//执行预览操作
|
||||||
function doDetails(obj) {
|
function doDetails(obj) {
|
||||||
coreHelper.Post("Api/CoreCmsUserTocash/GetDetails", { id: obj.data.id }, function (e) {
|
coreHelper.Post("Api/CoreCmsUserTocash/GetDetails", { id: obj.data.id }, function (e) {
|
||||||
@@ -182,10 +253,10 @@
|
|||||||
admin.popup({
|
admin.popup({
|
||||||
shadeClose: false,
|
shadeClose: false,
|
||||||
title: '查看详情',
|
title: '查看详情',
|
||||||
area: ['600px', '400px'],
|
area: ['600px', '500px'],
|
||||||
id: 'LAY-popup-CoreCmsUserTocash-details',
|
id: 'LAY-popup-CoreCmsUserTocash-details',
|
||||||
success: function (layero, index) {
|
success: function (layero, index) {
|
||||||
view(this.id).render('base/CoreCmsUserTocash/details', { data: e.data }).done(function () {
|
view(this.id).render('financial/usertocash/details', { data: e.data }).done(function () {
|
||||||
form.render();
|
form.render();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
2
数据库/MySql/20220705/升级脚本.sql
Normal file
2
数据库/MySql/20220705/升级脚本.sql
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
ALTER TABLE CoreCmsUserTocash ADD COLUMN type int DEFAULT 0 NOT NULL COMMENT '提现方式' AFTER updateTime;
|
||||||
|
ALTER TABLE CoreCmsUserTocash ADD COLUMN message VARCHAR(1000) DEFAULT NULL COMMENT '反馈结果' AFTER type;
|
||||||
BIN
数据库/MySql/20220705/完整脚本/coreshop2022705带商品演示脚本aliyun导出.zip
Normal file
BIN
数据库/MySql/20220705/完整脚本/coreshop2022705带商品演示脚本aliyun导出.zip
Normal file
Binary file not shown.
BIN
数据库/MySql/20220705/完整脚本/coreshop2022705带商品演示脚本navicat导出.rar
Normal file
BIN
数据库/MySql/20220705/完整脚本/coreshop2022705带商品演示脚本navicat导出.rar
Normal file
Binary file not shown.
BIN
数据库/SqlServer/20220705/20220705完整数据库带演示商品.rar
Normal file
BIN
数据库/SqlServer/20220705/20220705完整数据库带演示商品.rar
Normal file
Binary file not shown.
6
数据库/SqlServer/20220705/升级脚本.sql
Normal file
6
数据库/SqlServer/20220705/升级脚本.sql
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
ALTER TABLE [dbo].[CoreCmsUserTocash] ADD [type] INT DEFAULT 0 NOT NULL;
|
||||||
|
ALTER TABLE [dbo].[CoreCmsUserTocash] ADD [message] NVARCHAR (1000) NULL;
|
||||||
|
|
||||||
|
GO
|
||||||
|
EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'提现方式', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'CoreCmsUserTocash', @level2type = N'COLUMN', @level2name = N'type';
|
||||||
|
EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'反馈结果', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'CoreCmsUserTocash', @level2type = N'COLUMN', @level2name = N'message';
|
||||||
@@ -1,3 +1,6 @@
|
|||||||
|
2022-07-05
|
||||||
|
【新增】表【CoreCmsUserTocash】用户提现表,增加【type】提现方式,【message】反馈信息两个字段
|
||||||
|
|
||||||
2022-07-04
|
2022-07-04
|
||||||
【新增】表【WeChatTransactionComponentOrder】微信交易订单,表增加【paymentId】字段。
|
【新增】表【WeChatTransactionComponentOrder】微信交易订单,表增加【paymentId】字段。
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user