Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
P
payment-ci-test
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
test-ci
payment-ci-test
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 @@
<version>
3.0.2
</version>
</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>
...
...
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
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论