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
"jetbrains:/idea/checkout/git" did not exist on "d35ffc9d8cf434bc0f68d83bd613ddc3b7dff6de"
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