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; } }