jeecg jeewx 多表查询展示

 

 

 

 

 

中文网站
栏目
weixin_cms_menu
cmsMenuController.do?menu&lang=ZH
新闻信息
weixin_cms_article
cmsArticleController.do?cmsArticle&lang=ZH

 

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@include file="/context/mytags.jsp"%>
<t:base type="jquery,easyui,tools,DatePicker"></t:base>
<div class="easyui-layout" fit="true">
  <div region="center" style="padding:1px;">
  <t:datagrid name="cmsArticleList" title="文章管理" actionUrl="cmsArticleController.do?datagrid&lang=${lang}" idField="id" fit="true" sortName="createDate" sortOrder="desc" queryMode="group" checkbox="true">
   <t:dgCol title="编号" field="id" hidden="false"></t:dgCol>
   <t:dgCol title="标题" field="title" query="true"></t:dgCol>
   <t:dgCol title="所属栏目" field="columnId" dictionary="weixin_cms_menu,id,name,accountid='${WEIXIN_ACCOUNT.id}',lang='${lang}'" query="true"></t:dgCol>
   <t:dgCol title="摘要" field="summary"></t:dgCol>
   <t:dgCol title="自定义模板" field="cusTemplate"></t:dgCol>
   <t:dgCol title="浏览次数" field="viewCount"></t:dgCol>
   <t:dgCol title="创建时间" field="createDate" formatter="yyyy-MM-dd hh:mm:ss"></t:dgCol>
   <t:dgCol title="图片名称" field="imageName" hidden="false"></t:dgCol>
   <t:dgCol title="图片地址" field="imageHref" hidden="false"></t:dgCol>
   <t:dgCol title="微信账户" field="accountid" hidden="false"></t:dgCol>
   <t:dgCol title="操作" field="opt"></t:dgCol>
   <t:dgDelOpt title="删除" url="cmsArticleController.do?del&id={id}" />
   <t:dgToolBar title="录入" icon="icon-add" url="cmsArticleController.do?addorupdate&lang=${lang}" funname="add" width="100%" height="100%"></t:dgToolBar>
   <t:dgToolBar title="编辑" icon="icon-edit" url="cmsArticleController.do?addorupdate&lang=${lang}" funname="update" width="100%" height="100%"></t:dgToolBar>
   <t:dgToolBar title="批量删除"  icon="icon-remove" url="cmsArticleController.do?doBatchDel" funname="deleteALLSelect"></t:dgToolBar>
   <t:dgToolBar title="查看" icon="icon-search" url="cmsArticleController.do?addorupdate" funname="detail" width="100%" height="100%"></t:dgToolBar>
  </t:datagrid>
  </div>
 </div>

 

