Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
Y
yudao-cloud
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
hblj
yudao-cloud
Commits
ef135447
提交
ef135447
authored
7月 22, 2020
作者:
YunaiV
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
用户的功能迁移
上级
8edc49f4
隐藏空白字符变更
内嵌
并排
正在显示
93 个修改的文件
包含
790 行增加
和
1421 行删除
+790
-1421
DubboWebAutoConfiguration.java
.../iocoder/mall/dubbo/config/DubboWebAutoConfiguration.java
+1
-1
AdminSecurityInterceptor.java
...rity/admin/core/interceptor/AdminSecurityInterceptor.java
+2
-2
UserSecurityInterceptor.java
...curity/user/core/interceptor/UserSecurityInterceptor.java
+5
-5
PassportController.java
...managementweb/controller/passport/PassportController.java
+2
-0
UserController.java
...er/mall/managementweb/controller/user/UserController.java
+68
-0
AdminsUserPageRequest.java
...agementweb/controller/user/dto/AdminsUserPageRequest.java
+0
-29
UserPageReqVO.java
.../mall/managementweb/controller/user/vo/UserPageReqVO.java
+19
-0
UserRespVO.java
...der/mall/managementweb/controller/user/vo/UserRespVO.java
+14
-16
UserUpdateInfoReqVO.java
...managementweb/controller/user/vo/UserUpdateInfoReqVO.java
+25
-0
UserUpdateStatusReqVO.java
...nagementweb/controller/user/vo/UserUpdateStatusReqVO.java
+9
-14
AdminPassportConvert.java
.../managementweb/convert/passport/AdminPassportConvert.java
+2
-2
UserConvert.java
.../iocoder/mall/managementweb/convert/user/UserConvert.java
+33
-0
PassportManager.java
.../mall/managementweb/manager/passport/PassportManager.java
+4
-4
UserManager.java
.../iocoder/mall/managementweb/manager/user/UserManager.java
+83
-0
pom.xml
pom.xml
+1
-1
OAuth2Rpc.java
...va/cn/iocoder/mall/systemservice/rpc/oauth/OAuth2Rpc.java
+9
-6
OAuth2AccessTokenRespDTO.java
...systemservice/rpc/oauth/dto/OAuth2AccessTokenRespDTO.java
+3
-3
OAuth2CreateAccessTokenReqDTO.java
...mservice/rpc/oauth/dto/OAuth2CreateAccessTokenReqDTO.java
+8
-2
OAuth2RefreshAccessTokenReqDTO.java
...service/rpc/oauth/dto/OAuth2RefreshAccessTokenReqDTO.java
+2
-2
OAuth2RemoveTokenByUserReqDTO.java
...mservice/rpc/oauth/dto/OAuth2RemoveTokenByUserReqDTO.java
+31
-0
OAuth2Convert.java
...coder/mall/systemservice/convert/oauth/OAuth2Convert.java
+2
-2
OAuth2Manager.java
...coder/mall/systemservice/manager/oauth/OAuth2Manager.java
+15
-6
OAuth2RpcImpl.java
...n/iocoder/mall/systemservice/rpc/oauth/OAuth2RpcImpl.java
+13
-6
AdminService.java
...ocoder/mall/systemservice/service/admin/AdminService.java
+12
-73
pom.xml
system/pom.xml
+0
-4
pom.xml
system/system-application/pom.xml
+0
-29
SystemApplication.java
...cn/iocoder/mall/system/application/SystemApplication.java
+0
-24
UserConvert.java
.../cn/iocoder/mall/system/biz/convert/user/UserConvert.java
+0
-45
UserService.java
.../cn/iocoder/mall/system/biz/service/user/UserService.java
+0
-39
UserServiceImpl.java
...iocoder/mall/system/biz/service/user/UserServiceImpl.java
+0
-87
application.yaml
system/system-biz/src/main/resources/application.yaml
+0
-0
AdminsUserController.java
...ll/system/rest/controller/admin/AdminsUserController.java
+0
-54
AdminsUserConvert.java
...der/mall/system/rest/convert/admin/AdminsUserConvert.java
+0
-52
AccessLogConvert.java
.../mall/system/rest/convert/systemlog/AccessLogConvert.java
+0
-27
ErrorCodeAddRequest.java
...ll/system/rest/request/errorcode/ErrorCodeAddRequest.java
+0
-31
ErrorCodePageRequest.java
...l/system/rest/request/errorcode/ErrorCodePageRequest.java
+0
-18
ErrorCodeUpdateRequest.java
...system/rest/request/errorcode/ErrorCodeUpdateRequest.java
+0
-30
AdminsAuthorizationMenuTreeResponse.java
...se/authorization/AdminsAuthorizationMenuTreeResponse.java
+0
-28
AdminsAuthorizationRoleResourceTreeResponse.java
...rization/AdminsAuthorizationRoleResourceTreeResponse.java
+0
-26
AdminsResourceTreeResponse.java
...st/response/authorization/AdminsResourceTreeResponse.java
+0
-36
ErrorCodePageResponse.java
...system/rest/response/errorcode/ErrorCodePageResponse.java
+0
-33
AccessLogPageResponse.java
...system/rest/response/systemlog/AccessLogPageResponse.java
+0
-53
pom.xml
system/system-rpc-api/pom.xml
+0
-34
UserRPC.java
...ain/java/cn/iocoder/mall/system/rpc/api/user/UserRPC.java
+0
-15
UserResponse.java
...n/iocoder/mall/system/rpc/response/user/UserResponse.java
+0
-20
pom.xml
system/system-rpc/pom.xml
+0
-40
UserConvert.java
.../cn/iocoder/mall/system/rpc/convert/user/UserConvert.java
+0
-15
UserRPCImpl.java
...java/cn/iocoder/mall/system/rpc/rpc/user/UserRPCImpl.java
+0
-24
rpc-local.yaml
system/system-rpc/src/main/resources/rpc-local.yaml
+0
-14
rpc-test.yaml
system/system-rpc/src/main/resources/rpc-test.yaml
+0
-14
rpc.yaml
system/system-rpc/src/main/resources/rpc.yaml
+0
-44
pom.xml
user-service-project/pom.xml
+6
-0
UserErrorCodeConstants.java
...ocoder/mall/userservice/enums/UserErrorCodeConstants.java
+1
-1
UserSmsCodeRpc.java
...a/cn/iocoder/mall/userservice/rpc/sms/UserSmsCodeRpc.java
+4
-4
UserSendSmsCodeReqDTO.java
...r/mall/userservice/rpc/sms/dto/UserSendSmsCodeReqDTO.java
+3
-3
UserVerifySmsCodeReqDTO.java
...mall/userservice/rpc/sms/dto/UserVerifySmsCodeReqDTO.java
+3
-3
UserRpc.java
...in/java/cn/iocoder/mall/userservice/rpc/user/UserRpc.java
+45
-4
UserCreateReqDTO.java
...coder/mall/userservice/rpc/user/dto/UserCreateReqDTO.java
+2
-2
UserPageReqDTO.java
...iocoder/mall/userservice/rpc/user/dto/UserPageReqDTO.java
+11
-21
UserRespDTO.java
...cn/iocoder/mall/userservice/rpc/user/dto/UserRespDTO.java
+3
-3
UserUpdateReqDTO.java
...coder/mall/userservice/rpc/user/dto/UserUpdateReqDTO.java
+47
-0
pom.xml
user-service-project/user-service-app/pom.xml
+6
-0
ServiceExceptionConfiguration.java
...all/userservice/config/ServiceExceptionConfiguration.java
+0
-20
UserConvert.java
...cn/iocoder/mall/userservice/convert/user/UserConvert.java
+27
-4
UserMapper.java
...er/mall/userservice/dal/mysql/mapper/user/UserMapper.java
+9
-13
UserSmsCodeManager.java
...oder/mall/userservice/manager/sms/UserSmsCodeManager.java
+4
-4
UserManager.java
...cn/iocoder/mall/userservice/manager/user/UserManager.java
+65
-7
UserSmsCodeRpcImpl.java
.../iocoder/mall/userservice/rpc/sms/UserSmsCodeRpcImpl.java
+4
-4
UserRpcImpl.java
...ava/cn/iocoder/mall/userservice/rpc/user/UserRpcImpl.java
+25
-4
UserService.java
...cn/iocoder/mall/userservice/service/user/UserService.java
+59
-0
UserCreateBO.java
...ocoder/mall/userservice/service/user/bo/UserCreateBO.java
+2
-0
UserPageBO.java
.../iocoder/mall/userservice/service/user/bo/UserPageBO.java
+30
-0
UserUpdateBO.java
...ocoder/mall/userservice/service/user/bo/UserUpdateBO.java
+46
-0
application.yaml
...ject/user-service-app/src/main/resources/application.yaml
+4
-0
UserPassportConvert.java
...er/mall/userweb/convert/passport/UserPassportConvert.java
+11
-11
UserConvert.java
...ava/cn/iocoder/mall/userweb/convert/user/UserConvert.java
+2
-2
UserPassportManager.java
...er/mall/userweb/manager/passport/UserPassportManager.java
+6
-6
UserManager.java
...ava/cn/iocoder/mall/userweb/manager/user/UserManager.java
+2
-2
pom.xml
user/pom.xml
+0
-1
pom.xml
user/user-biz-api/pom.xml
+0
-23
package-info.java
...c/main/java/cn/iocoder/mall/user/biz/bo/package-info.java
+0
-6
package-info.java
...n/java/cn/iocoder/mall/user/biz/convert/package-info.java
+0
-6
package-info.java
.../main/java/cn/iocoder/mall/user/biz/dao/package-info.java
+0
-6
package-info.java
...ava/cn/iocoder/mall/user/biz/dataobject/package-info.java
+0
-6
package-info.java
.../main/java/cn/iocoder/mall/user/biz/dto/package-info.java
+0
-6
UserAuthenticationBO.java
...n/iocoder/mall/user/api/bo/user/UserAuthenticationBO.java
+0
-22
UserAuthenticationByMobileCodeDTO.java
.../user/api/dto/user/UserAuthenticationByMobileCodeDTO.java
+0
-29
UserConvert.java
...in/java/cn/iocoder/mall/user/biz/convert/UserConvert.java
+0
-30
UserMapper.java
...rc/main/java/cn/iocoder/mall/user/biz/dao/UserMapper.java
+0
-28
UserRegisterMapper.java
...java/cn/iocoder/mall/user/biz/dao/UserRegisterMapper.java
+0
-12
AdminsUserController.java
...r/application/controller/admins/AdminsUserController.java
+0
-73
UserAddressConvert.java
...der/mall/user/application/convert/UserAddressConvert.java
+0
-25
AdminsUserPageVO.java
...der/mall/user/application/vo/admins/AdminsUserPageVO.java
+0
-20
没有找到文件。
common/mall-spring-boot-starter-dubbo/src/main/java/cn/iocoder/mall/dubbo/config/DubboWebAutoConfiguration.java
浏览文件 @
ef135447
...
...
@@ -24,7 +24,7 @@ public class DubboWebAutoConfiguration implements WebMvcConfigurer {
registry
.
addInterceptor
(
new
DubboRouterTagWebInterceptor
()).
order
(-
1000
);
logger
.
info
(
"[addInterceptors][加载 DubboRouterTagWebInterceptor 拦截器完成]"
);
}
catch
(
NoSuchBeanDefinitionException
e
)
{
logger
.
warn
(
"[addInterceptors][无法获取 DubboRouterTagWebInterceptor 拦截器,无法使用 Dubbo 标签路由]"
);
logger
.
warn
(
"[addInterceptors][无法获取 DubboRouterTagWebInterceptor 拦截器,无法使用
基于 dubbo-tag 请求头进行
Dubbo 标签路由]"
);
}
}
...
...
common/mall-spring-boot-starter-security-admin/src/main/java/cn/iocoder/mall/security/admin/core/interceptor/AdminSecurityInterceptor.java
浏览文件 @
ef135447
...
...
@@ -9,7 +9,7 @@ import cn.iocoder.common.framework.vo.CommonResult;
import
cn.iocoder.mall.security.admin.core.context.AdminSecurityContext
;
import
cn.iocoder.mall.security.admin.core.context.AdminSecurityContextHolder
;
import
cn.iocoder.mall.systemservice.rpc.oauth.OAuth2Rpc
;
import
cn.iocoder.mall.systemservice.rpc.oauth.
vo.OAuth2AccessTokenV
O
;
import
cn.iocoder.mall.systemservice.rpc.oauth.
dto.OAuth2AccessTokenRespDT
O
;
import
cn.iocoder.mall.systemservice.rpc.permission.PermissionRpc
;
import
cn.iocoder.mall.systemservice.rpc.permission.dto.PermissionCheckDTO
;
import
cn.iocoder.mall.web.core.util.CommonWebUtil
;
...
...
@@ -48,7 +48,7 @@ public class AdminSecurityInterceptor extends HandlerInterceptorAdapter {
String
accessToken
=
HttpUtil
.
obtainAuthorization
(
request
);
Integer
adminId
=
null
;
if
(
accessToken
!=
null
)
{
CommonResult
<
OAuth2AccessToken
V
O
>
checkAccessTokenResult
=
oauth2Rpc
.
checkAccessToken
(
accessToken
);
CommonResult
<
OAuth2AccessToken
RespDT
O
>
checkAccessTokenResult
=
oauth2Rpc
.
checkAccessToken
(
accessToken
);
checkAccessTokenResult
.
checkError
();
// 校验用户类型正确
if
(!
UserTypeEnum
.
ADMIN
.
getValue
().
equals
(
checkAccessTokenResult
.
getData
().
getUserType
()))
{
...
...
common/mall-spring-boot-starter-security-user/src/main/java/cn/iocoder/mall/security/user/core/interceptor/UserSecurityInterceptor.java
浏览文件 @
ef135447
package
cn
.
iocoder
.
mall
.
security
.
user
.
core
.
interceptor
;
import
cn.iocoder.common.framework.exception.enums.GlobalErrorCodeEnum
;
import
cn.iocoder.common.framework.enums.UserTypeEnum
;
import
cn.iocoder.common.framework.util.HttpUtil
;
import
cn.iocoder.common.framework.exception.util.ServiceExceptionUtil
;
import
cn.iocoder.common.framework.util.HttpUtil
;
import
cn.iocoder.common.framework.vo.CommonResult
;
import
cn.iocoder.mall.security.user.core.context.UserSecurityContext
;
import
cn.iocoder.mall.security.user.core.context.UserSecurityContextHolder
;
import
cn.iocoder.mall.systemservice.rpc.oauth.OAuth2Rpc
;
import
cn.iocoder.mall.systemservice.rpc.oauth.
vo.OAuth2AccessTokenV
O
;
import
cn.iocoder.mall.systemservice.rpc.oauth.
dto.OAuth2AccessTokenRespDT
O
;
import
cn.iocoder.mall.web.core.util.CommonWebUtil
;
import
cn.iocoder.security.annotations.RequiresAuthenticate
;
import
cn.iocoder.security.annotations.RequiresPermissions
;
...
...
@@ -19,6 +18,7 @@ import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
static
cn
.
iocoder
.
common
.
framework
.
exception
.
enums
.
GlobalErrorCodeConstants
.
UNAUTHORIZED
;
import
static
cn
.
iocoder
.
mall
.
systemservice
.
enums
.
SystemErrorCodeConstants
.
OAUTH_USER_TYPE_ERROR
;
public
class
UserSecurityInterceptor
extends
HandlerInterceptorAdapter
{
...
...
@@ -39,7 +39,7 @@ public class UserSecurityInterceptor extends HandlerInterceptorAdapter {
String
accessToken
=
HttpUtil
.
obtainAuthorization
(
request
);
Integer
userId
=
null
;
if
(
accessToken
!=
null
)
{
CommonResult
<
OAuth2AccessToken
V
O
>
checkAccessTokenResult
=
oauth2Rpc
.
checkAccessToken
(
accessToken
);
CommonResult
<
OAuth2AccessToken
RespDT
O
>
checkAccessTokenResult
=
oauth2Rpc
.
checkAccessToken
(
accessToken
);
checkAccessTokenResult
.
checkError
();
// 校验用户类型正确
if
(!
UserTypeEnum
.
USER
.
getValue
().
equals
(
checkAccessTokenResult
.
getData
().
getUserType
()))
{
...
...
@@ -64,7 +64,7 @@ public class UserSecurityInterceptor extends HandlerInterceptorAdapter {
requiresAuthenticate
=
true
;
}
if
(
requiresAuthenticate
&&
userId
==
null
)
{
throw
ServiceExceptionUtil
.
exception
(
GlobalErrorCodeEnum
.
UNAUTHORIZED
);
throw
ServiceExceptionUtil
.
exception
(
UNAUTHORIZED
);
}
}
...
...
management-web-app/src/main/java/cn/iocoder/mall/managementweb/controller/passport/PassportController.java
浏览文件 @
ef135447
...
...
@@ -46,12 +46,14 @@ public class PassportController {
return
success
(
passportManager
.
getAdmin
(
AdminSecurityContextHolder
.
getAdminId
()));
}
// TODO 优化点:迁移到 PermissionController
@GetMapping
(
"/tree-admin-menu"
)
@ApiOperation
(
"获得当前管理员的菜单树"
)
public
CommonResult
<
List
<
PassportAdminMenuTreeNodeVO
>>
treeAdminMenu
()
{
return
success
(
passportManager
.
treeAdminMenu
(
AdminSecurityContextHolder
.
getAdminId
()));
}
// TODO 优化点:迁移到 PermissionController
@GetMapping
(
"/list-admin-permission"
)
@ApiOperation
(
"获得当前管理员的权限列表"
)
public
CommonResult
<
Set
<
String
>>
listAdminPermission
()
{
...
...
management-web-app/src/main/java/cn/iocoder/mall/managementweb/controller/user/UserController.java
0 → 100644
浏览文件 @
ef135447
package
cn
.
iocoder
.
mall
.
managementweb
.
controller
.
user
;
import
cn.iocoder.common.framework.vo.CommonResult
;
import
cn.iocoder.common.framework.vo.PageResult
;
import
cn.iocoder.mall.managementweb.controller.user.vo.UserPageReqVO
;
import
cn.iocoder.mall.managementweb.controller.user.vo.UserRespVO
;
import
cn.iocoder.mall.managementweb.controller.user.vo.UserUpdateInfoReqVO
;
import
cn.iocoder.mall.managementweb.controller.user.vo.UserUpdateStatusReqVO
;
import
cn.iocoder.mall.managementweb.manager.user.UserManager
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiImplicitParam
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
import
javax.validation.Valid
;
import
java.util.List
;
import
static
cn
.
iocoder
.
common
.
framework
.
vo
.
CommonResult
.
success
;
/**
* 用户 Controller
*/
@RestController
@RequestMapping
(
"/user"
)
@Api
(
tags
=
"用户"
)
@Validated
public
class
UserController
{
@Autowired
private
UserManager
userManager
;
@PostMapping
(
"/update-info"
)
@ApiOperation
(
"更新用户信息"
)
public
CommonResult
<
Boolean
>
updateUserInfo
(
@Valid
UserUpdateInfoReqVO
updateInfoReqVO
)
{
userManager
.
updateUserInfo
(
updateInfoReqVO
);
return
success
(
true
);
}
@PostMapping
(
"/update-status"
)
@ApiOperation
(
"更新用户信息"
)
public
CommonResult
<
Boolean
>
updateUserStatus
(
@Valid
UserUpdateStatusReqVO
updateStatusReqVO
)
{
userManager
.
updateUserStatus
(
updateStatusReqVO
);
return
success
(
true
);
}
@GetMapping
(
"/get"
)
@ApiOperation
(
"获得用户"
)
@ApiImplicitParam
(
name
=
"userId"
,
value
=
"用户编号"
,
required
=
true
)
public
CommonResult
<
UserRespVO
>
getUser
(
@RequestParam
(
"userId"
)
Integer
userId
)
{
return
success
(
userManager
.
getUser
(
userId
));
}
@GetMapping
(
"/list"
)
@ApiOperation
(
"获得用户列表"
)
@ApiImplicitParam
(
name
=
"userIds"
,
value
=
"用户编号列表"
,
required
=
true
)
public
CommonResult
<
List
<
UserRespVO
>>
listUsers
(
@RequestParam
(
"userIds"
)
List
<
Integer
>
userIds
)
{
return
success
(
userManager
.
listUsers
(
userIds
));
}
@GetMapping
(
"/page"
)
@ApiOperation
(
"获得用户分页"
)
public
CommonResult
<
PageResult
<
UserRespVO
>>
pageUser
(
UserPageReqVO
pageVO
)
{
return
success
(
userManager
.
pageUser
(
pageVO
));
}
}
management-web-app/src/main/java/cn/iocoder/mall/managementweb/controller/user/dto/AdminsUserPageRequest.java
deleted
100644 → 0
浏览文件 @
8edc49f4
package
cn
.
iocoder
.
mall
.
managementweb
.
controller
.
user
.
dto
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
/**
* @Author: jiangweifan
* @Date: 2020/5/12
* @Description: 管理员 - 用户信息 - 用户分页列表
*/
@ApiModel
(
"用户分页列表Request"
)
@Data
@Accessors
(
chain
=
true
)
public
class
AdminsUserPageRequest
{
@ApiModelProperty
(
name
=
"nickname"
,
value
=
"昵称,模糊匹配"
,
example
=
"小王"
)
private
String
nickname
;
@ApiModelProperty
(
name
=
"status"
,
value
=
"状态。1 - 开启;2 - 禁用"
,
example
=
"0"
)
private
Integer
status
;
@ApiModelProperty
(
name
=
"pageNo"
,
value
=
"页码,从 1 开始"
,
example
=
"1"
)
private
Integer
pageNo
=
1
;
@ApiModelProperty
(
name
=
"pageSize"
,
value
=
"每页条数"
,
required
=
true
,
example
=
"10"
)
private
Integer
pageSize
=
10
;
}
management-web-app/src/main/java/cn/iocoder/mall/managementweb/controller/user/vo/UserPageReqVO.java
0 → 100644
浏览文件 @
ef135447
package
cn
.
iocoder
.
mall
.
managementweb
.
controller
.
user
.
vo
;
import
cn.iocoder.common.framework.vo.PageParam
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
@ApiModel
(
"用户分页 Request VO"
)
@Data
@EqualsAndHashCode
(
callSuper
=
true
)
public
class
UserPageReqVO
extends
PageParam
{
@ApiModelProperty
(
value
=
"昵称"
,
example
=
"丑艿艿"
,
notes
=
"模糊匹配"
)
private
String
nickname
;
@ApiModelProperty
(
value
=
"状态"
,
example
=
"1"
,
notes
=
"见 CommonStatusEnum 枚举"
)
private
Integer
status
;
}
user/user-start/src/main/java/cn/iocoder/mall/user/application/vo/admins/AdminsUser
VO.java
→
management-web-app/src/main/java/cn/iocoder/mall/managementweb/controller/user/vo/UserResp
VO.java
浏览文件 @
ef135447
package
cn
.
iocoder
.
mall
.
user
.
application
.
vo
.
admins
;
package
cn
.
iocoder
.
mall
.
managementweb
.
controller
.
user
.
vo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
lombok.*
;
import
io.swagger.annotations.*
;
import
java.util.*
;
import
java.util.Date
;
@ApiModel
(
"用户 VO"
)
@ApiModel
(
"用户 Response VO"
)
@Data
@Accessors
(
chain
=
true
)
public
class
AdminsUserVO
{
public
class
UserRespVO
{
@ApiModelProperty
(
value
=
"用户编号"
,
required
=
true
,
example
=
"1"
)
private
Integer
id
;
@ApiModelProperty
(
value
=
"手机号"
,
required
=
true
,
example
=
"15601691300"
)
private
String
mobile
;
@ApiModelProperty
(
value
=
"昵称"
,
required
=
true
,
example
=
"小王"
)
@ApiModelProperty
(
value
=
"昵称"
,
example
=
"丑艿艿"
)
private
String
nickname
;
@ApiModelProperty
(
value
=
"头像"
,
required
=
true
,
example
=
"http://www.iocoder.cn/xxx.jpg"
)
@ApiModelProperty
(
value
=
"头像"
,
example
=
"http://www.iocoder.cn/xxx.jpg"
)
private
String
avatar
;
@ApiModelProperty
(
value
=
"
账号状态"
,
required
=
true
,
example
=
"1
"
)
@ApiModelProperty
(
value
=
"
状态"
,
required
=
true
,
example
=
"1"
,
notes
=
"见 CommonStatusEnum 枚举
"
)
private
Integer
status
;
@ApiModelProperty
(
value
=
"创建时间"
,
required
=
true
,
example
=
"时间戳格式"
)
@ApiModelProperty
(
value
=
"手机号"
,
required
=
true
,
example
=
"15601691399"
)
private
String
mobile
;
@ApiModelProperty
(
value
=
"注册 IP"
,
required
=
true
,
example
=
"127.0.0.1"
)
private
String
createIp
;
@ApiModelProperty
(
value
=
"创建时间"
,
required
=
true
)
private
Date
createTime
;
}
management-web-app/src/main/java/cn/iocoder/mall/managementweb/controller/user/vo/UserUpdateInfoReqVO.java
0 → 100644
浏览文件 @
ef135447
package
cn
.
iocoder
.
mall
.
managementweb
.
controller
.
user
.
vo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
javax.validation.constraints.NotNull
;
@ApiModel
(
"用户更新信息 Request VO"
)
@Data
public
class
UserUpdateInfoReqVO
{
@ApiModelProperty
(
value
=
"用户编号"
,
required
=
true
,
example
=
"1"
)
@NotNull
(
message
=
"用户编号不能为空"
)
private
Integer
id
;
@ApiModelProperty
(
value
=
"昵称"
,
example
=
"臭艿艿"
)
private
String
nickname
;
@ApiModelProperty
(
value
=
"头像"
,
example
=
"http://www.iocoder.cn/nainainai.jpg"
)
private
String
avatar
;
@ApiModelProperty
(
value
=
"手机号"
,
example
=
"15601691300"
)
private
String
mobile
;
@ApiModelProperty
(
value
=
"密码"
,
example
=
"123456"
)
private
String
password
;
}
management-web-app/src/main/java/cn/iocoder/mall/managementweb/controller/user/
dto/AdminsUserUpdateStatusRequest
.java
→
management-web-app/src/main/java/cn/iocoder/mall/managementweb/controller/user/
vo/UserUpdateStatusReqVO
.java
浏览文件 @
ef135447
package
cn
.
iocoder
.
mall
.
managementweb
.
controller
.
user
.
dt
o
;
package
cn
.
iocoder
.
mall
.
managementweb
.
controller
.
user
.
v
o
;
import
cn.iocoder.common.framework.enums.CommonStatusEnum
;
import
cn.iocoder.common.framework.validator.InEnum
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
javax.validation.constraints.NotNull
;
/**
* @Author: jiangweifan
* @Date: 2020/5/12
* @Description: 管理员 - 用户信息 - 更新用户状态
*/
@ApiModel
(
"更新用户状态Request"
)
@ApiModel
(
"用户更新状态 Request VO"
)
@Data
@Accessors
(
chain
=
true
)
public
class
AdminsUserUpdateStatusRequest
{
public
class
UserUpdateStatusReqVO
{
@ApiModelProperty
(
name
=
"id"
,
value
=
"用户编号"
,
required
=
true
,
example
=
"1"
)
@ApiModelProperty
(
value
=
"用户编号"
,
required
=
true
)
@NotNull
(
message
=
"用户编号不能为空"
)
private
Integer
id
;
@
ApiModelProperty
(
name
=
"status"
,
value
=
"用户状态。1 - 开启;2 - 禁用"
,
required
=
true
,
example
=
"1
"
)
@
NotNull
(
message
=
"用户状态不能为空
"
)
@ApiModelProperty
(
value
=
"状态"
,
required
=
true
,
example
=
"1"
,
notes
=
"见 CommonStatusEnum 枚举"
)
@
NotNull
(
message
=
"状态不能为空
"
)
@
InEnum
(
value
=
CommonStatusEnum
.
class
,
message
=
"修改状态必须是 {value}
"
)
private
Integer
status
;
}
management-web-app/src/main/java/cn/iocoder/mall/managementweb/convert/passport/AdminPassportConvert.java
浏览文件 @
ef135447
...
...
@@ -5,7 +5,7 @@ import cn.iocoder.mall.managementweb.controller.passport.vo.PassportAccessTokenV
import
cn.iocoder.mall.managementweb.controller.passport.vo.PassportAdminVO
;
import
cn.iocoder.mall.systemservice.rpc.admin.dto.AdminVerifyPasswordDTO
;
import
cn.iocoder.mall.systemservice.rpc.admin.vo.AdminVO
;
import
cn.iocoder.mall.systemservice.rpc.oauth.
vo.OAuth2AccessTokenV
O
;
import
cn.iocoder.mall.systemservice.rpc.oauth.
dto.OAuth2AccessTokenRespDT
O
;
import
org.mapstruct.Mapper
;
import
org.mapstruct.factory.Mappers
;
...
...
@@ -16,7 +16,7 @@ public interface AdminPassportConvert {
AdminVerifyPasswordDTO
convert
(
PassportLoginDTO
bean
);
PassportAccessTokenVO
convert
(
OAuth2AccessToken
V
O
bean
);
PassportAccessTokenVO
convert
(
OAuth2AccessToken
RespDT
O
bean
);
PassportAdminVO
convert
(
AdminVO
bean
);
...
...
management-web-app/src/main/java/cn/iocoder/mall/managementweb/convert/user/UserConvert.java
0 → 100644
浏览文件 @
ef135447
package
cn
.
iocoder
.
mall
.
managementweb
.
convert
.
user
;
import
cn.iocoder.common.framework.vo.PageResult
;
import
cn.iocoder.mall.managementweb.controller.user.vo.UserPageReqVO
;
import
cn.iocoder.mall.managementweb.controller.user.vo.UserRespVO
;
import
cn.iocoder.mall.managementweb.controller.user.vo.UserUpdateInfoReqVO
;
import
cn.iocoder.mall.managementweb.controller.user.vo.UserUpdateStatusReqVO
;
import
cn.iocoder.mall.userservice.rpc.user.dto.UserPageReqDTO
;
import
cn.iocoder.mall.userservice.rpc.user.dto.UserRespDTO
;
import
cn.iocoder.mall.userservice.rpc.user.dto.UserUpdateReqDTO
;
import
org.mapstruct.Mapper
;
import
org.mapstruct.factory.Mappers
;
import
java.util.List
;
@Mapper
public
interface
UserConvert
{
UserConvert
INSTANCE
=
Mappers
.
getMapper
(
UserConvert
.
class
);
UserUpdateReqDTO
convert
(
UserUpdateInfoReqVO
bean
);
UserRespVO
convert
(
UserRespDTO
bean
);
List
<
UserRespVO
>
convertList
(
List
<
UserRespDTO
>
list
);
UserPageReqDTO
convert
(
UserPageReqVO
bean
);
PageResult
<
UserRespVO
>
convertPage
(
PageResult
<
UserRespDTO
>
bean
);
UserUpdateReqDTO
convert
(
UserUpdateStatusReqVO
bean
);
}
management-web-app/src/main/java/cn/iocoder/mall/managementweb/manager/passport/PassportManager.java
浏览文件 @
ef135447
...
...
@@ -15,8 +15,8 @@ import cn.iocoder.mall.systemservice.enums.permission.ResourceTypeEnum;
import
cn.iocoder.mall.systemservice.rpc.admin.AdminRpc
;
import
cn.iocoder.mall.systemservice.rpc.admin.vo.AdminVO
;
import
cn.iocoder.mall.systemservice.rpc.oauth.OAuth2Rpc
;
import
cn.iocoder.mall.systemservice.rpc.oauth.dto.OAuth2CreateAccessTokenDTO
;
import
cn.iocoder.mall.systemservice.rpc.oauth.
vo.OAuth2AccessTokenV
O
;
import
cn.iocoder.mall.systemservice.rpc.oauth.dto.OAuth2CreateAccessToken
Req
DTO
;
import
cn.iocoder.mall.systemservice.rpc.oauth.
dto.OAuth2AccessTokenRespDT
O
;
import
cn.iocoder.mall.systemservice.rpc.permission.ResourceRpc
;
import
cn.iocoder.mall.systemservice.rpc.permission.RoleRpc
;
import
cn.iocoder.mall.systemservice.rpc.permission.vo.ResourceVO
;
...
...
@@ -45,8 +45,8 @@ public class PassportManager {
CommonResult
<
AdminVO
>
verifyPasswordResult
=
adminRpc
.
verifyPassword
(
AdminPassportConvert
.
INSTANCE
.
convert
(
loginDTO
).
setIp
(
ip
));
verifyPasswordResult
.
checkError
();
// 创建访问令牌
CommonResult
<
OAuth2AccessToken
V
O
>
createAccessTokenResult
=
oauth2Rpc
.
createAccessToken
(
new
OAuth2CreateAccessTokenDTO
().
setUserId
(
verifyPasswordResult
.
getData
().
getId
())
CommonResult
<
OAuth2AccessToken
RespDT
O
>
createAccessTokenResult
=
oauth2Rpc
.
createAccessToken
(
new
OAuth2CreateAccessToken
Req
DTO
().
setUserId
(
verifyPasswordResult
.
getData
().
getId
())
.
setUserType
(
UserTypeEnum
.
ADMIN
.
getValue
()).
setCreateIp
(
ip
));
createAccessTokenResult
.
checkError
();
// 返回
...
...
management-web-app/src/main/java/cn/iocoder/mall/managementweb/manager/user/UserManager.java
0 → 100644
浏览文件 @
ef135447
package
cn
.
iocoder
.
mall
.
managementweb
.
manager
.
user
;
import
cn.iocoder.common.framework.vo.CommonResult
;
import
cn.iocoder.common.framework.vo.PageResult
;
import
cn.iocoder.mall.managementweb.controller.user.vo.UserPageReqVO
;
import
cn.iocoder.mall.managementweb.controller.user.vo.UserRespVO
;
import
cn.iocoder.mall.managementweb.controller.user.vo.UserUpdateInfoReqVO
;
import
cn.iocoder.mall.managementweb.controller.user.vo.UserUpdateStatusReqVO
;
import
cn.iocoder.mall.managementweb.convert.user.UserConvert
;
import
cn.iocoder.mall.userservice.rpc.user.UserRpc
;
import
cn.iocoder.mall.userservice.rpc.user.dto.UserRespDTO
;
import
org.apache.dubbo.config.annotation.Reference
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
/**
* 用户 Manager
*/
@Service
public
class
UserManager
{
@Reference
(
version
=
"$ {dubbo.consumer.UserRpc.version}"
,
validation
=
"false"
)
private
UserRpc
userRpc
;
/**
* 更新用户信息
*
* @param updateInfoReqVO 更新用户信息 VO
*/
public
void
updateUserInfo
(
UserUpdateInfoReqVO
updateInfoReqVO
)
{
CommonResult
<
Boolean
>
updateUserResult
=
userRpc
.
updateUser
(
UserConvert
.
INSTANCE
.
convert
(
updateInfoReqVO
));
updateUserResult
.
checkError
();
}
/**
* 更新用户状态
*
* @param updateStatusReqVO 更新用户状态 VO
*/
public
void
updateUserStatus
(
UserUpdateStatusReqVO
updateStatusReqVO
)
{
CommonResult
<
Boolean
>
updateUserResult
=
userRpc
.
updateUser
(
UserConvert
.
INSTANCE
.
convert
(
updateStatusReqVO
));
updateUserResult
.
checkError
();
}
/**
* 获得用户
*
* @param userId 用户编号
* @return 用户
*/
public
UserRespVO
getUser
(
Integer
userId
)
{
CommonResult
<
UserRespDTO
>
getUserResult
=
userRpc
.
getUser
(
userId
);
getUserResult
.
checkError
();
return
UserConvert
.
INSTANCE
.
convert
(
getUserResult
.
getData
());
}
/**
* 获得用户列表
*
* @param userIds 用户编号列表
* @return 用户列表
*/
public
List
<
UserRespVO
>
listUsers
(
List
<
Integer
>
userIds
)
{
CommonResult
<
List
<
UserRespDTO
>>
listUserResult
=
userRpc
.
listUsers
(
userIds
);
listUserResult
.
checkError
();
return
UserConvert
.
INSTANCE
.
convertList
(
listUserResult
.
getData
());
}
/**
* 获得用户分页
*
* @param pageVO 用户分页查询
* @return 用户分页结果
*/
public
PageResult
<
UserRespVO
>
pageUser
(
UserPageReqVO
pageVO
)
{
CommonResult
<
PageResult
<
UserRespDTO
>>
pageUserResult
=
userRpc
.
pageUser
(
UserConvert
.
INSTANCE
.
convert
(
pageVO
));
pageUserResult
.
checkError
();
return
UserConvert
.
INSTANCE
.
convertPage
(
pageUserResult
.
getData
());
}
}
pom.xml
浏览文件 @
ef135447
...
...
@@ -18,7 +18,7 @@
<!-- <module>order</module>-->
<module>
user
</module>
<module>
common
</module>
<module>
system
</module
>
<!-- <module>system</module>--
>
<!-- <module>ops</module>-->
<!-- <module>pay</module>-->
<!-- <module>promotion</module>-->
...
...
system-service-project/system-service-api/src/main/java/cn/iocoder/mall/systemservice/rpc/oauth/OAuth2Rpc.java
浏览文件 @
ef135447
package
cn
.
iocoder
.
mall
.
systemservice
.
rpc
.
oauth
;
import
cn.iocoder.common.framework.vo.CommonResult
;
import
cn.iocoder.mall.systemservice.rpc.oauth.dto.OAuth2CreateAccessTokenDTO
;
import
cn.iocoder.mall.systemservice.rpc.oauth.dto.OAuth2RefreshAccessTokenDTO
;
import
cn.iocoder.mall.systemservice.rpc.oauth.vo.OAuth2AccessTokenVO
;
import
cn.iocoder.mall.systemservice.rpc.oauth.dto.OAuth2CreateAccessTokenReqDTO
;
import
cn.iocoder.mall.systemservice.rpc.oauth.dto.OAuth2RefreshAccessTokenReqDTO
;
import
cn.iocoder.mall.systemservice.rpc.oauth.dto.OAuth2AccessTokenRespDTO
;
import
cn.iocoder.mall.systemservice.rpc.oauth.dto.OAuth2RemoveTokenByUserReqDTO
;
public
interface
OAuth2Rpc
{
CommonResult
<
OAuth2AccessToken
VO
>
createAccessToken
(
OAuth2CreateAccessToken
DTO
createAccessTokenDTO
);
CommonResult
<
OAuth2AccessToken
RespDTO
>
createAccessToken
(
OAuth2CreateAccessTokenReq
DTO
createAccessTokenDTO
);
CommonResult
<
OAuth2AccessToken
V
O
>
checkAccessToken
(
String
accessToken
);
CommonResult
<
OAuth2AccessToken
RespDT
O
>
checkAccessToken
(
String
accessToken
);
CommonResult
<
OAuth2AccessTokenVO
>
refreshAccessToken
(
OAuth2RefreshAccessTokenDTO
refreshAccessTokenDTO
);
CommonResult
<
OAuth2AccessTokenRespDTO
>
refreshAccessToken
(
OAuth2RefreshAccessTokenReqDTO
refreshAccessTokenDTO
);
CommonResult
<
Boolean
>
removeToken
(
OAuth2RemoveTokenByUserReqDTO
removeTokenDTO
);
}
system-service-project/system-service-api/src/main/java/cn/iocoder/mall/systemservice/rpc/oauth/
vo/OAuth2AccessTokenV
O.java
→
system-service-project/system-service-api/src/main/java/cn/iocoder/mall/systemservice/rpc/oauth/
dto/OAuth2AccessTokenRespDT
O.java
浏览文件 @
ef135447
package
cn
.
iocoder
.
mall
.
systemservice
.
rpc
.
oauth
.
v
o
;
package
cn
.
iocoder
.
mall
.
systemservice
.
rpc
.
oauth
.
dt
o
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
...
...
@@ -7,11 +7,11 @@ import java.io.Serializable;
import
java.util.Date
;
/**
* OAuth2.0 访问令牌
V
O
* OAuth2.0 访问令牌
Response DT
O
*/
@Data
@Accessors
(
chain
=
true
)
public
class
OAuth2AccessToken
V
O
implements
Serializable
{
public
class
OAuth2AccessToken
RespDT
O
implements
Serializable
{
/**
* 访问令牌
...
...
system-service-project/system-service-api/src/main/java/cn/iocoder/mall/systemservice/rpc/oauth/dto/OAuth2CreateAccessTokenDTO.java
→
system-service-project/system-service-api/src/main/java/cn/iocoder/mall/systemservice/rpc/oauth/dto/OAuth2CreateAccessToken
Req
DTO.java
浏览文件 @
ef135447
package
cn
.
iocoder
.
mall
.
systemservice
.
rpc
.
oauth
.
dto
;
import
cn.iocoder.common.framework.enums.UserTypeEnum
;
import
cn.iocoder.common.framework.validator.InEnum
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
javax.validation.constraints.NotNull
;
import
java.io.Serializable
;
/**
* OAuth2.0 访问令牌创建 DTO
* OAuth2.0 访问令牌创建
Request
DTO
*/
@Data
@Accessors
(
chain
=
true
)
public
class
OAuth2CreateAccessTokenDTO
implements
Serializable
{
public
class
OAuth2CreateAccessToken
Req
DTO
implements
Serializable
{
/**
* 用户编号
*/
@NotNull
(
message
=
"用户编号不能为空"
)
private
Integer
userId
;
/**
* 用户类型
*/
@NotNull
(
message
=
"用户类型不能为空"
)
@InEnum
(
value
=
UserTypeEnum
.
class
,
message
=
"用户类型必须是 {value}"
)
private
Integer
userType
;
/**
* 创建 IP
...
...
system-service-project/system-service-api/src/main/java/cn/iocoder/mall/systemservice/rpc/oauth/dto/OAuth2RefreshAccessTokenDTO.java
→
system-service-project/system-service-api/src/main/java/cn/iocoder/mall/systemservice/rpc/oauth/dto/OAuth2RefreshAccessToken
Req
DTO.java
浏览文件 @
ef135447
...
...
@@ -6,11 +6,11 @@ import lombok.experimental.Accessors;
import
java.io.Serializable
;
/**
* OAuth2.0 访问令牌创建 DTO
* OAuth2.0 访问令牌创建
Request
DTO
*/
@Data
@Accessors
(
chain
=
true
)
public
class
OAuth2RefreshAccessTokenDTO
implements
Serializable
{
public
class
OAuth2RefreshAccessToken
Req
DTO
implements
Serializable
{
/**
* 刷新令牌
...
...
system-service-project/system-service-api/src/main/java/cn/iocoder/mall/systemservice/rpc/oauth/dto/OAuth2RemoveTokenByUserReqDTO.java
0 → 100644
浏览文件 @
ef135447
package
cn
.
iocoder
.
mall
.
systemservice
.
rpc
.
oauth
.
dto
;
import
cn.iocoder.common.framework.enums.UserTypeEnum
;
import
cn.iocoder.common.framework.validator.InEnum
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
javax.validation.constraints.NotNull
;
/**
* OAuth2.0 移除用户令牌 Request DTO
*
* 包括访问令牌和刷新令牌
*/
@Data
@Accessors
(
chain
=
true
)
public
class
OAuth2RemoveTokenByUserReqDTO
{
/**
* 用户编号
*/
@NotNull
(
message
=
"用户编号不能为空"
)
private
Integer
userId
;
/**
* 用户类型
*/
@NotNull
(
message
=
"用户类型不能为空"
)
@InEnum
(
value
=
UserTypeEnum
.
class
,
message
=
"用户类型必须是 {value}"
)
private
Integer
userType
;
}
system-service-project/system-service-app/src/main/java/cn/iocoder/mall/systemservice/convert/oauth/OAuth2Convert.java
浏览文件 @
ef135447
package
cn
.
iocoder
.
mall
.
systemservice
.
convert
.
oauth
;
import
cn.iocoder.mall.systemservice.dal.mysql.dataobject.oauth.OAuth2AccessTokenDO
;
import
cn.iocoder.mall.systemservice.rpc.oauth.
vo.OAuth2AccessTokenV
O
;
import
cn.iocoder.mall.systemservice.rpc.oauth.
dto.OAuth2AccessTokenRespDT
O
;
import
cn.iocoder.mall.systemservice.service.oauth.bo.OAuth2AccessTokenBO
;
import
org.mapstruct.Mapper
;
import
org.mapstruct.Mapping
;
...
...
@@ -15,6 +15,6 @@ public interface OAuth2Convert {
@Mapping
(
source
=
"id"
,
target
=
"accessToken"
)
OAuth2AccessTokenBO
convert
(
OAuth2AccessTokenDO
bean
);
OAuth2AccessToken
V
O
convert
(
OAuth2AccessTokenBO
bean
);
OAuth2AccessToken
RespDT
O
convert
(
OAuth2AccessTokenBO
bean
);
}
system-service-project/system-service-app/src/main/java/cn/iocoder/mall/systemservice/manager/oauth/OAuth2Manager.java
浏览文件 @
ef135447
package
cn
.
iocoder
.
mall
.
systemservice
.
manager
.
oauth
;
import
cn.iocoder.mall.systemservice.convert.oauth.OAuth2Convert
;
import
cn.iocoder.mall.systemservice.rpc.oauth.dto.OAuth2CreateAccessTokenDTO
;
import
cn.iocoder.mall.systemservice.rpc.oauth.dto.OAuth2RefreshAccessTokenDTO
;
import
cn.iocoder.mall.systemservice.rpc.oauth.vo.OAuth2AccessTokenVO
;
import
cn.iocoder.mall.systemservice.rpc.oauth.dto.OAuth2AccessTokenRespDTO
;
import
cn.iocoder.mall.systemservice.rpc.oauth.dto.OAuth2CreateAccessTokenReqDTO
;
import
cn.iocoder.mall.systemservice.rpc.oauth.dto.OAuth2RefreshAccessTokenReqDTO
;
import
cn.iocoder.mall.systemservice.rpc.oauth.dto.OAuth2RemoveTokenByUserReqDTO
;
import
cn.iocoder.mall.systemservice.service.oauth.OAuth2Service
;
import
cn.iocoder.mall.systemservice.service.oauth.bo.OAuth2AccessTokenBO
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.validation.annotation.Validated
;
import
javax.validation.Valid
;
/**
* OAuth2.0 Manager
*/
@Service
@Validated
public
class
OAuth2Manager
{
@Autowired
private
OAuth2Service
oauth2Service
;
public
OAuth2AccessToken
VO
createAccessToken
(
OAuth2CreateAccessToken
DTO
createAccessTokenDTO
)
{
public
OAuth2AccessToken
RespDTO
createAccessToken
(
@Valid
OAuth2CreateAccessTokenReq
DTO
createAccessTokenDTO
)
{
OAuth2AccessTokenBO
accessTokenBO
=
oauth2Service
.
createAccessToken
(
createAccessTokenDTO
.
getUserId
(),
createAccessTokenDTO
.
getUserType
(),
createAccessTokenDTO
.
getCreateIp
());
return
OAuth2Convert
.
INSTANCE
.
convert
(
accessTokenBO
);
}
public
OAuth2AccessToken
V
O
checkAccessToken
(
String
accessToken
)
{
public
OAuth2AccessToken
RespDT
O
checkAccessToken
(
String
accessToken
)
{
OAuth2AccessTokenBO
accessTokenBO
=
oauth2Service
.
checkAccessToken
(
accessToken
);
return
OAuth2Convert
.
INSTANCE
.
convert
(
accessTokenBO
);
}
public
OAuth2AccessToken
VO
refreshAccessToken
(
OAuth2RefreshAccessToken
DTO
refreshAccessTokenDTO
)
{
public
OAuth2AccessToken
RespDTO
refreshAccessToken
(
@Valid
OAuth2RefreshAccessTokenReq
DTO
refreshAccessTokenDTO
)
{
OAuth2AccessTokenBO
accessTokenBO
=
oauth2Service
.
refreshAccessToken
(
refreshAccessTokenDTO
.
getRefreshToken
(),
refreshAccessTokenDTO
.
getCreateIp
());
return
OAuth2Convert
.
INSTANCE
.
convert
(
accessTokenBO
);
}
public
void
removeToken
(
@Valid
OAuth2RemoveTokenByUserReqDTO
removeTokenDTO
)
{
oauth2Service
.
removeToken
(
removeTokenDTO
.
getUserId
(),
removeTokenDTO
.
getUserType
());
}
}
system-service-project/system-service-app/src/main/java/cn/iocoder/mall/systemservice/rpc/oauth/OAuth2RpcImpl.java
浏览文件 @
ef135447
...
...
@@ -2,9 +2,10 @@ package cn.iocoder.mall.systemservice.rpc.oauth;
import
cn.iocoder.common.framework.vo.CommonResult
;
import
cn.iocoder.mall.systemservice.manager.oauth.OAuth2Manager
;
import
cn.iocoder.mall.systemservice.rpc.oauth.dto.OAuth2CreateAccessTokenDTO
;
import
cn.iocoder.mall.systemservice.rpc.oauth.dto.OAuth2RefreshAccessTokenDTO
;
import
cn.iocoder.mall.systemservice.rpc.oauth.vo.OAuth2AccessTokenVO
;
import
cn.iocoder.mall.systemservice.rpc.oauth.dto.OAuth2CreateAccessTokenReqDTO
;
import
cn.iocoder.mall.systemservice.rpc.oauth.dto.OAuth2RefreshAccessTokenReqDTO
;
import
cn.iocoder.mall.systemservice.rpc.oauth.dto.OAuth2AccessTokenRespDTO
;
import
cn.iocoder.mall.systemservice.rpc.oauth.dto.OAuth2RemoveTokenByUserReqDTO
;
import
org.apache.dubbo.config.annotation.Service
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -17,18 +18,24 @@ public class OAuth2RpcImpl implements OAuth2Rpc {
private
OAuth2Manager
oauth2Manager
;
@Override
public
CommonResult
<
OAuth2AccessToken
VO
>
createAccessToken
(
OAuth2CreateAccessToken
DTO
createAccessTokenDTO
)
{
public
CommonResult
<
OAuth2AccessToken
RespDTO
>
createAccessToken
(
OAuth2CreateAccessTokenReq
DTO
createAccessTokenDTO
)
{
return
success
(
oauth2Manager
.
createAccessToken
(
createAccessTokenDTO
));
}
@Override
public
CommonResult
<
OAuth2AccessToken
V
O
>
checkAccessToken
(
String
accessToken
)
{
public
CommonResult
<
OAuth2AccessToken
RespDT
O
>
checkAccessToken
(
String
accessToken
)
{
return
success
(
oauth2Manager
.
checkAccessToken
(
accessToken
));
}
@Override
public
CommonResult
<
OAuth2AccessToken
VO
>
refreshAccessToken
(
OAuth2RefreshAccessToken
DTO
refreshAccessTokenDTO
)
{
public
CommonResult
<
OAuth2AccessToken
RespDTO
>
refreshAccessToken
(
OAuth2RefreshAccessTokenReq
DTO
refreshAccessTokenDTO
)
{
return
success
(
oauth2Manager
.
refreshAccessToken
(
refreshAccessTokenDTO
));
}
@Override
public
CommonResult
<
Boolean
>
removeToken
(
OAuth2RemoveTokenByUserReqDTO
removeTokenDTO
)
{
oauth2Manager
.
removeToken
(
removeTokenDTO
);
return
success
(
true
);
}
}
system-service-project/system-service-app/src/main/java/cn/iocoder/mall/systemservice/service/admin/AdminService.java
浏览文件 @
ef135447
...
...
@@ -81,34 +81,34 @@ public class AdminService {
return
DigestUtils
.
bcrypt
(
password
,
salt
);
}
public
void
updateAdmin
(
AdminUpdateBO
update
DT
O
)
{
public
void
updateAdmin
(
AdminUpdateBO
update
B
O
)
{
// 校验账号存在
AdminDO
admin
=
adminMapper
.
selectById
(
updateDT
O
.
getId
());
if
(
admin
==
null
)
{
AdminDO
admin
DO
=
adminMapper
.
selectById
(
updateB
O
.
getId
());
if
(
admin
DO
==
null
)
{
throw
ServiceExceptionUtil
.
exception
(
ADMIN_NOT_FOUND
);
}
// 校验是否为特殊账号,不允许编辑
if
(
AdminUsernameEnum
.
ADMIN
.
getUsername
().
equals
(
admin
.
getUsername
())
||
AdminUsernameEnum
.
DEMO
.
getUsername
().
equals
(
admin
.
getUsername
()))
{
if
(
AdminUsernameEnum
.
ADMIN
.
getUsername
().
equals
(
admin
DO
.
getUsername
())
||
AdminUsernameEnum
.
DEMO
.
getUsername
().
equals
(
admin
DO
.
getUsername
()))
{
throw
ServiceExceptionUtil
.
exception
(
ADMIN_ADMIN_CAN_NOT_UPDATE
);
}
// 校验账号唯一
if
(
StringUtils
.
hasText
(
update
DT
O
.
getUsername
()))
{
AdminDO
usernameAdmin
=
adminMapper
.
selectByUsername
(
update
DT
O
.
getUsername
());
if
(
usernameAdmin
!=
null
&&
!
usernameAdmin
.
getId
().
equals
(
update
DT
O
.
getId
()))
{
if
(
StringUtils
.
hasText
(
update
B
O
.
getUsername
()))
{
AdminDO
usernameAdmin
=
adminMapper
.
selectByUsername
(
update
B
O
.
getUsername
());
if
(
usernameAdmin
!=
null
&&
!
usernameAdmin
.
getId
().
equals
(
update
B
O
.
getId
()))
{
throw
ServiceExceptionUtil
.
exception
(
ADMIN_USERNAME_EXISTS
);
}
}
// 如果有更新状态,则校验是否已经是该状态
if
(
update
DTO
.
getStatus
()
!=
null
&&
updateDTO
.
getStatus
().
equals
(
admin
.
getStatus
()))
{
if
(
update
BO
.
getStatus
()
!=
null
&&
updateBO
.
getStatus
().
equals
(
adminDO
.
getStatus
()))
{
throw
ServiceExceptionUtil
.
exception
(
ADMIN_STATUS_EQUALS
);
}
// 更新到数据库
AdminDO
updateAdmin
=
AdminConvert
.
INSTANCE
.
convert
(
update
DT
O
);
AdminDO
updateAdmin
=
AdminConvert
.
INSTANCE
.
convert
(
update
B
O
);
// 如果更新密码,需要特殊加密
if
(
StringUtils
.
hasText
(
update
DT
O
.
getPassword
()))
{
if
(
StringUtils
.
hasText
(
update
B
O
.
getPassword
()))
{
String
passwordSalt
=
genPasswordSalt
();
String
password
=
encodePassword
(
update
DT
O
.
getPassword
(),
passwordSalt
);
String
password
=
encodePassword
(
update
B
O
.
getPassword
(),
passwordSalt
);
updateAdmin
.
setPassword
(
password
).
setPasswordSalt
(
passwordSalt
);
}
adminMapper
.
updateById
(
updateAdmin
);
...
...
@@ -119,65 +119,4 @@ public class AdminService {
return
AdminConvert
.
INSTANCE
.
convert
(
adminDO
);
}
//
// @Override
// public Map<Integer, Collection<RoleBO>> getAdminRolesMap(Collection<Integer> adminIds) {
// // 查询管理员拥有的角色关联数据
// List<AdminRoleDO> adminRoleList = adminRoleMapper.selectListByAdminIds(adminIds);
// if (adminRoleList.isEmpty()) {
// return Collections.emptyMap();
// }
// // 查询角色数据
// List<RoleBO> roleList = roleService.getRoleList(CollectionUtil.convertSet(adminRoleList, AdminRoleDO::getRoleId));
// Map<Integer, RoleBO> roleMap = CollectionUtil.convertMap(roleList, RoleBO::getId);
// // 拼接数据
// Multimap<Integer, RoleBO> result = ArrayListMultimap.create();
// adminRoleList.forEach(adminRole -> result.put(adminRole.getAdminId(), roleMap.get(adminRole.getRoleId())));
// return result.asMap();
// }
//
// @Override
// public List<RoleBO> getRoleList(Integer adminId) {
// // 查询管理员拥有的角色关联数据
// List<AdminRoleDO> adminRoleList = adminRoleMapper.selectByAdminId(adminId);
// if (adminRoleList.isEmpty()) {
// return Collections.emptyList();
// }
// // 查询角色数据
// return roleService.getRoleList(CollectionUtil.convertSet(adminRoleList, AdminRoleDO::getRoleId));
// }
//
// @Override
// @Transactional
// public Boolean assignAdminRole(Integer adminId, AdminAssignRoleDTO adminAssignRoleDTO) {
// // 校验账号存在
// AdminDO admin = adminMapper.selectById(adminAssignRoleDTO.getId());
// if (admin == null) {
// throw ServiceExceptionUtil.exception(AdminErrorCodeEnum.ADMIN_USERNAME_NOT_REGISTERED.getCode());
// }
// // 校验是否有不存在的角色
// if (!CollectionUtil.isEmpty(adminAssignRoleDTO.getRoleIds())) {
// List<RoleDO> roles = roleService.getRoles(adminAssignRoleDTO.getRoleIds());
// if (roles.size() != adminAssignRoleDTO.getRoleIds().size()) {
// throw ServiceExceptionUtil.exception(AdminErrorCodeEnum.ADMIN_ASSIGN_ROLE_NOT_EXISTS.getCode());
// }
// }
// // TODO 芋艿,这里先简单实现。即方式是,删除老的分配的角色关系,然后添加新的分配的角色关系
// // 标记管理员角色源关系都为删除
// adminRoleMapper.deleteByAdminId(adminAssignRoleDTO.getId());
// // 创建 RoleResourceDO 数组,并插入到数据库
// if (!CollectionUtil.isEmpty(adminAssignRoleDTO.getRoleIds())) {
// List<AdminRoleDO> adminRoleDOs = adminAssignRoleDTO.getRoleIds().stream().map(roleId -> {
// AdminRoleDO roleResource = new AdminRoleDO().setAdminId(adminAssignRoleDTO.getId()).setRoleId(roleId);
// roleResource.setCreateTime(new Date());
// roleResource.setDeleted(DeletedStatusEnum.DELETED_NO.getValue());
// return roleResource;
// }).collect(Collectors.toList());
// adminRoleMapper.insertList(adminRoleDOs);
// }
// // TODO 插入操作日志
// // 返回成功
// return true;
// }
}
system/pom.xml
浏览文件 @
ef135447
...
...
@@ -14,15 +14,11 @@
<packaging>
pom
</packaging>
<modules>
<module>
system-application
</module>
<!-- <module>system-sdk</module>-->
<!-- <module>system-service-api</module>-->
<!-- <module>system-service-impl</module>-->
<module>
system-rpc-api
</module>
<module>
system-rpc
</module>
<module>
system-rest
</module>
<module>
system-biz
</module>
<module>
system-biz-api
</module>
</modules>
<dependencyManagement>
...
...
system/system-application/pom.xml
deleted
100644 → 0
浏览文件 @
8edc49f4
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<parent>
<artifactId>
system
</artifactId>
<groupId>
cn.iocoder.mall
</groupId>
<version>
1.0-SNAPSHOT
</version>
</parent>
<modelVersion>
4.0.0
</modelVersion>
<artifactId>
system-application
</artifactId>
<dependencies>
<!-- Mall 相关 -->
<dependency>
<groupId>
cn.iocoder.mall
</groupId>
<artifactId>
system-rest
</artifactId>
<version>
1.0-SNAPSHOT
</version>
</dependency>
<dependency>
<groupId>
cn.iocoder.mall
</groupId>
<artifactId>
system-rpc
</artifactId>
<version>
1.0-SNAPSHOT
</version>
</dependency>
</dependencies>
</project>
system/system-application/src/main/java/cn/iocoder/mall/system/application/SystemApplication.java
deleted
100644 → 0
浏览文件 @
8edc49f4
package
cn
.
iocoder
.
mall
.
system
.
application
;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.boot.autoconfigure.SpringBootApplication
;
import
org.springframework.boot.context.config.ConfigFileApplicationListener
;
@SpringBootApplication
(
scanBasePackages
=
{
"cn.iocoder.mall.system"
})
public
class
SystemApplication
{
/**
* 设置需要读取的配置文件的名字。
* 基于 {@link org.springframework.boot.context.config.ConfigFileApplicationListener#CONFIG_NAME_PROPERTY} 实现。
*/
private
static
final
String
CONFIG_NAME_VALUE
=
"biz,rest,rpc,application"
;
public
static
void
main
(
String
[]
args
)
{
// 设置环境变量
System
.
setProperty
(
ConfigFileApplicationListener
.
CONFIG_NAME_PROPERTY
,
CONFIG_NAME_VALUE
);
// 启动 Spring Boot 应用
SpringApplication
.
run
(
SystemApplication
.
class
,
args
);
}
}
system/system-biz/src/main/java/cn/iocoder/mall/system/biz/convert/user/UserConvert.java
deleted
100644 → 0
浏览文件 @
8edc49f4
package
cn
.
iocoder
.
mall
.
system
.
biz
.
convert
.
user
;
import
cn.iocoder.common.framework.vo.PageResult
;
import
cn.iocoder.mall.system.biz.bo.ouath2.OAuth2AuthenticateBO
;
import
cn.iocoder.mall.system.biz.bo.user.UserAuthenticateBO
;
import
cn.iocoder.mall.system.biz.bo.user.UserBO
;
import
cn.iocoder.mall.system.biz.dataobject.admin.AdminDO
;
import
cn.iocoder.mall.system.biz.dataobject.user.UserDO
;
import
cn.iocoder.mall.system.biz.dto.user.UserUpdateDTO
;
import
cn.iocoder.mall.system.biz.dto.user.UserUpdateStatusDTO
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
org.mapstruct.Mapper
;
import
org.mapstruct.Mapping
;
import
org.mapstruct.factory.Mappers
;
@Mapper
public
interface
UserConvert
{
UserConvert
INSTANCE
=
Mappers
.
getMapper
(
UserConvert
.
class
);
UserBO
convert
(
UserDO
bean
);
/**
* 用户分页列表 - DOPage转换BO
* @param userDOPage
* @return
*/
@Mapping
(
source
=
"records"
,
target
=
"list"
)
PageResult
<
UserBO
>
convertToPage
(
IPage
<
UserDO
>
userDOPage
);
/**
* 更新用户信息 - DTO转换DO
* @param userUpdateDTO
* @return
*/
UserDO
convertToUserDO
(
UserUpdateDTO
userUpdateDTO
);
/**
* 更新用户状态 - DTO转换DO
* @param userUpdateStatusDTO
* @return
*/
UserDO
convertToUserDO
(
UserUpdateStatusDTO
userUpdateStatusDTO
);
}
system/system-biz/src/main/java/cn/iocoder/mall/system/biz/service/user/UserService.java
deleted
100644 → 0
浏览文件 @
8edc49f4
package
cn
.
iocoder
.
mall
.
system
.
biz
.
service
.
user
;
import
cn.iocoder.common.framework.vo.PageResult
;
import
cn.iocoder.mall.system.biz.bo.user.UserBO
;
import
cn.iocoder.mall.system.biz.dto.user.UserPageDTO
;
import
cn.iocoder.mall.system.biz.dto.user.UserUpdateDTO
;
import
cn.iocoder.mall.system.biz.dto.user.UserUpdateStatusDTO
;
import
org.springframework.validation.annotation.Validated
;
import
javax.validation.Valid
;
/**
* 用户 Service 接口
*/
@Validated
public
interface
UserService
{
/**
* 根据条件分页获取用户列表
* @param userPageDTO
* @return
*/
PageResult
<
UserBO
>
getUserPage
(
UserPageDTO
userPageDTO
);
/**
* 更新用户信息
* @param userUpdateDTO
* @return
*/
Boolean
updateUserInfo
(
@Valid
UserUpdateDTO
userUpdateDTO
);
/**
* 更新用户状态
* @param userUpdateStatusDTO
* @return
*/
Boolean
updateUserStatus
(
@Valid
UserUpdateStatusDTO
userUpdateStatusDTO
);
}
system/system-biz/src/main/java/cn/iocoder/mall/system/biz/service/user/UserServiceImpl.java
deleted
100644 → 0
浏览文件 @
8edc49f4
package
cn
.
iocoder
.
mall
.
system
.
biz
.
service
.
user
;
import
cn.iocoder.common.framework.util.ServiceExceptionUtil
;
import
cn.iocoder.common.framework.vo.PageResult
;
import
cn.iocoder.mall.system.biz.bo.ouath2.OAuth2AuthenticateBO
;
import
cn.iocoder.mall.system.biz.bo.user.UserAuthenticateBO
;
import
cn.iocoder.mall.system.biz.bo.user.UserBO
;
import
cn.iocoder.mall.system.biz.convert.user.UserConvert
;
import
cn.iocoder.mall.system.biz.dao.user.UserMapper
;
import
cn.iocoder.mall.system.biz.dataobject.user.UserDO
;
import
cn.iocoder.mall.system.biz.dto.oatuh2.OAuth2MobileCodeAuthenticateDTO
;
import
cn.iocoder.mall.system.biz.dto.user.UserPageDTO
;
import
cn.iocoder.mall.system.biz.dto.user.UserUpdateDTO
;
import
cn.iocoder.mall.system.biz.dto.user.UserUpdateStatusDTO
;
import
cn.iocoder.mall.system.biz.enums.user.UserStatusEnum
;
import
cn.iocoder.mall.system.biz.service.oauth2.OAuth2Service
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.Arrays
;
import
static
cn
.
iocoder
.
mall
.
system
.
biz
.
enums
.
SystemErrorCodeEnum
.*;
@Service
public
class
UserServiceImpl
implements
UserService
{
@Autowired
private
UserMapper
userMapper
;
/**
* 根据条件分页获取用户列表
* @param userPageDTO
* @return
*/
@Override
public
PageResult
<
UserBO
>
getUserPage
(
UserPageDTO
userPageDTO
)
{
return
UserConvert
.
INSTANCE
.
convertToPage
(
userMapper
.
selectUserPage
(
userPageDTO
));
}
/**
* 更新用户信息
* @param userUpdateDTO
* @return
*/
@Override
public
Boolean
updateUserInfo
(
UserUpdateDTO
userUpdateDTO
)
{
// 查询用户是否存在
UserDO
userDO
=
userMapper
.
selectById
(
userUpdateDTO
.
getId
());
if
(
null
==
userDO
)
{
throw
ServiceExceptionUtil
.
exception
(
USER_NOT_EXISTS
);
}
// 更新用户信息
UserDO
updateDO
=
UserConvert
.
INSTANCE
.
convertToUserDO
(
userUpdateDTO
);
userMapper
.
updateById
(
updateDO
);
// TODO 伟帆 操作日志
return
true
;
}
/**
* 更新用户状态
* @param userUpdateStatusDTO
* @return
*/
@Override
public
Boolean
updateUserStatus
(
UserUpdateStatusDTO
userUpdateStatusDTO
)
{
// 查询用户是否存在
UserDO
userDO
=
userMapper
.
selectById
(
userUpdateStatusDTO
.
getId
());
if
(
null
==
userDO
)
{
throw
ServiceExceptionUtil
.
exception
(
USER_NOT_EXISTS
);
}
// 判断更新状态是否存在
if
(
null
!=
userUpdateStatusDTO
.
getStatus
()
&&
Arrays
.
stream
(
UserStatusEnum
.
ARRAYS
).
noneMatch
(
status
->
status
==
userUpdateStatusDTO
.
getStatus
()))
{
throw
ServiceExceptionUtil
.
exception
(
USER_STATUS_NOT_EXISTS
);
}
// 如果状态相同,则返回错误
if
(
null
!=
userUpdateStatusDTO
.
getStatus
()
&&
userUpdateStatusDTO
.
getStatus
().
equals
(
userDO
.
getStatus
()))
{
throw
ServiceExceptionUtil
.
exception
(
USER_STATUS_EQUALS
);
}
// 更新用户信息
UserDO
updateStatusDO
=
UserConvert
.
INSTANCE
.
convertToUserDO
(
userUpdateStatusDTO
);
userMapper
.
updateById
(
updateStatusDO
);
// TODO 伟帆 操作日志
return
true
;
}
}
system/system-
application
/src/main/resources/application.yaml
→
system/system-
biz
/src/main/resources/application.yaml
浏览文件 @
ef135447
File moved
system/system-rest/src/main/java/cn/iocoder/mall/system/rest/controller/admin/AdminsUserController.java
deleted
100644 → 0
浏览文件 @
8edc49f4
package
cn
.
iocoder
.
mall
.
system
.
rest
.
controller
.
admin
;
import
cn.iocoder.common.framework.enums.MallConstants
;
import
cn.iocoder.common.framework.vo.CommonResult
;
import
cn.iocoder.common.framework.vo.PageResult
;
import
cn.iocoder.mall.system.biz.bo.user.UserBO
;
import
cn.iocoder.mall.system.biz.service.user.UserService
;
import
cn.iocoder.mall.system.rest.convert.admin.AdminsUserConvert
;
import
cn.iocoder.mall.system.rest.request.admin.AdminsUserPageRequest
;
import
cn.iocoder.mall.system.rest.request.admin.AdminsUserUpdateRequest
;
import
cn.iocoder.mall.system.rest.request.admin.AdminsUserUpdateStatusRequest
;
import
cn.iocoder.mall.system.rest.response.admin.AdminsUserPageResponse
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
static
cn
.
iocoder
.
common
.
framework
.
vo
.
CommonResult
.
success
;
/**
* @Author: jiangweifan
* @Date: 2020/5/12
* @Description: 管理员 - 用户信息
*/
@RestController
@RequestMapping
(
MallConstants
.
ROOT_PATH_ADMIN
+
"/user-info"
)
@Api
(
tags
=
"管理员 - 用户信息 API"
)
public
class
AdminsUserController
{
@Autowired
private
UserService
userService
;
@GetMapping
(
"/page"
)
@ApiOperation
(
value
=
"用户分页列表"
)
public
CommonResult
<
PageResult
<
AdminsUserPageResponse
>>
page
(
AdminsUserPageRequest
adminsUserPageRequest
)
{
PageResult
<
UserBO
>
userPage
=
userService
.
getUserPage
(
AdminsUserConvert
.
INSTANCE
.
convertToPageDTO
(
adminsUserPageRequest
));
return
success
(
AdminsUserConvert
.
INSTANCE
.
convertToPageResponse
(
userPage
));
}
@PostMapping
(
"/update"
)
@ApiOperation
(
value
=
"更新用户基本信息"
)
public
CommonResult
<
Boolean
>
update
(
AdminsUserUpdateRequest
adminsUserUpdateRequest
)
{
return
success
(
userService
.
updateUserInfo
(
AdminsUserConvert
.
INSTANCE
.
convertToUpdateDTO
(
adminsUserUpdateRequest
)));
}
@PostMapping
(
"/update_status"
)
@ApiOperation
(
value
=
"更新用户状态"
)
public
CommonResult
<
Boolean
>
updateStatus
(
AdminsUserUpdateStatusRequest
adminsUserUpdateStatusRequest
)
{
return
success
(
userService
.
updateUserStatus
(
AdminsUserConvert
.
INSTANCE
.
convertToUpdateStatusDTO
(
adminsUserUpdateStatusRequest
)));
}
}
system/system-rest/src/main/java/cn/iocoder/mall/system/rest/convert/admin/AdminsUserConvert.java
deleted
100644 → 0
浏览文件 @
8edc49f4
package
cn
.
iocoder
.
mall
.
system
.
rest
.
convert
.
admin
;
import
cn.iocoder.common.framework.vo.PageResult
;
import
cn.iocoder.mall.system.biz.bo.user.UserBO
;
import
cn.iocoder.mall.system.biz.dto.user.UserPageDTO
;
import
cn.iocoder.mall.system.biz.dto.user.UserUpdateDTO
;
import
cn.iocoder.mall.system.biz.dto.user.UserUpdateStatusDTO
;
import
cn.iocoder.mall.system.rest.request.admin.AdminsUserPageRequest
;
import
cn.iocoder.mall.system.rest.request.admin.AdminsUserUpdateRequest
;
import
cn.iocoder.mall.system.rest.request.admin.AdminsUserUpdateStatusRequest
;
import
cn.iocoder.mall.system.rest.response.admin.AdminsUserPageResponse
;
import
org.mapstruct.Mapper
;
import
org.mapstruct.factory.Mappers
;
/**
* @Author: jiangweifan
* @Date: 2020/5/12
* @Description: 管理后台 - 用户数据转换
*/
@Mapper
public
interface
AdminsUserConvert
{
AdminsUserConvert
INSTANCE
=
Mappers
.
getMapper
(
AdminsUserConvert
.
class
);
/**
* 分页获取用户列表 - Request转DTO
* @param adminsUserPageRequest
* @return
*/
UserPageDTO
convertToPageDTO
(
AdminsUserPageRequest
adminsUserPageRequest
);
/**
* 更新用户信息 - Request转DTO
* @param adminsUserUpdateRequest
* @return
*/
UserUpdateDTO
convertToUpdateDTO
(
AdminsUserUpdateRequest
adminsUserUpdateRequest
);
/**
* 更新用户状态 - Request转DTO
* @param adminsUserUpdateStatusRequest
* @return
*/
UserUpdateStatusDTO
convertToUpdateStatusDTO
(
AdminsUserUpdateStatusRequest
adminsUserUpdateStatusRequest
);
/**
* 分页获取用户列表 - BO转Response
* @param userPage
* @return
*/
PageResult
<
AdminsUserPageResponse
>
convertToPageResponse
(
PageResult
<
UserBO
>
userPage
);
}
system/system-rest/src/main/java/cn/iocoder/mall/system/rest/convert/systemlog/AccessLogConvert.java
deleted
100644 → 0
浏览文件 @
8edc49f4
package
cn
.
iocoder
.
mall
.
system
.
rest
.
convert
.
systemlog
;
import
cn.iocoder.common.framework.vo.PageResult
;
import
cn.iocoder.mall.system.biz.bo.systemlog.AccessLogBO
;
import
cn.iocoder.mall.system.rest.response.systemlog.AccessLogPageResponse
;
import
org.mapstruct.Mapper
;
import
org.mapstruct.Mappings
;
import
org.mapstruct.factory.Mappers
;
/**
* @author:ycjx
* @descriptio
* @create:2019-06-23 17:36
*/
@Mapper
public
interface
AccessLogConvert
{
AccessLogConvert
INSTANCE
=
Mappers
.
getMapper
(
AccessLogConvert
.
class
);
@Mappings
({})
// TODO FROM 芋艿 to 2447007062:注意空行哟;另外,如果不需要专门 mapping,可以不添加该注解,嘿嘿。
PageResult
<
AccessLogPageResponse
>
convert
(
PageResult
<
AccessLogBO
>
result
);
}
system/system-rest/src/main/java/cn/iocoder/mall/system/rest/request/errorcode/ErrorCodeAddRequest.java
deleted
100644 → 0
浏览文件 @
8edc49f4
package
cn
.
iocoder
.
mall
.
system
.
rest
.
request
.
errorcode
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
javax.validation.constraints.NotEmpty
;
@ApiModel
(
"管理员 - 错误码模块 - 添加错误码 Request"
)
@Data
@Accessors
(
chain
=
true
)
public
class
ErrorCodeAddRequest
{
@ApiModelProperty
(
value
=
"错误码信息"
,
required
=
true
,
example
=
"系统管理员"
)
@NotEmpty
(
message
=
"错误码信息不能为空"
)
private
String
message
;
@ApiModelProperty
(
value
=
"错误码编码"
,
example
=
"SUPER_ADMIN"
)
@NotEmpty
(
message
=
"错误码编码不能为空"
)
private
Integer
code
;
@ApiModelProperty
(
value
=
"错误码分组,字典表获取"
)
@NotEmpty
(
message
=
"错误码分组不能为空"
)
private
Integer
group
;
@ApiModelProperty
(
value
=
"错误码角色,系统内置(枚举)还是自定义"
)
@NotEmpty
(
message
=
"错误码角色不能空"
)
private
Integer
type
;
}
system/system-rest/src/main/java/cn/iocoder/mall/system/rest/request/errorcode/ErrorCodePageRequest.java
deleted
100644 → 0
浏览文件 @
8edc49f4
package
cn
.
iocoder
.
mall
.
system
.
rest
.
request
.
errorcode
;
import
io.swagger.annotations.ApiModel
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
/**
* @author ding
*/
@ApiModel
(
"管理员 - 错误码模块 - 错误码分页 Request"
)
@Data
@Accessors
(
chain
=
true
)
public
class
ErrorCodePageRequest
{
// TODO FROM 芋艿 to 鱿鱼须:分页参数?
// TODO FROM 芋艿 to 鱿鱼须:对于 rest 的接口,要区分下是给 Admins 管理员还是 Users 用户的
}
system/system-rest/src/main/java/cn/iocoder/mall/system/rest/request/errorcode/ErrorCodeUpdateRequest.java
deleted
100644 → 0
浏览文件 @
8edc49f4
package
cn
.
iocoder
.
mall
.
system
.
rest
.
request
.
errorcode
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
javax.validation.constraints.NotEmpty
;
import
javax.validation.constraints.NotNull
;
/**
* 类 描 述:错误码模块
* @author ding
*/
@ApiModel
(
"管理员 - 错误码模块 - 修改错误码 Request"
)
@Data
@Accessors
(
chain
=
true
)
public
class
ErrorCodeUpdateRequest
{
@ApiModelProperty
(
value
=
"错误码编号"
,
required
=
true
,
example
=
"1"
)
@NotNull
(
message
=
"错误码不能为空"
)
private
Integer
id
;
@ApiModelProperty
(
value
=
"错误码信息"
,
required
=
true
,
example
=
"系统管理员"
)
@NotEmpty
(
message
=
"错误码信息不能为空"
)
private
String
message
;
@ApiModelProperty
(
value
=
"错误码编码"
,
example
=
"SUPER_ADMIN"
)
@NotEmpty
(
message
=
"错误码编码不能为空"
)
private
Integer
code
;
}
system/system-rest/src/main/java/cn/iocoder/mall/system/rest/response/authorization/AdminsAuthorizationMenuTreeResponse.java
deleted
100644 → 0
浏览文件 @
8edc49f4
package
cn
.
iocoder
.
mall
.
system
.
rest
.
response
.
authorization
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
java.util.List
;
@ApiModel
(
value
=
"管理员 - 授权模块 - 菜单资源树 Response"
,
description
=
"一般用于首页菜单树"
)
@Data
@Accessors
(
chain
=
true
)
public
class
AdminsAuthorizationMenuTreeResponse
{
@ApiModelProperty
(
value
=
"菜单编号"
,
required
=
true
,
example
=
"1"
)
private
Integer
id
;
@ApiModelProperty
(
value
=
"菜单名"
,
required
=
true
,
example
=
"商品管理"
)
private
String
name
;
@ApiModelProperty
(
value
=
"前端路由"
,
required
=
true
,
example
=
"/order/list"
)
private
String
route
;
@ApiModelProperty
(
value
=
"菜单图标"
,
required
=
true
,
example
=
"user"
)
private
String
icon
;
/**
* 子节点数组
*/
private
List
<
AdminsAuthorizationMenuTreeResponse
>
children
;
}
system/system-rest/src/main/java/cn/iocoder/mall/system/rest/response/authorization/AdminsAuthorizationRoleResourceTreeResponse.java
deleted
100644 → 0
浏览文件 @
8edc49f4
package
cn
.
iocoder
.
mall
.
system
.
rest
.
response
.
authorization
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
java.util.List
;
@ApiModel
(
value
=
"管理员 - 授权模块 - 角色拥有的资源树 Response"
)
@Data
@Accessors
(
chain
=
true
)
public
class
AdminsAuthorizationRoleResourceTreeResponse
{
@ApiModelProperty
(
value
=
"菜单编号"
,
required
=
true
,
example
=
"1"
)
private
Integer
id
;
@ApiModelProperty
(
value
=
"菜单名"
,
required
=
true
,
example
=
"商品管理"
)
private
String
name
;
@ApiModelProperty
(
value
=
"是否分配"
,
required
=
true
,
notes
=
"即角色是否拥有该资源"
)
private
Boolean
assigned
;
/**
* 子节点数组
*/
private
List
<
AdminsAuthorizationRoleResourceTreeResponse
>
children
;
}
system/system-rest/src/main/java/cn/iocoder/mall/system/rest/response/authorization/AdminsResourceTreeResponse.java
deleted
100644 → 0
浏览文件 @
8edc49f4
package
cn
.
iocoder
.
mall
.
system
.
rest
.
response
.
authorization
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
java.util.List
;
@ApiModel
(
"管理员 - 授权模块 - 菜单资源树 Response"
)
@Data
@Accessors
(
chain
=
true
)
public
class
AdminsResourceTreeResponse
{
@ApiModelProperty
(
value
=
"菜单编号"
,
required
=
true
,
example
=
"1"
)
private
Integer
id
;
@ApiModelProperty
(
value
=
"菜单名"
,
required
=
true
,
example
=
"商品管理"
)
private
String
name
;
@ApiModelProperty
(
value
=
"权限标识"
,
example
=
"/order/list"
)
private
String
permission
;
@ApiModelProperty
(
value
=
"资源类型"
,
required
=
true
,
example
=
"1-菜单;2-按钮"
)
private
Integer
type
;
@ApiModelProperty
(
value
=
"排序"
,
required
=
true
,
example
=
"1"
)
private
Integer
sort
;
@ApiModelProperty
(
value
=
"父菜单编号"
,
required
=
true
,
example
=
"1"
,
notes
=
"如果无父菜单,则值为 0"
)
private
Integer
pid
;
@ApiModelProperty
(
value
=
"前端路由"
,
example
=
"/order/list"
)
private
String
route
;
@ApiModelProperty
(
value
=
"菜单图标"
,
example
=
"user"
)
private
String
icon
;
/**
* 子节点数组
*/
private
List
<
AdminsResourceTreeResponse
>
children
;
}
system/system-rest/src/main/java/cn/iocoder/mall/system/rest/response/errorcode/ErrorCodePageResponse.java
deleted
100644 → 0
浏览文件 @
8edc49f4
package
cn
.
iocoder
.
mall
.
system
.
rest
.
response
.
errorcode
;
import
io.swagger.annotations.ApiModel
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
java.util.Date
;
/**
* 类 描 述:错误码模块
* @author ding
*/
@ApiModel
(
"管理员 - 错误码模块 - 查询错误码 Request"
)
@Data
@Accessors
(
chain
=
true
)
public
class
ErrorCodePageResponse
{
/**
* 错误码编号
*/
private
Integer
id
;
/**
* 错误码编码
*/
private
Integer
code
;
/**
* 错误码错误信息
*/
private
String
message
;
/**
* 添加时间
*/
private
Date
createTime
;
}
system/system-rest/src/main/java/cn/iocoder/mall/system/rest/response/systemlog/AccessLogPageResponse.java
deleted
100644 → 0
浏览文件 @
8edc49f4
package
cn
.
iocoder
.
mall
.
system
.
rest
.
response
.
systemlog
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
java.util.Date
;
/**
* @author mxc
* @date 2020/5/11 22:11
*/
@ApiModel
(
"访问日志 VO"
)
@Data
@Accessors
(
chain
=
true
)
public
class
AccessLogPageResponse
{
@ApiModelProperty
(
value
=
"链路追踪编号"
,
required
=
true
,
example
=
"1"
)
private
String
traceId
;
@ApiModelProperty
(
value
=
"账号编号"
,
required
=
true
,
example
=
"1"
)
private
Integer
accountId
;;
@ApiModelProperty
(
value
=
"应用名"
,
required
=
true
,
example
=
"1"
)
private
String
applicationName
;
@ApiModelProperty
(
value
=
"访问地址"
,
required
=
true
,
example
=
"1"
)
private
String
uri
;
@ApiModelProperty
(
value
=
"请求参数"
,
required
=
true
,
example
=
"1"
)
private
String
queryString
;
@ApiModelProperty
(
value
=
"http 请求方法"
,
required
=
true
,
example
=
"1"
)
private
String
method
;
@ApiModelProperty
(
value
=
"User-Agent "
,
required
=
true
,
example
=
"1"
)
private
String
userAgent
;
@ApiModelProperty
(
value
=
"ip"
,
required
=
true
,
example
=
"1"
)
private
String
ip
;
@ApiModelProperty
(
value
=
"请求时间"
,
required
=
true
,
example
=
"1"
)
private
Date
startTime
;
@ApiModelProperty
(
value
=
"响应时长"
,
required
=
true
,
example
=
"1"
)
private
Integer
responseTime
;
@ApiModelProperty
(
value
=
"错误码"
,
required
=
true
,
example
=
"1"
)
private
Integer
errorCode
;
}
system/system-rpc-api/pom.xml
deleted
100644 → 0
浏览文件 @
8edc49f4
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<parent>
<artifactId>
system
</artifactId>
<groupId>
cn.iocoder.mall
</groupId>
<version>
1.0-SNAPSHOT
</version>
</parent>
<modelVersion>
4.0.0
</modelVersion>
<artifactId>
system-rpc-api
</artifactId>
<dependencies>
<!-- Mall 相关 -->
<dependency>
<groupId>
cn.iocoder.mall
</groupId>
<artifactId>
system-biz-api
</artifactId>
<version>
1.0-SNAPSHOT
</version>
</dependency>
<!-- 工具类相关 -->
<dependency>
<groupId>
javax.validation
</groupId>
<artifactId>
validation-api
</artifactId>
</dependency>
<dependency>
<groupId>
org.projectlombok
</groupId>
<artifactId>
lombok
</artifactId>
</dependency>
</dependencies>
</project>
system/system-rpc-api/src/main/java/cn/iocoder/mall/system/rpc/api/user/UserRPC.java
deleted
100644 → 0
浏览文件 @
8edc49f4
package
cn
.
iocoder
.
mall
.
system
.
rpc
.
api
.
user
;
import
cn.iocoder.common.framework.vo.CommonResult
;
import
cn.iocoder.mall.system.rpc.response.user.UserResponse
;
/**
* User RPC 接口
*/
public
interface
UserRPC
{
// CommonResult<UserResponse> getUser(Integer id);
CommonResult
<
UserResponse
>
getUserByAccountId
(
Integer
accountId
);
}
system/system-rpc-api/src/main/java/cn/iocoder/mall/system/rpc/response/user/UserResponse.java
deleted
100644 → 0
浏览文件 @
8edc49f4
package
cn
.
iocoder
.
mall
.
system
.
rpc
.
response
.
user
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
java.io.Serializable
;
/**
* User 模块 - User 信息 Response
*/
@Data
@Accessors
(
chain
=
true
)
public
class
UserResponse
implements
Serializable
{
/**
* 用户编号
*/
private
Integer
id
;
}
system/system-rpc/pom.xml
deleted
100644 → 0
浏览文件 @
8edc49f4
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<parent>
<artifactId>
system
</artifactId>
<groupId>
cn.iocoder.mall
</groupId>
<version>
1.0-SNAPSHOT
</version>
</parent>
<modelVersion>
4.0.0
</modelVersion>
<artifactId>
system-rpc
</artifactId>
<dependencies>
<!-- Mall 相关 -->
<dependency>
<groupId>
cn.iocoder.mall
</groupId>
<artifactId>
system-rpc-api
</artifactId>
<version>
1.0-SNAPSHOT
</version>
</dependency>
<dependency>
<groupId>
cn.iocoder.mall
</groupId>
<artifactId>
system-biz
</artifactId>
<version>
1.0-SNAPSHOT
</version>
</dependency>
<!-- RPC 相关 -->
<dependency>
<groupId>
com.alibaba.cloud
</groupId>
<artifactId>
spring-cloud-starter-dubbo
</artifactId>
</dependency>
<!-- Registry 和 Config 相关 -->
<dependency>
<groupId>
com.alibaba.cloud
</groupId>
<artifactId>
spring-cloud-starter-alibaba-nacos-discovery
</artifactId>
</dependency>
</dependencies>
</project>
system/system-rpc/src/main/java/cn/iocoder/mall/system/rpc/convert/user/UserConvert.java
deleted
100644 → 0
浏览文件 @
8edc49f4
package
cn
.
iocoder
.
mall
.
system
.
rpc
.
convert
.
user
;
import
cn.iocoder.mall.system.biz.bo.user.UserBO
;
import
cn.iocoder.mall.system.rpc.response.user.UserResponse
;
import
org.mapstruct.Mapper
;
import
org.mapstruct.factory.Mappers
;
@Mapper
public
interface
UserConvert
{
UserConvert
INSTANCE
=
Mappers
.
getMapper
(
UserConvert
.
class
);
UserResponse
convert
(
UserBO
bean
);
}
system/system-rpc/src/main/java/cn/iocoder/mall/system/rpc/rpc/user/UserRPCImpl.java
deleted
100644 → 0
浏览文件 @
8edc49f4
package
cn
.
iocoder
.
mall
.
system
.
rpc
.
rpc
.
user
;
import
cn.iocoder.common.framework.vo.CommonResult
;
import
cn.iocoder.mall.system.biz.bo.user.UserBO
;
import
cn.iocoder.mall.system.biz.service.user.UserService
;
import
cn.iocoder.mall.system.rpc.api.user.UserRPC
;
import
cn.iocoder.mall.system.rpc.convert.user.UserConvert
;
import
cn.iocoder.mall.system.rpc.response.user.UserResponse
;
import
org.apache.dubbo.config.annotation.Service
;
import
org.springframework.beans.factory.annotation.Autowired
;
@Service
(
version
=
"${dubbo.provider.UserRPC.version}"
,
validation
=
"true"
)
public
class
UserRPCImpl
implements
UserRPC
{
@Autowired
private
UserService
userService
;
@Override
public
CommonResult
<
UserResponse
>
getUserByAccountId
(
Integer
accountId
)
{
UserBO
userBO
=
userService
.
getUserByAccountId
(
accountId
);
return
CommonResult
.
success
(
UserConvert
.
INSTANCE
.
convert
(
userBO
));
}
}
system/system-rpc/src/main/resources/rpc-local.yaml
deleted
100644 → 0
浏览文件 @
8edc49f4
spring
:
# Spring Cloud 配置项
cloud
:
nacos
:
# Spring Cloud Nacos Discovery 配置项
discovery
:
server-addr
:
400-infra.server.iocoder.cn:8848
# Nacos 服务器地址
namespace
:
local
# Nacos 命名空间
# Dubbo 配置项
dubbo
:
# Dubbo 注册中心
registry
:
address
:
spring-cloud://400-infra.server.iocoder.cn:8848
# 指定 Dubbo 服务注册中心的地址
system/system-rpc/src/main/resources/rpc-test.yaml
deleted
100644 → 0
浏览文件 @
8edc49f4
spring
:
# Spring Cloud 配置项
cloud
:
nacos
:
# Spring Cloud Nacos Discovery 配置项
discovery
:
server-addr
:
s1.iocoder.cn:8848
# Nacos 服务器地址
namespace
:
test
# Nacos 命名空间
# Dubbo 配置项
dubbo
:
# Dubbo 注册中心
registry
:
address
:
spring-cloud://s1.iocoder.cn:8848
# 指定 Dubbo 服务注册中心的地址
system/system-rpc/src/main/resources/rpc.yaml
deleted
100644 → 0
浏览文件 @
8edc49f4
# Dubbo 配置项
dubbo
:
# Spring Cloud Alibaba Dubbo 专属配置
cloud
:
subscribed-services
:
'
'
# 设置订阅的应用列表,默认为 * 订阅所有应用
# Dubbo 提供者的协议
protocol
:
name
:
dubbo
port
:
-1
# Dubbo 提供服务的扫描基础包
scan
:
base-packages
:
cn.iocoder.mall.system.rpc.rpc
# Dubbo 服务提供者的配置
provider
:
filter
:
-exception
SystemLogRPC
:
version
:
1.0.0
OAuth2RPC
:
version
:
1.0.0
AuthorizationRPC
:
version
:
1.0.0
AdminRPC
:
version
:
1.0.0
UserRPC
:
version
:
1.0.0
UserAddressRPC
:
version
:
1.0.0
ErrorCodeRPC
:
version
:
1.0.0
# Dubbo 服务消费者的配置
consumer
:
SystemLogRPC
:
# 用于 AccessLogInterceptor 等拦截器,记录 HTTP API 请求的访问日志
version
:
1.0.0
OAuth2RPC
:
# 用于 AccountAuthInterceptor 拦截器,执行认证
version
:
1.0.0
AuthorizationRPC
:
# 用于 AccountAuthInterceptor 拦截器,执行鉴权(权限验证)
version
:
1.0.0
AdminRPC
:
version
:
1.0.0
UserRPC
:
version
:
1.0.0
ErrorCodeRPC
:
version
:
1.0.0
user-service-project/pom.xml
浏览文件 @
ef135447
...
...
@@ -34,6 +34,12 @@
<version>
1.0-SNAPSHOT
</version>
</dependency>
<dependency>
<groupId>
cn.iocoder.mall
</groupId>
<artifactId>
system-service-api
</artifactId>
<version>
1.0-SNAPSHOT
</version>
</dependency>
<!-- 自身项目 -->
<dependency>
<groupId>
cn.iocoder.mall
</groupId>
...
...
user-service-project/user-service-api/src/main/java/cn/iocoder/mall/userservice/enums/UserErrorCodeConstants.java
浏览文件 @
ef135447
...
...
@@ -24,7 +24,7 @@ public interface UserErrorCodeConstants {
// ========== 用户信息模块 1004004100 ==========
ErrorCode
USER_NOT_EXISTS
=
new
ErrorCode
(
1004004100
,
"用户不存在"
);
ErrorCode
USER_STATUS_NOT_EXISTS
=
new
ErrorCode
(
1004004101
,
"用户状态不存在"
);
ErrorCode
USER_STATUS_EQUALS
=
new
ErrorCode
(
1004004101
,
"用户已经是该状态"
);
ErrorCode
USER_MOBILE_EXISTS
=
new
ErrorCode
(
1004004102
,
"手机号已经存在"
);
}
user-service-project/user-service-api/src/main/java/cn/iocoder/mall/userservice/rpc/sms/UserSmsCodeRpc.java
浏览文件 @
ef135447
package
cn
.
iocoder
.
mall
.
userservice
.
rpc
.
sms
;
import
cn.iocoder.common.framework.vo.CommonResult
;
import
cn.iocoder.mall.userservice.rpc.sms.
vo.UserSendSmsCode
DTO
;
import
cn.iocoder.mall.userservice.rpc.sms.
vo.UserVerifySmsCode
DTO
;
import
cn.iocoder.mall.userservice.rpc.sms.
dto.UserSendSmsCodeReq
DTO
;
import
cn.iocoder.mall.userservice.rpc.sms.
dto.UserVerifySmsCodeReq
DTO
;
/**
* 用户短信验证码 Rpc 接口
*/
public
interface
UserSmsCodeRpc
{
CommonResult
<
Boolean
>
sendSmsCode
(
UserSendSmsCodeDTO
sendSmsCodeDTO
);
CommonResult
<
Boolean
>
sendSmsCode
(
UserSendSmsCode
Req
DTO
sendSmsCodeDTO
);
CommonResult
<
Boolean
>
verifySmsCode
(
UserVerifySmsCodeDTO
verifySmsCodeDTO
);
CommonResult
<
Boolean
>
verifySmsCode
(
UserVerifySmsCode
Req
DTO
verifySmsCodeDTO
);
}
user-service-project/user-service-api/src/main/java/cn/iocoder/mall/userservice/rpc/sms/
vo/UserSendSmsCode
DTO.java
→
user-service-project/user-service-api/src/main/java/cn/iocoder/mall/userservice/rpc/sms/
dto/UserSendSmsCodeReq
DTO.java
浏览文件 @
ef135447
package
cn
.
iocoder
.
mall
.
userservice
.
rpc
.
sms
.
v
o
;
package
cn
.
iocoder
.
mall
.
userservice
.
rpc
.
sms
.
dt
o
;
import
cn.iocoder.common.framework.validator.InEnum
;
import
cn.iocoder.mall.userservice.enums.sms.UserSmsSceneEnum
;
...
...
@@ -10,12 +10,12 @@ import javax.validation.constraints.NotNull;
import
java.io.Serializable
;
/**
* 用户发送短信验证码 DTO
* 用户发送短信验证码
Request
DTO
*/
@Data
@Accessors
(
chain
=
true
)
@Builder
public
class
UserSendSmsCodeDTO
implements
Serializable
{
public
class
UserSendSmsCode
Req
DTO
implements
Serializable
{
/**
* 手机号码
...
...
user-service-project/user-service-api/src/main/java/cn/iocoder/mall/userservice/rpc/sms/
vo/UserVerifySmsCode
DTO.java
→
user-service-project/user-service-api/src/main/java/cn/iocoder/mall/userservice/rpc/sms/
dto/UserVerifySmsCodeReq
DTO.java
浏览文件 @
ef135447
package
cn
.
iocoder
.
mall
.
userservice
.
rpc
.
sms
.
v
o
;
package
cn
.
iocoder
.
mall
.
userservice
.
rpc
.
sms
.
dt
o
;
import
cn.iocoder.common.framework.validator.InEnum
;
import
cn.iocoder.mall.userservice.enums.sms.UserSmsSceneEnum
;
...
...
@@ -10,12 +10,12 @@ import javax.validation.constraints.NotNull;
import
java.io.Serializable
;
/**
* 用户校验验证码 DTO
* 用户校验验证码
Request
DTO
*/
@Data
@Accessors
(
chain
=
true
)
@Builder
public
class
UserVerifySmsCodeDTO
implements
Serializable
{
public
class
UserVerifySmsCode
Req
DTO
implements
Serializable
{
/**
* 手机号码
...
...
user-service-project/user-service-api/src/main/java/cn/iocoder/mall/userservice/rpc/user/UserRpc.java
浏览文件 @
ef135447
package
cn
.
iocoder
.
mall
.
userservice
.
rpc
.
user
;
import
cn.iocoder.common.framework.vo.CommonResult
;
import
cn.iocoder.mall.userservice.rpc.user.dto.UserCreateDTO
;
import
cn.iocoder.mall.userservice.rpc.user.vo.UserVO
;
import
cn.iocoder.common.framework.vo.PageResult
;
import
cn.iocoder.mall.userservice.rpc.user.dto.UserCreateReqDTO
;
import
cn.iocoder.mall.userservice.rpc.user.dto.UserPageReqDTO
;
import
cn.iocoder.mall.userservice.rpc.user.dto.UserRespDTO
;
import
cn.iocoder.mall.userservice.rpc.user.dto.UserUpdateReqDTO
;
import
java.util.List
;
public
interface
UserRpc
{
CommonResult
<
UserVO
>
getUser
(
Integer
id
);
/**
* 获得用户
*
* @param userId 用户编号
* @return 用户
*/
CommonResult
<
UserRespDTO
>
getUser
(
Integer
userId
);
/**
* 基于手机号创建用户。
* 如果用户已经存在,则直接进行返回
*
* @param createDTO 创建用户 DTO
* @return 用户信息
*/
CommonResult
<
UserRespDTO
>
createUserIfAbsent
(
UserCreateReqDTO
createDTO
);
/**
* 更新用户
*
* @param updateDTO 更新用户 DTO
*/
CommonResult
<
Boolean
>
updateUser
(
UserUpdateReqDTO
updateDTO
);
/**
* 获得用户列表
*
* @param userIds 用户编号列表
* @return 用户列表
*/
CommonResult
<
List
<
UserRespDTO
>>
listUsers
(
List
<
Integer
>
userIds
);
CommonResult
<
UserVO
>
createUserIfAbsent
(
UserCreateDTO
createDTO
);
/**
* 获得用户分页
*
* @param pageDTO 用户分页查询
* @return 用户分页结果
*/
CommonResult
<
PageResult
<
UserRespDTO
>>
pageUser
(
UserPageReqDTO
pageDTO
);
}
user-service-project/user-service-api/src/main/java/cn/iocoder/mall/userservice/rpc/user/dto/UserCreateDTO.java
→
user-service-project/user-service-api/src/main/java/cn/iocoder/mall/userservice/rpc/user/dto/UserCreate
Req
DTO.java
浏览文件 @
ef135447
...
...
@@ -8,11 +8,11 @@ import javax.validation.constraints.NotNull;
import
java.io.Serializable
;
/**
* 用户创建 DTO
* 用户创建
Request
DTO
*/
@Data
@Accessors
(
chain
=
true
)
public
class
UserCreateDTO
implements
Serializable
{
public
class
UserCreate
Req
DTO
implements
Serializable
{
/**
* 手机号
...
...
system/system-biz/src/main/java/cn/iocoder/mall/system/biz/dto/user/UserPage
DTO.java
→
user-service-project/user-service-api/src/main/java/cn/iocoder/mall/userservice/rpc/user/dto/UserPageReq
DTO.java
浏览文件 @
ef135447
package
cn
.
iocoder
.
mall
.
system
.
biz
.
dto
.
user
;
package
cn
.
iocoder
.
mall
.
userservice
.
rpc
.
user
.
dto
;
import
cn.iocoder.common.framework.enums.CommonStatusEnum
;
import
cn.iocoder.common.framework.validator.InEnum
;
import
cn.iocoder.common.framework.vo.PageParam
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
import
javax.validation.constraints.NotNull
;
/**
* @Author: jiangweifan
* @Date: 2020/5/12
* @Description: 用户信息 - 用户分页列表DTO
*/
* 用户分页 Request DTO
*/
@Data
@EqualsAndHashCode
(
callSuper
=
true
)
@Accessors
(
chain
=
true
)
public
class
UserPage
DTO
{
public
class
UserPage
ReqDTO
extends
PageParam
{
/**
* 昵称,模糊匹配
*/
private
String
nickname
;
/**
* 状态
。1 - 开启;2 - 禁用
* 状态
*/
@InEnum
(
value
=
CommonStatusEnum
.
class
,
message
=
"修改状态必须是 {value}"
)
private
Integer
status
;
/**
* 页码,从 1 开始
*/
@NotNull
(
message
=
"页码不能为空"
)
private
Integer
pageNo
;
/**
* 每页条数
*/
@NotNull
(
message
=
"每页条数不能为空"
)
private
Integer
pageSize
;
}
user-service-project/user-service-api/src/main/java/cn/iocoder/mall/userservice/rpc/user/
vo/UserV
O.java
→
user-service-project/user-service-api/src/main/java/cn/iocoder/mall/userservice/rpc/user/
dto/UserRespDT
O.java
浏览文件 @
ef135447
package
cn
.
iocoder
.
mall
.
userservice
.
rpc
.
user
.
v
o
;
package
cn
.
iocoder
.
mall
.
userservice
.
rpc
.
user
.
dt
o
;
import
cn.iocoder.common.framework.enums.CommonStatusEnum
;
import
lombok.Data
;
...
...
@@ -7,11 +7,11 @@ import lombok.experimental.Accessors;
import
java.io.Serializable
;
/**
* 用户
响应
* 用户
信息 Response DTO
*/
@Data
@Accessors
(
chain
=
true
)
public
class
User
V
O
implements
Serializable
{
public
class
User
RespDT
O
implements
Serializable
{
/**
* 用户编号
...
...
user-service-project/user-service-api/src/main/java/cn/iocoder/mall/userservice/rpc/user/dto/UserUpdateReqDTO.java
0 → 100644
浏览文件 @
ef135447
package
cn
.
iocoder
.
mall
.
userservice
.
rpc
.
user
.
dto
;
import
cn.iocoder.common.framework.enums.CommonStatusEnum
;
import
cn.iocoder.common.framework.validator.InEnum
;
import
cn.iocoder.common.framework.validator.Mobile
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
javax.validation.constraints.NotNull
;
import
java.io.Serializable
;
/**
* 用户更新 Request DTO
*/
@Data
@Accessors
(
chain
=
true
)
public
class
UserUpdateReqDTO
implements
Serializable
{
/**
* 用户编号
*/
@NotNull
(
message
=
"用户编号不能为空"
)
private
Integer
id
;
/**
* 昵称
*/
private
String
nickname
;
/**
* 头像
*/
private
String
avatar
;
/**
* 状态
*/
@InEnum
(
value
=
CommonStatusEnum
.
class
,
message
=
"修改状态必须是 {value}"
)
private
Integer
status
;
/**
* 手机号
*/
@Mobile
private
String
mobile
;
/**
* 加密后的密码
*/
private
String
password
;
}
user-service-project/user-service-app/pom.xml
浏览文件 @
ef135447
...
...
@@ -17,6 +17,12 @@
<artifactId>
spring-cloud-starter-dubbo
</artifactId>
</dependency>
<dependency>
<!-- 系统服务 -->
<groupId>
cn.iocoder.mall
</groupId>
<artifactId>
system-service-api
</artifactId>
</dependency>
<dependency>
<!-- 用户服务 -->
<groupId>
cn.iocoder.mall
</groupId>
...
...
user-service-project/user-service-app/src/main/java/cn/iocoder/mall/userservice/config/ServiceExceptionConfiguration.java
deleted
100644 → 0
浏览文件 @
8edc49f4
package
cn
.
iocoder
.
mall
.
userservice
.
config
;
import
cn.iocoder.common.framework.exception.util.ServiceExceptionUtil
;
import
cn.iocoder.mall.userservice.enums.UserErrorCodeConstants
;
import
org.springframework.boot.context.event.ApplicationReadyEvent
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.event.EventListener
;
import
java.util.Arrays
;
@Configuration
public
class
ServiceExceptionConfiguration
{
@EventListener
(
ApplicationReadyEvent
.
class
)
public
void
initMessages
()
{
Arrays
.
stream
(
UserErrorCodeConstants
.
values
()).
forEach
(
item
->
ServiceExceptionUtil
.
put
(
item
.
getCode
(),
item
.
getMessage
()));
}
}
user-service-project/user-service-app/src/main/java/cn/iocoder/mall/userservice/convert/user/UserConvert.java
浏览文件 @
ef135447
package
cn
.
iocoder
.
mall
.
userservice
.
convert
.
user
;
import
cn.iocoder.mall.userservice.rpc.user.dto.UserCreateDTO
;
import
cn.iocoder.common.framework.vo.PageResult
;
import
cn.iocoder.mall.userservice.rpc.user.dto.UserCreateReqDTO
;
import
cn.iocoder.mall.userservice.rpc.user.dto.UserPageReqDTO
;
import
cn.iocoder.mall.userservice.rpc.user.dto.UserUpdateReqDTO
;
import
cn.iocoder.mall.userservice.service.user.bo.UserBO
;
import
cn.iocoder.mall.userservice.dal.mysql.dataobject.user.UserDO
;
import
cn.iocoder.mall.userservice.rpc.user.
vo.UserV
O
;
import
cn.iocoder.mall.userservice.rpc.user.
dto.UserRespDT
O
;
import
cn.iocoder.mall.userservice.service.user.bo.UserCreateBO
;
import
cn.iocoder.mall.userservice.service.user.bo.UserPageBO
;
import
cn.iocoder.mall.userservice.service.user.bo.UserUpdateBO
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
org.mapstruct.Mapper
;
import
org.mapstruct.Mapping
;
import
org.mapstruct.factory.Mappers
;
import
java.util.List
;
@Mapper
public
interface
UserConvert
{
UserConvert
INSTANCE
=
Mappers
.
getMapper
(
UserConvert
.
class
);
User
V
O
convert
(
UserBO
bean
);
User
RespDT
O
convert
(
UserBO
bean
);
UserBO
convert
(
UserDO
bean
);
UserDO
convert
(
UserCreateBO
bean
);
@Mapping
(
source
=
"ip"
,
target
=
"createIp"
)
UserCreateBO
convert
(
UserCreateDTO
createDTO
);
UserCreateBO
convert
(
UserCreateReqDTO
bean
);
UserDO
convert
(
UserUpdateBO
bean
);
@Mapping
(
source
=
"records"
,
target
=
"list"
)
PageResult
<
UserBO
>
convertPage
(
IPage
<
UserDO
>
page
);
UserUpdateBO
convert
(
UserUpdateReqDTO
bean
);
List
<
UserBO
>
convertList
(
List
<
UserDO
>
list
);
UserPageBO
convert
(
UserPageReqDTO
bean
);
PageResult
<
UserRespDTO
>
convertPage
(
PageResult
<
UserBO
>
page
);
List
<
UserRespDTO
>
convertList02
(
List
<
UserBO
>
list
);
}
user-service-project/user-service-app/src/main/java/cn/iocoder/mall/userservice/dal/mysql/mapper/user/UserMapper.java
浏览文件 @
ef135447
package
cn
.
iocoder
.
mall
.
userservice
.
dal
.
mysql
.
mapper
.
user
;
import
cn.iocoder.mall.mybatis.core.query.QueryWrapperX
;
import
cn.iocoder.mall.userservice.dal.mysql.dataobject.user.UserDO
;
import
cn.iocoder.mall.userservice.service.user.bo.UserPageBO
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
org.springframework.stereotype.Repository
;
@Repository
...
...
@@ -14,18 +18,10 @@ public interface UserMapper extends BaseMapper<UserDO> {
);
}
// /**
// * 根据条件分页查询用户列表
// * @param userPageDTO
// * @return
// */
// default IPage<UserDO> selectUserPage(UserPageDTO userPageDTO) {
// // TODO FROM 芋艿 to jwf1173:看下 QueryWrapperX 噢,已经提供判空啦 [DONE]
// return this.selectPage(new Page<>(userPageDTO.getPageNo(), userPageDTO.getPageSize()),
// new QueryWrapperX<UserDO>()
// .eq(StringUtils.isNotBlank(userPageDTO.getNickname()), "nickname", userPageDTO.getNickname())
// .eq(null != userPageDTO.getStatus(), "status", userPageDTO.getStatus())
// );
// }
default
IPage
<
UserDO
>
selectPage
(
UserPageBO
pageBO
)
{
return
selectPage
(
new
Page
<>(
pageBO
.
getPageNo
(),
pageBO
.
getPageSize
()),
new
QueryWrapperX
<
UserDO
>().
likeIfPresent
(
"nickname"
,
pageBO
.
getNickname
())
.
eqIfPresent
(
"status"
,
pageBO
.
getStatus
()));
}
}
user-service-project/user-service-app/src/main/java/cn/iocoder/mall/userservice/manager/sms/UserSmsCodeManager.java
浏览文件 @
ef135447
package
cn
.
iocoder
.
mall
.
userservice
.
manager
.
sms
;
import
cn.iocoder.mall.userservice.rpc.sms.
vo.UserSendSmsCode
DTO
;
import
cn.iocoder.mall.userservice.rpc.sms.
vo.UserVerifySmsCode
DTO
;
import
cn.iocoder.mall.userservice.rpc.sms.
dto.UserSendSmsCodeReq
DTO
;
import
cn.iocoder.mall.userservice.rpc.sms.
dto.UserVerifySmsCodeReq
DTO
;
import
cn.iocoder.mall.userservice.service.sms.UserSmsCodeService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
...
...
@@ -12,14 +12,14 @@ public class UserSmsCodeManager {
@Autowired
private
UserSmsCodeService
userSmsCodeService
;
public
void
sendSmsCode
(
UserSendSmsCodeDTO
sendSmsCodeDTO
)
{
public
void
sendSmsCode
(
UserSendSmsCode
Req
DTO
sendSmsCodeDTO
)
{
// 生成短信验证码
String
smsCode
=
userSmsCodeService
.
createSmsCode
(
sendSmsCodeDTO
.
getMobile
(),
sendSmsCodeDTO
.
getScene
(),
sendSmsCodeDTO
.
getIp
());
// TODO 调用发送验证码
}
public
void
verifySmsCode
(
UserVerifySmsCodeDTO
verifySmsCodeDTO
)
{
public
void
verifySmsCode
(
UserVerifySmsCode
Req
DTO
verifySmsCodeDTO
)
{
userSmsCodeService
.
verifySmsCode
(
verifySmsCodeDTO
.
getMobile
(),
verifySmsCodeDTO
.
getCode
(),
verifySmsCodeDTO
.
getScene
(),
verifySmsCodeDTO
.
getIp
());
}
...
...
user-service-project/user-service-app/src/main/java/cn/iocoder/mall/userservice/manager/user/UserManager.java
浏览文件 @
ef135447
package
cn
.
iocoder
.
mall
.
userservice
.
manager
.
user
;
import
cn.iocoder.common.framework.enums.CommonStatusEnum
;
import
cn.iocoder.common.framework.enums.UserTypeEnum
;
import
cn.iocoder.common.framework.util.StringUtils
;
import
cn.iocoder.common.framework.vo.PageResult
;
import
cn.iocoder.mall.systemservice.rpc.oauth.OAuth2Rpc
;
import
cn.iocoder.mall.systemservice.rpc.oauth.dto.OAuth2RemoveTokenByUserReqDTO
;
import
cn.iocoder.mall.userservice.convert.user.UserConvert
;
import
cn.iocoder.mall.userservice.rpc.user.dto.UserCreateDTO
;
import
cn.iocoder.mall.userservice.rpc.user.vo.UserVO
;
import
cn.iocoder.mall.userservice.rpc.user.dto.UserCreateReqDTO
;
import
cn.iocoder.mall.userservice.rpc.user.dto.UserPageReqDTO
;
import
cn.iocoder.mall.userservice.rpc.user.dto.UserRespDTO
;
import
cn.iocoder.mall.userservice.rpc.user.dto.UserUpdateReqDTO
;
import
cn.iocoder.mall.userservice.service.user.UserService
;
import
cn.iocoder.mall.userservice.service.user.bo.UserBO
;
import
org.apache.dubbo.config.annotation.DubboReference
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
@Service
public
class
UserManager
{
@Autowired
private
UserService
userService
;
public
UserVO
getUser
(
Integer
id
)
{
UserBO
userBO
=
userService
.
getUser
(
id
);
return
UserConvert
.
INSTANCE
.
convert
(
userBO
);
}
@DubboReference
(
version
=
"${dubbo.consumer.OAuth2Rpc.version}"
)
private
OAuth2Rpc
oauth2Rpc
;
public
User
VO
createUserIfAbsent
(
UserCreate
DTO
createDTO
)
{
public
User
RespDTO
createUserIfAbsent
(
UserCreateReq
DTO
createDTO
)
{
// 用户已经存在
UserBO
userBO
=
userService
.
getUser
(
createDTO
.
getMobile
());
if
(
userBO
!=
null
)
{
...
...
@@ -30,4 +39,53 @@ public class UserManager {
return
UserConvert
.
INSTANCE
.
convert
(
userBO
);
}
/**
* 更新用户
*
* @param updateDTO 更新用户 DTO
*/
public
void
updateUser
(
UserUpdateReqDTO
updateDTO
)
{
// 更新管理员信息
userService
.
updateUser
(
UserConvert
.
INSTANCE
.
convert
(
updateDTO
));
// 如果修改密码,或者禁用管理员
if
(
StringUtils
.
hasText
(
updateDTO
.
getPassword
())
||
CommonStatusEnum
.
DISABLE
.
getValue
().
equals
(
updateDTO
.
getStatus
()))
{
oauth2Rpc
.
removeToken
(
new
OAuth2RemoveTokenByUserReqDTO
().
setUserId
(
updateDTO
.
getId
())
.
setUserType
(
UserTypeEnum
.
ADMIN
.
getValue
()));
}
}
/**
* 获得用户
*
* @param userId 用户编号
* @return 用户
*/
public
UserRespDTO
getUser
(
Integer
userId
)
{
UserBO
userBO
=
userService
.
getUser
(
userId
);
return
UserConvert
.
INSTANCE
.
convert
(
userBO
);
}
/**
* 获得用户列表
*
* @param userIds 用户编号列表
* @return 用户列表
*/
public
List
<
UserRespDTO
>
listUsers
(
List
<
Integer
>
userIds
)
{
List
<
UserBO
>
userBOs
=
userService
.
listUsers
(
userIds
);
return
UserConvert
.
INSTANCE
.
convertList02
(
userBOs
);
}
/**
* 获得用户分页
*
* @param pageDTO 用户分页查询
* @return 用户分页结果
*/
public
PageResult
<
UserRespDTO
>
pageUser
(
UserPageReqDTO
pageDTO
)
{
PageResult
<
UserBO
>
pageResultBO
=
userService
.
pageUser
(
UserConvert
.
INSTANCE
.
convert
(
pageDTO
));
return
UserConvert
.
INSTANCE
.
convertPage
(
pageResultBO
);
}
}
user-service-project/user-service-app/src/main/java/cn/iocoder/mall/userservice/rpc/sms/UserSmsCodeRpcImpl.java
浏览文件 @
ef135447
...
...
@@ -2,8 +2,8 @@ package cn.iocoder.mall.userservice.rpc.sms;
import
cn.iocoder.common.framework.vo.CommonResult
;
import
cn.iocoder.mall.userservice.manager.sms.UserSmsCodeManager
;
import
cn.iocoder.mall.userservice.rpc.sms.
vo.UserSendSmsCode
DTO
;
import
cn.iocoder.mall.userservice.rpc.sms.
vo.UserVerifySmsCode
DTO
;
import
cn.iocoder.mall.userservice.rpc.sms.
dto.UserSendSmsCodeReq
DTO
;
import
cn.iocoder.mall.userservice.rpc.sms.
dto.UserVerifySmsCodeReq
DTO
;
import
org.apache.dubbo.config.annotation.Service
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -14,13 +14,13 @@ public class UserSmsCodeRpcImpl implements UserSmsCodeRpc {
private
UserSmsCodeManager
userSmsCodeManager
;
@Override
public
CommonResult
<
Boolean
>
sendSmsCode
(
UserSendSmsCodeDTO
sendSmsCodeDTO
)
{
public
CommonResult
<
Boolean
>
sendSmsCode
(
UserSendSmsCode
Req
DTO
sendSmsCodeDTO
)
{
userSmsCodeManager
.
sendSmsCode
(
sendSmsCodeDTO
);
return
CommonResult
.
success
(
true
);
}
@Override
public
CommonResult
<
Boolean
>
verifySmsCode
(
UserVerifySmsCodeDTO
verifySmsCodeDTO
)
{
public
CommonResult
<
Boolean
>
verifySmsCode
(
UserVerifySmsCode
Req
DTO
verifySmsCodeDTO
)
{
userSmsCodeManager
.
verifySmsCode
(
verifySmsCodeDTO
);
return
CommonResult
.
success
(
true
);
}
...
...
user-service-project/user-service-app/src/main/java/cn/iocoder/mall/userservice/rpc/user/UserRpcImpl.java
浏览文件 @
ef135447
package
cn
.
iocoder
.
mall
.
userservice
.
rpc
.
user
;
import
cn.iocoder.common.framework.vo.CommonResult
;
import
cn.iocoder.common.framework.vo.PageResult
;
import
cn.iocoder.mall.userservice.manager.user.UserManager
;
import
cn.iocoder.mall.userservice.rpc.user.dto.UserCreateDTO
;
import
cn.iocoder.mall.userservice.rpc.user.vo.UserVO
;
import
cn.iocoder.mall.userservice.rpc.user.dto.UserCreateReqDTO
;
import
cn.iocoder.mall.userservice.rpc.user.dto.UserPageReqDTO
;
import
cn.iocoder.mall.userservice.rpc.user.dto.UserRespDTO
;
import
cn.iocoder.mall.userservice.rpc.user.dto.UserUpdateReqDTO
;
import
org.apache.dubbo.config.annotation.Service
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
java.util.List
;
import
static
cn
.
iocoder
.
common
.
framework
.
vo
.
CommonResult
.
success
;
@Service
(
version
=
"${dubbo.provider.UserRpc.version}"
,
validation
=
"false"
)
...
...
@@ -16,13 +21,29 @@ public class UserRpcImpl implements UserRpc {
private
UserManager
userManager
;
@Override
public
CommonResult
<
User
V
O
>
getUser
(
Integer
id
)
{
public
CommonResult
<
User
RespDT
O
>
getUser
(
Integer
id
)
{
return
success
(
userManager
.
getUser
(
id
));
}
@Override
public
CommonResult
<
UserVO
>
createUserIfAbsent
(
UserCreateDTO
createDTO
)
{
public
CommonResult
<
List
<
UserRespDTO
>>
listUsers
(
List
<
Integer
>
userIds
)
{
return
success
(
userManager
.
listUsers
(
userIds
));
}
@Override
public
CommonResult
<
UserRespDTO
>
createUserIfAbsent
(
UserCreateReqDTO
createDTO
)
{
return
success
(
userManager
.
createUserIfAbsent
(
createDTO
));
}
@Override
public
CommonResult
<
Boolean
>
updateUser
(
UserUpdateReqDTO
updateDTO
)
{
userManager
.
updateUser
(
updateDTO
);
return
success
(
true
);
}
@Override
public
CommonResult
<
PageResult
<
UserRespDTO
>>
pageUser
(
UserPageReqDTO
pageDTO
)
{
return
success
(
userManager
.
pageUser
(
pageDTO
));
}
}
user-service-project/user-service-app/src/main/java/cn/iocoder/mall/userservice/service/user/UserService.java
浏览文件 @
ef135447
package
cn
.
iocoder
.
mall
.
userservice
.
service
.
user
;
import
cn.iocoder.common.framework.enums.CommonStatusEnum
;
import
cn.iocoder.common.framework.exception.util.ServiceExceptionUtil
;
import
cn.iocoder.common.framework.util.DigestUtils
;
import
cn.iocoder.common.framework.util.StringUtils
;
import
cn.iocoder.common.framework.vo.PageResult
;
import
cn.iocoder.mall.userservice.convert.user.UserConvert
;
import
cn.iocoder.mall.userservice.dal.mysql.dataobject.user.UserDO
;
import
cn.iocoder.mall.userservice.dal.mysql.mapper.user.UserMapper
;
import
cn.iocoder.mall.userservice.service.user.bo.UserBO
;
import
cn.iocoder.mall.userservice.service.user.bo.UserCreateBO
;
import
cn.iocoder.mall.userservice.service.user.bo.UserPageBO
;
import
cn.iocoder.mall.userservice.service.user.bo.UserUpdateBO
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
import
static
cn
.
iocoder
.
mall
.
userservice
.
enums
.
UserErrorCodeConstants
.*;
@Service
public
class
UserService
{
...
...
@@ -22,6 +31,17 @@ public class UserService {
return
UserConvert
.
INSTANCE
.
convert
(
userDO
);
}
/**
* 获得用户列表
*
* @param userIds 用户编号列表
* @return 用户列表
*/
public
List
<
UserBO
>
listUsers
(
List
<
Integer
>
userIds
)
{
List
<
UserDO
>
userDOs
=
userMapper
.
selectBatchIds
(
userIds
);
return
UserConvert
.
INSTANCE
.
convertList
(
userDOs
);
}
public
UserBO
getUser
(
String
mobile
)
{
UserDO
userDO
=
userMapper
.
selectByMobile
(
mobile
);
return
UserConvert
.
INSTANCE
.
convert
(
userDO
);
...
...
@@ -43,6 +63,45 @@ public class UserService {
return
UserConvert
.
INSTANCE
.
convert
(
userDO
);
}
public
void
updateUser
(
UserUpdateBO
updateBO
)
{
// 校验用户存在
UserDO
userDO
=
userMapper
.
selectById
(
updateBO
.
getId
());
if
(
userDO
==
null
)
{
throw
ServiceExceptionUtil
.
exception
(
USER_NOT_EXISTS
);
}
// 校验手机唯一
if
(
StringUtils
.
hasText
(
updateBO
.
getMobile
()))
{
UserDO
mobileAdmin
=
userMapper
.
selectByMobile
(
updateBO
.
getMobile
());
if
(
mobileAdmin
!=
null
&&
!
mobileAdmin
.
getId
().
equals
(
updateBO
.
getId
()))
{
throw
ServiceExceptionUtil
.
exception
(
USER_MOBILE_EXISTS
);
}
}
// 如果有更新状态,则校验是否已经是该状态
if
(
updateBO
.
getStatus
()
!=
null
&&
updateBO
.
getStatus
().
equals
(
userDO
.
getStatus
()))
{
throw
ServiceExceptionUtil
.
exception
(
USER_STATUS_EQUALS
);
}
// 更新到数据库
UserDO
updateUser
=
UserConvert
.
INSTANCE
.
convert
(
updateBO
);
// 如果更新密码,需要特殊加密
if
(
StringUtils
.
hasText
(
updateBO
.
getPassword
()))
{
String
passwordSalt
=
genPasswordSalt
();
String
password
=
encodePassword
(
updateBO
.
getPassword
(),
passwordSalt
);
updateUser
.
setPassword
(
password
).
setPasswordSalt
(
passwordSalt
);
}
userMapper
.
updateById
(
updateUser
);
}
/**
* 获得用户分页
*
* @param pageBO 用户分页查询
* @return 用户分页结果
*/
public
PageResult
<
UserBO
>
pageUser
(
UserPageBO
pageBO
)
{
IPage
<
UserDO
>
userDOPage
=
userMapper
.
selectPage
(
pageBO
);
return
UserConvert
.
INSTANCE
.
convertPage
(
userDOPage
);
}
private
String
genPasswordSalt
()
{
return
DigestUtils
.
genBcryptSalt
();
}
...
...
user-service-project/user-service-app/src/main/java/cn/iocoder/mall/userservice/service/user/bo/UserCreateBO.java
浏览文件 @
ef135447
package
cn
.
iocoder
.
mall
.
userservice
.
service
.
user
.
bo
;
import
cn.iocoder.common.framework.validator.Mobile
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
...
...
@@ -24,6 +25,7 @@ public class UserCreateBO {
* 手机
*/
@NotNull
(
message
=
"手机号不能为空"
)
@Mobile
private
String
mobile
;
/**
* 原始密码,允许空
...
...
user-service-project/user-service-app/src/main/java/cn/iocoder/mall/userservice/service/user/bo/UserPageBO.java
0 → 100644
浏览文件 @
ef135447
package
cn
.
iocoder
.
mall
.
userservice
.
service
.
user
.
bo
;
import
cn.iocoder.common.framework.enums.CommonStatusEnum
;
import
cn.iocoder.common.framework.validator.InEnum
;
import
cn.iocoder.common.framework.vo.PageParam
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
/**
* 用户分页 BO
*/
@Data
@EqualsAndHashCode
(
callSuper
=
true
)
@Accessors
(
chain
=
true
)
public
class
UserPageBO
extends
PageParam
{
/**
* 昵称
*
* 模糊
*/
private
String
nickname
;
/**
* 状态
*/
@InEnum
(
value
=
CommonStatusEnum
.
class
,
message
=
"修改状态必须是 {value}"
)
private
Integer
status
;
}
user-service-project/user-service-app/src/main/java/cn/iocoder/mall/userservice/service/user/bo/UserUpdateBO.java
0 → 100644
浏览文件 @
ef135447
package
cn
.
iocoder
.
mall
.
userservice
.
service
.
user
.
bo
;
import
cn.iocoder.common.framework.enums.CommonStatusEnum
;
import
cn.iocoder.common.framework.validator.InEnum
;
import
cn.iocoder.common.framework.validator.Mobile
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
javax.validation.constraints.NotNull
;
/**
* 用户更新 BO
*/
@Data
@Accessors
(
chain
=
true
)
public
class
UserUpdateBO
{
/**
* 用户编号
*/
@NotNull
(
message
=
"用户编号不能为空"
)
private
Integer
id
;
/**
* 昵称
*/
private
String
nickname
;
/**
* 头像
*/
private
String
avatar
;
/**
* 状态
*/
@InEnum
(
value
=
CommonStatusEnum
.
class
,
message
=
"修改状态必须是 {value}"
)
private
Integer
status
;
/**
* 手机号
*/
@Mobile
private
String
mobile
;
/**
* 密码
*/
private
String
password
;
}
user-service-project/user-service-app/src/main/resources/application.yaml
浏览文件 @
ef135447
...
...
@@ -38,3 +38,7 @@ dubbo:
version
:
1.0.0
UserSmsCodeRpc
:
version
:
1.0.0
# Dubbo 服务消费者的配置
consumer
:
OAuth2Rpc
:
versoin
:
1.0.0
user-web-app/src/main/java/cn/iocoder/mall/userweb/convert/passport/UserPassportConvert.java
浏览文件 @
ef135447
package
cn
.
iocoder
.
mall
.
userweb
.
convert
.
passport
;
import
cn.iocoder.mall.systemservice.rpc.oauth.
vo.OAuth2AccessTokenV
O
;
import
cn.iocoder.mall.userservice.rpc.sms.
vo.UserSendSmsCode
DTO
;
import
cn.iocoder.mall.userservice.rpc.sms.
vo.UserVerifySmsCode
DTO
;
import
cn.iocoder.mall.userservice.rpc.user.dto.UserCreateDTO
;
import
cn.iocoder.mall.userservice.rpc.user.
vo.UserV
O
;
import
cn.iocoder.mall.systemservice.rpc.oauth.
dto.OAuth2AccessTokenRespDT
O
;
import
cn.iocoder.mall.userservice.rpc.sms.
dto.UserSendSmsCodeReq
DTO
;
import
cn.iocoder.mall.userservice.rpc.sms.
dto.UserVerifySmsCodeReq
DTO
;
import
cn.iocoder.mall.userservice.rpc.user.dto.UserCreate
Req
DTO
;
import
cn.iocoder.mall.userservice.rpc.user.
dto.UserRespDT
O
;
import
cn.iocoder.mall.userweb.controller.passport.dto.UserPassportLoginBySmsDTO
;
import
cn.iocoder.mall.userweb.controller.passport.dto.UserPassportSendSmsCodeDTO
;
import
cn.iocoder.mall.userweb.controller.passport.vo.UserPassportVO
;
...
...
@@ -16,15 +16,15 @@ public interface UserPassportConvert {
UserPassportConvert
INSTANCE
=
Mappers
.
getMapper
(
UserPassportConvert
.
class
);
UserVerifySmsCodeDTO
convert
(
UserPassportLoginBySmsDTO
bean
);
UserCreateDTO
convert02
(
UserPassportLoginBySmsDTO
bean
);
UserVerifySmsCode
Req
DTO
convert
(
UserPassportLoginBySmsDTO
bean
);
UserCreate
Req
DTO
convert02
(
UserPassportLoginBySmsDTO
bean
);
default
UserPassportVO
convert
(
User
VO
userVO
,
OAuth2AccessTokenV
O
accessTokenVO
)
{
default
UserPassportVO
convert
(
User
RespDTO
userVO
,
OAuth2AccessTokenRespDT
O
accessTokenVO
)
{
return
new
UserPassportVO
().
setUser
(
convert
(
userVO
)).
setAuthorization
(
convert
(
accessTokenVO
));
}
UserPassportVO
.
User
convert
(
User
V
O
userVO
);
UserPassportVO
.
Authentication
convert
(
OAuth2AccessToken
V
O
accessTokenVO
);
UserPassportVO
.
User
convert
(
User
RespDT
O
userVO
);
UserPassportVO
.
Authentication
convert
(
OAuth2AccessToken
RespDT
O
accessTokenVO
);
UserSendSmsCodeDTO
convert
(
UserPassportSendSmsCodeDTO
bean
);
UserSendSmsCode
Req
DTO
convert
(
UserPassportSendSmsCodeDTO
bean
);
}
user-web-app/src/main/java/cn/iocoder/mall/userweb/convert/user/UserConvert.java
浏览文件 @
ef135447
package
cn
.
iocoder
.
mall
.
userweb
.
convert
.
user
;
import
cn.iocoder.mall.userservice.rpc.user.
vo.UserV
O
;
import
cn.iocoder.mall.userservice.rpc.user.
dto.UserRespDT
O
;
import
cn.iocoder.mall.userweb.controller.user.vo.UserInfoVO
;
import
org.mapstruct.Mapper
;
import
org.mapstruct.factory.Mappers
;
...
...
@@ -10,6 +10,6 @@ public interface UserConvert {
UserConvert
INSTANCE
=
Mappers
.
getMapper
(
UserConvert
.
class
);
UserInfoVO
convert
(
User
V
O
bean
);
UserInfoVO
convert
(
User
RespDT
O
bean
);
}
user-web-app/src/main/java/cn/iocoder/mall/userweb/manager/passport/UserPassportManager.java
浏览文件 @
ef135447
...
...
@@ -3,12 +3,12 @@ package cn.iocoder.mall.userweb.manager.passport;
import
cn.iocoder.common.framework.enums.UserTypeEnum
;
import
cn.iocoder.common.framework.vo.CommonResult
;
import
cn.iocoder.mall.systemservice.rpc.oauth.OAuth2Rpc
;
import
cn.iocoder.mall.systemservice.rpc.oauth.dto.OAuth2CreateAccessTokenDTO
;
import
cn.iocoder.mall.systemservice.rpc.oauth.
vo.OAuth2AccessTokenV
O
;
import
cn.iocoder.mall.systemservice.rpc.oauth.dto.OAuth2CreateAccessToken
Req
DTO
;
import
cn.iocoder.mall.systemservice.rpc.oauth.
dto.OAuth2AccessTokenRespDT
O
;
import
cn.iocoder.mall.userservice.enums.sms.UserSmsSceneEnum
;
import
cn.iocoder.mall.userservice.rpc.sms.UserSmsCodeRpc
;
import
cn.iocoder.mall.userservice.rpc.user.UserRpc
;
import
cn.iocoder.mall.userservice.rpc.user.
vo.UserV
O
;
import
cn.iocoder.mall.userservice.rpc.user.
dto.UserRespDT
O
;
import
cn.iocoder.mall.userweb.controller.passport.dto.UserPassportLoginBySmsDTO
;
import
cn.iocoder.mall.userweb.controller.passport.dto.UserPassportSendSmsCodeDTO
;
import
cn.iocoder.mall.userweb.controller.passport.vo.UserPassportVO
;
...
...
@@ -32,12 +32,12 @@ public class UserPassportManager {
UserPassportConvert
.
INSTANCE
.
convert
(
loginBySmsDTO
).
setScene
(
UserSmsSceneEnum
.
LOGIN_BY_SMS
.
getValue
()).
setIp
(
ip
));
verifySmsCodeResult
.
checkError
();
// 获得用户
CommonResult
<
User
V
O
>
createUserResult
=
userRpc
.
createUserIfAbsent
(
CommonResult
<
User
RespDT
O
>
createUserResult
=
userRpc
.
createUserIfAbsent
(
UserPassportConvert
.
INSTANCE
.
convert02
(
loginBySmsDTO
).
setIp
(
ip
));
createUserResult
.
checkError
();
// 创建访问令牌
CommonResult
<
OAuth2AccessToken
V
O
>
createAccessTokenResult
=
oauth2Rpc
.
createAccessToken
(
new
OAuth2CreateAccessTokenDTO
().
setUserId
(
createUserResult
.
getData
().
getId
())
CommonResult
<
OAuth2AccessToken
RespDT
O
>
createAccessTokenResult
=
oauth2Rpc
.
createAccessToken
(
new
OAuth2CreateAccessToken
Req
DTO
().
setUserId
(
createUserResult
.
getData
().
getId
())
.
setUserType
(
UserTypeEnum
.
USER
.
getValue
()).
setCreateIp
(
ip
));
createAccessTokenResult
.
checkError
();
// 返回
...
...
user-web-app/src/main/java/cn/iocoder/mall/userweb/manager/user/UserManager.java
浏览文件 @
ef135447
...
...
@@ -2,7 +2,7 @@ package cn.iocoder.mall.userweb.manager.user;
import
cn.iocoder.common.framework.vo.CommonResult
;
import
cn.iocoder.mall.userservice.rpc.user.UserRpc
;
import
cn.iocoder.mall.userservice.rpc.user.
vo.UserV
O
;
import
cn.iocoder.mall.userservice.rpc.user.
dto.UserRespDT
O
;
import
cn.iocoder.mall.userweb.controller.user.vo.UserInfoVO
;
import
cn.iocoder.mall.userweb.convert.user.UserConvert
;
import
org.apache.dubbo.config.annotation.Reference
;
...
...
@@ -15,7 +15,7 @@ public class UserManager {
private
UserRpc
userRpc
;
public
UserInfoVO
getUser
(
Integer
id
)
{
CommonResult
<
User
V
O
>
userResult
=
userRpc
.
getUser
(
id
);
CommonResult
<
User
RespDT
O
>
userResult
=
userRpc
.
getUser
(
id
);
userResult
.
checkError
();
return
UserConvert
.
INSTANCE
.
convert
(
userResult
.
getData
());
}
...
...
user/pom.xml
浏览文件 @
ef135447
...
...
@@ -18,7 +18,6 @@
<module>
user-rest
</module>
<module>
user-rpc
</module>
<module>
user-rpc-api
</module>
<module>
user-biz-api
</module>
<module>
user-biz
</module>
</modules>
...
...
user/user-biz-api/pom.xml
deleted
100644 → 0
浏览文件 @
8edc49f4
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<parent>
<artifactId>
user
</artifactId>
<groupId>
cn.iocoder.mall
</groupId>
<version>
1.0-SNAPSHOT
</version>
</parent>
<modelVersion>
4.0.0
</modelVersion>
<artifactId>
user-biz-api
</artifactId>
<dependencies>
<!-- Mall 相关 -->
<dependency>
<groupId>
cn.iocoder.mall
</groupId>
<artifactId>
common-framework
</artifactId>
<version>
1.0-SNAPSHOT
</version>
</dependency>
</dependencies>
</project>
\ No newline at end of file
user/user-biz/src/main/java/cn/iocoder/mall/user/biz/bo/package-info.java
deleted
100644 → 0
浏览文件 @
8edc49f4
/**
* author: sin
* time: 2020/5/3 8:31 下午
*/
package
cn
.
iocoder
.
mall
.
user
.
biz
.
bo
;
\ No newline at end of file
user/user-biz/src/main/java/cn/iocoder/mall/user/biz/convert/package-info.java
deleted
100644 → 0
浏览文件 @
8edc49f4
/**
* author: sin
* time: 2020/5/3 8:31 下午
*/
package
cn
.
iocoder
.
mall
.
user
.
biz
.
convert
;
\ No newline at end of file
user/user-biz/src/main/java/cn/iocoder/mall/user/biz/dao/package-info.java
deleted
100644 → 0
浏览文件 @
8edc49f4
/**
* author: sin
* time: 2020/5/3 8:28 下午
*/
package
cn
.
iocoder
.
mall
.
user
.
biz
.
dao
;
\ No newline at end of file
user/user-biz/src/main/java/cn/iocoder/mall/user/biz/dataobject/package-info.java
deleted
100644 → 0
浏览文件 @
8edc49f4
/**
* author: sin
* time: 2020/5/3 8:27 下午
*/
package
cn
.
iocoder
.
mall
.
user
.
biz
.
dataobject
;
\ No newline at end of file
user/user-biz/src/main/java/cn/iocoder/mall/user/biz/dto/package-info.java
deleted
100644 → 0
浏览文件 @
8edc49f4
/**
* author: sin
* time: 2020/5/3 8:29 下午
*/
package
cn
.
iocoder
.
mall
.
user
.
biz
.
dto
;
\ No newline at end of file
user/user-service-api/src/main/java/cn/iocoder/mall/user/api/bo/user/UserAuthenticationBO.java
deleted
100644 → 0
浏览文件 @
8edc49f4
package
cn
.
iocoder
.
mall
.
user
.
api
.
bo
.
user
;
import
cn.iocoder.mall.system.api.bo.oauth2.OAuth2AccessTokenBO
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
@ApiModel
(
"用户认证 BO"
)
@Data
@Accessors
(
chain
=
true
)
public
class
UserAuthenticationBO
{
@ApiModelProperty
(
value
=
"用户编号"
,
required
=
true
,
example
=
"1"
)
private
Integer
id
;
@ApiModelProperty
(
value
=
"昵称"
,
required
=
true
,
example
=
"小王"
)
private
String
nickname
;
private
OAuth2AccessTokenBO
token
;
}
user/user-service-api/src/main/java/cn/iocoder/mall/user/api/dto/user/UserAuthenticationByMobileCodeDTO.java
deleted
100644 → 0
浏览文件 @
8edc49f4
package
cn
.
iocoder
.
mall
.
user
.
api
.
dto
.
user
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
org.hibernate.validator.constraints.Length
;
import
javax.validation.constraints.NotEmpty
;
import
javax.validation.constraints.Pattern
;
@ApiModel
(
"用户认证 DTO"
)
@Data
@Accessors
(
chain
=
true
)
public
class
UserAuthenticationByMobileCodeDTO
{
@ApiModelProperty
(
value
=
"手机号"
,
required
=
true
,
example
=
"15601691300"
)
@NotEmpty
(
message
=
"手机号不能为空"
)
@Length
(
min
=
11
,
max
=
11
,
message
=
"账号长度为 11 位"
)
@Pattern
(
regexp
=
"^[0-9]+$"
,
message
=
"手机号必须都是数字"
)
private
String
mobile
;
@ApiModelProperty
(
value
=
"手机验证码"
,
required
=
true
,
example
=
"1024"
)
@NotEmpty
(
message
=
"手机验证码不能为空"
)
@Length
(
min
=
4
,
max
=
6
,
message
=
"手机验证码长度为 4-6 位"
)
@Pattern
(
regexp
=
"^[0-9]+$"
,
message
=
"手机验证码必须都是数字"
)
private
String
code
;
}
user/user-service-impl/src/main/java/cn/iocoder/mall/user/biz/convert/UserConvert.java
deleted
100644 → 0
浏览文件 @
8edc49f4
package
cn
.
iocoder
.
mall
.
user
.
biz
.
convert
;
import
cn.iocoder.mall.user.api.bo.user.UserAuthenticationBO
;
import
cn.iocoder.mall.user.api.bo.UserBO
;
import
cn.iocoder.mall.user.api.dto.UserUpdateDTO
;
import
cn.iocoder.mall.user.biz.dataobject.UserDO
;
import
org.mapstruct.Mapper
;
import
org.mapstruct.Mappings
;
import
org.mapstruct.factory.Mappers
;
import
java.util.List
;
@Mapper
public
interface
UserConvert
{
UserConvert
INSTANCE
=
Mappers
.
getMapper
(
UserConvert
.
class
);
@Mappings
({})
UserBO
convert
(
UserDO
userDO
);
@Mappings
({})
UserAuthenticationBO
convert2
(
UserDO
userDO
);
@Mappings
({})
UserDO
convert
(
UserUpdateDTO
userUpdateDTO
);
@Mappings
({})
List
<
UserBO
>
convert
(
List
<
UserDO
>
userDOs
);
}
user/user-service-impl/src/main/java/cn/iocoder/mall/user/biz/dao/UserMapper.java
deleted
100644 → 0
浏览文件 @
8edc49f4
package
cn
.
iocoder
.
mall
.
user
.
biz
.
dao
;
import
cn.iocoder.mall.user.biz.dataobject.UserDO
;
import
org.apache.ibatis.annotations.Param
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
@Repository
public
interface
UserMapper
{
void
insert
(
UserDO
entity
);
int
update
(
UserDO
entity
);
UserDO
selectByMobile
(
@Param
(
"mobile"
)
String
mobile
);
UserDO
selectById
(
@Param
(
"id"
)
Integer
id
);
List
<
UserDO
>
selectListByNicknameLike
(
@Param
(
"nickname"
)
String
nickname
,
@Param
(
"status"
)
Integer
status
,
@Param
(
"offset"
)
Integer
offset
,
@Param
(
"limit"
)
Integer
limit
);
Integer
selectCountByNicknameLike
(
@Param
(
"nickname"
)
String
nickname
,
@Param
(
"status"
)
Integer
status
);
}
user/user-service-impl/src/main/java/cn/iocoder/mall/user/biz/dao/UserRegisterMapper.java
deleted
100644 → 0
浏览文件 @
8edc49f4
package
cn
.
iocoder
.
mall
.
user
.
biz
.
dao
;
import
cn.iocoder.mall.user.biz.dataobject.UserRegisterDO
;
import
org.springframework.stereotype.Repository
;
@Repository
public
interface
UserRegisterMapper
{
void
insert
(
UserRegisterDO
entity
);
}
\ No newline at end of file
user/user-start/src/main/java/cn/iocoder/mall/user/application/controller/admins/AdminsUserController.java
deleted
100644 → 0
浏览文件 @
8edc49f4
package
cn
.
iocoder
.
mall
.
user
.
application
.
controller
.
admins
;
import
cn.iocoder.common.framework.vo.CommonResult
;
import
cn.iocoder.mall.user.api.UserService
;
import
cn.iocoder.mall.user.api.bo.UserPageBO
;
import
cn.iocoder.mall.user.api.dto.UserPageDTO
;
import
cn.iocoder.mall.user.api.dto.UserUpdateDTO
;
import
cn.iocoder.mall.user.application.convert.UserConvert
;
import
cn.iocoder.mall.user.application.vo.admins.AdminsUserPageVO
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiImplicitParam
;
import
io.swagger.annotations.ApiImplicitParams
;
import
io.swagger.annotations.ApiOperation
;
import
org.apache.dubbo.config.annotation.Reference
;
import
org.springframework.web.bind.annotation.*
;
import
static
cn
.
iocoder
.
common
.
framework
.
vo
.
CommonResult
.
success
;
@RestController
@RequestMapping
(
"/admins/user"
)
@Api
(
"用户模块"
)
public
class
AdminsUserController
{
@Reference
(
validation
=
"true"
,
version
=
"${dubbo.provider.UserService.version}"
)
private
UserService
userService
;
// 分页
@GetMapping
(
"/page"
)
@ApiOperation
(
value
=
"用户分页"
)
@ApiImplicitParams
({
@ApiImplicitParam
(
name
=
"nickname"
,
value
=
"昵称,模糊匹配"
,
example
=
"小王"
),
@ApiImplicitParam
(
name
=
"pageNo"
,
value
=
"页码,从 1 开始"
,
example
=
"1"
),
@ApiImplicitParam
(
name
=
"pageSize"
,
value
=
"每页条数"
,
required
=
true
,
example
=
"10"
),
})
public
CommonResult
<
AdminsUserPageVO
>
page
(
@RequestParam
(
value
=
"nickname"
,
required
=
false
)
String
nickname
,
@RequestParam
(
value
=
"status"
,
required
=
false
)
Integer
status
,
@RequestParam
(
value
=
"pageNo"
,
defaultValue
=
"1"
)
Integer
pageNo
,
@RequestParam
(
value
=
"pageSize"
,
defaultValue
=
"10"
)
Integer
pageSize
)
{
UserPageDTO
userPageDTO
=
new
UserPageDTO
().
setNickname
(
nickname
).
setStatus
(
status
)
.
setPageNo
(
pageNo
).
setPageSize
(
pageSize
);
// 查询分页
UserPageBO
result
=
userService
.
getUserPage
(
userPageDTO
);
// 转换结果
return
success
(
UserConvert
.
INSTANCE
.
convert
(
result
));
}
@PostMapping
(
"/update"
)
@ApiOperation
(
value
=
"更新用户基本信息"
)
@ApiImplicitParams
({
@ApiImplicitParam
(
name
=
"id"
,
value
=
"用户编号"
,
required
=
true
,
example
=
"1"
),
@ApiImplicitParam
(
name
=
"nickname"
,
value
=
"昵称"
,
required
=
true
,
example
=
"小王"
),
@ApiImplicitParam
(
name
=
"avatar"
,
value
=
"头像"
,
required
=
true
,
example
=
"http://www.iocoder.cn/xxx.jpg"
),
})
public
CommonResult
<
Boolean
>
update
(
@RequestParam
(
"id"
)
Integer
id
,
@RequestParam
(
"nickname"
)
String
nickname
,
@RequestParam
(
"avatar"
)
String
avatar
)
{
UserUpdateDTO
userUpdateDTO
=
new
UserUpdateDTO
().
setId
(
id
).
setNickname
(
nickname
).
setNickname
(
nickname
).
setAvatar
(
avatar
);
// 更新
return
success
(
userService
.
updateUser
(
userUpdateDTO
));
}
@PostMapping
(
"/update_status"
)
@ApiOperation
(
value
=
"更新用户状态"
)
@ApiImplicitParams
({
@ApiImplicitParam
(
name
=
"id"
,
value
=
"用户编号"
,
required
=
true
,
example
=
"1"
),
@ApiImplicitParam
(
name
=
"status"
,
value
=
"状态。1 - 开启;2 - 禁用"
,
required
=
true
,
example
=
"1"
),
})
public
CommonResult
<
Boolean
>
updateStatus
(
@RequestParam
(
"id"
)
Integer
id
,
@RequestParam
(
"status"
)
Integer
status
)
{
return
success
(
userService
.
updateUserStatus
(
id
,
status
));
}
}
user/user-start/src/main/java/cn/iocoder/mall/user/application/convert/UserAddressConvert.java
deleted
100644 → 0
浏览文件 @
8edc49f4
package
cn
.
iocoder
.
mall
.
user
.
application
.
convert
;
import
cn.iocoder.mall.user.application.po.UserAddressAddPO
;
import
cn.iocoder.mall.user.application.po.UserAddressUpdatePO
;
import
cn.iocoder.mall.user.api.dto.UserAddressAddDTO
;
import
cn.iocoder.mall.user.api.dto.UserAddressUpdateDTO
;
import
org.mapstruct.Mapper
;
import
org.mapstruct.Mappings
;
import
org.mapstruct.factory.Mappers
;
/**
* @author Sin
* @time 2019-04-06 14:19
*/
@Mapper
public
interface
UserAddressConvert
{
UserAddressConvert
INSTANCE
=
Mappers
.
getMapper
(
UserAddressConvert
.
class
);
@Mappings
({})
UserAddressAddDTO
convert
(
UserAddressAddPO
userAddressAddPO
);
@Mappings
({})
UserAddressUpdateDTO
convert
(
UserAddressUpdatePO
userAddressUpdatePO
);
}
user/user-start/src/main/java/cn/iocoder/mall/user/application/vo/admins/AdminsUserPageVO.java
deleted
100644 → 0
浏览文件 @
8edc49f4
package
cn
.
iocoder
.
mall
.
user
.
application
.
vo
.
admins
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
java.util.List
;
@ApiModel
(
"用户分页 VO"
)
@Data
@Accessors
(
chain
=
true
)
public
class
AdminsUserPageVO
{
@ApiModelProperty
(
value
=
"用户数组"
)
private
List
<
AdminsUserVO
>
list
;
@ApiModelProperty
(
value
=
"用户总数"
)
private
Integer
total
;
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论