UserController.java 6.17 KB
package com.jflyfox.system.user;

import com.alibaba.druid.util.StringUtils;
import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.Page;
import com.jflyfox.component.base.BaseProjectController;
import com.jflyfox.component.util.JFlyFoxUtils;
import com.jflyfox.jfinal.component.annotation.ControllerBind;
import com.jflyfox.jfinal.component.db.SQLUtils;
import com.jflyfox.system.department.DepartmentSvc;
import com.jflyfox.system.role.SysRole;
import com.jflyfox.util.StrUtils;
import com.jflyfox.util.encrypt.Md5Utils;

import java.util.List;

/**
 * 用户管理
 *
 * @author flyfox 2014-2-11
 */
@ControllerBind(controllerKey = "/system/user")
public class UserController extends BaseProjectController {

    private static final String path = "/pages/system/user/user_";

    public void index() {
        list();
    }

    public void list() {
        SysUser model = getModelByAttr(SysUser.class);

        SQLUtils sql = new SQLUtils(" from sys_user t " //
                + " left join sys_department d on d.id = t.departid " //
                + " where 1 = 1 and userid != 1 ");

        if (model.getAttrValues().length != 0) {
            sql.whereLike("username", model.getStr("username"));
            sql.whereLike("realname", model.getStr("realname"));
            sql.whereEquals("usertype", model.getInt("usertype"));
            sql.whereEquals("departid", model.getInt("departid"));
        }

        // 排序
        String orderBy = getBaseForm().getOrderBy();
        if (StrUtils.isEmpty(orderBy)) {
            sql.append(" order by userid desc");
        } else {
            sql.append(" order by ").append(orderBy);
        }

        Page<SysUser> page = SysUser.dao.paginate(getPaginator(), "select t.*,d.name as departname ", sql.toString()
                .toString());
        // 下拉框
        setAttr("departSelect", new DepartmentSvc().selectDepart(model.getInt("departid")));
        setAttr("page", page);
        setAttr("attr", model);
        render(path + "list.html");
    }

    public void add() {
        setAttr("departSelect", new DepartmentSvc().selectDepart(0));

        render(path + "add.html");
    }

    public void view() {
        SysUser model = SysUser.dao.findById(getParaToInt());
        model.put("secretKey", new Md5Utils().getMD5(model.getStr("password")).toLowerCase());

        // 部门名称
        model.put("departname", new DepartmentSvc().getDepartName(model.getInt("departid")));
        String password = model.get("password");
        model.put("password", StringUtils.isEmpty(password) ? "" : JFlyFoxUtils.passwordDecrypt(password));
        setAttr("model", model);
        render(path + "view.html");
    }

    public void delete() {
        int userid = getParaToInt();
        // 日志添加
        SysUser model = new SysUser();
        String now = getNow();
        model.put("update_id", getSessionUser().getUserid());
        model.put("update_time", now);

        // 删除授权
        Db.update("delete from sys_user_role where userid = ? ", userid);

        model.deleteById(userid);

        UserCache.init();
        list();
    }

    public void edit() {
        SysUser model = SysUser.dao.findById(getParaToInt());

        setAttr("departSelect", new DepartmentSvc().selectDepart(model.getInt("departid")));
        String password = model.get("password");
        model.put("password", StringUtils.isEmpty(password) ? "" : JFlyFoxUtils.passwordDecrypt(password));
        setAttr("model", model);
        render(path + "edit.html");
    }

    public void save() {
        Integer pid = getParaToInt();
        SysUser model = getModel(SysUser.class);

        // 日志添加
        Integer userid = getSessionUser().getUserid();
        String now = getNow();
        model.put("update_id", userid);
        model.put("update_time", now);
        if (!checkUserName(model, pid)) {
            return;
        }
        if (pid != null && pid > 0) { // 更新
            if (!StrUtils.isEmpty(model.getStr("password"))) {
                model.put("password", JFlyFoxUtils.passwordEncrypt(model.getStr("password")));
            }
            model.update();
        } else { // 新增
            if (StrUtils.isEmpty(model.getStr("password"))) {
                model.put("password", JFlyFoxUtils.getDefaultPassword());
            } else {
                model.put("password", JFlyFoxUtils.passwordEncrypt(model.getStr("password")));
            }
            model.remove("userid");
            model.put("create_id", userid);
            model.put("create_time", now);
            model.save();
        }
        UserCache.init();
        renderMessage("保存成功");
    }

    private boolean checkUserName(SysUser model, Integer pid) {
        SysUser record = SysUser.dao.findFirstByWhere("where username = ?", model.getStr("username"));
        if (record != null) {
            if (pid == null || pid == 0 || record.getUserid() != pid) {
                renderMessageByFailed("登陆账号已存在");
                return false;
            }
        }
        record = SysUser.dao.findFirstByWhere("where realname = ?", model.getUserName());
        if (record != null)
        {
            if (pid == null || pid == 0 || record.getUserid() != pid) {
                renderMessageByFailed("真实姓名已存在");
                return false;
            }
        }
        return true;
    }

    /**
     * 跳转到授权页面
     * <p>
     * 2015年4月28日 下午12:00:05 flyfox 369191470@qq.com
     */
    public void auth() {
        int userid = getParaToInt();
        List<SysRole> list = SysRole.dao.findByWhere(" where status=1 order by sort ");

        String roleids = new UserSvc().getRoleids(userid);
        setAttr("userid", userid);
        setAttr("roleids", roleids);
        // 根结点
        setAttr("list", list);
        render(path + "auth.html");
    }

    /**
     * 保存角色信息
     * <p>
     * 2015年4月28日 下午3:18:33 flyfox 369191470@qq.com
     */
    public void auth_save() {
        int userid = getParaToInt("userid");
        String roleids = getPara("roleids");

        new UserSvc().saveAuth(userid, roleids, getSessionUser().getUserid());
        renderMessage("保存成功");
    }

}