提交 58d02435 编写于 作者: 偏锋书生's avatar 偏锋书生

密码登陆和用户修改

上级 4ff6e304
......@@ -8,12 +8,16 @@ import org.apache.tapestry5.http.services.Request;
import org.apache.tapestry5.ioc.annotations.Inject;
import org.slf4j.Logger;
import cn.hutool.crypto.digest.BCrypt;
import lombok.extern.slf4j.Slf4j;
import net.wicp.tams.app.duckula.controller.bean.models.SysUser;
import net.wicp.tams.app.duckula.controller.dao.SysUserMapper;
import net.wicp.tams.common.Result;
import net.wicp.tams.common.apiext.CollectionUtil;
import net.wicp.tams.common.apiext.PwdUtil;
import net.wicp.tams.common.apiext.StringUtil;
import net.wicp.tams.common.constant.dic.YesOrNo;
import net.wicp.tams.component.tools.TapestryAssist;
import net.wicp.tams.duckula.ops.beans.SessionBean;
@Import(stack = "easyuistack")
......@@ -44,7 +48,8 @@ public class Login {
return Login.class;
}
SysUser sysUser = selUsers.get(0);
if(!sysUser.getPassword().equals(pwd)) {
boolean checkpw = BCrypt.checkpw(pwd, sysUser.getPassword());
if (!checkpw) {
log.error("用户{}密码有误", userName);
return Login.class;
}
......
......@@ -5,9 +5,10 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletContext;
import org.apache.commons.beanutils.PropertyUtils;
import org.apache.commons.lang.ArrayUtils;
import org.apache.commons.lang3.tuple.Pair;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.tapestry5.SymbolConstants;
import org.apache.tapestry5.annotations.Environmental;
import org.apache.tapestry5.annotations.Property;
......@@ -20,29 +21,18 @@ import org.apache.tapestry5.ioc.annotations.Symbol;
import org.apache.tapestry5.services.javascript.JavaScriptSupport;
import org.apache.tapestry5.util.TextStreamResponse;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import cn.hutool.core.bean.BeanUtil;
import net.wicp.tams.app.duckula.controller.bean.models.SysUser;
import net.wicp.tams.cas.convert.ConvertValueOpt;
import net.wicp.tams.common.Result;
import net.wicp.tams.common.apiext.DateUtil;
import net.wicp.tams.common.apiext.NumberUtil;
import net.wicp.tams.common.apiext.ReflectAssist;
import net.wicp.tams.common.apiext.StringUtil;
import net.wicp.tams.common.apiext.json.EasyUiAssist;
import net.wicp.tams.common.callback.IConvertObj;
import net.wicp.tams.common.callback.IConvertValue;
import net.wicp.tams.common.callback.impl.convertvalue.ConvertValueEnum;
import net.wicp.tams.component.services.ISupportedLocales;
import net.wicp.tams.component.tools.TapestryAssist;
import net.wicp.tams.duckula.ops.WebTools;
@SuppressWarnings("rawtypes")
public abstract class ParentPage {
// private static Logger logger = LoggerFactory.getLogger(ParentPage.class);
@InjectService("locales")
protected ISupportedLocales supportedLocales;
......@@ -63,78 +53,13 @@ public abstract class ParentPage {
@Symbol(SymbolConstants.CONTEXT_PATH)
@Property
protected String contextPath;
@Inject
protected ServletContext servletContext;
@Property
protected String lan = supportedLocales.getCurLocale().getLanguage();// 当前选择语言
protected final IConvertValue optConvert = new ConvertValueOpt(supportedLocales);
/***
* mybatis查询封装
*
* @param <T> mybatis的po
* @param mapper mybatis的mapper
* @param queryWrapper mybatis的查询封装
* @return L:数据,R:数据的总量
*/
public <T> Pair<List<T>, Long> query(BaseMapper<T> mapper, QueryWrapper<T> queryWrapper) {
String needpage = request.getParameter("needpage");
boolean isPage = StringUtil.isNotNull(needpage) && !Boolean.parseBoolean(needpage) ? false : true;
List<T> selectList = null;
long size = 0;
if (isPage) {// 需要分页,默认
Page<T> selectPage = mapper.selectPage(WebTools.buildPage(request), queryWrapper);
selectList = selectPage.getRecords();
size = selectPage.getTotal();
} else {
selectList = mapper.selectList(queryWrapper);
size = selectList.size();
}
return Pair.of(selectList, size);
}
/***
* 保存或修改对象
*
* @param <T>
* @param mapper
* @param tClass
* @return
*/
public <T> TextStreamResponse saveCommon(Class<T> tClass, BaseMapper<T> mapper, IUpdateObj<T> callback) {
final T po = TapestryAssist.getBeanFromPage(tClass, requestGlobals);
if (callback != null) {
callback.doUpdate(po, BeanUtil.getFieldValue(po, "id") == null);
}
if (BeanUtil.getFieldValue(po, "id") == null) {
mapper.insert(po);
} else {
ReflectAssist.invokeMothed(mapper, "updateByPrimaryKeySelective", po);
}
return TapestryAssist.getTextStreamResponse(Result.getSuc());
}
public <T> TextStreamResponse saveCommon(Class<T> tClass, BaseMapper<T> mapper) {
return saveCommon(tClass, mapper, null);
}
protected interface IUpdateObj<V> {
public void doUpdate(V po, boolean isInsert);
}
/***
* 删除对象
*
* @param <T>
* @param mapper
* @return
*/
public <T> TextStreamResponse delCommon(BaseMapper<T> mapper) {
String id = request.getParameter("id");
mapper.deleteById(id);
return TapestryAssist.getTextStreamResponse(Result.getSuc());
}
/****
* 国际化方法 可以把数据库取出来的值进行国际化 eg:${L('order.channel')}
*
......@@ -233,7 +158,7 @@ public abstract class ParentPage {
protected final String getJsonForGridForI18n(List<?> fromList, String[] titles, long recordNum,
String... convertTitles) {
IConvertValue[] convert = null;
if (ArrayUtils.isNotEmpty(convertTitles)) {
if (org.apache.commons.lang3.ArrayUtils.isNotEmpty(convertTitles)) {
// titles=org.apache.commons.lang3.ArrayUtils.addAll(titles,
// convertTitles);
convert = new IConvertValue[titles.length + convertTitles.length];
......
package net.wicp.tams.duckula.ops.pages;
import java.lang.reflect.Field;
import java.lang.reflect.ParameterizedType;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang3.tuple.MutableTriple;
import org.apache.commons.lang3.tuple.Pair;
import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.util.TextStreamResponse;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import cn.hutool.core.bean.BeanUtil;
import lombok.extern.slf4j.Slf4j;
import net.wicp.tams.common.Result;
import net.wicp.tams.common.annotation.TamsBean;
import net.wicp.tams.common.apiext.ReflectAssist;
import net.wicp.tams.common.apiext.StringUtil;
import net.wicp.tams.common.apiext.json.EasyUiAssist;
import net.wicp.tams.common.callback.IConvertValue;
import net.wicp.tams.component.tools.TapestryAssist;
import net.wicp.tams.duckula.ops.WebTools;
@Slf4j
public abstract class ParentPageBean<T> extends ParentPage {
@SuppressWarnings("unchecked")
public Class<T> getTClass() {
Class<T> tClass = (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass())
.getActualTypeArguments()[0];
return tClass;
}
@SuppressWarnings("rawtypes")
protected MutableTriple<String, String[], Map<String, IConvertValue>> queryAssetInfo = EasyUiAssist
.getQueryAssetInfo(getTClass());
protected Pair<List<Field>, List<Field>> querySaveInfo = EasyUiAssist.getQuerySaveInfo(getTClass());
@Property
private String cols = queryAssetInfo.left;
@Property
private TamsBean tamsbean = getTClass().getAnnotation(TamsBean.class);
protected final T t = TapestryAssist.getBeanFromPage(getTClass(), requestGlobals);
public TextStreamResponse onSave() {
final T saveBean = TapestryAssist.getBeanFromPage(getTClass(), requestGlobals);
String id = request.getParameter("id");
boolean isInsert = false;
if (StringUtil.isNull(id)) {
isInsert = true;
} else {
isInsert = false;
}
try {
doSave(saveBean, isInsert);
} catch (Throwable e) {
log.error("save data error", e);
return TapestryAssist.getTextStreamResponse(Result.getError(e.getMessage()));
}
return TapestryAssist.getTextStreamResponse(Result.getSuc());
}
public TextStreamResponse onDel() {
String id = request.getParameter("id");
if (StringUtil.isNull(id)) {
return TapestryAssist.getTextStreamResponse(Result.getSuc("没有拿到id,不能进行删除"));
}
try {
doDel(id);
} catch (Throwable e) {
log.error("delete data error", e);
return TapestryAssist.getTextStreamResponse(Result.getError(e.getMessage()));
}
return TapestryAssist.getTextStreamResponse(Result.getSuc());
}
public String getUrl() {
String retUrl = tamsbean.url();
if (StringUtil.isNull(retUrl)) {
// 页面所在的类名
String name = getClass().getName();
String initParameter = servletContext.getInitParameter("tapestry.app-package");
retUrl = name.replace(initParameter + ".pages", "").replace(".", "/");
}
return retUrl;
}
public abstract void doSave(T t, boolean isInsert);
public abstract void doDel(String id);
////////////////////////////////////////////////////////////// mytatis特有的/////////////////////////////////////////////////////////////////////////////////
public abstract BaseMapper<T> getBaseMapper();
public abstract void packageQuery(T t, QueryWrapper<T> queryWrapper);
@SuppressWarnings("rawtypes")
protected Pair<String[], Map<String, IConvertValue>> packageConvert() {
return Pair.of(this.queryAssetInfo.middle, this.queryAssetInfo.right);
};
@SuppressWarnings("rawtypes")
public TextStreamResponse onQuery() {
final T t = TapestryAssist.getBeanFromPage(getTClass(), requestGlobals);
QueryWrapper<T> queryWrapper = new QueryWrapper<T>();
this.packageQuery(t, queryWrapper);// 组装查询
BaseMapper<T> mapper = getBaseMapper();
Pair<List<T>, Long> query = this.query(mapper, queryWrapper);
// Pair<List<SysUser>, Long> query = doQuery(t, queryWrapper);
Pair<String[], Map<String, IConvertValue>> packageConvert = packageConvert();
String retstr = EasyUiAssist.getJsonForGridAlias2(query.getLeft(), packageConvert.getLeft(),
packageConvert.getRight(), query.getRight());
return TapestryAssist.getTextStreamResponse(retstr);
}
/***
* mybatis查询封装
*
* @param <T> mybatis的po
* @param mapper mybatis的mapper
* @param queryWrapper mybatis的查询封装
* @return L:数据,R:数据的总量
*/
public <T> Pair<List<T>, Long> query(BaseMapper<T> mapper, QueryWrapper<T> queryWrapper) {
String needpage = request.getParameter("needpage");
boolean isPage = StringUtil.isNotNull(needpage) && !Boolean.parseBoolean(needpage) ? false : true;
List<T> selectList = null;
long size = 0;
if (isPage) {// 需要分页,默认
Page<T> selectPage = mapper.selectPage(WebTools.buildPage(request), queryWrapper);
selectList = selectPage.getRecords();
size = selectPage.getTotal();
} else {
selectList = mapper.selectList(queryWrapper);
size = selectList.size();
}
return Pair.of(selectList, size);
}
/***
* 保存或修改对象
*
* @param <T>
* @param mapper
* @param tClass
* @return
*/
public TextStreamResponse saveCommon(BaseMapper<T> mapper, IUpdateObj<T> callback) {
final T po = TapestryAssist.getBeanFromPage(getTClass(), requestGlobals);
if (callback != null) {
callback.doUpdate(po, BeanUtil.getFieldValue(po, "id") == null);
}
if (BeanUtil.getFieldValue(po, "id") == null) {
mapper.insert(po);
} else {
ReflectAssist.invokeMothed(mapper, "updateByPrimaryKeySelective", po);
}
return TapestryAssist.getTextStreamResponse(Result.getSuc());
}
public TextStreamResponse saveCommon(BaseMapper<T> mapper) {
return saveCommon(mapper, null);
}
protected interface IUpdateObj<V> {
public void doUpdate(V po, boolean isInsert);
}
}
package net.wicp.tams.duckula.ops.pages.cas;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang3.tuple.Pair;
import org.apache.tapestry5.ioc.annotations.Inject;
import org.apache.tapestry5.util.TextStreamResponse;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import cn.hutool.crypto.digest.BCrypt;
import net.wicp.tams.app.duckula.controller.bean.models.SysUser;
......@@ -17,51 +19,32 @@ import net.wicp.tams.common.apiext.CollectionUtil;
import net.wicp.tams.common.apiext.PwdUtil;
import net.wicp.tams.common.apiext.StringUtil;
import net.wicp.tams.common.apiext.json.EasyUiAssist;
import net.wicp.tams.common.callback.IConvertValue;
import net.wicp.tams.common.callback.impl.convertvalue.ConvertValueEnum;
import net.wicp.tams.common.constant.dic.Gender;
import net.wicp.tams.common.constant.dic.YesOrNo;
import net.wicp.tams.common.jdbc.convert.ConvertValueMysql;
import net.wicp.tams.component.tools.TapestryAssist;
import net.wicp.tams.duckula.ops.pages.ParentPage;
import net.wicp.tams.duckula.ops.pages.ParentPageBean;
public class UserManager extends ParentPage {
public class UserManager extends ParentPageBean<SysUser> {
@Inject
private SysUserMapper sysUserExample;
public TextStreamResponse onQuery() {
// ajax.req(key, params);
final SysUser sysUser = TapestryAssist.getBeanFromPage(SysUser.class, requestGlobals);
QueryWrapper<SysUser> queryWrapper = new QueryWrapper<SysUser>();
if (StringUtil.isNotNull(sysUser.getUserName())) {
queryWrapper.likeRight("user_name", sysUser.getUserName());
private SysUserMapper sysUserMapper;
@Override
public void packageQuery(SysUser t, QueryWrapper<SysUser> queryWrapper) {
if (StringUtil.isNotNull(t.getUserName())) {
queryWrapper.likeRight("user_name", t.getUserName());
}
ConvertValueMysql orgCv = new ConvertValueMysql(ColsSysOrg.db, ColsSysOrg.tb, "org_name");
Pair<List<SysUser>, Long> query = query(sysUserExample, queryWrapper);
String retstr = EasyUiAssist.getJsonForGridAlias2(query.getLeft(),
new String[] { "orgId,orgId1", "status,status1", "gender,gender1" },
CollectionUtil.newMap("orgId1", orgCv, "status1", new ConvertValueEnum(YesOrNo.class), "gender1",
new ConvertValueEnum(Gender.class)),
query.getRight());
return TapestryAssist.getTextStreamResponse(retstr);
}
public TextStreamResponse onSave() {
return saveCommon(SysUser.class, sysUserExample, new IUpdateObj<SysUser>() {
@Override
public void doUpdate(SysUser po, boolean isInsert) {
if (isInsert) {
po.setPassword(PwdUtil.hashpw("123456"));// 初始化密码
} else {
po.setPassword(null);// 不能修改密码
}
}
});
}
public TextStreamResponse onDel() {
return delCommon(sysUserExample);
@Override
protected Pair<String[], Map<String, IConvertValue>> packageConvert() {
ConvertValueMysql orgCv = new ConvertValueMysql(ColsSysOrg.db, ColsSysOrg.tb, "org_name");
return Pair.of(new String[] { "orgId,orgId1", "status,status1", "gender,gender1" },
CollectionUtil.newMap("orgId1", orgCv, "status1", new ConvertValueEnum(YesOrNo.class), "gender1",
new ConvertValueEnum(Gender.class)));
}
public TextStreamResponse onSavePwd() {
......@@ -77,7 +60,7 @@ public class UserManager extends ParentPage {
if (pwdOld.equals(pwdNew)) {
return TapestryAssist.getTextStreamResponse(Result.getError("旧密码与新密码不能相同"));
}
SysUser sysUser = sysUserExample.selectById(id);
SysUser sysUser = this.sysUserMapper.selectById(id);
// 要不要检查旧密码
boolean checkpw = BCrypt.checkpw(pwdOld, sysUser.getPassword());
if (!checkpw) {
......@@ -87,7 +70,7 @@ public class UserManager extends ParentPage {
SysUser user = new SysUser();
user.setId(id);
user.setPassword(PwdUtil.hashpw(pwdNew));
sysUserExample.updateByPrimaryKeySelective(user);
this.sysUserMapper.updateByPrimaryKeySelective(user);
return TapestryAssist.getTextStreamResponse(Result.getSuc());
}
......@@ -96,8 +79,31 @@ public class UserManager extends ParentPage {
SysUser user = new SysUser();
user.setId(id);
user.setPassword(PwdUtil.hashpw("123456"));
sysUserExample.updateByPrimaryKeySelective(user);
this.sysUserMapper.updateByPrimaryKeySelective(user);
return TapestryAssist.getTextStreamResponse(Result.getSuc());
}
@Override
public void doSave(SysUser t, boolean isInsert) {
if (isInsert) {
t.setPassword(PwdUtil.hashpw("123456"));// 初始化密码
this.sysUserMapper.insert(t);
} else {
t.setPassword(null);// 不能修改密码
this.sysUserMapper.updateByPrimaryKeySelective(t);
}
}
@Override
public void doDel(String id) {
this.sysUserMapper.deleteById(id);
}
@Override
public BaseMapper<SysUser> getBaseMapper() {
return this.sysUserMapper;
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册