<%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@include file="/context/mytags.jsp"%>
<!DOCTYPE html>
<html>
 <head>
  <title>信息管理</title>
  <t:base type="jquery,easyui,tools,DatePicker"></t:base>
  <link type="text/css" rel="stylesheet" href="plug-in/weixin/css/appmsg_edit.css" />
  <link type="text/css" rel="stylesheet" href="plug-in/weixin/css/jquery.fileupload.css" />
  <link type="text/css" rel="stylesheet" href="plug-in/bootstrap/css/bootstrap.min.css" />
  <script type="text/javascript" src="plug-in/ckfinder/ckfinder.js"></script>
  
  <!--fileupload-->
  <script type="text/javascript" src="plug-in/weixin/js/vendor/jquery.ui.widget.js"></script>
  <script type="text/javascript" src="plug-in/weixin/js/load-image.min.js"></script>
  <script type="text/javascript" src="plug-in/weixin/js/jquery.fileupload.js"></script>
  <script type="text/javascript" src="plug-in/weixin/js/jquery.fileupload-process.js"></script>
  <script type="text/javascript" src="plug-in/weixin/js/jquery.fileupload-image.js"></script>
  <script type="text/javascript" src="plug-in/weixin/js/jquery.iframe-transport.js"></script>
  <!--UEditor-->
  <script type="text/javascript"  charset="utf-8" src="plug-in/ueditor/ueditor.config.js"></script>
  <script type="text/javascript"  charset="utf-8" src="plug-in/ueditor/ueditor.all.min.js"></script>
    
  <!--建议手动加在语言,避免在ie下有时因为加载语言失败导致编辑器加载失败-->
  <!--这里加载的语言文件会覆盖你在配置项目里添加的语言类型,比如你在配置项目里配置的是英文,这里加载的中文,那最后就是中文-->
  <script type="text/javascript" charset="utf-8" src="plug-in/ueditor/lang/zh-cn/zh-cn.js"></script>
  <script type="text/javascript">
  //编写自定义JS代码
  /*jslint unparam: true, regexp: true */
  /*global window, $ */
  $(function () {
      $('#columnName').combotree({
            url : 'cmsArticleController.do?treeMenu&lang=${lang}'
                    
        });
      $('#columnName').combotree('setValue', '${columnName}');
      'use strict';
      // Change this to the location of your server-side upload handler:
      var url = 'weixinArticleController.do?upload',
          uploadButton = $('<button/>')
              .addClass('btn btn-primary')
              .prop('disabled', true)
              .text('上传中...')
              .on('click', function () {
                  var $this = $(this), data = $this.data();
                  $this.off('click').text('正在上传...').on('click', function () {
                          $this.remove();
                          data.abort();
                  });
                  data.submit().always(function () {
                      $this.remove();
                  });
              });
      $('#fileupload').fileupload({
          url: url,
          dataType: 'json',
          autoUpload: false,
          acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i,
          maxFileSize: 2000000, // 2 MB
          disableImageResize: /Android(?!.*Chrome)|Opera/
              .test(window.navigator.userAgent),
          previewMaxWidth: 290,
          previewMaxHeight: 160,
          previewCrop: true
      }).on('fileuploadadd', function (e, data) {
          $("#files").text("");
          data.context = $('<div/>').appendTo('#files');
          $.each(data.files, function (index, file) {
              //var node = $('<p/>').append($('<span/>').text(file.name));
              //fileupload
              var node = $('<p/>');
              if (!index) {
                  node.append('<br>').append(uploadButton.clone(true).data(data));
              }
              node.appendTo(data.context);
          });
      }).on('fileuploadprocessalways', function (e, data) {
          var index = data.index,
              file = data.files[index],
              node = $(data.context.children()[index]);
          if (file.preview) {
              node.prepend('<br>').prepend(file.preview);
          }
          if (file.error) {
              node
                  .append('<br>')
                  .append($('<span class="text-danger"/>').text(file.error));
          }
          if (index + 1 === data.files.length) {
              data.context.find('button')
                  .text('上传')
                  .prop('disabled', !!data.files.error);
          }
      }).on('fileuploadprogressall', function (e, data) {
          var progress = parseInt(data.loaded / data.total * 100, 10);
          $('#progress .progress-bar').css(
              'width',
              progress + '%'
          );
      }).on('fileuploaddone', function (e, data) {
          console.info(data);
          var  file = data.files[0];
          //var delUrl = "<a class=\"js_removeCover\" onclick=\"return false;\" href=\"javascript:void(0);\">删除</a>";
          $("#imgName").text("").append(file.name);
          $("#imageName").val(file.name);
          $("#progress").hide();
          var d =data.result;
          if (d.success) {
              var link = $('<a>').attr('target', '_blank').prop('href', d.attributes.viewhref);
              $(data.context.children()[0]).wrap(link);
              console.info(d.attributes.viewhref);
              $("#imageHref").val(d.attributes.url);
          }else{
              var error = $('<span class="text-danger"/>').text(d.msg);
              $(data.context.children()[0]).append('<br>').append(error);
          }
      }).on('fileuploadfail', function (e, data) {
          $.each(data.files, function (index, file) {
              var error = $('<span class="text-danger"/>').text('File upload failed.');
              $(data.context.children()[index])
                  .append('<br>')
                  .append(error);
          });
      }).prop('disabled', !$.support.fileInput)
          .parent().addClass($.support.fileInput ? undefined : 'disabled');
      
      //编辑时初始化图片预览
      var name = "${cmsArticlePage.title}", imageHref = "${cmsArticlePage.imageHref}";
      if(name != ""){
          $("#imageTitle").html(name);
      }
      if(imageHref != ""){
          $("#imageShow").html('<img src="${cmsArticlePage.imageHref}" width="100%" height="160" />');
      }
  });
  function setimageTitle(obj){
      $("#imageTitle").html($(obj).val());
  }
  </script>
 </head>
 <body>
     <div class="main_bd">
        <div class="media_preview_area">
            <div class="appmsg editing">
                <div class="appmsg_content" id="js_appmsg_preview">
                        <h4 class="appmsg_title">
                            <a target="_blank" href="javascript:void(0);" onclick="return false;" id="imageTitle">标题</a>
                        </h4>
                        <div class="appmsg_info">
                            <em class="appmsg_date"></em>
                        </div>
                        <div id="files" class="files">
                            <i class="appmsg_thumb default" id="imageShow">栏目图片</i>
                        </div>
                         <div id="progress" class="progress">
                            <div class="progress-bar progress-bar-success"></div>
                        </div>
                        <p class="appmsg_desc"></p>
                </div>
            </div>
        </div>
         <div class="media_edit_area" id="js_appmsg_editor">    
            <div class="appmsg_editor" style="margin-top: 0px;">
                 <div class="inner">
                    <t:formvalid formid="formobj" dialog="true" usePlugin="password" layout="table" action="cmsArticleController.do?save">
                    <input id="id" name="id" type="hidden" value="${cmsArticlePage.id }">
                    <input type="hidden" name="accountid" value="${cmsArticlePage.accountid}">
                    <input type="hidden" name="imageName" id="imageName" value="${cmsArticlePage.imageName}">
                    <input type="hidden" name="lang" value="${lang}">

                    <input id="columnId" name="columnId" type="hidden" value="${cmsArticlePage.columnId}">
                    <table cellpadding="0" cellspacing="1" class="formtable">
                        <tr>
                            <td align="right">
                                <label class="Validform_label">
                                    标题:
                                </label>
                            </td>
                            <td class="value">
                                <input class="inputxt" id="title" name="title" style="width: 300px" value="${cmsArticlePage.title}" datatype="*" onblur="setimageTitle(this)">
                                <span class="Validform_checktip"></span>
                                <label class="Validform_label" style="display: none;">标题</label>
                            </td>
                        </tr>
                        <tr>
                            <td align="right">
                                <label class="Validform_label">
                                    所属栏目:
                                </label>
                            </td>
                            <td class="value">
                                <select id="columnName" name="columnName" />
                            </td>
                        </tr>
                        <tr>
                            <td align="right">
                                <label class="Validform_label">
                                    上传图片:
                                </label>
                            </td>
                            <td class="value">
                                <span class="btn btn-success fileinput-button">
                                    <i class="glyphicon glyphicon-plus"></i>
                                    <span>浏览</span>
                                    <!-- The file input field used as target for the file upload widget -->
                                    <input id="fileupload" type="file" name="files[]" multiple>
                                </span>
                                <input id="imageHref" name="imageHref" type="hidden" nullmsg="请添加图片" value="${cmsArticlePage.imageHref}">
                                <span id="imgName"></span> 
                                <span class="Validform_checktip"></span>
                                <label class="Validform_label" style="display: none;">图片链接</label>
                            </td>
                        </tr>
                        <tr>
                            <td align="right">
                                <label class="Validform_label">
                                    摘要:
                                </label>
                            </td>
                            <td class="value">
                                <textarea class="inputxt" id="summary" name="summary" style="width: 300px" datatype="*">${cmsArticlePage.summary}</textarea>
                                <span class="Validform_checktip"></span>
                                <label class="Validform_label" style="display: none;">摘要</label>
                            </td>
                        </tr>
                        <tr>
                            <td align="right">
                                <label class="Validform_label">
                                    自定义模板:
                                </label>
                            </td>
                            <td class="value">
                                <input class="inputxt" id="title" name="cusTemplate" style="width: 300px" value="${cmsArticlePage.cusTemplate}">
                                <span class="Validform_checktip"></span>
                                <label class="Validform_label" style="display: none;">自定义模板</label>
                            </td>
                        </tr>
                        <tr>
                            <td align="right">
                                <label class="Validform_label">
                                    正文:
                                </label>
                            </td>
                            <td class="value">
                                 <textarea name="content" id="content" style="width: 80%;height:300px">${cmsArticlePage.content}</textarea>
                                <script type="text/javascript">
                                    var editor = UE.getEditor('content');
                                </script>
                            </td>
                        </tr>
                        
                    </table>
                    </t:formvalid>
                </div>
                <i class="arrow arrow_out" style="margin-top: 0px;"></i>
                <i class="arrow arrow_in" style="margin-top: 0px;"></i>
            </div>
        </div>
    </div>
 </body>

 

 

