|
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.JdbcUtil;
import org.jfw.util.jdbc.ResultSetExtractor;
import org.jfw.util.web.fileupload.UploadItemIterator;
import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
@Path("/sys/user")
public class UserService extends Upload {
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 = "id", valueClass = String.class, required = false),@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 {
if(user.getId() == null){
user.setId(StringUtil.buildUUID());
}
user.setActived(true);
user.setAuthinfo(DEFAULT_AUTH_STR);
user.setLoginPassword(DEFAULT_PW_STR);
this.userDao.insert(con, user);
}
@Get
@Path("/all")
public List<User> queryall(@JdbcConn Connection con) throws SQLException {
List<User> users = this.userDao.queryall(con);
for (User user : users) {
if (user != null) {
user.setLoginPassword(null);
user.setAuthinfo(null);
}
}
return users;
}
@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);
}
@Post
@Path("/cp")
public void changePassword(@JdbcConn(true) Connection con,@LoginUser ConsoleAuthUser cau,String pw)throws SQLException {
this.userDao.changePassword(con, cau.getId(),StringUtil.md5(pw));
}
@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,false);
}
@Get
@Path("/id/{id}")
public User query(@JdbcConn Connection con, @PathVar String id) throws SQLException {
User user = this.userDao.queryById(con, id);
if (user != null) {
user.setLoginPassword(null);
user.setAuthinfo(null);
}
return user;
}
@Get
@Path("/pictable/{id}")
public List<Pictable> queryRec(@JdbcConn Connection con, @PathVar String id) throws SQLException {
return this.pictableDao.queryRec(con, id);
}
@Get
@Path("/userName")
public List<TestService.TypeaheadItem> get(@JdbcConn Connection con) throws SQLException{
//String key = null;
//if(q!=null)
//{
// key= "%"+q+"%";
//}
List<TestService.TypeaheadItem> ret = new ArrayList<>();
//final String finalKey = key;
List<String> typeahead = JdbcUtil.queryList(con, "SELECT NAME FROM CUSER", new ResultSetExtractor<String>() {
@Override
public String extractData(ResultSet resultSet) throws SQLException {
String s1 = resultSet.getString("NAME");
return s1;
}
});
for (String s1 : typeahead) {
TestService.TypeaheadItem thi = new TestService.TypeaheadItem();
thi.setCode(s1);
thi.setCaption(s1);
ret.add(thi);
}
return ret;
}
}
|