UserController.java 6.36 KB
package com.jflyfox.api.controller;

import com.alibaba.druid.util.StringUtils;
import com.alibaba.fastjson.JSON;
import com.jfinal.aop.Before;
import com.jfinal.kit.HttpKit;
import com.jfinal.kit.Kv;
import com.jflyfox.api.constant.ApiConstant;
import com.jflyfox.api.form.ApiForm;
import com.jflyfox.api.form.ApiResp;
import com.jflyfox.api.interceptor.ApiInterceptor;
import com.jflyfox.api.service.ApiService;
import com.jflyfox.api.service.IOrderServer;
import com.jflyfox.api.service.IUserServer;
import com.jflyfox.api.service.impl.ApiV101Logic;
import com.jflyfox.api.service.impl.IOrderServerImpl;
import com.jflyfox.api.service.impl.IUserServerImpl;
import com.jflyfox.api.vo.UserInfoVO;
import com.jflyfox.component.base.BaseProjectController;
import com.jflyfox.component.util.JFlyFoxUtils;
import com.jflyfox.jfinal.component.annotation.ControllerBind;
import com.jflyfox.system.user.SysUser;

/**
 * @author :likai
 * @date :Created in 2020/6/11 18:00
 * @description:
 */
@ControllerBind(controllerKey = "/api/user")
@Before(ApiInterceptor.class)
public class UserController extends BaseProjectController {

    ApiService service = new ApiService();

    IUserServer userServer = new IUserServerImpl();

    IOrderServer orderServer = new IOrderServerImpl();

    ApiV101Logic apiV101Logic = new ApiV101Logic();

    public void info() {
        ApiForm form = getForm();
        ApiResp resp = apiV101Logic.userInfo(form);
        renderJson(resp);
    }

    public void get_info() {
        ApiForm form = getForm();
        Integer pid = getParaToInt();
        SysUser user = findUserById(form, pid);
        if (user == null) return;
        UserInfoVO vo = new UserInfoVO(user);
        vo.setOrderCount(orderServer.findOrderCountByRealName(vo.getRealName()));

        renderJson(new ApiResp(form).setData(vo));
    }


    public ApiForm getForm() {
        ApiForm form = getBean(ApiForm.class, null);
        return form;
    }

    public void list() {
        ApiForm form = getForm();
        SysUser user = getSysUser(form);
        if (user == null) return;
        ApiResp resp = userServer.page(JFlyFoxUtils.USER_TYPE_API, form);
        renderJson(resp);
    }

    public void add() {
        ApiForm form = getForm();
        SysUser currUser = getSysUser(form);
        Kv kv = JSON.parseObject(HttpKit.readData(getRequest()), Kv.class);
        SysUser user = new SysUser();
        user.put("username", kv.getStr("username"));
        user.put("password", JFlyFoxUtils.passwordEncrypt(kv.getStr("password")));
        user.put("realname", kv.getStr("realname"));
        user.put("remark", kv.getStr("remark"));
        user.put("departid", 1);
        user.put("usertype", JFlyFoxUtils.USER_TYPE_API);
        user.put("create_id", currUser.getUserid());
        user.put("create_time", getNow());
        if (!checkUserName(user, 0, form)) {
            return;
        }
        user.save();
        renderJson(new ApiResp(form));
    }

    public void options() {
        ApiForm form = getForm();
        SysUser currUser = getSysUser(form);
        ApiResp resp = userServer.options(JFlyFoxUtils.USER_TYPE_API, form);
        renderJson(resp);
    }


    private boolean checkUserName(SysUser model, Integer pid, ApiForm form) {
        SysUser record = SysUser.dao.findFirstByWhere("where username = ?", model.getStr("username"));
        if (record != null) {
            if (pid == null || pid == 0 || record.getUserid() != pid) {
                renderJson(new ApiResp(form).setCode(ApiConstant.CODE_FAIL).setMsg("登录账号已存在"));
                return false;
            }
        }
        record = SysUser.dao.findFirstByWhere("where realname = ?", model.getUserName());
        if (record != null) {
            if (pid == null || pid == 0 || record.getUserid() != pid) {
                renderJson(new ApiResp(form).setCode(ApiConstant.CODE_FAIL).setMsg("客户名称已存在"));
                return false;
            }
        }
        return true;
    }

    public void edit() {
        ApiForm form = getForm();
        SysUser currUser = getSysUser(form);

        Integer pid = getParaToInt();
        SysUser user = findUserById(form, pid);
        if (user == null) return;
        Kv kv = JSON.parseObject(HttpKit.readData(getRequest()), Kv.class);
        user.set("username", kv.getStr("username"));
//        if (user.getStr("password") != null && !user.getStr("password").equals(kv.getStr("password"))) {
//            user.set("password", JFlyFoxUtils.passwordEncrypt(kv.getStr("password")));
//        }
        user.set("realname", kv.getStr("realname"));
        user.set("remark", kv.getStr("remark"));
        if (!checkUserName(user, pid, form)) {
            return;
        }
        user.update();
        renderJson(new ApiResp(form));
    }

    public void update_password() {
        ApiForm form = getForm();
        SysUser currUser = getSysUser(form);
        Integer pid = getParaToInt();
        SysUser user = findUserById(form, pid);
        if (user == null) return;
        Kv kv = JSON.parseObject(HttpKit.readData(getRequest()), Kv.class);
        if (!StringUtils.isEmpty(kv.getStr("password")) && !user.getStr("password").equals(kv.getStr("password"))) {
            user.set("password", JFlyFoxUtils.passwordEncrypt(kv.getStr("password")));
        }
        user.update();
        renderJson(new ApiResp(form));

    }


    public void delete() {
        ApiForm form = getForm();
        Integer pid = getParaToInt();
        SysUser user = findUserById(form, pid);
        if (user == null) return;
        user.delete();
        renderJson(new ApiResp(form));
    }

    private SysUser findUserById(ApiForm form, Integer pid) {
        SysUser user = SysUser.dao.findById(pid);
        if (user == null || user.getInt("usertype") != JFlyFoxUtils.USER_TYPE_API) {
            renderJson(new ApiResp(form).setCode(ApiConstant.CODE_FAIL).setMsg("用户不存在"));
            return null;
        }
        return user;
    }

    /**
     * 获取当前用户 并鉴权
     *
     * @param form
     * @return
     */
    public SysUser getSysUser(ApiForm form) {
        SysUser user = super.getSysUser(form);
        if (user == null) return user;
        if (user.getInt("usertype") != JFlyFoxUtils.USER_TYPE_NORMAL) {
            renderJson(new ApiResp(form).setCode(ApiConstant.CODE_FAIL).setMsg("无权限访问"));
            return null;
        }
        return user;
    }

}