package weixin.cms.controller;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.log4j.Logger;
import org.jeecgframework.core.common.controller.BaseController;
import org.jeecgframework.core.common.exception.BusinessException;
import org.jeecgframework.core.common.hibernate.qbc.CriteriaQuery;
import org.jeecgframework.core.common.model.json.AjaxJson;
import org.jeecgframework.core.common.model.json.ComboTree;
import org.jeecgframework.core.common.model.json.DataGrid;
import org.jeecgframework.core.constant.Globals;
import org.jeecgframework.core.util.MyBeanUtils;
import org.jeecgframework.core.util.ResourceUtil;
import org.jeecgframework.core.util.StringUtil;
import org.jeecgframework.tag.core.easyui.TagUtil;
import org.jeecgframework.tag.vo.easyui.ComboTreeModel;
import org.jeecgframework.web.system.service.SystemService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

import weixin.cms.entity.CmsArticleEntity;
import weixin.cms.entity.CmsMenuEntity;
import weixin.cms.service.CmsArticleServiceI;
import weixin.cms.service.CmsMenuServiceI;
import weixin.guanjia.account.service.WeixinAccountServiceI;

/**   
 * @Title: Controller
 * @Description: 后台管理:文章
 * @author zhangdaihao
 * @date 2014-06-10i 20:07:00
 * @version V1.0   
 *
 */
