分类模块:分类模块是给后台管理员进行操作的,所以我们所有的行为都应该是建立在登录者是管理员的前提下。controller
:
@RequestMapping("add_category.do")
@ResponseBody
public ServerResponse addCategory(HttpSession session,String categoryName,@RequestParam(value = "parentId",defaultValue = "0") int parentId){
//验证用户是否登录
User user = (User)session.getAttribute(Const.CURRENT_USER);
if(user==null){
return ServerResponse.createByErrorCodeMessage(ResponseCode.NEED_LOGIN.getCode(),"用户未登录,请先登录");
}
//校验是否是管理员
if(iUserService.checkAdminRole(user).isSuccess()){
//是管理员,增加我们处理分类的逻辑
return iCategoryService.addCategory(categoryName,parentId);
}else {
return ServerResponse.createByErrorMessage("无权限操作,需要管理员权限");
}
}
1、我们先来看看校验是不是管理员的接口:server
:
//校验是不是管理员
ServerResponse checkAdminRole(User user);
serverImpl
:
//校验是不是管理员
public ServerResponse checkAdminRole(User user){
if(user!=null&&user.getRole().intValue()==Const.Role.ROLE_ADMIN){
return ServerResponse.createBySuccess();
}
return ServerResponse.createByError();
}
我们来看一下第二行代码,我们先判断用户是否为空,然后再获取当前登录用户在数据库中Role
值,我们判断如果Role
为 1
则是管理员,普通用户默认为0
,当我们获得当前登录用户的Role
值与我们在枚举类中设置的值进行对比,如果和枚举中设置管理员对应的值一样,我们则判断当前登录用户为管理员。枚举类的编写在 4、相关工具类的 编写这篇文章中有写Const
2、当判断是管理员之后我们再来进行新增品类操作:server
:
//添加品类
ServerResponse addCategory(String categoryName, Integer parentId);
serverImpl
:
//增加分类
public ServerResponse addCategory(String categoryName,Integer parentId){
if(parentId==null|| StringUtils.isBlank(categoryName)){
return ServerResponse.createByErrorMessage("参数错误,增加品类失败");
}
Category category=new Category();
category.setName(categoryName);
category.setParentId(parentId);
category.setStatus(true);//true代表分类可用
int count= categoryMapper.insert(category);
if(count>0){
return ServerResponse.createBySuccessMessage("新增品类成功");
}
return ServerResponse.createByErrorMessage("服务器错误,新增品类失败");
}
调用的是逆向工程生成的Mapper
和Mapper.xml
Mapper
:
int insert(Category record);
Mapper.xml
:
<insert id="insert" parameterType="com.mmall.pojo.Category" >
insert into mmall_category (id, parent_id, name,
status, sort_order, create_time,
update_time)
values (#{id,jdbcType=INTEGER}, #{parentId,jdbcType=INTEGER}, #{name,jdbcType=VARCHAR},
#{status,jdbcType=BIT}, #{sortOrder,jdbcType=INTEGER}, now(),
now())
</insert>
接口测试:
Ⅰ、普通用户登陆:
Ⅱ、管理员身份登陆:
数据库效果: