首页>代码>JFinal-layui极速开发企业应用系统-专业版>/Jfinal-layui/src/main/java/com/qinhailin/common/base/BaseController.java
/**
 * Copyright 2019-2021 覃海林(qinhaisenlin@163.com).
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */ 

package com.qinhailin.common.base;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.apache.log4j.Logger;

import com.alibaba.fastjson.JSONObject;
import com.jfinal.aop.Aop;
import com.jfinal.core.Controller;
import com.jfinal.core.NotAction;
import com.jfinal.kit.Kv;
import com.jfinal.kit.PathKit;
import com.jfinal.kit.Ret;
import com.jfinal.plugin.activerecord.Record;
import com.jfinal.upload.UploadFile;
import com.qinhailin.common.base.service.FileService;
import com.qinhailin.common.kit.IdKit;
import com.qinhailin.common.model.FileUploaded;
import com.qinhailin.common.safe.TokenService;
import com.qinhailin.common.visit.Visitor;
import com.qinhailin.common.visit.VisitorUtil;
import com.qinhailin.common.vo.Feedback;

public class BaseController extends Controller {
	private static final Logger LOG = Logger.getLogger(BaseController.class);

	FileService fileService =Aop.get(FileService.class);
	TokenService tokenService=Aop.get(TokenService.class);
	
	/** 访问者信息 **/
	@NotAction
	public Visitor getVisitor(){
		return  VisitorUtil.getVisitor(getSession());
	}
	
	/** 用户编号 **/
	@NotAction
	public String getUserCode(){
		return getVisitor()!=null?getVisitor().getCode():null;
	}
	/**
	 * 捕获异常
	 * 
	 * @param e
	 * @author QinHaiLin
	 * @date 2018年10月15日
	 */
	@NotAction
	public void handerException(Exception e) {
		LOG.info(e.getMessage(), e);
		e.printStackTrace();
	}
	
	/**
	 * 记录日志信息
	 * @param message
	 * @author QinHaiLin
	 * @date 2018年12月11日
	 */
	@NotAction
	public void logInfo(String message) {
		LOG.info(message);
	}
	
	/**
	 * 输出异常信息到页面
	 * @param message
	 * @author QinHaiLin
	 * @date 2018年12月4日
	 */
	@NotAction
	public void setException(String message) {
		setAttr("e", new Exception(message));
	}
	
	/**
	 * 输出提示信息到页面
	 * @param message
	 */
	@NotAction
	public void setMsg(String message){
		setAttr("msg",message);
	}
	
	/**
	 * 创建32位字符串
	 * 
	 * @return
	 * @author QinHaiLin
	 * @date 2018年8月1日
	 */
	@NotAction
	public String createUUID() {
		return IdKit.createUUID();
	}
	
	/**
	 * {
	 *   "code": "success",
	 *   "success": true,
	 *   "error": false,
	 *   "msg": "成功"
	 *  }
	 * @return
	 */
	@NotAction
	public Feedback suc(){
		return Feedback.success("成功");
	}
	
	/**
	 * {
	 *   "code": "success",
	 *   "success": true,
	 *   "error": false,
	 *   "msg": ""
	 *  }
	 * @param msg 提示信息
	 * @return
	 */
	@NotAction
	public Feedback suc(String msg){
		return Feedback.success(msg);
	}
	/**
	 * {
	 *   "code": "error",
	 *   "success": false,
	 *   "error": true,
	 *   "msg": "失败"
	 *  }
	 * @return
	 */
	@NotAction
	public Feedback err(){
		return Feedback.error("失败");
	}
	
	/**
	 * {
	 *   "code": "error",
	 *   "success": false,
	 *   "error": true,
	 *   "msg": ""
	 *  }
	 * @param msg 提示信息
	 * @return
	 */
	@NotAction
	public Feedback err(String msg){
		return Feedback.error(msg);
	}
	
	/**
	 * 获取数组变量ids
	 * 
	 * @return
	 * @author QinHaiLin
	 * @date 2018年8月1日
	 */
	@NotAction
	public List<String> getIds() {
		return getArray("ids");
	}

	/**
	 * 获取数组变量
	 * 
	 * @param arrayName
	 * @return
	 * @author QinHaiLin
	 * @date 2018年9月17日
	 */
	@NotAction
	public List<String> getArray(String arrayName) {		
		List<String> ids = new ArrayList<>();
		for (int i = 0; i < 100; i++) {
			if (getPara(arrayName + "[" + i + "]")== null) {
				break;
			} 
			ids.add(getPara(arrayName + "[" + i + "]"));
		}
		return ids;
	}

	/**
	 * 保存文件记录
	 * 
	 * @return url格式:180801/1808010001004
	 * 
	 * @author QinHaiLin
	 * @date 2018年8月1日
	 */
	@NotAction
	public String saveFile(UploadFile uploadFile) {
		return fileService.saveFile(uploadFile);
	}
	@NotAction
	public String saveFile(UploadFile uploadFile, String objectId) {
		return fileService.saveFile(uploadFile, objectId);
	}
	@NotAction
	public List<String> saveFiles(List<UploadFile> list) {
		return fileService.saveFiles(list);
	}
	@NotAction
	public List<String> saveFiles(List<UploadFile> list, String objectId) {
		return fileService.saveFiles(list,objectId);
	}

	/**
	 * 通过url获取文件记录对象
	 * 
	 * @param url
	 *            格式:180801/1808010001004
	 * @return
	 * @author QinHaiLin
	 * @date 2018年8月1日
	 */
	@NotAction
	public FileUploaded getFileUploaded(String url) {
		return fileService.queryFileUploadedByUrl(url);
	}
	@NotAction
	public FileUploaded getFileUploadedByObjectId(String objectId) {
		return fileService.queryFileUploadedByObjectId(objectId);
	}
	@NotAction
	public List<FileUploaded> getFileUploadListByObjectId(String objectId) {
		return fileService.queryFileUploadedListByObjectId(objectId);
	}

	/**
	 * 删除文件
	 * 
	 * @param url
	 *            格式:180801/1808010001004
	 * @return
	 * @author QinHaiLin
	 * @date 2018年8月1日
	 */
	@NotAction
	public void deleteFileByUrl(String url) {
		fileService.deleteFile(url);
	}
	@NotAction
	public void deleteFileByUrls(List<String> urls) {
		fileService.deleteFiles(urls);
	}
	@NotAction
	public void deleteFileByModel(FileUploaded entity) {
		fileService.delete(entity);
	}
	@NotAction
	public void deleteFileByObjectId(String objectId) {
		fileService.deleteFileByObjectId(objectId);
	}

	/**
	 * 导入数据
	 * 
	 * @param uf
	 * @param sql
	 *            insert into game_theme (id, state, title) values(?,?,?)
	 * @return
	 * @author QinHaiLin
	 * @date 2018年9月14日
	 */
	@NotAction
	public Boolean importExcel(UploadFile uf, String sql) {
		boolean b = fileService.importExcel(uf, sql);
		fileService.deleteFile(uf);
		return b;
	}

	/**
	 * 导出数据.xlsx
	 * 
	 * @param title
	 *            String[] title={"姓名","性别","年龄",...}
	 * @param fileName
	 * @param sql
	 *            select name as '0',sex as '1',age as '2' from user
	 * @author QinHaiLin
	 * @date 2018年8月14日
	 */
	@NotAction
	public void exportExcel(String[] title, String fileName, String sql) {
		fileService.exportExcelxlsx(getResponse(), title, fileName, sql);
	}
	@NotAction
	public void exportExcel(String[] title, String sql) {
		fileService.exportExcelxlsx(getResponse(), title, null, sql);
	}
	
	/**
	 * 文件名放前面,避免误用
	 * @param fileName
	 * @param title
	 * @param sql
	 * @param paras
	 */
	@NotAction
	public void exportExcel(String fileName, String[] title, String sql, Object... paras) {
		fileService.exportExcelxlsx(getResponse(), title, fileName, sql, paras);
	}
	@NotAction
	public void exportExcel(String[] title, String sql, Object... paras) {
		fileService.exportExcelxlsx(getResponse(), title, null, sql, paras);
	}
	@NotAction
	public void exportExcel(String[] title, String fileName, List<Record> list) {
		fileService.exportExcelxlsx(getResponse(), title, fileName, list);
	}
	@NotAction
	public void exportExcel(String[] title, List<Record> list) {
		fileService.exportExcelxlsx(getResponse(), title, null, list);
	}
	
	/**
	 * 写内容到html
	 * @param fileName 格式:index.html
	 * @param text 任意内容
	 * @author QinHaiLin
	 * @date 2019年3月21日
	 */
	@NotAction
	public void writeToHtml(String fileName,String text) {
		File file = new File(PathKit.getWebRootPath() + getViewPath()+"/"+fileName);
		try {
			BufferedWriter writer = new BufferedWriter (new OutputStreamWriter(new FileOutputStream(file),"UTF-8"));		
			writer.write(text);				
			writer.flush();
			writer.close();
		} catch (IOException e) {
			handerException(e);
		}
	}
	
	/**
	 * 返回接口成功数据
	 * @param data
	 * @return
	 * @author QinHaiLin
	 * @date 2019年3月6日
	 */
	@NotAction
	public Ret ok(Object data) {
		return Ret.ok("msg", "成功").set("data", data);
	}
	
	@NotAction
	public Ret ok() {
		return Ret.ok("msg", "成功");
	}
	
	@NotAction
	public Ret fail() {
		return Ret.fail("msg", "失败");
	}

	/**
	 * 返回接口失败数据
	 * @param data
	 * @return
	 * @author QinHaiLin
	 * @date 2019年3月6日
	 */
	@NotAction
	public Ret fail(String msg) {
		return Ret.fail("msg", msg);
	}
	
	/**
	 * 获取请求参数,转化为JSONObject 
	 * @return
	 */
	@NotAction
    public JSONObject getAllParamsToJson(){
        JSONObject result=new JSONObject();
        Map<String,String[]> map=getParaMap();
        Set<String> keySet=map.keySet();
        for(String key:keySet){
            if(map.get(key) instanceof String[]){
                String[] value=map.get(key);
                if(value.length==0){
                    result.put(key,null);
 
                }else if(value.length==1 && key.indexOf("[]")<0){
                    result.put(key,value[0]);
                }else{
                    result.put(key,value);
                }
            }else{
                result.put(key,map.get(key));
            }
        }
        return result;
    }
    
	/** 
	 * 获取请求参数,转化为JFinal的Record对象 
	 * @return
	 */
	@NotAction
    public Record getAllParamsToRecord(){
    	@SuppressWarnings("unchecked")
		Record result=new Record().setColumns(getKv());
    	result.remove("_jfinal_token");
        return result;
    }	    
	
	/**
	 * 构造Kv对象
	 * @param key
	 * @param value
	 * @return
	 */
	@NotAction
	public Kv byKv(Object key,Object value){
		return Kv.by(key, value);
	}
	
	/**
	 * 创建token
	 * @return 
	 */
	@NotAction
	public String createToken(){
		tokenService.createToken(this);
		return null;
	}
}
最近下载更多
z875152686  LV8 2023年11月2日
2602275348  LV12 2022年4月8日
zcl02036716  LV17 2022年2月28日
微量的记忆  LV10 2022年2月11日
最代码官方  LV168 2021年10月5日
最近浏览更多
Frank_F 7月5日
暂无贡献等级
myfz0662  LV10 5月8日
云破月  LV8 4月12日
akittyboy  LV9 3月31日
z875152686  LV8 2023年11月2日
abc562311934  LV4 2022年10月8日
1986王志飞  LV6 2022年8月12日
bluesky2016  LV15 2022年6月10日
a318888331  LV13 2022年4月11日
2602275348  LV12 2022年3月31日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友