Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
M
mall.oytour.com
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
黄奎
mall.oytour.com
Commits
844387bc
Commit
844387bc
authored
Jul 17, 2020
by
吴春
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
提交会员购买
parent
86fc535b
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
722 additions
and
16 deletions
+722
-16
Config.cs
Mall.Common/Config.cs
+12
-0
RB_Distributor_FXGradeCustom.cs
Mall.Model/Entity/User/RB_Distributor_FXGradeCustom.cs
+103
-0
RB_Vip_Buy.cs
Mall.Model/Entity/User/RB_Vip_Buy.cs
+98
-0
RB_Distributor_FXGradeCustom_Extend.cs
....Model/Extend/User/RB_Distributor_FXGradeCustom_Extend.cs
+19
-0
RB_Vip_Buy_Extend.cs
Mall.Model/Extend/User/RB_Vip_Buy_Extend.cs
+18
-0
UserCommonModule.cs
Mall.Module.User/UserCommonModule.cs
+69
-13
RB_Distributor_FXGradeCustomRepository.cs
...Repository/User/RB_Distributor_FXGradeCustomRepository.cs
+78
-0
RB_Vip_BuyRepository.cs
Mall.Repository/User/RB_Vip_BuyRepository.cs
+74
-0
WeChatNotifyController.cs
...WebApi/Controllers/AppletWeChat/WeChatNotifyController.cs
+52
-0
WeChatPayController.cs
Mall.WebApi/Controllers/AppletWeChat/WeChatPayController.cs
+94
-3
UserVipController.cs
Mall.WebApi/Controllers/User/UserVipController.cs
+104
-0
appsettings.json
Mall.WebApi/appsettings.json
+1
-0
No files found.
Mall.Common/Config.cs
View file @
844387bc
...
...
@@ -362,6 +362,18 @@ namespace Mall.Common
return
new
ConfigurationBuilder
().
Add
(
new
JsonConfigurationSource
{
Path
=
"appsettings.json"
}).
Build
().
GetSection
(
"sTenpayMemberBuyNotify"
).
Value
;
}
}
/// <summary>
/// VIP购买会员微信购买支付成功接口处理地址
/// </summary>
public
static
string
sTenpayVipBuyNotify
{
get
{
return
new
ConfigurationBuilder
().
Add
(
new
JsonConfigurationSource
{
Path
=
"appsettings.json"
}).
Build
().
GetSection
(
"sTenpayVipBuyNotify"
).
Value
;
}
}
/// <summary>
/// 网络主管的id,用于新建供应商账户的时候的创建人
...
...
Mall.Model/Entity/User/RB_Distributor_FXGradeCustom.cs
0 → 100644
View file @
844387bc
using
Mall.Common.AOP
;
using
Mall.Common.Enum.User
;
using
System
;
using
System.Collections.Generic
;
using
System.Text
;
namespace
Mall.Model.Entity.User
{
/// <summary>
/// 粉象返佣等级自定义页面实体
/// </summary>
[
Serializable
]
[
DB
(
ConnectionName
=
"DefaultConnection"
)]
public
class
RB_Distributor_FXGradeCustom
{
/// <summary>
/// Id
/// </summary>
public
int
Id
{
get
;
set
;
}
/// <summary>
/// 背景图片
/// </summary>
public
string
BackImage
{
get
;
set
;
}
/// <summary>
/// vip图标
/// </summary>
public
string
VipICO
{
get
;
set
;
}
/// <summary>
/// 背景颜色
/// </summary>
public
string
BackColor
{
get
;
set
;
}
/// <summary>
/// 规则
/// </summary>
public
string
BottomRule
{
get
;
set
;
}
/// <summary>
/// 删除状态
/// </summary>
public
int
?
Status
{
get
;
set
;
}
/// <summary>
/// 商户号
/// </summary>
public
int
TenantId
{
get
;
set
;
}
/// <summary>
/// 小程序id
/// </summary>
public
int
MallBaseId
{
get
;
set
;
}
/// <summary>
/// CreateDate
/// </summary>
public
DateTime
?
CreateDate
{
get
;
set
;
}
/// <summary>
/// UpdateDate
/// </summary>
public
DateTime
?
UpdateDate
{
get
;
set
;
}
}
}
Mall.Model/Entity/User/RB_Vip_Buy.cs
0 → 100644
View file @
844387bc
using
Mall.Common.AOP
;
using
System
;
using
System.Collections.Generic
;
using
System.Text
;
namespace
Mall.Model.Entity.User
{
/// <summary>
/// Vip购买表实体
/// </summary>
[
Serializable
]
[
DB
(
ConnectionName
=
"DefaultConnection"
)]
public
class
RB_Vip_Buy
{
/// <summary>
/// 编号
/// </summary>
public
int
Id
{
get
;
set
;
}
/// <summary>
/// 单号
/// </summary>
public
string
OrderNo
{
get
;
set
;
}
/// <summary>
/// 商户单号
/// </summary>
public
string
MerchantsNo
{
get
;
set
;
}
/// <summary>
/// 用户id
/// </summary>
public
int
UserId
{
get
;
set
;
}
/// <summary>
/// 购买等级id
/// </summary>
public
int
GradeId
{
get
;
set
;
}
/// <summary>
/// 等级名称
/// </summary>
public
string
GradeName
{
get
;
set
;
}
/// <summary>
/// 支付金额
/// </summary>
public
decimal
Money
{
get
;
set
;
}
/// <summary>
/// 支付状态 0-未支付,1-已支付
/// </summary>
public
int
PayState
{
get
;
set
;
}
/// <summary>
/// 支付时间
/// </summary>
public
DateTime
?
PayTime
{
get
;
set
;
}
/// <summary>
/// 支付类型 枚举 1微信 2支付宝 3银行卡
/// </summary>
public
int
PayWay
{
get
;
set
;
}
/// <summary>
/// 到期时间(同步分销商vip到期时间)
/// </summary>
public
DateTime
?
ExpiryDate
{
get
;
set
;
}
/// <summary>
/// 购买备注
/// </summary>
public
string
Remark
{
get
;
set
;
}
/// <summary>
/// 删除状态
/// </summary>
public
int
Status
{
get
;
set
;
}
/// <summary>
/// 商户号
/// </summary>
public
int
TenantId
{
get
;
set
;
}
/// <summary>
/// 小程序id
/// </summary>
public
int
MallBaseId
{
get
;
set
;
}
/// <summary>
/// 创建时间
/// </summary>
public
DateTime
CreateDate
{
get
;
set
;
}
}
}
Mall.Model/Extend/User/RB_Distributor_FXGradeCustom_Extend.cs
0 → 100644
View file @
844387bc
using
Mall.Common.AOP
;
using
Mall.Model.Entity.User
;
using
System
;
using
System.Collections.Generic
;
using
System.Text
;
namespace
Mall.Model.Extend.User
{
/// <summary>
/// 粉象返佣等级自定义页面扩展体
/// </summary>
[
Serializable
]
[
DB
(
ConnectionName
=
"DefaultConnection"
)]
public
class
RB_Distributor_FXGradeCustom_Extend
:
RB_Distributor_FXGradeCustom
{
}
}
Mall.Model/Extend/User/RB_Vip_Buy_Extend.cs
0 → 100644
View file @
844387bc
using
Mall.Common.AOP
;
using
Mall.Model.Entity.User
;
using
System
;
using
System.Collections.Generic
;
using
System.Text
;
namespace
Mall.Model.Extend.User
{
/// <summary>
/// Vip购买扩展表
/// </summary>
[
Serializable
]
[
DB
(
ConnectionName
=
"DefaultConnection"
)]
public
class
RB_Vip_Buy_Extend
:
RB_Vip_Buy
{
}
}
Mall.Module.User/UserCommonModule.cs
View file @
844387bc
...
...
@@ -73,7 +73,10 @@ namespace Mall.Module.User
private
readonly
MiniProgramMsgModule
appletWeChatModule
=
new
MiniProgramMsgModule
();
/// <summary>
/// vip购买仓储层
/// </summary>
private
readonly
RB_Vip_BuyRepository
vipBuyRepository
=
new
RB_Vip_BuyRepository
();
/// <summary>
/// 初始化分销基础配置
/// </summary>
...
...
@@ -362,7 +365,7 @@ namespace Mall.Module.User
goodsName
=
goodsName
.
Substring
(
0
,
10
);
}
}
appletWeChatModule
.
SendOrderSucceedMsg
(
oldOrder
.
TenantId
,
oldOrder
.
MallBaseId
,
umodel
.
OpenId
,
oldOrder
.
OrderNo
,
oldOrder
.
CreateDate
.
Value
.
ToString
(
"yyyy-MM-dd HH:mm:ss"
),
(
oldOrder
.
Income
??
0
).
ToString
(),
goodsName
);
appletWeChatModule
.
SendOrderSucceedMsg
(
oldOrder
.
TenantId
,
oldOrder
.
MallBaseId
,
umodel
.
OpenId
,
oldOrder
.
OrderNo
,
oldOrder
.
CreateDate
.
Value
.
ToString
(
"yyyy-MM-dd HH:mm:ss"
),
(
oldOrder
.
Income
??
0
).
ToString
(),
goodsName
);
}
return
flag
;
}
...
...
@@ -373,15 +376,47 @@ namespace Mall.Module.User
/// <param name="OrderId">vip购买单号id</param>
/// <param name="BuyUserId">购买人</param>
/// <returns></returns>
public
bool
InsertVipBuyCommission
(
int
OrderId
,
int
BuyUserId
,
int
IsFristBuy
,
int
TenantId
,
int
MallBaseId
)
{
//public bool InsertVipBuyCommission(int OrderId, int BuyUserId,int IsFristBuy,int TenantId,int MallBaseId)
public
bool
InsertVipBuyCommission
(
int
BuyUserId
,
int
OrderId
,
string
Out_Trade_No
,
string
Transaction_Id
,
Common
.
Enum
.
Goods
.
OrderPayTypeEnum
PayWay
,
decimal
Money
,
DateTime
Time_End
)
{
bool
flag
=
false
;
try
{
{
int
IsFristBuy
=
0
;
int
TenantId
=
0
;
int
MallBaseId
=
0
;
var
uModel
=
member_UserRepository
.
GetEntity
(
BuyUserId
);
if
(
uModel
==
null
)
{
return
false
;
}
//判断订单状态是否是待支付
var
buyList
=
vipBuyRepository
.
GetVipBuyList
(
new
RB_Vip_Buy_Extend
{
UserId
=
BuyUserId
});
if
(
buyList
.
Where
(
x
=>
x
.
PayState
==
1
).
Count
()
==
0
)
{
IsFristBuy
=
1
;
}
var
model
=
buyList
.
Where
(
x
=>
x
.
Id
==
OrderId
).
FirstOrDefault
();
if
(
model
==
null
)
{
return
false
;
}
if
(
model
.
PayState
!=
0
)
{
return
false
;
}
if
(
model
.
Money
!=
Money
)
{
return
false
;
}
TenantId
=
model
.
TenantId
;
MallBaseId
=
model
.
MallBaseId
;
//获取用户当前分销商
var
basicModel
=
distributor_BasicsRepository
.
GetList
(
new
RB_Distributor_Basics_Extend
()
{
TenantId
=
TenantId
,
MallBaseId
=
MallBaseId
}).
FirstOrDefault
();
if
(
basicModel
.
IsEnableFXGrade
==
1
)
{
var
uModel
=
member_UserRepository
.
GetEntity
(
BuyUserId
);
if
(
uModel
==
null
)
{
return
false
;
}
//粉象等级列表
var
FXList
=
distributor_FXGradeRepository
.
GetList
(
new
RB_Distributor_FXGrade_Extend
()
{
TenantId
=
TenantId
,
MallBaseId
=
MallBaseId
});
...
...
@@ -392,18 +427,22 @@ namespace Mall.Module.User
//vip购买返佣金额列表
var
FXCList
=
distributor_FXCommissionRepository
.
GetFXCommissionList
(
new
RB_Distributor_FXCommission_Extend
()
{
TenantId
=
TenantId
,
MallBaseId
=
MallBaseId
});
var
disModel
=
distributor_InfoRepository
.
GetList
(
new
RB_Distributor_Info_Extend
()
{
TenantId
=
TenantId
,
MallBaseId
=
MallBaseId
,
UserId
=
BuyUserId
,
AuditStatus
=
Common
.
Enum
.
User
.
DistributorAuditStatusEnum
.
Audited
}).
FirstOrDefault
();
if
(
disModel
!=
null
)
{
if
(
disModel
.
FXGradeId
!=
VipModel
.
Id
&&
disModel
.
FXGradeId
!=
PTModel
.
Id
)
{
if
(
disModel
!=
null
)
{
if
(
disModel
.
FXGradeId
!=
VipModel
.
Id
&&
disModel
.
FXGradeId
!=
PTModel
.
Id
)
{
return
false
;
}
//求其上级
var
pmodel
=
member_UserRepository
.
GetEntity
(
uModel
.
SuperiorId
);
if
(
pmodel
==
null
)
{
return
false
;
}
var
dispModel
=
distributor_InfoRepository
.
GetList
(
new
RB_Distributor_Info_Extend
()
{
TenantId
=
TenantId
,
MallBaseId
=
MallBaseId
,
UserId
=
pmodel
.
Id
,
AuditStatus
=
Common
.
Enum
.
User
.
DistributorAuditStatusEnum
.
Audited
}).
FirstOrDefault
();
if
(
dispModel
!=
null
)
{
if
(
dispModel
!=
null
)
{
var
pfxModel
=
FXList
.
Where
(
x
=>
x
.
Id
==
dispModel
.
FXGradeId
).
FirstOrDefault
();
if
(
pfxModel
==
null
)
{
return
false
;
}
if
(
pfxModel
.
Grade
<
VipModel
.
Grade
)
{
if
(
pfxModel
.
Grade
<
VipModel
.
Grade
)
{
return
false
;
//其上级不是vip 直接后面的全部不提
}
//查询出当前用户的所有上级
...
...
@@ -429,7 +468,7 @@ namespace Mall.Module.User
UserId
=
0
;
break
;
}
var
d2Model
=
dlist
.
Where
(
x
=>
x
.
UserId
==
numodel
.
Id
).
FirstOrDefault
();
if
(
d2Model
==
null
)
{
...
...
@@ -563,7 +602,7 @@ namespace Mall.Module.User
UserId
=
0
;
break
;
}
if
(
FXG2Model
.
Grade
<
MaxGrade
)
{
//后面的全部不返佣
...
...
@@ -586,16 +625,33 @@ namespace Mall.Module.User
try
{
var
trans
=
vipBuy_CommissionRepository
.
DbTransaction
;
if
(
gocList
.
Any
())
{
string
FUserIds
=
string
.
Join
(
","
,
gocList
.
Select
(
x
=>
x
.
UserId
).
Distinct
());
//最后再次查询分销商 便于返佣金
var
fdlist
=
distributor_InfoRepository
.
GetListForSingle
(
new
RB_Distributor_Info_Extend
()
{
UserIds
=
FUserIds
,
AuditStatus
=
Common
.
Enum
.
User
.
DistributorAuditStatusEnum
.
Audited
,
TenantId
=
TenantId
,
MallBaseId
=
MallBaseId
});
//2020-07-17 Add By:W
Dictionary
<
string
,
object
>
keyValuesVip
=
new
Dictionary
<
string
,
object
>()
{
{
nameof
(
RB_Vip_Buy
.
PayTime
),
Time_End
},
{
nameof
(
RB_Vip_Buy
.
PayState
),
1
},
{
nameof
(
RB_Vip_Buy
.
MerchantsNo
),
Out_Trade_No
}
};
List
<
WhereHelper
>
wheresVip
=
new
List
<
WhereHelper
>()
{
new
WhereHelper
{
FiledName
=
nameof
(
RB_Vip_Buy
.
Id
),
FiledValue
=
OrderId
,
OperatorEnum
=
OperatorEnum
.
Equal
}
};
flag
=
vipBuyRepository
.
Update
(
keyValuesVip
,
wheresVip
,
trans
);
//更新会员购买记录 2020-07-17 Add By: W End
foreach
(
var
qitem
in
gocList
)
{
if
(
qitem
.
Commission
>
0
)
{
bool
flag
=
vipBuy_CommissionRepository
.
Insert
(
qitem
,
trans
)
>
0
;
flag
=
vipBuy_CommissionRepository
.
Insert
(
qitem
,
trans
)
>
0
;
if
(
flag
)
{
//分销商增加相应的佣金
...
...
Mall.Repository/User/RB_Distributor_FXGradeCustomRepository.cs
0 → 100644
View file @
844387bc
using
Mall.Model.Entity.User
;
using
Mall.Model.Extend.User
;
using
System
;
using
System.Collections.Generic
;
using
System.Linq
;
using
System.Text
;
namespace
Mall.Repository.User
{
/// <summary>
/// vip购买自定义页面页面仓储层
/// </summary>
public
class
RB_Distributor_FXGradeCustomRepository
:
RepositoryBase
<
RB_Distributor_FXGradeCustom
>
{
/// <summary>
/// 表名称
/// </summary>
public
string
TableName
{
get
{
return
nameof
(
RB_Distributor_FXGradeCustom
);
}
}
/// <summary>
/// 自定义页面信息列表
/// </summary>
/// <param name="pageIndex">页码</param>
/// <param name="pageSize">每页显示条数</param>
/// <param name="rowCount">总条数</param>
/// <param name="query">查询条件</param>
/// <returns></returns>
public
List
<
RB_Distributor_FXGradeCustom_Extend
>
GetGradeCustomPageList
(
int
pageIndex
,
int
pageSize
,
out
long
rowCount
,
RB_Distributor_FXGradeCustom_Extend
query
)
{
StringBuilder
builder
=
new
StringBuilder
();
builder
.
Append
(
$" SELECT * FROM
{
TableName
}
WHERE
{
nameof
(
RB_Distributor_FXGradeCustom_Extend
.
Status
)}
=0"
);
if
(
query
!=
null
)
{
if
(
query
.
TenantId
>
0
)
{
builder
.
Append
(
$" AND
{
nameof
(
RB_Distributor_FXGradeCustom_Extend
.
TenantId
)}
=
{
query
.
TenantId
}
"
);
}
if
(
query
.
TenantId
>
0
)
{
builder
.
Append
(
$" AND
{
nameof
(
RB_Distributor_FXGradeCustom_Extend
.
MallBaseId
)}
=
{
query
.
MallBaseId
}
"
);
}
if
(
query
.
Id
>
0
)
{
builder
.
Append
(
$" AND
{
nameof
(
RB_Distributor_FXGradeCustom_Extend
.
Id
)}
=
{
query
.
Id
}
"
);
}
}
return
GetPage
<
RB_Distributor_FXGradeCustom_Extend
>(
pageIndex
,
pageSize
,
out
rowCount
,
builder
.
ToString
()).
ToList
();
}
/// <summary>
/// 自定义页面信息列表
/// </summary>
/// <param name="query">查询条件</param>
/// <returns></returns>
public
List
<
RB_Distributor_FXGradeCustom_Extend
>
GetGradeCustomList
(
RB_Distributor_FXGradeCustom_Extend
query
)
{
StringBuilder
builder
=
new
StringBuilder
();
builder
.
Append
(
$" SELECT * FROM
{
TableName
}
WHERE
{
nameof
(
RB_Distributor_FXGradeCustom_Extend
.
Status
)}
=0 "
);
if
(
query
!=
null
)
{
if
(
query
.
Id
>
0
)
{
builder
.
Append
(
$" AND
{
nameof
(
RB_Distributor_FXGradeCustom_Extend
.
Id
)}
=
{
query
.
Id
}
"
);
}
if
(
query
.
TenantId
>
0
)
{
builder
.
Append
(
$" AND
{
nameof
(
RB_Distributor_FXGradeCustom_Extend
.
TenantId
)}
=
{
query
.
TenantId
}
"
);
}
if
(
query
.
TenantId
>
0
)
{
builder
.
Append
(
$" AND
{
nameof
(
RB_Distributor_FXGradeCustom_Extend
.
MallBaseId
)}
=
{
query
.
MallBaseId
}
"
);
}
}
return
Get
<
RB_Distributor_FXGradeCustom_Extend
>(
builder
.
ToString
()).
ToList
();
}
}
}
Mall.Repository/User/RB_Vip_BuyRepository.cs
0 → 100644
View file @
844387bc
using
Mall.Model.Entity.User
;
using
Mall.Model.Extend.User
;
using
System
;
using
System.Collections.Generic
;
using
System.Linq
;
using
System.Text
;
namespace
Mall.Repository.User
{
public
class
RB_Vip_BuyRepository
:
RepositoryBase
<
RB_Vip_Buy
>
{
/// <summary>
/// 表名称
/// </summary>
public
string
TableName
{
get
{
return
nameof
(
RB_Vip_Buy
);
}
}
/// <summary>
/// Vip购买信息列表
/// </summary>
/// <param name="pageIndex">页码</param>
/// <param name="pageSize">每页显示条数</param>
/// <param name="rowCount">总条数</param>
/// <param name="query">查询条件</param>
/// <returns></returns>
public
List
<
RB_Vip_Buy_Extend
>
GetVipBuyPageList
(
int
pageIndex
,
int
pageSize
,
out
long
rowCount
,
RB_Vip_Buy_Extend
query
)
{
StringBuilder
builder
=
new
StringBuilder
();
builder
.
Append
(
$" SELECT * FROM
{
TableName
}
WHERE
{
nameof
(
RB_Vip_Buy_Extend
.
Status
)}
=0"
);
if
(
query
!=
null
)
{
if
(
query
.
TenantId
>
0
)
{
builder
.
Append
(
$" AND
{
nameof
(
RB_Vip_Buy_Extend
.
TenantId
)}
=
{
query
.
TenantId
}
"
);
}
if
(
query
.
TenantId
>
0
)
{
builder
.
Append
(
$" AND
{
nameof
(
RB_Vip_Buy_Extend
.
MallBaseId
)}
=
{
query
.
MallBaseId
}
"
);
}
if
(
query
.
Id
>
0
)
{
builder
.
Append
(
$" AND
{
nameof
(
RB_Vip_Buy_Extend
.
Id
)}
=
{
query
.
Id
}
"
);
}
}
return
GetPage
<
RB_Vip_Buy_Extend
>(
pageIndex
,
pageSize
,
out
rowCount
,
builder
.
ToString
()).
ToList
();
}
/// <summary>
/// Vip购买信息列表
/// </summary>
/// <param name="query">查询条件</param>
/// <returns></returns>
public
List
<
RB_Vip_Buy_Extend
>
GetVipBuyList
(
RB_Vip_Buy_Extend
query
)
{
StringBuilder
builder
=
new
StringBuilder
();
builder
.
Append
(
$" SELECT * FROM
{
TableName
}
WHERE
{
nameof
(
RB_Vip_Buy_Extend
.
Status
)}
=0 "
);
if
(
query
!=
null
)
{
if
(
query
.
Id
>
0
)
{
builder
.
Append
(
$" AND
{
nameof
(
RB_Vip_Buy_Extend
.
Id
)}
=
{
query
.
Id
}
"
);
}
if
(
query
.
TenantId
>
0
)
{
builder
.
Append
(
$" AND
{
nameof
(
RB_Vip_Buy_Extend
.
TenantId
)}
=
{
query
.
TenantId
}
"
);
}
if
(
query
.
TenantId
>
0
)
{
builder
.
Append
(
$" AND
{
nameof
(
RB_Vip_Buy_Extend
.
MallBaseId
)}
=
{
query
.
MallBaseId
}
"
);
}
}
return
Get
<
RB_Vip_Buy_Extend
>(
builder
.
ToString
()).
ToList
();
}
}
}
Mall.WebApi/Controllers/AppletWeChat/WeChatNotifyController.cs
View file @
844387bc
...
...
@@ -146,6 +146,58 @@ namespace Mall.WebApi.Controllers.AppletWeChat
/// <summary>
/// 会员购买支付回调
/// </summary>
/// <returns></returns>
[
HttpGet
]
[
HttpPost
]
public
string
VipBuyNotify
()
{
var
req
=
new
RequestHandler
();
App_Code
.
PayUtil
PayUtil
=
new
App_Code
.
PayUtil
();
var
result
=
PayUtil
.
Notify
(
_accessor
);
if
(
result
.
IsSuccess
)
{
var
dic
=
((
Dictionary
<
string
,
string
>)
result
.
Data
);
//开始回写订单状态
lock
(
_lock
)
{
string
sOrderNo
=
dic
[
"sOrderNo"
];
//订单号 时间挫+OrderId
int
OrderId
=
Convert
.
ToInt32
(
sOrderNo
[
17.
.]);
decimal
dPaid
=
Convert
.
ToDecimal
(
dic
[
"dPrice"
])
/
100
;
string
sPayerOpenID
=
dic
[
"sPayerOpenID"
];
int
UserId
=
Convert
.
ToInt32
(
dic
[
"bIsRecharge"
]);
string
TransactionId
=
dic
[
"sTradeNo"
];
string
PayType
=
dic
[
"OrderPayType"
];
DateTime
PayDate
=
DateTime
.
ParseExact
(
dic
[
"PayDate"
],
"yyyyMMddHHmmss"
,
System
.
Globalization
.
CultureInfo
.
CurrentCulture
);
//转换时间
#
region
修改会员购买支付信息
userCommonModule
.
InsertVipBuyCommission
(
UserId
,
OrderId
,
sOrderNo
,
TransactionId
,
Common
.
Enum
.
Goods
.
OrderPayTypeEnum
.
WeChatPay
,
dPaid
,
PayDate
);
#
endregion
}
//告诉微信我们已经处理成功,不需要再调用我们的接口了
req
.
SetParameter
(
"return_code"
,
"SUCCESS"
);
req
.
SetParameter
(
"return_msg"
,
"OK"
);
var
reqXml
=
req
.
ParseXml
();
return
reqXml
;
// return ApiResult.Success("", reqXml);
}
else
{
req
.
SetParameter
(
"return_code"
,
"FAIL"
);
req
.
SetParameter
(
"return_msg"
,
"订单失败"
);
var
reqXmlFAIL
=
req
.
ParseXml
();
LogHelper
.
Write
(
null
,
"Notify返回信息:"
+
reqXmlFAIL
);
return
reqXmlFAIL
;
// return ApiResult.Failed("", reqXmlFAIL);
}
}
///// <summary>
///// 会员购买支付回调
///// </summary>
...
...
Mall.WebApi/Controllers/AppletWeChat/WeChatPayController.cs
View file @
844387bc
...
...
@@ -47,14 +47,14 @@ namespace Mall.WebApi.Controllers.AppletWeChat
private
Module
.
User
.
MiniProgramModule
programModule
=
new
Module
.
User
.
MiniProgramModule
();
private
readonly
UserModule
userModule
=
new
UserModule
();
private
readonly
RechargeModule
rechargeModule
=
new
RechargeModule
();
private
readonly
UserVipModule
userVipModule
=
new
UserVipModule
();
#
region
商品支付
/// <summary>
/// 微信支付
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[
HttpPost
]
[
HttpPost
]
public
ApiResult
GetPayInfo
()
{
var
request
=
RequestParm
;
...
...
@@ -286,6 +286,97 @@ namespace Mall.WebApi.Controllers.AppletWeChat
#
region
会员
vip
购买
/// <summary>
/// 微信支付
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public
ApiResult
GetVIPBuyPayInfo
()
{
var
request
=
RequestParm
;
var
userInfo
=
AppletUserInfo
;
if
(
userInfo
==
null
)
{
return
ApiResult
.
Failed
(
"请登录"
);
}
RB_Vip_Buy_Extend
demodel
=
JsonConvert
.
DeserializeObject
<
RB_Vip_Buy_Extend
>(
request
.
msg
.
ToString
());
string
sPayInfo
=
string
.
Empty
;
if
(
demodel
.
PayWay
==
0
)
{
return
ApiResult
.
Failed
(
"请选择支付方式"
);
}
//查询充值信息
if
(
demodel
.
GradeId
==
0
)
{
return
ApiResult
.
Failed
(
"请选择您需要购买的会员等级"
);
}
//查询用户的openId
var
userModel
=
userModule
.
GetMemberUserEntityModule
(
new
RB_Member_User_Extend
{
MallBaseId
=
userInfo
.
MallBaseId
,
TenantId
=
userInfo
.
TenantId
,
Id
=
userInfo
.
UserId
});
if
(
userModel
==
null
)
{
return
ApiResult
.
Failed
(
"用户不存在"
);
}
string
payGoodsName
=
"VIP会员购买"
;
var
rechargeRulesModel
=
userModule
.
GetFXDistributorGradeList
(
new
RB_Distributor_FXGrade_Extend
{
MallBaseId
=
userInfo
.
MallBaseId
,
TenantId
=
userInfo
.
TenantId
,
Id
=
demodel
.
GradeId
}).
FirstOrDefault
();
if
(
rechargeRulesModel
==
null
)
{
return
ApiResult
.
Failed
(
"您选择的VIP等级不存在"
);
}
if
(
userModel
.
MemberGrade
>=
rechargeRulesModel
.
Grade
)
{
return
ApiResult
.
Failed
(
"购买会员等级低于您当前会员等级"
);
}
if
(
rechargeRulesModel
.
IsCanBuy
==
1
)
{
if
(
rechargeRulesModel
.
BuyMoney
!=
demodel
.
Money
)
{
return
ApiResult
.
Failed
(
"VIP购买支付金额有误,请稍后重试"
);
}
demodel
.
GradeName
=
rechargeRulesModel
.
GradeName
;
}
else
{
return
ApiResult
.
Failed
(
"当前会员等级不能购买"
);
}
Random
R
=
new
Random
();
int
Rstr
=
R
.
Next
(
111
,
999
);
demodel
.
OrderNo
=
DateTime
.
Now
.
ToString
(
"yyyyMMddHHmmssfff"
)
+
Rstr
;
demodel
.
UserId
=
userInfo
.
UserId
;
demodel
.
MallBaseId
=
userInfo
.
MallBaseId
;
demodel
.
TenantId
=
userInfo
.
TenantId
;
demodel
.
PayState
=
0
;
demodel
.
Status
=
0
;
demodel
.
CreateDate
=
DateTime
.
Now
;
//新增充值记录
int
memberBuyId
=
userVipModule
.
AddVipBuy
(
demodel
);
if
(
memberBuyId
==
0
)
{
return
ApiResult
.
Failed
(
"购买VIP会员失败"
);
}
string
sOrderNo
=
(
System
.
DateTime
.
Now
.
ToString
(
"yyyyMMddHHmmssfff"
))
+
memberBuyId
;
//根据订单号获取微信支付配置信息
RB_MiniProgram_Extend
miniProgram
=
new
RB_MiniProgram_Extend
();
miniProgram
=
programModule
.
GetMiniProgramModule
(
new
RB_MiniProgram_Extend
{
MallBaseId
=
userInfo
.
MallBaseId
,
TenantId
=
userInfo
.
TenantId
});
App_Code
.
PayUtil
payUtil
=
new
App_Code
.
PayUtil
();
switch
((
int
)
demodel
.
PayWay
)
{
case
1
:
//微信支付
sPayInfo
=
App_Code
.
PayUtil
.
GetMinUnifiedOrder
(
sOrderNo
,
payGoodsName
,
Convert
.
ToDecimal
(
rechargeRulesModel
.
BuyMoney
),
userInfo
.
UserId
.
ToString
(),
userModel
.
OpenId
,
Config
.
sTenpayVipBuyNotify
,
miniProgram
,
_accessor
,
System
.
Net
.
Dns
.
GetHostEntry
(
System
.
Net
.
Dns
.
GetHostName
()).
AddressList
.
FirstOrDefault
(
address
=>
address
.
AddressFamily
==
System
.
Net
.
Sockets
.
AddressFamily
.
InterNetwork
)?.
ToString
());
break
;
default
:
break
;
}
return
ApiResult
.
Success
(
""
,
sPayInfo
);
}
#
endregion
#
region
测试接口
...
...
@@ -319,7 +410,7 @@ namespace Mall.WebApi.Controllers.AppletWeChat
RefundNumber
=
RefundOrderNo
};
string
sOrderNo
=
(
System
.
DateTime
.
Now
.
ToString
(
"yyyyMMddHHmmssfff"
))
+
"1001"
;
App_Code
.
PayUtil
.
GetMinUnifiedOrder
(
sOrderNo
,
"测试"
,
Convert
.
ToDecimal
(
0.05
),
"1"
,
""
,
Config
.
sTenpayNotify
,
miniProgram
,
_accessor
,
System
.
Net
.
Dns
.
GetHostEntry
(
System
.
Net
.
Dns
.
GetHostName
()).
AddressList
.
FirstOrDefault
(
address
=>
address
.
AddressFamily
==
System
.
Net
.
Sockets
.
AddressFamily
.
InterNetwork
)?.
ToString
());
App_Code
.
PayUtil
.
GetMinUnifiedOrder
(
sOrderNo
,
"测试"
,
Convert
.
ToDecimal
(
0.05
),
"1"
,
""
,
Config
.
sTenpayNotify
,
miniProgram
,
_accessor
,
System
.
Net
.
Dns
.
GetHostEntry
(
System
.
Net
.
Dns
.
GetHostName
()).
AddressList
.
FirstOrDefault
(
address
=>
address
.
AddressFamily
==
System
.
Net
.
Sockets
.
AddressFamily
.
InterNetwork
)?.
ToString
());
return
ApiResult
.
Success
(
""
);
}
...
...
Mall.WebApi/Controllers/User/UserVipController.cs
0 → 100644
View file @
844387bc
using
System
;
using
System.Collections.Generic
;
using
System.Linq
;
using
System.Threading.Tasks
;
using
Mall.Common.API
;
using
Mall.Model.Extend.User
;
using
Mall.Module.User
;
using
Mall.WebApi.Filter
;
using
Microsoft.AspNetCore.Cors
;
using
Microsoft.AspNetCore.Http
;
using
Microsoft.AspNetCore.Mvc
;
using
Newtonsoft.Json
;
namespace
Mall.WebApi.Controllers.User
{
[
Route
(
"api/[controller]/[action]"
)]
[
ApiExceptionFilter
]
[
ApiController
]
[
EnableCors
(
"AllowCors"
)]
public
class
UserVipController
:
BaseController
{
private
readonly
IHttpContextAccessor
_accessor
;
/// <summary>
/// 构造函数
/// </summary>
/// <param name="accessor"></param>
public
UserVipController
(
IHttpContextAccessor
accessor
)
{
_accessor
=
accessor
;
}
private
readonly
UserVipModule
userVipModule
=
new
UserVipModule
();
#
region
VIP
购买自定义页面设置
/// <summary>
/// 获取购买vip自定义页面设置
/// </summary>
/// <returns></returns>
[
HttpPost
]
public
ApiResult
GetFXGradeCustom
()
{
var
parms
=
RequestParm
;
RB_Distributor_FXGradeCustom_Extend
demodel
=
JsonConvert
.
DeserializeObject
<
RB_Distributor_FXGradeCustom_Extend
>(
parms
.
msg
.
ToString
());
demodel
.
TenantId
=
Convert
.
ToInt32
(
parms
.
uid
);
demodel
.
MallBaseId
=
parms
.
MallBaseId
;
var
model
=
userVipModule
.
GetGradeCustomList
(
demodel
).
FirstOrDefault
();
if
(
model
==
null
)
{
model
=
new
RB_Distributor_FXGradeCustom_Extend
();
}
return
ApiResult
.
Success
(
""
,
model
);
}
/// <summary>
/// 新增修改购买vip自定义页面设置
/// </summary>
/// <returns></returns>
[
HttpPost
]
public
ApiResult
SetFXGradeCustom
()
{
var
req
=
RequestParm
;
RB_Distributor_FXGradeCustom_Extend
demodel
=
JsonConvert
.
DeserializeObject
<
RB_Distributor_FXGradeCustom_Extend
>(
req
.
msg
.
ToString
());
if
(
string
.
IsNullOrWhiteSpace
(
demodel
.
BottomRule
))
{
return
ApiResult
.
Failed
(
"活动规则不能为空"
);
}
if
(
string
.
IsNullOrWhiteSpace
(
demodel
.
BackImage
))
{
return
ApiResult
.
Failed
(
"背景图片不能为空"
);
}
if
(
string
.
IsNullOrWhiteSpace
(
demodel
.
VipICO
))
{
return
ApiResult
.
Failed
(
"VIP图标不能为空"
);
}
if
(
string
.
IsNullOrWhiteSpace
(
demodel
.
BackColor
))
{
return
ApiResult
.
Failed
(
"背景颜色不能为空"
);
}
if
(
demodel
.
Id
==
0
)
{
demodel
.
TenantId
=
Convert
.
ToInt32
(
req
.
uid
);
demodel
.
MallBaseId
=
req
.
MallBaseId
;
demodel
.
CreateDate
=
System
.
DateTime
.
Now
;
}
demodel
.
Status
=
0
;
demodel
.
UpdateDate
=
System
.
DateTime
.
Now
;
bool
flag
=
userVipModule
.
AddOrUpdateFXGradeCustom
(
demodel
);
if
(
flag
)
{
return
ApiResult
.
Success
();
}
else
{
return
ApiResult
.
Failed
();
}
}
#
endregion
}
}
\ No newline at end of file
Mall.WebApi/appsettings.json
View file @
844387bc
...
...
@@ -35,6 +35,7 @@
"sTenpayNotify"
:
"http://mallapi.oytour.com/api/WeChatNotify/Notify"
,
//微信商品回调地址
"sTenpayRechargeNotify"
:
"http://mallapi.oytour.com/api/WeChatNotify/RechargeNotify"
,
//微信充值回调地址
"sTenpayMemberBuyNotify"
:
"http://mallapi.oytour.com/api/WeChatNotify/MemberBuyNotify"
,
//微信充值回调地址
"sTenpayVipBuyNotify"
:
"http://mallapi.oytour.com/api/WeChatNotify/VipBuyNotify"
,
//微信购买VIP回调地址
"NetworkDirector"
:
1756
,
//网络主管的id,用于新建供应商账户的时候的创建人
"RB_Branch_Id"
:
49
,
//所属公司id
"IncomeDirector"
:
1756
,
//财务收入创建人
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment