Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
jinli gu
Jeepay
Commits
de3de82d
Commit
de3de82d
authored
Jun 09, 2021
by
dingzhiwei
Browse files
初始化Jeepay项目
parent
40dcaf4a
Changes
453
Hide whitespace changes
Inline
Side-by-side
Too many changes to show.
To preserve performance only
20 of 453+
files are displayed.
Plain diff
Email patch
jeepay-merchant/src/main/java/com/jeequan/jeepay/mch/aop/MethodLogAop.java
0 → 100644
View file @
de3de82d
/*
* Copyright (c) 2021-2031, 河北计全科技有限公司 (https://www.jeequan.com & jeequan@126.com).
* <p>
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0;
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.gnu.org/licenses/lgpl.html
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
com.jeequan.jeepay.mch.aop
;
import
com.alibaba.fastjson.JSONObject
;
import
com.jeequan.jeepay.core.aop.MethodLog
;
import
com.jeequan.jeepay.core.beans.RequestKitBean
;
import
com.jeequan.jeepay.core.constants.CS
;
import
com.jeequan.jeepay.core.entity.SysLog
;
import
com.jeequan.jeepay.core.model.security.JeeUserDetails
;
import
com.jeequan.jeepay.service.impl.SysLogService
;
import
org.aspectj.lang.JoinPoint
;
import
org.aspectj.lang.ProceedingJoinPoint
;
import
org.aspectj.lang.Signature
;
import
org.aspectj.lang.annotation.AfterThrowing
;
import
org.aspectj.lang.annotation.Around
;
import
org.aspectj.lang.annotation.Aspect
;
import
org.aspectj.lang.annotation.Pointcut
;
import
org.aspectj.lang.reflect.MethodSignature
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
org.springframework.web.context.request.RequestContextHolder
;
import
org.springframework.web.context.request.ServletRequestAttributes
;
import
javax.servlet.http.HttpServletRequest
;
import
java.lang.reflect.Method
;
import
java.util.Date
;
import
java.util.concurrent.Executors
;
import
java.util.concurrent.ScheduledExecutorService
;
/**
* 方法级日志切面组件
*
* @author terrfly
* @modify pangxiaoyu
* @site https://www.jeepay.vip
* @date 2021-04-27 15:50
*/
@Component
@Aspect
public
class
MethodLogAop
{
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
MethodLogAop
.
class
);
@Autowired
private
SysLogService
sysLogService
;
@Autowired
private
RequestKitBean
requestKitBean
;
/**
* 异步处理线程池
*/
private
final
static
ScheduledExecutorService
scheduledThreadPool
=
Executors
.
newScheduledThreadPool
(
10
);
/**
* 切点
*/
@Pointcut
(
"@annotation(com.jeequan.jeepay.core.aop.MethodLog)"
)
public
void
methodCachePointcut
()
{
}
/**
* 切面
* @param point
* @return
* @throws Throwable
*/
@Around
(
"methodCachePointcut()"
)
public
Object
around
(
ProceedingJoinPoint
point
)
throws
Throwable
{
final
SysLog
sysLog
=
new
SysLog
();
// 基础日志信息
setBaseLogInfo
(
point
,
sysLog
);
//处理切面任务 发生异常将向外抛出 不记录日志
Object
result
=
point
.
proceed
();
try
{
sysLog
.
setUserId
(
JeeUserDetails
.
getCurrentUserDetails
().
getSysUser
().
getSysUserId
());
sysLog
.
setUserName
(
JeeUserDetails
.
getCurrentUserDetails
().
getSysUser
().
getRealname
());
sysLog
.
setSystem
(
JeeUserDetails
.
getCurrentUserDetails
().
getSysUser
().
getSystem
());
sysLog
.
setOptResInfo
(
JSONObject
.
toJSON
(
result
).
toString
());
scheduledThreadPool
.
execute
(
new
Runnable
()
{
@Override
public
void
run
()
{
sysLogService
.
save
(
sysLog
);
}
});
}
catch
(
Exception
e
)
{
logger
.
error
(
"methodLogError"
,
e
);
}
return
result
;
}
/**
* @author: pangxiaoyu
* @date: 2021/6/7 14:04
* @describe: 记录异常操作请求信息
*/
@AfterThrowing
(
pointcut
=
"methodCachePointcut()"
,
throwing
=
"e"
)
public
void
doException
(
JoinPoint
joinPoint
,
Throwable
e
)
throws
Exception
{
final
SysLog
sysLog
=
new
SysLog
();
// 基础日志信息
setBaseLogInfo
(
joinPoint
,
sysLog
);
sysLog
.
setOptResInfo
(
"请求异常"
);
scheduledThreadPool
.
execute
(()
->
sysLogService
.
save
(
sysLog
));
}
/**
* 获取方法中的中文备注
* @param joinPoint
* @return
* @throws Exception
*/
public
static
String
getAnnotationRemark
(
JoinPoint
joinPoint
)
throws
Exception
{
Signature
sig
=
joinPoint
.
getSignature
();
Method
m
=
joinPoint
.
getTarget
().
getClass
().
getMethod
(
joinPoint
.
getSignature
().
getName
(),
((
MethodSignature
)
sig
).
getParameterTypes
());
MethodLog
methodCache
=
m
.
getAnnotation
(
MethodLog
.
class
);
if
(
methodCache
!=
null
)
{
return
methodCache
.
remark
();
}
return
""
;
}
/**
* @author: pangxiaoyu
* @date: 2021/6/7 14:12
* @describe: 日志基本信息 公共方法
*/
private
void
setBaseLogInfo
(
JoinPoint
joinPoint
,
SysLog
sysLog
)
throws
Exception
{
// 使用point.getArgs()可获取request,仅限于spring MVC参数包含request,改为通过contextHolder获取。
HttpServletRequest
request
=
((
ServletRequestAttributes
)
RequestContextHolder
.
getRequestAttributes
()).
getRequest
();
//请求参数
sysLog
.
setOptReqParam
(
requestKitBean
.
getReqParamJSON
().
toJSONString
()
);
//注解备注
sysLog
.
setMethodRemark
(
getAnnotationRemark
(
joinPoint
));
//包名 方法名
String
methodName
=
joinPoint
.
getSignature
().
getName
();
String
packageName
=
joinPoint
.
getThis
().
getClass
().
getName
();
if
(
packageName
.
indexOf
(
"$$EnhancerByCGLIB$$"
)
>
-
1
||
packageName
.
indexOf
(
"$$EnhancerBySpringCGLIB$$"
)
>
-
1
)
{
// 如果是CGLIB动态生成的类
packageName
=
packageName
.
substring
(
0
,
packageName
.
indexOf
(
"$$"
));
}
sysLog
.
setMethodName
(
packageName
+
"."
+
methodName
);
sysLog
.
setReqUrl
(
request
.
getRequestURL
().
toString
());
sysLog
.
setUserIp
(
requestKitBean
.
getClientIp
());
sysLog
.
setCreatedAt
(
new
Date
());
sysLog
.
setSystem
(
CS
.
SYS_TYPE
.
MCH
);
}
}
jeepay-merchant/src/main/java/com/jeequan/jeepay/mch/bootstrap/InitRunner.java
0 → 100644
View file @
de3de82d
/*
* Copyright (c) 2021-2031, 河北计全科技有限公司 (https://www.jeequan.com & jeequan@126.com).
* <p>
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0;
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.gnu.org/licenses/lgpl.html
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
com.jeequan.jeepay.mch.bootstrap
;
import
cn.hutool.core.date.DatePattern
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.serializer.SerializeConfig
;
import
com.alibaba.fastjson.serializer.SerializerFeature
;
import
com.alibaba.fastjson.serializer.SimpleDateFormatSerializer
;
import
com.jeequan.jeepay.core.utils.DateKit
;
import
org.springframework.boot.CommandLineRunner
;
import
org.springframework.stereotype.Component
;
import
java.util.Date
;
/**
* 项目初始化操作
* 比如初始化配置文件, 读取基础数据, 资源初始化等。 避免在Main函数中写业务代码。
* CommandLineRunner / ApplicationRunner都可以达到要求, 只是调用参数有所不同。
*
* @author terrfly
* @site https://www.jeepay.vip
* @date 2021-04-27 15:50
*/
@Component
public
class
InitRunner
implements
CommandLineRunner
{
@Override
public
void
run
(
String
...
args
)
throws
Exception
{
//初始化处理fastjson格式
SerializeConfig
serializeConfig
=
SerializeConfig
.
getGlobalInstance
();
serializeConfig
.
put
(
Date
.
class
,
new
SimpleDateFormatSerializer
(
DatePattern
.
NORM_DATETIME_PATTERN
));
//解决json 序列化时候的 $ref:问题
JSON
.
DEFAULT_GENERATE_FEATURE
|=
SerializerFeature
.
DisableCircularReferenceDetect
.
getMask
();
}
}
jeepay-merchant/src/main/java/com/jeequan/jeepay/mch/bootstrap/JeepayMchApplication.java
0 → 100644
View file @
de3de82d
/*
* Copyright (c) 2021-2031, 河北计全科技有限公司 (https://www.jeequan.com & jeequan@126.com).
* <p>
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0;
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.gnu.org/licenses/lgpl.html
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
com.jeequan.jeepay.mch.bootstrap
;
import
com.alibaba.fastjson.support.config.FastJsonConfig
;
import
com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter
;
import
com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor
;
import
org.mybatis.spring.annotation.MapperScan
;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.boot.autoconfigure.SpringBootApplication
;
import
org.springframework.boot.autoconfigure.http.HttpMessageConverters
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.ComponentScan
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.http.MediaType
;
import
org.springframework.scheduling.annotation.EnableScheduling
;
import
java.util.Arrays
;
/**
* spring-boot 主启动程序
*
* @author terrfly
* @site https://www.jeepay.vip
* @date 2021-04-27 15:50
*/
@SpringBootApplication
@EnableScheduling
@MapperScan
(
"com.jeequan.jeepay.service.mapper"
)
//Mybatis mapper接口路径
@ComponentScan
(
basePackages
=
"com.jeequan.jeepay.*"
)
//由于MainApplication没有在项目根目录, 需要配置basePackages属性使得成功扫描所有Spring组件;
@Configuration
public
class
JeepayMchApplication
{
/** main启动函数 **/
public
static
void
main
(
String
[]
args
)
{
//启动项目
SpringApplication
.
run
(
JeepayMchApplication
.
class
,
args
);
}
/** fastJson 配置信息 **/
@Bean
public
HttpMessageConverters
fastJsonConfig
(){
//新建fast-json转换器
FastJsonHttpMessageConverter
converter
=
new
FastJsonHttpMessageConverter
();
//fast-json 配置信息
FastJsonConfig
config
=
new
FastJsonConfig
();
config
.
setDateFormat
(
"yyyy-MM-dd HH:mm:ss"
);
converter
.
setFastJsonConfig
(
config
);
//设置响应的 Content-Type
converter
.
setSupportedMediaTypes
(
Arrays
.
asList
(
new
MediaType
[]{
MediaType
.
APPLICATION_JSON
,
MediaType
.
APPLICATION_JSON_UTF8
}));
return
new
HttpMessageConverters
(
converter
);
}
/** Mybatis plus 分页插件 **/
@Bean
public
PaginationInterceptor
paginationInterceptor
()
{
PaginationInterceptor
paginationInterceptor
=
new
PaginationInterceptor
();
// 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求 默认false
// paginationInterceptor.setOverflow(false);
// 设置最大单页限制数量,默认 500 条,-1 不受限制
// paginationInterceptor.setLimit(500);
return
paginationInterceptor
;
}
}
jeepay-merchant/src/main/java/com/jeequan/jeepay/mch/config/RedisConfig.java
0 → 100644
View file @
de3de82d
/*
* Copyright (c) 2021-2031, 河北计全科技有限公司 (https://www.jeequan.com & jeequan@126.com).
* <p>
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0;
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.gnu.org/licenses/lgpl.html
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
com.jeequan.jeepay.mch.config
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.Primary
;
import
org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory
;
import
org.springframework.data.redis.core.StringRedisTemplate
;
/**
* redis管理类
*
* @author terrfly
* @site https://www.jeepay.vip
* @date 2021-04-27 15:50
*/
@Configuration
public
class
RedisConfig
{
@Value
(
"${spring.redis.host}"
)
private
String
host
;
@Value
(
"${spring.redis.port}"
)
private
Integer
port
;
@Value
(
"${spring.redis.timeout}"
)
private
Integer
timeout
;
@Value
(
"${spring.redis.database}"
)
private
Integer
defaultDatabase
;
@Value
(
"${spring.redis.password}"
)
private
String
password
;
/** 当前系统的redis缓存操作对象 (主对象) **/
@Primary
@Bean
(
name
=
"defaultStringRedisTemplate"
)
public
StringRedisTemplate
sysStringRedisTemplate
()
{
StringRedisTemplate
template
=
new
StringRedisTemplate
();
LettuceConnectionFactory
jedisConnectionFactory
=
new
LettuceConnectionFactory
();
jedisConnectionFactory
.
setHostName
(
host
);
jedisConnectionFactory
.
setPort
(
port
);
jedisConnectionFactory
.
setTimeout
(
timeout
);
if
(!
StringUtils
.
isEmpty
(
password
))
{
jedisConnectionFactory
.
setPassword
(
password
);
}
if
(
defaultDatabase
!=
0
)
{
jedisConnectionFactory
.
setDatabase
(
defaultDatabase
);
}
jedisConnectionFactory
.
afterPropertiesSet
();
template
.
setConnectionFactory
(
jedisConnectionFactory
);
return
template
;
}
}
jeepay-merchant/src/main/java/com/jeequan/jeepay/mch/config/SystemYmlConfig.java
0 → 100644
View file @
de3de82d
/*
* Copyright (c) 2021-2031, 河北计全科技有限公司 (https://www.jeequan.com & jeequan@126.com).
* <p>
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0;
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.gnu.org/licenses/lgpl.html
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
com.jeequan.jeepay.mch.config
;
import
lombok.Data
;
import
org.springframework.boot.context.properties.ConfigurationProperties
;
import
org.springframework.boot.context.properties.NestedConfigurationProperty
;
import
org.springframework.stereotype.Component
;
/**
* 系统Yml配置参数定义Bean
*
* @author terrfly
* @site https://www.jeepay.vip
* @date 2021-04-27 15:50
*/
@Component
@ConfigurationProperties
(
prefix
=
"isys"
)
@Data
public
class
SystemYmlConfig
{
/** 是否允许跨域请求 [生产环境建议关闭, 若api与前端项目没有在同一个域名下时,应开启此配置或在nginx统一配置允许跨域] **/
private
Boolean
allowCors
;
/** 生成jwt的秘钥。 要求每个系统有单独的秘钥管理机制。 **/
private
String
jwtSecret
;
@NestedConfigurationProperty
//指定该属性为嵌套值, 否则默认为简单值导致对象为空(外部类不存在该问题, 内部static需明确指定)
private
OssFile
ossFile
;
/** 系统oss配置信息 **/
@Data
public
static
class
OssFile
{
/** 存储根路径 **/
private
String
rootPath
;
/** 公共读取块 **/
private
String
publicPath
;
/** 私有读取块 **/
private
String
privatePath
;
}
}
\ No newline at end of file
jeepay-merchant/src/main/java/com/jeequan/jeepay/mch/ctrl/CommonCtrl.java
0 → 100644
View file @
de3de82d
/*
* Copyright (c) 2021-2031, 河北计全科技有限公司 (https://www.jeequan.com & jeequan@126.com).
* <p>
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0;
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.gnu.org/licenses/lgpl.html
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
com.jeequan.jeepay.mch.ctrl
;
import
com.jeequan.jeepay.core.constants.ApiCodeEnum
;
import
com.jeequan.jeepay.core.constants.CS
;
import
com.jeequan.jeepay.core.ctrls.AbstractCtrl
;
import
com.jeequan.jeepay.core.entity.SysUser
;
import
com.jeequan.jeepay.core.model.ApiRes
;
import
com.jeequan.jeepay.core.model.security.JeeUserDetails
;
import
com.jeequan.jeepay.mch.config.SystemYmlConfig
;
import
com.jeequan.jeepay.service.impl.SysConfigService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.security.core.context.SecurityContextHolder
;
/**
* 通用ctrl类
*
* @author terrfly
* @modify zhuxiao
* @site https://www.jeepay.vip
* @date 2021-04-27 15:50
*/
public
abstract
class
CommonCtrl
extends
AbstractCtrl
{
@Autowired
protected
SystemYmlConfig
mainConfig
;
@Autowired
private
SysConfigService
sysConfigService
;
/** 获取当前用户ID */
protected
JeeUserDetails
getCurrentUser
(){
return
(
JeeUserDetails
)
SecurityContextHolder
.
getContext
().
getAuthentication
().
getPrincipal
();
}
/** 获取当前商户ID **/
protected
String
getCurrentMchNo
()
{
return
getCurrentUser
().
getSysUser
().
getBelongInfoId
();
}
/**
* 获取当前用户登录IP
* @return
*/
protected
String
getIp
()
{
return
getClientIp
();
}
/**
* 校验当前用户是否为超管
* @return
*/
protected
ApiRes
checkIsAdmin
()
{
SysUser
sysUser
=
getCurrentUser
().
getSysUser
();
if
(
sysUser
.
getIsAdmin
()
!=
CS
.
YES
)
{
return
ApiRes
.
fail
(
ApiCodeEnum
.
SYS_PERMISSION_ERROR
);
}
else
{
return
null
;
}
}
}
jeepay-merchant/src/main/java/com/jeequan/jeepay/mch/ctrl/CurrentUserController.java
0 → 100644
View file @
de3de82d
/*
* Copyright (c) 2021-2031, 河北计全科技有限公司 (https://www.jeequan.com & jeequan@126.com).
* <p>
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0;
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.gnu.org/licenses/lgpl.html
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
com.jeequan.jeepay.mch.ctrl
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.jeequan.jeepay.core.aop.MethodLog
;
import
com.jeequan.jeepay.core.cache.ITokenService
;
import
com.jeequan.jeepay.core.constants.CS
;
import
com.jeequan.jeepay.core.entity.SysEntitlement
;
import
com.jeequan.jeepay.core.entity.SysUser
;
import
com.jeequan.jeepay.core.exception.BizException
;
import
com.jeequan.jeepay.core.model.ApiRes
;
import
com.jeequan.jeepay.core.model.security.JeeUserDetails
;
import
com.jeequan.jeepay.core.utils.TreeDataBuilder
;
import
com.jeequan.jeepay.service.impl.SysEntitlementService
;
import
com.jeequan.jeepay.service.impl.SysUserAuthService
;
import
com.jeequan.jeepay.service.impl.SysUserService
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.List
;
/**
* 当前登录者的信息相关接口
*
* @author terrfly
* @modify zhuxiao
* @site https://www.jeepay.vip
* @date 2021-04-27 15:50
*/
@RestController
@RequestMapping
(
"api/current"
)
public
class
CurrentUserController
extends
CommonCtrl
{
@Autowired
private
SysEntitlementService
sysEntitlementService
;
@Autowired
private
SysUserService
sysUserService
;
@Autowired
private
SysUserAuthService
sysUserAuthService
;
@RequestMapping
(
value
=
"/user"
,
method
=
RequestMethod
.
GET
)
public
ApiRes
currentUserInfo
()
{
///当前用户信息
JeeUserDetails
jeeUserDetails
=
getCurrentUser
();
SysUser
user
=
jeeUserDetails
.
getSysUser
();
//1. 当前用户所有权限ID集合
List
<
String
>
entIdList
=
new
ArrayList
<>();
jeeUserDetails
.
getAuthorities
().
stream
().
forEach
(
r
->
entIdList
.
add
(
r
.
getAuthority
()));
List
<
SysEntitlement
>
allMenuList
=
new
ArrayList
<>();
//所有菜单集合
//2. 查询出用户所有菜单集合 (包含左侧显示菜单 和 其他类型菜单 )
if
(
entIdList
!=
null
&&
!
entIdList
.
isEmpty
()){
allMenuList
=
sysEntitlementService
.
list
(
SysEntitlement
.
gw
()
.
in
(
SysEntitlement:
:
getEntId
,
entIdList
)
.
in
(
SysEntitlement:
:
getEntType
,
Arrays
.
asList
(
CS
.
ENT_TYPE
.
MENU_LEFT
,
CS
.
ENT_TYPE
.
MENU_OTHER
))
.
eq
(
SysEntitlement:
:
getSystem
,
CS
.
SYS_TYPE
.
MCH
)
.
eq
(
SysEntitlement:
:
getState
,
CS
.
PUB_USABLE
));
}
//4. 转换为json树状结构
JSONArray
jsonArray
=
(
JSONArray
)
JSONArray
.
toJSON
(
allMenuList
);
List
<
JSONObject
>
allMenuRouteTree
=
new
TreeDataBuilder
(
jsonArray
,
"entId"
,
"pid"
,
"children"
,
"entSort"
,
true
)
.
buildTreeObject
();
//1. 所有权限ID集合
user
.
addExt
(
"entIdList"
,
entIdList
);
user
.
addExt
(
"allMenuRouteTree"
,
allMenuRouteTree
);
return
ApiRes
.
ok
(
getCurrentUser
().
getSysUser
());
}
/** 修改个人信息 */
@MethodLog
(
remark
=
"修改个人信息"
)
@RequestMapping
(
value
=
"/user"
,
method
=
RequestMethod
.
PUT
)
public
ApiRes
modifyCurrentUserInfo
()
{
//修改头像
String
avatarUrl
=
getValString
(
"avatarUrl"
);
String
realname
=
getValString
(
"realname"
);
Byte
sex
=
getValByte
(
"sex"
);
SysUser
updateRecord
=
new
SysUser
();
updateRecord
.
setSysUserId
(
getCurrentUser
().
getSysUser
().
getSysUserId
());
if
(
StringUtils
.
isNotEmpty
(
avatarUrl
))
updateRecord
.
setAvatarUrl
(
avatarUrl
);
if
(
StringUtils
.
isNotEmpty
(
realname
))
updateRecord
.
setRealname
(
realname
);
if
(
sex
!=
null
)
updateRecord
.
setSex
(
sex
);
sysUserService
.
updateById
(
updateRecord
);
//保存redis最新数据
JeeUserDetails
currentUser
=
getCurrentUser
();
currentUser
.
setSysUser
(
sysUserService
.
getById
(
getCurrentUser
().
getSysUser
().
getSysUserId
()));
ITokenService
.
refData
(
currentUser
);
return
ApiRes
.
ok
();
}
/** modifyPwd */
@MethodLog
(
remark
=
"修改密码"
)
@RequestMapping
(
value
=
"modifyPwd"
,
method
=
RequestMethod
.
PUT
)
public
ApiRes
modifyPwd
()
throws
BizException
{
Long
opSysUserId
=
getValLongRequired
(
"recordId"
);
//操作员ID
//更改密码, 验证当前用户信息
String
currentUserPwd
=
getValStringRequired
(
"originalPwd"
);
//当前用户登录密码
//验证当前密码是否正确
if
(!
sysUserAuthService
.
validateCurrentUserPwd
(
currentUserPwd
)){
throw
new
BizException
(
"原密码验证失败!"
);
}
String
opUserPwd
=
getValStringRequired
(
"confirmPwd"
);
// 验证原密码与新密码是否相同
if
(
opUserPwd
.
equals
(
currentUserPwd
))
{
throw
new
BizException
(
"新密码与原密码不能相同!"
);
}
sysUserAuthService
.
resetAuthInfo
(
opSysUserId
,
null
,
null
,
opUserPwd
,
CS
.
SYS_TYPE
.
MGR
);
//调用登出接口
return
logout
();
}
/** 登出 */
@MethodLog
(
remark
=
"退出"
)
@RequestMapping
(
value
=
"logout"
,
method
=
RequestMethod
.
POST
)
public
ApiRes
logout
()
throws
BizException
{
ITokenService
.
removeIToken
(
getCurrentUser
().
getCacheKey
(),
getCurrentUser
().
getSysUser
().
getSysUserId
());
return
ApiRes
.
ok
();
}
}
jeepay-merchant/src/main/java/com/jeequan/jeepay/mch/ctrl/anon/AuthController.java
0 → 100644
View file @
de3de82d
/*
* Copyright (c) 2021-2031, 河北计全科技有限公司 (https://www.jeequan.com & jeequan@126.com).
* <p>
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0;
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.gnu.org/licenses/lgpl.html
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
com.jeequan.jeepay.mch.ctrl.anon
;
import
cn.hutool.captcha.CaptchaUtil
;
import
cn.hutool.captcha.LineCaptcha
;
import
cn.hutool.core.codec.Base64
;
import
cn.hutool.core.lang.UUID
;
import
com.alibaba.fastjson.JSONObject
;
import
com.jeequan.jeepay.core.aop.MethodLog
;
import
com.jeequan.jeepay.core.cache.RedisUtil
;
import
com.jeequan.jeepay.core.constants.CS
;
import
com.jeequan.jeepay.core.exception.BizException
;
import
com.jeequan.jeepay.core.model.ApiRes
;
import
com.jeequan.jeepay.mch.ctrl.CommonCtrl
;
import
com.jeequan.jeepay.mch.service.AuthService
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
org.springframework.web.bind.annotation.RestController
;
/**
* 登录鉴权
*
* @author terrfly
* @site https://www.jeepay.vip
* @date 2021-04-27 15:50
*/
@RestController
@RequestMapping
(
"/api/anon/auth"
)
public
class
AuthController
extends
CommonCtrl
{
@Autowired
private
AuthService
authService
;
/** 用户信息认证 获取iToken **/
@RequestMapping
(
value
=
"/validate"
,
method
=
RequestMethod
.
POST
)
@MethodLog
(
remark
=
"登录认证"
)
public
ApiRes
validate
()
throws
BizException
{
String
account
=
Base64
.
decodeStr
(
getValStringRequired
(
"ia"
));
//用户名 i account, 已做base64处理
String
ipassport
=
Base64
.
decodeStr
(
getValStringRequired
(
"ip"
));
//密码 i passport, 已做base64处理
String
vercode
=
Base64
.
decodeStr
(
getValStringRequired
(
"vc"
));
//验证码 vercode, 已做base64处理
String
vercodeToken
=
Base64
.
decodeStr
(
getValStringRequired
(
"vt"
));
//验证码token, vercode token , 已做base64处理
String
cacheCode
=
RedisUtil
.
getString
(
CS
.
getCacheKeyImgCode
(
vercodeToken
));
if
(
StringUtils
.
isEmpty
(
cacheCode
)
||
!
cacheCode
.
equalsIgnoreCase
(
vercode
)){
throw
new
BizException
(
"验证码有误!"
);
}
// 返回前端 accessToken
String
accessToken
=
authService
.
auth
(
account
,
ipassport
);
// 删除图形验证码缓存数据
RedisUtil
.
del
(
CS
.
getCacheKeyImgCode
(
vercodeToken
));
return
ApiRes
.
ok4newJson
(
CS
.
ACCESS_TOKEN_NAME
,
accessToken
);
}
/** 图片验证码 **/
@RequestMapping
(
value
=
"/vercode"
,
method
=
RequestMethod
.
GET
)
public
ApiRes
vercode
()
throws
BizException
{
//定义图形验证码的长和宽 // 4位验证码
LineCaptcha
lineCaptcha
=
CaptchaUtil
.
createLineCaptcha
(
137
,
40
,
4
,
80
);
lineCaptcha
.
createCode
();
//生成code
//redis
String
vercodeToken
=
UUID
.
fastUUID
().
toString
();
RedisUtil
.
setString
(
CS
.
getCacheKeyImgCode
(
vercodeToken
),
lineCaptcha
.
getCode
(),
60
);
//图片验证码缓存时间: 1分钟
JSONObject
result
=
new
JSONObject
();
result
.
put
(
"imageBase64Data"
,
lineCaptcha
.
getImageBase64Data
());
result
.
put
(
"vercodeToken"
,
vercodeToken
);
return
ApiRes
.
ok
(
result
);
}
}
jeepay-merchant/src/main/java/com/jeequan/jeepay/mch/ctrl/common/OssFileController.java
0 → 100644
View file @
de3de82d
/*
* Copyright (c) 2021-2031, 河北计全科技有限公司 (https://www.jeequan.com & jeequan@126.com).
* <p>
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0;
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.gnu.org/licenses/lgpl.html
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
com.jeequan.jeepay.mch.ctrl.common
;
import
cn.hutool.core.lang.UUID
;
import
com.jeequan.jeepay.core.constants.ApiCodeEnum
;
import
com.jeequan.jeepay.core.exception.BizException
;
import
com.jeequan.jeepay.core.model.ApiRes
;
import
com.jeequan.jeepay.core.model.OssFileConfig
;
import
com.jeequan.jeepay.core.utils.FileKit
;
import
com.jeequan.jeepay.mch.config.SystemYmlConfig
;
import
com.jeequan.jeepay.mch.ctrl.CommonCtrl
;
import
com.jeequan.jeepay.service.impl.SysConfigService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.multipart.MultipartFile
;
import
java.io.File
;
/*
* 统一文件上传接口(ossFile)
*
* @author terrfly
* @site https://www.jeepay.vip
* @date 2021/6/8 17:07
*/
@RestController
@RequestMapping
(
"/api/ossFiles"
)
public
class
OssFileController
extends
CommonCtrl
{
@Autowired
private
SystemYmlConfig
systemYmlConfig
;
@Autowired
private
SysConfigService
sysConfigService
;
/** 上传文件 (单文件上传) */
@PostMapping
(
"/{bizType}"
)
public
ApiRes
singleFileUpload
(
@RequestParam
(
"file"
)
MultipartFile
file
,
@PathVariable
(
"bizType"
)
String
bizType
)
{
if
(
file
==
null
)
return
ApiRes
.
fail
(
ApiCodeEnum
.
SYSTEM_ERROR
,
"选择文件不存在"
);
try
{
OssFileConfig
ossFileConfig
=
OssFileConfig
.
getOssFileConfigByBizType
(
bizType
);
//1. 判断bizType 是否可用
if
(
ossFileConfig
==
null
){
throw
new
BizException
(
"类型有误"
);
}
// 2. 判断文件是否支持
String
fileSuffix
=
FileKit
.
getFileSuffix
(
file
.
getOriginalFilename
(),
false
);
if
(
!
ossFileConfig
.
isAllowFileSuffix
(
fileSuffix
)
){
throw
new
BizException
(
"上传文件格式不支持!"
);
}
// 3. 判断文件大小是否超限
if
(
!
ossFileConfig
.
isMaxSizeLimit
(
file
.
getSize
())
){
throw
new
BizException
(
"上传大小请限制在["
+
ossFileConfig
.
getMaxSize
()
/
1024
/
1024
+
"M]以内!"
);
}
boolean
isAllowPublicRead
=
ossFileConfig
.
isAllowPublicRead
();
//是否允许公共读, true:公共读, false:私有文件
//公共读 & 是否上传到oss
boolean
isYunOss
=
false
;
//TODO 暂时不支持云oss方式
if
(
isAllowPublicRead
&&
isYunOss
){
return
null
;
}
//以下为文件上传到本地
// 新文件地址
String
newFileName
=
UUID
.
fastUUID
()
+
"."
+
fileSuffix
;
// 保存的文件夹名称
String
saveFilePath
=
isAllowPublicRead
?
systemYmlConfig
.
getOssFile
().
getPublicPath
()
:
systemYmlConfig
.
getOssFile
().
getPrivatePath
();
saveFilePath
=
saveFilePath
+
File
.
separator
+
bizType
+
File
.
separator
+
newFileName
;
//保存文件
saveFile
(
file
,
saveFilePath
);
//返回响应结果
String
resultUrl
=
bizType
+
"/"
+
newFileName
;
if
(
isAllowPublicRead
){
//允许公共读取
resultUrl
=
sysConfigService
.
getDBApplicationConfig
().
getOssPublicSiteUrl
()
+
"/"
+
resultUrl
;
}
return
ApiRes
.
ok
(
resultUrl
);
}
catch
(
BizException
biz
)
{
throw
biz
;
}
catch
(
Exception
e
)
{
logger
.
error
(
"upload error, fileName = {}"
,
file
==
null
?
null
:
file
.
getOriginalFilename
(),
e
);
throw
new
BizException
(
ApiCodeEnum
.
SYSTEM_ERROR
);
}
}
}
\ No newline at end of file
jeepay-merchant/src/main/java/com/jeequan/jeepay/mch/ctrl/merchant/MainChartController.java
0 → 100644
View file @
de3de82d
/*
* Copyright (c) 2021-2031, 河北计全科技有限公司 (https://www.jeequan.com & jeequan@126.com).
* <p>
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0;
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.gnu.org/licenses/lgpl.html
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
com.jeequan.jeepay.mch.ctrl.merchant
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.jeequan.jeepay.core.entity.MchInfo
;
import
com.jeequan.jeepay.core.entity.SysUser
;
import
com.jeequan.jeepay.core.model.ApiRes
;
import
com.jeequan.jeepay.mch.ctrl.CommonCtrl
;
import
com.jeequan.jeepay.service.impl.MchInfoService
;
import
com.jeequan.jeepay.service.impl.PayOrderService
;
import
com.jeequan.jeepay.service.impl.SysUserService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.security.access.prepost.PreAuthorize
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Map
;
/**
* 主页数据类
*
* @author pangxiaoyu
* @site https://www.jeepay.vip
* @date 2021-04-27 15:50
*/
@Slf4j
@RestController
@RequestMapping
(
"api/mainChart"
)
public
class
MainChartController
extends
CommonCtrl
{
@Autowired
private
PayOrderService
payOrderService
;
@Autowired
private
SysUserService
sysUserService
;
@Autowired
private
MchInfoService
mchInfoService
;
/** 周交易总金额 */
@PreAuthorize
(
"hasAuthority('ENT_MCH_MAIN_PAY_AMOUNT_WEEK')"
)
@RequestMapping
(
value
=
"/payAmountWeek"
,
method
=
RequestMethod
.
GET
)
public
ApiRes
payAmountWeek
()
{
return
ApiRes
.
ok
(
payOrderService
.
mainPageWeekCount
(
getCurrentMchNo
()));
}
/**
* 商户总数量、服务商总数量、总交易金额、总交易笔数
* @return
*/
@PreAuthorize
(
"hasAuthority('ENT_MCH_MAIN_NUMBER_COUNT')"
)
@RequestMapping
(
value
=
"/numCount"
,
method
=
RequestMethod
.
GET
)
public
ApiRes
numCount
()
{
return
ApiRes
.
ok
(
payOrderService
.
mainPageNumCount
(
getCurrentMchNo
()));
}
/** 交易统计 */
@PreAuthorize
(
"hasAuthority('ENT_MCH_MAIN_PAY_COUNT')"
)
@RequestMapping
(
value
=
"/payCount"
,
method
=
RequestMethod
.
GET
)
public
ApiRes
payCount
()
{
// 获取传入参数
JSONObject
paramJSON
=
getReqParamJSON
();
String
createdStart
=
paramJSON
.
getString
(
"createdStart"
);
String
createdEnd
=
paramJSON
.
getString
(
"createdEnd"
);
List
<
Map
>
mapList
=
payOrderService
.
mainPagePayCount
(
getCurrentMchNo
(),
createdStart
,
createdEnd
);
//返回数据
return
ApiRes
.
ok
(
mapList
);
}
/** 支付方式统计 */
@PreAuthorize
(
"hasAuthority('ENT_MCH_MAIN_PAY_TYPE_COUNT')"
)
@RequestMapping
(
value
=
"/payTypeCount"
,
method
=
RequestMethod
.
GET
)
public
ApiRes
payWayCount
()
{
JSONObject
paramJSON
=
getReqParamJSON
();
// 开始、结束时间
String
createdStart
=
paramJSON
.
getString
(
"createdStart"
);
String
createdEnd
=
paramJSON
.
getString
(
"createdEnd"
);
ArrayList
arrayResult
=
payOrderService
.
mainPagePayTypeCount
(
getCurrentMchNo
(),
createdStart
,
createdEnd
);
return
ApiRes
.
ok
(
arrayResult
);
}
/** 商户基本信息、用户基本信息 **/
@PreAuthorize
(
"hasAuthority('ENT_MCH_MAIN_USER_INFO')"
)
@RequestMapping
(
value
=
""
,
method
=
RequestMethod
.
GET
)
public
ApiRes
userDetail
()
{
SysUser
sysUser
=
sysUserService
.
getById
(
getCurrentUser
().
getSysUser
().
getSysUserId
());
MchInfo
mchInfo
=
mchInfoService
.
getById
(
getCurrentMchNo
());
JSONObject
json
=
(
JSONObject
)
JSON
.
toJSON
(
mchInfo
);
json
.
put
(
"loginUsername"
,
sysUser
.
getLoginUsername
());
json
.
put
(
"realname"
,
sysUser
.
getRealname
());
return
ApiRes
.
ok
(
json
);
}
}
jeepay-merchant/src/main/java/com/jeequan/jeepay/mch/ctrl/merchant/MchPayInterfaceConfigController.java
0 → 100644
View file @
de3de82d
/*
* Copyright (c) 2021-2031, 河北计全科技有限公司 (https://www.jeequan.com & jeequan@126.com).
* <p>
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0;
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.gnu.org/licenses/lgpl.html
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
com.jeequan.jeepay.mch.ctrl.merchant
;
import
com.jeequan.jeepay.core.aop.MethodLog
;
import
com.jeequan.jeepay.core.constants.CS
;
import
com.jeequan.jeepay.core.entity.MchInfo
;
import
com.jeequan.jeepay.core.entity.PayInterfaceConfig
;
import
com.jeequan.jeepay.core.entity.PayInterfaceDefine
;
import
com.jeequan.jeepay.core.exception.BizException
;
import
com.jeequan.jeepay.core.model.ApiRes
;
import
com.jeequan.jeepay.mch.ctrl.CommonCtrl
;
import
com.jeequan.jeepay.service.impl.MchInfoService
;
import
com.jeequan.jeepay.service.impl.PayInterfaceConfigService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.security.access.prepost.PreAuthorize
;
import
org.springframework.web.bind.annotation.*
;
import
java.math.BigDecimal
;
import
java.util.List
;
/**
* 商户支付接口配置类
*
* @author zhuxiao
* @site https://www.jeepay.vip
* @date 2021-04-27 15:50
*/
@RestController
@RequestMapping
(
"/api/mch/payConfigs"
)
public
class
MchPayInterfaceConfigController
extends
CommonCtrl
{
@Autowired
private
PayInterfaceConfigService
payInterfaceConfigService
;
@Autowired
private
MchInfoService
mchInfoService
;
/**
* @Author: ZhuXiao
* @Description: 查询商户支付接口配置列表
* @Date: 10:51 2021/5/13
*/
@PreAuthorize
(
"hasAuthority('ENT_MCH_PAY_CONFIG_LIST')"
)
@GetMapping
public
ApiRes
list
()
{
MchInfo
mchInfo
=
mchInfoService
.
getById
(
getCurrentUser
().
getSysUser
().
getBelongInfoId
());
List
<
PayInterfaceDefine
>
list
=
payInterfaceConfigService
.
selectAllPayIfConfigListByInfoId
(
CS
.
INFO_TYPE_MCH
,
getCurrentUser
().
getSysUser
().
getBelongInfoId
());
for
(
PayInterfaceDefine
define
:
list
)
{
define
.
addExt
(
"mchParams"
,
mchInfo
.
getType
()
==
CS
.
MCH_TYPE_NORMAL
?
define
.
getNormalMchParams
()
:
define
.
getIsvsubMchParams
());
define
.
setNormalMchParams
(
null
);
define
.
setIsvsubMchParams
(
null
);
}
return
ApiRes
.
ok
(
list
);
}
/**
* @Author: ZhuXiao
* @Description: 根据 商户号、接口类型 获取商户参数配置
* @Date: 10:54 2021/5/13
*/
@PreAuthorize
(
"hasAuthority('ENT_MCH_PAY_CONFIG_VIEW')"
)
@GetMapping
(
"/{ifCode}"
)
public
ApiRes
getByMchNo
(
@PathVariable
(
value
=
"ifCode"
)
String
ifCode
)
{
PayInterfaceConfig
payInterfaceConfig
=
payInterfaceConfigService
.
getByInfoIdAndIfCode
(
CS
.
INFO_TYPE_MCH
,
getCurrentUser
().
getSysUser
().
getBelongInfoId
(),
ifCode
);
if
(
payInterfaceConfig
!=
null
&&
payInterfaceConfig
.
getIfRate
()
!=
null
)
{
payInterfaceConfig
.
setIfRate
(
payInterfaceConfig
.
getIfRate
().
multiply
(
new
BigDecimal
(
"100"
)));
}
return
ApiRes
.
ok
(
payInterfaceConfig
);
}
/**
* @Author: ZhuXiao
* @Description: 更新商户支付参数
* @Date: 10:56 2021/5/13
*/
@PreAuthorize
(
"hasAuthority('ENT_MCH_PAY_CONFIG_ADD')"
)
@PostMapping
@MethodLog
(
remark
=
"更新商户支付参数"
)
public
ApiRes
saveOrUpdate
()
{
String
mchNo
=
getCurrentUser
().
getSysUser
().
getBelongInfoId
();
String
ifCode
=
getValStringRequired
(
"ifCode"
);
PayInterfaceConfig
payInterfaceConfig
=
getObject
(
PayInterfaceConfig
.
class
);
payInterfaceConfig
.
setInfoType
(
CS
.
INFO_TYPE_MCH
);
payInterfaceConfig
.
setInfoId
(
mchNo
);
// 存入真实费率
if
(
payInterfaceConfig
.
getIfRate
()
!=
null
)
{
payInterfaceConfig
.
setIfRate
(
payInterfaceConfig
.
getIfRate
().
divide
(
new
BigDecimal
(
"100"
),
6
,
BigDecimal
.
ROUND_HALF_UP
));
}
//添加更新者信息
Long
userId
=
getCurrentUser
().
getSysUser
().
getSysUserId
();
String
realName
=
getCurrentUser
().
getSysUser
().
getRealname
();
payInterfaceConfig
.
setUpdatedUid
(
userId
);
payInterfaceConfig
.
setUpdatedBy
(
realName
);
//根据 商户号、接口类型 获取商户参数配置
PayInterfaceConfig
dbRecoed
=
payInterfaceConfigService
.
getByInfoIdAndIfCode
(
CS
.
INFO_TYPE_MCH
,
mchNo
,
ifCode
);
//若配置存在,为saveOrUpdate添加ID,第一次配置添加创建者
if
(
dbRecoed
!=
null
)
{
payInterfaceConfig
.
setId
(
dbRecoed
.
getId
());
}
else
{
payInterfaceConfig
.
setCreatedUid
(
userId
);
payInterfaceConfig
.
setCreatedBy
(
realName
);
}
boolean
result
=
payInterfaceConfigService
.
saveOrUpdate
(
payInterfaceConfig
);
if
(!
result
)
{
throw
new
BizException
(
"配置失败"
);
}
return
ApiRes
.
ok
();
}
}
jeepay-merchant/src/main/java/com/jeequan/jeepay/mch/ctrl/merchant/MchPayPassageConfigController.java
0 → 100644
View file @
de3de82d
/*
* Copyright (c) 2021-2031, 河北计全科技有限公司 (https://www.jeequan.com & jeequan@126.com).
* <p>
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0;
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.gnu.org/licenses/lgpl.html
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
com.jeequan.jeepay.mch.ctrl.merchant
;
import
cn.hutool.core.util.StrUtil
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.jeequan.jeepay.core.aop.MethodLog
;
import
com.jeequan.jeepay.core.constants.ApiCodeEnum
;
import
com.jeequan.jeepay.core.constants.CS
;
import
com.jeequan.jeepay.core.entity.MchInfo
;
import
com.jeequan.jeepay.core.entity.MchPayPassage
;
import
com.jeequan.jeepay.core.entity.PayInterfaceConfig
;
import
com.jeequan.jeepay.core.entity.PayWay
;
import
com.jeequan.jeepay.core.model.ApiRes
;
import
com.jeequan.jeepay.mch.ctrl.CommonCtrl
;
import
com.jeequan.jeepay.service.impl.MchInfoService
;
import
com.jeequan.jeepay.service.impl.MchPayPassageService
;
import
com.jeequan.jeepay.service.impl.PayInterfaceConfigService
;
import
com.jeequan.jeepay.service.impl.PayWayService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.security.access.prepost.PreAuthorize
;
import
org.springframework.util.CollectionUtils
;
import
org.springframework.web.bind.annotation.*
;
import
java.math.BigDecimal
;
import
java.util.LinkedList
;
import
java.util.List
;
/**
* 商户支付通道配置类
*
* @author zhuxiao
* @site https://www.jeepay.vip
* @date 2021-04-27 15:50
*/
@RestController
@RequestMapping
(
"/api/mch/payPassages"
)
public
class
MchPayPassageConfigController
extends
CommonCtrl
{
@Autowired
private
MchPayPassageService
mchPayPassageService
;
@Autowired
private
PayInterfaceConfigService
payInterfaceConfigService
;
@Autowired
private
PayWayService
payWayService
;
@Autowired
private
MchInfoService
mchInfoService
;
/**
* @Author: ZhuXiao
* @Description: 查询支付方式列表,并添加是否配置支付通道状态
* @Date: 10:58 2021/5/13
*/
@PreAuthorize
(
"hasAuthority('ENT_MCH_PAY_PASSAGE_LIST')"
)
@GetMapping
public
ApiRes
list
()
{
String
mchNo
=
getCurrentUser
().
getSysUser
().
getBelongInfoId
();
String
wayCode
=
getValString
(
"wayCode"
);
String
wayName
=
getValString
(
"wayName"
);
//支付方式集合
LambdaQueryWrapper
<
PayWay
>
wrapper
=
PayWay
.
gw
();
if
(
StrUtil
.
isNotBlank
(
wayCode
))
wrapper
.
eq
(
PayWay:
:
getWayCode
,
wayCode
);
if
(
StrUtil
.
isNotBlank
(
wayName
))
wrapper
.
like
(
PayWay:
:
getWayName
,
"%"
+
wayName
+
"%"
);
IPage
<
PayWay
>
payWayPage
=
payWayService
.
page
(
getIPage
(),
wrapper
);
if
(!
CollectionUtils
.
isEmpty
(
payWayPage
.
getRecords
()))
{
// 支付方式代码集合
List
<
String
>
wayCodeList
=
new
LinkedList
<>();
payWayPage
.
getRecords
().
stream
().
forEach
(
payWay
->
wayCodeList
.
add
(
payWay
.
getWayCode
()));
// 商户支付通道集合
List
<
MchPayPassage
>
mchPayPassageList
=
mchPayPassageService
.
list
(
MchPayPassage
.
gw
()
.
select
(
MchPayPassage:
:
getWayCode
,
MchPayPassage:
:
getState
)
.
eq
(
MchPayPassage:
:
getMchNo
,
mchNo
)
.
in
(
MchPayPassage:
:
getWayCode
,
wayCodeList
));
for
(
PayWay
payWay
:
payWayPage
.
getRecords
())
{
payWay
.
addExt
(
"passageState"
,
CS
.
NO
);
for
(
MchPayPassage
mchPayPassage
:
mchPayPassageList
)
{
// 某种支付方式多个通道的情况下,只要有一个通道状态为开启,则该支付方式对应为开启状态
if
(
payWay
.
getWayCode
().
equals
(
mchPayPassage
.
getWayCode
())
&&
mchPayPassage
.
getState
()
==
CS
.
YES
)
{
payWay
.
addExt
(
"passageState"
,
CS
.
YES
);
break
;
}
}
}
}
return
ApiRes
.
page
(
payWayPage
);
}
/**
* @Author: ZhuXiao
* @Description: 根据商户号、支付方式查询可用的支付接口列表
* @Date: 11:05 2021/5/13
*/
@PreAuthorize
(
"hasAuthority('ENT_MCH_PAY_PASSAGE_CONFIG')"
)
@GetMapping
(
"/availablePayInterface/{wayCode}"
)
public
ApiRes
availablePayInterface
(
@PathVariable
(
"wayCode"
)
String
wayCode
)
{
String
mchNo
=
getCurrentUser
().
getSysUser
().
getBelongInfoId
();
MchInfo
mchInfo
=
mchInfoService
.
getById
(
mchNo
);
if
(
mchInfo
==
null
||
mchInfo
.
getState
()
!=
CS
.
YES
)
{
return
ApiRes
.
fail
(
ApiCodeEnum
.
SYS_OPERATION_FAIL_SELETE
);
}
// 根据支付方式查询可用支付接口列表
List
<
JSONObject
>
list
=
mchPayPassageService
.
selectAvailablePayInterfaceList
(
wayCode
,
mchNo
,
CS
.
INFO_TYPE_MCH
,
mchInfo
.
getType
());
return
ApiRes
.
ok
(
list
);
}
/**
* @Author: ZhuXiao
* @Description: 根据 商户号、接口类型 获取商户参数配置
* @Date: 11:05 2021/5/13
*/
@GetMapping
(
"/{ifCode}"
)
public
ApiRes
getByMchNo
(
@PathVariable
(
value
=
"ifCode"
)
String
ifCode
)
{
String
mchNo
=
getCurrentUser
().
getSysUser
().
getBelongInfoId
();
PayInterfaceConfig
payInterfaceConfig
=
payInterfaceConfigService
.
getByInfoIdAndIfCode
(
CS
.
INFO_TYPE_MCH
,
mchNo
,
ifCode
);
if
(
payInterfaceConfig
!=
null
&&
payInterfaceConfig
.
getIfRate
()
!=
null
)
{
payInterfaceConfig
.
setIfRate
(
payInterfaceConfig
.
getIfRate
().
multiply
(
new
BigDecimal
(
"100"
)));
}
return
ApiRes
.
ok
(
payInterfaceConfig
);
}
/**
* @Author: ZhuXiao
* @Description:
* @Date: 11:05 2021/5/13
*/
@GetMapping
(
"/{id}"
)
public
ApiRes
detail
(
@PathVariable
(
"id"
)
Long
id
)
{
MchPayPassage
payPassage
=
mchPayPassageService
.
getById
(
id
);
if
(
payPassage
==
null
)
return
ApiRes
.
fail
(
ApiCodeEnum
.
SYS_OPERATION_FAIL_SELETE
);
if
(!
payPassage
.
getMchNo
().
equals
(
getCurrentUser
().
getSysUser
().
getBelongInfoId
()))
return
ApiRes
.
fail
(
ApiCodeEnum
.
SYS_PERMISSION_ERROR
);
payPassage
.
setRate
(
payPassage
.
getRate
().
multiply
(
new
BigDecimal
(
"100"
)));
return
ApiRes
.
ok
(
payPassage
);
}
/**
* @Author: ZhuXiao
* @Description: 商户支付通道配置
* @Date: 11:05 2021/5/13
*/
@PreAuthorize
(
"hasAuthority('ENT_MCH_PAY_PASSAGE_ADD')"
)
@PostMapping
@MethodLog
(
remark
=
"更新商户支付通道"
)
public
ApiRes
saveOrUpdate
()
{
String
reqParams
=
getValStringRequired
(
"reqParams"
);
try
{
List
<
MchPayPassage
>
mchPayPassageList
=
JSONArray
.
parseArray
(
reqParams
,
MchPayPassage
.
class
);
mchPayPassageService
.
saveOrUpdateBatchSelf
(
mchPayPassageList
,
getCurrentUser
().
getSysUser
().
getBelongInfoId
());
return
ApiRes
.
ok
();
}
catch
(
Exception
e
)
{
return
ApiRes
.
fail
(
ApiCodeEnum
.
SYSTEM_ERROR
);
}
}
}
jeepay-merchant/src/main/java/com/jeequan/jeepay/mch/ctrl/order/PayOrderController.java
0 → 100644
View file @
de3de82d
/*
* Copyright (c) 2021-2031, 河北计全科技有限公司 (https://www.jeequan.com & jeequan@126.com).
* <p>
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0;
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.gnu.org/licenses/lgpl.html
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
com.jeequan.jeepay.mch.ctrl.order
;
import
com.alibaba.fastjson.JSONObject
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.jeequan.jeepay.core.constants.ApiCodeEnum
;
import
com.jeequan.jeepay.core.entity.PayOrder
;
import
com.jeequan.jeepay.core.entity.PayWay
;
import
com.jeequan.jeepay.core.model.ApiRes
;
import
com.jeequan.jeepay.mch.ctrl.CommonCtrl
;
import
com.jeequan.jeepay.service.impl.PayOrderService
;
import
com.jeequan.jeepay.service.impl.PayWayService
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.security.access.prepost.PreAuthorize
;
import
org.springframework.util.CollectionUtils
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.PathVariable
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
/**
* 支付订单管理类
*
* @author zhuxiao
* @site https://www.jeepay.vip
* @date 2021-04-27 15:50
*/
@RestController
@RequestMapping
(
"/api/payOrder"
)
public
class
PayOrderController
extends
CommonCtrl
{
@Autowired
private
PayOrderService
payOrderService
;
@Autowired
private
PayWayService
payWayService
;
/**
* @Author: ZhuXiao
* @Description: 订单信息列表
* @Date: 10:43 2021/5/13
*/
@PreAuthorize
(
"hasAuthority('ENT_PAY_ORDER_LIST')"
)
@GetMapping
public
ApiRes
list
()
{
PayOrder
payOrder
=
getObject
(
PayOrder
.
class
);
JSONObject
paramJSON
=
getReqParamJSON
();
LambdaQueryWrapper
<
PayOrder
>
wrapper
=
PayOrder
.
gw
();
wrapper
.
eq
(
PayOrder:
:
getMchNo
,
getCurrentUser
().
getSysUser
().
getBelongInfoId
());
if
(
StringUtils
.
isNotEmpty
(
payOrder
.
getPayOrderId
()))
wrapper
.
eq
(
PayOrder:
:
getPayOrderId
,
payOrder
.
getPayOrderId
());
if
(
StringUtils
.
isNotEmpty
(
payOrder
.
getMchOrderNo
()))
wrapper
.
eq
(
PayOrder:
:
getMchOrderNo
,
getCurrentMchNo
());
if
(
StringUtils
.
isNotEmpty
(
payOrder
.
getWayCode
()))
wrapper
.
eq
(
PayOrder:
:
getWayCode
,
payOrder
.
getWayCode
());
if
(
payOrder
.
getState
()
!=
null
)
wrapper
.
eq
(
PayOrder:
:
getState
,
payOrder
.
getState
());
if
(
payOrder
.
getNotifyState
()
!=
null
)
wrapper
.
eq
(
PayOrder:
:
getNotifyState
,
payOrder
.
getNotifyState
());
if
(
paramJSON
!=
null
)
{
if
(
StringUtils
.
isNotEmpty
(
paramJSON
.
getString
(
"createdStart"
)))
wrapper
.
ge
(
PayOrder:
:
getCreatedAt
,
paramJSON
.
getString
(
"createdStart"
));
if
(
StringUtils
.
isNotEmpty
(
paramJSON
.
getString
(
"createdEnd"
)))
wrapper
.
le
(
PayOrder:
:
getCreatedAt
,
paramJSON
.
getString
(
"createdEnd"
));
}
wrapper
.
orderByDesc
(
PayOrder:
:
getCreatedAt
);
IPage
<
PayOrder
>
pages
=
payOrderService
.
page
(
getIPage
(),
wrapper
);
// 得到所有支付方式
Map
<
String
,
String
>
payWayNameMap
=
new
HashMap
<>();
List
<
PayWay
>
payWayList
=
payWayService
.
list
();
if
(!
CollectionUtils
.
isEmpty
(
payWayList
))
{
for
(
PayWay
payWay:
payWayList
)
{
payWayNameMap
.
put
(
payWay
.
getWayCode
(),
payWay
.
getWayName
());
}
for
(
PayOrder
order:
pages
.
getRecords
())
{
// 存入支付方式名称
if
(
StringUtils
.
isNotEmpty
(
payWayNameMap
.
get
(
order
.
getWayCode
())))
{
order
.
addExt
(
"wayName"
,
payWayNameMap
.
get
(
order
.
getWayCode
()));
}
else
{
order
.
addExt
(
"wayName"
,
order
.
getWayCode
());
}
}
}
return
ApiRes
.
page
(
pages
);
}
/**
* @Author: ZhuXiao
* @Description: 支付订单信息
* @Date: 10:43 2021/5/13
*/
@PreAuthorize
(
"hasAuthority('ENT_PAY_ORDER_VIEW')"
)
@GetMapping
(
"/{payOrderId}"
)
public
ApiRes
detail
(
@PathVariable
(
"payOrderId"
)
String
payOrderId
)
{
PayOrder
payOrder
=
payOrderService
.
getById
(
payOrderId
);
if
(
payOrder
==
null
)
return
ApiRes
.
fail
(
ApiCodeEnum
.
SYS_OPERATION_FAIL_SELETE
);
if
(!
payOrder
.
getMchNo
().
equals
(
getCurrentMchNo
()))
{
return
ApiRes
.
fail
(
ApiCodeEnum
.
SYS_PERMISSION_ERROR
);
}
return
ApiRes
.
ok
(
payOrder
);
}
}
jeepay-merchant/src/main/java/com/jeequan/jeepay/mch/ctrl/order/RefundOrderController.java
0 → 100644
View file @
de3de82d
/*
* Copyright (c) 2021-2031, 河北计全科技有限公司 (https://www.jeequan.com & jeequan@126.com).
* <p>
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0;
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.gnu.org/licenses/lgpl.html
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
com.jeequan.jeepay.mch.ctrl.order
;
import
com.alibaba.fastjson.JSONObject
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.jeequan.jeepay.core.constants.ApiCodeEnum
;
import
com.jeequan.jeepay.core.entity.RefundOrder
;
import
com.jeequan.jeepay.core.model.ApiRes
;
import
com.jeequan.jeepay.mch.ctrl.CommonCtrl
;
import
com.jeequan.jeepay.service.impl.RefundOrderService
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.security.access.prepost.PreAuthorize
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.PathVariable
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
/**
* 退款订单管理类
*
* @author zhuxiao
* @site https://www.jeepay.vip
* @date 2021-04-27 15:50
*/
@RestController
@RequestMapping
(
"/api/refundOrder"
)
public
class
RefundOrderController
extends
CommonCtrl
{
@Autowired
private
RefundOrderService
refundOrderService
;
/**
* @Author: ZhuXiao
* @Description: 退款订单信息列表
* @Date: 10:44 2021/5/13
*/
@PreAuthorize
(
"hasAuthority('ENT_REFUND_ORDER_LIST')"
)
@GetMapping
public
ApiRes
list
()
{
RefundOrder
refundOrder
=
getObject
(
RefundOrder
.
class
);
JSONObject
paramJSON
=
getReqParamJSON
();
LambdaQueryWrapper
<
RefundOrder
>
wrapper
=
RefundOrder
.
gw
();
wrapper
.
eq
(
RefundOrder:
:
getMchNo
,
getCurrentUser
().
getSysUser
().
getBelongInfoId
());
if
(
StringUtils
.
isNotEmpty
(
refundOrder
.
getRefundOrderId
()))
wrapper
.
eq
(
RefundOrder:
:
getRefundOrderId
,
refundOrder
.
getRefundOrderId
());
if
(
StringUtils
.
isNotEmpty
(
refundOrder
.
getPayOrderId
()))
wrapper
.
eq
(
RefundOrder:
:
getPayOrderId
,
refundOrder
.
getPayOrderId
());
if
(
StringUtils
.
isNotEmpty
(
refundOrder
.
getChannelPayOrderNo
()))
wrapper
.
eq
(
RefundOrder:
:
getChannelPayOrderNo
,
refundOrder
.
getChannelPayOrderNo
());
if
(
StringUtils
.
isNotEmpty
(
refundOrder
.
getMchRefundNo
()))
wrapper
.
eq
(
RefundOrder:
:
getMchRefundNo
,
refundOrder
.
getMchRefundNo
());
if
(
refundOrder
.
getState
()
!=
null
)
wrapper
.
eq
(
RefundOrder:
:
getState
,
refundOrder
.
getState
());
if
(
StringUtils
.
isNotEmpty
(
refundOrder
.
getChannelPayOrderNo
()))
wrapper
.
eq
(
RefundOrder:
:
getChannelPayOrderNo
,
refundOrder
.
getChannelPayOrderNo
());
if
(
refundOrder
.
getResult
()
!=
null
)
wrapper
.
eq
(
RefundOrder:
:
getResult
,
refundOrder
.
getResult
());
if
(
paramJSON
!=
null
)
{
if
(
StringUtils
.
isNotEmpty
(
paramJSON
.
getString
(
"createdStart"
)))
wrapper
.
ge
(
RefundOrder:
:
getCreatedAt
,
paramJSON
.
getString
(
"createdStart"
));
if
(
StringUtils
.
isNotEmpty
(
paramJSON
.
getString
(
"createdEnd"
)))
wrapper
.
le
(
RefundOrder:
:
getCreatedAt
,
paramJSON
.
getString
(
"createdEnd"
));
}
wrapper
.
orderByDesc
(
RefundOrder:
:
getCreatedAt
);
IPage
<
RefundOrder
>
pages
=
refundOrderService
.
page
(
getIPage
(),
wrapper
);
return
ApiRes
.
page
(
pages
);
}
/**
* @Author: ZhuXiao
* @Description: 退款订单信息
* @Date: 10:44 2021/5/13
*/
@PreAuthorize
(
"hasAuthority('ENT_REFUND_ORDER_VIEW')"
)
@GetMapping
(
"/{refundOrderId}"
)
public
ApiRes
detail
(
@PathVariable
(
"refundOrderId"
)
String
refundOrderId
)
{
RefundOrder
refundOrder
=
refundOrderService
.
getById
(
refundOrderId
);
if
(
refundOrder
==
null
)
return
ApiRes
.
fail
(
ApiCodeEnum
.
SYS_OPERATION_FAIL_SELETE
);
if
(!
refundOrder
.
getMchNo
().
equals
(
getCurrentUser
().
getSysUser
().
getBelongInfoId
()))
{
return
ApiRes
.
fail
(
ApiCodeEnum
.
SYS_PERMISSION_ERROR
);
}
return
ApiRes
.
ok
(
refundOrder
);
}
}
jeepay-merchant/src/main/java/com/jeequan/jeepay/mch/ctrl/payconfig/PayWayController.java
0 → 100644
View file @
de3de82d
/*
* Copyright (c) 2021-2031, 河北计全科技有限公司 (https://www.jeequan.com & jeequan@126.com).
* <p>
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0;
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.gnu.org/licenses/lgpl.html
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
com.jeequan.jeepay.mch.ctrl.payconfig
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.jeequan.jeepay.core.entity.PayWay
;
import
com.jeequan.jeepay.core.model.ApiRes
;
import
com.jeequan.jeepay.mch.ctrl.CommonCtrl
;
import
com.jeequan.jeepay.service.impl.MchPayPassageService
;
import
com.jeequan.jeepay.service.impl.PayOrderService
;
import
com.jeequan.jeepay.service.impl.PayWayService
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
/**
* 支付方式配置类
*
* @author zhuxiao
* @site https://www.jeepay.vip
* @date 2021-04-27 15:50
*/
@RestController
@RequestMapping
(
"api/payWays"
)
public
class
PayWayController
extends
CommonCtrl
{
@Autowired
PayWayService
payWayService
;
@Autowired
MchPayPassageService
mchPayPassageService
;
@Autowired
PayOrderService
payOrderService
;
/**
* @Author: ZhuXiao
* @Description: list
* @Date: 15:52 2021/4/27
*/
// @PreAuthorize("hasAuthority('ENT_PC_WAY_LIST')")
@GetMapping
public
ApiRes
list
()
{
PayWay
queryObject
=
getObject
(
PayWay
.
class
);
LambdaQueryWrapper
<
PayWay
>
condition
=
PayWay
.
gw
();
if
(
StringUtils
.
isNotEmpty
(
queryObject
.
getWayCode
())){
condition
.
like
(
PayWay:
:
getWayCode
,
queryObject
.
getWayCode
());
}
if
(
StringUtils
.
isNotEmpty
(
queryObject
.
getWayName
())){
condition
.
like
(
PayWay:
:
getWayName
,
queryObject
.
getWayName
());
}
condition
.
orderByAsc
(
PayWay:
:
getWayCode
);
IPage
<
PayWay
>
pages
=
payWayService
.
page
(
getIPage
(
true
),
condition
);
return
ApiRes
.
page
(
pages
);
}
}
jeepay-merchant/src/main/java/com/jeequan/jeepay/mch/ctrl/sysuser/SysEntController.java
0 → 100644
View file @
de3de82d
/*
* Copyright (c) 2021-2031, 河北计全科技有限公司 (https://www.jeequan.com & jeequan@126.com).
* <p>
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0;
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.gnu.org/licenses/lgpl.html
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
com.jeequan.jeepay.mch.ctrl.sysuser
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.jeequan.jeepay.core.constants.CS
;
import
com.jeequan.jeepay.core.entity.SysEntitlement
;
import
com.jeequan.jeepay.core.model.ApiRes
;
import
com.jeequan.jeepay.core.utils.TreeDataBuilder
;
import
com.jeequan.jeepay.mch.ctrl.CommonCtrl
;
import
com.jeequan.jeepay.service.impl.SysEntitlementService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.security.access.prepost.PreAuthorize
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.util.List
;
/**
* 权限菜单管理类
*
* @author terrfly
* @modify zhuxiao
* @site https://www.jeepay.vip
* @date 2021-04-27 15:50
*/
@RestController
@RequestMapping
(
"api/sysEnts"
)
public
class
SysEntController
extends
CommonCtrl
{
@Autowired
SysEntitlementService
sysEntitlementService
;
/** 查询权限集合 */
@PreAuthorize
(
"hasAnyAuthority( 'ENT_UR_ROLE_ENT_LIST', 'ENT_UR_ROLE_DIST' )"
)
@RequestMapping
(
value
=
"/showTree"
,
method
=
RequestMethod
.
GET
)
public
ApiRes
showTree
()
{
//查询全部数据
List
<
SysEntitlement
>
list
=
sysEntitlementService
.
list
(
SysEntitlement
.
gw
().
eq
(
SysEntitlement:
:
getSystem
,
CS
.
SYS_TYPE
.
MCH
));
//4. 转换为json树状结构
JSONArray
jsonArray
=
(
JSONArray
)
JSONArray
.
toJSON
(
list
);
List
<
JSONObject
>
leftMenuTree
=
new
TreeDataBuilder
(
jsonArray
,
"entId"
,
"pid"
,
"children"
,
"entSort"
,
true
)
.
buildTreeObject
();
return
ApiRes
.
ok
(
leftMenuTree
);
}
}
jeepay-merchant/src/main/java/com/jeequan/jeepay/mch/ctrl/sysuser/SysRoleController.java
0 → 100644
View file @
de3de82d
/*
* Copyright (c) 2021-2031, 河北计全科技有限公司 (https://www.jeequan.com & jeequan@126.com).
* <p>
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0;
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.gnu.org/licenses/lgpl.html
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
com.jeequan.jeepay.mch.ctrl.sysuser
;
import
com.alibaba.fastjson.JSONArray
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.jeequan.jeepay.core.constants.ApiCodeEnum
;
import
com.jeequan.jeepay.core.constants.CS
;
import
com.jeequan.jeepay.core.entity.SysRole
;
import
com.jeequan.jeepay.core.entity.SysUserRoleRela
;
import
com.jeequan.jeepay.core.exception.BizException
;
import
com.jeequan.jeepay.core.model.ApiRes
;
import
com.jeequan.jeepay.core.utils.StringKit
;
import
com.jeequan.jeepay.mch.ctrl.CommonCtrl
;
import
com.jeequan.jeepay.mch.service.AuthService
;
import
com.jeequan.jeepay.service.impl.SysRoleEntRelaService
;
import
com.jeequan.jeepay.service.impl.SysRoleService
;
import
com.jeequan.jeepay.service.impl.SysUserRoleRelaService
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.security.access.prepost.PreAuthorize
;
import
org.springframework.security.core.authority.SimpleGrantedAuthority
;
import
org.springframework.web.bind.annotation.PathVariable
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* 角色管理类
*
* @author terrfly
* @modify zhuxiao
* @site https://www.jeepay.vip
* @date 2021-04-27 15:50
*/
@RestController
@RequestMapping
(
"api/sysRoles"
)
public
class
SysRoleController
extends
CommonCtrl
{
@Autowired
SysRoleService
sysRoleService
;
@Autowired
SysUserRoleRelaService
sysUserRoleRelaService
;
@Autowired
private
AuthService
authService
;
@Autowired
private
SysRoleEntRelaService
sysRoleEntRelaService
;
/** list */
@PreAuthorize
(
"hasAnyAuthority( 'ENT_UR_ROLE_LIST', 'ENT_UR_USER_UPD_ROLE' )"
)
@RequestMapping
(
value
=
""
,
method
=
RequestMethod
.
GET
)
public
ApiRes
list
()
{
SysRole
queryObject
=
getObject
(
SysRole
.
class
);
LambdaQueryWrapper
<
SysRole
>
condition
=
SysRole
.
gw
();
condition
.
eq
(
SysRole:
:
getSystem
,
CS
.
SYS_TYPE
.
MCH
);
condition
.
eq
(
SysRole:
:
getBelongInfoId
,
getCurrentMchNo
());
if
(
StringUtils
.
isNotEmpty
(
queryObject
.
getRoleName
())){
condition
.
like
(
SysRole:
:
getRoleName
,
queryObject
.
getRoleName
());
}
if
(
StringUtils
.
isNotEmpty
(
queryObject
.
getRoleId
())){
condition
.
like
(
SysRole:
:
getRoleId
,
queryObject
.
getRoleId
());
}
condition
.
orderByDesc
(
SysRole:
:
getUpdatedAt
);
//时间倒序
IPage
<
SysRole
>
pages
=
sysRoleService
.
page
(
getIPage
(
true
),
condition
);
return
ApiRes
.
page
(
pages
);
}
/** detail */
@PreAuthorize
(
"hasAuthority( 'ENT_UR_ROLE_EDIT' )"
)
@RequestMapping
(
value
=
"/{recordId}"
,
method
=
RequestMethod
.
GET
)
public
ApiRes
detail
(
@PathVariable
(
"recordId"
)
String
recordId
)
{
SysRole
sysRole
=
sysRoleService
.
getOne
(
SysRole
.
gw
().
eq
(
SysRole:
:
getRoleId
,
recordId
).
eq
(
SysRole:
:
getBelongInfoId
,
getCurrentMchNo
()));
if
(
sysRole
==
null
)
throw
new
BizException
(
ApiCodeEnum
.
SYS_OPERATION_FAIL_SELETE
);
return
ApiRes
.
ok
(
sysRole
);
}
/** add */
@PreAuthorize
(
"hasAuthority( 'ENT_UR_ROLE_ADD' )"
)
@RequestMapping
(
value
=
""
,
method
=
RequestMethod
.
POST
)
public
ApiRes
add
()
{
SysRole
SysRole
=
getObject
(
SysRole
.
class
);
String
roleId
=
"ROLE_"
+
StringKit
.
getUUID
(
6
);
SysRole
.
setRoleId
(
roleId
);
SysRole
.
setSystem
(
CS
.
SYS_TYPE
.
MCH
);
//后台系统
SysRole
.
setBelongInfoId
(
getCurrentUser
().
getSysUser
().
getBelongInfoId
());
sysRoleService
.
save
(
SysRole
);
//权限信息集合
String
entIdListStr
=
getValString
(
"entIdListStr"
);
//如果包含: 可分配权限的权限 && entIdListStr 不为空
if
(
getCurrentUser
().
getAuthorities
().
contains
(
new
SimpleGrantedAuthority
(
"ENT_UR_ROLE_DIST"
))
&&
StringUtils
.
isNotEmpty
(
entIdListStr
)){
List
<
String
>
entIdList
=
JSONArray
.
parseArray
(
entIdListStr
,
String
.
class
);
sysRoleEntRelaService
.
resetRela
(
roleId
,
entIdList
);
}
return
ApiRes
.
ok
();
}
/** update */
@PreAuthorize
(
"hasAuthority( 'ENT_UR_ROLE_EDIT' )"
)
@RequestMapping
(
value
=
"/{recordId}"
,
method
=
RequestMethod
.
PUT
)
public
ApiRes
update
(
@PathVariable
(
"recordId"
)
String
recordId
)
{
SysRole
sysRole
=
getObject
(
SysRole
.
class
);
LambdaUpdateWrapper
<
SysRole
>
updateWrapper
=
new
LambdaUpdateWrapper
<>();
updateWrapper
.
eq
(
SysRole:
:
getRoleId
,
recordId
);
updateWrapper
.
eq
(
SysRole:
:
getBelongInfoId
,
getCurrentMchNo
());
sysRoleService
.
update
(
sysRole
,
updateWrapper
);
//权限信息集合
String
entIdListStr
=
getValString
(
"entIdListStr"
);
//如果包含: 可分配权限的权限 && entIdListStr 不为空
if
(
getCurrentUser
().
getAuthorities
().
contains
(
new
SimpleGrantedAuthority
(
"ENT_UR_ROLE_DIST"
))
&&
StringUtils
.
isNotEmpty
(
entIdListStr
)){
List
<
String
>
entIdList
=
JSONArray
.
parseArray
(
entIdListStr
,
String
.
class
);
sysRoleEntRelaService
.
resetRela
(
recordId
,
entIdList
);
List
<
Long
>
sysUserIdList
=
new
ArrayList
<>();
sysUserRoleRelaService
.
list
(
SysUserRoleRela
.
gw
().
eq
(
SysUserRoleRela:
:
getRoleId
,
recordId
)).
stream
().
forEach
(
item
->
sysUserIdList
.
add
(
item
.
getUserId
()));
//查询到该角色的人员, 将redis更新
authService
.
refAuthentication
(
sysUserIdList
);
}
return
ApiRes
.
ok
();
}
/** delete */
@PreAuthorize
(
"hasAuthority('ENT_UR_ROLE_DEL')"
)
@RequestMapping
(
value
=
"/{recordId}"
,
method
=
RequestMethod
.
DELETE
)
public
ApiRes
del
(
@PathVariable
(
"recordId"
)
String
recordId
)
{
SysRole
sysRole
=
sysRoleService
.
getOne
(
SysRole
.
gw
().
eq
(
SysRole:
:
getRoleId
,
recordId
).
eq
(
SysRole:
:
getBelongInfoId
,
getCurrentMchNo
()));
if
(
sysRole
==
null
)
throw
new
BizException
(
ApiCodeEnum
.
SYS_OPERATION_FAIL_SELETE
);
if
(
sysUserRoleRelaService
.
count
(
SysUserRoleRela
.
gw
().
eq
(
SysUserRoleRela:
:
getRoleId
,
recordId
))
>
0
){
throw
new
BizException
(
"当前角色已分配到用户, 不可删除!"
);
}
sysRoleService
.
removeRole
(
recordId
);
return
ApiRes
.
ok
();
}
}
jeepay-merchant/src/main/java/com/jeequan/jeepay/mch/ctrl/sysuser/SysRoleEntRelaController.java
0 → 100644
View file @
de3de82d
/*
* Copyright (c) 2021-2031, 河北计全科技有限公司 (https://www.jeequan.com & jeequan@126.com).
* <p>
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0;
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.gnu.org/licenses/lgpl.html
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
com.jeequan.jeepay.mch.ctrl.sysuser
;
import
com.alibaba.fastjson.JSONArray
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.jeequan.jeepay.core.constants.ApiCodeEnum
;
import
com.jeequan.jeepay.core.entity.SysRole
;
import
com.jeequan.jeepay.core.entity.SysRoleEntRela
;
import
com.jeequan.jeepay.core.entity.SysUserRoleRela
;
import
com.jeequan.jeepay.core.exception.BizException
;
import
com.jeequan.jeepay.core.model.ApiRes
;
import
com.jeequan.jeepay.mch.service.AuthService
;
import
com.jeequan.jeepay.mch.ctrl.CommonCtrl
;
import
com.jeequan.jeepay.service.impl.SysRoleEntRelaService
;
import
com.jeequan.jeepay.service.impl.SysRoleService
;
import
com.jeequan.jeepay.service.impl.SysUserRoleRelaService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.security.access.prepost.PreAuthorize
;
import
org.springframework.web.bind.annotation.PathVariable
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* 角色权限管理类
*
* @author terrfly
* @modify zhuxiao
* @site https://www.jeepay.vip
* @date 2021-04-27 15:50
*/
@RestController
@RequestMapping
(
"api/sysRoleEntRelas"
)
public
class
SysRoleEntRelaController
extends
CommonCtrl
{
@Autowired
private
SysRoleEntRelaService
sysRoleEntRelaService
;
@Autowired
private
SysUserRoleRelaService
sysUserRoleRelaService
;
@Autowired
private
SysRoleService
sysRoleService
;
@Autowired
private
AuthService
authService
;
/** list */
@PreAuthorize
(
"hasAuthority( 'ENT_UR_ROLE_DIST' )"
)
@RequestMapping
(
value
=
""
,
method
=
RequestMethod
.
GET
)
public
ApiRes
list
()
{
SysRoleEntRela
queryObject
=
getObject
(
SysRoleEntRela
.
class
);
LambdaQueryWrapper
<
SysRoleEntRela
>
condition
=
SysRoleEntRela
.
gw
();
if
(
queryObject
.
getRoleId
()
!=
null
){
condition
.
eq
(
SysRoleEntRela:
:
getRoleId
,
queryObject
.
getRoleId
());
}
IPage
<
SysRoleEntRela
>
pages
=
sysRoleEntRelaService
.
page
(
getIPage
(
true
),
condition
);
return
ApiRes
.
page
(
pages
);
}
/** 重置角色权限关联信息 */
@PreAuthorize
(
"hasAuthority( 'ENT_UR_ROLE_DIST' )"
)
@RequestMapping
(
value
=
"relas/{roleId}"
,
method
=
RequestMethod
.
POST
)
public
ApiRes
relas
(
@PathVariable
(
"roleId"
)
String
roleId
)
{
SysRole
sysRole
=
sysRoleService
.
getOne
(
SysRole
.
gw
().
eq
(
SysRole:
:
getRoleId
,
roleId
).
eq
(
SysRole:
:
getBelongInfoId
,
getCurrentMchNo
()));
if
(
sysRole
==
null
)
throw
new
BizException
(
ApiCodeEnum
.
SYS_OPERATION_FAIL_SELETE
);
List
<
String
>
entIdList
=
JSONArray
.
parseArray
(
getValStringRequired
(
"entIdListStr"
),
String
.
class
);
sysRoleEntRelaService
.
resetRela
(
roleId
,
entIdList
);
List
<
Long
>
sysUserIdList
=
new
ArrayList
<>();
sysUserRoleRelaService
.
list
(
SysUserRoleRela
.
gw
().
eq
(
SysUserRoleRela:
:
getRoleId
,
roleId
)).
stream
().
forEach
(
item
->
sysUserIdList
.
add
(
item
.
getUserId
()));
//查询到该角色的人员, 将redis更新
authService
.
refAuthentication
(
sysUserIdList
);
return
ApiRes
.
ok
();
}
}
jeepay-merchant/src/main/java/com/jeequan/jeepay/mch/ctrl/sysuser/SysUserController.java
0 → 100644
View file @
de3de82d
/*
* Copyright (c) 2021-2031, 河北计全科技有限公司 (https://www.jeequan.com & jeequan@126.com).
* <p>
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0;
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.gnu.org/licenses/lgpl.html
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
com.jeequan.jeepay.mch.ctrl.sysuser
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.jeequan.jeepay.core.constants.ApiCodeEnum
;
import
com.jeequan.jeepay.core.constants.CS
;
import
com.jeequan.jeepay.core.entity.SysUser
;
import
com.jeequan.jeepay.core.exception.BizException
;
import
com.jeequan.jeepay.core.model.ApiRes
;
import
com.jeequan.jeepay.mch.ctrl.CommonCtrl
;
import
com.jeequan.jeepay.mch.service.AuthService
;
import
com.jeequan.jeepay.service.impl.SysUserAuthService
;
import
com.jeequan.jeepay.service.impl.SysUserService
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.security.access.prepost.PreAuthorize
;
import
org.springframework.web.bind.annotation.PathVariable
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.util.Arrays
;
/**
* 用户管理类
*
* @author terrfly
* @modify zhuxiao
* @site https://www.jeepay.vip
* @date 2021-04-27 15:50
*/
@RestController
@RequestMapping
(
"api/sysUsers"
)
public
class
SysUserController
extends
CommonCtrl
{
@Autowired
SysUserService
sysUserService
;
@Autowired
SysUserAuthService
sysUserAuthService
;
@Autowired
private
AuthService
authService
;
/** list */
@PreAuthorize
(
"hasAuthority( 'ENT_UR_USER_LIST' )"
)
@RequestMapping
(
value
=
""
,
method
=
RequestMethod
.
GET
)
public
ApiRes
list
()
{
SysUser
queryObject
=
getObject
(
SysUser
.
class
);
LambdaQueryWrapper
<
SysUser
>
condition
=
SysUser
.
gw
();
condition
.
eq
(
SysUser:
:
getSystem
,
CS
.
SYS_TYPE
.
MCH
);
condition
.
eq
(
SysUser:
:
getBelongInfoId
,
getCurrentUser
().
getSysUser
().
getBelongInfoId
());
if
(
StringUtils
.
isNotEmpty
(
queryObject
.
getRealname
())){
condition
.
like
(
SysUser:
:
getRealname
,
queryObject
.
getRealname
());
}
if
(
queryObject
.
getSysUserId
()
!=
null
){
condition
.
eq
(
SysUser:
:
getSysUserId
,
queryObject
.
getSysUserId
());
}
IPage
<
SysUser
>
pages
=
sysUserService
.
page
(
getIPage
(),
condition
);
return
ApiRes
.
page
(
pages
);
}
/** detail */
@PreAuthorize
(
"hasAuthority( 'ENT_UR_USER_EDIT' )"
)
@RequestMapping
(
value
=
"/{recordId}"
,
method
=
RequestMethod
.
GET
)
public
ApiRes
detail
(
@PathVariable
(
"recordId"
)
Integer
recordId
)
{
SysUser
sysUser
=
sysUserService
.
getById
(
recordId
);
if
(
sysUser
==
null
)
throw
new
BizException
(
ApiCodeEnum
.
SYS_OPERATION_FAIL_SELETE
);
if
(!
sysUser
.
getBelongInfoId
().
equals
(
getCurrentUser
().
getSysUser
().
getBelongInfoId
()))
{
throw
new
BizException
(
ApiCodeEnum
.
SYS_PERMISSION_ERROR
);
}
return
ApiRes
.
ok
(
sysUser
);
}
/** add */
@PreAuthorize
(
"hasAuthority( 'ENT_UR_USER_ADD' )"
)
@RequestMapping
(
value
=
""
,
method
=
RequestMethod
.
POST
)
public
ApiRes
add
()
{
SysUser
sysUser
=
getObject
(
SysUser
.
class
);
sysUser
.
setBelongInfoId
(
getCurrentUser
().
getSysUser
().
getBelongInfoId
());
sysUserService
.
addSysUser
(
sysUser
,
CS
.
SYS_TYPE
.
MCH
);
return
ApiRes
.
ok
();
}
/** 修改操作员 登录认证信息 */
// @RequestMapping(value="/modifyPwd", method = RequestMethod.PUT)
public
ApiRes
authInfo
()
{
Long
opSysUserId
=
getValLongRequired
(
"recordId"
);
//操作员ID
//更改密码, 验证当前用户信息
String
currentUserPwd
=
getValStringRequired
(
"originalPwd"
);
//当前用户登录密码
//验证当前密码是否正确
if
(!
sysUserAuthService
.
validateCurrentUserPwd
(
currentUserPwd
)){
throw
new
BizException
(
"原密码验证失败!"
);
}
String
opUserPwd
=
getValStringRequired
(
"confirmPwd"
);
// 验证原密码与新密码是否相同
if
(
opUserPwd
.
equals
(
currentUserPwd
))
{
throw
new
BizException
(
"新密码与原密码相同!"
);
}
sysUserAuthService
.
resetAuthInfo
(
opSysUserId
,
null
,
null
,
opUserPwd
,
CS
.
SYS_TYPE
.
MCH
);
return
ApiRes
.
ok
();
}
/** update */
@PreAuthorize
(
"hasAuthority( 'ENT_UR_USER_EDIT' )"
)
@RequestMapping
(
value
=
"/{recordId}"
,
method
=
RequestMethod
.
PUT
)
public
ApiRes
update
(
@PathVariable
(
"recordId"
)
Long
recordId
)
{
SysUser
sysUser
=
getObject
(
SysUser
.
class
);
sysUser
.
setSysUserId
(
recordId
);
SysUser
dbRecord
=
sysUserService
.
getOne
(
SysUser
.
gw
().
eq
(
SysUser:
:
getSysUserId
,
recordId
).
eq
(
SysUser:
:
getBelongInfoId
,
getCurrentMchNo
()));
if
(
dbRecord
==
null
)
throw
new
BizException
(
ApiCodeEnum
.
SYS_OPERATION_FAIL_SELETE
);
//判断是否自己禁用自己
if
(
recordId
.
equals
(
getCurrentUser
().
getSysUser
().
getSysUserId
())
&&
sysUser
.
getState
()
!=
null
&&
sysUser
.
getState
()
==
CS
.
PUB_DISABLE
){
throw
new
BizException
(
"系统不允许禁用当前登陆用户!"
);
}
sysUserService
.
updateSysUser
(
sysUser
);
//如果用户被禁用,需要更新redis数据
if
(
sysUser
.
getState
()
!=
null
&&
sysUser
.
getState
()
==
CS
.
PUB_DISABLE
){
authService
.
refAuthentication
(
Arrays
.
asList
(
recordId
));
}
return
ApiRes
.
ok
();
}
}
jeepay-merchant/src/main/java/com/jeequan/jeepay/mch/ctrl/sysuser/SysUserRoleRelaController.java
0 → 100644
View file @
de3de82d
/*
* Copyright (c) 2021-2031, 河北计全科技有限公司 (https://www.jeequan.com & jeequan@126.com).
* <p>
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0;
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.gnu.org/licenses/lgpl.html
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
com.jeequan.jeepay.mch.ctrl.sysuser
;
import
com.alibaba.fastjson.JSONArray
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.jeequan.jeepay.core.constants.ApiCodeEnum
;
import
com.jeequan.jeepay.core.entity.SysUser
;
import
com.jeequan.jeepay.core.exception.BizException
;
import
com.jeequan.jeepay.mch.service.AuthService
;
import
com.jeequan.jeepay.mch.ctrl.CommonCtrl
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.security.access.prepost.PreAuthorize
;
import
org.springframework.web.bind.annotation.PathVariable
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
org.springframework.web.bind.annotation.RestController
;
import
com.jeequan.jeepay.core.entity.SysUserRoleRela
;
import
com.jeequan.jeepay.service.impl.SysUserRoleRelaService
;
import
com.jeequan.jeepay.service.impl.SysUserService
;
import
com.jeequan.jeepay.core.model.ApiRes
;
import
java.util.Arrays
;
import
java.util.List
;
/**
* 用户角色管理类
*
* @author terrfly
* @modify zhuxiao
* @site https://www.jeepay.vip
* @date 2021-04-27 15:50
*/
@RestController
@RequestMapping
(
"api/sysUserRoleRelas"
)
public
class
SysUserRoleRelaController
extends
CommonCtrl
{
@Autowired
private
SysUserRoleRelaService
sysUserRoleRelaService
;
@Autowired
private
SysUserService
sysUserService
;
@Autowired
private
AuthService
authService
;
/** list */
@PreAuthorize
(
"hasAuthority( 'ENT_UR_USER_UPD_ROLE' )"
)
@RequestMapping
(
value
=
""
,
method
=
RequestMethod
.
GET
)
public
ApiRes
list
()
{
SysUserRoleRela
queryObject
=
getObject
(
SysUserRoleRela
.
class
);
LambdaQueryWrapper
<
SysUserRoleRela
>
condition
=
SysUserRoleRela
.
gw
();
if
(
queryObject
.
getUserId
()
!=
null
){
condition
.
eq
(
SysUserRoleRela:
:
getUserId
,
queryObject
.
getUserId
());
}
IPage
<
SysUserRoleRela
>
pages
=
sysUserRoleRelaService
.
page
(
getIPage
(
true
),
condition
);
return
ApiRes
.
page
(
pages
);
}
/** 重置用户角色关联信息 */
@PreAuthorize
(
"hasAuthority( 'ENT_UR_USER_UPD_ROLE' )"
)
@RequestMapping
(
value
=
"relas/{sysUserId}"
,
method
=
RequestMethod
.
POST
)
public
ApiRes
relas
(
@PathVariable
(
"sysUserId"
)
Long
sysUserId
)
{
SysUser
dbRecord
=
sysUserService
.
getOne
(
SysUser
.
gw
().
eq
(
SysUser:
:
getSysUserId
,
sysUserId
).
eq
(
SysUser:
:
getBelongInfoId
,
getCurrentMchNo
()));
if
(
dbRecord
==
null
)
throw
new
BizException
(
ApiCodeEnum
.
SYS_OPERATION_FAIL_SELETE
);
List
<
String
>
roleIdList
=
JSONArray
.
parseArray
(
getValStringRequired
(
"roleIdListStr"
),
String
.
class
);
sysUserService
.
saveUserRole
(
sysUserId
,
roleIdList
);
authService
.
refAuthentication
(
Arrays
.
asList
(
sysUserId
));
return
ApiRes
.
ok
();
}
}
Prev
1
…
3
4
5
6
7
8
9
10
11
…
23
Next
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment