Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
crowd_care
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Labels
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Jobs
Commits
Open sidebar
人流关怀系统
crowd_care
Commits
1df2d3de
Commit
1df2d3de
authored
Dec 14, 2024
by
蒋赟昊
👮
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
系统管理相关表初始化、登录、登出接口开发
parent
6c8b9d48
Changes
57
Hide whitespace changes
Inline
Side-by-side
Showing
57 changed files
with
2039 additions
and
7 deletions
+2039
-7
pom.xml
pom.xml
+1
-1
src/main/java/com/fxkc/care/config/CustomMetaObjectHandler.java
...in/java/com/fxkc/care/config/CustomMetaObjectHandler.java
+2
-2
src/main/java/com/fxkc/care/controller/LoginController.java
src/main/java/com/fxkc/care/controller/LoginController.java
+41
-0
src/main/java/com/fxkc/care/controller/MenuInfoController.java
...ain/java/com/fxkc/care/controller/MenuInfoController.java
+19
-0
src/main/java/com/fxkc/care/controller/RoleInfoController.java
...ain/java/com/fxkc/care/controller/RoleInfoController.java
+19
-0
src/main/java/com/fxkc/care/controller/RoleMenuController.java
...ain/java/com/fxkc/care/controller/RoleMenuController.java
+19
-0
src/main/java/com/fxkc/care/controller/SysDictItemController.java
.../java/com/fxkc/care/controller/SysDictItemController.java
+19
-0
src/main/java/com/fxkc/care/controller/SysDictTypeController.java
.../java/com/fxkc/care/controller/SysDictTypeController.java
+19
-0
src/main/java/com/fxkc/care/controller/UserInfoController.java
...ain/java/com/fxkc/care/controller/UserInfoController.java
+72
-0
src/main/java/com/fxkc/care/controller/UserRoleController.java
...ain/java/com/fxkc/care/controller/UserRoleController.java
+19
-0
src/main/java/com/fxkc/care/domain/MenuInfo.java
src/main/java/com/fxkc/care/domain/MenuInfo.java
+93
-0
src/main/java/com/fxkc/care/domain/RoleInfo.java
src/main/java/com/fxkc/care/domain/RoleInfo.java
+73
-0
src/main/java/com/fxkc/care/domain/RoleMenu.java
src/main/java/com/fxkc/care/domain/RoleMenu.java
+41
-0
src/main/java/com/fxkc/care/domain/SysDictItem.java
src/main/java/com/fxkc/care/domain/SysDictItem.java
+73
-0
src/main/java/com/fxkc/care/domain/SysDictType.java
src/main/java/com/fxkc/care/domain/SysDictType.java
+73
-0
src/main/java/com/fxkc/care/domain/UserInfo.java
src/main/java/com/fxkc/care/domain/UserInfo.java
+86
-0
src/main/java/com/fxkc/care/domain/UserRole.java
src/main/java/com/fxkc/care/domain/UserRole.java
+40
-0
src/main/java/com/fxkc/care/dto/UserInfoAddDTO.java
src/main/java/com/fxkc/care/dto/UserInfoAddDTO.java
+40
-0
src/main/java/com/fxkc/care/dto/UserInfoEditDTO.java
src/main/java/com/fxkc/care/dto/UserInfoEditDTO.java
+35
-0
src/main/java/com/fxkc/care/enums/DeleteFlagEnum.java
src/main/java/com/fxkc/care/enums/DeleteFlagEnum.java
+26
-0
src/main/java/com/fxkc/care/enums/IEnumNameValue.java
src/main/java/com/fxkc/care/enums/IEnumNameValue.java
+8
-0
src/main/java/com/fxkc/care/mapper/MenuInfoMapper.java
src/main/java/com/fxkc/care/mapper/MenuInfoMapper.java
+16
-0
src/main/java/com/fxkc/care/mapper/RoleInfoMapper.java
src/main/java/com/fxkc/care/mapper/RoleInfoMapper.java
+16
-0
src/main/java/com/fxkc/care/mapper/RoleMenuMapper.java
src/main/java/com/fxkc/care/mapper/RoleMenuMapper.java
+16
-0
src/main/java/com/fxkc/care/mapper/SysDictItemMapper.java
src/main/java/com/fxkc/care/mapper/SysDictItemMapper.java
+16
-0
src/main/java/com/fxkc/care/mapper/SysDictTypeMapper.java
src/main/java/com/fxkc/care/mapper/SysDictTypeMapper.java
+16
-0
src/main/java/com/fxkc/care/mapper/UserInfoMapper.java
src/main/java/com/fxkc/care/mapper/UserInfoMapper.java
+16
-0
src/main/java/com/fxkc/care/mapper/UserRoleMapper.java
src/main/java/com/fxkc/care/mapper/UserRoleMapper.java
+18
-0
src/main/java/com/fxkc/care/service/IMenuInfoService.java
src/main/java/com/fxkc/care/service/IMenuInfoService.java
+16
-0
src/main/java/com/fxkc/care/service/IRoleInfoService.java
src/main/java/com/fxkc/care/service/IRoleInfoService.java
+16
-0
src/main/java/com/fxkc/care/service/IRoleMenuService.java
src/main/java/com/fxkc/care/service/IRoleMenuService.java
+16
-0
src/main/java/com/fxkc/care/service/ISysDictItemService.java
src/main/java/com/fxkc/care/service/ISysDictItemService.java
+16
-0
src/main/java/com/fxkc/care/service/ISysDictTypeService.java
src/main/java/com/fxkc/care/service/ISysDictTypeService.java
+16
-0
src/main/java/com/fxkc/care/service/IUserInfoService.java
src/main/java/com/fxkc/care/service/IUserInfoService.java
+31
-0
src/main/java/com/fxkc/care/service/IUserRoleService.java
src/main/java/com/fxkc/care/service/IUserRoleService.java
+16
-0
src/main/java/com/fxkc/care/service/impl/MenuInfoServiceImpl.java
.../java/com/fxkc/care/service/impl/MenuInfoServiceImpl.java
+20
-0
src/main/java/com/fxkc/care/service/impl/RoleInfoServiceImpl.java
.../java/com/fxkc/care/service/impl/RoleInfoServiceImpl.java
+20
-0
src/main/java/com/fxkc/care/service/impl/RoleMenuServiceImpl.java
.../java/com/fxkc/care/service/impl/RoleMenuServiceImpl.java
+20
-0
src/main/java/com/fxkc/care/service/impl/SysDictItemServiceImpl.java
...va/com/fxkc/care/service/impl/SysDictItemServiceImpl.java
+20
-0
src/main/java/com/fxkc/care/service/impl/SysDictTypeServiceImpl.java
...va/com/fxkc/care/service/impl/SysDictTypeServiceImpl.java
+20
-0
src/main/java/com/fxkc/care/service/impl/UserInfoServiceImpl.java
.../java/com/fxkc/care/service/impl/UserInfoServiceImpl.java
+215
-0
src/main/java/com/fxkc/care/service/impl/UserRoleServiceImpl.java
.../java/com/fxkc/care/service/impl/UserRoleServiceImpl.java
+20
-0
src/main/java/com/fxkc/care/utils/MD5Util.java
src/main/java/com/fxkc/care/utils/MD5Util.java
+52
-0
src/main/java/com/fxkc/care/utils/MultiThreadDateUtil.java
src/main/java/com/fxkc/care/utils/MultiThreadDateUtil.java
+64
-0
src/main/java/com/fxkc/care/utils/RSAUtils.java
src/main/java/com/fxkc/care/utils/RSAUtils.java
+104
-0
src/main/java/com/fxkc/care/utils/UuidUtil.java
src/main/java/com/fxkc/care/utils/UuidUtil.java
+37
-0
src/main/java/com/fxkc/care/utils/ValidatorUtil.java
src/main/java/com/fxkc/care/utils/ValidatorUtil.java
+206
-0
src/main/java/com/fxkc/care/vo/UserInfoVO.java
src/main/java/com/fxkc/care/vo/UserInfoVO.java
+13
-1
src/main/resources/application-dev.properties
src/main/resources/application-dev.properties
+9
-2
src/main/resources/application.properties
src/main/resources/application.properties
+1
-1
src/main/resources/mapper/MenuInfoMapper.xml
src/main/resources/mapper/MenuInfoMapper.xml
+29
-0
src/main/resources/mapper/RoleInfoMapper.xml
src/main/resources/mapper/RoleInfoMapper.xml
+24
-0
src/main/resources/mapper/RoleMenuMapper.xml
src/main/resources/mapper/RoleMenuMapper.xml
+16
-0
src/main/resources/mapper/SysDictItemMapper.xml
src/main/resources/mapper/SysDictItemMapper.xml
+24
-0
src/main/resources/mapper/SysDictTypeMapper.xml
src/main/resources/mapper/SysDictTypeMapper.xml
+24
-0
src/main/resources/mapper/UserInfoMapper.xml
src/main/resources/mapper/UserInfoMapper.xml
+26
-0
src/main/resources/mapper/UserRoleMapper.xml
src/main/resources/mapper/UserRoleMapper.xml
+16
-0
No files found.
pom.xml
View file @
1df2d3de
...
...
@@ -33,7 +33,7 @@
<swagger.ui.version>
1.9.5
</swagger.ui.version>
<hutool.version>
5.7.9
</hutool.version>
<shiro.version>
1.7.1
</shiro.version>
<lang3.version>
3.
9
</lang3.version>
<lang3.version>
3.
12.0
</lang3.version>
<fastjson.version>
1.2.20
</fastjson.version>
<orai18n.version>
12.1.0.2.0
</orai18n.version>
<oracle.jdbc.version>
11.2.0.3
</oracle.jdbc.version>
...
...
src/main/java/com/fxkc/care/config/CustomMetaObjectHandler.java
View file @
1df2d3de
...
...
@@ -19,7 +19,7 @@ public class CustomMetaObjectHandler implements MetaObjectHandler {
this
.
strictInsertFill
(
metaObject
,
"createTime"
,
Date
.
class
,
new
Date
());
UserInfoVO
userInfo
=
RequestUtil
.
getUserInfo
();
if
(
userInfo
!=
null
)
{
this
.
strictInsertFill
(
metaObject
,
"createUser"
,
String
.
class
,
userInfo
.
getUser
N
ame
());
this
.
strictInsertFill
(
metaObject
,
"createUser"
,
String
.
class
,
userInfo
.
getUser
n
ame
());
}
else
{
this
.
strictInsertFill
(
metaObject
,
"createUser"
,
String
.
class
,
"auto"
);
}
...
...
@@ -30,7 +30,7 @@ public class CustomMetaObjectHandler implements MetaObjectHandler {
this
.
strictUpdateFill
(
metaObject
,
"updateTime"
,
Date
.
class
,
new
Date
());
UserInfoVO
userInfo
=
RequestUtil
.
getUserInfo
();
if
(
userInfo
!=
null
)
{
this
.
strictUpdateFill
(
metaObject
,
"updateUser"
,
String
.
class
,
userInfo
.
getUser
N
ame
());
this
.
strictUpdateFill
(
metaObject
,
"updateUser"
,
String
.
class
,
userInfo
.
getUser
n
ame
());
}
else
{
this
.
strictUpdateFill
(
metaObject
,
"updateUser"
,
String
.
class
,
"auto"
);
}
...
...
src/main/java/com/fxkc/care/controller/LoginController.java
0 → 100644
View file @
1df2d3de
package
com.fxkc.care.controller
;
import
com.fxkc.care.common.AjaxResult
;
import
com.fxkc.care.service.IUserInfoService
;
import
com.fxkc.care.vo.UserInfoVO
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
javax.servlet.http.HttpServletResponse
;
/**
* @author JYH
* @date 2024/12/14 16:31
* @describe
*/
@Api
(
value
=
"登录管理"
,
tags
=
{
"登录管理"
})
@RestController
@RequestMapping
(
"/login"
)
public
class
LoginController
{
@Autowired
private
IUserInfoService
userInfoService
;
@ApiOperation
(
"登录"
)
@PostMapping
(
"/doLogin"
)
public
AjaxResult
localLogin
(
@RequestBody
UserInfoVO
userInfoVO
,
HttpServletResponse
response
)
{
return
userInfoService
.
doLogin
(
userInfoVO
,
response
);
}
@ApiOperation
(
"退出登录"
)
@PostMapping
(
"/logout"
)
public
AjaxResult
logout
()
{
return
userInfoService
.
logout
();
}
}
src/main/java/com/fxkc/care/controller/MenuInfoController.java
0 → 100644
View file @
1df2d3de
package
com.fxkc.care.controller
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
/**
* <p>
* 菜单表 前端控制器
* </p>
*
* @author JYH
* @since 2024-12-14
*/
@RestController
@RequestMapping
(
"//menu-info"
)
public
class
MenuInfoController
{
}
src/main/java/com/fxkc/care/controller/RoleInfoController.java
0 → 100644
View file @
1df2d3de
package
com.fxkc.care.controller
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
/**
* <p>
* 角色表 前端控制器
* </p>
*
* @author JYH
* @since 2024-12-14
*/
@RestController
@RequestMapping
(
"//role-info"
)
public
class
RoleInfoController
{
}
src/main/java/com/fxkc/care/controller/RoleMenuController.java
0 → 100644
View file @
1df2d3de
package
com.fxkc.care.controller
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
/**
* <p>
* 角色菜单表 前端控制器
* </p>
*
* @author JYH
* @since 2024-12-14
*/
@RestController
@RequestMapping
(
"//role-menu"
)
public
class
RoleMenuController
{
}
src/main/java/com/fxkc/care/controller/SysDictItemController.java
0 → 100644
View file @
1df2d3de
package
com.fxkc.care.controller
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
/**
* <p>
* 字典子项表 前端控制器
* </p>
*
* @author JYH
* @since 2024-12-14
*/
@RestController
@RequestMapping
(
"//sys-dict-item"
)
public
class
SysDictItemController
{
}
src/main/java/com/fxkc/care/controller/SysDictTypeController.java
0 → 100644
View file @
1df2d3de
package
com.fxkc.care.controller
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
/**
* <p>
* 系统字典类型表 前端控制器
* </p>
*
* @author JYH
* @since 2024-12-14
*/
@RestController
@RequestMapping
(
"//sys-dict-type"
)
public
class
SysDictTypeController
{
}
src/main/java/com/fxkc/care/controller/UserInfoController.java
0 → 100644
View file @
1df2d3de
package
com.fxkc.care.controller
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.fxkc.care.common.AjaxResult
;
import
com.fxkc.care.config.RepeatSubmitValidation
;
import
com.fxkc.care.domain.UserInfo
;
import
com.fxkc.care.domain.UserRole
;
import
com.fxkc.care.dto.UserInfoAddDTO
;
import
com.fxkc.care.dto.UserInfoEditDTO
;
import
com.fxkc.care.service.IUserInfoService
;
import
com.fxkc.care.utils.RequestUtil
;
import
com.fxkc.care.vo.UserInfoVO
;
import
io.jsonwebtoken.lang.Assert
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
/**
* <p>
* 用户表 前端控制器
* </p>
*
* @author JYH
* @since 2024-12-14
*/
@RestController
@RequestMapping
(
"/userInfo"
)
public
class
UserInfoController
{
@Autowired
private
IUserInfoService
userInfoService
;
@ApiOperation
(
"获取当前用户信息详情"
)
@GetMapping
(
"/currentUserInfo"
)
public
AjaxResult
getCurrentUserInfo
()
{
UserInfoVO
userInfoVO
=
RequestUtil
.
getUserInfo
();
return
AjaxResult
.
success
(
userInfoVO
);
}
// @PostMapping("/editPwd")
// @ApiOperation("修改密码")
// public AjaxResult<Boolean> editPassword(@RequestBody UserInfo userInfo) {
// Assert.notNull(userInfo.getPassword(), "密码不得为空!");
// return AjaxResult.success(userInfoService.editPassword(userInfo));
// }
// @PostMapping("/page")
// public AjaxResult page(@RequestBody UserInfo userInfo) {
// return userInfoService.getPage(userInfo);
// }
@PostMapping
(
"/add"
)
@ApiOperation
(
"新增用户"
)
@RepeatSubmitValidation
public
AjaxResult
add
(
@RequestBody
@Validated
UserInfoAddDTO
dto
)
{
return
userInfoService
.
add
(
dto
);
}
@PostMapping
(
"/edit"
)
@ApiOperation
(
"编辑用户"
)
@RepeatSubmitValidation
public
AjaxResult
edit
(
@RequestBody
UserInfoEditDTO
dto
)
{
return
userInfoService
.
edit
(
dto
);
}
@DeleteMapping
(
"/delete/{id}"
)
public
AjaxResult
delete
(
@PathVariable
(
"id"
)
String
id
)
{
return
userInfoService
.
delete
(
id
);
}
}
src/main/java/com/fxkc/care/controller/UserRoleController.java
0 → 100644
View file @
1df2d3de
package
com.fxkc.care.controller
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
/**
* <p>
* 用户角色表 前端控制器
* </p>
*
* @author JYH
* @since 2024-12-14
*/
@RestController
@RequestMapping
(
"//user-role"
)
public
class
UserRoleController
{
}
src/main/java/com/fxkc/care/domain/MenuInfo.java
0 → 100644
View file @
1df2d3de
package
com.fxkc.care.domain
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
com.baomidou.mybatisplus.extension.activerecord.Model
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
import
java.io.Serializable
;
import
java.util.Date
;
/**
* <p>
* 菜单表
* </p>
*
* @author JYH
* @since 2024-12-14
*/
@Data
@EqualsAndHashCode
(
callSuper
=
false
)
@Accessors
(
chain
=
true
)
@TableName
(
"MENU_INFO"
)
@ApiModel
(
value
=
"MenuInfo对象"
,
description
=
"菜单表"
)
public
class
MenuInfo
extends
Model
<
MenuInfo
>
{
private
static
final
long
serialVersionUID
=
1L
;
@ApiModelProperty
(
value
=
"主键"
)
@TableId
(
"ID"
)
private
String
id
;
@ApiModelProperty
(
value
=
"父级菜单ID"
)
@TableField
(
"PARENT_ID"
)
private
String
parentId
;
@ApiModelProperty
(
value
=
"菜单名称"
)
@TableField
(
"MENU_NAME"
)
private
String
menuName
;
@ApiModelProperty
(
value
=
"菜单类型(1-目录 2-菜单 3-按钮 4-路由)"
)
@TableField
(
"MENU_TYPE"
)
private
Integer
menuType
;
@ApiModelProperty
(
value
=
"菜单备注"
)
@TableField
(
"MENU_DESC"
)
private
String
menuDesc
;
@ApiModelProperty
(
value
=
"路由路径"
)
@TableField
(
"MENU_ROUTE_PATH"
)
private
String
menuRoutePath
;
@ApiModelProperty
(
value
=
"菜单图标"
)
@TableField
(
"MENU_ICON"
)
private
String
menuIcon
;
@ApiModelProperty
(
value
=
"组件"
)
@TableField
(
"MENU_COMPONENT"
)
private
String
menuComponent
;
@ApiModelProperty
(
value
=
"排序值"
)
@TableField
(
"SORT_NO"
)
private
Integer
sortNo
;
@ApiModelProperty
(
value
=
"启用状态 0-启用 1-禁用"
)
@TableField
(
"ENABLE_FLAG"
)
private
Integer
enableFlag
;
@ApiModelProperty
(
value
=
"删除状态 0-未删除 1-已删除"
)
@TableField
(
"DELETE_FLAG"
)
private
Integer
deleteFlag
;
@ApiModelProperty
(
value
=
"创建时间"
)
@TableField
(
"CREATE_TIME"
)
private
Date
createTime
;
@ApiModelProperty
(
value
=
"修改时间"
)
@TableField
(
"UPDATE_TIME"
)
private
Date
updateTime
;
@ApiModelProperty
(
value
=
"创建人"
)
@TableField
(
"CREATE_USER"
)
private
String
createUser
;
@ApiModelProperty
(
value
=
"修改人"
)
@TableField
(
"UPDATE_USER"
)
private
String
updateUser
;
}
src/main/java/com/fxkc/care/domain/RoleInfo.java
0 → 100644
View file @
1df2d3de
package
com.fxkc.care.domain
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
com.baomidou.mybatisplus.extension.activerecord.Model
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
import
java.io.Serializable
;
import
java.util.Date
;
/**
* <p>
* 角色表
* </p>
*
* @author JYH
* @since 2024-12-14
*/
@Data
@EqualsAndHashCode
(
callSuper
=
false
)
@Accessors
(
chain
=
true
)
@TableName
(
"ROLE_INFO"
)
@ApiModel
(
value
=
"RoleInfo对象"
,
description
=
"角色表"
)
public
class
RoleInfo
extends
Model
<
RoleInfo
>
{
private
static
final
long
serialVersionUID
=
1L
;
@ApiModelProperty
(
value
=
"主键"
)
@TableId
(
"ID"
)
private
String
id
;
@ApiModelProperty
(
value
=
"角色代码"
)
@TableField
(
"ROLE_CODE"
)
private
String
roleCode
;
@ApiModelProperty
(
value
=
"角色名称"
)
@TableField
(
"ROLE_NAME"
)
private
String
roleName
;
@ApiModelProperty
(
value
=
"角色描述"
)
@TableField
(
"ROLE_DESC"
)
private
String
roleDesc
;
@ApiModelProperty
(
value
=
"角色状态 0-启用 1-禁用"
)
@TableField
(
"ENABLE_FLAG"
)
private
Integer
enableFlag
;
@ApiModelProperty
(
value
=
"删除状态 0-未删除 1-已删除"
)
@TableField
(
"DELETE_FLAG"
)
private
Integer
deleteFlag
;
@ApiModelProperty
(
value
=
"创建时间"
)
@TableField
(
"CREATE_TIME"
)
private
Date
createTime
;
@ApiModelProperty
(
value
=
"修改时间"
)
@TableField
(
"UPDATE_TIME"
)
private
Date
updateTime
;
@ApiModelProperty
(
value
=
"创建人"
)
@TableField
(
"CREATE_USER"
)
private
String
createUser
;
@ApiModelProperty
(
value
=
"修改人"
)
@TableField
(
"UPDATE_USER"
)
private
String
updateUser
;
}
src/main/java/com/fxkc/care/domain/RoleMenu.java
0 → 100644
View file @
1df2d3de
package
com.fxkc.care.domain
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
com.baomidou.mybatisplus.extension.activerecord.Model
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
import
java.io.Serializable
;
/**
* <p>
* 角色菜单表
* </p>
*
* @author JYH
* @since 2024-12-14
*/
@Data
@EqualsAndHashCode
(
callSuper
=
false
)
@Accessors
(
chain
=
true
)
@TableName
(
"ROLE_MENU"
)
@ApiModel
(
value
=
"RoleMenu对象"
,
description
=
"角色菜单表"
)
public
class
RoleMenu
extends
Model
<
RoleMenu
>
{
private
static
final
long
serialVersionUID
=
1L
;
@ApiModelProperty
(
value
=
"角色ID"
)
@TableId
(
"ROLE_ID"
)
private
String
roleId
;
@ApiModelProperty
(
value
=
"菜单ID"
)
@TableField
(
"MENU_ID"
)
private
String
menuId
;
}
src/main/java/com/fxkc/care/domain/SysDictItem.java
0 → 100644
View file @
1df2d3de
package
com.fxkc.care.domain
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
com.baomidou.mybatisplus.extension.activerecord.Model
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
import
java.io.Serializable
;
import
java.util.Date
;
/**
* <p>
* 字典子项表
* </p>
*
* @author JYH
* @since 2024-12-14
*/
@Data
@EqualsAndHashCode
(
callSuper
=
false
)
@Accessors
(
chain
=
true
)
@TableName
(
"SYS_DICT_ITEM"
)
@ApiModel
(
value
=
"SysDictItem对象"
,
description
=
"字典子项表"
)
public
class
SysDictItem
extends
Model
<
SysDictItem
>
{
private
static
final
long
serialVersionUID
=
1L
;
@ApiModelProperty
(
value
=
"主键"
)
@TableId
(
"ID"
)
private
String
id
;
@ApiModelProperty
(
value
=
"字典类型编码"
)
@TableField
(
"DICT_TYPE_CODE"
)
private
String
dictTypeCode
;
@ApiModelProperty
(
value
=
"字典项代码"
)
@TableField
(
"DICT_ITEM_CODE"
)
private
String
dictItemCode
;
@ApiModelProperty
(
value
=
"字典项名称"
)
@TableField
(
"DICT_ITEM_NAME"
)
private
String
dictItemName
;
@ApiModelProperty
(
value
=
"排序值"
)
@TableField
(
"SORT_NO"
)
private
Integer
sortNo
;
@ApiModelProperty
(
value
=
"删除状态 0-未删除 1-已删除"
)
@TableField
(
"DELETE_FLAG"
)
private
Integer
deleteFlag
;
@ApiModelProperty
(
value
=
"创建时间"
)
@TableField
(
"CREATE_TIME"
)
private
Date
createTime
;
@ApiModelProperty
(
value
=
"修改时间"
)
@TableField
(
"UPDATE_TIME"
)
private
Date
updateTime
;
@ApiModelProperty
(
value
=
"创建人"
)
@TableField
(
"CREATE_USER"
)
private
String
createUser
;
@ApiModelProperty
(
value
=
"修改人"
)
@TableField
(
"UPDATE_USER"
)
private
String
updateUser
;
}
src/main/java/com/fxkc/care/domain/SysDictType.java
0 → 100644
View file @
1df2d3de
package
com.fxkc.care.domain
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
com.baomidou.mybatisplus.extension.activerecord.Model
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
import
java.io.Serializable
;
import
java.util.Date
;
/**
* <p>
* 系统字典类型表
* </p>
*
* @author JYH
* @since 2024-12-14
*/
@Data
@EqualsAndHashCode
(
callSuper
=
false
)
@Accessors
(
chain
=
true
)
@TableName
(
"SYS_DICT_TYPE"
)
@ApiModel
(
value
=
"SysDictType对象"
,
description
=
"系统字典类型表"
)
public
class
SysDictType
extends
Model
<
SysDictType
>
{
private
static
final
long
serialVersionUID
=
1L
;
@ApiModelProperty
(
value
=
"主键"
)
@TableId
(
"ID"
)
private
String
id
;
@ApiModelProperty
(
value
=
"字典类型代码"
)
@TableField
(
"DICT_TYPE_CODE"
)
private
String
dictTypeCode
;
@ApiModelProperty
(
value
=
"字典类型名称"
)
@TableField
(
"DICT_TYPE_NAME"
)
private
String
dictTypeName
;
@ApiModelProperty
(
value
=
"排序值"
)
@TableField
(
"SORT_NO"
)
private
Integer
sortNo
;
@ApiModelProperty
(
value
=
"备注"
)
@TableField
(
"REMARK"
)
private
String
remark
;
@ApiModelProperty
(
value
=
"删除状态 0-未删除 1-已删除"
)
@TableField
(
"DELETE_FLAG"
)
private
Integer
deleteFlag
;
@ApiModelProperty
(
value
=
"创建时间"
)
@TableField
(
"CREATE_TIME"
)
private
Date
createTime
;
@ApiModelProperty
(
value
=
"修改时间"
)
@TableField
(
"UPDATE_TIME"
)
private
Date
updateTime
;
@ApiModelProperty
(
value
=
"创建人"
)
@TableField
(
"CREATE_USER"
)
private
String
createUser
;
@ApiModelProperty
(
value
=
"修改人"
)
@TableField
(
"UPDATE_USER"
)
private
String
updateUser
;
}
src/main/java/com/fxkc/care/domain/UserInfo.java
0 → 100644
View file @
1df2d3de
package
com.fxkc.care.domain
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableLogic
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
com.baomidou.mybatisplus.extension.activerecord.Model
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
import
java.io.Serializable
;
import
java.util.Date
;
/**
* <p>
* 用户表
* </p>
*
* @author JYH
* @since 2024-12-14
*/
@Data
@EqualsAndHashCode
(
callSuper
=
false
)
@Accessors
(
chain
=
true
)
@TableName
(
"USER_INFO"
)
@ApiModel
(
value
=
"UserInfo对象"
,
description
=
"用户表"
)
public
class
UserInfo
extends
Model
<
UserInfo
>
{
private
static
final
long
serialVersionUID
=
1L
;
@ApiModelProperty
(
value
=
"主键"
)
@TableId
(
"ID"
)
private
String
id
;
@ApiModelProperty
(
value
=
"登录名"
)
@TableField
(
"LOGIN_NAME"
)
private
String
loginName
;
@ApiModelProperty
(
value
=
"密码"
)
@TableField
(
"PASSWORD"
)
private
String
password
;
@ApiModelProperty
(
value
=
"加盐"
)
@TableField
(
"SALT"
)
private
String
salt
;
@ApiModelProperty
(
value
=
"用户姓名"
)
@TableField
(
"USERNAME"
)
private
String
username
;
@ApiModelProperty
(
value
=
"用户头像"
)
@TableField
(
"USER_IMG"
)
private
String
userImg
;
@ApiModelProperty
(
value
=
"手机号"
)
@TableField
(
"PHONE"
)
private
String
phone
;
@ApiModelProperty
(
value
=
"身份证号"
)
@TableField
(
"ID_CARD_NO"
)
private
String
idCardNo
;
@ApiModelProperty
(
value
=
"删除状态 0-未删除 1-已删除"
)
@TableLogic
(
"DELETE_FLAG"
)
private
Integer
deleteFlag
;
@ApiModelProperty
(
value
=
"创建时间"
)
@TableField
(
"CREATE_TIME"
)
private
Date
createTime
;
@ApiModelProperty
(
value
=
"修改时间"
)
@TableField
(
"UPDATE_TIME"
)
private
Date
updateTime
;
@ApiModelProperty
(
value
=
"创建人"
)
@TableField
(
"CREATE_USER"
)
private
String
createUser
;
@ApiModelProperty
(
value
=
"修改人"
)
@TableField
(
"UPDATE_USER"
)
private
String
updateUser
;
}
src/main/java/com/fxkc/care/domain/UserRole.java
0 → 100644
View file @
1df2d3de
package
com.fxkc.care.domain
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
com.baomidou.mybatisplus.extension.activerecord.Model
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
import
java.io.Serializable
;
/**
* <p>
* 用户角色表
* </p>
*
* @author JYH
* @since 2024-12-14
*/
@Data
@EqualsAndHashCode
(
callSuper
=
false
)
@Accessors
(
chain
=
true
)
@TableName
(
"USER_ROLE"
)
@ApiModel
(
value
=
"UserRole对象"
,
description
=
"用户角色表"
)
public
class
UserRole
extends
Model
<
UserRole
>
{
private
static
final
long
serialVersionUID
=
1L
;
@ApiModelProperty
(
value
=
"用户ID"
)
@TableId
(
"USER_ID"
)
private
String
userId
;
@ApiModelProperty
(
value
=
"角色ID"
)
@TableField
(
"ROLE_ID"
)
private
String
roleId
;
}
src/main/java/com/fxkc/care/dto/UserInfoAddDTO.java
0 → 100644
View file @
1df2d3de
package
com.fxkc.care.dto
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
javax.validation.constraints.NotBlank
;
import
java.io.Serializable
;
/**
* @author JYH
* @date 2024/12/13 17:36
* @describe
*/
@Data
@ApiModel
(
value
=
"用户信息dto"
)
public
class
UserInfoAddDTO
implements
Serializable
{
@NotBlank
(
message
=
"登录名不能为空"
)
@ApiModelProperty
(
value
=
"登录名"
)
private
String
loginName
;
@NotBlank
(
message
=
"密码不能为空"
)
@ApiModelProperty
(
value
=
"密码"
)
private
String
password
;
@NotBlank
(
message
=
"用户名不能为空"
)
@ApiModelProperty
(
value
=
"用户名"
)
private
String
username
;
@ApiModelProperty
(
value
=
"用户头像"
)
private
String
userImg
;
@ApiModelProperty
(
value
=
"手机号"
)
private
String
phone
;
@ApiModelProperty
(
value
=
"身份证号"
)
private
String
idCardNo
;
}
src/main/java/com/fxkc/care/dto/UserInfoEditDTO.java
0 → 100644
View file @
1df2d3de
package
com.fxkc.care.dto
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
javax.validation.constraints.NotBlank
;
import
java.io.Serializable
;
/**
* @author JYH
* @date 2024/12/13 17:36
* @describe
*/
@Data
@ApiModel
(
value
=
"用户信息dto"
)
public
class
UserInfoEditDTO
implements
Serializable
{
@ApiModelProperty
(
value
=
"用户id"
)
private
String
id
;
@NotBlank
(
message
=
"用户名不能为空"
)
@ApiModelProperty
(
value
=
"用户名"
)
private
String
username
;
@ApiModelProperty
(
value
=
"用户头像"
)
private
String
userImg
;
@ApiModelProperty
(
value
=
"手机号"
)
private
String
phone
;
@ApiModelProperty
(
value
=
"身份证号"
)
private
String
idCardNo
;
}
src/main/java/com/fxkc/care/enums/DeleteFlagEnum.java
0 → 100644
View file @
1df2d3de
package
com.fxkc.care.enums
;
public
enum
DeleteFlagEnum
implements
IEnumNameValue
<
Integer
>
{
NOT_DELETE
(
0
,
"未删除"
),
DELETE
(
1
,
"删除"
);
private
Integer
value
;
private
String
name
;
DeleteFlagEnum
(
Integer
value
,
String
name
){
this
.
value
=
value
;
this
.
name
=
name
;
}
@Override
public
Integer
getValue
()
{
return
value
;
}
@Override
public
String
getName
()
{
return
name
;
}
}
src/main/java/com/fxkc/care/enums/IEnumNameValue.java
0 → 100644
View file @
1df2d3de
package
com.fxkc.care.enums
;
public
interface
IEnumNameValue
<
T
>
{
String
getName
();
T
getValue
();
}
src/main/java/com/fxkc/care/mapper/MenuInfoMapper.java
0 → 100644
View file @
1df2d3de
package
com.fxkc.care.mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.fxkc.care.domain.MenuInfo
;
/**
* <p>
* 菜单表 Mapper 接口
* </p>
*
* @author JYH
* @since 2024-12-14
*/
public
interface
MenuInfoMapper
extends
BaseMapper
<
MenuInfo
>
{
}
src/main/java/com/fxkc/care/mapper/RoleInfoMapper.java
0 → 100644
View file @
1df2d3de
package
com.fxkc.care.mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.fxkc.care.domain.RoleInfo
;
/**
* <p>
* 角色表 Mapper 接口
* </p>
*
* @author JYH
* @since 2024-12-14
*/
public
interface
RoleInfoMapper
extends
BaseMapper
<
RoleInfo
>
{
}
src/main/java/com/fxkc/care/mapper/RoleMenuMapper.java
0 → 100644
View file @
1df2d3de
package
com.fxkc.care.mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.fxkc.care.domain.RoleMenu
;
/**
* <p>
* 角色菜单表 Mapper 接口
* </p>
*
* @author JYH
* @since 2024-12-14
*/
public
interface
RoleMenuMapper
extends
BaseMapper
<
RoleMenu
>
{
}
src/main/java/com/fxkc/care/mapper/SysDictItemMapper.java
0 → 100644
View file @
1df2d3de
package
com.fxkc.care.mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.fxkc.care.domain.SysDictItem
;
/**
* <p>
* 字典子项表 Mapper 接口
* </p>
*
* @author JYH
* @since 2024-12-14
*/
public
interface
SysDictItemMapper
extends
BaseMapper
<
SysDictItem
>
{
}
src/main/java/com/fxkc/care/mapper/SysDictTypeMapper.java
0 → 100644
View file @
1df2d3de
package
com.fxkc.care.mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.fxkc.care.domain.SysDictType
;
/**
* <p>
* 系统字典类型表 Mapper 接口
* </p>
*
* @author JYH
* @since 2024-12-14
*/
public
interface
SysDictTypeMapper
extends
BaseMapper
<
SysDictType
>
{
}
src/main/java/com/fxkc/care/mapper/UserInfoMapper.java
0 → 100644
View file @
1df2d3de
package
com.fxkc.care.mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.fxkc.care.domain.UserInfo
;
/**
* <p>
* 用户表 Mapper 接口
* </p>
*
* @author JYH
* @since 2024-12-14
*/
public
interface
UserInfoMapper
extends
BaseMapper
<
UserInfo
>
{
}
src/main/java/com/fxkc/care/mapper/UserRoleMapper.java
0 → 100644
View file @
1df2d3de
package
com.fxkc.care.mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.fxkc.care.domain.UserRole
;
import
org.springframework.stereotype.Repository
;
/**
* <p>
* 用户角色表 Mapper 接口
* </p>
*
* @author JYH
* @since 2024-12-14
*/
@Repository
public
interface
UserRoleMapper
extends
BaseMapper
<
UserRole
>
{
}
src/main/java/com/fxkc/care/service/IMenuInfoService.java
0 → 100644
View file @
1df2d3de
package
com.fxkc.care.service
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.fxkc.care.domain.MenuInfo
;
/**
* <p>
* 菜单表 服务类
* </p>
*
* @author JYH
* @since 2024-12-14
*/
public
interface
IMenuInfoService
extends
IService
<
MenuInfo
>
{
}
src/main/java/com/fxkc/care/service/IRoleInfoService.java
0 → 100644
View file @
1df2d3de
package
com.fxkc.care.service
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.fxkc.care.domain.RoleInfo
;
/**
* <p>
* 角色表 服务类
* </p>
*
* @author JYH
* @since 2024-12-14
*/
public
interface
IRoleInfoService
extends
IService
<
RoleInfo
>
{
}
src/main/java/com/fxkc/care/service/IRoleMenuService.java
0 → 100644
View file @
1df2d3de
package
com.fxkc.care.service
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.fxkc.care.domain.RoleMenu
;
/**
* <p>
* 角色菜单表 服务类
* </p>
*
* @author JYH
* @since 2024-12-14
*/
public
interface
IRoleMenuService
extends
IService
<
RoleMenu
>
{
}
src/main/java/com/fxkc/care/service/ISysDictItemService.java
0 → 100644
View file @
1df2d3de
package
com.fxkc.care.service
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.fxkc.care.domain.SysDictItem
;
/**
* <p>
* 字典子项表 服务类
* </p>
*
* @author JYH
* @since 2024-12-14
*/
public
interface
ISysDictItemService
extends
IService
<
SysDictItem
>
{
}
src/main/java/com/fxkc/care/service/ISysDictTypeService.java
0 → 100644
View file @
1df2d3de
package
com.fxkc.care.service
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.fxkc.care.domain.SysDictType
;
/**
* <p>
* 系统字典类型表 服务类
* </p>
*
* @author JYH
* @since 2024-12-14
*/
public
interface
ISysDictTypeService
extends
IService
<
SysDictType
>
{
}
src/main/java/com/fxkc/care/service/IUserInfoService.java
0 → 100644
View file @
1df2d3de
package
com.fxkc.care.service
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.fxkc.care.common.AjaxResult
;
import
com.fxkc.care.domain.UserInfo
;
import
com.fxkc.care.dto.UserInfoAddDTO
;
import
com.fxkc.care.dto.UserInfoEditDTO
;
import
com.fxkc.care.vo.UserInfoVO
;
import
javax.servlet.http.HttpServletResponse
;
/**
* <p>
* 用户表 服务类
* </p>
*
* @author JYH
* @since 2024-12-14
*/
public
interface
IUserInfoService
extends
IService
<
UserInfo
>
{
AjaxResult
doLogin
(
UserInfoVO
userInfoVO
,
HttpServletResponse
response
);
AjaxResult
logout
();
AjaxResult
add
(
UserInfoAddDTO
dto
);
AjaxResult
edit
(
UserInfoEditDTO
dto
);
AjaxResult
delete
(
String
id
);
}
src/main/java/com/fxkc/care/service/IUserRoleService.java
0 → 100644
View file @
1df2d3de
package
com.fxkc.care.service
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.fxkc.care.domain.UserRole
;
/**
* <p>
* 用户角色表 服务类
* </p>
*
* @author JYH
* @since 2024-12-14
*/
public
interface
IUserRoleService
extends
IService
<
UserRole
>
{
}
src/main/java/com/fxkc/care/service/impl/MenuInfoServiceImpl.java
0 → 100644
View file @
1df2d3de
package
com.fxkc.care.service.impl
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.fxkc.care.domain.MenuInfo
;
import
com.fxkc.care.mapper.MenuInfoMapper
;
import
com.fxkc.care.service.IMenuInfoService
;
import
org.springframework.stereotype.Service
;
/**
* <p>
* 菜单表 服务实现类
* </p>
*
* @author JYH
* @since 2024-12-14
*/
@Service
public
class
MenuInfoServiceImpl
extends
ServiceImpl
<
MenuInfoMapper
,
MenuInfo
>
implements
IMenuInfoService
{
}
src/main/java/com/fxkc/care/service/impl/RoleInfoServiceImpl.java
0 → 100644
View file @
1df2d3de
package
com.fxkc.care.service.impl
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.fxkc.care.domain.RoleInfo
;
import
com.fxkc.care.mapper.RoleInfoMapper
;
import
com.fxkc.care.service.IRoleInfoService
;
import
org.springframework.stereotype.Service
;
/**
* <p>
* 角色表 服务实现类
* </p>
*
* @author JYH
* @since 2024-12-14
*/
@Service
public
class
RoleInfoServiceImpl
extends
ServiceImpl
<
RoleInfoMapper
,
RoleInfo
>
implements
IRoleInfoService
{
}
src/main/java/com/fxkc/care/service/impl/RoleMenuServiceImpl.java
0 → 100644
View file @
1df2d3de
package
com.fxkc.care.service.impl
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.fxkc.care.domain.RoleMenu
;
import
com.fxkc.care.mapper.RoleMenuMapper
;
import
com.fxkc.care.service.IRoleMenuService
;
import
org.springframework.stereotype.Service
;
/**
* <p>
* 角色菜单表 服务实现类
* </p>
*
* @author JYH
* @since 2024-12-14
*/
@Service
public
class
RoleMenuServiceImpl
extends
ServiceImpl
<
RoleMenuMapper
,
RoleMenu
>
implements
IRoleMenuService
{
}
src/main/java/com/fxkc/care/service/impl/SysDictItemServiceImpl.java
0 → 100644
View file @
1df2d3de
package
com.fxkc.care.service.impl
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.fxkc.care.domain.SysDictItem
;
import
com.fxkc.care.mapper.SysDictItemMapper
;
import
com.fxkc.care.service.ISysDictItemService
;
import
org.springframework.stereotype.Service
;
/**
* <p>
* 字典子项表 服务实现类
* </p>
*
* @author JYH
* @since 2024-12-14
*/
@Service
public
class
SysDictItemServiceImpl
extends
ServiceImpl
<
SysDictItemMapper
,
SysDictItem
>
implements
ISysDictItemService
{
}
src/main/java/com/fxkc/care/service/impl/SysDictTypeServiceImpl.java
0 → 100644
View file @
1df2d3de
package
com.fxkc.care.service.impl
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.fxkc.care.domain.SysDictType
;
import
com.fxkc.care.mapper.SysDictTypeMapper
;
import
com.fxkc.care.service.ISysDictTypeService
;
import
org.springframework.stereotype.Service
;
/**
* <p>
* 系统字典类型表 服务实现类
* </p>
*
* @author JYH
* @since 2024-12-14
*/
@Service
public
class
SysDictTypeServiceImpl
extends
ServiceImpl
<
SysDictTypeMapper
,
SysDictType
>
implements
ISysDictTypeService
{
}
src/main/java/com/fxkc/care/service/impl/UserInfoServiceImpl.java
0 → 100644
View file @
1df2d3de
package
com.fxkc.care.service.impl
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.toolkit.CollectionUtils
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.fxkc.care.common.AjaxResult
;
import
com.fxkc.care.domain.UserInfo
;
import
com.fxkc.care.domain.UserRole
;
import
com.fxkc.care.dto.UserInfoAddDTO
;
import
com.fxkc.care.dto.UserInfoEditDTO
;
import
com.fxkc.care.enums.CommonEnum
;
import
com.fxkc.care.enums.DeleteFlagEnum
;
import
com.fxkc.care.mapper.UserInfoMapper
;
import
com.fxkc.care.mapper.UserRoleMapper
;
import
com.fxkc.care.service.IUserInfoService
;
import
com.fxkc.care.utils.*
;
import
com.fxkc.care.vo.UserInfoVO
;
import
lombok.SneakyThrows
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.data.redis.core.RedisTemplate
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.util.Assert
;
import
org.springframework.util.ObjectUtils
;
import
javax.annotation.Resource
;
import
javax.servlet.http.Cookie
;
import
javax.servlet.http.HttpServletResponse
;
import
java.util.*
;
import
java.util.concurrent.TimeUnit
;
/**
* <p>
* 用户表 服务实现类
* </p>
*
* @author JYH
* @since 2024-12-14
*/
@Slf4j
@Service
public
class
UserInfoServiceImpl
extends
ServiceImpl
<
UserInfoMapper
,
UserInfo
>
implements
IUserInfoService
{
@Autowired
private
UserRoleMapper
userRoleMapper
;
//密码加密公钥
@Value
(
"${rsa.publicKey}"
)
private
String
rsaPublicKey
;
//密码加密私钥
@Value
(
"${rsa.privateKey}"
)
private
String
rsaPrivateKey
;
//账号默认密码
@Value
(
"${user.defaultPassword}"
)
private
String
defaultPassword
;
@Resource
private
RedisTemplate
redisTemplate
;
/**
* 用户登录
*
* @param userInfoVO
* @param response
* @return
*/
@Override
public
AjaxResult
doLogin
(
UserInfoVO
userInfoVO
,
HttpServletResponse
response
)
{
//1.非空校验
Assert
.
notNull
(
userInfoVO
.
getLoginName
(),
"用户名不得为空"
);
Assert
.
notNull
(
userInfoVO
.
getPassword
(),
"密码不得为空"
);
UserInfo
userInfoDB
=
this
.
baseMapper
.
selectOne
(
Wrappers
.<
UserInfo
>
lambdaQuery
()
.
eq
(
UserInfo:
:
getLoginName
,
userInfoVO
.
getLoginName
())
.
eq
(
UserInfo:
:
getDeleteFlag
,
DeleteFlagEnum
.
NOT_DELETE
.
getValue
())
);
//2.判断用户是否存在
if
(
ObjectUtils
.
isEmpty
(
userInfoDB
))
{
return
AjaxResult
.
error401
(
"用户名错误!"
);
}
//3.数据库密码解密、前端密码解密
String
password
=
RSAUtils
.
decrypt
(
userInfoDB
.
getPassword
(),
this
.
rsaPrivateKey
);
String
inputPassword
=
RSAUtils
.
decrypt
(
userInfoVO
.
getPassword
(),
this
.
rsaPrivateKey
);
if
(!
StringUtils
.
equals
(
password
,
inputPassword
))
{
return
AjaxResult
.
error401
(
"输入密码错误!"
);
}
//4.生成JWT
String
salt
=
userInfoDB
.
getSalt
();
Map
<
String
,
Object
>
jwtPayloadUserInfo
=
new
HashMap
<>();
jwtPayloadUserInfo
.
put
(
"loginName"
,
userInfoDB
.
getLoginName
());
jwtPayloadUserInfo
.
put
(
"loginTime"
,
MultiThreadDateUtil
.
format
(
new
Date
(),
"yyyy-MM-dd HH:mm:ss"
));
long
nowMilliSeconds
=
System
.
currentTimeMillis
();
jwtPayloadUserInfo
.
put
(
"timestamp"
,
nowMilliSeconds
);
//该字段用来验证jwt的有效性,和redis的jwtsalt[1]比较
String
jwt
=
JwtUtil
.
createJwt
(
jwtPayloadUserInfo
,
salt
);
//5.保存(覆盖)用户信息、salt_timestamp到redis中
redisTemplate
.
opsForValue
().
set
(
"jwtsalt:"
+
userInfoVO
.
getLoginName
(),
salt
+
"."
+
nowMilliSeconds
);
redisTemplate
.
opsForValue
().
getOperations
().
expire
(
"jwtsalt:"
+
userInfoVO
.
getLoginName
(),
24
,
TimeUnit
.
HOURS
);
BeanUtils
.
copyProperties
(
userInfoDB
,
userInfoVO
);
userInfoVO
.
setPassword
(
""
);
redisTemplate
.
opsForHash
().
put
(
CommonEnum
.
USER_INFO
.
getCode
(),
userInfoDB
.
getLoginName
(),
userInfoVO
);
//6.response.cookie加入JWT,重定向到首页
Cookie
cookie
=
new
Cookie
(
CommonEnum
.
USER_TOKEN
.
getCode
(),
jwt
);
cookie
.
setPath
(
"/"
);
//这里需要设置,否则跳转页面时浏览器不能写入cookie到域名下
response
.
addCookie
(
cookie
);
//7.记录该用户的登录时间到redis中
redisTemplate
.
opsForValue
().
set
(
userInfoDB
.
getUsername
()
+
"_loginTime"
,
String
.
valueOf
(
nowMilliSeconds
));
redisTemplate
.
opsForValue
().
getOperations
().
expire
(
userInfoDB
.
getUsername
()
+
"_loginTime"
,
24
,
TimeUnit
.
HOURS
);
log
.
info
(
"用户{}登录成功!"
,
userInfoVO
.
getLoginName
());
return
AjaxResult
.
success
(
"登录成功!"
);
}
/**
* 退出登录
*
* @return
*/
@Override
public
AjaxResult
logout
()
{
// 从Request中获取UserInfo,根据loginName从redis中删除该用户的jwtsalt
UserInfoVO
userInfo
=
RequestUtil
.
getUserInfo
();
redisTemplate
.
opsForValue
().
getOperations
().
delete
(
"jwtsalt:"
+
userInfo
.
getLoginName
());
log
.
info
(
"用户{}登出成功!"
,
userInfo
.
getLoginName
());
return
AjaxResult
.
success
(
"登出成功!"
);
}
/**
* 新增用户
*
* @param dto
* @return
*/
@SneakyThrows
@Override
public
AjaxResult
add
(
UserInfoAddDTO
dto
)
{
List
<
UserInfo
>
userList
=
new
ArrayList
<>();
// 校验手机号
if
(
StringUtils
.
isNotBlank
(
dto
.
getPhone
()))
{
if
(!
ValidatorUtil
.
isMobile
(
dto
.
getPhone
()))
{
return
AjaxResult
.
error
(
"手机号码格式错误!"
);
}
userList
=
this
.
baseMapper
.
selectList
(
new
LambdaQueryWrapper
<
UserInfo
>()
.
eq
(
UserInfo:
:
getDeleteFlag
,
DeleteFlagEnum
.
NOT_DELETE
.
getValue
())
.
eq
(
UserInfo:
:
getPhone
,
dto
.
getPhone
()));
if
(
CollectionUtils
.
isNotEmpty
(
userList
))
{
return
AjaxResult
.
error
(
"手机号码已存在,请更换其他手机号码!"
);
}
}
// 校验身份证号
if
(
StringUtils
.
isNotBlank
(
dto
.
getIdCardNo
()))
{
if
(!
ValidatorUtil
.
isIdCard
(
dto
.
getIdCardNo
()))
{
return
AjaxResult
.
error
(
"身份证格式错误!"
);
}
userList
=
this
.
baseMapper
.
selectList
(
new
LambdaQueryWrapper
<
UserInfo
>()
.
eq
(
UserInfo:
:
getDeleteFlag
,
DeleteFlagEnum
.
NOT_DELETE
.
getValue
())
.
eq
(
UserInfo:
:
getIdCardNo
,
dto
.
getIdCardNo
()));
if
(
CollectionUtils
.
isNotEmpty
(
userList
))
{
return
AjaxResult
.
error
(
"身份证号码已存在,请更换其他身份证号码!"
);
}
}
// 判断登录用户名是否存在
userList
=
this
.
baseMapper
.
selectList
(
new
LambdaQueryWrapper
<
UserInfo
>()
.
eq
(
UserInfo:
:
getDeleteFlag
,
DeleteFlagEnum
.
NOT_DELETE
.
getValue
())
.
eq
(
UserInfo:
:
getLoginName
,
dto
.
getLoginName
()));
if
(
CollectionUtils
.
isNotEmpty
(
userList
))
{
return
AjaxResult
.
error
(
"登录名已存在,请更换其他登录名!"
);
}
UserInfo
userInfo
=
new
UserInfo
();
BeanUtils
.
copyProperties
(
dto
,
userInfo
);
// 获取初始密码
String
password
=
RSAUtils
.
encrypt
(
this
.
defaultPassword
,
this
.
rsaPublicKey
);
// 获取盐
String
salt
=
UuidUtil
.
getUUID
();
userInfo
.
setPassword
(
password
);
userInfo
.
setSalt
(
salt
);
this
.
save
(
userInfo
);
return
AjaxResult
.
success
(
"新增成功!"
);
}
/**
* 编辑
*
* @param dto
* @return
*/
@Override
public
AjaxResult
edit
(
UserInfoEditDTO
dto
)
{
UserInfo
userInfo
=
new
UserInfo
();
BeanUtils
.
copyProperties
(
dto
,
userInfo
);
this
.
updateById
(
userInfo
);
return
AjaxResult
.
success
(
"编辑成功!"
);
}
/**
* 删除
*
* @param id
* @return
*/
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Override
public
AjaxResult
delete
(
String
id
)
{
// 删除用户信息
this
.
delete
(
id
);
// 删除用户角色中间表信息
userRoleMapper
.
delete
(
Wrappers
.<
UserRole
>
lambdaQuery
().
eq
(
UserRole:
:
getUserId
,
id
));
return
AjaxResult
.
success
(
"删除成功!"
);
}
}
src/main/java/com/fxkc/care/service/impl/UserRoleServiceImpl.java
0 → 100644
View file @
1df2d3de
package
com.fxkc.care.service.impl
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.fxkc.care.domain.UserRole
;
import
com.fxkc.care.mapper.UserRoleMapper
;
import
com.fxkc.care.service.IUserRoleService
;
import
org.springframework.stereotype.Service
;
/**
* <p>
* 用户角色表 服务实现类
* </p>
*
* @author JYH
* @since 2024-12-14
*/
@Service
public
class
UserRoleServiceImpl
extends
ServiceImpl
<
UserRoleMapper
,
UserRole
>
implements
IUserRoleService
{
}
src/main/java/com/fxkc/care/utils/MD5Util.java
0 → 100644
View file @
1df2d3de
package
com.fxkc.care.utils
;
import
org.apache.shiro.crypto.hash.SimpleHash
;
import
org.apache.shiro.util.ByteSource
;
import
java.security.MessageDigest
;
public
class
MD5Util
{
/**
* 密码加密
*
* @param password
* @return
*/
public
static
String
encode
(
String
password
)
{
return
processEncode
(
password
);
}
public
static
String
encodeBySalt
(
String
password
,
String
salt
)
{
return
new
SimpleHash
(
"md5"
,
password
,
ByteSource
.
Util
.
bytes
(
salt
),
2
).
toHex
();
}
private
static
String
processEncode
(
String
password
)
{
MessageDigest
md5
=
null
;
try
{
md5
=
MessageDigest
.
getInstance
(
"MD5"
);
}
catch
(
Exception
e
)
{
throw
new
RuntimeException
(
e
);
}
char
[]
charArray
=
password
.
toCharArray
();
byte
[]
byteArray
=
new
byte
[
charArray
.
length
];
for
(
int
i
=
0
;
i
<
charArray
.
length
;
i
++)
{
byteArray
[
i
]
=
(
byte
)
charArray
[
i
];
}
byte
[]
md5Bytes
=
md5
.
digest
(
byteArray
);
StringBuffer
hexValue
=
new
StringBuffer
();
for
(
int
i
=
0
;
i
<
md5Bytes
.
length
;
i
++)
{
int
val
=
((
int
)
md5Bytes
[
i
])
&
0xff
;
if
(
val
<
16
)
{
hexValue
.
append
(
"0"
);
}
hexValue
.
append
(
Integer
.
toHexString
(
val
));
}
return
hexValue
.
toString
();
}
// public static void main(String[] args) {
// System.out.println("MD5Util.encodeBySalt(\"123456\",\"1\") = " + MD5Util.encodeBySalt("123456","1"));
// }
}
src/main/java/com/fxkc/care/utils/MultiThreadDateUtil.java
0 → 100644
View file @
1df2d3de
package
com.fxkc.care.utils
;
import
java.text.SimpleDateFormat
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.Map
;
public
class
MultiThreadDateUtil
{
/**
* 存放不同的日期模板格式的sdf的Map
*/
private
static
ThreadLocal
<
Map
<
String
,
SimpleDateFormat
>>
sdfMap
=
new
ThreadLocal
<
Map
<
String
,
SimpleDateFormat
>>()
{
protected
Map
<
String
,
SimpleDateFormat
>
initialValue
()
{
return
new
HashMap
<
String
,
SimpleDateFormat
>();
}
};
/**
* 返回一个SimpleDateFormat,每个线程只会new一次pattern对应的sdf
*/
private
static
SimpleDateFormat
getSdf
(
String
pattern
)
{
Map
<
String
,
SimpleDateFormat
>
t
=
sdfMap
.
get
();
SimpleDateFormat
sdf
=
t
.
get
(
pattern
);
if
(
sdf
==
null
)
{
sdf
=
new
SimpleDateFormat
(
pattern
);
t
.
put
(
pattern
,
sdf
);
}
return
sdf
;
}
public
static
String
format
(
Date
date
,
String
pattern
)
{
return
getSdf
(
pattern
).
format
(
date
);
}
public
static
Date
parse
(
String
dateStr
,
String
pattern
)
throws
Exception
{
return
getSdf
(
pattern
).
parse
(
dateStr
);
}
public
static
String
getPeriodStrBy2Date
(
Date
date1
,
Date
date2
)
{
long
between
=
date1
.
getTime
()
-
date2
.
getTime
();
long
day
=
between
/
(
24
*
60
*
60
*
1000
);
long
hour
=
between
/
(
60
*
60
*
1000
)
-
day
*
24
;
long
min
=
between
/
(
60
*
1000
)
-
day
*
24
*
60
-
hour
*
60
;
long
s
=
between
/
1000
-
day
*
24
*
60
*
60
-
hour
*
60
*
60
-
min
*
60
;
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
day
!=
0L
?
day
+
"天"
:
""
)
.
append
(
hour
!=
0L
?
hour
+
"小时"
:
""
)
.
append
(
min
!=
0L
?
min
+
"分钟"
:
""
)
.
append
(
s
!=
0L
?
s
+
"秒"
:
""
);
return
sb
.
toString
();
}
public
static
void
main
(
String
[]
args
)
throws
Exception
{
String
date1str
=
"2024-07-01 14:25:55"
;
String
date2str
=
"2024-07-01 16:15:60"
;
Date
date1
=
parse
(
date1str
,
"yyyy-MM-dd HH:mm:ss"
);
Date
date2
=
parse
(
date2str
,
"yyyy-MM-dd HH:mm:ss"
);
String
periodStrBy2Date
=
getPeriodStrBy2Date
(
date2
,
date1
);
System
.
out
.
println
(
"periodStrBy2Date = "
+
periodStrBy2Date
);
}
}
src/main/java/com/fxkc/care/utils/RSAUtils.java
0 → 100644
View file @
1df2d3de
package
com.fxkc.care.utils
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.tomcat.util.codec.binary.Base64
;
import
javax.crypto.BadPaddingException
;
import
javax.crypto.Cipher
;
import
javax.crypto.IllegalBlockSizeException
;
import
javax.crypto.NoSuchPaddingException
;
import
java.io.UnsupportedEncodingException
;
import
java.security.*
;
import
java.security.interfaces.RSAPrivateKey
;
import
java.security.interfaces.RSAPublicKey
;
import
java.security.spec.InvalidKeySpecException
;
import
java.security.spec.PKCS8EncodedKeySpec
;
import
java.security.spec.X509EncodedKeySpec
;
import
java.util.HashMap
;
import
java.util.Map
;
@Slf4j
public
class
RSAUtils
{
private
static
String
encoding
=
"utf-8"
;
// RSA最大加密明文大小
private
static
final
int
MAX_ENCRYPT_BLOCK
=
117
;
// RSA最大解密密文大小
private
static
final
int
MAX_DECRYPT_BLOCK
=
128
;
private
static
final
String
KEY_ALGORITHM
=
"RSA"
;
private
static
final
String
ENDE_ALGORITHMS
=
"RSA/ECB/PKCS1Padding"
;
/**
* 生成RSA 公私钥,可选长度为1025,2048位.
*/
public
static
Map
<
String
,
String
>
generateRsaKey
(
int
keySize
)
{
Map
<
String
,
String
>
result
=
new
HashMap
<>(
2
);
try
{
KeyPairGenerator
keyPairGen
=
KeyPairGenerator
.
getInstance
(
KEY_ALGORITHM
);
// 初始化密钥对生成器,密钥大小为1024 2048位
keyPairGen
.
initialize
(
keySize
,
new
SecureRandom
());
// 生成一个密钥对,保存在keyPair中
KeyPair
keyPair
=
keyPairGen
.
generateKeyPair
();
// 得到公钥字符串
result
.
put
(
"publicKey"
,
new
String
(
Base64
.
encodeBase64
(
keyPair
.
getPublic
().
getEncoded
())));
// 得到私钥字符串
result
.
put
(
"privateKey"
,
new
String
(
Base64
.
encodeBase64
(
keyPair
.
getPrivate
().
getEncoded
())));
}
catch
(
GeneralSecurityException
e
)
{
e
.
printStackTrace
();
}
return
result
;
}
/**
* RSA私钥解密
* @param str 解密字符串
* @param privateKey 私钥
* @return 明文
*/
public
static
String
decrypt
(
String
str
,
String
privateKey
)
{
//64位解码加密后的字符串
byte
[]
inputByte
;
String
outStr
=
""
;
try
{
inputByte
=
Base64
.
decodeBase64
(
str
.
getBytes
(
"UTF-8"
));
//base64编码的私钥
byte
[]
decoded
=
Base64
.
decodeBase64
(
privateKey
);
RSAPrivateKey
priKey
=
(
RSAPrivateKey
)
KeyFactory
.
getInstance
(
"RSA"
).
generatePrivate
(
new
PKCS8EncodedKeySpec
(
decoded
));
//RSA解密
Cipher
cipher
=
Cipher
.
getInstance
(
"RSA"
);
cipher
.
init
(
Cipher
.
DECRYPT_MODE
,
priKey
);
outStr
=
new
String
(
cipher
.
doFinal
(
inputByte
));
}
catch
(
UnsupportedEncodingException
|
NoSuchPaddingException
|
InvalidKeyException
|
IllegalBlockSizeException
|
BadPaddingException
|
InvalidKeySpecException
|
NoSuchAlgorithmException
e
)
{
e
.
printStackTrace
();
}
return
outStr
;
}
/**
* RSA公钥加密
* @param str 需要加密的字符串
* @param publicKey 公钥
* @return 密文
* @throws Exception 加密过程中的异常信息
*/
public
static
String
encrypt
(
String
str
,
String
publicKey
)
throws
Exception
{
//base64编码的公钥
byte
[]
decoded
=
Base64
.
decodeBase64
(
publicKey
);
RSAPublicKey
pubKey
=
(
RSAPublicKey
)
KeyFactory
.
getInstance
(
"RSA"
).
generatePublic
(
new
X509EncodedKeySpec
(
decoded
));
//RSA加密
Cipher
cipher
=
Cipher
.
getInstance
(
"RSA"
);
cipher
.
init
(
Cipher
.
ENCRYPT_MODE
,
pubKey
);
String
outStr
=
Base64
.
encodeBase64String
(
cipher
.
doFinal
(
str
.
getBytes
(
"UTF-8"
)));
return
outStr
;
}
public
static
void
main
(
String
[]
args
)
throws
Exception
{
System
.
out
.
println
(
encrypt
(
"123456"
,
"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDN2uC2W2wzQ7yZpdpBZvw+w/QeEJGL8r457W21ndnXLX2kFUJWOt+iTqP7B94RPQzRzPBspVtqD2bO7B3HEYAhm40WB8eId2oM1vlwTXs6jxQ936s7/LYzQ4ux9LqHEhCwhoyYW0FZUS6chbH0pSb49Al3CxcL0Yz5yr4Z7maVSwIDAQAB"
));
}
}
src/main/java/com/fxkc/care/utils/UuidUtil.java
0 → 100644
View file @
1df2d3de
package
com.fxkc.care.utils
;
import
java.util.UUID
;
/**
* UUID工具类
*/
public
class
UuidUtil
{
public
UuidUtil
(){
}
/**
* 获得一个UUID
*
* @return String UUID
*/
public
static
String
getUUID
()
{
return
UUID
.
randomUUID
().
toString
().
replace
(
"-"
,
""
).
toLowerCase
();
}
/**
* 获得指定数目的UUID
*
* @param number int 需要获得的UUID数量
* @return String[] UUID数组
*/
public
static
String
[]
getUUID
(
int
number
)
{
if
(
number
<
1
)
{
return
null
;
}
String
[]
ss
=
new
String
[
number
];
for
(
int
i
=
0
;
i
<
number
;
i
++)
{
ss
[
i
]
=
getUUID
();
}
return
ss
;
}
}
src/main/java/com/fxkc/care/utils/ValidatorUtil.java
0 → 100644
View file @
1df2d3de
package
com.fxkc.care.utils
;
import
java.util.regex.Pattern
;
/**
* 校验器工具类
*
* @author shexuegang
* @since 2023-11-30
*/
public
class
ValidatorUtil
{
/**
* 正则表达式:验证用户名
*/
private
static
final
String
REGEX_USERNAME
=
"^[a-zA-Z]\\w{5,17}$"
;
/**
* 正则表达式:验证密码
*/
private
static
final
String
REGEX_PASSWORD
=
"^(?:(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])|(?=.*[A-Z])(?=.*[a-z])(?=.*[\\W_])|(?=.*[A-Z])(?=.*[0-9])(?=.*[\\W_])|(?=.*[a-z])(?=.*[0-9])(?=.*[\\W_])).+$"
;
/**
* 正则表达式:验证手机号
*/
private
static
final
String
REGEX_MOBILE
=
"^((13[0-9])|(14[5,7,9])|(15[0-3,5-9])|(166)|(17[3,5,6,7,8])|(18[0-9])|(19[8,9]))\\d{8}$"
;
/**
* 正则表达式:验证邮箱
*/
private
static
final
String
REGEX_EMAIL
=
"^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$"
;
/**
* 正则表达式:验证汉字
*/
private
static
final
String
REGEX_CHINESE
=
"^[\u4e00-\u9fa5],{0,}$"
;
/**
* 正则表达式:验证身份证
*/
private
static
final
String
REGEX_ID_CARD
=
"(^\\d{15}$)|(^\\d{17}([0-9]|X)$)"
;
/**
* 正则表达式:验证网络地址
*/
private
static
final
String
REGEX_URL
=
"http(s)?://([\\w-]+\\.)+[\\w-]+(/[\\w- ./?%&=]*)?"
;
/**
* 正则表达式:验证接口地址
*/
private
static
final
String
REGEX_INTERFACE_URL
=
"http(s)?://(([a-zA-Z0-9\\-\\.]+\\.[a-zA-Z0-9]{2,})|((25[0-5]|(2[0-4]|1\\d|[1-9]|)\\d)\\.?\\b){4})(:[0-9]{1,5})?([\\S]*)?"
;
/**
* 正则表达式:验证IP地址
*/
private
static
final
String
REGEX_IP_ADDR
=
"(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)"
;
/**
* 正则表达式:验证是否包含大写字母
*/
private
static
final
String
REGEX_CONTAINS_UPPERCASE_LETTERS
=
"^(?=.*[A-Z]).+$"
;
/**
* 正则表达式:验证是否包含小写字母
*/
private
static
final
String
REGEX_CONTAINS_LOWERCASE_LETTERS
=
"^(?=.*[a-z]).+$"
;
/**
* 正则表达式:验证是否包含数字
*/
private
static
final
String
REGEX_CONTAINS_NUMBERS
=
"^(?=.*[0-9]).+$"
;
/**
* 正则表达式:验证是否包含特殊字符
*/
private
static
final
String
REGEX_CONTAINS_SPECIAL_CHARACTERS
=
"^.*[!@#$%^&*()_+=\\-].*$"
;
/**
* 校验用户名
*
* @param username 用户名
* @return 校验通过返回true,否则返回false
*/
public
static
boolean
isUsername
(
String
username
)
{
return
Pattern
.
matches
(
REGEX_USERNAME
,
username
);
}
/**
* 校验密码
*
* @param password 密码
* @return 校验通过返回true,否则返回false
*/
public
static
boolean
isPassword
(
String
password
)
{
return
Pattern
.
matches
(
REGEX_PASSWORD
,
password
);
}
/**
* 校验手机号
*
* @param mobile 手机号
* @return 校验通过返回true,否则返回false
*/
public
static
boolean
isMobile
(
String
mobile
)
{
return
Pattern
.
matches
(
REGEX_MOBILE
,
mobile
);
}
/**
* 校验邮箱
*
* @param email 邮箱
* @return 校验通过返回true,否则返回false
*/
public
static
boolean
isEmail
(
String
email
)
{
return
Pattern
.
matches
(
REGEX_EMAIL
,
email
);
}
/**
* 校验汉字
*
* @param chinese 汉字
* @return 校验通过返回true,否则返回false
*/
public
static
boolean
isChinese
(
String
chinese
)
{
return
Pattern
.
matches
(
REGEX_CHINESE
,
chinese
);
}
/**
* 校验身份证号
*
* @param idCard 身份证号
* @return 校验通过返回true,否则返回false
*/
public
static
boolean
isIdCard
(
String
idCard
)
{
return
Pattern
.
matches
(
REGEX_ID_CARD
,
idCard
);
}
/**
* 校验网络地址
*
* @param url 网络地址
* @return 校验通过返回true,否则返回false
*/
public
static
boolean
isUrl
(
String
url
)
{
return
Pattern
.
matches
(
REGEX_URL
,
url
);
}
/**
* 校验接口地址
*
* @param interfaceUrl 接口地址
* @return 校验通过返回true,否则返回false
*/
public
static
boolean
isInterfaceUrl
(
String
interfaceUrl
)
{
return
Pattern
.
matches
(
REGEX_INTERFACE_URL
,
interfaceUrl
);
}
/**
* 校验IP地址
*
* @param ipAddr IP地址
* @return 校验通过返回true,否则返回false
*/
public
static
boolean
isIPAddr
(
String
ipAddr
)
{
return
Pattern
.
matches
(
REGEX_IP_ADDR
,
ipAddr
);
}
/**
* 校验是否包含大写字母
*
* @param text 待校验文本
* @return 校验通过返回true,否则返回false
*/
public
static
boolean
containsUpperCaseLetters
(
String
text
)
{
return
Pattern
.
matches
(
REGEX_CONTAINS_UPPERCASE_LETTERS
,
text
);
}
/**
* 校验是否包含小写字母
*
* @param text 待校验文本
* @return 校验通过返回true,否则返回false
*/
public
static
boolean
containsLowerCaseLetters
(
String
text
)
{
return
Pattern
.
matches
(
REGEX_CONTAINS_LOWERCASE_LETTERS
,
text
);
}
/**
* 校验是否包含数字
*
* @param text 待校验文本
* @return 校验通过返回true,否则返回false
*/
public
static
boolean
containsNumbers
(
String
text
)
{
return
Pattern
.
matches
(
REGEX_CONTAINS_NUMBERS
,
text
);
}
/**
* 校验是否包含特殊字符
*
* @param text 待校验文本
* @return 校验通过返回true,否则返回false
*/
public
static
boolean
containsSpecialCharacters
(
String
text
)
{
return
Pattern
.
matches
(
REGEX_CONTAINS_SPECIAL_CHARACTERS
,
text
);
}
}
src/main/java/com/fxkc/care/vo/UserInfoVO.java
View file @
1df2d3de
...
...
@@ -18,7 +18,19 @@ public class UserInfoVO implements Serializable {
@ApiModelProperty
(
value
=
"登录名"
)
private
String
loginName
;
@ApiModelProperty
(
value
=
"密码"
)
private
String
password
;
@ApiModelProperty
(
value
=
"用户名"
)
private
String
userName
;
private
String
username
;
@ApiModelProperty
(
value
=
"用户头像"
)
private
String
userImg
;
@ApiModelProperty
(
value
=
"手机号"
)
private
String
phone
;
@ApiModelProperty
(
value
=
"身份证号"
)
private
String
idCardNo
;
}
src/main/resources/application-dev.properties
View file @
1df2d3de
...
...
@@ -9,9 +9,16 @@ spring.datasource.password=123456
#Redis\u914D\u7F6E
spring.redis.database
=
9
spring.redis.host
=
localhost
spring.redis.host
=
10.10.31.140
spring.redis.port
=
6379
spring.redis.password
=
#\u63A7\u5236logback level
logback.logging.customLevel
=
debug
\ No newline at end of file
logback.logging.customLevel
=
debug
# \u5BC6\u7801\u52A0\u5BC6\u516C\u94A5\u3001\u79C1\u94A5
rsa.publicKey
=
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDN2uC2W2wzQ7yZpdpBZvw+w/QeEJGL8r457W21ndnXLX2kFUJWOt+iTqP7B94RPQzRzPBspVtqD2bO7B3HEYAhm40WB8eId2oM1vlwTXs6jxQ936s7/LYzQ4ux9LqHEhCwhoyYW0FZUS6chbH0pSb49Al3CxcL0Yz5yr4Z7maVSwIDAQAB
rsa.privateKey
=
MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAM3a4LZbbDNDvJml2kFm/D7D9B4QkYvyvjntbbWd2dctfaQVQlY636JOo/sH3hE9DNHM8GylW2oPZs7sHccRgCGbjRYHx4h3agzW+XBNezqPFD3fqzv8tjNDi7H0uocSELCGjJhbQVlRLpyFsfSlJvj0CXcLFwvRjPnKvhnuZpVLAgMBAAECgYAW5SYjAg4JsZnzWM/qgELD1FV9VohpkUj49mBCV9kXppaXvkmPf6LJ0YdJbzmSn0CiwPFolAeTxzy+/OHe9yJR53gq4vS8kPjknAgnMCuEJLCD8y1zvCD6Xow5qb3eEvz7/HLAeFVvNv0j2tamJ7V5DLl49FO+A01Myxmdpmy5QQJBAO9X9wsXnth6AP9BlI359vgb1Pl/+miKIEm+7Xt9/tTHAFqPh+djZZGeo7J9BZjBaLeQeOCVjiHl4o1+6QE2HyECQQDcLkuEROEYuP2WA62EVfLEo+KbB7dkB+GulYObAS73QPGfehlw0JY0gRYC/UQ9i27LMA6TJKcytv9XtsnPAcLrAkEA411r+GSS6FBV/CYfahQIMb+2vOF/TqnQbF3smcCiQR1eT6lD0GLTDNdn6Fnt5CPvR1n+ClLoN3l7kzD5RcZVIQJBAL2Cu0zlXDlDQEDWeYrlz0ahKHH3ekmG3yC9X8ESi7IVG+L/3NXVMvOOB7wa8ZlnYb1RZ7oOWjq0d6KvmZOrGHECQBTQpXuFyqQIuR61WJzGFTBpmoas13J3PxiOEfeVIeAP8Pd7Q451321S7KACmRTaSdV7o5w2ZfrK7CaDjV1JvXE=
# \u7528\u6237\u9ED8\u8BA4\u5BC6\u7801
user.defaultPassword
=
123456
\ No newline at end of file
src/main/resources/application.properties
View file @
1df2d3de
...
...
@@ -50,7 +50,7 @@ spring.redis.timeout=60000
spring.servlet.multipart.max-file-size
=
100MB
spring.servlet.multipart.max-request-size
=
1000MB
#URL\u767D\u540D\u5355\uFF1A\u4E0D\u9700\u8981\u6821\u9A8Ctoken, /favicon.ico
whiteUrlList
=
/
base/login,/base/local
Login,/**/*swagger*/**,/v2/**,/csrf,/swagger-resources/**,/webjars/**,/doc.html/**
whiteUrlList
=
/
login/do
Login,/**/*swagger*/**,/v2/**,/csrf,/swagger-resources/**,/webjars/**,/doc.html/**
#\u91CD\u590D\u63D0\u4EA4\u89C4\u5219\u6BEB\u79D2\u503C\uFF1A\u8BE5\u65F6\u95F4\u8303\u56F4\u5185\u7684\u63D0\u4EA4\u90FD\u89C6\u4E3A\u91CD\u590D\u63D0\u4EA4\u3002\u5355\u4F4D\u6BEB\u79D2\uFF0C\u89C6\u7F51\u7EDC\u5EF6\u8FDF\u73AF\u5883\u8C03\u6574\u3002
repeat.submit.period
=
3000
#swagger2\u7684\u914D\u7F6E
...
...
src/main/resources/mapper/MenuInfoMapper.xml
0 → 100644
View file @
1df2d3de
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.fxkc.care.mapper.MenuInfoMapper"
>
<!-- 通用查询映射结果 -->
<resultMap
id=
"BaseResultMap"
type=
"com.fxkc.care.domain.MenuInfo"
>
<id
column=
"ID"
property=
"id"
/>
<result
column=
"PARENT_ID"
property=
"parentId"
/>
<result
column=
"MENU_NAME"
property=
"menuName"
/>
<result
column=
"MENU_TYPE"
property=
"menuType"
/>
<result
column=
"MENU_DESC"
property=
"menuDesc"
/>
<result
column=
"MENU_ROUTE_PATH"
property=
"menuRoutePath"
/>
<result
column=
"MENU_ICON"
property=
"menuIcon"
/>
<result
column=
"MENU_COMPONENT"
property=
"menuComponent"
/>
<result
column=
"SORT_NO"
property=
"sortNo"
/>
<result
column=
"ENABLE_FLAG"
property=
"enableFlag"
/>
<result
column=
"DELETE_FLAG"
property=
"deleteFlag"
/>
<result
column=
"CREATE_TIME"
property=
"createTime"
/>
<result
column=
"UPDATE_TIME"
property=
"updateTime"
/>
<result
column=
"CREATE_USER"
property=
"createUser"
/>
<result
column=
"UPDATE_USER"
property=
"updateUser"
/>
</resultMap>
<!-- 通用查询结果列 -->
<sql
id=
"Base_Column_List"
>
ID, PARENT_ID, MENU_NAME, MENU_TYPE, MENU_DESC, MENU_ROUTE_PATH, MENU_ICON, MENU_COMPONENT, SORT_NO, ENABLE_FLAG, DELETE_FLAG, CREATE_TIME, UPDATE_TIME, CREATE_USER, UPDATE_USER
</sql>
</mapper>
src/main/resources/mapper/RoleInfoMapper.xml
0 → 100644
View file @
1df2d3de
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.fxkc.care.mapper.RoleInfoMapper"
>
<!-- 通用查询映射结果 -->
<resultMap
id=
"BaseResultMap"
type=
"com.fxkc.care.domain.RoleInfo"
>
<id
column=
"ID"
property=
"id"
/>
<result
column=
"ROLE_CODE"
property=
"roleCode"
/>
<result
column=
"ROLE_NAME"
property=
"roleName"
/>
<result
column=
"ROLE_DESC"
property=
"roleDesc"
/>
<result
column=
"ENABLE_FLAG"
property=
"enableFlag"
/>
<result
column=
"DELETE_FLAG"
property=
"deleteFlag"
/>
<result
column=
"CREATE_TIME"
property=
"createTime"
/>
<result
column=
"UPDATE_TIME"
property=
"updateTime"
/>
<result
column=
"CREATE_USER"
property=
"createUser"
/>
<result
column=
"UPDATE_USER"
property=
"updateUser"
/>
</resultMap>
<!-- 通用查询结果列 -->
<sql
id=
"Base_Column_List"
>
ID, ROLE_CODE, ROLE_NAME, ROLE_DESC, ENABLE_FLAG, DELETE_FLAG, CREATE_TIME, UPDATE_TIME, CREATE_USER, UPDATE_USER
</sql>
</mapper>
src/main/resources/mapper/RoleMenuMapper.xml
0 → 100644
View file @
1df2d3de
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.fxkc.care.mapper.RoleMenuMapper"
>
<!-- 通用查询映射结果 -->
<resultMap
id=
"BaseResultMap"
type=
"com.fxkc.care.domain.RoleMenu"
>
<id
column=
"ROLE_ID"
property=
"roleId"
/>
<result
column=
"MENU_ID"
property=
"menuId"
/>
</resultMap>
<!-- 通用查询结果列 -->
<sql
id=
"Base_Column_List"
>
ROLE_ID, MENU_ID
</sql>
</mapper>
src/main/resources/mapper/SysDictItemMapper.xml
0 → 100644
View file @
1df2d3de
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.fxkc.care.mapper.SysDictItemMapper"
>
<!-- 通用查询映射结果 -->
<resultMap
id=
"BaseResultMap"
type=
"com.fxkc.care.domain.SysDictItem"
>
<id
column=
"ID"
property=
"id"
/>
<result
column=
"DICT_TYPE_CODE"
property=
"dictTypeCode"
/>
<result
column=
"DICT_ITEM_CODE"
property=
"dictItemCode"
/>
<result
column=
"DICT_ITEM_NAME"
property=
"dictItemName"
/>
<result
column=
"SORT_NO"
property=
"sortNo"
/>
<result
column=
"DELETE_FLAG"
property=
"deleteFlag"
/>
<result
column=
"CREATE_TIME"
property=
"createTime"
/>
<result
column=
"UPDATE_TIME"
property=
"updateTime"
/>
<result
column=
"CREATE_USER"
property=
"createUser"
/>
<result
column=
"UPDATE_USER"
property=
"updateUser"
/>
</resultMap>
<!-- 通用查询结果列 -->
<sql
id=
"Base_Column_List"
>
ID, DICT_TYPE_CODE, DICT_ITEM_CODE, DICT_ITEM_NAME, SORT_NO, DELETE_FLAG, CREATE_TIME, UPDATE_TIME, CREATE_USER, UPDATE_USER
</sql>
</mapper>
src/main/resources/mapper/SysDictTypeMapper.xml
0 → 100644
View file @
1df2d3de
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.fxkc.care.mapper.SysDictTypeMapper"
>
<!-- 通用查询映射结果 -->
<resultMap
id=
"BaseResultMap"
type=
"com.fxkc.care.domain.SysDictType"
>
<id
column=
"ID"
property=
"id"
/>
<result
column=
"DICT_TYPE_CODE"
property=
"dictTypeCode"
/>
<result
column=
"DICT_TYPE_NAME"
property=
"dictTypeName"
/>
<result
column=
"SORT_NO"
property=
"sortNo"
/>
<result
column=
"REMARK"
property=
"remark"
/>
<result
column=
"DELETE_FLAG"
property=
"deleteFlag"
/>
<result
column=
"CREATE_TIME"
property=
"createTime"
/>
<result
column=
"UPDATE_TIME"
property=
"updateTime"
/>
<result
column=
"CREATE_USER"
property=
"createUser"
/>
<result
column=
"UPDATE_USER"
property=
"updateUser"
/>
</resultMap>
<!-- 通用查询结果列 -->
<sql
id=
"Base_Column_List"
>
ID, DICT_TYPE_CODE, DICT_TYPE_NAME, SORT_NO, REMARK, DELETE_FLAG, CREATE_TIME, UPDATE_TIME, CREATE_USER, UPDATE_USER
</sql>
</mapper>
src/main/resources/mapper/UserInfoMapper.xml
0 → 100644
View file @
1df2d3de
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.fxkc.care.mapper.UserInfoMapper"
>
<!-- 通用查询映射结果 -->
<resultMap
id=
"BaseResultMap"
type=
"com.fxkc.care.domain.UserInfo"
>
<id
column=
"ID"
property=
"id"
/>
<result
column=
"LOGIN_NAME"
property=
"loginName"
/>
<result
column=
"PASSWORD"
property=
"password"
/>
<result
column=
"USERNAME"
property=
"username"
/>
<result
column=
"USER_IMG"
property=
"userImg"
/>
<result
column=
"PHONE"
property=
"phone"
/>
<result
column=
"ID_CARD_NO"
property=
"idCardNo"
/>
<result
column=
"DELETE_FLAG"
property=
"deleteFlag"
/>
<result
column=
"CREATE_TIME"
property=
"createTime"
/>
<result
column=
"UPDATE_TIME"
property=
"updateTime"
/>
<result
column=
"CREATE_USER"
property=
"createUser"
/>
<result
column=
"UPDATE_USER"
property=
"updateUser"
/>
</resultMap>
<!-- 通用查询结果列 -->
<sql
id=
"Base_Column_List"
>
ID, LOGIN_NAME, PASSWORD, USERNAME, USER_IMG, PHONE, ID_CARD_NO, DELETE_FLAG, CREATE_TIME, UPDATE_TIME, CREATE_USER, UPDATE_USER
</sql>
</mapper>
src/main/resources/mapper/UserRoleMapper.xml
0 → 100644
View file @
1df2d3de
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.fxkc.care.mapper.UserRoleMapper"
>
<!-- 通用查询映射结果 -->
<resultMap
id=
"BaseResultMap"
type=
"com.fxkc.care.domain.UserRole"
>
<id
column=
"USER_ID"
property=
"userId"
/>
<result
column=
"ROLE_ID"
property=
"roleId"
/>
</resultMap>
<!-- 通用查询结果列 -->
<sql
id=
"Base_Column_List"
>
USER_ID, ROLE_ID
</sql>
</mapper>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment