Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
P
payment
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
iuav
payment
Commits
18b7ef67
提交
18b7ef67
authored
5月 24, 2023
作者:
张小凤
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
payment(add)
上级
7638b990
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
54 个修改的文件
包含
3254 行增加
和
0 行删除
+3254
-0
pom.xml
pom.xml
+40
-0
AmtUtil.java
src/main/java/com/mmc/payment/common/AmtUtil.java
+42
-0
BaseController.java
src/main/java/com/mmc/payment/common/BaseController.java
+41
-0
BaseErrorInfoInterface.java
...n/java/com/mmc/payment/common/BaseErrorInfoInterface.java
+22
-0
CodeUtil.java
src/main/java/com/mmc/payment/common/CodeUtil.java
+238
-0
Create.java
src/main/java/com/mmc/payment/common/Create.java
+9
-0
Freeze.java
src/main/java/com/mmc/payment/common/Freeze.java
+9
-0
JsonUtil.java
src/main/java/com/mmc/payment/common/JsonUtil.java
+119
-0
Page.java
src/main/java/com/mmc/payment/common/Page.java
+9
-0
PageResult.java
src/main/java/com/mmc/payment/common/PageResult.java
+50
-0
RedisConstant.java
src/main/java/com/mmc/payment/common/RedisConstant.java
+249
-0
Refund.java
src/main/java/com/mmc/payment/common/Refund.java
+9
-0
ResultBody.java
src/main/java/com/mmc/payment/common/ResultBody.java
+153
-0
ResultEnum.java
src/main/java/com/mmc/payment/common/ResultEnum.java
+0
-0
Share.java
src/main/java/com/mmc/payment/common/Share.java
+9
-0
TDateUtil.java
src/main/java/com/mmc/payment/common/TDateUtil.java
+0
-0
Update.java
src/main/java/com/mmc/payment/common/Update.java
+9
-0
AuthHandler.java
src/main/java/com/mmc/payment/config/AuthHandler.java
+182
-0
JwtUtil.java
src/main/java/com/mmc/payment/config/JwtUtil.java
+59
-0
RepeatSubmit.java
src/main/java/com/mmc/payment/config/RepeatSubmit.java
+31
-0
RepoCashMethod.java
src/main/java/com/mmc/payment/config/RepoCashMethod.java
+34
-0
UserPorts.java
src/main/java/com/mmc/payment/config/UserPorts.java
+24
-0
RepoAccountController.java
...ava/com/mmc/payment/controller/RepoAccountController.java
+56
-0
RepoCashController.java
...n/java/com/mmc/payment/controller/RepoCashController.java
+70
-0
RepoAccountDao.java
src/main/java/com/mmc/payment/dao/RepoAccountDao.java
+25
-0
RepoCashDao.java
src/main/java/com/mmc/payment/dao/RepoCashDao.java
+25
-0
RepoAccountDO.java
src/main/java/com/mmc/payment/entity/RepoAccountDO.java
+119
-0
RepoCashDO.java
src/main/java/com/mmc/payment/entity/RepoCashDO.java
+60
-0
RepoWalletDO.java
src/main/java/com/mmc/payment/entity/RepoWalletDO.java
+54
-0
BizException.java
src/main/java/com/mmc/payment/exception/BizException.java
+91
-0
JwtConstant.java
src/main/java/com/mmc/payment/jwt/JwtConstant.java
+31
-0
BaseAccountDTO.java
src/main/java/com/mmc/payment/model/dto/BaseAccountDTO.java
+68
-0
CompanyCacheDTO.java
src/main/java/com/mmc/payment/model/dto/CompanyCacheDTO.java
+31
-0
CompanySimpleDTO.java
...main/java/com/mmc/payment/model/dto/CompanySimpleDTO.java
+35
-0
CurrentUserDTO.java
src/main/java/com/mmc/payment/model/dto/CurrentUserDTO.java
+23
-0
RepoAccountDTO.java
src/main/java/com/mmc/payment/model/dto/RepoAccountDTO.java
+95
-0
RepoCashDTO.java
src/main/java/com/mmc/payment/model/dto/RepoCashDTO.java
+70
-0
RepoRcdTeamDTO.java
src/main/java/com/mmc/payment/model/dto/RepoRcdTeamDTO.java
+46
-0
RepoRebateWalletDTO.java
...n/java/com/mmc/payment/model/dto/RepoRebateWalletDTO.java
+65
-0
RepoWalletDTO.java
src/main/java/com/mmc/payment/model/dto/RepoWalletDTO.java
+53
-0
RoleInfoDTO.java
src/main/java/com/mmc/payment/model/dto/RoleInfoDTO.java
+43
-0
UserAccountDTO.java
src/main/java/com/mmc/payment/model/dto/UserAccountDTO.java
+83
-0
BaseInfoQO.java
src/main/java/com/mmc/payment/model/qo/BaseInfoQO.java
+47
-0
RepoAccountQO.java
src/main/java/com/mmc/payment/model/qo/RepoAccountQO.java
+84
-0
RepoCashQO.java
src/main/java/com/mmc/payment/model/qo/RepoCashQO.java
+52
-0
UserAccountQO.java
src/main/java/com/mmc/payment/model/qo/UserAccountQO.java
+66
-0
RepoAccountVO.java
src/main/java/com/mmc/payment/model/vo/RepoAccountVO.java
+38
-0
RepoCashVO.java
src/main/java/com/mmc/payment/model/vo/RepoCashVO.java
+49
-0
RepoAccountServiceImpl.java
.../com/mmc/payment/service/Impl/RepoAccountServiceImpl.java
+70
-0
RepoCashServiceImpl.java
...ava/com/mmc/payment/service/Impl/RepoCashServiceImpl.java
+189
-0
RepoAccountService.java
...main/java/com/mmc/payment/service/RepoAccountService.java
+14
-0
RepoCashService.java
src/main/java/com/mmc/payment/service/RepoCashService.java
+31
-0
RepoAccountDao.xml
src/main/resources/mapper/RepoAccountDao.xml
+7
-0
RepoCashDao.xml
src/main/resources/mapper/RepoCashDao.xml
+126
-0
没有找到文件。
pom.xml
浏览文件 @
18b7ef67
...
@@ -46,6 +46,46 @@
...
@@ -46,6 +46,46 @@
<version>
3.0.2
</version>
<version>
3.0.2
</version>
</dependency>
</dependency>
<dependency>
<groupId>
org.projectlombok
</groupId>
<artifactId>
lombok
</artifactId>
<optional>
true
</optional>
</dependency>
<dependency>
<groupId>
com.alibaba
</groupId>
<artifactId>
fastjson
</artifactId>
<version>
2.0.32
</version>
</dependency>
<dependency>
<groupId>
io.jsonwebtoken
</groupId>
<artifactId>
jjwt
</artifactId>
<version>
0.9.1
</version>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-web
</artifactId>
</dependency>
<dependency>
<groupId>
com.baomidou
</groupId>
<artifactId>
mybatis-plus-boot-starter
</artifactId>
<version>
3.4.3.4
</version>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-validation
</artifactId>
<version>
3.0.0
</version>
<!--<scope>compile</scope>-->
</dependency>
<dependency>
<groupId>
com.alibaba
</groupId>
<artifactId>
fastjson
</artifactId>
<version>
2.0.32
</version>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-data-redis
</artifactId>
</dependency>
</dependencies>
</dependencies>
...
...
src/main/java/com/mmc/payment/common/AmtUtil.java
0 → 100644
浏览文件 @
18b7ef67
package
com
.
mmc
.
payment
.
common
;
import
java.math.BigDecimal
;
/**
* @Author small
* @Date 2023/5/24 10:15
* @Version 1.0
*/
public
class
AmtUtil
{
private
static
final
BigDecimal
minCashCost
=
BigDecimal
.
valueOf
(-
99999999.99
);
// -9999万9999元.99
private
static
final
BigDecimal
maxCashCost
=
BigDecimal
.
valueOf
(
99999999.99
);
// 9999万9999元.99
private
static
final
BigDecimal
minRepeatCost
=
BigDecimal
.
ZERO
;
// 0
private
static
final
BigDecimal
maxRepeatCost
=
BigDecimal
.
valueOf
(
99999999.99
);
// 9999万9999元.99
public
static
final
BigDecimal
REBATE_RATE
=
(
BigDecimal
.
valueOf
(
0.01
).
setScale
(
2
,
BigDecimal
.
ROUND_DOWN
));
// 返利的百分比
/**
* 变更-金额范围
*
* @param amtPaid
* @return
*/
public
static
boolean
vertifyAmt
(
BigDecimal
amtPaid
)
{
return
(
amtPaid
!=
null
&&
(
amtPaid
.
compareTo
(
minCashCost
)
>=
0
)
&&
(
amtPaid
.
compareTo
(
maxCashCost
)
<=
0
));
}
/**
* 还款-金额范围
*
* @param amtPaid
* @return
*/
public
static
boolean
vertifyRepeatAmt
(
BigDecimal
amtPaid
)
{
return
(
amtPaid
!=
null
&&
(
amtPaid
.
compareTo
(
minRepeatCost
)
>
0
)
&&
(
amtPaid
.
compareTo
(
maxRepeatCost
)
<=
0
));
}
public
static
boolean
vertifyRepoAmt
(
BigDecimal
amtPaid
)
{
return
(
amtPaid
!=
null
&&
(
amtPaid
.
compareTo
(
BigDecimal
.
ZERO
)
>
0
)
&&
(
amtPaid
.
compareTo
(
maxCashCost
)
<=
0
));
}
}
src/main/java/com/mmc/payment/common/BaseController.java
0 → 100644
浏览文件 @
18b7ef67
package
com
.
mmc
.
payment
.
common
;
import
com.mmc.payment.config.AuthHandler
;
import
com.mmc.payment.jwt.JwtConstant
;
import
com.mmc.payment.model.dto.BaseAccountDTO
;
import
com.mmc.payment.model.dto.CurrentUserDTO
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
javax.servlet.http.HttpServletRequest
;
/**
* @Author small
* @Date 2023/5/24 9:54
* @Version 1.0
*/
public
abstract
class
BaseController
{
@Autowired
private
AuthHandler
authHandler
;
/**
* 获取当前用户
*
* @param request
* @return
*/
public
CurrentUserDTO
getCurrentUser
(
HttpServletRequest
request
)
{
// 登录未做好-统一通过此方法获取当前用户信息
Integer
id
=
Integer
.
parseInt
(
request
.
getHeader
(
JwtConstant
.
USERIDKEY
).
toString
());
Integer
roleId
=
Integer
.
parseInt
(
request
.
getHeader
(
JwtConstant
.
ROLEIDKEY
).
toString
());
return
CurrentUserDTO
.
builder
().
id
(
id
).
roleId
(
roleId
).
build
();
}
/**
* 获取当前登录账号信息
*/
public
BaseAccountDTO
getCurrentAccount
(
HttpServletRequest
request
)
{
String
token
=
request
.
getHeader
(
JwtConstant
.
TOKENKEY
);
return
authHandler
.
getCurrentAccount
(
token
);
}
}
src/main/java/com/mmc/payment/common/BaseErrorInfoInterface.java
0 → 100644
浏览文件 @
18b7ef67
package
com
.
mmc
.
payment
.
common
;
/**
* @Author small
* @Date 2023/5/23 18:42
* @Version 1.0
*/
public
interface
BaseErrorInfoInterface
{
/**
* 错误码
*
* @return
*/
String
getResultCode
();
/**
* 错误描述
*
* @return
*/
String
getResultMsg
();
}
src/main/java/com/mmc/payment/common/CodeUtil.java
0 → 100644
浏览文件 @
18b7ef67
package
com
.
mmc
.
payment
.
common
;
import
java.util.Random
;
/**
* @Author small
* @Date 2023/5/23 19:33
* @Version 1.0
*/
public
class
CodeUtil
{
private
static
Random
random
=
new
Random
();
// 数据生成有位数字或字母的随机数
public
static
String
randomCode
(
int
num
)
{
// 0-61 9 9+26=35 35+26 =61 65-90 97-122
StringBuffer
sb
=
new
StringBuffer
();
for
(
int
i
=
0
;
i
<
num
;
i
++)
{
int
y
=
random
.
nextInt
(
62
);
if
(
y
<=
9
)
{
// 数值
sb
.
append
(
y
);
}
else
{
if
(
y
<=
35
)
{
// 大写字母
y
+=
55
;
}
else
{
// 小写字母
y
+=
61
;
}
sb
.
append
((
char
)
y
);
}
}
return
sb
.
toString
();
}
/**
* 生成随机数字
*
* @param length[生成随机数的长度]
* @return
*/
public
static
String
getRandomNum
(
int
length
)
{
StringBuffer
sb
=
new
StringBuffer
();
Random
random
=
new
Random
();
for
(
int
i
=
0
;
i
<
length
;
i
++)
{
sb
.
append
(
String
.
valueOf
(
random
.
nextInt
(
10
)));
}
return
sb
.
toString
();
}
/**
* 生成用户uid
*
* @return
*/
public
static
String
createUserUID
()
{
return
"UID"
+
CodeUtil
.
getRandomNum
(
7
);
}
/**
* 生成-现金流水账目no
*/
public
static
String
createPayCashNO
()
{
StringBuffer
sb
=
new
StringBuffer
();
sb
.
append
(
"T"
);
sb
.
append
(
TDateUtil
.
getCurrentDateByType
(
"yyyyMMddHHmm"
));
sb
.
append
(
CodeUtil
.
getRandomNum
(
4
));
return
sb
.
toString
();
}
/**
* 生成-信用流水账目no
*/
public
static
String
createPayCreditNo
()
{
StringBuffer
sb
=
new
StringBuffer
();
sb
.
append
(
"T"
);
sb
.
append
(
TDateUtil
.
getCurrentDateByType
(
"yyyyMMddHHmm"
));
sb
.
append
(
CodeUtil
.
getRandomNum
(
4
));
return
sb
.
toString
();
}
/**
* 生成-飞手工资流水账目no
*/
public
static
String
createPayWagNo
()
{
StringBuffer
sb
=
new
StringBuffer
();
sb
.
append
(
"T"
);
sb
.
append
(
TDateUtil
.
getCurrentDateByType
(
"yyyyMMddHHmm"
));
sb
.
append
(
CodeUtil
.
getRandomNum
(
4
));
return
sb
.
toString
();
}
/**
* 生成订单no
*/
public
static
String
createOrderTaskNO
()
{
StringBuffer
sb
=
new
StringBuffer
();
sb
.
append
(
"D"
);
sb
.
append
(
TDateUtil
.
getCurrentDateByType
(
"yyyyMMddHHmm"
));
sb
.
append
(
CodeUtil
.
getRandomNum
(
4
));
return
sb
.
toString
();
}
/**
* 生成-信用返利账目no
*/
public
static
String
createPayRebateNo
()
{
StringBuffer
sb
=
new
StringBuffer
();
sb
.
append
(
"T"
);
sb
.
append
(
TDateUtil
.
getCurrentDateByType
(
"yyyyMMddHHmm"
));
sb
.
append
(
CodeUtil
.
getRandomNum
(
4
));
return
sb
.
toString
();
}
/**
* 生成行业no
*/
public
static
String
createIndustryNO
()
{
StringBuffer
sb
=
new
StringBuffer
();
sb
.
append
(
"HY"
);
sb
.
append
(
TDateUtil
.
getCurrentDateByType
(
"yyyyMMddHHmm"
));
sb
.
append
(
CodeUtil
.
getRandomNum
(
4
));
return
sb
.
toString
();
}
/**
* 生成服务no
*/
public
static
String
createInspectionNO
()
{
StringBuffer
sb
=
new
StringBuffer
();
sb
.
append
(
"FW"
);
sb
.
append
(
TDateUtil
.
getCurrentDateByType
(
"yyyyMMddHHmm"
));
sb
.
append
(
CodeUtil
.
getRandomNum
(
4
));
return
sb
.
toString
();
}
/**
* 生成服务no
*/
public
static
String
createRoleNo
()
{
StringBuffer
sb
=
new
StringBuffer
();
sb
.
append
(
"JS"
);
sb
.
append
(
CodeUtil
.
getRandomNum
(
4
));
return
sb
.
toString
();
}
/**
* 生成商品编号
*
* @return
*/
public
static
String
createWareID
()
{
return
"ID"
+
CodeUtil
.
getRandomNum
(
10
);
}
/**
* 生成云仓订单编号
*/
public
static
String
createRepoOrderNo
()
{
StringBuffer
sb
=
new
StringBuffer
();
sb
.
append
(
"R"
);
sb
.
append
(
TDateUtil
.
getCurrentDateByType
(
"yyyyMMddHHmm"
));
sb
.
append
(
CodeUtil
.
getRandomNum
(
4
));
return
sb
.
toString
();
}
/**
* 云仓现金流水
*/
public
static
String
createRepoCashNo
()
{
StringBuffer
sb
=
new
StringBuffer
();
sb
.
append
(
"J"
);
sb
.
append
(
TDateUtil
.
getCurrentDateByType
(
"yyyyMMddHHmm"
));
sb
.
append
(
CodeUtil
.
getRandomNum
(
4
));
return
sb
.
toString
();
}
/**
* 生成商品编号
*
* @return
*/
public
static
String
createDeviceCode
()
{
return
"DC"
+
CodeUtil
.
getRandomNum
(
6
);
}
/**
* 云仓现金流水
*/
public
static
String
createOrderRefund
()
{
StringBuffer
sb
=
new
StringBuffer
();
sb
.
append
(
"RD"
);
sb
.
append
(
TDateUtil
.
getCurrentDateByType
(
"yyyyMMddHHmm"
));
sb
.
append
(
CodeUtil
.
getRandomNum
(
4
));
return
sb
.
toString
();
}
/**
* 返祖订单号
*/
public
static
String
createShareOrderNo
()
{
StringBuffer
sb
=
new
StringBuffer
();
sb
.
append
(
"GX"
);
sb
.
append
(
TDateUtil
.
getCurrentDateByType
(
"yyyyMMddHHmm"
));
sb
.
append
(
CodeUtil
.
getRandomNum
(
4
));
return
sb
.
toString
();
}
/**
* 型号编号
*/
public
static
String
createDeviceModelNo
()
{
return
"DM"
+
CodeUtil
.
getRandomNum
(
8
);
}
/**
* 仓库编号
*/
public
static
String
createRepoNo
()
{
return
"RN"
+
CodeUtil
.
getRandomNum
(
8
);
}
public
static
String
uavOrderCode
(
Long
id
)
{
StringBuffer
sb
=
new
StringBuffer
();
sb
.
append
(
"UD"
);
sb
.
append
(
TDateUtil
.
getCurrentDateByType
(
"yyyyMMddHHmmss"
));
sb
.
append
(
CodeUtil
.
getRandomNum
(
4
));
return
sb
.
toString
();
}
/**
* 活动编号
*/
public
static
String
generateActivityNo
()
{
return
"AC"
+
CodeUtil
.
getRandomNum
(
5
);
}
}
src/main/java/com/mmc/payment/common/Create.java
0 → 100644
浏览文件 @
18b7ef67
package
com
.
mmc
.
payment
.
common
;
/**
* @Author small
* @Date 2023/5/24 10:05
* @Version 1.0
*/
public
interface
Create
{
}
src/main/java/com/mmc/payment/common/Freeze.java
0 → 100644
浏览文件 @
18b7ef67
package
com
.
mmc
.
payment
.
common
;
/**
* @Author small
* @Date 2023/5/23 19:18
* @Version 1.0
*/
public
interface
Freeze
{
}
src/main/java/com/mmc/payment/common/JsonUtil.java
0 → 100644
浏览文件 @
18b7ef67
package
com
.
mmc
.
payment
.
common
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.serializer.SerializerFeature
;
import
java.io.*
;
import
java.util.List
;
/**
* @Author small
* @Date 2023/5/23 19:31
* @Version 1.0
*/
public
class
JsonUtil
{
public
static
void
main
(
String
[]
args
)
{
String
array
=
"[1,24,23]"
;
List
<
Integer
>
list
=
JSONArray
.
parseArray
(
array
,
Integer
.
class
);
System
.
out
.
println
(
list
.
get
(
2
));
}
/**
* 把Java对象转换成json字符串
*
* @param object 待转化为JSON字符串的Java对象
* @return json 串 or null
*/
public
static
String
parseObjToJson
(
Object
object
)
{
String
string
=
null
;
try
{
string
=
JSONObject
.
toJSONString
(
object
);
}
catch
(
Exception
e
)
{
// LOGGER.error(e.getMessage());
}
return
string
;
}
/**
* 将Json字符串信息转换成对应的Java对象
*
* @param json json字符串对象
* @param c 对应的类型
*/
public
static
<
T
>
T
parseJsonToObj
(
String
json
,
Class
<
T
>
c
)
{
try
{
JSONObject
jsonObject
=
JSON
.
parseObject
(
json
);
return
JSON
.
toJavaObject
(
jsonObject
,
c
);
}
catch
(
Exception
e
)
{
// LOGGER.error(e.getMessage());
}
return
null
;
}
/**
* 读取json文件
*
* @param fileName
* @return
*/
public
static
String
readJsonFile
(
String
fileName
)
{
String
jsonStr
=
""
;
try
{
File
jsonFile
=
new
File
(
fileName
);
FileReader
fileReader
=
new
FileReader
(
jsonFile
);
Reader
reader
=
new
InputStreamReader
(
new
FileInputStream
(
jsonFile
),
"utf-8"
);
int
ch
=
0
;
StringBuffer
sb
=
new
StringBuffer
();
while
((
ch
=
reader
.
read
())
!=
-
1
)
{
sb
.
append
((
char
)
ch
);
}
fileReader
.
close
();
reader
.
close
();
jsonStr
=
sb
.
toString
();
return
jsonStr
;
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
return
null
;
}
}
/**
* 将JSON数据格式化并保存到文件中
*
* @param jsonData 需要输出的json数
* @param filePath 输出的文件地址
* @return
*/
public
static
boolean
createJsonFile
(
Object
jsonData
,
String
filePath
)
{
String
content
=
JSON
.
toJSONString
(
jsonData
,
SerializerFeature
.
PrettyFormat
,
SerializerFeature
.
WriteMapNullValue
,
SerializerFeature
.
WriteDateUseDateFormat
);
// 标记文件生成是否成功
boolean
flag
=
true
;
// 生成json格式文件
try
{
// 保证创建一个新文件
File
file
=
new
File
(
filePath
);
if
(!
file
.
getParentFile
().
exists
())
{
// 如果父目录不存在,创建父目录
file
.
getParentFile
().
mkdirs
();
}
if
(
file
.
exists
())
{
// 如果已存在,删除旧文件
file
.
delete
();
}
file
.
createNewFile
();
// 将格式化后的字符串写入文件
Writer
write
=
new
OutputStreamWriter
(
new
FileOutputStream
(
file
),
"UTF-8"
);
write
.
write
(
content
);
write
.
flush
();
write
.
close
();
}
catch
(
Exception
e
)
{
flag
=
false
;
e
.
printStackTrace
();
}
return
flag
;
}
}
src/main/java/com/mmc/payment/common/Page.java
0 → 100644
浏览文件 @
18b7ef67
package
com
.
mmc
.
payment
.
common
;
/**
* @Author small
* @Date 2023/5/23 19:14
* @Version 1.0
*/
public
interface
Page
{
}
src/main/java/com/mmc/payment/common/PageResult.java
0 → 100644
浏览文件 @
18b7ef67
package
com
.
mmc
.
payment
.
common
;
import
com.mmc.payment.model.qo.BaseInfoQO
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
/**
* @Author small
* @Date 2023/5/23 19:17
* @Version 1.0
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
PageResult
<
T
>
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
2848996493573325801L
;
private
int
pageNo
;
// 分页起始页
private
int
pageSize
;
// 每页记录数
private
T
list
;
// 返回的记录集合
private
long
totalCount
;
// 总记录条数
private
long
totalPage
;
// 总页数
public
static
PageResult
buildPage
(
int
pageNo
,
int
pageSize
,
int
totalCount
)
{
PageResult
page
=
new
PageResult
();
page
.
pageNo
=
pageNo
;
page
.
pageSize
=
pageSize
;
page
.
totalCount
=
totalCount
;
page
.
totalPage
=
(
totalCount
%
pageSize
==
0
)
?
(
totalCount
/
pageSize
)
:
(
totalCount
/
pageSize
+
1
);
return
page
;
}
public
static
<
T
>
PageResult
buildPage
(
int
pageNo
,
int
pageSize
,
int
totalCount
,
T
list
)
{
PageResult
page
=
PageResult
.
buildPage
(
pageNo
,
pageSize
,
totalCount
);
page
.
setList
(
list
);
return
page
;
}
public
static
PageResult
buildPage
(
BaseInfoQO
qo
,
int
totalCount
)
{
PageResult
page
=
new
PageResult
();
page
.
pageNo
=
qo
.
getPageNo
();
Integer
pageSize
=
qo
.
getPageSize
();
page
.
pageSize
=
pageSize
;
page
.
totalCount
=
totalCount
;
page
.
totalPage
=
(
totalCount
%
pageSize
==
0
)
?
(
totalCount
/
pageSize
)
:
(
totalCount
/
pageSize
+
1
);
return
page
;
}
}
src/main/java/com/mmc/payment/common/RedisConstant.java
0 → 100644
浏览文件 @
18b7ef67
package
com
.
mmc
.
payment
.
common
;
/**
* @Author small
* @Date 2023/5/23 19:30
* @Version 1.0
*/
public
class
RedisConstant
{
/**
* 验证码-key
*/
public
final
static
String
VERIFYCODEKEY
=
"verifyCode"
;
/**
* 电话号码-key
*/
public
final
static
String
PHONENUMKEY
=
"phoneNum"
;
/**
* 当天用户量统计-key
*/
public
final
static
String
ACTIVE_USER_TOTAL_COUNT_TODAY
=
"active_user_total_count_today"
;
/**
* 后台-当天用户量统计-key
*/
public
final
static
String
ADMIN_ACTIVE_COUNT_TODAY
=
"admin_active_count_today"
;
/**
* 云享飞-当天用户量统计-key
*/
public
final
static
String
YXF_ACTIVE_COUNT_TODAY
=
"yxf_active_count_today"
;
/**
* 云飞手-当天用户量统计-key
*/
public
final
static
String
YFS_ACTIVE_COUNT_TODAY
=
"yfs_active_count_today"
;
/**
* 云仓-当天用户量统计-key
*/
public
final
static
String
YC_ACTIVE_COUNT_TODAY
=
"yc_active_count_today"
;
/**
* 登录信息token前缀
*/
public
final
static
String
LOGING_TOKEN_BEFORE
=
"CLOUD-SHARED-FLIGHT-USERID@"
;
/**
* token黑名单-key
*
* @param userId
* @return
*/
/**
* 实名认证 redis 的键
*/
public
final
static
String
REALNAMEREDISKEY
=
"realName"
;
/**
* token失效
*/
public
final
static
String
DISABLE_TOKEN
=
"DISABLE-TOKEN"
;
/**
* 分片上传的key
*
* @param userId
* @return
*/
public
final
static
String
PART_UPLOAD
=
"UPLOAD_PART_"
;
/**
* 飞手端-假数据-分页信息-可以
*/
public
final
static
String
FLYER_DUMMY_DATA_PAGE
=
"FLYER_DUMMY_DATA_PAGE"
;
/**
* token失效列表的key
*/
public
final
static
String
DISABLE_TOKEN_LIST
=
"DISABLE_TOKEN_LIST"
;
/**
* 无人机城的订单状态
*/
public
final
static
String
UAV_MALL_ORDER_STATUS
=
"UAV_MALL_ORDER_STATUS"
;
/**
* 无人机城的快递公司编码
*/
public
final
static
String
UAV_MALL_EXP_COM
=
"UAV_MALL_EXP_COM"
;
/**
* 无人机城的快递状态码
*/
public
final
static
String
UAV_MALL_EXP_STATUS
=
"UAV_MALL_EXP_STATUS"
;
/**
* 微信access_token
*
* @param userId
* @return
*/
public
final
static
String
WX_ACCESS_TOKEN_BEFORE
=
"WX_ACCESS_TOKEN_"
;
public
final
static
String
REPO_SEND_PAY_MESSAGE
=
"REPO_ORDER_REMIND_PAY_"
;
public
final
static
String
FLYER_PUBLIC_DEFAULT_NAME
=
"FLYER_PUBLIC_DEFAULT_NAME"
;
public
final
static
String
EVALUATION
=
"EVALUATION"
;
public
final
static
String
FLYER_DUMMY_DATA
=
"FLYER_DUMMY_DATA_KEY"
;
public
final
static
String
UAV_DUMMY_DATA
=
"UAV_DUMMY_DATA_KEY"
;
/**
* tagInfoAllot表的缓存key
*/
public
final
static
String
TAGINFOALLOT_QUESTALL
=
"csf-service-system:tagInfoAllot:questAll"
;
public
static
String
getDisableTokenKey
(
String
accountId
,
String
roleId
,
String
tokenType
)
{
StringBuffer
key
=
new
StringBuffer
();
key
.
append
(
RedisConstant
.
DISABLE_TOKEN
);
key
.
append
(
"_ROLE_"
);
key
.
append
(
roleId
);
key
.
append
(
"_"
);
key
.
append
(
accountId
);
return
key
.
toString
();
}
/**
* 生成唯一的分片上传key
*
* @param uploadId
* @return
*/
public
static
String
createPartUploadKey
(
String
uploadId
)
{
StringBuffer
key
=
new
StringBuffer
();
key
.
append
(
uploadId
);
return
key
.
toString
();
}
/**
* 生成微信api的access_token的key
*/
public
static
String
createWxToken
(
String
wxAppid
)
{
StringBuffer
key
=
new
StringBuffer
();
key
.
append
(
RedisConstant
.
WX_ACCESS_TOKEN_BEFORE
);
key
.
append
(
wxAppid
);
return
key
.
toString
();
}
/**
* 表单重复提交key
*/
public
static
String
createRepeatKey
(
String
token
,
String
url
,
String
params
)
{
StringBuffer
key
=
new
StringBuffer
();
key
.
append
(
token
);
key
.
append
(
url
);
key
.
append
(
params
);
return
key
.
toString
();
}
public
static
String
createRepeatKey
(
String
token
,
String
url
)
{
return
RedisConstant
.
createRepeatKey
(
token
,
url
,
""
);
}
/**
* 登录缓存信息
*/
public
static
String
createLoginCacheKey
(
String
tokenType
,
Integer
id
)
{
StringBuffer
key
=
new
StringBuffer
();
key
.
append
(
tokenType
);
key
.
append
(
"_"
);
key
.
append
(
id
);
return
key
.
toString
();
}
/**
* 每位账号的的token的key的前缀
*/
public
static
String
tokenPreFix
(
String
tokenType
,
String
roleId
)
{
StringBuffer
key
=
new
StringBuffer
();
key
.
append
(
tokenType
);
key
.
append
(
"_ROLE_"
);
key
.
append
(
roleId
);
key
.
append
(
"_"
);
return
key
.
toString
();
}
/**
* 每位账号的token保存的key
*/
public
static
String
createLoginTokenKey
(
String
tokenType
,
String
roleId
,
String
accountId
)
{
StringBuffer
key
=
new
StringBuffer
();
key
.
append
(
RedisConstant
.
tokenPreFix
(
tokenType
,
roleId
));
key
.
append
(
accountId
);
return
key
.
toString
();
}
public
static
String
createRepoOrderOver
(
Integer
orderInfoId
)
{
StringBuffer
key
=
new
StringBuffer
();
key
.
append
(
RedisConstant
.
REPO_SEND_PAY_MESSAGE
);
key
.
append
(
orderInfoId
);
return
key
.
toString
();
}
public
static
String
getLockKey
(
String
userId
,
String
tokenType
,
String
path
)
{
StringBuffer
sb
=
new
StringBuffer
();
sb
.
append
(
userId
);
sb
.
append
(
"_"
);
sb
.
append
(
tokenType
);
sb
.
append
(
"_"
);
sb
.
append
(
path
);
return
sb
.
toString
();
}
public
static
String
createInspection
(
Integer
id
)
{
StringBuffer
key
=
new
StringBuffer
();
key
.
append
(
RedisConstant
.
EVALUATION
);
key
.
append
(
id
);
return
key
.
toString
();
}
public
static
String
accessTokenKey
(
String
clientId
,
Integer
roleId
,
String
grantType
)
{
StringBuilder
key
=
new
StringBuilder
();
key
.
append
(
"OAUTH_"
);
key
.
append
(
clientId
);
key
.
append
(
"_"
);
key
.
append
(
roleId
);
key
.
append
(
"_"
);
key
.
append
(
grantType
);
return
key
.
toString
();
}
public
static
String
getCompanyChildKey
(
Integer
companyId
){
StringBuilder
key
=
new
StringBuilder
();
key
.
append
(
"company_cache:"
);
key
.
append
(
companyId
);
return
key
.
toString
();
}
public
static
String
getXEAccessTokenKey
(){
StringBuilder
key
=
new
StringBuilder
();
key
.
append
(
"XE_ACCESS_TOKEN"
);
return
key
.
toString
();
}
}
src/main/java/com/mmc/payment/common/Refund.java
0 → 100644
浏览文件 @
18b7ef67
package
com
.
mmc
.
payment
.
common
;
/**
* @Author small
* @Date 2023/5/24 10:05
* @Version 1.0
*/
public
interface
Refund
{
}
src/main/java/com/mmc/payment/common/ResultBody.java
0 → 100644
浏览文件 @
18b7ef67
package
com
.
mmc
.
payment
.
common
;
import
com.alibaba.fastjson.JSONObject
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
/**
* @Author small
* @Date 2023/5/23 19:19
* @Version 1.0
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
//@ApiModel(value = "com.mmc.result.ResultBody", description = "请求响应体")
public
class
ResultBody
<
T
>
implements
Serializable
{
private
static
final
long
serialVersionUID
=
6341937455634693363L
;
/**
* 响应代码
*/
@ApiModelProperty
(
value
=
"响应代码"
)
private
String
code
;
/**
* 响应消息
*/
@ApiModelProperty
(
value
=
"响应消息"
)
private
String
message
;
/**
* 响应结果
*/
@ApiModelProperty
(
value
=
"响应结果"
)
private
T
result
;
public
ResultBody
(
BaseErrorInfoInterface
errorInfo
)
{
this
.
code
=
errorInfo
.
getResultCode
();
this
.
message
=
errorInfo
.
getResultMsg
();
}
/**
* 成功
*
* @return
*/
public
static
ResultBody
success
()
{
return
success
(
null
);
}
/**
* 成功
*
* @param data
* @return
*/
public
static
<
T
>
ResultBody
success
(
T
data
)
{
ResultBody
rb
=
new
ResultBody
();
rb
.
setCode
(
ResultEnum
.
SUCCESS
.
getResultCode
());
rb
.
setMessage
(
ResultEnum
.
SUCCESS
.
getResultMsg
());
rb
.
setResult
(
data
);
return
rb
;
}
/**
* 成功
*
* **/
public
static
ResultBody
success1
(
ResultEnum
enums
){
ResultBody
rb
=
new
ResultBody
();
rb
.
setCode
(
"200"
);
rb
.
setMessage
(
enums
.
getResultMsg
());
rb
.
setResult
(
null
);
return
rb
;
}
public
void
buildSuccess
()
{
this
.
setCode
(
ResultEnum
.
SUCCESS
.
getResultCode
());
this
.
setMessage
(
ResultEnum
.
SUCCESS
.
getResultMsg
());
}
/**
* 失败
*/
public
static
ResultBody
error
(
BaseErrorInfoInterface
errorInfo
)
{
ResultBody
rb
=
new
ResultBody
();
rb
.
setCode
(
errorInfo
.
getResultCode
());
rb
.
setMessage
(
errorInfo
.
getResultMsg
());
rb
.
setResult
(
null
);
return
rb
;
}
/**
* 失败
*/
public
static
ResultBody
error
(
String
code
,
String
message
)
{
ResultBody
rb
=
new
ResultBody
();
rb
.
setCode
(
code
);
rb
.
setMessage
(
message
);
rb
.
setResult
(
null
);
return
rb
;
}
/**
* 失败
*/
public
static
ResultBody
error
(
ResultEnum
enums
)
{
ResultBody
rb
=
new
ResultBody
();
rb
.
setCode
(
enums
.
getResultCode
());
rb
.
setMessage
(
enums
.
getResultMsg
());
rb
.
setResult
(
null
);
return
rb
;
}
/**
* 失败
*/
public
static
ResultBody
error
(
String
message
)
{
ResultBody
rb
=
new
ResultBody
();
rb
.
setCode
(
"-1"
);
rb
.
setMessage
(
message
);
rb
.
setResult
(
null
);
return
rb
;
}
/**
* 失败
*/
public
static
ResultBody
error
(
ResultEnum
enums
,
Object
data
)
{
ResultBody
rb
=
new
ResultBody
();
rb
.
setCode
(
enums
.
getResultCode
());
rb
.
setMessage
(
enums
.
getResultMsg
());
rb
.
setResult
(
data
);
return
rb
;
}
public
static
boolean
isSuccess
(
ResultBody
res
)
{
return
res
.
getCode
().
equals
(
ResultEnum
.
SUCCESS
.
getResultCode
());
}
@Override
public
String
toString
()
{
return
JSONObject
.
toJSONString
(
this
);
}
}
src/main/java/com/mmc/payment/common/ResultEnum.java
0 → 100644
浏览文件 @
18b7ef67
差异被折叠。
点击展开。
src/main/java/com/mmc/payment/common/Share.java
0 → 100644
浏览文件 @
18b7ef67
package
com
.
mmc
.
payment
.
common
;
/**
* @Author small
* @Date 2023/5/24 10:05
* @Version 1.0
*/
public
interface
Share
{
}
src/main/java/com/mmc/payment/common/TDateUtil.java
0 → 100644
浏览文件 @
18b7ef67
差异被折叠。
点击展开。
src/main/java/com/mmc/payment/common/Update.java
0 → 100644
浏览文件 @
18b7ef67
package
com
.
mmc
.
payment
.
common
;
/**
* @Author small
* @Date 2023/5/23 19:40
* @Version 1.0
*/
public
interface
Update
{
}
src/main/java/com/mmc/payment/config/AuthHandler.java
0 → 100644
浏览文件 @
18b7ef67
package
com
.
mmc
.
payment
.
config
;
import
com.alibaba.fastjson.JSONArray
;
import
com.mmc.payment.common.JsonUtil
;
import
com.mmc.payment.common.RedisConstant
;
import
com.mmc.payment.common.ResultEnum
;
import
com.mmc.payment.exception.BizException
;
import
com.mmc.payment.jwt.JwtConstant
;
import
com.mmc.payment.model.dto.BaseAccountDTO
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.redis.core.StringRedisTemplate
;
import
org.springframework.stereotype.Component
;
import
org.springframework.util.CollectionUtils
;
import
org.springframework.util.StringUtils
;
import
java.util.*
;
import
java.util.concurrent.TimeUnit
;
/**
* @Author small
* @Date 2023/5/23 19:22
* @Version 1.0
*/
@Component
public
class
AuthHandler
{
@Autowired
private
StringRedisTemplate
stringRedisTemplate
;
/**
* 获取当前用户
*
* @param request
* @return
*/
// public CurrentUserDTO getCurrentUser(HttpServletRequest request) {
// // 登录未做好-统一通过此方法获取当前用户信息
// Integer id = Integer.parseInt(request.getHeader(JwtConstant.USERIDKEY).toString());
// Integer roleId = Integer.parseInt(request.getHeader(JwtConstant.ROLEIDKEY).toString());
// return CurrentUserDTO.builder().id(id).roleId(roleId).build();
// }
/**
* 获取当前登录账号信息
*/
public
BaseAccountDTO
getCurrentAccount
(
String
token
)
{
// 获取登录的基本信息
String
json
=
stringRedisTemplate
.
opsForValue
().
get
(
token
);
if
(
StringUtils
.
isEmpty
(
json
))
{
throw
new
BizException
(
ResultEnum
.
LOGIN_ACCOUNT_STATUS_ERROR
);
}
BaseAccountDTO
account
=
JsonUtil
.
parseJsonToObj
(
json
,
BaseAccountDTO
.
class
);
// 如果是PC管理端-获取部门缓存信息
if
(
JwtConstant
.
SXTB_ACCOUNT_TOKEN
.
equals
(
account
.
getTokenPort
()))
{
account
.
getCompanyInfo
().
setCompanys
(
this
.
getCompanys
(
account
.
getCompanyInfo
().
getId
()));
}
return
account
;
}
public
String
addLoginCache
(
Integer
userId
,
Integer
roleId
,
String
tokenType
,
BaseAccountDTO
loginInfo
)
{
Map
<
String
,
Object
>
map
=
new
HashMap
<
String
,
Object
>();
map
.
put
(
JwtConstant
.
USERIDKEY
,
userId
);
map
.
put
(
JwtConstant
.
ROLEIDKEY
,
roleId
);
map
.
put
(
JwtConstant
.
TOKEN_TYPE
,
tokenType
);
String
token
=
JwtUtil
.
createJwt
(
map
);
loginInfo
.
setTokenPort
(
tokenType
);
// 缓存登录token-jwt
stringRedisTemplate
.
opsForValue
().
set
(
RedisConstant
.
createLoginTokenKey
(
tokenType
,
roleId
.
toString
(),
userId
.
toString
()),
token
,
JwtConstant
.
EXPIRATION
,
TimeUnit
.
MILLISECONDS
);
// 平台PC管理端登录保存-单位的id及无限下级id集合
if
(
JwtConstant
.
SXTB_ACCOUNT_TOKEN
.
equals
(
tokenType
))
{
if
(
loginInfo
.
getCompanyInfo
()
!=
null
&&
!
CollectionUtils
.
isEmpty
(
loginInfo
.
getCompanyInfo
().
getCompanys
()))
{
List
<
Integer
>
companys
=
loginInfo
.
getCompanyInfo
().
getCompanys
();
this
.
refreshCompanys
(
companys
,
loginInfo
.
getCompanyInfo
().
getId
());
// 置为null--省内存
loginInfo
.
getCompanyInfo
().
setCompanys
(
null
);
}
}
// 缓存登录对象
stringRedisTemplate
.
opsForValue
().
set
(
token
,
JsonUtil
.
parseObjToJson
(
loginInfo
),
JwtConstant
.
EXPIRATION
,
TimeUnit
.
MILLISECONDS
);
return
token
;
}
/**
* 更新单位缓存
*
* @param companys
* @param companyId
*/
public
void
refreshCompanys
(
List
<
Integer
>
companys
,
Integer
companyId
)
{
String
key
=
RedisConstant
.
getCompanyChildKey
(
companyId
);
stringRedisTemplate
.
opsForValue
().
set
(
key
,
JsonUtil
.
parseObjToJson
(
companys
),
JwtConstant
.
EXPIRATION
,
TimeUnit
.
MILLISECONDS
);
}
public
List
<
Integer
>
getCompanys
(
Integer
companyId
)
{
String
key
=
RedisConstant
.
getCompanyChildKey
(
companyId
);
if
(
stringRedisTemplate
.
hasKey
(
key
))
{
String
json
=
stringRedisTemplate
.
opsForValue
().
get
(
key
);
if
(!
StringUtils
.
isEmpty
(
json
))
{
List
<
Integer
>
list
=
JSONArray
.
parseArray
(
json
,
Integer
.
class
);
return
list
;
}
}
return
new
ArrayList
<
Integer
>();
}
public
void
updateLoginCache
(
String
token
,
BaseAccountDTO
loginInfo
)
{
stringRedisTemplate
.
opsForValue
().
set
(
token
,
JsonUtil
.
parseObjToJson
(
loginInfo
),
JwtConstant
.
EXPIRATION
,
TimeUnit
.
MILLISECONDS
);
}
/**
* 检验缓存token是否存在
*
* @param token
* @return
*/
public
boolean
hasToken
(
String
token
)
{
return
stringRedisTemplate
.
hasKey
(
token
);
}
/**
* 检验token是否进了失效名单 && 检验token是否为最新token
*
* @param token
* @return
*/
public
boolean
isDisableToken
(
String
token
)
{
List
<
String
>
disableTokens
=
stringRedisTemplate
.
opsForList
().
range
(
RedisConstant
.
DISABLE_TOKEN_LIST
,
0
,
-
1
);
// 需要强制失效的token
return
(!
CollectionUtils
.
isEmpty
(
disableTokens
)
&&
disableTokens
.
contains
(
token
));
}
/**
* 检测是否为最新的token
*
* @param userId
* @param roleId
* @param tokenType
*/
public
boolean
isLatestToken
(
String
userId
,
String
roleId
,
String
tokenType
,
String
token
)
{
String
key
=
RedisConstant
.
createLoginTokenKey
(
tokenType
,
roleId
,
userId
);
return
(
token
.
equals
(
stringRedisTemplate
.
opsForValue
().
get
(
key
)));
}
public
String
getUserToken
(
Integer
userAccountId
,
Integer
roleId
,
String
tokenType
)
{
String
token
=
stringRedisTemplate
.
opsForValue
()
.
get
(
RedisConstant
.
createLoginTokenKey
(
tokenType
,
roleId
.
toString
(),
userAccountId
.
toString
()));
// 查询他的token
return
token
;
}
public
void
disableOneToken
(
Integer
userAccountId
,
Integer
roleId
,
String
tokenType
)
{
String
token
=
this
.
getUserToken
(
userAccountId
,
roleId
,
tokenType
);
// 查询他的token
if
(!
StringUtils
.
isEmpty
(
token
))
{
stringRedisTemplate
.
opsForList
().
leftPush
(
RedisConstant
.
DISABLE_TOKEN_LIST
,
token
);
// 加入token失效列表
}
String
cacheLoginKey
=
RedisConstant
.
createLoginCacheKey
(
tokenType
,
userAccountId
);
stringRedisTemplate
.
delete
(
cacheLoginKey
);
// 删除登录信息
}
public
void
disableListToken
(
List
<
Integer
>
userAccountIds
,
Integer
roleId
,
String
tokenType
)
{
Set
<
String
>
tokenKeyList
=
stringRedisTemplate
.
keys
(
RedisConstant
.
tokenPreFix
(
tokenType
,
roleId
.
toString
())
+
"*"
);
// 模糊查询所有key
if
(!
CollectionUtils
.
isEmpty
(
tokenKeyList
))
{
List
<
String
>
tokenList
=
stringRedisTemplate
.
opsForValue
().
multiGet
(
tokenKeyList
);
stringRedisTemplate
.
opsForList
().
leftPushAll
(
RedisConstant
.
DISABLE_TOKEN_LIST
,
tokenList
);
}
userAccountIds
.
forEach
(
id
->
{
String
cacheLoginKey
=
RedisConstant
.
createLoginCacheKey
(
tokenType
,
id
);
stringRedisTemplate
.
delete
(
cacheLoginKey
);
});
}
}
src/main/java/com/mmc/payment/config/JwtUtil.java
0 → 100644
浏览文件 @
18b7ef67
package
com
.
mmc
.
payment
.
config
;
import
com.mmc.payment.common.CodeUtil
;
import
com.mmc.payment.jwt.JwtConstant
;
import
io.jsonwebtoken.Claims
;
import
io.jsonwebtoken.JwtBuilder
;
import
io.jsonwebtoken.Jwts
;
import
io.jsonwebtoken.SignatureAlgorithm
;
import
javax.crypto.spec.SecretKeySpec
;
import
javax.xml.bind.DatatypeConverter
;
import
java.security.Key
;
import
java.util.Date
;
import
java.util.Map
;
/**
* @Author small
* @Date 2023/5/23 19:32
* @Version 1.0
*/
public
class
JwtUtil
{
/**
* 根据map中的信息生成token, tokenId为随机生成码,有效时间为24h
*
* @param claims 封装到token中的map
* @return
*/
public
static
String
createJwt
(
Map
<
String
,
Object
>
claims
)
{
return
createJwt
(
claims
,
JwtConstant
.
EXPIRATION
);
}
public
static
String
createJwt
(
Map
<
String
,
Object
>
claims
,
long
expiration
)
{
SignatureAlgorithm
signatureAlgorithm
=
SignatureAlgorithm
.
HS256
;
byte
[]
apiKeySecretBytes
=
DatatypeConverter
.
parseBase64Binary
(
JwtConstant
.
BASE64KEY
);
Key
signingKey
=
new
SecretKeySpec
(
apiKeySecretBytes
,
signatureAlgorithm
.
getJcaName
());
long
nowMillis
=
System
.
currentTimeMillis
();
long
expMillis
=
nowMillis
+
expiration
;
Date
now
=
new
Date
(
nowMillis
);
Date
exp
=
new
Date
(
expMillis
);
JwtBuilder
builder
=
Jwts
.
builder
().
setClaims
(
claims
).
setId
(
CodeUtil
.
randomCode
(
6
)).
setIssuedAt
(
now
)
.
setSubject
(
JwtConstant
.
SUBJECT
).
setIssuer
(
JwtConstant
.
ISSUER
).
signWith
(
signatureAlgorithm
,
signingKey
)
.
setExpiration
(
exp
);
return
builder
.
compact
();
}
/**
* 解析前端传来的token,解析成功则返回Claims,解析失败返回null;解析成功后可通过claims获取信息
*
* @param jwt
* @return
*/
public
static
Claims
parseJwt
(
String
jwt
)
{
Claims
claims
=
Jwts
.
parser
().
setSigningKey
(
DatatypeConverter
.
parseBase64Binary
(
JwtConstant
.
BASE64KEY
))
.
parseClaimsJws
(
jwt
).
getBody
();
return
claims
;
}
}
src/main/java/com/mmc/payment/config/RepeatSubmit.java
0 → 100644
浏览文件 @
18b7ef67
package
com
.
mmc
.
payment
.
config
;
import
java.lang.annotation.ElementType
;
import
java.lang.annotation.Retention
;
import
java.lang.annotation.RetentionPolicy
;
import
java.lang.annotation.Target
;
/**
* @Author small
* @Date 2023/5/24 10:03
* @Version 1.0
*/
@Target
(
ElementType
.
METHOD
)
// 作用于方法上
@Retention
(
RetentionPolicy
.
RUNTIME
)
// 运行时
public
@interface
RepeatSubmit
{
/**
* 设置请求锁定时间 默认5秒
*/
long
lockTime
()
default
5000L
;
/**
* 当发生重复提交时候默认返回的错误信息
*/
String
errMsg
()
default
"重复提交,请 second 秒后重试"
;
/**
* 是否允许lockTime时间内可以再次提交
*/
boolean
allowAgain
()
default
true
;
}
src/main/java/com/mmc/payment/config/RepoCashMethod.java
0 → 100644
浏览文件 @
18b7ef67
package
com
.
mmc
.
payment
.
config
;
/**
* @Author small
* @Date 2023/5/24 10:14
* @Version 1.0
*/
public
enum
RepoCashMethod
{
REG
(
100
,
"充值"
),
RENT
(
200
,
"邮寄"
),
CNO
(
300
,
"租赁结算"
),
REFUND
(
400
,
"退款"
),
DRAWAL
(
500
,
"提现"
),
HANDLER
(
600
,
"手动扣除"
);
RepoCashMethod
(
Integer
code
,
String
status
)
{
this
.
code
=
code
;
this
.
status
=
status
;
}
private
Integer
code
;
private
String
status
;
public
Integer
getCode
()
{
return
code
;
}
public
void
setCode
(
Integer
code
)
{
this
.
code
=
code
;
}
public
String
getStatus
()
{
return
status
;
}
public
void
setStatus
(
String
status
)
{
this
.
status
=
status
;
}
}
src/main/java/com/mmc/payment/config/UserPorts.java
0 → 100644
浏览文件 @
18b7ef67
package
com
.
mmc
.
payment
.
config
;
import
java.util.HashSet
;
import
java.util.Set
;
/**
* @Author small
* @Date 2023/5/23 19:15
* @Version 1.0
*/
public
class
UserPorts
{
public
static
final
String
USER_PORT
=
"USER_PORT"
;
public
static
final
String
FLYER_PORT
=
"FLYER_PORT"
;
public
static
final
String
REPO_PORT
=
"REPO_PORT"
;
public
static
final
String
MALL_PORT
=
"MALL_PORT"
;
public
static
final
Set
<
String
>
ports
=
new
HashSet
<
String
>();
static
{
ports
.
add
(
REPO_PORT
);
ports
.
add
(
USER_PORT
);
ports
.
add
(
FLYER_PORT
);
ports
.
add
(
MALL_PORT
);
}
}
src/main/java/com/mmc/payment/controller/RepoAccountController.java
0 → 100644
浏览文件 @
18b7ef67
package
com
.
mmc
.
payment
.
controller
;
import
com.mmc.payment.common.ResultBody
;
import
com.mmc.payment.config.AuthHandler
;
import
com.mmc.payment.jwt.JwtConstant
;
import
com.mmc.payment.model.dto.BaseAccountDTO
;
import
com.mmc.payment.model.dto.RepoAccountDTO
;
import
com.mmc.payment.model.qo.RepoAccountQO
;
import
com.mmc.payment.service.RepoAccountService
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiResponse
;
import
io.swagger.annotations.ApiResponses
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
javax.servlet.http.HttpServletRequest
;
/**
* @Author small
* @Date 2023/5/23 18:40
* @Version 1.0
*/
@Api
(
tags
=
{
"云仓-账号相关-接口"
})
@RestController
@RequestMapping
(
"/repoaccount/"
)
public
class
RepoAccountController
{
@Autowired
private
RepoAccountService
repoAccountService
;
@Autowired
private
AuthHandler
authHandler
;
@ApiOperation
(
value
=
"PC端-云仓-消耗管理"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
RepoAccountDTO
.
class
)})
@PostMapping
(
"listPagePayManager"
)
public
ResultBody
listPagePayManager
(
HttpServletRequest
request
,
@RequestBody
RepoAccountQO
param
)
{
return
ResultBody
.
success
(
repoAccountService
.
listPagePayManager
(
param
,
this
.
getCurrentAccount
(
request
)));
}
/**
* 获取当前登录账号信息
*/
public
BaseAccountDTO
getCurrentAccount
(
HttpServletRequest
request
)
{
String
token
=
request
.
getHeader
(
JwtConstant
.
TOKENKEY
);
return
authHandler
.
getCurrentAccount
(
token
);
}
}
src/main/java/com/mmc/payment/controller/RepoCashController.java
0 → 100644
浏览文件 @
18b7ef67
package
com
.
mmc
.
payment
.
controller
;
import
com.mmc.payment.common.BaseController
;
import
com.mmc.payment.common.ResultBody
;
import
com.mmc.payment.config.RepeatSubmit
;
import
com.mmc.payment.model.dto.RepoCashDTO
;
import
com.mmc.payment.model.qo.RepoCashQO
;
import
com.mmc.payment.model.vo.RepoCashVO
;
import
com.mmc.payment.service.RepoCashService
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiResponse
;
import
io.swagger.annotations.ApiResponses
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
import
javax.servlet.http.HttpServletRequest
;
/**
* @Author small
* @Date 2023/5/24 9:53
* @Version 1.0
*/
@Api
(
tags
=
{
"消耗-现金-接口"
})
@RestController
@RequestMapping
(
"/repocash/"
)
public
class
RepoCashController
extends
BaseController
{
@Autowired
private
RepoCashService
repoCashService
;
@ApiOperation
(
value
=
"余额变更-分页-列表"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
RepoCashDTO
.
class
)
})
@PostMapping
(
"listPageCash"
)
public
ResultBody
listPageCash
(
@RequestBody
RepoCashQO
param
)
{
return
ResultBody
.
success
(
repoCashService
.
listPageRepoCash
(
param
));
}
@ApiOperation
(
value
=
"余额变更-修改备注"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
ResultBody
.
class
)
})
@GetMapping
(
"updateCashRemark"
)
public
ResultBody
updateCashRemark
(
@RequestParam
Integer
id
,
@RequestParam
()
String
remark
)
{
repoCashService
.
updateCashRemark
(
id
,
remark
);
return
ResultBody
.
success
();
}
@ApiOperation
(
value
=
"现金-充值"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
ResultBody
.
class
)
})
@RepeatSubmit
@PostMapping
(
"reqCash"
)
public
ResultBody
reqCash
(
HttpServletRequest
request
,
@RequestBody
RepoCashVO
param
)
{
return
repoCashService
.
reqCash
(
this
.
getCurrentAccount
(
request
),
param
);
}
@ApiOperation
(
value
=
"现金-手动扣除"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
ResultBody
.
class
)
})
@RepeatSubmit
@PostMapping
(
"dedCash"
)
public
ResultBody
dedCash
(
HttpServletRequest
request
,
@RequestBody
RepoCashVO
param
)
{
return
repoCashService
.
dedCash
(
this
.
getCurrentAccount
(
request
),
param
);
}
@ApiOperation
(
value
=
"feign-查询退款金额"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
RepoCashDTO
.
class
)
})
@GetMapping
(
"feignRefundInfo"
)
public
RepoCashDTO
feignRefundInfo
(
@RequestParam
String
refundNo
)
{
return
repoCashService
.
getRefundInfo
(
refundNo
);
}
}
src/main/java/com/mmc/payment/dao/RepoAccountDao.java
0 → 100644
浏览文件 @
18b7ef67
package
com
.
mmc
.
payment
.
dao
;
import
com.mmc.payment.entity.RepoAccountDO
;
import
com.mmc.payment.entity.RepoWalletDO
;
import
com.mmc.payment.model.qo.RepoAccountQO
;
import
org.apache.ibatis.annotations.Mapper
;
import
java.util.List
;
/**
* @Author small
* @Date 2023/5/23 19:37
* @Version 1.0
*/
@Mapper
public
interface
RepoAccountDao
{
List
<
RepoAccountDO
>
listPagePayManager
(
RepoAccountQO
param
);
int
countPagePayManager
(
RepoAccountQO
param
);
List
<
RepoWalletDO
>
listWalletInfo
(
RepoAccountQO
param
);
}
src/main/java/com/mmc/payment/dao/RepoCashDao.java
0 → 100644
浏览文件 @
18b7ef67
package
com
.
mmc
.
payment
.
dao
;
import
com.mmc.payment.entity.RepoCashDO
;
import
com.mmc.payment.model.qo.RepoCashQO
;
import
org.apache.ibatis.annotations.Mapper
;
import
java.util.List
;
/**
* @Author small
* @Date 2023/5/24 10:10
* @Version 1.0
*/
@Mapper
public
interface
RepoCashDao
{
RepoCashDO
getRefundCashInfo
(
String
refundNo
);
void
insertRepoCash
(
RepoCashDO
rc
);
void
updateCashRemark
(
Integer
id
,
String
remark
);
List
<
RepoCashDO
>
listPagePFRepoCash
(
RepoCashQO
param
);
int
countPagePFRepoCash
(
RepoCashQO
param
);
}
src/main/java/com/mmc/payment/entity/RepoAccountDO.java
0 → 100644
浏览文件 @
18b7ef67
package
com
.
mmc
.
payment
.
entity
;
import
com.mmc.payment.model.dto.RepoAccountDTO
;
import
com.mmc.payment.model.dto.RepoRcdTeamDTO
;
import
com.mmc.payment.model.dto.RepoRebateWalletDTO
;
import
com.mmc.payment.model.vo.RepoAccountVO
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
org.apache.commons.lang3.StringUtils
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.util.Arrays
;
import
java.util.Date
;
import
java.util.HashSet
;
/**
* @Author small
* @Date 2023/5/23 19:39
* @Version 1.0
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
RepoAccountDO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
6313612168648022544L
;
private
Integer
id
;
private
String
uid
;
private
String
accountName
;
private
Integer
accountType
;
private
String
phoneNum
;
private
Integer
realAuthStatus
;
private
Integer
entAuthStatus
;
private
Integer
channelAuthStatus
;
private
Integer
channelClass
;
private
String
openId
;
private
String
unionId
;
private
String
nickName
;
private
String
resAddress
;
private
String
headerImg
;
private
BigDecimal
lon
;
private
BigDecimal
lat
;
private
String
ports
;
private
String
remark
;
private
Integer
deleted
;
private
Date
createTime
;
private
Date
updateTime
;
private
Integer
sale
;
private
Integer
source
;
private
Integer
rcdCompanyId
;
private
RepoAccountDO
rcdRepo
;
/**
* 额外字段
*
*/
private
Integer
white
;
private
Date
entAuthTime
;
private
String
entName
;
private
Date
rcdCreateTime
;
private
String
rcdRemark
;
public
RepoAccountDTO
buildRepoAccountDTO
()
{
Integer
white
=
0
;
if
(
rcdRepo
!=
null
&&
rcdRepo
.
getSale
()
==
1
){
white
=
1
;
}
return
RepoAccountDTO
.
builder
().
id
(
this
.
id
).
uid
(
this
.
uid
).
accountName
(
this
.
accountName
)
.
accountType
(
this
.
accountType
).
phoneNum
(
this
.
phoneNum
).
realAuthStatus
(
this
.
realAuthStatus
)
.
entAuthStatus
(
this
.
entAuthStatus
).
channelAuthStatus
(
this
.
channelAuthStatus
).
nickName
(
this
.
nickName
)
.
resAddress
(
this
.
resAddress
).
headerImg
(
this
.
headerImg
).
lon
(
this
.
lon
).
lat
(
this
.
lat
).
remark
(
this
.
remark
)
.
deleted
(
this
.
deleted
).
createTime
(
this
.
createTime
).
updateTime
(
this
.
updateTime
)
.
ports
(
StringUtils
.
isEmpty
(
this
.
ports
)
?
null
:
new
HashSet
<
String
>(
Arrays
.
asList
(
this
.
ports
.
split
(
","
))))
.
entAuthTime
(
this
.
entAuthTime
).
unionId
(
this
.
unionId
).
entName
(
this
.
entName
).
openId
(
this
.
openId
)
.
rcdUid
(
this
.
rcdRepo
==
null
?
null
:
this
.
rcdRepo
.
getUid
())
.
rcdAccountId
(
this
.
rcdRepo
==
null
?
null
:
this
.
rcdRepo
.
getId
())
.
rcdAccountName
(
this
.
rcdRepo
==
null
?
null
:
this
.
rcdRepo
.
getAccountName
())
.
rcdNickName
(
this
.
rcdRepo
==
null
?
null
:
this
.
rcdRepo
.
getNickName
())
.
channelClass
(
this
.
channelClass
).
sale
(
this
.
sale
).
white
(
white
).
source
(
this
.
source
)
.
rcdCompanyId
(
this
.
rcdCompanyId
)
.
build
();
}
public
RepoRcdTeamDTO
builderRepoRcdTeamDTO
(){
return
RepoRcdTeamDTO
.
builder
().
RepoAccountName
(
this
.
accountName
).
id
(
this
.
id
).
accountType
(
this
.
accountType
)
.
realAuthStatus
(
this
.
realAuthStatus
).
entAuthStatus
(
this
.
entAuthStatus
).
createTime
(
this
.
rcdCreateTime
)
.
phoneNum
(
this
.
phoneNum
).
nickName
(
this
.
nickName
).
remark
(
this
.
rcdRemark
).
uid
(
this
.
uid
).
entName
(
this
.
entName
).
build
();
}
public
RepoRebateWalletDTO
buildRepoRebateWalletDTO
(){
return
RepoRebateWalletDTO
.
builder
().
repoAccountId
(
this
.
id
).
uid
(
this
.
uid
).
nickName
(
this
.
getNickName
()).
build
();
}
public
void
buildName
()
{
if
(
StringUtils
.
isBlank
(
this
.
accountName
)
&&
StringUtils
.
isBlank
(
this
.
entName
))
{
this
.
accountName
=
null
;
}
else
if
(
StringUtils
.
isBlank
(
this
.
accountName
)
&&
!
StringUtils
.
isBlank
(
this
.
entName
))
{
this
.
accountName
=
this
.
entName
;
}
else
if
(!
StringUtils
.
isBlank
(
this
.
accountName
)
&&
!
StringUtils
.
isBlank
(
this
.
entName
))
{
StringBuffer
sb
=
new
StringBuffer
();
sb
.
append
(
this
.
accountName
);
sb
.
append
(
"("
);
sb
.
append
(
this
.
entName
);
sb
.
append
(
")"
);
this
.
accountName
=
sb
.
toString
();
}
}
public
RepoAccountDO
(
RepoAccountVO
repoAccountVO
)
{
this
.
id
=
repoAccountVO
.
getId
();
this
.
headerImg
=
repoAccountVO
.
getHeaderImg
();
this
.
nickName
=
repoAccountVO
.
getNickName
();
this
.
resAddress
=
repoAccountVO
.
getResAddress
();
this
.
lon
=
repoAccountVO
.
getLon
();
this
.
lat
=
repoAccountVO
.
getLat
();
}
}
src/main/java/com/mmc/payment/entity/RepoCashDO.java
0 → 100644
浏览文件 @
18b7ef67
package
com
.
mmc
.
payment
.
entity
;
import
com.mmc.payment.model.dto.RepoCashDTO
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
org.apache.commons.lang3.StringUtils
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.util.Arrays
;
import
java.util.Date
;
/**
* @Author small
* @Date 2023/5/24 10:09
* @Version 1.0
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
RepoCashDO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
7930603317037474755L
;
private
Integer
id
;
private
Integer
repoAccountId
;
private
String
uid
;
private
String
accountName
;
private
Integer
orderInfoId
;
private
String
orderNo
;
private
Integer
skuInfoId
;
private
String
skuTitle
;
private
Integer
wareInfoId
;
private
String
wareNo
;
private
String
wareTitle
;
private
String
payNo
;
private
Integer
payMethod
;
private
BigDecimal
amtPaid
;
private
BigDecimal
cashAmt
;
private
Date
payTime
;
private
String
refundNo
;
private
String
voucher
;
private
String
remark
;
private
Integer
createUser
;
private
Date
createTime
;
private
Integer
updateUser
;
private
Date
updateTime
;
public
RepoCashDTO
buildRepoCashDTO
()
{
return
RepoCashDTO
.
builder
().
id
(
this
.
id
).
repoAccountId
(
this
.
repoAccountId
).
uid
(
this
.
uid
)
.
accountName
(
this
.
accountName
).
orderInfoId
(
this
.
orderInfoId
).
orderNo
(
this
.
orderNo
)
.
skuInfoId
(
this
.
skuInfoId
).
skuTitle
(
this
.
skuTitle
).
wareInfoId
(
this
.
wareInfoId
).
wareNo
(
this
.
wareNo
)
.
wareTitle
(
this
.
wareTitle
).
payNo
(
this
.
payNo
).
payMethod
(
this
.
payMethod
).
amtPaid
(
this
.
amtPaid
)
.
refundNo
(
this
.
refundNo
).
createUser
(
this
.
createUser
)
.
voucher
(
StringUtils
.
isBlank
(
this
.
voucher
)
?
null
:
Arrays
.
asList
(
this
.
voucher
.
split
(
","
)))
.
cashAmt
(
this
.
cashAmt
).
payTime
(
this
.
payTime
).
remark
(
this
.
remark
).
build
();
}
}
src/main/java/com/mmc/payment/entity/RepoWalletDO.java
0 → 100644
浏览文件 @
18b7ef67
package
com
.
mmc
.
payment
.
entity
;
import
com.mmc.payment.model.dto.RepoWalletDTO
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.util.Date
;
/**
* @Author small
* @Date 2023/5/23 20:30
* @Version 1.0
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
RepoWalletDO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
6230679407746486112L
;
private
Integer
id
;
private
Integer
repoAccountId
;
private
BigDecimal
cashAmt
;
private
BigDecimal
cashPaid
;
private
BigDecimal
cashFreeze
;
private
BigDecimal
rcdRebateAmt
;
private
BigDecimal
rebateWdl
;
private
BigDecimal
rebateFreeze
;
private
String
remark
;
private
Date
updateTime
;
private
Date
createTime
;
public
void
initWallet
(
Integer
repoAccountId
)
{
this
.
repoAccountId
=
repoAccountId
;
this
.
cashAmt
=
BigDecimal
.
ZERO
;
this
.
cashPaid
=
BigDecimal
.
ZERO
;
this
.
cashFreeze
=
BigDecimal
.
ZERO
;
this
.
createTime
=
new
Date
();
}
public
RepoWalletDTO
buildRepoWalletDTO
()
{
return
RepoWalletDTO
.
builder
().
id
(
this
.
id
).
repoAccountId
(
this
.
repoAccountId
).
cashAmt
(
this
.
cashAmt
)
.
cashPaid
(
this
.
cashPaid
).
cashFreeze
(
this
.
cashFreeze
).
rcdRebateAmt
(
this
.
rcdRebateAmt
).
rebateWdl
(
this
.
rebateWdl
)
.
rebateFreeze
(
this
.
rebateFreeze
).
remark
(
this
.
remark
).
build
();
}
/* public RepoRebateSubDTO buildRepoRebateSubDTO(){
RepoRebateSubDTO repoRebateSubDTO = RepoRebateSubDTO.builder().repoAccountId(this.repoAccountId).rcdRebateAmt(this.rcdRebateAmt)
.rebateFreeze(this.rebateFreeze).rebateWdl(this.rebateWdl).build();
repoRebateSubDTO.computerTotalRebate();
return repoRebateSubDTO;
}*/
}
src/main/java/com/mmc/payment/exception/BizException.java
0 → 100644
浏览文件 @
18b7ef67
package
com
.
mmc
.
payment
.
exception
;
import
com.mmc.payment.common.BaseErrorInfoInterface
;
import
com.mmc.payment.common.ResultEnum
;
import
static
com
.
mmc
.
payment
.
common
.
ResultEnum
.
CUSTOM_ERROR
;
/**
* @Author small
* @Date 2023/5/23 19:25
* @Version 1.0
*/
public
class
BizException
extends
RuntimeException
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* 错误码
*/
protected
String
errorCode
;
/**
* 错误信息
*/
protected
String
errorMsg
;
public
BizException
()
{
super
();
}
public
BizException
(
BaseErrorInfoInterface
errorInfoInterface
)
{
super
(
errorInfoInterface
.
getResultCode
());
this
.
errorCode
=
errorInfoInterface
.
getResultCode
();
this
.
errorMsg
=
errorInfoInterface
.
getResultMsg
();
}
public
BizException
(
BaseErrorInfoInterface
errorInfoInterface
,
Throwable
cause
)
{
super
(
errorInfoInterface
.
getResultCode
(),
cause
);
this
.
errorCode
=
errorInfoInterface
.
getResultCode
();
this
.
errorMsg
=
errorInfoInterface
.
getResultMsg
();
}
public
BizException
(
ResultEnum
enums
)
{
super
(
enums
.
getResultCode
());
this
.
errorCode
=
enums
.
getResultCode
();
this
.
errorMsg
=
enums
.
getResultMsg
();
}
public
BizException
(
String
errorMsg
)
{
super
(
errorMsg
);
this
.
errorCode
=
CUSTOM_ERROR
.
resultCode
;
this
.
errorMsg
=
errorMsg
;
}
public
BizException
(
String
errorCode
,
String
errorMsg
)
{
super
(
errorCode
);
this
.
errorCode
=
errorCode
;
this
.
errorMsg
=
errorMsg
;
}
public
BizException
(
String
errorCode
,
String
errorMsg
,
Throwable
cause
)
{
super
(
errorCode
,
cause
);
this
.
errorCode
=
errorCode
;
this
.
errorMsg
=
errorMsg
;
}
public
String
getErrorCode
()
{
return
errorCode
;
}
public
void
setErrorCode
(
String
errorCode
)
{
this
.
errorCode
=
errorCode
;
}
public
String
getErrorMsg
()
{
return
errorMsg
;
}
public
void
setErrorMsg
(
String
errorMsg
)
{
this
.
errorMsg
=
errorMsg
;
}
@Override
public
String
getMessage
()
{
return
errorMsg
;
}
@Override
public
Throwable
fillInStackTrace
()
{
return
this
;
}
}
src/main/java/com/mmc/payment/jwt/JwtConstant.java
0 → 100644
浏览文件 @
18b7ef67
package
com
.
mmc
.
payment
.
jwt
;
/**
* @Author small
* @Date 2023/5/23 19:22
* @Version 1.0
*/
public
interface
JwtConstant
{
public
final
static
String
BASE64KEY
=
"sharefly@mmc20220616"
;
public
final
static
String
SUBJECT
=
"cloud_shared_flight_token"
;
public
final
static
String
ISSUER
=
"mmc"
;
public
final
static
long
EXPIRATION
=
1
*
24
*
60
*
60
*
1000L
;
public
final
static
long
SXTB_PC_LOGIN_INVALID
=
1
*
24
*
60
*
60
*
1000L
;
public
final
static
String
USERIDKEY
=
"uid"
;
public
final
static
String
ROLEIDKEY
=
"roleId"
;
public
final
static
String
TOKENKEY
=
"token"
;
public
final
static
String
TOKEN_TYPE
=
"TOKEN_TYPE"
;
public
final
static
String
SXTB_ACCOUNT_TOKEN
=
"SXTB_ACCOUNT_TOKEN"
;
// 神行太保平台平台token
public
final
static
String
CSF_USER_ACCOUNT_TOKEN
=
"USER_ACCOUNT_TOKEN"
;
// 云享飞-用户-token
public
final
static
String
CSF_FLYER_ACCOUNT_TOKEN
=
"FLYER_ACCOUNT_TOKEN"
;
// 飞手-token
public
final
static
String
CSF_REPO_ACCOUNT_TOKEN
=
"REPO_ACCOUNT_TOKEN"
;
// 飞手-token
public
final
static
String
MALL_USER_ACCOUNT_TOKEN
=
"MALL_USER_ACCOUNT_TOKEN"
;
// 商城-token
public
final
static
String
OPEN_API_ACCESS_TOKEN
=
"OPENAPI_ACCESS_TOKEN"
;
// OAUTH-client-token
public
final
static
String
AUTHORIZATION
=
"Authorization"
;
public
final
static
String
GRANT_TYPE
=
"grant_type"
;
public
final
static
String
CLIENT_CREDENTIALS
=
"client_credentials"
;
public
final
static
long
OAUTH_EXPIRATION
=
1
*
24
*
60
*
60
*
1000L
;
public
final
static
String
CLIENT_ID_KEY
=
"MMC_CLIENT_ID_KEY"
;
public
final
static
String
CLIENT_ROLE_KEY
=
"MMC_CLIENT_ROLE_KEY"
;
}
src/main/java/com/mmc/payment/model/dto/BaseAccountDTO.java
0 → 100644
浏览文件 @
18b7ef67
package
com
.
mmc
.
payment
.
model
.
dto
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
/**
* @Author small
* @Date 2023/5/23 19:15
* @Version 1.0
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel
(
value
=
"com.mmc.csf.model.dto.BaseAccountDTO"
,
description
=
"登录信息DTO"
)
public
class
BaseAccountDTO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
2979712090903806216L
;
private
Integer
id
;
private
String
uid
;
private
String
accountPhone
;
private
String
accountNo
;
private
String
accountName
;
private
String
tokenPort
;
@ApiModelProperty
(
value
=
"角色ID"
)
private
Integer
roleId
;
@ApiModelProperty
(
value
=
"是否为管理角色:0否 1是"
)
private
Integer
admin
;
// 是否为管理角色
@ApiModelProperty
(
value
=
"是否为运营角色:0否 1是"
)
private
Integer
operate
;
@ApiModelProperty
(
value
=
"是否PMC发货专员:0否 1是"
)
private
Integer
pmc
;
@ApiModelProperty
(
value
=
"单位信息"
)
private
CompanyCacheDTO
companyInfo
;
// 单位信息
public
BaseAccountDTO
(
RepoAccountDTO
account
)
{
this
.
id
=
account
.
getId
();
this
.
accountName
=
account
.
getAccountName
();
this
.
uid
=
account
.
getUid
();
this
.
accountPhone
=
account
.
getPhoneNum
();
}
/**
* 是否为科比特超级管理员单位(是:无单位资源限制 否:只能看当前和下级单位的资源)
* @return
*/
public
boolean
isManage
()
{
if
(
this
.
getCompanyInfo
()==
null
){
return
false
;
}
if
(
this
.
getCompanyInfo
().
getManage
()==
null
){
return
false
;
}
return
this
.
getCompanyInfo
().
getManage
()
==
1
;
}
}
src/main/java/com/mmc/payment/model/dto/CompanyCacheDTO.java
0 → 100644
浏览文件 @
18b7ef67
package
com
.
mmc
.
payment
.
model
.
dto
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
import
java.util.List
;
/**
* @Author small
* @Date 2023/5/23 19:16
* @Version 1.0
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
CompanyCacheDTO
implements
Serializable
{
@ApiModelProperty
(
value
=
"单位ID"
)
private
Integer
id
;
@ApiModelProperty
(
value
=
"单位名称"
)
private
String
company
;
@ApiModelProperty
(
value
=
"是否为管理单位:0否 1是"
,
hidden
=
true
)
private
Integer
manage
;
@ApiModelProperty
(
value
=
"当前单位ID+子级单位ID的集合"
,
hidden
=
true
)
private
List
<
Integer
>
companys
;
}
src/main/java/com/mmc/payment/model/dto/CompanySimpleDTO.java
0 → 100644
浏览文件 @
18b7ef67
package
com
.
mmc
.
payment
.
model
.
dto
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
import
java.util.List
;
/**
* @Author small
* @Date 2023/5/24 10:18
* @Version 1.0
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
//@ApiModel(value = "com.mmc.csf.sharefly.dto.CompanySimpleDTO", description = "单位信息DTO")
public
class
CompanySimpleDTO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
2541404541696571857L
;
@ApiModelProperty
(
value
=
"单位ID"
)
private
Integer
id
;
@ApiModelProperty
(
value
=
"单位名称"
)
private
String
company
;
@ApiModelProperty
(
value
=
"账号类型:0合伙人 1员工"
)
private
Integer
userType
;
@ApiModelProperty
(
value
=
"是否为管理单位:0否 1是"
,
hidden
=
true
)
private
Integer
manage
;
@ApiModelProperty
(
value
=
"当前单位ID+子级单位ID的集合"
,
hidden
=
true
)
private
List
<
Integer
>
companys
;
}
src/main/java/com/mmc/payment/model/dto/CurrentUserDTO.java
0 → 100644
浏览文件 @
18b7ef67
package
com
.
mmc
.
payment
.
model
.
dto
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
/**
* @Author small
* @Date 2023/5/24 9:55
* @Version 1.0
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
CurrentUserDTO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
2302598593780513593L
;
private
Integer
id
;
private
Integer
roleId
;
}
src/main/java/com/mmc/payment/model/dto/RepoAccountDTO.java
0 → 100644
浏览文件 @
18b7ef67
package
com
.
mmc
.
payment
.
model
.
dto
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
java.util.Set
;
/**
* @Author small
* @Date 2023/5/23 19:13
* @Version 1.0
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
//@ApiModel(value = "com.mmc.csf.model.dto.RepoAccountDTO", description = "云仓账号信息DTO")
public
class
RepoAccountDTO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1433562781546856233L
;
@ApiModelProperty
(
value
=
"用户id"
)
private
Integer
id
;
@ApiModelProperty
(
value
=
"用户uid"
)
private
String
uid
;
@ApiModelProperty
(
value
=
"账号名称"
)
private
String
accountName
;
@ApiModelProperty
(
value
=
"账号类型"
)
private
Integer
accountType
;
@ApiModelProperty
(
value
=
"联系电话"
)
private
String
phoneNum
;
@ApiModelProperty
(
value
=
"实名认证状态"
)
private
Integer
realAuthStatus
;
@ApiModelProperty
(
value
=
"企业认证状态"
)
private
Integer
entAuthStatus
;
@ApiModelProperty
(
value
=
"渠道认证状态"
)
private
Integer
channelAuthStatus
;
@ApiModelProperty
(
value
=
"渠道等级"
)
private
Integer
channelClass
;
@ApiModelProperty
(
value
=
"常驻城市"
)
private
String
resAddress
;
@ApiModelProperty
(
value
=
"昵称"
)
private
String
nickName
;
@ApiModelProperty
(
value
=
"头像url"
)
private
String
headerImg
;
@ApiModelProperty
(
value
=
"经度"
)
private
BigDecimal
lon
;
@ApiModelProperty
(
value
=
"纬度"
)
private
BigDecimal
lat
;
@ApiModelProperty
(
value
=
"备注"
)
private
String
remark
;
@ApiModelProperty
(
value
=
"删除状态,0未删除,1删除"
)
private
Integer
deleted
;
@ApiModelProperty
(
value
=
"企业名称"
)
private
String
entName
;
@ApiModelProperty
(
value
=
"用户名称"
)
private
String
userName
;
@ApiModelProperty
(
value
=
"企业认证时间"
)
private
Date
entAuthTime
;
@ApiModelProperty
(
value
=
"生成时间"
)
private
Date
createTime
;
@ApiModelProperty
(
value
=
"更新时间"
)
private
Date
updateTime
;
@ApiModelProperty
(
value
=
"现金余额"
)
private
BigDecimal
cashAmt
;
private
String
unionId
;
private
String
openId
;
@ApiModelProperty
(
value
=
"多端用户,USER_PORT(云享飞)-FLYER_PORT(云飞手)-REPO_PORT(云仓)"
)
private
Set
<
String
>
ports
;
@ApiModelProperty
(
value
=
"用户推荐人数量"
)
private
Integer
rcdRepoTeamNum
;
@ApiModelProperty
(
value
=
"推荐人Uid"
)
private
String
rcdUid
;
@ApiModelProperty
(
value
=
"推荐人账户名称"
)
private
String
rcdAccountName
;
@ApiModelProperty
(
value
=
"推荐人昵称"
)
private
String
rcdNickName
;
@ApiModelProperty
(
value
=
"推荐人id"
)
private
Integer
rcdAccountId
;
@ApiModelProperty
(
value
=
"是否销售"
)
private
Integer
sale
;
@ApiModelProperty
(
value
=
"是否白名单"
)
private
Integer
white
;
@ApiModelProperty
(
value
=
"用户来源:0自然流,1海报,2抖音,3公众号,4社群,5招投标,默认0"
)
private
Integer
source
;
@ApiModelProperty
(
value
=
"推荐单位"
)
private
String
company
;
@ApiModelProperty
(
value
=
"推荐单位ID"
,
hidden
=
true
)
private
Integer
rcdCompanyId
;
}
src/main/java/com/mmc/payment/model/dto/RepoCashDTO.java
0 → 100644
浏览文件 @
18b7ef67
package
com
.
mmc
.
payment
.
model
.
dto
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
java.util.List
;
/**
* @Author small
* @Date 2023/5/24 9:56
* @Version 1.0
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
//@ApiModel(value = "com.mmc.csf.model.dto.RepoBannerDTO", description = "现金流水DTO")
public
class
RepoCashDTO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
4569221850373256579L
;
@ApiModelProperty
(
value
=
"ID"
)
private
Integer
id
;
@ApiModelProperty
(
value
=
"用户ID"
,
hidden
=
true
)
private
Integer
repoAccountId
;
@ApiModelProperty
(
value
=
"用户UID"
,
hidden
=
true
)
private
String
uid
;
@ApiModelProperty
(
value
=
"用户名"
,
hidden
=
true
)
private
String
accountName
;
@ApiModelProperty
(
value
=
"订单ID"
,
hidden
=
true
)
private
Integer
orderInfoId
;
@ApiModelProperty
(
value
=
"订单编号"
)
private
String
orderNo
;
@ApiModelProperty
(
value
=
"skuID"
,
hidden
=
true
)
private
Integer
skuInfoId
;
@ApiModelProperty
(
value
=
"sku标题"
,
hidden
=
true
)
private
String
skuTitle
;
@ApiModelProperty
(
value
=
"商品ID"
,
hidden
=
true
)
private
Integer
wareInfoId
;
@ApiModelProperty
(
value
=
"商品编号"
,
hidden
=
true
)
private
String
wareNo
;
@ApiModelProperty
(
value
=
"商品标题"
)
private
String
wareTitle
;
@ApiModelProperty
(
value
=
"流水编号"
)
private
String
payNo
;
@ApiModelProperty
(
value
=
"流水类型:查字典"
)
private
Integer
payMethod
;
@ApiModelProperty
(
value
=
"变动金额"
)
private
BigDecimal
amtPaid
;
@ApiModelProperty
(
value
=
"当前余额"
)
private
BigDecimal
cashAmt
;
@ApiModelProperty
(
value
=
"支付时间"
)
private
Date
payTime
;
@ApiModelProperty
(
value
=
"退款流水编号"
)
private
String
refundNo
;
@ApiModelProperty
(
value
=
"凭证"
)
private
List
<
String
>
voucher
;
@ApiModelProperty
(
value
=
"备注"
)
private
String
remark
;
@ApiModelProperty
(
value
=
"操作人账号"
)
private
String
opNo
;
@ApiModelProperty
(
value
=
"操作人姓名"
)
private
String
opName
;
private
Integer
createUser
;
}
src/main/java/com/mmc/payment/model/dto/RepoRcdTeamDTO.java
0 → 100644
浏览文件 @
18b7ef67
package
com
.
mmc
.
payment
.
model
.
dto
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
import
java.util.Date
;
/**
* @Author small
* @Date 2023/5/23 20:01
* @Version 1.0
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
//@ApiModel(value = "com.mmc.csf.model.dto.RepoRcdTeamDTO", description = "云仓推荐团队DTO")
public
class
RepoRcdTeamDTO
implements
Serializable
{
@ApiModelProperty
(
value
=
"id"
)
private
Integer
id
;
@ApiModelProperty
(
value
=
"账户名称"
)
private
String
RepoAccountName
;
@ApiModelProperty
(
value
=
"uid"
)
private
String
uid
;
@ApiModelProperty
(
value
=
"手机号"
)
private
String
phoneNum
;
@ApiModelProperty
(
value
=
"发展时间"
)
private
Date
createTime
;
@ApiModelProperty
(
value
=
"昵称"
)
private
String
nickName
;
@ApiModelProperty
(
value
=
"企业认证状态:0未认证1已认证"
)
private
Integer
entAuthStatus
;
@ApiModelProperty
(
value
=
"实名认证:0未实名1已实名2未通过"
)
private
Integer
realAuthStatus
;
@ApiModelProperty
(
value
=
"账户类型 0游客1普通用户"
)
private
Integer
accountType
;
@ApiModelProperty
(
value
=
"备注"
)
private
String
remark
;
@ApiModelProperty
(
value
=
"entName"
)
private
String
entName
;
}
src/main/java/com/mmc/payment/model/dto/RepoRebateWalletDTO.java
0 → 100644
浏览文件 @
18b7ef67
package
com
.
mmc
.
payment
.
model
.
dto
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
/**
* @Author small
* @Date 2023/5/23 20:01
* @Version 1.0
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
//@ApiModel(value = "com.mmc.csf.model.dto.RepoRebateWalletDTO", description = "奖励管理DTO")
public
class
RepoRebateWalletDTO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
4874698532029550117L
;
@ApiModelProperty
(
value
=
"UID"
)
private
String
uid
;
@ApiModelProperty
(
value
=
"用户ID"
)
private
Integer
repoAccountId
;
@ApiModelProperty
(
value
=
"昵称"
)
private
String
nickName
;
@ApiModelProperty
(
value
=
"可提现-奖励金余额"
)
private
BigDecimal
rcdRebateAmt
;
@ApiModelProperty
(
value
=
"提现中(冻结中)金额"
)
private
BigDecimal
rebateFreeze
;
@ApiModelProperty
(
value
=
"已提现金额"
)
private
BigDecimal
rebateWdl
;
@ApiModelProperty
(
value
=
"累计总额"
)
private
BigDecimal
totalRebate
;
@ApiModelProperty
(
value
=
"团队人数"
)
private
Integer
teamUserNum
;
public
void
computerTotalRebate
()
{
this
.
totalRebate
=
BigDecimal
.
ZERO
;
if
(
this
.
rcdRebateAmt
!=
null
&&
this
.
rcdRebateAmt
.
compareTo
(
BigDecimal
.
ZERO
)
>
0
)
{
this
.
totalRebate
=
this
.
totalRebate
.
add
(
rcdRebateAmt
);
}
if
(
this
.
rebateFreeze
!=
null
&&
this
.
rebateFreeze
.
compareTo
(
BigDecimal
.
ZERO
)
>
0
)
{
this
.
totalRebate
=
this
.
totalRebate
.
add
(
rebateFreeze
);
}
if
(
this
.
rebateWdl
!=
null
&&
this
.
rebateWdl
.
compareTo
(
BigDecimal
.
ZERO
)
>
0
)
{
this
.
totalRebate
=
this
.
totalRebate
.
add
(
rebateWdl
);
}
this
.
totalRebate
=
this
.
totalRebate
.
setScale
(
2
,
BigDecimal
.
ROUND_DOWN
);
}
public
void
defaultValue
()
{
this
.
rcdRebateAmt
=
this
.
rcdRebateAmt
==
null
?
BigDecimal
.
ZERO
:
this
.
rcdRebateAmt
;
this
.
rebateFreeze
=
this
.
rebateFreeze
==
null
?
BigDecimal
.
ZERO
:
this
.
rebateFreeze
;
this
.
rebateWdl
=
this
.
rebateWdl
==
null
?
BigDecimal
.
ZERO
:
this
.
rebateWdl
;
this
.
totalRebate
=
this
.
totalRebate
==
null
?
BigDecimal
.
ZERO
:
this
.
totalRebate
;
}
}
src/main/java/com/mmc/payment/model/dto/RepoWalletDTO.java
0 → 100644
浏览文件 @
18b7ef67
package
com
.
mmc
.
payment
.
model
.
dto
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
/**
* @Author small
* @Date 2023/5/23 19:35
* @Version 1.0
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
//@ApiModel(value = "com.mmc.csf.model.dto.RepoWalletDTO", description = "钱包DTO")
public
class
RepoWalletDTO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
5306992787421065922L
;
@ApiModelProperty
(
value
=
"ID"
)
private
Integer
id
;
@ApiModelProperty
(
value
=
"用户ID"
)
private
Integer
repoAccountId
;
@ApiModelProperty
(
value
=
"现金余额"
)
private
BigDecimal
cashAmt
;
@ApiModelProperty
(
value
=
"已付金额"
)
private
BigDecimal
cashPaid
;
@ApiModelProperty
(
value
=
"冻结中-金额"
)
private
BigDecimal
cashFreeze
;
@ApiModelProperty
(
value
=
"奖励-余额"
)
private
BigDecimal
rcdRebateAmt
;
@ApiModelProperty
(
value
=
"累计提现"
)
private
BigDecimal
rebateWdl
;
@ApiModelProperty
(
value
=
"提现冻结金额"
)
private
BigDecimal
rebateFreeze
;
@ApiModelProperty
(
value
=
"平台备注"
)
private
String
remark
;
public
void
defaultRebateValue
()
{
if
(
this
.
rcdRebateAmt
==
null
)
{
this
.
rcdRebateAmt
=
BigDecimal
.
ZERO
;
}
if
(
this
.
rebateWdl
==
null
)
{
this
.
rebateWdl
=
BigDecimal
.
ZERO
;
}
}
}
src/main/java/com/mmc/payment/model/dto/RoleInfoDTO.java
0 → 100644
浏览文件 @
18b7ef67
package
com
.
mmc
.
payment
.
model
.
dto
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
/**
* @Author small
* @Date 2023/5/24 10:19
* @Version 1.0
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
//@ApiModel(value = "com.mmc.csf.model.dto.RoleInfoDTO", description = "角色信息DTO")
public
class
RoleInfoDTO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
4791023169682602298L
;
@ApiModelProperty
(
value
=
"角色ID"
)
private
Integer
id
;
@ApiModelProperty
(
value
=
"角色编号"
)
private
String
roleNo
;
@ApiModelProperty
(
value
=
"角色名称"
)
private
String
roleName
;
@ApiModelProperty
(
value
=
"是否为管理角色:0否 1是"
)
private
Integer
admin
;
// 是否为管理角色
@ApiModelProperty
(
value
=
"是否为运营角色:0否 1是"
)
private
Integer
operate
;
@ApiModelProperty
(
value
=
"是否为系统角色:0否 1是"
)
private
Integer
system
;
@ApiModelProperty
(
value
=
"是否为PMC发货角色:0否 1是"
)
private
Integer
pmc
;
//PMC发货角色
@ApiModelProperty
(
value
=
"是否可用:0否 1是"
)
private
Integer
roleStatus
;
@ApiModelProperty
(
value
=
"备注"
)
private
String
remark
;
}
src/main/java/com/mmc/payment/model/dto/UserAccountDTO.java
0 → 100644
浏览文件 @
18b7ef67
package
com
.
mmc
.
payment
.
model
.
dto
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
import
java.util.Date
;
/**
* @Author small
* @Date 2023/5/24 10:18
* @Version 1.0
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
//@ApiModel(value = "com.mmc.csf.model.dto.UserAccountDTO", description = "用户信息DTO")
public
class
UserAccountDTO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
3760693134872196985L
;
@ApiModelProperty
(
value
=
"用户ID"
)
private
Integer
id
;
@ApiModelProperty
(
value
=
"UID"
)
private
String
uid
;
@ApiModelProperty
(
value
=
"账号"
)
private
String
accountNo
;
@ApiModelProperty
(
value
=
"密码"
)
private
String
passWord
;
@ApiModelProperty
(
value
=
"昵称"
)
private
String
nickName
;
@ApiModelProperty
(
value
=
"姓名"
)
private
String
userName
;
@ApiModelProperty
(
value
=
"身份证号码"
)
private
String
idNumber
;
@ApiModelProperty
(
value
=
"电话号码"
)
private
String
phoneNum
;
@ApiModelProperty
(
value
=
"性别:0未知 1男 2女 "
)
private
Integer
userSex
;
@ApiModelProperty
(
value
=
"常住地址"
)
private
String
resAddres
;
private
Integer
realAuthStatus
;
@ApiModelProperty
(
value
=
"常住地址-经度"
)
private
String
longitude
;
@ApiModelProperty
(
value
=
"常住地址-纬度"
)
private
String
latitude
;
@ApiModelProperty
(
value
=
"是否企业用户:0否 1是"
)
private
Integer
entUser
;
@ApiModelProperty
(
value
=
"是否渠道用户:0否 1是"
)
private
Integer
channelUser
;
@ApiModelProperty
(
value
=
"备注"
)
private
String
remark
;
@ApiModelProperty
(
value
=
"账号类型:0神行太保平台账号 ; 100云享飞-客户端; 101云享飞-飞手端; 102云享飞-云仓端"
)
private
Integer
accountType
;
@ApiModelProperty
(
value
=
"账号状态:0禁用 1可用"
)
private
Integer
accountStatus
;
@ApiModelProperty
(
value
=
"角色信息"
)
private
RoleInfoDTO
roleInfo
;
@ApiModelProperty
(
value
=
"更新时间"
)
private
Date
updateTime
;
@ApiModelProperty
(
value
=
"身份证正面照"
)
private
String
frontIdImg
;
@ApiModelProperty
(
value
=
"身份证反面照"
)
private
String
backIdImg
;
@ApiModelProperty
(
value
=
"邮箱"
)
private
String
email
;
@ApiModelProperty
(
value
=
"单位信息"
)
private
CompanySimpleDTO
companyInfo
;
private
Integer
rcdCompanyId
;
@ApiModelProperty
(
value
=
"渠道等级"
)
private
String
channelLevel
;
@ApiModelProperty
(
value
=
"法大大企业认证状态"
)
private
Integer
entVerifyStatus
;
public
UserAccountDTO
(
Integer
id
,
String
uid
,
String
nickName
)
{
this
.
id
=
id
;
this
.
uid
=
uid
;
this
.
nickName
=
nickName
;
}
}
src/main/java/com/mmc/payment/model/qo/BaseInfoQO.java
0 → 100644
浏览文件 @
18b7ef67
package
com
.
mmc
.
payment
.
model
.
qo
;
import
com.mmc.payment.common.Freeze
;
import
com.mmc.payment.common.Page
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
javax.validation.constraints.Min
;
import
javax.validation.constraints.NotNull
;
/**
* @Author small
* @Date 2023/5/23 19:18
* @Version 1.0
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public
class
BaseInfoQO
{
@ApiModelProperty
(
value
=
"开始时间"
)
private
String
startTime
;
@ApiModelProperty
(
value
=
"结束时间"
)
private
String
endTime
;
@ApiModelProperty
(
value
=
"页码"
)
@NotNull
(
message
=
"页码不能为空"
,
groups
=
{
Page
.
class
,
Freeze
.
class
})
@Min
(
value
=
1
,
groups
=
Page
.
class
,
message
=
"pageNo不能少于1"
)
private
Integer
pageNo
;
@ApiModelProperty
(
value
=
"每页显示数"
)
@NotNull
(
message
=
"每页显示数不能为空"
,
groups
=
{
Page
.
class
,
Freeze
.
class
})
@Min
(
value
=
1
,
groups
=
Page
.
class
,
message
=
"pageSize不能少于1"
)
private
Integer
pageSize
;
/**
* 初始化起始查询行并返回当前页
*/
public
Integer
buildCurrentPage
()
{
Integer
pageNo
=
this
.
pageNo
;
this
.
pageNo
=
(
pageNo
-
1
)
*
pageSize
;
return
pageNo
;
}
}
src/main/java/com/mmc/payment/model/qo/RepoAccountQO.java
0 → 100644
浏览文件 @
18b7ef67
package
com
.
mmc
.
payment
.
model
.
qo
;
import
com.mmc.payment.common.Page
;
import
com.mmc.payment.config.UserPorts
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
org.springframework.util.CollectionUtils
;
import
javax.validation.constraints.Min
;
import
javax.validation.constraints.NotNull
;
import
java.io.Serializable
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Set
;
import
java.util.stream.Collectors
;
/**
* @Author small
* @Date 2023/5/23 19:13
* @Version 1.0
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
//@ApiModel(value = "com.mmc.csf.model.qo.RepoAccountQO", description = "云仓账号信息查询QO")
public
class
RepoAccountQO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
3425378226992206841L
;
@ApiModelProperty
(
value
=
"关键字"
)
private
String
keyword
;
@ApiModelProperty
(
value
=
"实名认证状态"
)
private
Integer
realAuthStatus
;
@ApiModelProperty
(
value
=
"企业认证状态"
)
private
Integer
entAuthStatus
;
@ApiModelProperty
(
value
=
"用户类型"
)
private
Integer
accountType
;
@ApiModelProperty
(
value
=
"注册开始时间"
)
private
Date
startTime
;
@ApiModelProperty
(
value
=
"注册结束时间"
)
private
Date
endTime
;
@ApiModelProperty
(
value
=
"是否渠道"
)
private
Integer
channelAuthStatus
;
@ApiModelProperty
(
value
=
"渠道等级"
)
private
Integer
channelClass
;
@ApiModelProperty
(
value
=
"是否销售"
)
private
Integer
sale
;
@ApiModelProperty
(
value
=
"是否白名单"
)
private
Integer
white
;
@ApiModelProperty
(
value
=
"用户来源:0自然流,1海报,2抖音,3公众号,4社群,5招投标,默认0"
)
private
Integer
source
;
@ApiModelProperty
(
value
=
"用户ID"
,
hidden
=
true
)
private
List
<
Integer
>
accountIds
;
@ApiModelProperty
(
value
=
"多端用户,USER_PORT(云享飞)-FLYER_PORT(云飞手)-REPO_PORT(云仓)"
)
private
Set
<
String
>
ports
;
@ApiModelProperty
(
value
=
"多端用户(差集),USER_PORT(云享飞)-FLYER_PORT(云飞手)-REPO_PORT(云仓)"
,
hidden
=
true
)
private
Set
<
String
>
eports
;
@ApiModelProperty
(
value
=
"推荐单位ID"
)
private
Integer
rcdCompanyId
;
@ApiModelProperty
(
value
=
"单位ID"
,
hidden
=
true
)
private
List
<
Integer
>
companys
;
@ApiModelProperty
(
value
=
"页码"
,
required
=
true
)
@NotNull
(
message
=
"页码不能为空"
,
groups
=
Page
.
class
)
@Min
(
value
=
1
,
groups
=
Page
.
class
)
private
Integer
pageNo
;
@ApiModelProperty
(
value
=
"每页显示数"
,
required
=
true
)
@NotNull
(
message
=
"每页显示数不能为空"
,
groups
=
Page
.
class
)
@Min
(
value
=
1
,
groups
=
Page
.
class
)
private
Integer
pageSize
;
public
void
buildCurrentPage
()
{
this
.
pageNo
=
(
pageNo
-
1
)
*
pageSize
;
}
public
void
buildEports
()
{
if
(!
CollectionUtils
.
isEmpty
(
this
.
ports
))
{
this
.
eports
=
UserPorts
.
ports
.
stream
().
filter
(
d
->
!
this
.
ports
.
contains
(
d
)).
collect
(
Collectors
.
toSet
());
}
}
}
src/main/java/com/mmc/payment/model/qo/RepoCashQO.java
0 → 100644
浏览文件 @
18b7ef67
package
com
.
mmc
.
payment
.
model
.
qo
;
import
com.mmc.payment.common.Page
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
javax.validation.constraints.Min
;
import
javax.validation.constraints.NotNull
;
import
java.io.Serializable
;
/**
* @Author small
* @Date 2023/5/24 9:56
* @Version 1.0
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
//@ApiModel(value = "com.mmc.csf.model.qo.RepoCashQO", description = "现金变更QO")
public
class
RepoCashQO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
8705749845968042632L
;
@ApiModelProperty
(
value
=
"用户ID"
)
@NotNull
(
message
=
"用户ID不能为空"
,
groups
=
Page
.
class
)
private
Integer
repoAccountId
;
@ApiModelProperty
(
value
=
"关键字"
)
private
String
keyword
;
@ApiModelProperty
(
value
=
"开始时间"
)
private
String
startTime
;
@ApiModelProperty
(
value
=
"结束时间"
)
private
String
endTime
;
@ApiModelProperty
(
value
=
"交易类型:查字典"
)
private
Integer
payMethod
;
@ApiModelProperty
(
value
=
"页码"
,
required
=
true
)
@NotNull
(
message
=
"页码不能为空"
,
groups
=
Page
.
class
)
@Min
(
value
=
1
,
groups
=
Page
.
class
)
private
Integer
pageNo
;
@ApiModelProperty
(
value
=
"每页显示数"
,
required
=
true
)
@NotNull
(
message
=
"每页显示数不能为空"
,
groups
=
Page
.
class
)
@Min
(
value
=
1
,
groups
=
Page
.
class
)
private
Integer
pageSize
;
public
void
buildCurrentPage
()
{
this
.
pageNo
=
(
pageNo
-
1
)
*
pageSize
;
}
}
src/main/java/com/mmc/payment/model/qo/UserAccountQO.java
0 → 100644
浏览文件 @
18b7ef67
package
com
.
mmc
.
payment
.
model
.
qo
;
import
com.mmc.payment.common.Page
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
javax.validation.constraints.Min
;
import
javax.validation.constraints.NotNull
;
import
java.io.Serializable
;
import
java.util.List
;
/**
* @Author small
* @Date 2023/5/24 10:18
* @Version 1.0
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
//@ApiModel(value = "com.mmc.csf.model.qo.UserAccountQO", description = "账号查询条件封装类")
public
class
UserAccountQO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
2780882438255193738L
;
@ApiModelProperty
(
value
=
"关键字"
,
required
=
false
)
private
String
keyword
;
@ApiModelProperty
(
value
=
"地区"
,
required
=
false
)
private
String
area
;
@ApiModelProperty
(
value
=
"角色id"
,
required
=
false
)
private
Integer
roleId
;
@ApiModelProperty
(
value
=
"账号状态:0禁用 1可用"
)
private
Integer
accountStatus
;
@ApiModelProperty
(
value
=
"账号状态:0合伙人 1员工"
)
private
Integer
userType
;
@ApiModelProperty
(
value
=
"用户id集合"
)
private
List
<
Integer
>
userIds
;
@ApiModelProperty
(
value
=
"推荐单位id"
)
private
Integer
rcdCompanyId
;
@ApiModelProperty
(
value
=
"单位集合"
,
hidden
=
true
)
private
List
<
Integer
>
companys
;
@ApiModelProperty
(
value
=
"页码"
,
required
=
true
)
@NotNull
(
message
=
"页码不能为空"
,
groups
=
Page
.
class
)
@Min
(
value
=
1
,
groups
=
Page
.
class
)
private
Integer
pageNo
;
@ApiModelProperty
(
value
=
"每页显示数"
,
required
=
true
)
@NotNull
(
message
=
"每页显示数不能为空"
,
groups
=
Page
.
class
)
@Min
(
value
=
1
,
groups
=
Page
.
class
)
private
Integer
pageSize
;
public
void
buildCurrentPage
()
{
this
.
pageNo
=
(
pageNo
-
1
)
*
pageSize
;
}
}
src/main/java/com/mmc/payment/model/vo/RepoAccountVO.java
0 → 100644
浏览文件 @
18b7ef67
package
com
.
mmc
.
payment
.
model
.
vo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
org.apache.ibatis.annotations.Update
;
import
javax.validation.constraints.NotNull
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
/**
* @Author small
* @Date 2023/5/23 19:39
* @Version 1.0
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
//@ApiModel(value = "com.mmc.csf.model.vo.RepoAccountVO", description = "微信用户信息修改VO")
public
class
RepoAccountVO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
2060063935512185318L
;
@ApiModelProperty
(
value
=
"repoAccountId"
)
@NotNull
(
message
=
"repoAccountId不能为空"
,
groups
=
Update
.
class
)
private
Integer
id
;
@ApiModelProperty
(
value
=
"nickName"
)
private
String
nickName
;
@ApiModelProperty
(
value
=
"常驻地址"
)
private
String
resAddress
;
@ApiModelProperty
(
value
=
"经度"
)
private
BigDecimal
lon
;
@ApiModelProperty
(
value
=
"纬度"
)
private
BigDecimal
lat
;
@ApiModelProperty
(
value
=
"头像"
)
private
String
headerImg
;
}
src/main/java/com/mmc/payment/model/vo/RepoCashVO.java
0 → 100644
浏览文件 @
18b7ef67
package
com
.
mmc
.
payment
.
model
.
vo
;
import
com.mmc.payment.common.Create
;
import
com.mmc.payment.common.Refund
;
import
com.mmc.payment.common.Share
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
javax.validation.constraints.NotNull
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.util.List
;
/**
* @Author small
* @Date 2023/5/24 10:04
* @Version 1.0
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
//@ApiModel(value = "com.mmc.csf.model.vo.RepoCashVO", description = "现金变更VO")
public
class
RepoCashVO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1828354753495845609L
;
@ApiModelProperty
(
value
=
"用户ID"
)
@NotNull
(
message
=
"用户ID不能为空"
,
groups
=
{
Create
.
class
})
private
Integer
repoAccountId
;
@ApiModelProperty
(
value
=
"订单ID"
)
@NotNull
(
message
=
"orderRefundId不能为空"
,
groups
=
{
Refund
.
class
})
private
Integer
orderRefundId
;
@ApiModelProperty
(
value
=
"返租订单ID"
)
@NotNull
(
message
=
"shareOrderId不能为空"
,
groups
=
{
Share
.
class
})
private
Integer
shareOrderId
;
@ApiModelProperty
(
value
=
"变动金额"
)
@NotNull
(
message
=
"变动金额不能为空"
,
groups
=
{
Create
.
class
,
Refund
.
class
})
private
BigDecimal
amtPaid
;
@ApiModelProperty
(
value
=
"凭证图片集合"
)
private
List
<
String
>
voucher
;
@ApiModelProperty
(
value
=
"备注"
)
private
String
remark
;
@ApiModelProperty
(
value
=
"操作人员密码"
)
@NotNull
(
message
=
"变动金额不能为空"
,
groups
=
{
Refund
.
class
,
Share
.
class
})
private
String
authPwd
;
}
src/main/java/com/mmc/payment/service/Impl/RepoAccountServiceImpl.java
0 → 100644
浏览文件 @
18b7ef67
package
com
.
mmc
.
payment
.
service
.
Impl
;
import
com.mmc.payment.common.PageResult
;
import
com.mmc.payment.dao.RepoAccountDao
;
import
com.mmc.payment.entity.RepoWalletDO
;
import
com.mmc.payment.model.dto.BaseAccountDTO
;
import
com.mmc.payment.model.dto.RepoAccountDTO
;
import
com.mmc.payment.model.dto.RepoWalletDTO
;
import
com.mmc.payment.model.qo.RepoAccountQO
;
import
com.mmc.payment.service.RepoAccountService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.CollectionUtils
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
/**
* @Author small
* @Date 2023/5/23 19:12
* @Version 1.0
*/
@Service
public
class
RepoAccountServiceImpl
implements
RepoAccountService
{
@Autowired
private
RepoAccountDao
repoAccountDao
;
@Override
public
PageResult
listPagePayManager
(
RepoAccountQO
param
,
BaseAccountDTO
cuser
)
{
if
(!
cuser
.
isManage
()){
param
.
setCompanys
(
cuser
.
getCompanyInfo
().
getCompanys
());
}
int
count
=
repoAccountDao
.
countPagePayManager
(
param
);
if
(
count
==
0
)
{
return
PageResult
.
buildPage
(
param
.
getPageNo
(),
param
.
getPageSize
(),
count
);
}
Integer
pageNo
=
param
.
getPageNo
();
param
.
buildCurrentPage
();
List
<
RepoAccountDTO
>
data
=
repoAccountDao
.
listPagePayManager
(
param
).
stream
().
map
(
d
->
{
d
.
buildName
();
return
d
.
buildRepoAccountDTO
();
}).
collect
(
Collectors
.
toList
());
List
<
Integer
>
accountIds
=
data
.
stream
().
map
(
RepoAccountDTO:
:
getId
).
collect
(
Collectors
.
toList
());
param
.
setAccountIds
(
accountIds
);
// List<RepoWalletDTO> wallets = repoPayServletClient.feignListWalletInfo(param);
List
<
RepoWalletDTO
>
wallets
=
listWalletInfo
(
param
);
Map
<
Integer
,
RepoWalletDTO
>
mapWallet
=
wallets
.
stream
()
.
collect
(
Collectors
.
toMap
(
RepoWalletDTO:
:
getRepoAccountId
,
wallet
->
wallet
,
(
k1
,
k2
)
->
k2
));
for
(
RepoAccountDTO
ac
:
data
)
{
if
(
mapWallet
.
containsKey
(
ac
.
getId
()))
{
ac
.
setCashAmt
(
mapWallet
.
get
(
ac
.
getId
()).
getCashAmt
());
ac
.
setRemark
(
mapWallet
.
get
(
ac
.
getId
()).
getRemark
());
}
}
return
PageResult
.
buildPage
(
pageNo
,
param
.
getPageSize
(),
count
,
data
);
}
public
List
<
RepoWalletDTO
>
listWalletInfo
(
RepoAccountQO
param
)
{
if
(
CollectionUtils
.
isEmpty
(
param
.
getAccountIds
()))
{
return
java
.
util
.
Collections
.
emptyList
();
}
List
<
RepoWalletDO
>
wallets
=
repoAccountDao
.
listWalletInfo
(
param
);
return
wallets
.
stream
().
map
(
d
->
{
return
d
.
buildRepoWalletDTO
();
}).
collect
(
Collectors
.
toList
());
}
}
src/main/java/com/mmc/payment/service/Impl/RepoCashServiceImpl.java
0 → 100644
浏览文件 @
18b7ef67
package
com
.
mmc
.
payment
.
service
.
Impl
;
import
com.mmc.payment.common.*
;
import
com.mmc.payment.config.RepoCashMethod
;
import
com.mmc.payment.dao.RepoCashDao
;
import
com.mmc.payment.entity.RepoCashDO
;
import
com.mmc.payment.entity.RepoWalletDO
;
import
com.mmc.payment.model.dto.BaseAccountDTO
;
import
com.mmc.payment.model.dto.RepoAccountDTO
;
import
com.mmc.payment.model.dto.RepoCashDTO
;
import
com.mmc.payment.model.dto.UserAccountDTO
;
import
com.mmc.payment.model.qo.RepoCashQO
;
import
com.mmc.payment.model.qo.UserAccountQO
;
import
com.mmc.payment.model.vo.RepoCashVO
;
import
com.mmc.payment.service.RepoCashService
;
import
io.jsonwebtoken.lang.Collections
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.math.BigDecimal
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
/**
* @Author small
* @Date 2023/5/24 10:06
* @Version 1.0
*/
@Service
public
class
RepoCashServiceImpl
implements
RepoCashService
{
@Autowired
private
RepoCashDao
repoCashDao
;
/* @Autowired
private RepoWalletDao repoWalletDao;*/
/*@Autowired
private UserServletClient userServletClient;
@Autowired
private RepoServletClient repoServletClient;*/
@Override
public
PageResult
listPageRepoCash
(
RepoCashQO
param
)
{
int
count
=
repoCashDao
.
countPagePFRepoCash
(
param
);
if
(
count
==
0
)
{
return
PageResult
.
buildPage
(
param
.
getPageNo
(),
param
.
getPageSize
(),
count
);
}
Integer
pageNo
=
param
.
getPageNo
();
param
.
buildCurrentPage
();
List
<
RepoCashDO
>
list
=
repoCashDao
.
listPagePFRepoCash
(
param
);
List
<
Integer
>
userIds
=
new
ArrayList
<
Integer
>();
for
(
RepoCashDO
d
:
list
)
{
if
(
d
.
getCreateUser
()
!=
null
&&
!
userIds
.
contains
(
d
.
getCreateUser
()))
{
userIds
.
add
(
d
.
getCreateUser
());
}
}
List
<
RepoCashDTO
>
data
=
list
.
stream
().
map
(
d
->
{
return
d
.
buildRepoCashDTO
();
}).
collect
(
Collectors
.
toList
());
UserAccountQO
uq
=
UserAccountQO
.
builder
().
userIds
(
userIds
).
build
();
List
<
UserAccountDTO
>
users
=
null
;
//userServletClient.feignListUserAccountById(uq);
Map
<
Integer
,
UserAccountDTO
>
mapUser
=
users
.
stream
()
.
collect
(
Collectors
.
toMap
(
UserAccountDTO:
:
getId
,
ud
->
ud
,
(
k1
,
k2
)
->
k2
));
data
.
forEach
(
d
->
{
if
(
mapUser
.
containsKey
(
d
.
getCreateUser
()))
{
d
.
setOpNo
(
mapUser
.
get
(
d
.
getCreateUser
()).
getAccountNo
());
d
.
setOpName
(
mapUser
.
get
(
d
.
getCreateUser
()).
getUserName
());
}
});
return
PageResult
.
buildPage
(
pageNo
,
param
.
getPageSize
(),
count
,
data
);
}
@Override
public
void
updateCashRemark
(
Integer
id
,
String
remark
)
{
repoCashDao
.
updateCashRemark
(
id
,
remark
);
}
@Override
public
ResultBody
reqCash
(
BaseAccountDTO
cuser
,
RepoCashVO
cash
)
{
// 金额范围验证
if
(!
AmtUtil
.
vertifyRepoAmt
(
cash
.
getAmtPaid
()))
{
return
ResultBody
.
error
(
ResultEnum
.
AMT_PAID_VERITY_ERROR
);
}
// 密码认证
ResultBody
body
=
null
;
//userServletClient.feignAuthUserPwd(cuser.getId(), cash.getAuthPwd());
if
(!
ResultEnum
.
SUCCESS
.
getResultCode
().
equals
(
body
.
getCode
()))
{
return
body
;
}
// 用户信息
RepoAccountDTO
account
=
null
;
//repoServletClient.feignAccountSimpleInfo(cash.getRepoAccountId());
if
(
account
==
null
)
{
return
ResultBody
.
error
(
ResultEnum
.
FEIGN_REPOUSER_SERVLET_ERROR
);
}
RepoWalletDO
wallet
=
null
;
//repoWalletDao.getRepoWalletInfo(cash.getRepoAccountId());
if
(
wallet
==
null
)
{
return
ResultBody
.
error
(
ResultEnum
.
WALLET_NOT_FIND_ERROR
);
}
// 扣除的金额不能大于余额
// if (cash.getAmtPaid().compareTo(wallet.getCashAmt()) > 0) {
// return ResultBody.error(ResultEnum.WALLET_CASH_NOT_ENOUGH_ERROR);
// }
Date
cdate
=
new
Date
();
RepoCashDO
rc
=
new
RepoCashDO
();
rc
.
setRepoAccountId
(
account
.
getId
());
rc
.
setUid
(
account
.
getUid
());
rc
.
setAccountName
(
account
.
getAccountName
());
rc
.
setPayNo
(
CodeUtil
.
createRepoCashNo
());
rc
.
setPayMethod
(
RepoCashMethod
.
REG
.
getCode
());
rc
.
setAmtPaid
(
cash
.
getAmtPaid
());
BigDecimal
newCashAmt
=
(
wallet
.
getCashAmt
().
add
(
cash
.
getAmtPaid
())).
setScale
(
2
,
BigDecimal
.
ROUND_DOWN
);
rc
.
setCashAmt
(
newCashAmt
);
rc
.
setPayTime
(
cdate
);
String
voucher
=
Collections
.
isEmpty
(
cash
.
getVoucher
())
?
null
:
String
.
join
(
","
,
cash
.
getVoucher
());
rc
.
setVoucher
(
voucher
);
rc
.
setRemark
(
cash
.
getRemark
());
rc
.
setCreateTime
(
cdate
);
rc
.
setCreateUser
(
cuser
.
getId
());
repoCashDao
.
insertRepoCash
(
rc
);
// repoWalletDao.updateRepoWalletAmt(account.getId(), rc.getAmtPaid());
return
ResultBody
.
success
();
}
@Override
public
ResultBody
dedCash
(
BaseAccountDTO
cuser
,
RepoCashVO
cash
)
{
// 金额范围验证
if
(!
AmtUtil
.
vertifyRepoAmt
(
cash
.
getAmtPaid
()))
{
return
ResultBody
.
error
(
ResultEnum
.
AMT_PAID_VERITY_ERROR
);
}
// 密码认证
ResultBody
body
=
null
;
//userServletClient.feignAuthUserPwd(cuser.getId(), cash.getAuthPwd());
if
(!
ResultEnum
.
SUCCESS
.
getResultCode
().
equals
(
body
.
getCode
()))
{
return
body
;
}
// 用户信息
RepoAccountDTO
account
=
null
;
//repoServletClient.feignAccountSimpleInfo(cash.getRepoAccountId());
if
(
account
==
null
)
{
return
ResultBody
.
error
(
ResultEnum
.
FEIGN_REPOUSER_SERVLET_ERROR
);
}
RepoWalletDO
wallet
=
null
;
//repoWalletDao.getRepoWalletInfo(cash.getRepoAccountId());
if
(
wallet
==
null
)
{
return
ResultBody
.
error
(
ResultEnum
.
WALLET_NOT_FIND_ERROR
);
}
// 扣除的金额不能大于余额
if
(
cash
.
getAmtPaid
().
compareTo
(
wallet
.
getCashAmt
())
>
0
)
{
return
ResultBody
.
error
(
ResultEnum
.
WALLET_CASH_NOT_ENOUGH_ERROR
);
}
Date
cdate
=
new
Date
();
RepoCashDO
rc
=
new
RepoCashDO
();
rc
.
setRepoAccountId
(
account
.
getId
());
rc
.
setUid
(
account
.
getUid
());
rc
.
setAccountName
(
account
.
getAccountName
());
rc
.
setPayNo
(
CodeUtil
.
createRepoCashNo
());
rc
.
setPayMethod
(
RepoCashMethod
.
HANDLER
.
getCode
());
rc
.
setAmtPaid
(
cash
.
getAmtPaid
().
multiply
(
BigDecimal
.
valueOf
(-
1
)));
BigDecimal
newCashAmt
=
(
wallet
.
getCashAmt
().
subtract
(
cash
.
getAmtPaid
())).
setScale
(
2
,
BigDecimal
.
ROUND_DOWN
);
rc
.
setCashAmt
(
newCashAmt
);
rc
.
setPayTime
(
cdate
);
String
voucher
=
Collections
.
isEmpty
(
cash
.
getVoucher
())
?
null
:
String
.
join
(
","
,
cash
.
getVoucher
());
rc
.
setVoucher
(
voucher
);
rc
.
setRemark
(
cash
.
getRemark
());
rc
.
setCreateTime
(
cdate
);
rc
.
setCreateUser
(
cuser
.
getId
());
repoCashDao
.
insertRepoCash
(
rc
);
//repoWalletDao.updateRepoWalletAmt(account.getId(), rc.getAmtPaid());
return
ResultBody
.
success
();
}
@Override
public
RepoCashDTO
getRefundInfo
(
String
refundNo
)
{
RepoCashDO
refund
=
repoCashDao
.
getRefundCashInfo
(
refundNo
);
return
refund
==
null
?
null
:
refund
.
buildRepoCashDTO
();
}
}
src/main/java/com/mmc/payment/service/RepoAccountService.java
0 → 100644
浏览文件 @
18b7ef67
package
com
.
mmc
.
payment
.
service
;
import
com.mmc.payment.common.PageResult
;
import
com.mmc.payment.model.dto.BaseAccountDTO
;
import
com.mmc.payment.model.qo.RepoAccountQO
;
/**
* @Author small
* @Date 2023/5/23 19:10
* @Version 1.0
*/
public
interface
RepoAccountService
{
PageResult
listPagePayManager
(
RepoAccountQO
param
,
BaseAccountDTO
cuser
);
}
src/main/java/com/mmc/payment/service/RepoCashService.java
0 → 100644
浏览文件 @
18b7ef67
package
com
.
mmc
.
payment
.
service
;
import
com.mmc.payment.common.PageResult
;
import
com.mmc.payment.common.ResultBody
;
import
com.mmc.payment.model.dto.BaseAccountDTO
;
import
com.mmc.payment.model.dto.RepoCashDTO
;
import
com.mmc.payment.model.qo.RepoCashQO
;
import
com.mmc.payment.model.vo.RepoCashVO
;
/**
* @Author small
* @Date 2023/5/24 10:06
* @Version 1.0
*/
public
interface
RepoCashService
{
PageResult
listPageRepoCash
(
RepoCashQO
param
);
void
updateCashRemark
(
Integer
id
,
String
remark
);
/**
* 充值
*
* @param cash
* @return
*/
ResultBody
reqCash
(
BaseAccountDTO
cuser
,
RepoCashVO
cash
);
ResultBody
dedCash
(
BaseAccountDTO
cuser
,
RepoCashVO
cash
);
RepoCashDTO
getRefundInfo
(
String
refundNo
);
}
src/main/resources/mapper/RepoAccountDao.xml
0 → 100644
浏览文件 @
18b7ef67
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.mmc.payment.dao.RepoAccountDao"
>
<select
id=
"listPagePayManager"
></select>
</mapper>
src/main/resources/mapper/RepoCashDao.xml
0 → 100644
浏览文件 @
18b7ef67
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.mmc.payment.dao.RepoCashDao"
>
<resultMap
id=
"repoCashResultMap"
type=
"com.mmc.payment.entity.RepoCashDO"
>
<id
property=
"id"
column=
"id"
/>
<result
property=
"repoAccountId"
column=
"repo_account_id"
/>
<result
property=
"uid"
column=
"uid"
/>
<result
property=
"accountName"
column=
"account_name"
/>
<result
property=
"orderInfoId"
column=
"order_info_id"
/>
<result
property=
"orderNo"
column=
"order_no"
/>
<result
property=
"skuInfoId"
column=
"sku_info_id"
/>
<result
property=
"skuTitle"
column=
"sku_title"
/>
<result
property=
"wareInfoId"
column=
"ware_info_id"
/>
<result
property=
"wareNo"
column=
"ware_no"
/>
<result
property=
"wareTitle"
column=
"ware_title"
/>
<result
property=
"payNo"
column=
"pay_no"
/>
<result
property=
"payMethod"
column=
"pay_method"
/>
<result
property=
"amtPaid"
column=
"amt_paid"
/>
<result
property=
"cashAmt"
column=
"cash_amt"
/>
<result
property=
"payTime"
column=
"pay_time"
/>
<result
property=
"voucher"
column=
"voucher"
/>
<result
property=
"refundNo"
column=
"refund_no"
/>
<result
property=
"remark"
column=
"remark"
/>
<result
property=
"updateTime"
column=
"update_time"
/>
<result
property=
"updateUser"
column=
"update_user"
/>
<result
property=
"createTime"
column=
"create_time"
/>
<result
property=
"createUser"
column=
"create_user"
/>
</resultMap>
<select
id=
"getRefundCashInfo"
resultMap=
"repoCashResultMap"
parameterType=
"Integer"
>
select c.id,c.repo_account_id,c.ware_title,c.pay_no,
c.order_no,c.refund_no,c.create_user,c.pay_method,
c.amt_paid,c.cash_amt,c.remark,c.voucher,c.pay_time
from repo_cash c
<where>
c.refund_no = #{refundNo}
</where>
</select>
<insert
id=
"insertRepoCash"
useGeneratedKeys=
"true"
keyProperty=
"id"
parameterType=
"com.mmc.payment.entity.RepoCashDO"
>
insert into repo_cash
(
repo_account_id,uid,account_name,order_info_id,order_no,sku_info_id,sku_title,
ware_info_id,ware_no,ware_title,pay_no,pay_method,amt_paid,cash_amt,pay_time,remark,
voucher,refund_no,update_time,update_user,create_time,create_user
)
values
(
#{repoAccountId},#{uid},#{accountName},#{orderInfoId},#{orderNo},#{skuInfoId},#{skuTitle},
#{wareInfoId},#{wareNo},#{wareTitle},#{payNo},#{payMethod},#{amtPaid},#{cashAmt},#{payTime},#{remark},
#{voucher},#{refundNo},#{updateTime},#{updateUser},#{createTime},#{createUser}
)
</insert>
<update
id=
"updateCashRemark"
>
update repo_cash
set remark = #{remark}
where id = #{id}
</update>
<select
id=
"listPagePFRepoCash"
resultMap=
"repoCashResultMap"
parameterType=
"com.mmc.payment.model.qo.RepoCashQO"
>
select c.id,c.repo_account_id,c.ware_title,c.pay_no,
c.order_no,c.refund_no,c.create_user,c.pay_method,
c.amt_paid,c.cash_amt,c.remark,c.voucher
from repo_cash c
<where>
and c.repo_account_id = #{repoAccountId}
<if
test=
" keyword!=null and keyword!='' "
>
and (
c.ware_title like CONCAT('%',#{keyword},'%')
or c.pay_no like CONCAT('%',#{keyword},'%')
or c.order_no like CONCAT('%',#{keyword},'%')
or c.refund_no like CONCAT('%',#{keyword},'%')
)
</if>
<if
test=
" startTime != null and startTime != '' "
>
and c.pay_time
>
= STR_TO_DATE(#{startTime},'%Y-%m-%d
%H:%i:%s')
</if>
<if
test=
" endTime != null and endTime != '' "
>
and c.pay_time
<
= STR_TO_DATE(#{endTime},'%Y-%m-%d
%H:%i:%s')
</if>
<if
test=
" payMethod != null "
>
and c.pay_method = #{payMethod}
</if>
</where>
order by c.pay_time desc
limit #{pageNo},#{pageSize}
</select>
<select
id=
"countPagePFRepoCash"
resultType=
"int"
parameterType=
"com.mmc.payment.model.qo.RepoCashQO"
>
select count(*)
from repo_cash c
<where>
and c.repo_account_id = #{repoAccountId}
<if
test=
" keyword!=null and keyword!='' "
>
and (
c.ware_title like CONCAT('%',#{keyword},'%')
or c.pay_no like CONCAT('%',#{keyword},'%')
or c.order_no like CONCAT('%',#{keyword},'%')
or c.refund_no like CONCAT('%',#{keyword},'%')
)
</if>
<if
test=
" startTime != null and startTime != '' "
>
and c.pay_time
>
= STR_TO_DATE(#{startTime},'%Y-%m-%d
%H:%i:%s')
</if>
<if
test=
" endTime != null and endTime != '' "
>
and c.pay_time
<
= STR_TO_DATE(#{endTime},'%Y-%m-%d
%H:%i:%s')
</if>
<if
test=
" payMethod != null "
>
and c.pay_method = #{payMethod}
</if>
</where>
</select>
</mapper>
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论