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
92a5c5a8
Commit
92a5c5a8
authored
Oct 29, 2020
by
黄奎
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'sdzq' of
http://gitlab.oytour.com/Kui2/mall.oytour.com
into HK
parents
4c56af02
29429cc1
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
1317 additions
and
14 deletions
+1317
-14
EncryptionHelper.cs
Mall.Common/Encrypt/EncryptionHelper.cs
+36
-0
RB_Reserve_Base.cs
Mall.Model/Entity/Reserve/RB_Reserve_Base.cs
+71
-0
RB_Reserve_ServiceTargetDate.cs
Mall.Model/Entity/Reserve/RB_Reserve_ServiceTargetDate.cs
+6
-0
RB_Member_User.cs
Mall.Model/Entity/User/RB_Member_User.cs
+5
-0
RB_Miniprogram_Template_Extend.cs
.../Extend/MarketingCenter/RB_Miniprogram_Template_Extend.cs
+284
-2
RB_Reserve_Base_Extend.cs
Mall.Model/Extend/Reserve/RB_Reserve_Base_Extend.cs
+65
-0
RB_Reserve_ServicePersonal_Extend.cs
...Model/Extend/Reserve/RB_Reserve_ServicePersonal_Extend.cs
+8
-1
RB_Reserve_ServiceTargetDate_Extend.cs
...del/Extend/Reserve/RB_Reserve_ServiceTargetDate_Extend.cs
+2
-0
MiniprogramTemplateModule.cs
Mall.Module.MarketingCenter/MiniprogramTemplateModule.cs
+33
-10
ReserveModule.cs
Mall.Module.Reserve/ReserveModule.cs
+176
-0
MemberUserModule.cs
Mall.Module.User/MemberUserModule.cs
+11
-0
RB_Reserve_BaseRepository.cs
Mall.Repository/Reserve/RB_Reserve_BaseRepository.cs
+35
-0
MallHelper.cs
Mall.WebApi/Controllers/Mall/MallHelper.cs
+344
-1
TemplateController.cs
....WebApi/Controllers/MarketingCenter/TemplateController.cs
+11
-0
ReserveController.cs
Mall.WebApi/Controllers/Reserve/ReserveController.cs
+144
-0
AppletLoginController.cs
Mall.WebApi/Controllers/User/AppletLoginController.cs
+74
-0
MemberUserController.cs
Mall.WebApi/Controllers/User/MemberUserController.cs
+12
-0
No files found.
Mall.Common/Encrypt/EncryptionHelper.cs
View file @
92a5c5a8
...
...
@@ -836,5 +836,41 @@ namespace Mall.Common
return
Encoding
.
UTF8
.
GetString
(
cipherbytes
);
}
#
endregion
/// <summary>
/// 解析手机号码
/// </summary>
/// <param name="encryptedDataStr"></param>
/// <param name="key"></param>
/// <param name="iv"></param>
/// <returns></returns>
public
static
string
AES_decrypt
(
string
encryptedDataStr
,
string
key
,
string
iv
)
{
RijndaelManaged
rijalg
=
new
RijndaelManaged
();
//-----------------
//设置 cipher 格式 AES-128-CBC
rijalg
.
KeySize
=
128
;
rijalg
.
Padding
=
PaddingMode
.
PKCS7
;
rijalg
.
Mode
=
CipherMode
.
CBC
;
rijalg
.
Key
=
Convert
.
FromBase64String
(
key
);
rijalg
.
IV
=
Convert
.
FromBase64String
(
iv
);
byte
[]
encryptedData
=
Convert
.
FromBase64String
(
encryptedDataStr
);
//解密
ICryptoTransform
decryptor
=
rijalg
.
CreateDecryptor
(
rijalg
.
Key
,
rijalg
.
IV
);
string
result
;
using
(
MemoryStream
msDecrypt
=
new
MemoryStream
(
encryptedData
))
{
using
(
CryptoStream
csDecrypt
=
new
CryptoStream
(
msDecrypt
,
decryptor
,
CryptoStreamMode
.
Read
))
{
using
(
StreamReader
srDecrypt
=
new
StreamReader
(
csDecrypt
))
{
result
=
srDecrypt
.
ReadToEnd
();
}
}
}
return
result
;
}
}
}
\ No newline at end of file
Mall.Model/Entity/Reserve/RB_Reserve_Base.cs
0 → 100644
View file @
92a5c5a8
using
VT.FW.DB
;
using
Mall.Common.Enum.MallBase
;
using
System
;
using
System.Collections.Generic
;
using
System.Text
;
namespace
Mall.Model.Entity.Reserve
{
/// <summary>
/// 预约专区基础
/// </summary>
[
Serializable
]
[
DB
(
ConnectionName
=
"DefaultConnection"
)]
public
class
RB_Reserve_Base
{
/// <summary>
/// id
/// </summary>
public
int
Id
{
get
;
set
;
}
/// <summary>
/// 提前预定分钟
/// </summary>
public
int
AdvanceMinute
{
get
;
set
;
}
/// <summary>
/// 订单状态变更
/// </summary>
public
string
OrderStateJson
{
get
;
set
;
}
/// <summary>
/// 营业时间
/// </summary>
public
string
BusinessHoursJson
{
get
;
set
;
}
/// <summary>
/// 付款方式
/// </summary>
public
string
PayTypeJson
{
get
;
set
;
}
/// <summary>
/// 商户id
/// </summary>
public
int
TenantId
{
get
;
set
;
}
/// <summary>
/// 小程序id
/// </summary>
public
int
MallBaseId
{
get
;
set
;
}
/// <summary>
/// 创建时间
/// </summary>
public
DateTime
CreateDate
{
get
;
set
;
}
/// <summary>
/// 修改人(员工id)
/// </summary>
public
int
UpdateBy
{
get
;
set
;
}
/// <summary>
/// 修改时间
/// </summary>
public
DateTime
UpdateDate
{
get
;
set
;
}
}
}
Mall.Model/Entity/Reserve/RB_Reserve_ServiceTargetDate.cs
View file @
92a5c5a8
...
...
@@ -39,5 +39,11 @@ namespace Mall.Model.Entity.Reserve
/// 是否可以预定 1是 2否
/// </summary>
public
int
IsReserve
{
get
;
set
;
}
/// <summary>
/// 预约人数
/// </summary>
public
int
ReserveNum
{
get
;
set
;
}
}
}
Mall.Model/Entity/User/RB_Member_User.cs
View file @
92a5c5a8
...
...
@@ -224,5 +224,10 @@ namespace Mall.Model.Entity.User
/// 类型
/// </summary>
public
Common
.
Enum
.
Goods
.
GoodsPageTypeEnum
?
UserPageType
{
get
;
set
;
}
/// <summary>
/// 2020-10-28号新增 (微信小程序获取的手机号码)
/// </summary>
public
string
PhoneNum
{
get
;
set
;
}
}
}
Mall.Model/Extend/MarketingCenter/RB_Miniprogram_Template_Extend.cs
View file @
92a5c5a8
...
...
@@ -2301,7 +2301,7 @@ namespace Mall.Model.Extend.MarketingCenter
/// </summary>
public
int
listStyle
{
get
;
set
;
}
/// <summary>
/// 背景颜色
...
...
@@ -2422,7 +2422,7 @@ namespace Mall.Model.Extend.MarketingCenter
/// </summary>
public
int
listStyle
{
get
;
set
;
}
/// <summary>
/// 背景颜色
/// </summary>
...
...
@@ -2466,4 +2466,286 @@ namespace Mall.Model.Extend.MarketingCenter
#
endregion
#
region
门店
/// <summary>
/// 门店
/// </summary>
public
class
StoreGoodsItem
{
/// <summary>
/// 显示分类
/// </summary>
public
bool
showCat
{
get
;
set
;
}
/// <summary>
/// 分类栏位置
/// </summary>
public
string
catPosition
{
get
;
set
;
}
/// <summary>
/// 分类样式
/// </summary>
public
int
catStyle
{
get
;
set
;
}
/// <summary>
/// 商品添加方式【0-自动添加,1-手动添加】
/// </summary>
public
int
addGoodsType
{
get
;
set
;
}
/// <summary>
/// 商品数量
/// </summary>
public
int
goodsLength
{
get
;
set
;
}
/// <summary>
/// 列表样式[-1-列表模式,0-左右滑动,1-一行一个,2-一行两个3-一行三个 4-教育模式]
/// </summary>
public
int
listStyle
{
get
;
set
;
}
/// <summary>
/// 商品封面图宽高比例[1-1]
/// </summary>
public
string
goodsCoverProportion
{
get
;
set
;
}
/// <summary>
/// 商品封面图填充
/// </summary>
public
int
fill
{
get
;
set
;
}
/// <summary>
/// 商品样式
/// </summary>
public
int
goodsStyle
{
get
;
set
;
}
/// <summary>
/// 文本样式
/// </summary>
public
int
textStyle
{
get
;
set
;
}
/// <summary>
/// 显示商品名称
/// </summary>
public
bool
showGoodsName
{
get
;
set
;
}
/// <summary>
/// 显示商品价格
/// </summary>
public
bool
showGoodsPrice
{
get
;
set
;
}
/// <summary>
/// 显示购买按钮
/// </summary>
public
bool
showBuyBtn
{
get
;
set
;
}
/// <summary>
/// 购买按钮样式[cart]
/// </summary>
public
string
buyBtn
{
get
;
set
;
}
/// <summary>
/// 购买按钮文字样式
/// </summary>
public
int
buyBtnStyle
{
get
;
set
;
}
/// <summary>
/// 购买按钮文字
/// </summary>
public
string
buyBtnText
{
get
;
set
;
}
/// <summary>
/// 购买按钮颜色
/// </summary>
public
string
buttonColor
{
get
;
set
;
}
/// <summary>
/// 显示评分 ld 2020-10-13
/// </summary>
public
bool
showScore
{
get
;
set
;
}
/// <summary>
/// 评分颜色
/// </summary>
public
string
scoreColor
{
get
;
set
;
}
/// <summary>
/// 显示商品角标
/// </summary>
public
bool
showGoodsTag
{
get
;
set
;
}
/// <summary>
/// 商品角标自定义
/// </summary>
public
bool
customizeGoodsTag
{
get
;
set
;
}
/// <summary>
/// 商品角标链接
/// </summary>
public
string
goodsTagPicUrl
{
get
;
set
;
}
/// <summary>
/// 是否显示图片背景
/// </summary>
public
bool
showImg
{
get
;
set
;
}
/// <summary>
/// 背景颜色
/// </summary>
public
string
backgroundColor
{
get
;
set
;
}
/// <summary>
/// 背景链接
/// </summary>
public
string
backgroundPicUrl
{
get
;
set
;
}
/// <summary>
///
/// </summary>
public
int
position
{
get
;
set
;
}
/// <summary>
/// 图片位置
/// </summary>
public
int
mode
{
get
;
set
;
}
/// <summary>
/// 背景高
/// </summary>
public
int
backgroundHeight
{
get
;
set
;
}
/// <summary>
/// 背景宽
/// </summary>
public
int
backgroundWidth
{
get
;
set
;
}
/// <summary>
/// 分类列表
/// </summary>
public
List
<
StoreCatItem
>
catList
{
get
;
set
;
}
/// <summary>
/// 商品列表
/// </summary>
public
List
<
StoreGoodsDetailsItem2
>
list
{
get
;
set
;
}
}
/// <summary>
/// 门店商品分类
/// </summary>
public
class
StoreCatItem
{
/// <summary>
/// 分类编号
/// </summary>
public
int
id
{
get
;
set
;
}
/// <summary>
/// 商品分类
/// </summary>
public
string
name
{
get
;
set
;
}
/// <summary>
/// 菜单名称
/// </summary>
public
string
menuName
{
get
;
set
;
}
/// <summary>
/// 商品数量
/// </summary>
public
int
goodsNum
{
get
;
set
;
}
/// <summary>
/// 是否显示自定义商品
/// </summary>
public
bool
staticGoods
{
get
;
set
;
}
/// <summary>
/// 商品列表
/// </summary>
public
List
<
GoodsDetailsItem2
>
goodsList
{
get
;
set
;
}
}
/// <summary>
/// 门店商品详情项
/// </summary>
public
class
StoreGoodsDetailsItem2
{
/// <summary>
/// 商品编号
/// </summary>
public
int
id
{
get
;
set
;
}
/// <summary>
/// 商品名称
/// </summary>
public
string
name
{
get
;
set
;
}
/// <summary>
/// 商品图片
/// </summary>
public
string
picUrl
{
get
;
set
;
}
/// <summary>
/// 售价
/// </summary>
public
decimal
price
{
get
;
set
;
}
/// <summary>
/// 【原价】前端使用
/// </summary>
public
decimal
OriginalPrice
{
get
;
set
;
}
/// <summary>
/// 课程评分 2020-10-13 ld
/// </summary>
public
decimal
courseScore
{
get
;
set
;
}
}
/// <summary>
/// 门店
/// </summary>
public
class
ReserveStoreItem
{
/// <summary>
/// 上边距
/// </summary>
public
string
PaddingTop
{
get
;
set
;
}
/// <summary>
/// 下边距
/// </summary>
public
string
PaddingBottom
{
get
;
set
;
}
/// <summary>
/// 左边距
/// </summary>
public
string
PaddingLeft
{
get
;
set
;
}
/// <summary>
/// 右边距
/// </summary>
public
string
PaddingRight
{
get
;
set
;
}
/// <summary>
/// 搜索圆角像素
/// </summary>
public
int
SearchFilletPX
{
get
;
set
;
}
/// <summary>
/// 是否显示封面图
/// </summary>
public
bool
IsShowStoreImg
{
get
;
set
;
}
}
#
endregion
}
\ No newline at end of file
Mall.Model/Extend/Reserve/RB_Reserve_Base_Extend.cs
0 → 100644
View file @
92a5c5a8
using
Mall.Model.Entity.Reserve
;
using
System
;
using
System.Collections.Generic
;
using
System.Text
;
using
VT.FW.DB
;
namespace
Mall.Model.Extend.Reserve
{
/// <summary>
///基础设置扩展实体
/// </summary>
[
Serializable
]
[
DB
(
ConnectionName
=
"DefaultConnection"
)]
public
class
RB_Reserve_Base_Extend
:
RB_Reserve_Base
{
/// <summary>
/// 订单状态列表
/// </summary>
public
List
<
ReserveStateModel
>
OrderStateList
{
get
;
set
;
}
public
List
<
BusinessHoursModel
>
BusinessHoursList
{
get
;
set
;
}
/// <summary>
/// 付款方式
/// </summary>
public
List
<
int
>
PayTypeList
{
get
;
set
;
}
}
/// <summary>
/// 线下服务行业订单状态
/// </summary>
public
class
ReserveStateModel
{
/// <summary>
/// id
/// </summary>
public
int
Id
{
get
;
set
;
}
/// <summary>
/// 状态名称
/// </summary>
public
string
Name
{
get
;
set
;
}
}
/// <summary>
/// 线下服务行业订单状态
/// </summary>
public
class
BusinessHoursModel
{
/// <summary>
/// 营业开始时间
/// </summary>
public
string
StartTime
{
get
;
set
;
}
/// <summary>
/// 营业结束时间
/// </summary>
public
string
EndTime
{
get
;
set
;
}
/// <summary>
/// 0-否,1-是
/// </summary>
public
int
IsNextDay
{
get
;
set
;
}
}
}
Mall.Model/Extend/Reserve/RB_Reserve_ServicePersonal_Extend.cs
View file @
92a5c5a8
...
...
@@ -40,11 +40,18 @@ namespace Mall.Model.Extend.Reserve
/// </summary>
public
string
StoreName
{
get
;
set
;
}
/// <summary>
/// 日期
/// </summary>
public
List
<
string
>
TargetDateStrList
{
get
;
set
;
}
/// <summary>
/// 可预约时间
/// </summary>
public
List
<
RB_Reserve_ServiceTargetDate
>
ServiceTargetDateList
{
get
;
set
;
}
public
List
<
RB_Reserve_ServiceTargetDate_Extend
>
ServiceTargetDateList
{
get
;
set
;
}
/// <summary>
/// 商品/分类id
/// </summary>
...
...
Mall.Model/Extend/Reserve/RB_Reserve_ServiceTargetDate_Extend.cs
View file @
92a5c5a8
...
...
@@ -34,5 +34,7 @@ namespace Mall.Model.Extend.Reserve
/// 结束时间
/// </summary>
public
string
EndTime
{
get
;
set
;
}
}
}
Mall.Module.MarketingCenter/MiniprogramTemplateModule.cs
View file @
92a5c5a8
...
...
@@ -161,11 +161,11 @@ namespace Mall.Module.MarketingCenter
h
=
h_root
,
hotspot
=
new
List
<
hotspotItem
>(),
list
=
new
List
<
rubikDetailItem
>(),
left
=
jObj
.
ContainsKey
(
"left"
)?
jObj
[
"left"
].
ToString
():
"0"
,
right
=
jObj
.
ContainsKey
(
"right"
)
?
jObj
[
"right"
].
ToString
()
:
"0"
,
top
=
jObj
.
ContainsKey
(
"top"
)
?
jObj
[
"top"
].
ToString
()
:
"0"
,
bottom
=
jObj
.
ContainsKey
(
"bottom"
)
?
jObj
[
"bottom"
].
ToString
()
:
"0"
,
background
=
jObj
.
ContainsKey
(
"background"
)
?
jObj
[
"background"
].
ToString
():
""
,
left
=
jObj
.
ContainsKey
(
"left"
)
?
jObj
[
"left"
].
ToString
()
:
"0"
,
right
=
jObj
.
ContainsKey
(
"right"
)
?
jObj
[
"right"
].
ToString
()
:
"0"
,
top
=
jObj
.
ContainsKey
(
"top"
)
?
jObj
[
"top"
].
ToString
()
:
"0"
,
bottom
=
jObj
.
ContainsKey
(
"bottom"
)
?
jObj
[
"bottom"
].
ToString
()
:
"0"
,
background
=
jObj
.
ContainsKey
(
"background"
)
?
jObj
[
"background"
].
ToString
()
:
""
,
};
if
(!
string
.
IsNullOrWhiteSpace
(
jObj
[
"hotspot"
].
ToString
()))
...
...
@@ -186,7 +186,7 @@ namespace Mall.Module.MarketingCenter
int
zIndex
=
0
;
if
(
subItem
[
"zIndex"
]
!=
null
&&
!
string
.
IsNullOrWhiteSpace
(
subItem
[
"zIndex"
].
ToString
()))
{
Int32
.
TryParse
(
subItem
[
"zIndex"
].
ToString
(),
out
zIndex
);
Int32
.
TryParse
(
subItem
[
"zIndex"
].
ToString
(),
out
zIndex
);
}
var
links
=
new
List
<
rubikLinkItem
>();
if
(
subItem
[
"link"
]
!=
null
&&
!
string
.
IsNullOrWhiteSpace
(
subItem
[
"link"
].
ToString
()))
...
...
@@ -253,7 +253,7 @@ namespace Mall.Module.MarketingCenter
}
catch
{
}
}
try
...
...
@@ -397,12 +397,12 @@ namespace Mall.Module.MarketingCenter
}
}
catch
{
{
}
item
.
data
=
shopModel
;
break
;
//司导插件
//司导插件
case
"drive-guide"
:
driveGuideItem
driveModel
=
new
driveGuideItem
();
try
...
...
@@ -513,6 +513,29 @@ namespace Mall.Module.MarketingCenter
}
item
.
data
=
educationArticleModel
;
break
;
//商品插件
case
"storeGoods"
:
item
.
data
=
JsonHelper
.
DeserializeObject
<
StoreGoodsItem
>(
item
.
data
.
ToString
());
break
;
case
"reservestore"
:
ReserveStoreItem
storeModel
=
new
ReserveStoreItem
();
try
{
var
driveData
=
JsonHelper
.
DeserializeObject
<
ReserveStoreItem
>(
item
.
data
.
ToString
());
if
(
driveData
!=
null
)
{
storeModel
.
PaddingTop
=
driveData
?.
PaddingTop
??
"0"
;
storeModel
.
PaddingBottom
=
driveData
?.
PaddingBottom
??
"0"
;
storeModel
.
PaddingLeft
=
driveData
?.
PaddingLeft
??
"0"
;
storeModel
.
PaddingRight
=
driveData
?.
PaddingRight
??
"0"
;
storeModel
.
SearchFilletPX
=
driveData
?.
SearchFilletPX
??
0
;
storeModel
.
IsShowStoreImg
=
driveData
?.
IsShowStoreImg
??
false
;
}
}
catch
{
}
item
.
data
=
storeModel
;
break
;
}
}
...
...
Mall.Module.Reserve/ReserveModule.cs
View file @
92a5c5a8
...
...
@@ -3,6 +3,7 @@ using Mall.Model.Entity.Reserve;
using
Mall.Model.Extend.Reserve
;
using
Mall.Repository.Reserve
;
using
Mall.Repository.User
;
using
Newtonsoft.Json
;
using
System
;
using
System.Collections.Generic
;
using
System.Linq
;
...
...
@@ -37,6 +38,103 @@ namespace Mall.Module.Reserve
#
endregion
#
region
基础设置
private
readonly
RB_Reserve_BaseRepository
reserveBaseRepository
=
new
RB_Reserve_BaseRepository
();
#
endregion
#
region
基础配置
/// <summary>
/// 获取基础配置
/// </summary>
/// <param name="tenantId"></param>
/// <param name="mallBaseId"></param>
/// <returns></returns>
public
RB_Reserve_Base_Extend
GetReserveBaseInfo
(
int
tenantId
,
int
mallBaseId
)
{
var
model
=
reserveBaseRepository
.
GetList
(
new
RB_Reserve_Base_Extend
()
{
TenantId
=
tenantId
,
MallBaseId
=
mallBaseId
}).
FirstOrDefault
();
if
(
model
==
null
)
{
model
=
new
RB_Reserve_Base_Extend
()
{
MallBaseId
=
mallBaseId
,
AdvanceMinute
=
30
,
Id
=
0
,
TenantId
=
tenantId
,
};
}
if
(
model
.
OrderStateJson
==
null
||
model
.
OrderStateJson
==
""
||
model
.
OrderStateJson
==
"[]"
)
{
var
list
=
EnumHelper
.
GetEnumList
(
typeof
(
Common
.
Enum
.
Goods
.
OrderStatusEnum
));
model
.
OrderStateList
=
list
.
OrderBy
(
x
=>
Convert
.
ToInt32
(
x
.
Value
)).
Select
(
x
=>
new
ReserveStateModel
{
Name
=
x
.
Key
,
Id
=
Convert
.
ToInt32
(
x
.
Value
)
}).
ToList
();
}
else
{
model
.
OrderStateList
=
JsonConvert
.
DeserializeObject
<
List
<
ReserveStateModel
>>(
model
.
OrderStateJson
);
}
if
(!
string
.
IsNullOrWhiteSpace
(
model
.
BusinessHoursJson
))
{
try
{
model
.
BusinessHoursList
=
JsonConvert
.
DeserializeObject
<
List
<
BusinessHoursModel
>>(
model
.
BusinessHoursJson
);
}
catch
(
Exception
)
{
model
.
BusinessHoursList
=
new
List
<
BusinessHoursModel
>();
}
}
else
{
model
.
BusinessHoursList
=
new
List
<
BusinessHoursModel
>();
}
if
(!
string
.
IsNullOrWhiteSpace
(
model
.
PayTypeJson
))
{
try
{
model
.
PayTypeList
=
JsonConvert
.
DeserializeObject
<
List
<
int
>>(
model
.
PayTypeJson
);
}
catch
(
Exception
)
{
model
.
PayTypeList
=
new
List
<
int
>();
}
}
else
{
model
.
PayTypeList
=
new
List
<
int
>();
}
return
model
;
}
/// <summary>
/// 保存
/// </summary>
/// <param name="demodel"></param>
/// <returns></returns>
public
bool
SetReserveBaseInfo
(
RB_Reserve_Base_Extend
demodel
)
{
var
model
=
reserveBaseRepository
.
GetList
(
new
RB_Reserve_Base_Extend
()
{
TenantId
=
demodel
.
TenantId
,
MallBaseId
=
demodel
.
MallBaseId
}).
FirstOrDefault
();
if
(
model
==
null
)
{
return
reserveBaseRepository
.
Insert
(
demodel
)
>
0
;
}
else
{
model
.
UpdateBy
=
demodel
.
UpdateBy
;
model
.
AdvanceMinute
=
demodel
.
AdvanceMinute
;
model
.
OrderStateJson
=
demodel
.
OrderStateJson
;
model
.
BusinessHoursJson
=
demodel
.
BusinessHoursJson
;
model
.
PayTypeJson
=
demodel
.
PayTypeJson
;
model
.
OrderStateJson
=
demodel
.
OrderStateJson
;
model
.
UpdateDate
=
demodel
.
UpdateDate
;
return
reserveBaseRepository
.
Update
(
model
);
}
}
#
endregion
#
region
服务人员信息
/// <summary>
...
...
@@ -205,8 +303,86 @@ namespace Mall.Module.Reserve
/// <summary>
/// 获取服务人员的工作时间
/// </summary>
/// <param name="dmodel">查询条件</param>
/// <returns></returns>
public
List
<
RB_Reserve_ServiceTargetDate_Extend
>
GetServiceTargetDateList
(
RB_Reserve_ServiceTargetDate_Extend
dmodel
)
{
return
serviceTargetDateRepository
.
GetList
(
dmodel
);
}
/// <summary>
/// 服务人员的排班
/// </summary>
/// <param name="serviceId"></param>
/// <param name="list"></param>
/// <returns></returns>
public
bool
AddOrUpdateServiceTargetDate
(
int
serviceId
,
List
<
RB_Reserve_ServiceTargetDate_Extend
>
list
)
{
try
{
#
region
修改可预定日期
var
tdlist
=
serviceTargetDateRepository
.
GetList
(
new
RB_Reserve_ServiceTargetDate_Extend
()
{
ServiceId
=
serviceId
});
var
tdinsertList
=
list
.
Where
(
x
=>
!
tdlist
.
Select
(
y
=>
y
.
Date
).
Contains
(
x
.
Date
)).
ToList
();
var
tddeleteList
=
tdlist
.
Where
(
x
=>
!
list
.
Select
(
y
=>
y
.
Date
).
Contains
(
x
.
Date
)).
ToList
();
foreach
(
var
item
in
tdinsertList
)
{
serviceTargetDateRepository
.
Insert
(
new
RB_Reserve_ServiceTargetDate
()
{
Id
=
0
,
ServiceId
=
serviceId
,
Date
=
item
.
Date
,
IsReserve
=
1
,
ReserveNum
=
0
});
}
if
(
tdlist
!=
null
&&
tdlist
.
Any
())
{
foreach
(
var
item
in
tddeleteList
)
{
serviceTargetDateRepository
.
Delete
(
item
);
}
}
return
true
;
#
endregion
}
catch
(
Exception
ex
)
{
return
false
;
}
}
/// <summary>
/// 验证可预定日期是否可以修改
/// </summary>
/// <param name="goodsIs"></param>
/// <param name="tdlist"></param>
/// <returns></returns>
public
string
ValidateServiceTargetDate
(
int
serviceId
,
List
<
RB_Reserve_ServiceTargetDate_Extend
>
tdlist
)
{
var
oldtdlist
=
serviceTargetDateRepository
.
GetList
(
new
RB_Reserve_ServiceTargetDate_Extend
()
{
ServiceId
=
serviceId
});
var
tddeleteList
=
oldtdlist
.
Where
(
x
=>
!
tdlist
.
Select
(
y
=>
y
.
Date
).
Contains
(
x
.
Date
)).
ToList
();
string
msg
=
""
;
foreach
(
var
item
in
tddeleteList
)
{
//看是否有不可预约的 / 有预定人数的
if
(
item
.
IsReserve
==
2
||
item
.
ReserveNum
>
0
)
{
msg
+=
item
.
Date
.
Value
.
ToString
(
"yyyy-MM-dd"
)
+
","
;
}
}
if
(
msg
!=
""
)
{
msg
=
msg
[..
1
];
msg
+=
" 已有订单预定,无法修改当前日期"
;
}
return
msg
;
}
#
endregion
...
...
Mall.Module.User/MemberUserModule.cs
View file @
92a5c5a8
...
...
@@ -29,5 +29,16 @@ namespace Mall.Module.User
};
return
member_UserRepository
.
Update
(
fileds
,
new
WhereHelper
(
nameof
(
RB_Member_User_Extend
.
Id
),
extModel
.
Id
));
}
public
bool
SetMemberUserPhoneNum
(
RB_Member_User_Extend
extModel
)
{
Dictionary
<
string
,
object
>
fileds
=
new
Dictionary
<
string
,
object
>()
{
{
nameof
(
RB_Member_User_Extend
.
PhoneNum
),
extModel
.
PhoneNum
},
};
return
member_UserRepository
.
Update
(
fileds
,
new
WhereHelper
(
nameof
(
RB_Member_User_Extend
.
Id
),
extModel
.
Id
));
}
}
}
Mall.Repository/Reserve/RB_Reserve_BaseRepository.cs
0 → 100644
View file @
92a5c5a8
using
Mall.Model.Entity.Reserve
;
using
Mall.Model.Extend.Reserve
;
using
System
;
using
System.Collections.Generic
;
using
System.Linq
;
using
System.Text
;
namespace
Mall.Repository.Reserve
{
public
class
RB_Reserve_BaseRepository
:
BaseRepository
<
RB_Reserve_Base
>
{
/// <summary>
/// 获取列表
/// </summary>
/// <param name="dmodel">查询条件</param>
/// <returns></returns>
public
List
<
RB_Reserve_Base_Extend
>
GetList
(
RB_Reserve_Base_Extend
dmodel
)
{
string
where
=
$" 1=1 "
;
if
(
dmodel
.
TenantId
>
0
)
{
where
+=
$@" and
{
nameof
(
RB_Reserve_Base
.
TenantId
)}
=
{
dmodel
.
TenantId
}
"
;
}
if
(
dmodel
.
MallBaseId
>
0
)
{
where
+=
$@" and
{
nameof
(
RB_Reserve_Base
.
MallBaseId
)}
=
{
dmodel
.
MallBaseId
}
"
;
}
string
sql
=
$@"
select * from RB_Reserve_Base where
{
where
}
"
;
return
Get
<
RB_Reserve_Base_Extend
>(
sql
).
ToList
();
}
}
}
Mall.WebApi/Controllers/Mall/MallHelper.cs
View file @
92a5c5a8
This diff is collapsed.
Click to expand it.
Mall.WebApi/Controllers/MarketingCenter/TemplateController.cs
View file @
92a5c5a8
...
...
@@ -531,6 +531,17 @@ namespace Mall.WebApi.Controllers.MarketingCenter
}
item
.
data
=
noticeData
;
break
;
//商品插件
case
"storeGoods"
:
var
storeGoodData
=
Common
.
Plugin
.
JsonHelper
.
DeserializeObject
<
StoreGoodsItem
>(
item
.
data
.
ToString
());
if
(!
string
.
IsNullOrWhiteSpace
(
storeGoodData
.
goodsTagPicUrl
))
{
Common
.
Plugin
.
FileHelper
.
CreateImage
(
storeGoodData
.
goodsTagPicUrl
);
storeGoodData
.
goodsTagPicUrl
=
Common
.
Plugin
.
FileHelper
.
GetFileUrl
(
storeGoodData
.
goodsTagPicUrl
);
storeGoodData
.
goodsTagPicUrl
=
Common
.
Config
.
GetFileUrl
(
storeGoodData
.
goodsTagPicUrl
);
}
item
.
data
=
storeGoodData
;
break
;
}
}
}
...
...
Mall.WebApi/Controllers/Reserve/ReserveController.cs
View file @
92a5c5a8
...
...
@@ -5,6 +5,7 @@ using System.Threading.Tasks;
using
Mall.Common.API
;
using
Mall.Common.Enum.Reserve
;
using
Mall.Common.Plugin
;
using
Mall.Model.Entity.Reserve
;
using
Mall.Model.Extend.Reserve
;
using
Mall.Model.Extend.User
;
using
Mall.Module.Reserve
;
...
...
@@ -26,6 +27,66 @@ namespace Mall.WebApi.Controllers.Reserve
private
readonly
ReserveModule
reserveModule
=
new
ReserveModule
();
private
Module
.
User
.
UserModule
UserModule
=
new
Module
.
User
.
UserModule
();
#
region
基础配置
/// <summary>
/// 获取线下服务行业基础配置
/// </summary>
/// <returns></returns>
[
HttpPost
]
public
ApiResult
GetReserveBaseInfo
()
{
var
req
=
RequestParm
;
var
model
=
reserveModule
.
GetReserveBaseInfo
(
req
.
TenantId
,
req
.
MallBaseId
);
return
ApiResult
.
Success
(
""
,
model
);
}
/// <summary>
/// 保存线下服务行业基础配置
/// </summary>
/// <returns></returns>
public
ApiResult
SetReserveBaseInfo
()
{
var
req
=
RequestParm
;
RB_Reserve_Base_Extend
demodel
=
JsonConvert
.
DeserializeObject
<
RB_Reserve_Base_Extend
>(
req
.
msg
.
ToString
());
demodel
.
OrderStateJson
=
""
;
if
(
demodel
.
OrderStateList
!=
null
&&
demodel
.
OrderStateList
.
Any
())
{
demodel
.
OrderStateJson
=
JsonConvert
.
SerializeObject
(
demodel
.
OrderStateList
);
}
demodel
.
BusinessHoursJson
=
""
;
if
(
demodel
.
BusinessHoursList
!=
null
&&
demodel
.
BusinessHoursList
.
Any
())
{
demodel
.
BusinessHoursJson
=
JsonConvert
.
SerializeObject
(
demodel
.
BusinessHoursList
);
}
if
(
demodel
.
PayTypeList
==
null
||!
demodel
.
PayTypeList
.
Any
())
{
return
ApiResult
.
Failed
(
"请选择付款方式"
);
}
demodel
.
PayTypeJson
=
""
;
if
(
demodel
.
PayTypeList
!=
null
&&
demodel
.
PayTypeList
.
Any
())
{
demodel
.
PayTypeJson
=
JsonConvert
.
SerializeObject
(
demodel
.
PayTypeList
);
}
demodel
.
TenantId
=
req
.
TenantId
;
demodel
.
MallBaseId
=
req
.
MallBaseId
;
demodel
.
UpdateBy
=
req
.
EmpId
;
demodel
.
CreateDate
=
DateTime
.
Now
;
demodel
.
UpdateDate
=
DateTime
.
Now
;
bool
flag
=
reserveModule
.
SetReserveBaseInfo
(
demodel
);
if
(
flag
)
{
return
ApiResult
.
Success
();
}
else
{
return
ApiResult
.
Failed
();
}
}
#
endregion
#
region
服务人员
/// <summary>
/// 获取服务人员列表
...
...
@@ -218,10 +279,93 @@ namespace Mall.WebApi.Controllers.Reserve
Id
=
Convert
.
ToInt32
(
x
.
Value
)
}));
}
#
region
服务人员的排班计划
/// <summary>
/// 获取全部服务人员
/// </summary>
/// <returns></returns>
[
HttpPost
]
public
ApiResult
GetServiceTargetDateList
()
{
var
parms
=
RequestParm
;
var
query
=
JsonConvert
.
DeserializeObject
<
RB_Reserve_ServiceTargetDate_Extend
>(
RequestParm
.
msg
.
ToString
());
var
list
=
reserveModule
.
GetServiceTargetDateList
(
query
);
List
<
string
>
result
=
new
List
<
string
>();
foreach
(
var
item
in
list
)
{
if
(
item
.
Date
.
HasValue
)
{
result
.
Add
(
item
.
Date
.
Value
.
ToString
(
"yyyy-MM-dd"
));
}
}
return
ApiResult
.
Success
(
""
,
result
);
}
/// <summary>
/// 保存服务人员信息
/// </summary>
/// <returns></returns>
public
ApiResult
AddOrUpdateServiceTargetDate
()
{
var
parms
=
RequestParm
;
var
query
=
JsonConvert
.
DeserializeObject
<
RB_Reserve_ServicePersonal_Extend
>(
RequestParm
.
msg
.
ToString
());
query
.
TenantId
=
UserInfo
.
TenantId
;
query
.
MallBaseId
=
parms
.
MallBaseId
;
if
(
query
==
null
)
{
return
ApiResult
.
Failed
(
"请传入服务人员信息"
);
}
else
{
if
(
query
.
TargetDateStrList
==
null
||
!
query
.
TargetDateStrList
.
Any
())
{
return
ApiResult
.
Failed
(
"请传入服务人员排班信息"
);
}
if
(
query
.
TargetDateStrList
!=
null
&&
query
.
TargetDateStrList
.
Any
())
{
if
(
query
.
TargetDateStrList
.
Count
()
!=
query
.
TargetDateStrList
.
Distinct
().
Count
())
{
return
ApiResult
.
ParamIsNull
(
"可预定日期有重复"
);
}
query
.
ServiceTargetDateList
=
new
List
<
RB_Reserve_ServiceTargetDate_Extend
>();
foreach
(
var
item
in
query
.
TargetDateStrList
)
{
query
.
ServiceTargetDateList
.
Add
(
new
RB_Reserve_ServiceTargetDate_Extend
()
{
Date
=
Convert
.
ToDateTime
(
item
)
});
}
}
string
vmsg
=
reserveModule
.
ValidateServiceTargetDate
(
query
.
ID
,
query
.
ServiceTargetDateList
);
if
(
vmsg
!=
""
)
{
return
ApiResult
.
Failed
(
vmsg
);
}
bool
result
=
reserveModule
.
AddOrUpdateServiceTargetDate
(
query
.
ID
,
query
.
ServiceTargetDateList
);
if
(
result
)
{
return
ApiResult
.
Success
(
"服务人员信息保存成功"
);
}
else
{
return
ApiResult
.
Failed
(
"服务人员信息保存失败"
);
}
}
}
#
endregion
#
endregion
#
region
套餐卡
...
...
Mall.WebApi/Controllers/User/AppletLoginController.cs
View file @
92a5c5a8
...
...
@@ -326,5 +326,79 @@ namespace Mall.WebApi.Controllers.User
}
#
endregion
#
region
小程序获取手机号码
/// <summary>
/// 获取手机号码
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public
ApiResult
GetGuestWeiXinMobile
(
object
requestMsg
)
{
var
requestParm
=
JsonConvert
.
DeserializeObject
<
RequestParm
>(
requestMsg
.
ToString
());
JObject
parms
=
JObject
.
Parse
(
requestParm
.
msg
.
ToString
());
string
code
=
parms
.
GetStringValue
(
"code"
);
string
encryptedData
=
parms
.
GetStringValue
(
"encryptedData"
);
string
iv
=
parms
.
GetStringValue
(
"iv"
);
if
(
requestParm
.
TenantId
<=
0
)
{
return
ApiResult
.
ParamIsNull
(
"请传递商户号"
);
}
if
(
requestParm
.
MallBaseId
<=
0
)
{
return
ApiResult
.
ParamIsNull
(
"请传递小程序id"
);
}
var
appletWeChatModel
=
programModule
.
GetMiniProgramModule
(
new
RB_MiniProgram_Extend
()
{
MallBaseId
=
requestParm
.
MallBaseId
});
if
(
appletWeChatModel
==
null
)
{
return
ApiResult
.
ParamIsNull
(
"小程序不存在"
);
}
if
(
appletWeChatModel
.
TenantId
!=
requestParm
.
TenantId
)
{
return
ApiResult
.
ParamIsNull
(
"商户号错误"
);
}
string
Appid
=
appletWeChatModel
.
MiniAppId
;
var
Secret
=
appletWeChatModel
.
MiniAppSecret
;
string
grant_type
=
"authorization_code"
;
//向微信服务端 使用登录凭证 code 获取 session_key 和 openid
string
url
=
"https://api.weixin.qq.com/sns/jscode2session?appid="
+
Appid
+
"&secret="
+
Secret
+
"&js_code="
+
code
+
"&grant_type="
+
grant_type
;
string
type
=
"utf-8"
;
GetUsersHelper
GetUsersHelper
=
new
GetUsersHelper
();
JObject
jo
=
null
;
string
_telPhone
=
""
;
try
{
string
j
=
GetUsersHelper
.
GetUrltoHtml
(
url
,
type
);
//获取微信服务器返回字符串
//将字符串转换为json格式
jo
=
(
JObject
)
JsonConvert
.
DeserializeObject
(
j
);
Common
.
Plugin
.
result
res
=
new
Common
.
Plugin
.
result
{
//微信服务器验证成功
openid
=
jo
[
"openid"
].
ToString
(),
session_key
=
jo
[
"session_key"
].
ToString
()
};
if
(!
string
.
IsNullOrWhiteSpace
(
jo
[
"openid"
].
ToString
()))
{
if
(!
String
.
IsNullOrEmpty
(
encryptedData
)
&&
!
string
.
IsNullOrEmpty
(
iv
))
{
//解析手机号码
_telPhone
=
Common
.
EncryptionHelper
.
AES_decrypt
(
encryptedData
,
jo
[
"session_key"
].
ToString
(),
iv
);
}
}
}
catch
(
Exception
ex
)
{
Common
.
Plugin
.
LogHelper
.
Write
(
ex
,
string
.
Format
(
"GetGuestWeiXinMobile:msg:{0},request:{1},URL:{2}"
,
Common
.
Plugin
.
JsonHelper
.
Serialize
(
jo
),
requestMsg
.
ToString
(),
url
));
return
ApiResult
.
Failed
(
"获取失败"
);
}
return
ApiResult
.
Success
(
""
,
_telPhone
);
}
#
endregion
}
}
\ No newline at end of file
Mall.WebApi/Controllers/User/MemberUserController.cs
View file @
92a5c5a8
...
...
@@ -32,5 +32,17 @@ namespace Mall.WebApi.Controllers.User
var
flag
=
MemberUserModule
.
SetMemberUserNameAndPhoto
(
extModel
);
return
flag
?
ApiResult
.
Success
()
:
ApiResult
.
Failed
();
}
/// <summary>
/// 更改用户的手机号码 add by:W 2020-10-28
/// </summary>
/// <returns></returns>
public
ApiResult
SetMemberUserPhoneNum
()
{
var
extModel
=
JsonConvert
.
DeserializeObject
<
RB_Member_User_Extend
>(
RequestParm
.
msg
.
ToString
());
var
flag
=
MemberUserModule
.
SetMemberUserPhoneNum
(
extModel
);
return
flag
?
ApiResult
.
Success
()
:
ApiResult
.
Failed
();
}
}
}
\ No newline at end of file
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