No Description

UserService.java 7.2KB

    package com.ekexiu.console.system.service; import com.ekexiu.console.service.Upload; import com.ekexiu.console.system.dao.PictableDao; import com.ekexiu.console.system.dao.RoleDao; import com.ekexiu.console.system.dao.UserDao; import com.ekexiu.console.system.po.Pictable; import com.ekexiu.console.system.po.Role; import com.ekexiu.console.system.po.User; import com.ekexiu.console.system.vo.ConsoleAuthUser; import org.jfw.apt.annotation.Autowrie; import org.jfw.apt.annotation.DefaultValue; import org.jfw.apt.annotation.Nullable; import org.jfw.apt.web.annotation.LoginUser; import org.jfw.apt.web.annotation.Path; import org.jfw.apt.web.annotation.method.InvalidSession; import org.jfw.apt.web.annotation.method.SetSession; import org.jfw.apt.web.annotation.operate.Get; import org.jfw.apt.web.annotation.operate.Post; import org.jfw.apt.web.annotation.operate.Put; import org.jfw.apt.web.annotation.param.*; import org.jfw.util.PageQueryResult; import org.jfw.util.StringUtil; import org.jfw.util.auth.AuthUtil; import org.jfw.util.exception.JfwBaseException; import org.jfw.util.jdbc.JdbcTask; import org.jfw.util.jdbc.JdbcUtil; import org.jfw.util.web.fileupload.UploadItemIterator; import javax.sql.DataSource; import java.io.IOException; import java.sql.Connection; import java.sql.SQLException; import java.util.*; import java.util.concurrent.atomic.AtomicReference; @Path("/sys/user") public class UserService extends Upload { private AtomicReference<Map<String, User>> cache = new AtomicReference<Map<String, User>>(); public static final String DEFAULT_AUTH_STR = AuthUtil.serialAuth(new int[]{0}); public static final String DEFAULT_PW_STR = StringUtil.md5("12345678"); @Autowrie private UserDao userDao; @Autowrie RoleDao roleDao; @Autowrie private PictableDao pictableDao; public PictableDao getPictableDao() { return pictableDao; } public void setPictableDao(PictableDao pictableDao) { this.pictableDao = pictableDao; } public RoleDao getRoleDao() { return roleDao; } public void setRoleDao(RoleDao roleDao) { this.roleDao = roleDao; } public UserDao getUserDao() { return userDao; } public void setUserDao(UserDao userDao) { this.userDao = userDao; } @SetSession("JFW_SESSION_LOGIN_USER=result") @Path("/login") @Post public ConsoleAuthUser login(@JdbcConn Connection con, String key, String pw) throws SQLException { User user = userDao.queryByLoginKey(con, key); if (user != null && StringUtil.md5(pw).equals(user.getLoginPassword()) && user.isActived()) { ConsoleAuthUser cau = new ConsoleAuthUser(user); cau.setHead(user.getHead()); cau.setId(user.getId()); cau.setName(user.getName()); cau.setMobile(user.getMobile()); cau.setEmail(user.getEmail()); ArrayList<int[]> list = new ArrayList<int[]>(1); list.add(AuthUtil.deSerialAuth(user.getAuthinfo())); for (Role role : this.roleDao.queryByUser(con, user.getId())) { list.add(AuthUtil.deSerialAuth(role.getAuthinfo())); } cau.setAuths(AuthUtil.merge(list.toArray(new int[0][0]))); return cau; } return null; } @Get @Path public ConsoleAuthUser get(@LoginUser ConsoleAuthUser user) { return user; } @Get @Path("/logout") @InvalidSession public void logout() { } public static void main(String[] args) throws Exception { System.out.println(AuthUtil.serialAuth(new int[]{0})); } @Get @Path("/pq") public PageQueryResult<User> pageQuery(@JdbcConn Connection con, @Nullable String name, @Nullable Boolean actived, @Nullable String mobile, @Nullable String email, @Nullable String bt, @Nullable String et, @DefaultValue("1") int pageNo, @DefaultValue("10") int pageSize) throws SQLException { if (bt != null) bt = bt + "000000"; if (et != null) et = et + "235959"; PageQueryResult<User> ret = this.userDao.pageQuery(con, name, actived, mobile, email, bt, et, pageNo, pageSize); for (User u : ret.getData()) { u.setLoginPassword(null); u.setAuthinfo(null); } return ret; } @Post @Path public void insert(@JdbcConn(true) Connection con, @RequestParam(fields = {@FieldParam(value = "name", valueClass = String.class, required = true), @FieldParam(value = "email", valueClass = String.class, required = true), @FieldParam(value = "mobile", valueClass = String.class, required = false), @FieldParam(value = "descp", valueClass = String.class, required = false), @FieldParam(value = "head", valueClass = String.class, required = false)}) User user) throws SQLException { String id = StringUtil.buildUUID(); user.setId(id); user.setActived(true); user.setAuthinfo(DEFAULT_AUTH_STR); user.setLoginPassword(DEFAULT_PW_STR); this.userDao.insert(con, user); } @Get @Path("/all") public Collection<User> queryall(@JdbcConn Connection con) throws SQLException { return this.cache.get().values(); } public void initByDataSource(DataSource ds) throws SQLException { final Connection con = ds.getConnection(); JdbcUtil.executeAutoClose(con, new JdbcTask() { @Override public void exec() throws SQLException { List<User> list = userDao.queryall(con); Map<String, User> map = new HashMap<String, User>(); for (User res : list) { map.put(res.getId(), res); } cache.set(map); } }, false); } @Put @Path public void update(@JdbcConn(true) Connection con, @RequestBody User user) throws SQLException { user.setLoginPassword(null); this.userDao.update(con, user); } @Get @Path("/info") public User editInfo(@JdbcConn Connection con, @LoginUser ConsoleAuthUser cau) throws SQLException { User user = this.userDao.queryById(con, cau.getId()); if (user != null) { user.setLoginPassword(null); } return user; } @Post @Path("/resetpw") public void resetpw(@JdbcConn(true) Connection con, String[] ids) throws SQLException { this.userDao.resetPassword(con, ids, DEFAULT_PW_STR); } @Get @Path("/right/{id}") public int[] getRights(@JdbcConn Connection con, @PathVar String id) throws SQLException { User user = this.userDao.queryById(con, id); if (user != null) { return AuthUtil.unCompress(AuthUtil.deSerialAuth(user.getAuthinfo())); } return null; } @Post @Path("/right") public void updateRights(@JdbcConn(true) Connection con, String userid, int[] right) throws SQLException { this.userDao.update(con, userid, AuthUtil.serialAuth(AuthUtil.compress(right))); } @Post @Path("/head") public Upload.UploadItem head(@org.jfw.apt.web.annotation.param.Upload UploadItemIterator it) throws JfwBaseException, IOException { return this.upload(it); } @Post @Path("/del") public void delete(@JdbcConn(true) Connection con, String[] ids) throws SQLException { this.userDao.delete(con, ids); } @Get @Path("/id/{id}") public User query(@JdbcConn Connection con, @PathVar String id) throws SQLException { return this.userDao.queryById(con, id); } @Get @Path("/pictable/{id}") public List<Pictable> queryRec(@JdbcConn Connection con, @PathVar String id) throws SQLException { return this.pictableDao.queryRec(con, id); } }