@Controller
@RequestMapping("/cmsArticleController")
public class CmsArticleController extends BaseController {
    /**
     * Logger for this class
     */
    private static final Logger logger = Logger.getLogger(CmsArticleController.class);

    @Autowired
    private CmsArticleServiceI cmsArticleService;
    @Autowired
    private SystemService systemService;
    @Autowired
    private WeixinAccountServiceI weixinAccountService;
    @Autowired
    private CmsMenuServiceI cmsMenuService;
    private String message;
    
    
    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }


    /**
     * 信息列表 页面跳转
     * 
     * @return
     */
    @RequestMapping(params = "cmsArticle")
    public ModelAndView cmsArticle(HttpServletRequest request) {
        ModelAndView mv=new ModelAndView();
        request.setAttribute("accountid", ResourceUtil.getShangJiaAccountId());
        mv.addObject("lang", request.getParameter("lang")); //传递语言参数判断属于英文菜单还是中文菜单
        mv.setViewName("weixin/cms/cmsArticleList");
        return mv;
    }
    
    @RequestMapping(params = "selArticle")
    public ModelAndView selArticle(HttpServletRequest request) {
        ModelAndView mv=new ModelAndView();
        request.setAttribute("accountid", ResourceUtil.getShangJiaAccountId());
        mv.addObject("lang", request.getParameter("lang")); //传递语言参数判断属于英文菜单还是中文菜单
        
        mv.setViewName("weixin/cms/selArticle");
        return mv;
    }

    /**
     * easyui AJAX请求数据
     * 
     * @param request
     * @param response
     * @param dataGrid
     * @param user
     */

    @RequestMapping(params = "datagrid")
    public void datagrid(CmsArticleEntity cmsArticle,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) {
        CriteriaQuery cq = new CriteriaQuery(CmsArticleEntity.class, dataGrid);
        cq.eq("accountid", ResourceUtil.getShangJiaAccountId());
    
        //查询条件组装器
        org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, cmsArticle, request.getParameterMap());
        this.cmsArticleService.getDataGridReturn(cq, true);
        TagUtil.datagrid(response, dataGrid);
    }
    /**
     * 用于微信端取数据,通过url参数获取accountid ,无需登录
     * @param cmsArticle
     * @param request
     * @param response
     * @param dataGrid
     * @param accountid 微信公众帐号
     */
    @RequestMapping(params = "datagridwx")
    public void datagridwx(CmsArticleEntity cmsArticle,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) {
        CriteriaQuery cq = new CriteriaQuery(CmsArticleEntity.class, dataGrid);
        cq.eq("columnId", cmsArticle.getColumnId());
        //查询条件组装器
        org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, cmsArticle, request.getParameterMap());
        this.cmsArticleService.getDataGridReturn(cq, true);
        TagUtil.datagrid(response, dataGrid);
    }

    /**
     * 删除信息
     * 
     * @return
     */
    @RequestMapping(params = "del")
    @ResponseBody
    public AjaxJson del(CmsArticleEntity cmsArticle, HttpServletRequest request) {
        AjaxJson j = new AjaxJson();
        cmsArticle = systemService.getEntity(CmsArticleEntity.class, cmsArticle.getId());
        message = "信息删除成功";
        cmsArticleService.delete(cmsArticle);
        systemService.addLog(message, Globals.Log_Type_DEL, Globals.Log_Leavel_INFO);
        
        j.setMsg(message);
        return j;
    }
    /**
     * 批量删除信息
     * 
     * @return
     */
    @RequestMapping(params = "doBatchDel")
    @ResponseBody
    public AjaxJson doBatchDel(String ids,HttpServletRequest request){
        AjaxJson j = new AjaxJson();
        message = "信息批量删除成功";
        try{
            for(String id:ids.split(",")){
                CmsArticleEntity cmsArticle = systemService.getEntity(CmsArticleEntity.class,id);
                cmsArticleService.delete(cmsArticle);
                systemService.addLog(message, Globals.Log_Type_DEL, Globals.Log_Leavel_INFO);
            }
        }catch(Exception e){
            e.printStackTrace();
            message = "信息批量删除失败";
            throw new BusinessException(e.getMessage());
        }
        j.setMsg(message);
        return j;
    }

    /**
     * 添加信息
     * 
     * @param ids
     * @return
     */
    @RequestMapping(params = "save")
    @ResponseBody
    public AjaxJson save(CmsArticleEntity cmsArticle, HttpServletRequest request) {
        AjaxJson j = new AjaxJson();
        String accountId = ResourceUtil.getShangJiaAccountId();
        String columnName = request.getParameter("columnName");
        if(StringUtil.isEmpty(accountId)||"-1".equals(accountId)){
            j.setSuccess(false);
            message = "请添加一个公众帐号。";
        }else{
            if (StringUtil.isNotEmpty(cmsArticle.getId())) {
                message = "信息更新成功";
                CmsArticleEntity t = cmsArticleService.get(CmsArticleEntity.class, cmsArticle.getId());
                try {
                    MyBeanUtils.copyBeanNotNull2Bean(cmsArticle, t);
                    t.setColumnId(columnName);
                    cmsArticleService.saveOrUpdate(t);
                    systemService.addLog(message, Globals.Log_Type_UPDATE, Globals.Log_Leavel_INFO);
                } catch (Exception e) {
                    e.printStackTrace();
                    message = "信息更新失败";
                }
            } else {
                
                message = "信息添加成功";
                cmsArticle.setAccountid(accountId);
                cmsArticle.setColumnId(columnName);
                cmsArticleService.save(cmsArticle);
                systemService.addLog(message, Globals.Log_Type_INSERT, Globals.Log_Leavel_INFO);
            }
        }
        j.setMsg(message);
        return j;
    }

    /**
     * 信息列表页面跳转
     * 
     * @return
     */
    @RequestMapping(params = "addorupdate")
    public ModelAndView addorupdate(CmsArticleEntity cmsArticle, HttpServletRequest req) {
        if (StringUtil.isNotEmpty(cmsArticle.getId())) {
            cmsArticle = cmsArticleService.getEntity(CmsArticleEntity.class, cmsArticle.getId());
            req.setAttribute("cmsArticlePage", cmsArticle);
            req.setAttribute("columnId", cmsArticle.getColumnId());
            CmsMenuEntity menu = cmsArticleService.getEntity(CmsMenuEntity.class, cmsArticle.getColumnId());
            if (null != menu) {
                req.setAttribute("columnName", menu.getName());
            }
        }
        ModelAndView mv=new ModelAndView();
        mv.addObject("lang", req.getParameter("lang")); //传递语言参数判断属于英文菜单还是中文菜单
        req.setAttribute("accountid", ResourceUtil.getShangJiaAccountId());
        mv.setViewName("weixin/cms/cmsArticle");
        return mv;
    }
    
    /**
     * 信息列表(前台) 页面跳转
     * 
     * @return
     */
    @RequestMapping(params = "cmsArticleListShow")
    public ModelAndView cmsArticleListShow(HttpServletRequest request) {
        if (StringUtil.isNotEmpty(request.getParameter("columnId"))) {
            request.setAttribute("column", cmsArticleService.getEntity(CmsMenuEntity.class,request.getParameter("columnId")));
        }
        return new ModelAndView("weixin/cms/cmsArticleListShow");
    }

    /**
     * 信息展示(前台) 页面跳转
     * 
     * @return
     */
    @RequestMapping(params = "cmsArticleShow")
    public ModelAndView cmsArticleShow(HttpServletRequest request) {
        if (StringUtil.isNotEmpty(request.getParameter("articleId"))) {
            CmsArticleEntity cmsArticle = cmsArticleService.getEntity(CmsArticleEntity.class, request.getParameter("articleId"));
            request.setAttribute("cmsArticlePage", cmsArticle);
        }
        return new ModelAndView("weixin/cms/cmsArticleShow");
    }
    
    @RequestMapping(params = "treeMenu")
    @ResponseBody
    public List<ComboTree> treeMenu(HttpServletRequest request, ComboTree comboTree) {
        CriteriaQuery cq = new CriteriaQuery(CmsMenuEntity.class);
        String lang = request.getParameter("lang");
        if (StringUtil.isNotEmpty(comboTree.getId())) {
            cq.eq("pmenu.id", comboTree.getId());
        }
        if (StringUtil.isEmpty(comboTree.getId())) {
            cq.isNull("pmenu.id");
        }
        cq.eq("accountid", ResourceUtil.getShangJiaAccountId());
        cq.eq("lang", lang);
        //只查询栏目类型为新闻列表的
        //cq.eq("visitType", "1");
        cq.add();
        List<CmsMenuEntity> menuList = cmsMenuService.getListByCriteriaQuery(cq, false);
        
        List<ComboTree> comboTrees = new ArrayList<ComboTree>();
        ComboTreeModel comboTreeModel = new ComboTreeModel("id", "name", "menuList");
        comboTrees = systemService.ComboTree(menuList, comboTreeModel, null);

        return comboTrees;

    }
}

 

posted @ 2020-04-02 11:09  DarJeely  阅读(587)  评论(0编辑  收藏  举报