首页>代码>spring+spring mvc+mybatis开发的java客户关系管理系统,前端采用easyui编写>/ssm-crm-new - 副本/src/com/crm/controller/MenuController.java
package com.crm.controller;

import com.crm.model.SysMenu;
import com.crm.model.easyui.DataGrid;
import com.crm.model.easyui.Json;
import com.crm.model.easyui.PageHelper;

import com.crm.service.MenuService;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

import org.springframework.stereotype.Controller;

import org.springframework.ui.Model;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import java.io.IOException;
import java.io.PrintWriter;

import java.util.List;

import javax.annotation.Resource;

import javax.servlet.http.HttpServletResponse;


@Controller
@RequestMapping(value = "/menu")
public class MenuController extends BaseController {
    @Resource
    private MenuService menuService;

    /**
     * 跳转到菜单表格页面
     * @return
     */
    @RequestMapping(value = "/list", method = RequestMethod.GET)
    public String list(Model model) {
        return "menu/list";
    }

    /**
     * 跳转到资源管理页面
     * @return
     */
    @RequestMapping(value = "/listtree", method = RequestMethod.GET)
    public String listTree(Model model) {
        return "menu/list_tree";
    }

    /**
     * 菜单信息-列表
     * @return
     */
    @ResponseBody
    @RequestMapping(value = "/datagrid", method = RequestMethod.POST)
    public DataGrid datagrid(PageHelper page, SysMenu menu) {
        DataGrid dg = new DataGrid();
        dg.setTotal(menuService.getDatagridTotal(menu));

        List<SysMenu> menuList = menuService.datagridMenu(page);
        dg.setRows(menuList);

        return dg;
    }

    /**
     * 菜单列表-树
     * @return
     */
    @ResponseBody
    @RequestMapping(value = "/treegrid", method = RequestMethod.POST)
    public void treegrid(HttpServletResponse response,PageHelper page) {
        List<SysMenu> menuList = menuService.getAll(page);
        String json = createTreeJson(menuList);
        this.write(response, json);
    }

    /**
     * 保存(新增,修改)
     * @return
     */
    @ResponseBody
    @RequestMapping(value = "/save", method = RequestMethod.POST)
    public Json add(SysMenu menu) {
        Json j = new Json();

        try {
            menuService.saveMenu(menu);
            j.setSuccess(true);
            j.setMsg("保存成功!");
            j.setObj(menu);
        } catch (Exception e) {
            j.setMsg(e.getMessage());
        }

        return j;
    }

    /**
     * 获取当前菜单的所有子菜单
     * @param menuId
     * @param response
     */
    @RequestMapping(value = "/sub")
    public void getSub(@RequestParam
    Integer menuId, HttpServletResponse response) {
        List<SysMenu> subMenu = menuService.listSubMenuByParentid(menuId);
        JSONArray arr = JSONArray.fromObject(subMenu);
        PrintWriter out;

        try {
            response.setCharacterEncoding("utf-8");
            out = response.getWriter();

            String json = arr.toString();
            out.write(json);
            out.flush();
            out.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 删除
     * @param out
     */
    @ResponseBody
    @RequestMapping(value = "/del", method = RequestMethod.POST)
    public Json deleteUser(SysMenu menu) {
        Json j = new Json();

        try {
            menuService.deleteMenuById(menu.getId());
            j.setSuccess(true);
            j.setMsg("删除成功!");
        } catch (Exception e) {
            j.setMsg(e.getMessage());
        }

        return j;
    }

    ////////////////////////////////////////////////////////////////////////////////////////////
    /**
      * 创建一颗树,以json字符串形式返回
      * @param list 原始数据列表
      * @return 树
      */
    private String createTreeJson(List<SysMenu> list) {
        JSONArray rootArray = new JSONArray();

        for (SysMenu menu : list) {
            if (menu.getParentid() == 0 ) { //有父节点

                JSONObject rootObj = createBranch(list, menu);
                rootArray.add(rootObj);
            }
        }

        return rootArray.toString();
    }

    /**
     * 递归创建分支节点Json对象
     * @param list 创建树的原始数据
     * @param currentNode 当前节点
     * @return 当前节点与该节点的子节点json对象
     */
    private JSONObject createBranch(List<SysMenu> list, SysMenu currentNode) {
        /*
         * 将javabean对象解析成为JSON对象
         */
        JSONObject currentObj = JSONObject.fromObject(currentNode);
        JSONArray childArray = new JSONArray();

        /*
         * 循环遍历原始数据列表,判断列表中某对象的父id值是否等于当前节点的id值,
         * 如果相等,进入递归创建新节点的子节点,直至无子节点时,返回节点,并将该
         * 节点放入当前节点的子节点列表中
         */
        for (SysMenu newNode : list) {
            if ((newNode.getParentid() != 0) &&
                    (newNode.getParentid().compareTo(currentNode.getId()) == 0)) {
                JSONObject childObj = createBranch(list, newNode);
                childArray.add(childObj);
            }
        }

        /*
         * 判断当前子节点数组是否为空,不为空将子节点数组加入children字段中
         */
        if (!childArray.isEmpty()) {
            currentObj.put("children", childArray);
        }

        return currentObj;
    }
}
最近下载更多
sunlea  LV20 5月23日
爱丽淇  LV5 3月18日
杨豫川  LV12 2023年5月31日
qq1061521319  LV4 2022年9月15日
wangyang520  LV6 2022年5月2日
crofsun  LV8 2022年3月28日
543666826  LV33 2021年11月19日
cyrus6693  LV2 2021年10月25日
lironggang  LV38 2021年8月31日
小安同学  LV7 2021年6月20日
最近浏览更多
张春青  LV6 11月14日
123456cjj  LV1 6月2日
sunlea  LV20 5月22日
李俊雄  LV3 4月30日
FFF112233  LV8 3月27日
爱丽淇  LV5 3月18日
qq3577025766  LV6 3月8日
阿凡达  LV9 1月29日
WBelong  LV8 2023年12月27日
wuge123  LV8 2023年12月18日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友