Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
A
auth-master
概览
Overview
Details
Activity
Cycle Analytics
版本库
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
问题
0
Issues
0
列表
Board
标记
里程碑
合并请求
0
Merge Requests
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
Snippets
成员
Members
Collapse sidebar
Close sidebar
活动
图像
聊天
创建新问题
作业
提交
Issue Boards
Open sidebar
吴超
auth-master
Commits
3f3d9287
Commit
3f3d9287
authored
Nov 04, 2025
by
周海峰
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
no message
parent
691059d5
隐藏空白字符变更
内嵌
并排
正在显示
10 个修改的文件
包含
685 行增加
和
25 行删除
+685
-25
doc/sql/favorite_apps.sql
+28
-0
src/main/java/com/metro/auth/platform/config/WebSecurityConfig.java
+16
-13
src/main/java/com/metro/auth/platform/controller/PlatformUserFavoriteAppsController.java
+179
-0
src/main/java/com/metro/auth/platform/controller/WechatApiController.java
+48
-0
src/main/java/com/metro/auth/platform/domain/auth/PlatformApplicationsGroup.java
+13
-12
src/main/java/com/metro/auth/platform/domain/auth/PlatformUserFavoriteApps.java
+106
-0
src/main/java/com/metro/auth/platform/mapper/PlatformUserFavoriteAppsMapper.java
+59
-0
src/main/java/com/metro/auth/platform/mapper/PlatformUserFavoriteAppsMapper.xml
+107
-0
src/main/java/com/metro/auth/platform/service/PlatformUserFavoriteAppsService.java
+52
-0
src/main/java/com/metro/auth/platform/service/PlatformUserFavoriteAppsServiceImpl.java
+77
-0
没有找到文件。
doc/sql/favorite_apps.sql
0 → 100644
View file @
3f3d9287
-- 用户常用应用功能相关SQL脚本
-- 创建用户常用应用关联表
CREATE
TABLE
IF
NOT
EXISTS
`platform_user_favorite_apps`
(
`id`
int
(
11
)
NOT
NULL
AUTO_INCREMENT
COMMENT
'主键ID'
,
`user_id`
varchar
(
50
)
NOT
NULL
COMMENT
'用户ID'
,
`app_id`
int
(
11
)
NOT
NULL
COMMENT
'应用ID'
,
`sort_order`
int
(
11
)
DEFAULT
'0'
COMMENT
'排序顺序'
,
`create_time`
datetime
DEFAULT
CURRENT_TIMESTAMP
COMMENT
'创建时间'
,
`update_time`
datetime
DEFAULT
CURRENT_TIMESTAMP
ON
UPDATE
CURRENT_TIMESTAMP
COMMENT
'更新时间'
,
PRIMARY
KEY
(
`id`
),
UNIQUE
KEY
`uk_user_app`
(
`user_id`
,
`app_id`
),
KEY
`idx_user_id`
(
`user_id`
),
KEY
`idx_app_id`
(
`app_id`
),
CONSTRAINT
`fk_favorite_app`
FOREIGN
KEY
(
`app_id`
)
REFERENCES
`platform_applications`
(
`id`
)
ON
DELETE
CASCADE
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
utf8mb4
COMMENT
=
'用户常用应用表'
;
-- 添加索引优化查询性能
CREATE
INDEX
idx_user_favorite_create_time
ON
platform_user_favorite_apps
(
create_time
);
CREATE
INDEX
idx_user_favorite_sort_order
ON
platform_user_favorite_apps
(
sort_order
);
-- 示例数据(可选)
-- 为用户1添加一些常用应用
-- INSERT INTO platform_user_favorite_apps (user_id, app_id, sort_order) VALUES ('1', 1, 1);
-- INSERT INTO platform_user_favorite_apps (user_id, app_id, sort_order) VALUES ('1', 2, 2);
-- INSERT INTO platform_user_favorite_apps (user_id, app_id, sort_order) VALUES ('1', 3, 3);
-- 回滚脚本(如果需要删除表)
-- DROP TABLE IF EXISTS platform_user_favorite_apps;
src/main/java/com/metro/auth/platform/config/WebSecurityConfig.java
View file @
3f3d9287
...
...
@@ -80,6 +80,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
/**
* 装载BCrypt密码编码器
*
* @return
*/
@Bean
...
...
@@ -99,9 +100,11 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
.
sessionManagement
().
sessionCreationPolicy
(
SessionCreationPolicy
.
STATELESS
).
and
()
.
authorizeRequests
()
// 对于获取token的rest api要允许匿名访问
.
antMatchers
(
"/history/**"
,
"/qweixincallback/**"
,
"/sysrecipes/**"
,
"/api/ps/account_sel/**"
,
"/znzl/file/**"
,
"/auth/v1/**"
,
"/auth/user/**"
,
"/error/**"
,
"/weixin/wxuserinfo/**"
,
"/weixin/information/**"
,
"/auth/dt/**"
,
"/avatar/**"
,
"/user/updateWxPlatformPersonnelByAccount"
).
permitAll
()
// .antMatchers("/weixin/**","/user/**","/department/**","/api/ps/account_sel/**","/znzl/file/**","/auth/v1/**", "/error/**", "/weixin/wxuserinfo/**","/weixin/information/**", "/auth/dt/**").permitAll()
.
antMatchers
(
HttpMethod
.
OPTIONS
,
"/**"
).
permitAll
()
.
antMatchers
(
"/history/**"
,
"/qweixincallback/**"
,
"/sysrecipes/**"
,
"/api/ps/account_sel/**"
,
"/znzl/file/**"
,
"/auth/v1/**"
,
"/auth/user/**"
,
"/error/**"
,
"/weixin/wxuserinfo/**"
,
"/weixin/information/**"
,
"/auth/dt/**"
,
"/avatar/**"
,
"/user/updateWxPlatformPersonnelByAccount"
,
"/wechatApi/**"
).
permitAll
()
.
antMatchers
(
HttpMethod
.
OPTIONS
,
"/**"
).
permitAll
()
// 除上面外的所有请求全部需要鉴权认证
.
anyRequest
().
authenticated
();
...
...
@@ -115,16 +118,16 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
public
void
configure
(
WebSecurity
web
)
{
web
.
ignoring
().
antMatchers
(
"/favicon.ico"
,
"/**/*.css"
,
"/**/*.js"
,
"/**/*.png"
,
"/**/*.gif"
,
"/**/*.jpg"
,
//"/v2/**",
"/**/*.ttf"
,
"/**/*.html"
);
"/favicon.ico"
,
"/**/*.css"
,
"/**/*.js"
,
"/**/*.png"
,
"/**/*.gif"
,
"/**/*.jpg"
,
//"/v2/**",
"/**/*.ttf"
,
"/**/*.html"
);
}
@Bean
...
...
src/main/java/com/metro/auth/platform/controller/PlatformUserFavoriteAppsController.java
0 → 100644
View file @
3f3d9287
package
com
.
metro
.
auth
.
platform
.
controller
;
import
com.metro.auth.platform.domain.ResultCode
;
import
com.metro.auth.platform.domain.ResultJson
;
import
com.metro.auth.platform.domain.auth.PlatformUserFavoriteApps
;
import
com.metro.auth.platform.service.PlatformUserFavoriteAppsService
;
import
org.springframework.web.bind.annotation.*
;
import
javax.annotation.Resource
;
import
java.util.List
;
/**
* 用户常用应用Controller
*/
@RestController
@RequestMapping
(
"/PlatformUserFavoriteAppsController"
)
public
class
PlatformUserFavoriteAppsController
{
@Resource
private
PlatformUserFavoriteAppsService
platformUserFavoriteAppsService
;
/**
* 获取我的常用应用列表
* @param userId 用户ID
* @return 常用应用列表
*/
@GetMapping
(
"/myFavorites/{userId}"
)
public
ResultJson
getMyFavoriteApps
(
@PathVariable
String
userId
){
List
<
PlatformUserFavoriteApps
>
list
=
platformUserFavoriteAppsService
.
getFavoriteAppsByUserId
(
userId
);
return
ResultJson
.
ok
(
list
);
}
/**
* 获取未设置为常用的应用列表
* @param userId 用户ID
* @param keyword 搜索关键词(可选)
* @return 未设置的应用列表
*/
@GetMapping
(
"/unfavorites/{userId}"
)
public
ResultJson
getUnfavoriteApps
(
@PathVariable
String
userId
,
@RequestParam
(
required
=
false
)
String
keyword
){
List
<
PlatformUserFavoriteApps
>
list
=
platformUserFavoriteAppsService
.
getUnfavoriteApps
(
userId
,
keyword
);
return
ResultJson
.
ok
(
list
);
}
/**
* 添加常用应用
* @param request 请求参数
* @return 操作结果
*/
@PostMapping
(
"/addFavorite"
)
public
ResultJson
addFavoriteApp
(
@RequestBody
FavoriteAppRequest
request
){
boolean
success
=
platformUserFavoriteAppsService
.
addFavoriteApp
(
request
.
getUserId
(),
request
.
getAppId
(),
request
.
getSortOrder
()
);
if
(
success
){
return
ResultJson
.
ok
();
}
else
{
return
ResultJson
.
failure
(
ResultCode
.
RESPONSE_ERROR
,
"应用已存在或添加失败"
);
}
}
/**
* 删除常用应用
* @param request 请求参数
* @return 操作结果
*/
@DeleteMapping
(
"/removeFavorite"
)
public
ResultJson
removeFavoriteApp
(
@RequestBody
FavoriteAppRequest
request
){
boolean
success
=
platformUserFavoriteAppsService
.
removeFavoriteApp
(
request
.
getUserId
(),
request
.
getAppId
()
);
if
(
success
){
return
ResultJson
.
ok
();
}
else
{
return
ResultJson
.
failure
(
ResultCode
.
RESPONSE_ERROR
,
"删除失败"
);
}
}
/**
* 更新常用应用排序
* @param request 请求参数
* @return 操作结果
*/
@PutMapping
(
"/updateFavoriteSort"
)
public
ResultJson
updateFavoriteSort
(
@RequestBody
FavoriteAppRequest
request
){
boolean
success
=
platformUserFavoriteAppsService
.
updateFavoriteSort
(
request
.
getUserId
(),
request
.
getAppId
(),
request
.
getSortOrder
()
);
if
(
success
){
return
ResultJson
.
ok
();
}
else
{
return
ResultJson
.
failure
(
ResultCode
.
RESPONSE_ERROR
,
"更新失败"
);
}
}
/**
* 批量更新常用应用排序
* @param request 请求参数
* @return 操作结果
*/
@PutMapping
(
"/updateFavoriteSortBatch"
)
public
ResultJson
updateFavoriteSortBatch
(
@RequestBody
BatchSortRequest
request
){
try
{
for
(
FavoriteAppRequest
item
:
request
.
getFavoriteApps
())
{
platformUserFavoriteAppsService
.
updateFavoriteSort
(
request
.
getUserId
(),
item
.
getAppId
(),
item
.
getSortOrder
()
);
}
return
ResultJson
.
ok
();
}
catch
(
Exception
e
)
{
return
ResultJson
.
failure
(
ResultCode
.
RESPONSE_ERROR
,
"批量更新失败"
);
}
}
/**
* 内部类:常用应用请求参数
*/
public
static
class
FavoriteAppRequest
{
private
String
userId
;
private
Integer
appId
;
private
Integer
sortOrder
;
public
String
getUserId
()
{
return
userId
;
}
public
void
setUserId
(
String
userId
)
{
this
.
userId
=
userId
;
}
public
Integer
getAppId
()
{
return
appId
;
}
public
void
setAppId
(
Integer
appId
)
{
this
.
appId
=
appId
;
}
public
Integer
getSortOrder
()
{
return
sortOrder
;
}
public
void
setSortOrder
(
Integer
sortOrder
)
{
this
.
sortOrder
=
sortOrder
;
}
}
/**
* 内部类:批量排序请求参数
*/
public
static
class
BatchSortRequest
{
private
String
userId
;
private
List
<
FavoriteAppRequest
>
favoriteApps
;
public
String
getUserId
()
{
return
userId
;
}
public
void
setUserId
(
String
userId
)
{
this
.
userId
=
userId
;
}
public
List
<
FavoriteAppRequest
>
getFavoriteApps
()
{
return
favoriteApps
;
}
public
void
setFavoriteApps
(
List
<
FavoriteAppRequest
>
favoriteApps
)
{
this
.
favoriteApps
=
favoriteApps
;
}
}
}
src/main/java/com/metro/auth/platform/controller/WechatApiController.java
0 → 100644
View file @
3f3d9287
package
com
.
metro
.
auth
.
platform
.
controller
;
import
com.metro.auth.platform.domain.ResultJson
;
import
com.metro.auth.platform.domain.auth.PlatformApplications
;
import
com.metro.auth.platform.domain.auth.PlatformApplicationsGroup
;
import
com.metro.auth.platform.service.PlatformApplicationsGroupService
;
import
com.metro.auth.platform.service.PlatformApplicationsService
;
import
org.springframework.stereotype.Controller
;
import
org.springframework.util.CollectionUtils
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RestController
;
import
javax.annotation.Resource
;
import
java.util.List
;
import
java.util.stream.Collectors
;
/**
* 企业微信接口
*/
@RestController
@RequestMapping
(
"/wechatApi/"
)
public
class
WechatApiController
{
@Resource
private
PlatformApplicationsGroupService
platformApplicationsGroupService
;
@Resource
private
PlatformApplicationsService
platformApplicationsService
;
@GetMapping
(
"/appGroupPageList"
)
public
ResultJson
appGroupPageList
(
@RequestParam
String
userId
)
{
// 分组
List
<
PlatformApplicationsGroup
>
platformApplicationsGroups
=
platformApplicationsGroupService
.
selectList
(
new
PlatformApplicationsGroup
());
// 应用
List
<
PlatformApplications
>
platformApplicationsList
=
platformApplicationsService
.
getPlatformApplicationsListByUserid
(
userId
);
if
(!
CollectionUtils
.
isEmpty
(
platformApplicationsList
)){
for
(
PlatformApplicationsGroup
applicationsGroup
:
platformApplicationsGroups
)
{
String
groupCode
=
applicationsGroup
.
getGroupCode
();
List
<
PlatformApplications
>
groupOf
=
platformApplicationsList
.
stream
().
filter
(
item
->
groupCode
.
equals
(
item
.
getGroupCode
())).
collect
(
Collectors
.
toList
());
applicationsGroup
.
setApplicationsList
(
groupOf
);
}
}
return
ResultJson
.
ok
(
platformApplicationsGroups
);
}
}
src/main/java/com/metro/auth/platform/domain/auth/PlatformApplicationsGroup.java
View file @
3f3d9287
package
com
.
metro
.
auth
.
platform
.
domain
.
auth
;
import
java.io.Serializable
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.List
;
public
class
PlatformApplicationsGroup
implements
Serializable
{
/**
...
...
@@ -60,12 +62,22 @@ public class PlatformApplicationsGroup implements Serializable {
*/
private
static
final
long
serialVersionUID
=
1L
;
private
List
<
PlatformApplications
>
applicationsList
;
public
List
<
PlatformApplications
>
getApplicationsList
()
{
return
applicationsList
;
}
public
void
setApplicationsList
(
List
<
PlatformApplications
>
applicationsList
)
{
this
.
applicationsList
=
applicationsList
;
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column platform_applications_group.id
*
* @return the value of platform_applications_group.id
*
* @mbggenerated
*/
public
Integer
getId
()
{
...
...
@@ -77,7 +89,6 @@ public class PlatformApplicationsGroup implements Serializable {
* This method sets the value of the database column platform_applications_group.id
*
* @param id the value for platform_applications_group.id
*
* @mbggenerated
*/
public
void
setId
(
Integer
id
)
{
...
...
@@ -89,7 +100,6 @@ public class PlatformApplicationsGroup implements Serializable {
* This method returns the value of the database column platform_applications_group.group_name
*
* @return the value of platform_applications_group.group_name
*
* @mbggenerated
*/
public
String
getGroupName
()
{
...
...
@@ -101,7 +111,6 @@ public class PlatformApplicationsGroup implements Serializable {
* This method sets the value of the database column platform_applications_group.group_name
*
* @param groupName the value for platform_applications_group.group_name
*
* @mbggenerated
*/
public
void
setGroupName
(
String
groupName
)
{
...
...
@@ -113,7 +122,6 @@ public class PlatformApplicationsGroup implements Serializable {
* This method returns the value of the database column platform_applications_group.group_code
*
* @return the value of platform_applications_group.group_code
*
* @mbggenerated
*/
public
String
getGroupCode
()
{
...
...
@@ -125,7 +133,6 @@ public class PlatformApplicationsGroup implements Serializable {
* This method sets the value of the database column platform_applications_group.group_code
*
* @param groupCode the value for platform_applications_group.group_code
*
* @mbggenerated
*/
public
void
setGroupCode
(
String
groupCode
)
{
...
...
@@ -137,7 +144,6 @@ public class PlatformApplicationsGroup implements Serializable {
* This method returns the value of the database column platform_applications_group.sort_index
*
* @return the value of platform_applications_group.sort_index
*
* @mbggenerated
*/
public
Integer
getSortIndex
()
{
...
...
@@ -149,7 +155,6 @@ public class PlatformApplicationsGroup implements Serializable {
* This method sets the value of the database column platform_applications_group.sort_index
*
* @param sortIndex the value for platform_applications_group.sort_index
*
* @mbggenerated
*/
public
void
setSortIndex
(
Integer
sortIndex
)
{
...
...
@@ -161,7 +166,6 @@ public class PlatformApplicationsGroup implements Serializable {
* This method returns the value of the database column platform_applications_group.create_time
*
* @return the value of platform_applications_group.create_time
*
* @mbggenerated
*/
public
Date
getCreateTime
()
{
...
...
@@ -173,7 +177,6 @@ public class PlatformApplicationsGroup implements Serializable {
* This method sets the value of the database column platform_applications_group.create_time
*
* @param createTime the value for platform_applications_group.create_time
*
* @mbggenerated
*/
public
void
setCreateTime
(
Date
createTime
)
{
...
...
@@ -185,7 +188,6 @@ public class PlatformApplicationsGroup implements Serializable {
* This method returns the value of the database column platform_applications_group.update_by
*
* @return the value of platform_applications_group.update_by
*
* @mbggenerated
*/
public
String
getUpdateBy
()
{
...
...
@@ -197,7 +199,6 @@ public class PlatformApplicationsGroup implements Serializable {
* This method sets the value of the database column platform_applications_group.update_by
*
* @param updateBy the value for platform_applications_group.update_by
*
* @mbggenerated
*/
public
void
setUpdateBy
(
String
updateBy
)
{
...
...
src/main/java/com/metro/auth/platform/domain/auth/PlatformUserFavoriteApps.java
0 → 100644
View file @
3f3d9287
package
com
.
metro
.
auth
.
platform
.
domain
.
auth
;
import
org.springframework.data.annotation.Transient
;
import
java.io.Serializable
;
import
java.util.Date
;
/**
* 用户常用应用实体类
* 对应数据库表 platform_user_favorite_apps
*/
public
class
PlatformUserFavoriteApps
implements
Serializable
{
/**
* 主键ID
*/
private
Integer
id
;
/**
* 用户ID
*/
private
String
userId
;
/**
* 应用ID
*/
private
Integer
appId
;
/**
* 排序顺序
*/
private
Integer
sortOrder
;
/**
* 创建时间
*/
private
Date
createTime
;
/**
* 更新时间
*/
private
Date
updateTime
;
/**
* 关联的应用信息
*/
@Transient
private
PlatformApplications
application
;
private
static
final
long
serialVersionUID
=
1L
;
public
Integer
getId
()
{
return
id
;
}
public
void
setId
(
Integer
id
)
{
this
.
id
=
id
;
}
public
String
getUserId
()
{
return
userId
;
}
public
void
setUserId
(
String
userId
)
{
this
.
userId
=
userId
;
}
public
Integer
getAppId
()
{
return
appId
;
}
public
void
setAppId
(
Integer
appId
)
{
this
.
appId
=
appId
;
}
public
Integer
getSortOrder
()
{
return
sortOrder
;
}
public
void
setSortOrder
(
Integer
sortOrder
)
{
this
.
sortOrder
=
sortOrder
;
}
public
Date
getCreateTime
()
{
return
createTime
;
}
public
void
setCreateTime
(
Date
createTime
)
{
this
.
createTime
=
createTime
;
}
public
Date
getUpdateTime
()
{
return
updateTime
;
}
public
void
setUpdateTime
(
Date
updateTime
)
{
this
.
updateTime
=
updateTime
;
}
public
PlatformApplications
getApplication
()
{
return
application
;
}
public
void
setApplication
(
PlatformApplications
application
)
{
this
.
application
=
application
;
}
}
src/main/java/com/metro/auth/platform/mapper/PlatformUserFavoriteAppsMapper.java
0 → 100644
View file @
3f3d9287
package
com
.
metro
.
auth
.
platform
.
mapper
;
import
com.metro.auth.platform.domain.auth.PlatformUserFavoriteApps
;
import
org.apache.ibatis.annotations.Param
;
import
java.util.List
;
/**
* 用户常用应用Mapper接口
*/
public
interface
PlatformUserFavoriteAppsMapper
{
/**
* 根据用户ID获取常用应用列表
* @param userId 用户ID
* @return 常用应用列表
*/
List
<
PlatformUserFavoriteApps
>
getFavoriteAppsByUserId
(
@Param
(
"userId"
)
String
userId
);
/**
* 根据用户ID和应用ID获取记录
* @param userId 用户ID
* @param appId 应用ID
* @return 常用应用记录
*/
PlatformUserFavoriteApps
getFavoriteApp
(
@Param
(
"userId"
)
String
userId
,
@Param
(
"appId"
)
Integer
appId
);
/**
* 添加常用应用
* @param favoriteApp 常用应用信息
* @return 影响行数
*/
int
insertFavoriteApp
(
PlatformUserFavoriteApps
favoriteApp
);
/**
* 删除常用应用
* @param userId 用户ID
* @param appId 应用ID
* @return 影响行数
*/
int
deleteFavoriteApp
(
@Param
(
"userId"
)
String
userId
,
@Param
(
"appId"
)
Integer
appId
);
/**
* 更新排序
* @param userId 用户ID
* @param appId 应用ID
* @param sortOrder 排序值
* @return 影响行数
*/
int
updateSortOrder
(
@Param
(
"userId"
)
String
userId
,
@Param
(
"appId"
)
Integer
appId
,
@Param
(
"sortOrder"
)
Integer
sortOrder
);
/**
* 获取用户未设置为常用的应用列表
* @param userId 用户ID
* @param keyword 搜索关键词(可选)
* @return 未设置的应用列表
*/
List
<
PlatformUserFavoriteApps
>
getUnfavoriteApps
(
@Param
(
"userId"
)
String
userId
,
@Param
(
"keyword"
)
String
keyword
);
}
src/main/java/com/metro/auth/platform/mapper/PlatformUserFavoriteAppsMapper.xml
0 → 100644
View file @
3f3d9287
<?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.metro.auth.platform.mapper.PlatformUserFavoriteAppsMapper"
>
<!-- 结果映射 -->
<resultMap
id=
"BaseResultMap"
type=
"com.metro.auth.platform.domain.auth.PlatformUserFavoriteApps"
>
<id
column=
"id"
property=
"id"
jdbcType=
"INTEGER"
/>
<result
column=
"user_id"
property=
"userId"
jdbcType=
"VARCHAR"
/>
<result
column=
"app_id"
property=
"appId"
jdbcType=
"INTEGER"
/>
<result
column=
"sort_order"
property=
"sortOrder"
jdbcType=
"INTEGER"
/>
<result
column=
"create_time"
property=
"createTime"
jdbcType=
"TIMESTAMP"
/>
<result
column=
"update_time"
property=
"updateTime"
jdbcType=
"TIMESTAMP"
/>
<!-- 关联应用信息 -->
<association
property=
"application"
javaType=
"com.metro.auth.platform.domain.auth.PlatformApplications"
>
<id
column=
"app_id"
property=
"id"
jdbcType=
"INTEGER"
/>
<result
column=
"title"
property=
"title"
jdbcType=
"VARCHAR"
/>
<result
column=
"img"
property=
"img"
jdbcType=
"VARCHAR"
/>
<result
column=
"href"
property=
"href"
jdbcType=
"VARCHAR"
/>
<result
column=
"group_code"
property=
"groupCode"
jdbcType=
"VARCHAR"
/>
<result
column=
"wechat_url"
property=
"wechatUrl"
jdbcType=
"VARCHAR"
/>
</association>
</resultMap>
<!-- 根据用户ID获取常用应用列表 -->
<select
id=
"getFavoriteAppsByUserId"
resultMap=
"BaseResultMap"
>
SELECT
f.id,
f.user_id,
f.app_id,
f.sort_order,
f.create_time,
f.update_time,
a.id as app_id,
a.title,
a.img,
a.href,
a.group_code,
a.wechat_url
FROM platform_user_favorite_apps f
INNER JOIN platform_applications a ON f.app_id = a.id
WHERE f.user_id = #{userId}
ORDER BY f.sort_order ASC, f.create_time DESC
</select>
<!-- 根据用户ID和应用ID获取记录 -->
<select
id=
"getFavoriteApp"
resultMap=
"BaseResultMap"
>
SELECT
f.id,
f.user_id,
f.app_id,
f.sort_order,
f.create_time,
f.update_time,
a.id as app_id,
a.title,
a.img,
a.href,
a.group_code,
a.wechat_url
FROM platform_user_favorite_apps f
INNER JOIN platform_applications a ON f.app_id = a.id
WHERE f.user_id = #{userId} AND f.app_id = #{appId}
</select>
<!-- 添加常用应用 -->
<insert
id=
"insertFavoriteApp"
parameterType=
"com.metro.auth.platform.domain.auth.PlatformUserFavoriteApps"
>
INSERT INTO platform_user_favorite_apps (user_id, app_id, sort_order, create_time, update_time)
VALUES (#{userId}, #{appId}, #{sortOrder}, NOW(), NOW())
</insert>
<!-- 删除常用应用 -->
<delete
id=
"deleteFavoriteApp"
>
DELETE FROM platform_user_favorite_apps
WHERE user_id = #{userId} AND app_id = #{appId}
</delete>
<!-- 更新排序 -->
<update
id=
"updateSortOrder"
>
UPDATE platform_user_favorite_apps
SET sort_order = #{sortOrder}, update_time = NOW()
WHERE user_id = #{userId} AND app_id = #{appId}
</update>
<!-- 获取用户未设置为常用的应用列表 -->
<select
id=
"getUnfavoriteApps"
resultMap=
"BaseResultMap"
>
SELECT
a.id as app_id,
a.title,
a.img,
a.href,
a.group_code,
a.wechat_url
FROM platform_applications a
WHERE a.id NOT IN (
SELECT app_id
FROM platform_user_favorite_apps
WHERE user_id = #{userId}
)
<if
test=
"keyword != null and keyword != ''"
>
AND (a.title LIKE CONCAT('%', #{keyword}, '%')
OR a.href LIKE CONCAT('%', #{keyword}, '%'))
</if>
ORDER BY a.title ASC
</select>
</mapper>
src/main/java/com/metro/auth/platform/service/PlatformUserFavoriteAppsService.java
0 → 100644
View file @
3f3d9287
package
com
.
metro
.
auth
.
platform
.
service
;
import
com.metro.auth.platform.domain.auth.PlatformUserFavoriteApps
;
import
java.util.List
;
/**
* 用户常用应用Service接口
*/
public
interface
PlatformUserFavoriteAppsService
{
/**
* 获取用户的常用应用列表
* @param userId 用户ID
* @return 常用应用列表
*/
List
<
PlatformUserFavoriteApps
>
getFavoriteAppsByUserId
(
String
userId
);
/**
* 获取用户未设置为常用的应用列表
* @param userId 用户ID
* @param keyword 搜索关键词(可选)
* @return 未设置的应用列表
*/
List
<
PlatformUserFavoriteApps
>
getUnfavoriteApps
(
String
userId
,
String
keyword
);
/**
* 添加常用应用
* @param userId 用户ID
* @param appId 应用ID
* @param sortOrder 排序顺序
* @return 是否成功
*/
boolean
addFavoriteApp
(
String
userId
,
Integer
appId
,
Integer
sortOrder
);
/**
* 删除常用应用
* @param userId 用户ID
* @param appId 应用ID
* @return 是否成功
*/
boolean
removeFavoriteApp
(
String
userId
,
Integer
appId
);
/**
* 更新常用应用排序
* @param userId 用户ID
* @param appId 应用ID
* @param sortOrder 排序值
* @return 是否成功
*/
boolean
updateFavoriteSort
(
String
userId
,
Integer
appId
,
Integer
sortOrder
);
}
src/main/java/com/metro/auth/platform/service/PlatformUserFavoriteAppsServiceImpl.java
0 → 100644
View file @
3f3d9287
package
com
.
metro
.
auth
.
platform
.
service
;
import
com.metro.auth.platform.domain.auth.PlatformUserFavoriteApps
;
import
com.metro.auth.platform.mapper.PlatformUserFavoriteAppsMapper
;
import
org.springframework.stereotype.Service
;
import
javax.annotation.Resource
;
import
java.util.List
;
/**
* 用户常用应用Service实现类
*/
@Service
public
class
PlatformUserFavoriteAppsServiceImpl
implements
PlatformUserFavoriteAppsService
{
@Resource
private
PlatformUserFavoriteAppsMapper
platformUserFavoriteAppsMapper
;
@Override
public
List
<
PlatformUserFavoriteApps
>
getFavoriteAppsByUserId
(
String
userId
)
{
return
platformUserFavoriteAppsMapper
.
getFavoriteAppsByUserId
(
userId
);
}
@Override
public
List
<
PlatformUserFavoriteApps
>
getUnfavoriteApps
(
String
userId
,
String
keyword
)
{
return
platformUserFavoriteAppsMapper
.
getUnfavoriteApps
(
userId
,
keyword
);
}
@Override
public
boolean
addFavoriteApp
(
String
userId
,
Integer
appId
,
Integer
sortOrder
)
{
try
{
// 检查是否已存在
PlatformUserFavoriteApps
existing
=
platformUserFavoriteAppsMapper
.
getFavoriteApp
(
userId
,
appId
);
if
(
existing
!=
null
)
{
return
false
;
// 已存在
}
// 设置默认排序值
if
(
sortOrder
==
null
)
{
sortOrder
=
0
;
}
PlatformUserFavoriteApps
favoriteApp
=
new
PlatformUserFavoriteApps
();
favoriteApp
.
setUserId
(
userId
);
favoriteApp
.
setAppId
(
appId
);
favoriteApp
.
setSortOrder
(
sortOrder
);
int
result
=
platformUserFavoriteAppsMapper
.
insertFavoriteApp
(
favoriteApp
);
return
result
>
0
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
false
;
}
}
@Override
public
boolean
removeFavoriteApp
(
String
userId
,
Integer
appId
)
{
try
{
int
result
=
platformUserFavoriteAppsMapper
.
deleteFavoriteApp
(
userId
,
appId
);
return
result
>
0
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
false
;
}
}
@Override
public
boolean
updateFavoriteSort
(
String
userId
,
Integer
appId
,
Integer
sortOrder
)
{
try
{
int
result
=
platformUserFavoriteAppsMapper
.
updateSortOrder
(
userId
,
appId
,
sortOrder
);
return
result
>
0
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
false
;
}
}
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论