Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
cms-ci-test
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
test-ci
cms-ci-test
Commits
1442dee6
提交
1442dee6
authored
5月 28, 2023
作者:
余乾开
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'develop'
上级
616c4987
c806874e
隐藏空白字符变更
内嵌
并排
正在显示
25 个修改的文件
包含
376 行增加
和
90 行删除
+376
-90
LoginSuccessDTO.java
...ain/java/com/mmc/iuav/user/model/dto/LoginSuccessDTO.java
+4
-0
ResultEnum.java
...-util/src/main/java/com/mmc/iuav/response/ResultEnum.java
+1
-0
DataFilterYml.java
...r/src/main/java/com/mmc/iuav/user/auth/DataFilterYml.java
+26
-0
MvcConfiguration.java
...rc/main/java/com/mmc/iuav/user/auth/MvcConfiguration.java
+23
-0
NotCheckUriConfig.java
...c/main/java/com/mmc/iuav/user/auth/NotCheckUriConfig.java
+23
-0
TokenCheckHandleInterceptor.java
...a/com/mmc/iuav/user/auth/TokenCheckHandleInterceptor.java
+78
-0
AuthController.java
...ain/java/com/mmc/iuav/user/controller/AuthController.java
+2
-0
BackUserAccountController.java
...m/mmc/iuav/user/controller/BackUserAccountController.java
+4
-2
BaseController.java
...ain/java/com/mmc/iuav/user/controller/BaseController.java
+33
-9
UserAccountController.java
...a/com/mmc/iuav/user/controller/UserAccountController.java
+10
-5
WxController.java
.../main/java/com/mmc/iuav/user/controller/WxController.java
+12
-5
UserAccountDO.java
...src/main/java/com/mmc/iuav/user/entity/UserAccountDO.java
+5
-1
UserAccountService.java
...in/java/com/mmc/iuav/user/service/UserAccountService.java
+8
-0
WxService.java
...er/src/main/java/com/mmc/iuav/user/service/WxService.java
+15
-1
AuthServiceImpl.java
.../java/com/mmc/iuav/user/service/impl/AuthServiceImpl.java
+27
-2
UserAccountServiceImpl.java
...om/mmc/iuav/user/service/impl/UserAccountServiceImpl.java
+22
-3
WxServiceImpl.java
...in/java/com/mmc/iuav/user/service/impl/WxServiceImpl.java
+28
-5
PathUtil.java
...e-user/src/main/java/com/mmc/iuav/user/util/PathUtil.java
+16
-0
application-dev.yml
...e/cms-service-user/src/main/resources/application-dev.yml
+0
-16
application-local.yml
...cms-service-user/src/main/resources/application-local.yml
+0
-16
application-prod.yml
.../cms-service-user/src/main/resources/application-prod.yml
+0
-16
application.yml
...rvice/cms-service-user/src/main/resources/application.yml
+16
-0
UserServiceDao.xml
...service-user/src/main/resources/mapper/UserServiceDao.xml
+10
-8
not-check.yml
...service/cms-service-user/src/main/resources/not-check.yml
+12
-0
kustomization.yaml
kustomization/overlays/dev/kustomization.yaml
+1
-1
没有找到文件。
cms-common/cms-common-model/src/main/java/com/mmc/iuav/user/model/dto/LoginSuccessDTO.java
浏览文件 @
1442dee6
...
...
@@ -21,5 +21,9 @@ public class LoginSuccessDTO implements Serializable {
private
String
token
;
private
Integer
userAccountId
;
private
String
accountNo
;
private
String
uid
;
private
String
phoneNum
;
private
String
userName
;
private
String
nickName
;
// private RoleInfoDTO roleInfo;
}
cms-common/cms-common-util/src/main/java/com/mmc/iuav/response/ResultEnum.java
浏览文件 @
1442dee6
...
...
@@ -22,6 +22,7 @@ public enum ResultEnum implements BaseErrorInfoInterface{
PASSWORD_INCONSISTENT
(
"5026"
,
"新密码与确认密码不一致,请确认一致"
),
WX_ACCESS_TOKEN_ERROR
(
"5027"
,
"获取微信AccessToken失败"
),
APPLET_QR_CODE_CREATE_ERROR
(
"5030"
,
"生成小程序码错误:"
),
AUTH_PHONE_NUMBER_ERROR
(
"5031"
,
"授权手机号失败"
),
PWD_CREATE_ERROR
(
"6001"
,
"创建密码失败"
),
PWD_CONPARED_ERROR
(
"6002"
,
"密码错误"
),
PWD_ALERT_ERROR
(
"6003"
,
"密码不一致"
),
...
...
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/auth/DataFilterYml.java
0 → 100644
浏览文件 @
1442dee6
package
com
.
mmc
.
iuav
.
user
.
auth
;
import
org.springframework.beans.factory.config.YamlPropertiesFactoryBean
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.support.PropertySourcesPlaceholderConfigurer
;
import
org.springframework.core.io.ClassPathResource
;
import
java.util.Objects
;
/**
* Author: geDuo
* Date: 2022/6/2 17:26
*/
@Configuration
public
class
DataFilterYml
{
@Bean
public
static
PropertySourcesPlaceholderConfigurer
loadYml
(){
PropertySourcesPlaceholderConfigurer
configurer
=
new
PropertySourcesPlaceholderConfigurer
();
YamlPropertiesFactoryBean
yaml
=
new
YamlPropertiesFactoryBean
();
yaml
.
setResources
(
new
ClassPathResource
(
"not-check.yml"
));
configurer
.
setProperties
(
Objects
.
requireNonNull
(
yaml
.
getObject
()));
return
configurer
;
}
}
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/auth/MvcConfiguration.java
0 → 100644
浏览文件 @
1442dee6
package
com
.
mmc
.
iuav
.
user
.
auth
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.web.servlet.config.annotation.InterceptorRegistry
;
import
org.springframework.web.servlet.config.annotation.WebMvcConfigurer
;
/**
* @author: zj
* @Date: 2023/5/28 10:52
*/
@Configuration
public
class
MvcConfiguration
implements
WebMvcConfigurer
{
@Autowired
private
TokenCheckHandleInterceptor
tokenCheckHandleInterceptor
;
@Override
public
void
addInterceptors
(
InterceptorRegistry
registry
)
{
registry
.
addInterceptor
(
tokenCheckHandleInterceptor
);
WebMvcConfigurer
.
super
.
addInterceptors
(
registry
);
}
}
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/auth/NotCheckUriConfig.java
0 → 100644
浏览文件 @
1442dee6
package
com
.
mmc
.
iuav
.
user
.
auth
;
import
lombok.Data
;
import
org.springframework.boot.context.properties.ConfigurationProperties
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.PropertySource
;
import
java.util.List
;
/**
* @author: zj
* @Date: 2023/5/28 13:54
*/
@Data
@Configuration
@ConfigurationProperties
(
prefix
=
"data-filter"
,
ignoreUnknownFields
=
false
)
@PropertySource
(
"classpath:not-check.yml"
)
public
class
NotCheckUriConfig
{
// 不需要验证token的请求地址
private
List
<
String
>
notAuthPath
;
// 不需要验证token的请求地址;// 不需要验证token的请求地址
private
List
<
String
>
uploadPath
;
}
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/auth/TokenCheckHandleInterceptor.java
0 → 100644
浏览文件 @
1442dee6
package
com
.
mmc
.
iuav
.
user
.
auth
;
import
com.alibaba.fastjson2.JSONObject
;
import
com.mmc.iuav.response.ResultBody
;
import
com.mmc.iuav.response.ResultEnum
;
import
com.mmc.iuav.user.model.dto.LoginSuccessDTO
;
import
com.mmc.iuav.user.util.PathUtil
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.redis.core.StringRedisTemplate
;
import
org.springframework.stereotype.Component
;
import
org.springframework.web.servlet.HandlerInterceptor
;
import
org.springframework.web.servlet.ModelAndView
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
java.io.PrintWriter
;
/**
* @author: zj
* @Date: 2023/5/28 10:46
*/
@Component
public
class
TokenCheckHandleInterceptor
implements
HandlerInterceptor
{
@Autowired
private
StringRedisTemplate
stringRedisTemplate
;
@Autowired
private
NotCheckUriConfig
notCheckUriConfig
;
@Override
public
boolean
preHandle
(
HttpServletRequest
request
,
HttpServletResponse
response
,
Object
handler
)
throws
Exception
{
// String requestURI = request.getRequestURI();
// //根据uri确认是否要拦截
// if (!shouldFilter(requestURI)){
// return true;
// }
// String token = request.getHeader("token");
// String tokenJson = stringRedisTemplate.opsForValue().get(token);
//
// if (StringUtils.isBlank(tokenJson)){
// exceptionProcess(response);
// return false;
// }
// LoginSuccessDTO loginSuccessDTO = JSONObject.parseObject(tokenJson, LoginSuccessDTO.class);
// if (loginSuccessDTO != null){
// request.setAttribute("userAccountId", loginSuccessDTO.getUserAccountId());
// }
return
true
;
}
@Override
public
void
postHandle
(
HttpServletRequest
request
,
HttpServletResponse
response
,
Object
handler
,
ModelAndView
modelAndView
)
throws
Exception
{
}
@Override
public
void
afterCompletion
(
HttpServletRequest
request
,
HttpServletResponse
response
,
Object
handler
,
Exception
ex
)
throws
Exception
{
}
public
void
exceptionProcess
(
HttpServletResponse
response
)
throws
Exception
{
response
.
setContentType
(
"application/json;charset=utf-8"
);
PrintWriter
writer
=
response
.
getWriter
();
writer
.
write
(
ResultBody
.
error
(
ResultEnum
.
LOGIN_ACCOUNT_STATUS_ERROR
).
toString
());
writer
.
close
();
}
private
boolean
shouldFilter
(
String
path
)
{
// 路径与配置的相匹配,则执行过滤
for
(
String
pathPattern
:
notCheckUriConfig
.
getNotAuthPath
())
{
if
(
PathUtil
.
isPathMatch
(
pathPattern
,
path
))
{
// 如果匹配
return
false
;
}
}
return
true
;
}
}
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/controller/AuthController.java
浏览文件 @
1442dee6
...
...
@@ -11,6 +11,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
import
javax.servlet.http.HttpServletRequest
;
/**
* @author: zj
* @Date: 2023/5/15 15:50
...
...
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/controller/BackUserAccountController.java
浏览文件 @
1442dee6
...
...
@@ -5,6 +5,7 @@ import com.mmc.iuav.group.Update;
import
com.mmc.iuav.group.UpdatePassword
;
import
com.mmc.iuav.response.ResultBody
;
import
com.mmc.iuav.user.model.dto.BaseAccountDTO
;
import
com.mmc.iuav.user.model.dto.LoginSuccessDTO
;
import
com.mmc.iuav.user.model.dto.UserAccountSimpleDTO
;
import
com.mmc.iuav.user.model.qo.BUserAccountQO
;
import
com.mmc.iuav.user.model.vo.BUserAccountVO
;
...
...
@@ -17,6 +18,7 @@ import org.springframework.web.bind.annotation.*;
import
springfox.documentation.annotations.ApiIgnore
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
java.security.NoSuchAlgorithmException
;
import
java.util.List
;
...
...
@@ -49,7 +51,7 @@ public class BackUserAccountController extends BaseController{
@ApiOperation
(
value
=
"账号-删除"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
ResultBody
.
class
)})
@PostMapping
(
"removeBAccount"
)
public
ResultBody
removeBAccount
(
@RequestParam
Integer
userAccountId
)
{
public
ResultBody
removeBAccount
(
@RequestParam
Integer
userAccountId
,
HttpServletRequest
request
)
{
return
userAccountService
.
removeBAccount
(
userAccountId
);
}
...
...
@@ -88,6 +90,6 @@ public class BackUserAccountController extends BaseController{
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
ResultBody
.
class
)})
@PostMapping
(
"listTest"
)
public
ResultBody
listTest
(
HttpServletRequest
request
)
{
return
ResultBody
.
success
(
this
.
getUserLoginInfo
(
request
)
);
return
ResultBody
.
success
();
}
}
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/controller/BaseController.java
浏览文件 @
1442dee6
package
com
.
mmc
.
iuav
.
user
.
controller
;
import
com.alibaba.fastjson2.JSONObject
;
import
com.mmc.iuav.auth.JwtConstant
;
import
com.mmc.iuav.auth.JwtUtil
;
import
com.mmc.iuav.http.BizException
;
import
com.mmc.iuav.response.ResultEnum
;
import
com.mmc.iuav.user.model.dto.BaseAccountDTO
;
import
com.mmc.iuav.user.model.dto.LoginSuccessDTO
;
import
io.jsonwebtoken.Claims
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.redis.core.StringRedisTemplate
;
import
javax.servlet.http.HttpServletRequest
;
...
...
@@ -14,21 +20,39 @@ import javax.servlet.http.HttpServletRequest;
*/
public
abstract
class
BaseController
{
@Autowired
private
StringRedisTemplate
stringRedisTemplate
;
/**
* 解析token,获取用户信息
* @param request
* @return
*/
public
BaseAccountDTO
getUserLoginInfo
(
HttpServletRequest
request
)
{
// public BaseAccountDTO getUserLoginInfo(HttpServletRequest request) {
// String token = request.getHeader("token");
// try {
// Claims claims = JwtUtil.parseJwt(token);
// String userId = claims.get(JwtConstant.USER_ACCOUNT_ID).toString();
//// String roleId = claims.get("").toString();
// String tokenType = claims.get(JwtConstant.TOKEN_TYPE).toString();
// return BaseAccountDTO.builder().id(Integer.parseInt(userId)).tokenPort(tokenType).build();
// }catch (Exception e){
// throw new BizException("Invalid token");
// }
// }
/**
* 使用token从redis获取用户信息
* @param request
* @return
*/
public
LoginSuccessDTO
getUserLoginInfoFromRedis
(
HttpServletRequest
request
)
{
String
token
=
request
.
getHeader
(
"token"
);
try
{
Claims
claims
=
JwtUtil
.
parseJwt
(
token
);
String
userId
=
claims
.
get
(
JwtConstant
.
USER_ACCOUNT_ID
).
toString
();
// String roleId = claims.get("").toString();
String
tokenType
=
claims
.
get
(
JwtConstant
.
TOKEN_TYPE
).
toString
();
return
BaseAccountDTO
.
builder
().
id
(
Integer
.
parseInt
(
userId
)).
tokenPort
(
tokenType
).
build
();
}
catch
(
Exception
e
){
throw
new
BizException
(
"Invalid token"
);
String
json
=
stringRedisTemplate
.
opsForValue
().
get
(
token
);
if
(
StringUtils
.
isBlank
(
json
)){
throw
new
BizException
(
ResultEnum
.
LOGIN_ACCOUNT_STATUS_ERROR
);
}
LoginSuccessDTO
loginSuccessDTO
=
JSONObject
.
parseObject
(
json
,
LoginSuccessDTO
.
class
);
return
loginSuccessDTO
;
}
}
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/controller/UserAccountController.java
浏览文件 @
1442dee6
...
...
@@ -5,10 +5,7 @@ import com.mmc.iuav.response.ResultBody;
import
com.mmc.iuav.user.model.dto.UserAccountSimpleDTO
;
import
com.mmc.iuav.user.model.vo.UserAccountVO
;
import
com.mmc.iuav.user.service.UserAccountService
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiResponse
;
import
io.swagger.annotations.ApiResponses
;
import
io.swagger.annotations.*
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
...
...
@@ -32,7 +29,7 @@ public class UserAccountController extends BaseController{
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
UserAccountVO
.
class
)
})
@GetMapping
(
"info"
)
public
ResultBody
info
(
HttpServletRequest
request
)
{
return
ResultBody
.
success
(
userAccountService
.
getUserAccountById
(
this
.
getUserLoginInfo
(
request
).
ge
tId
()));
return
ResultBody
.
success
(
userAccountService
.
getUserAccountById
(
this
.
getUserLoginInfo
FromRedis
(
request
).
getUserAccoun
tId
()));
}
@ApiOperation
(
value
=
"修改用户信息"
)
...
...
@@ -56,4 +53,12 @@ public class UserAccountController extends BaseController{
return
userAccountService
.
feignListUserAccountIds
(
provinceCode
,
cityCode
,
districtCode
);
}
@ApiOperation
(
value
=
"授权手机号"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
Integer
.
class
)
})
@GetMapping
(
"getUserPhoneNumber"
)
public
ResultBody
getUserPhoneNumber
(
HttpServletRequest
request
,
@ApiParam
(
value
=
"授权手机号code"
,
required
=
true
)
@RequestParam
String
code
)
{
return
userAccountService
.
getUserPhoneNumber
(
this
.
getUserLoginInfoFromRedis
(
request
).
getUserAccountId
(),
code
);
}
}
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/controller/WxController.java
浏览文件 @
1442dee6
...
...
@@ -18,7 +18,7 @@ import java.io.PrintWriter;
@Api
(
tags
=
"微信相关接口"
)
@RequestMapping
(
"/wx/"
)
@RestController
public
class
WxController
{
public
class
WxController
extends
BaseController
{
@Autowired
private
WxService
wxService
;
...
...
@@ -26,15 +26,15 @@ public class WxController {
@ApiOperation
(
value
=
"小程序-获取当前用户的小程序推荐码"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
String
.
class
)
})
@PostMapping
(
"getAppletRcdCode"
)
public
ResultBody
getAppletRcdCode
(
HttpServletRequest
request
)
{
return
null
;
public
ResultBody
getAppletRcdCode
(
HttpServletRequest
request
,
@ApiParam
(
value
=
"小程序路径"
,
example
=
"pages/welcome/index"
)
@RequestParam
String
page
)
{
return
wxService
.
getUnLimitedQRCode
(
page
,
"currentUserAccountId="
+
this
.
getUserLoginInfoFromRedis
(
request
).
getUserAccountId
())
;
}
@ApiOperation
(
value
=
"小程序-测试专用"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
ResultBody
.
class
)
})
@PostMapping
(
"testDemo"
)
public
ResultBody
testDemo
()
{
return
ResultBody
.
success
(
"app:"
+
wxService
.
getAccessToken
()
+
"sub: "
+
wxService
.
getSubAccessToken
());
return
ResultBody
.
success
(
"app:"
+
"wxService.getAccessToken()"
+
"sub: "
+
wxService
.
getSubAccessToken
());
}
/**
...
...
@@ -54,7 +54,7 @@ public class WxController {
return
ResultBody
.
success
(
wxService
.
createUrlLink
(
path
,
query
));
}
@ApiOperation
(
value
=
"监控微信公众号的事件变化通知"
)
@ApiOperation
(
value
=
"监控微信公众号的事件变化通知"
,
hidden
=
true
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
String
.
class
)
})
@PostMapping
(
"wxSendMessage"
)
public
void
wxSendMessage
(
HttpServletRequest
req
,
HttpServletResponse
resp
)
throws
IOException
{
...
...
@@ -65,4 +65,11 @@ public class WxController {
String
msg
=
wxService
.
receiveSubAccountEvents
(
req
);
out
.
println
(
msg
);
}
@ApiOperation
(
value
=
"生成小程序码"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
ResultBody
.
class
)
})
@GetMapping
(
"getAppletQRCode"
)
public
ResultBody
getAppletQRCode
(
@ApiParam
(
value
=
"小程序路径"
,
example
=
"pages/welcome/index"
)
@RequestParam
String
page
,
@ApiParam
(
value
=
"参数"
,
example
=
"name=123&sex=456"
)
@RequestParam
String
scene
)
{
return
wxService
.
getUnLimitedQRCode
(
page
,
scene
);
}
}
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/entity/UserAccountDO.java
浏览文件 @
1442dee6
...
...
@@ -44,6 +44,9 @@ public class UserAccountDO implements Serializable {
private
Integer
cityCode
;
private
Integer
districtCode
;
private
Integer
cooperationTagId
;
private
Integer
companyAuthStatus
;
public
UserAccountDO
(
UserAccountVO
userAccountVO
)
{
this
.
id
=
userAccountVO
.
getId
();
this
.
phoneNum
=
userAccountVO
.
getPhoneNum
();
...
...
@@ -73,12 +76,13 @@ public class UserAccountDO implements Serializable {
public
UserAccountVO
buildUserAccountVO
()
{
return
UserAccountVO
.
builder
().
id
(
this
.
id
).
uid
(
this
.
uid
).
accountNo
(
this
.
accountNo
).
accountType
(
this
.
accountType
).
phoneNum
(
this
.
phoneNum
).
userName
(
this
.
userName
).
nickName
(
this
.
nickName
)
.
userImg
(
this
.
userImg
).
userSex
(
this
.
userSex
).
email
(
this
.
email
).
source
(
this
.
source
).
accountStatus
(
this
.
accountStatus
).
remark
(
this
.
remark
).
portType
(
this
.
portType
)
.
createTime
(
this
.
createTime
).
build
();
.
createTime
(
this
.
createTime
).
companyAuthStatus
(
this
.
companyAuthStatus
).
cooperationTagId
(
this
.
cooperationTagId
).
build
();
}
public
UserAccountSimpleDTO
buildUserAccountSimpleDTO
()
{
return
UserAccountSimpleDTO
.
builder
().
id
(
this
.
id
).
uid
(
this
.
uid
).
accountNo
(
this
.
accountNo
).
accountType
(
this
.
accountType
).
phoneNum
(
this
.
phoneNum
).
userName
(
this
.
userName
).
nickName
(
this
.
nickName
)
.
userImg
(
this
.
userImg
).
userSex
(
this
.
userSex
).
email
(
this
.
email
).
source
(
this
.
source
).
accountStatus
(
this
.
accountStatus
).
portType
(
this
.
portType
)
.
companyAuthStatus
(
this
.
companyAuthStatus
==
null
||
this
.
companyAuthStatus
!=
1
?
0
:
1
).
cooperationTagId
(
this
.
cooperationTagId
)
.
build
();
}
}
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/service/UserAccountService.java
浏览文件 @
1442dee6
...
...
@@ -115,4 +115,12 @@ public interface UserAccountService {
* @return
*/
ResultBody
feignAuthUserPwd
(
Integer
id
,
String
authPwd
);
/**
* 授权手机号
* @param id
* @param code
* @return
*/
ResultBody
getUserPhoneNumber
(
Integer
id
,
String
code
);
}
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/service/WxService.java
浏览文件 @
1442dee6
...
...
@@ -6,7 +6,6 @@ import com.mmc.iuav.user.model.vo.WxLoginVO;
import
com.mmc.iuav.user.model.vo.WxMsgVO
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
/**
* @author: zj
...
...
@@ -64,5 +63,20 @@ public interface WxService {
*/
ResultBody
sendAppletMsg
(
AppletMsgVO
appletMsgVO
);
/**
* 生成小程序链接
* @param path
* @param query
* @return
*/
String
createUrlLink
(
String
path
,
String
query
);
/**
* 获取用户授权手机号
*
* @param id
* @param code
* @return
*/
String
getUserPhoneNumber
(
Integer
id
,
String
code
);
}
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/service/impl/AuthServiceImpl.java
浏览文件 @
1442dee6
...
...
@@ -22,11 +22,13 @@ import com.mmc.iuav.user.service.WxService;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.redis.core.StringRedisTemplate
;
import
org.springframework.stereotype.Service
;
import
java.security.NoSuchAlgorithmException
;
import
java.util.HashMap
;
import
java.util.Map
;
import
java.util.concurrent.TimeUnit
;
/**
* @author: zj
...
...
@@ -42,6 +44,9 @@ public class AuthServiceImpl implements AuthService {
@Autowired
private
UserAccountService
userAccountService
;
@Autowired
private
StringRedisTemplate
stringRedisTemplate
;
@Override
public
ResultBody
appletLogin
(
WxLoginVO
wxLoginVO
)
{
String
unionId
;
...
...
@@ -82,11 +87,13 @@ public class AuthServiceImpl implements AuthService {
}
//数据库查询用户信息
UserAccountVO
userAccountVO
=
userAccountService
.
getUserAccountInfoByUnionId
(
unionId
);
String
uid
=
userAccountVO
.
getUid
();
if
(
userAccountVO
==
null
)
{
UserAccountDO
userAccountDO
=
new
UserAccountDO
();
userAccountDO
.
setUnionId
(
unionId
);
userAccountDO
.
setOpenId
(
openId
);
userAccountDO
.
setUid
(
CodeUtil
.
generateUserUID
());
uid
=
CodeUtil
.
generateUserUID
();
userAccountDO
.
setUid
(
uid
);
userAccountDO
.
setAccountType
(
0
);
userAccountDO
.
setPortType
(
100
);
userAccountDO
.
setSource
(
wxLoginVO
.
getSource
());
...
...
@@ -99,6 +106,13 @@ public class AuthServiceImpl implements AuthService {
map
.
put
(
JwtConstant
.
TOKEN_TYPE
,
JwtConstant
.
IUAV_TOKEN
);
String
token
=
JwtUtil
.
createJwt
(
map
);
LoginSuccessDTO
loginSuccessDTO
=
LoginSuccessDTO
.
builder
().
token
(
token
).
userAccountId
(
userAccountVO
.
getId
()).
accountNo
(
userAccountVO
.
getAccountNo
()).
uid
(
uid
)
.
userName
(
userAccountVO
.
getUserName
()).
nickName
(
userAccountVO
.
getNickName
()).
phoneNum
(
userAccountVO
.
getPhoneNum
()).
build
();
stringRedisTemplate
.
opsForValue
().
set
(
token
,
JSONObject
.
toJSONString
(
loginSuccessDTO
),
JwtConstant
.
EXPIRATION
,
TimeUnit
.
MILLISECONDS
);
return
ResultBody
.
success
(
AppUserSucVO
.
builder
().
token
(
token
).
uid
(
userAccountVO
.
getUid
()).
phoneNum
(
userAccountVO
.
getPhoneNum
())
.
nickName
(
userAccountVO
.
getNickName
()).
userAccountId
(
userAccountVO
.
getId
()).
sessionKey
(
sessionKey
).
build
());
}
...
...
@@ -107,6 +121,7 @@ public class AuthServiceImpl implements AuthService {
public
ResultBody
backEndLogin
(
LoginUserQO
param
)
{
//查询用户信息
UserAccountDO
user
=
userAccountService
.
getUserLoginInfo
(
param
.
getAccountNo
(),
param
.
getPassWord
());
System
.
out
.
println
(
"login user:---------------->"
+
user
.
toString
()
);
if
(
user
==
null
)
{
return
ResultBody
.
error
(
ResultEnum
.
LOGIN_ACCOUNT_NOT_EXIT_ERROR
);
}
...
...
@@ -128,6 +143,11 @@ public class AuthServiceImpl implements AuthService {
//map.put(JwtConstant.ROLE_ID, 0);
map
.
put
(
JwtConstant
.
TOKEN_TYPE
,
JwtConstant
.
M_TOKEN
);
String
token
=
JwtUtil
.
createJwt
(
map
);
LoginSuccessDTO
loginSuccessDTO
=
LoginSuccessDTO
.
builder
().
token
(
token
).
userAccountId
(
user
.
getId
()).
accountNo
(
user
.
getAccountNo
()).
uid
(
user
.
getUid
())
.
userName
(
user
.
getUserName
()).
nickName
(
user
.
getNickName
()).
phoneNum
(
user
.
getPhoneNum
()).
build
();
stringRedisTemplate
.
opsForValue
().
set
(
token
,
JSONObject
.
toJSONString
(
loginSuccessDTO
),
JwtConstant
.
EXPIRATION
,
TimeUnit
.
MILLISECONDS
);
return
ResultBody
.
success
(
LoginSuccessDTO
.
builder
().
token
(
token
).
userAccountId
(
user
.
getId
()).
accountNo
(
user
.
getAccountNo
()).
build
());
}
...
...
@@ -140,10 +160,15 @@ public class AuthServiceImpl implements AuthService {
map
.
put
(
JwtConstant
.
USER_ACCOUNT_ID
,
userAccountVO
.
getId
());
map
.
put
(
JwtConstant
.
TOKEN_TYPE
,
JwtConstant
.
IUAV_TOKEN
);
String
token
=
JwtUtil
.
createJwt
(
map
);
LoginSuccessDTO
loginSuccessDTO
=
LoginSuccessDTO
.
builder
().
token
(
token
).
userAccountId
(
userAccountVO
.
getId
()).
accountNo
(
userAccountVO
.
getAccountNo
()).
uid
(
userAccountVO
.
getUid
())
.
userName
(
userAccountVO
.
getUserName
()).
nickName
(
userAccountVO
.
getNickName
()).
phoneNum
(
userAccountVO
.
getPhoneNum
()).
build
();
stringRedisTemplate
.
opsForValue
().
set
(
token
,
JSONObject
.
toJSONString
(
loginSuccessDTO
),
JwtConstant
.
EXPIRATION
,
TimeUnit
.
MILLISECONDS
);
return
ResultBody
.
success
(
AppUserSucVO
.
builder
().
token
(
token
).
uid
(
userAccountVO
.
getUid
()).
phoneNum
(
userAccountVO
.
getPhoneNum
())
.
nickName
(
userAccountVO
.
getNickName
()).
userAccountId
(
userAccountVO
.
getId
()).
build
());
}
return
null
;
return
ResultBody
.
error
(
ResultEnum
.
APPLET_LOGIN_ERROR
)
;
}
}
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/service/impl/UserAccountServiceImpl.java
浏览文件 @
1442dee6
package
com
.
mmc
.
iuav
.
user
.
service
.
impl
;
import
com.mmc.iuav.auth.JwtConstant
;
import
com.mmc.iuav.general.CodeUtil
;
import
com.mmc.iuav.page.PageResult
;
import
com.mmc.iuav.response.ResultBody
;
import
com.mmc.iuav.response.ResultEnum
;
import
com.mmc.iuav.user.auth.PwdUtil
;
import
com.mmc.iuav.user.constant.UserSystemConstant
;
import
com.mmc.iuav.user.dao.CooperationDao
;
import
com.mmc.iuav.user.dao.UserServiceDao
;
import
com.mmc.iuav.user.entity.UserAccountDO
;
...
...
@@ -18,9 +16,10 @@ import com.mmc.iuav.user.model.vo.CompanyAuthVO;
import
com.mmc.iuav.user.model.vo.UserAccountVO
;
import
com.mmc.iuav.user.service.CompanyAuthService
;
import
com.mmc.iuav.user.service.UserAccountService
;
import
com.mmc.iuav.user.service.WxService
;
import
org.apache.commons.lang.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.StringUtils
;
import
java.security.NoSuchAlgorithmException
;
import
java.util.List
;
...
...
@@ -42,6 +41,9 @@ public class UserAccountServiceImpl implements UserAccountService {
@Autowired
private
CooperationDao
cooperationDao
;
@Autowired
private
WxService
wxService
;
@Override
public
UserAccountVO
getUserAccountInfoByUnionId
(
String
unionId
)
{
UserAccountDO
userAccountDO
=
userServiceDao
.
getUserAccountInfoByUnionId
(
unionId
);
...
...
@@ -162,6 +164,9 @@ public class UserAccountServiceImpl implements UserAccountService {
@Override
public
List
<
UserAccountSimpleDTO
>
feignListBAccountPage
(
BUserAccountQO
bUserAccountQO
)
{
List
<
UserAccountDO
>
list
=
userServiceDao
.
feignListBAccountPage
(
bUserAccountQO
);
if
(
list
==
null
)
{
return
null
;
}
List
<
UserAccountSimpleDTO
>
accountSimpleDTOS
=
list
.
stream
().
map
(
UserAccountDO:
:
buildUserAccountSimpleDTO
).
collect
(
Collectors
.
toList
());
return
accountSimpleDTOS
;
}
...
...
@@ -214,4 +219,18 @@ public class UserAccountServiceImpl implements UserAccountService {
}
return
ResultBody
.
success
();
}
@Override
public
ResultBody
getUserPhoneNumber
(
Integer
id
,
String
code
)
{
String
userPhoneNumber
=
wxService
.
getUserPhoneNumber
(
id
,
code
);
if
(
StringUtils
.
isBlank
(
userPhoneNumber
)){
return
ResultBody
.
error
(
ResultEnum
.
AUTH_PHONE_NUMBER_ERROR
);
}
System
.
out
.
println
(
"userPhoneNumber:"
+
userPhoneNumber
);
UserAccountDO
userAccount
=
new
UserAccountDO
();
userAccount
.
setId
(
id
);
userAccount
.
setPhoneNum
(
userPhoneNumber
);
userServiceDao
.
update
(
userAccount
);
return
ResultBody
.
success
();
}
}
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/service/impl/WxServiceImpl.java
浏览文件 @
1442dee6
...
...
@@ -64,11 +64,11 @@ public class WxServiceImpl implements WxService {
String
accessToken
=
stringRedisTemplate
.
opsForValue
().
get
(
WxConstant
.
IUAV_MINI_PROGRAM_ACCESS_TOKEN
);
if
(
StringUtils
.
isBlank
(
accessToken
)){
String
getAccessTokenUrl
=
"https://api.weixin.qq.com/cgi-bin/token"
+
"?grant_type=client_credential"
+
"&appid="
+
userSystemConstant
.
getWxAppId
()
+
"&secret"
+
userSystemConstant
.
getWxAppSecret
();
userSystemConstant
.
getWxAppId
()
+
"&secret
=
"
+
userSystemConstant
.
getWxAppSecret
();
String
accessTokenMsg
=
HttpsRequestUtil
.
httpsGet
(
getAccessTokenUrl
,
null
);
JSONObject
tokenResult
=
JSONObject
.
parseObject
(
accessTokenMsg
);
if
(
accessTokenMsg
.
indexOf
(
"access_token"
)
==
-
1
)
{
System
.
out
.
println
(
"获取
用户信息有误:access_token请求失败
:"
+
tokenResult
);
System
.
out
.
println
(
"获取
小程序access_token有误
:"
+
tokenResult
);
return
null
;
}
accessToken
=
tokenResult
.
getString
(
"access_token"
);
...
...
@@ -86,11 +86,11 @@ public class WxServiceImpl implements WxService {
String
accessToken
=
stringRedisTemplate
.
opsForValue
().
get
(
WxConstant
.
SHARE_FLY_SUB_ACCESS_TOKEN
);
if
(
StringUtils
.
isBlank
(
accessToken
)){
String
getAccessTokenUrl
=
"https://api.weixin.qq.com/cgi-bin/token"
+
"?grant_type=client_credential"
+
"&appid="
+
userSystemConstant
.
getWxSubAppId
()
+
"&secret"
+
userSystemConstant
.
getWxSubSecret
();
userSystemConstant
.
getWxSubAppId
()
+
"&secret
=
"
+
userSystemConstant
.
getWxSubSecret
();
String
accessTokenMsg
=
HttpsRequestUtil
.
httpsGet
(
getAccessTokenUrl
,
null
);
JSONObject
tokenResult
=
JSONObject
.
parseObject
(
accessTokenMsg
);
if
(
accessTokenMsg
.
indexOf
(
"access_token"
)
==
-
1
)
{
System
.
out
.
println
(
"获取
用户信息有误:access_token请求失败
:"
+
tokenResult
);
System
.
out
.
println
(
"获取
公众号access_token有误
:"
+
tokenResult
);
return
null
;
}
accessToken
=
tokenResult
.
getString
(
"access_token"
);
...
...
@@ -218,9 +218,11 @@ public class WxServiceImpl implements WxService {
param
.
put
(
"scene"
,
scene
);
param
.
put
(
"page"
,
path
);
param
.
put
(
"width"
,
430
);
param
.
put
(
"check_path"
,
false
);
param
.
put
(
"env_version"
,
userSystemConstant
.
getEnvVersion
());
String
url
=
"https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token="
+
accessToken
;
base64
=
HttpHelper
.
httpPost
(
url
,
param
.
toJSONString
());
//base64 = HttpHelper.httpPost(url, param.toJSONString());
base64
=
HttpsRequestUtil
.
getACodeBase64
(
url
,
"POST"
,
null
,
param
.
toJSONString
());
return
ResultBody
.
success
(
base64
);
}
catch
(
Exception
e
)
{
return
ResultBody
.
error
(
ResultEnum
.
APPLET_QR_CODE_CREATE_ERROR
);
...
...
@@ -268,4 +270,25 @@ public class WxServiceImpl implements WxService {
}
return
null
;
}
@Override
public
String
getUserPhoneNumber
(
Integer
id
,
String
code
)
{
try
{
String
accessToken
=
this
.
getAccessToken
();
JSONObject
param
=
new
JSONObject
();
param
.
put
(
"code"
,
code
);
String
url
=
"https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token="
+
accessToken
;
String
res
=
HttpHelper
.
httpPost
(
url
,
param
.
toString
());
JSONObject
result
=
JSONObject
.
parseObject
(
res
);
System
.
out
.
println
(
"用户授权手机号:"
+
res
);
if
(
result
.
getString
(
"errcode"
).
equals
(
"0"
))
{
String
phone_info
=
result
.
getString
(
"phone_info"
);
JSONObject
phoneInfoObject
=
JSONObject
.
parseObject
(
phone_info
);
return
phoneInfoObject
.
getString
(
"purePhoneNumber"
);
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
null
;
}
}
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/util/PathUtil.java
0 → 100644
浏览文件 @
1442dee6
package
com
.
mmc
.
iuav
.
user
.
util
;
import
org.springframework.util.AntPathMatcher
;
/**
* @author 作者 geDuo
* @version 创建时间:2021年8月31日 下午3:29:28
* @explain 解析地址类
*/
public
class
PathUtil
{
private
static
AntPathMatcher
matcher
=
new
AntPathMatcher
();
public
static
boolean
isPathMatch
(
String
pattern
,
String
path
)
{
return
matcher
.
match
(
pattern
,
path
);
}
}
csm-service/cms-service-user/src/main/resources/application-dev.yml
浏览文件 @
1442dee6
server
:
port
:
35150
servlet
:
context-path
:
/userapp
#spring
spring
:
application
:
name
:
userapp
#Database
datasource
:
driver-class-name
:
com.mysql.cj.jdbc.Driver
...
...
@@ -42,22 +36,12 @@ spring:
# enabled: true
# login-username: druid
# login-password: druid
jackson
:
date-format
:
yyyy-MM-dd HH:mm:ss
redis
:
database
:
1
host
:
r-wz9ke310fs684hacn1pd.redis.rds.aliyuncs.com
password
:
MMC@2022&REDIS
port
:
6379
#mybatis
mybatis
:
executor-type
:
simple
mapper-locations
:
classpath:mapper/**/*.xml
type-aliases-package
:
com.mmc.iuav.user.entity
configuration
:
map-underscore-to-camel-case
:
true
wx
:
sub
:
appid
:
wx5c6a105a0ddca4c5
...
...
csm-service/cms-service-user/src/main/resources/application-local.yml
浏览文件 @
1442dee6
server
:
port
:
35150
servlet
:
context-path
:
/userapp
#spring
spring
:
application
:
name
:
userapp
#Database
datasource
:
driver-class-name
:
com.mysql.cj.jdbc.Driver
...
...
@@ -19,16 +13,6 @@ spring:
host
:
r-wz9ke310fs684hacn1pd.redis.rds.aliyuncs.com
password
:
MMC@2022&REDIS
port
:
6379
jackson
:
date-format
:
yyyy-MM-dd HH:mm:ss
#mybatis
mybatis
:
executor-type
:
simple
mapper-locations
:
classpath:mapper/**/*.xml
type-aliases-package
:
com.mmc.iuav.user
configuration
:
map-underscore-to-camel-case
:
true
wx
:
sub
:
...
...
csm-service/cms-service-user/src/main/resources/application-prod.yml
浏览文件 @
1442dee6
server
:
port
:
35150
servlet
:
context-path
:
/userapp
#spring
spring
:
application
:
name
:
userapp
#Database
datasource
:
driver-class-name
:
com.mysql.cj.jdbc.Driver
...
...
@@ -42,22 +36,12 @@ spring:
# enabled: true
# login-username: druid
# login-password: druid
jackson
:
date-format
:
yyyy-MM-dd HH:mm:ss
redis
:
database
:
1
host
:
r-wz9ke310fs684hacn1pd.redis.rds.aliyuncs.com
password
:
MMC@2022&REDIS
port
:
6379
#mybatis
mybatis
:
executor-type
:
simple
mapper-locations
:
classpath:mapper/**/*.xml
type-aliases-package
:
com.mmc.iuav.user
configuration
:
map-underscore-to-camel-case
:
true
wx
:
sub
:
appid
:
wx5c6a105a0ddca4c5
...
...
csm-service/cms-service-user/src/main/resources/application.yml
浏览文件 @
1442dee6
server
:
port
:
35150
servlet
:
context-path
:
/userapp
spring
:
profiles
:
active
:
local
application
:
name
:
userapp
jackson
:
date-format
:
yyyy-MM-dd HH:mm:ss
time-zone
:
GMT+8
#mybatis
mybatis
:
executor-type
:
simple
mapper-locations
:
classpath:mapper/**/*.xml
type-aliases-package
:
com.mmc.iuav.user
configuration
:
map-underscore-to-camel-case
:
true
---
spring
:
...
...
csm-service/cms-service-user/src/main/resources/mapper/UserServiceDao.xml
浏览文件 @
1442dee6
...
...
@@ -119,7 +119,9 @@
<select
id=
"getUserLoginInfo"
resultType=
"com.mmc.iuav.user.entity.UserAccountDO"
>
select ua.id,
ua.uid,
ua.account_no,
ua.phone_num,
ua.pass_word,
ua.account_status,
ua.account_type,
...
...
@@ -130,23 +132,23 @@
</select>
<select
id=
"feignListBAccountPage"
resultType=
"com.mmc.iuav.user.entity.UserAccountDO"
parameterType=
"com.mmc.iuav.user.model.qo.BUserAccountQO"
>
select
id, account_type, account_no, uid, phone_num, user_name, nick_name, user_img, open_id, union_id, user_sex, email, source, account_status,
remark,
port_type, is_deleted as deleted, create_time, update_time
from user_account
where
is_deleted = 0 and port_type
= 0
select
ua.id, ua.account_type, ua.account_no, ua.uid, ua.phone_num, ua.user_name, ua.nick_name, ua.user_img, ua.open_id, ua.union_id, ua.user_sex, ua.email, ua.source, ua.account_status, ua.
remark,
ua.port_type, ua.is_deleted as deleted, ua.create_time, ua.update_time, ut.cooperation_tag_id, ca.auth_status as companyAuthStatus
from user_account
ua left join user_tag ut on ua.id = ut.user_account_id left join company_auth ca on ua.id = ca.user_account_id
where
ua.is_deleted
= 0
<if
test=
" userIds != null "
>
<foreach
collection=
"userIds"
item=
"id"
open=
"and id in ("
close=
")"
separator=
","
>
<foreach
collection=
"userIds"
item=
"id"
open=
"and
ua.
id in ("
close=
")"
separator=
","
>
#{id}
</foreach>
</if>
<if
test=
"provinceCode != null"
>
and province_code = #{provinceCode}
and
ua.
province_code = #{provinceCode}
</if>
<if
test=
"cityCode != null"
>
and city_code = #{cityCode}
and
ua.
city_code = #{cityCode}
</if>
<if
test=
"districtCode != null"
>
and district_code = #{districtCode}
and
ua.
district_code = #{districtCode}
</if>
</select>
...
...
csm-service/cms-service-user/src/main/resources/not-check.yml
0 → 100644
浏览文件 @
1442dee6
data-filter
:
uploadPath
:
#不需要解析的body参数的地址
-
/xxx/x
not-auth-path
:
-
/userapp/v2/**
-
/userapp/doc.html
-
/userapp/swagger-resources/**
-
/userapp/webjars/**
-
/userapp/auth/testAppletLogin
-
/userapp/auth/backEndLogin
-
/userapp/auth/testAppletLogin
-
/userapp/cooperation/listTag
kustomization/overlays/dev/kustomization.yaml
浏览文件 @
1442dee6
...
...
@@ -17,4 +17,4 @@ patches:
images
:
-
name
:
REGISTRY/NAMESPACE/IMAGE:TAG
newName
:
mmc-registry.cn-shenzhen.cr.aliyuncs.com/sharefly-dev/cms
newTag
:
2df3064ac9fa8f9c581b6bc6c7df63695693dee5
newTag
:
c4c184f6677536af1d4693f7fbcf5eb6b9784947
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论