Commit 3f3d9287 by 周海峰

no message

parent 691059d5
-- 用户常用应用功能相关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;
......@@ -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
......
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;
}
}
}
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);
}
}
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) {
......
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;
}
}
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);
}
<?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>
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);
}
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 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论