..
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
package com.budwk.app.sys.controller;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckLogin;
|
||||
import com.budwk.app.sys.services.SysUserService;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.ioc.loader.annotation.Inject;
|
||||
import org.nutz.ioc.loader.annotation.IocBean;
|
||||
import org.nutz.mvc.annotation.At;
|
||||
import org.nutz.mvc.annotation.Ok;
|
||||
import org.nutz.mvc.annotation.Param;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
@IocBean
|
||||
@At("/platform/v4")
|
||||
public class SysHomeV4Controller {
|
||||
|
||||
@Inject
|
||||
private Dao dao;
|
||||
@Inject
|
||||
private SysUserService sysUserService;
|
||||
|
||||
@At("")
|
||||
@Ok("beetl:/layouts/v4/platform.html")
|
||||
@SaCheckLogin
|
||||
public void index() {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 首页门户
|
||||
*/
|
||||
@At("/home")
|
||||
@Ok("beetl:/layouts/v4/home.html")
|
||||
@SaCheckLogin
|
||||
public void home() {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 应用中心
|
||||
*/
|
||||
@At("/apps")
|
||||
@Ok("beetl:/layouts/v4/apps.html")
|
||||
@SaCheckLogin
|
||||
public void apps() {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 子系统
|
||||
* @param appId 应用ID
|
||||
* @param request 请求
|
||||
*/
|
||||
@At("/subApp")
|
||||
@Ok("beetl:/layouts/platform.html")
|
||||
@SaCheckLogin
|
||||
public void subApp(@Param("appId") String appId, HttpServletRequest request) {
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -9,6 +9,7 @@ import cn.hutool.core.lang.tree.TreeUtil;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.extra.pinyin.PinyinUtil;
|
||||
import com.budwk.app.base.annotation.SLog;
|
||||
import com.budwk.app.base.result.Result;
|
||||
import com.budwk.app.sys.models.Sys_menu;
|
||||
@@ -170,6 +171,8 @@ public class SysMenuController {
|
||||
sysMenu.setShowit(true);
|
||||
sysMenu.setDisabled(false);
|
||||
sysMenu.setCreatedBy(SecurityUtil.getUserId());
|
||||
sysMenu.setInitialPinyinName(PinyinUtil.getFirstLetter(sysMenu.getName().charAt(0)));
|
||||
|
||||
sysMenuService.savePlus(sysMenu, Strings.sNull(parentId), sysMenu.getButtons());
|
||||
// sysMenuService.save(sysMenu, Strings.sNull(parentId), buttons);
|
||||
sysMenuService.clearCache();
|
||||
@@ -247,6 +250,7 @@ public class SysMenuController {
|
||||
sysMenu.setShowit(true);
|
||||
sysMenu.setDisabled(false);
|
||||
sysMenu.setCreatedBy(SecurityUtil.getUserId());
|
||||
sysMenu.setInitialPinyinName(PinyinUtil.getFirstLetter(sysMenu.getName().charAt(0)));
|
||||
|
||||
sysMenuService.editPlus(sysMenu, sysMenu.getParentId(), buttons);
|
||||
sysMenuService.clearCache();
|
||||
|
||||
@@ -3,10 +3,12 @@ package com.budwk.app.sys.controller;
|
||||
import cn.dev33.satoken.annotation.SaCheckLogin;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import cn.hutool.core.util.ReUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.budwk.app.base.annotation.SLog;
|
||||
import com.budwk.app.base.result.Result;
|
||||
import com.budwk.app.base.utils.PageUtil;
|
||||
import com.budwk.app.base.utils.PwdUtil;
|
||||
import com.budwk.app.base.utils.SysMenuUtil;
|
||||
import com.budwk.app.sys.models.Sys_menu;
|
||||
import com.budwk.app.sys.models.Sys_user;
|
||||
import com.budwk.app.sys.services.SysMenuService;
|
||||
@@ -325,4 +327,56 @@ public class SysUserController {
|
||||
sysUserService.deleteCache(SecurityUtil.getUserId());
|
||||
return Result.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取子应用菜单
|
||||
*
|
||||
* @param appId
|
||||
* @return
|
||||
*/
|
||||
@At
|
||||
@Ok("json")
|
||||
@SaCheckLogin
|
||||
public Result subAppMenus(@Param("appId") String appId) {
|
||||
List<Sys_menu> menus = sysUserService.getMenus(SecurityUtil.getUserId());
|
||||
List<Sys_menu> list = Sys_menu.createTreeMenus(menus, appId);
|
||||
return Result.success(list);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 根据请求地址查询根菜单ID
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@At
|
||||
@Ok("json")
|
||||
@SaCheckLogin
|
||||
public Result rootMenuByPath(@Param("pathname") String pathname, HttpServletResponse response) {
|
||||
if (StrUtil.isBlank(pathname)) {
|
||||
|
||||
}
|
||||
Sys_menu menu = sysMenuService.fetch(Cnd.where(Sys_menu::getHref, "=", pathname));
|
||||
if (menu == null) {
|
||||
return Result.success();
|
||||
}
|
||||
List<Sys_menu> menus = sysUserService.getMenus(SecurityUtil.getUserId());
|
||||
Sys_menu rootMenu = SysMenuUtil.getRootMenu(menus, menu);
|
||||
return Result.success().addData(rootMenu);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前登录用户信息
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@At
|
||||
@Ok("json")
|
||||
@SaCheckLogin
|
||||
public Result getLogonUser() {
|
||||
Sys_user userAndMenuById = sysUserService.getUserAndMenuById(SecurityUtil.getUserId());
|
||||
return Result.success().addData(userAndMenuById);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,188 @@
|
||||
package com.budwk.app.sys.controller.v4;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckLogin;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.budwk.app.base.result.Result;
|
||||
import com.budwk.app.sys.models.Sys_module;
|
||||
import com.budwk.app.sys.models.Sys_user_favorite_app;
|
||||
import com.budwk.app.sys.services.SysMenuService;
|
||||
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.nutz.aop.interceptor.ioc.TransAop;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.ioc.aop.Aop;
|
||||
import org.nutz.ioc.loader.annotation.Inject;
|
||||
import org.nutz.ioc.loader.annotation.IocBean;
|
||||
import org.nutz.lang.Strings;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.nutz.mvc.annotation.At;
|
||||
import org.nutz.mvc.annotation.Ok;
|
||||
import org.nutz.mvc.annotation.Param;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@IocBean
|
||||
@At("/platform/v4/apps")
|
||||
@Api(value = "应用中心接口", tags = "应用中心接口")
|
||||
public class SysV4AppsController {
|
||||
|
||||
@Inject
|
||||
private Dao dao;
|
||||
@Inject
|
||||
private SysMenuService sysMenuService;
|
||||
|
||||
@At("/categories")
|
||||
@Ok("json")
|
||||
@SaCheckLogin
|
||||
@ApiOperation("获取应用分类")
|
||||
public Result categories() {
|
||||
List<Sys_module> list = dao.query(Sys_module.class, Cnd.where(Sys_module::getPlatform, "=", "PC").asc(Sys_module::getSortNum));
|
||||
List<Map<String, Object>> categories = list.stream().map(module -> {
|
||||
Map<String, Object> category = new HashMap<>();
|
||||
category.put("id", module.getId());
|
||||
category.put("name", module.getName());
|
||||
category.put("icon", module.getFaIcon());
|
||||
return category;
|
||||
}).toList();
|
||||
return Result.success("获取应用分类成功").addData(categories);
|
||||
}
|
||||
|
||||
@At("/list")
|
||||
@Ok("json:full")
|
||||
@SaCheckLogin
|
||||
@ApiOperation("获取应用列表")
|
||||
public Result list(@Param("categoryId") String categoryId, @Param("letter") String letter, @Param("keyword") String keyword, HttpServletRequest req) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
m.id,
|
||||
m.name,
|
||||
m.href,
|
||||
m.icon,
|
||||
m.picIcon,
|
||||
CASE
|
||||
WHEN f.userId IS NOT NULL THEN
|
||||
1 ELSE 0
|
||||
END AS isFavorite
|
||||
FROM
|
||||
sys_menu m
|
||||
LEFT JOIN sys_user_favorite_app f ON m.id = f.appId
|
||||
AND f.userId = @userId
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("m.platform", "=", "PC");
|
||||
cnd.and("m.disabled", "=", false);
|
||||
cnd.and(Cnd.exps("m.parentId", "is", null).or("m.parentId", "=", ""));
|
||||
cnd.andEX("m.moduleId", "=", categoryId);
|
||||
cnd.asc("m.location");
|
||||
if (StrUtil.isNotBlank(keyword)) {
|
||||
cnd.where().andLike("m.name", keyword);
|
||||
}
|
||||
cnd.andEX("m.initialPinyinName", "=", letter);
|
||||
sql.setCondition(cnd);
|
||||
sql.setParam("userId", SecurityUtil.getUserId());
|
||||
List<NutMap> list = sysMenuService.listMap(sql);
|
||||
return Result.success(list);
|
||||
}
|
||||
|
||||
@At("/recommended")
|
||||
@Ok("json")
|
||||
@SaCheckLogin
|
||||
@ApiOperation("获取推荐应用")
|
||||
public Result recommended(HttpServletRequest req) {
|
||||
// // 这里简单地返回前6个应用作为推荐应用
|
||||
// int recommendCount = Math.min(6, APPS.size());
|
||||
// List<Map<String, Object>> recommendedApps = new ArrayList<>();
|
||||
//
|
||||
// // 获取用户收藏状态
|
||||
// String userId = getCurrentUserId(req);
|
||||
// Set<String> favorites = FAVORITES.getOrDefault(userId, new HashSet<>());
|
||||
//
|
||||
// // 添加收藏状态
|
||||
// for (int i = 0; i < recommendCount; i++) {
|
||||
// Map<String, Object> app = APPS.get(i);
|
||||
// Map<String, Object> appWithFavorite = new HashMap<>(app);
|
||||
// String appId = String.valueOf(appWithFavorite.get("id"));
|
||||
// appWithFavorite.put("isFavorite", favorites.contains(appId));
|
||||
// recommendedApps.add(appWithFavorite);
|
||||
// }
|
||||
//
|
||||
// Map<String, Object> data = new HashMap<>();
|
||||
// data.put("list", recommendedApps);
|
||||
// data.put("total", recommendedApps.size());
|
||||
// data.put("pageNumber", 1);
|
||||
// data.put("pageSize", recommendedApps.size());
|
||||
// data.put("totalPage", 1);
|
||||
|
||||
return Result.success("获取推荐应用成功");
|
||||
}
|
||||
|
||||
@At("/favorite")
|
||||
@Ok("json:full")
|
||||
@SaCheckLogin
|
||||
@ApiOperation("获取收藏的应用")
|
||||
public Result favorite(HttpServletRequest req) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
m.id,
|
||||
m.name,
|
||||
m.href,
|
||||
m.icon,
|
||||
m.picIcon,
|
||||
1 AS isFavorite
|
||||
FROM
|
||||
sys_user_favorite_app f
|
||||
INNER JOIN
|
||||
sys_menu m
|
||||
ON
|
||||
f.appId = m.id
|
||||
WHERE
|
||||
f.userId = @userId
|
||||
AND m.platform = 'PC'
|
||||
AND m.disabled = 0
|
||||
ORDER BY
|
||||
m.location ASC;
|
||||
""");
|
||||
sql.setParam("userId", SecurityUtil.getUserId());
|
||||
List<NutMap> list = sysMenuService.listMap(sql);
|
||||
return Result.success(list);
|
||||
}
|
||||
|
||||
@At("/addFavorite")
|
||||
@Ok("json")
|
||||
@SaCheckLogin
|
||||
@ApiOperation("添加收藏")
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
public Result addFavorite(@Param("appId") String appId, HttpServletRequest req) {
|
||||
if (Strings.isBlank(appId)) {
|
||||
return Result.error("应用ID不能为空");
|
||||
}
|
||||
|
||||
dao.clear(Sys_user_favorite_app.class, Cnd.where(Sys_user_favorite_app::getAppId, "=", appId).and(Sys_user_favorite_app::getUserId, "=", SecurityUtil.getUserId()));
|
||||
|
||||
Sys_user_favorite_app app = new Sys_user_favorite_app();
|
||||
app.setAppId(appId);
|
||||
app.setUserId(SecurityUtil.getUserId());
|
||||
dao.insert(app);
|
||||
return Result.success("收藏成功");
|
||||
}
|
||||
|
||||
@At("/removeFavorite")
|
||||
@Ok("json")
|
||||
@SaCheckLogin
|
||||
@ApiOperation("取消收藏")
|
||||
public Result removeFavorite(@Param("appId") String appId, HttpServletRequest req) {
|
||||
if (Strings.isBlank(appId)) {
|
||||
return Result.error("应用ID不能为空");
|
||||
}
|
||||
dao.clear(Sys_user_favorite_app.class, Cnd.where(Sys_user_favorite_app::getAppId, "=", appId).and(Sys_user_favorite_app::getUserId, "=", SecurityUtil.getUserId()));
|
||||
return Result.success("取消收藏成功");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user