zoukankan      html  css  js  c++  java
  • 分类管理模块

    CategoryManageController:

    package com.mmall.controller.backend;
    
    import com.mmall.common.Const;
    import com.mmall.common.ResponseCode;
    import com.mmall.common.ServerResponse;
    import com.mmall.pojo.User;
    import com.mmall.service.ICategoryService;
    import com.mmall.service.IUserService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    import javax.servlet.http.HttpSession;
    
    /**
     * Created by geely
     */
    @Controller
    @RequestMapping("/manage/category")
    public class CategoryManageController {
    
    
        @Autowired
        private IUserService iUserService;
    
        @Autowired
        private ICategoryService iCategoryService;
    
        @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("无权限操作,需要管理员权限");
            }
        }
    
        @RequestMapping("set_category_name.do")
        @ResponseBody
        public ServerResponse setCategoryName(HttpSession session,Integer categoryId,String categoryName){
            User user = (User)session.getAttribute(Const.CURRENT_USER);
            if(user == null){
                return ServerResponse.createByErrorCodeMessage(ResponseCode.NEED_LOGIN.getCode(),"用户未登录,请登录");
            }
            if(iUserService.checkAdminRole(user).isSuccess()){
                //更新categoryName
                return iCategoryService.updateCategoryName(categoryId,categoryName);
            }else{
                return ServerResponse.createByErrorMessage("无权限操作,需要管理员权限");
            }
        }
    
        @RequestMapping("get_category.do")
        @ResponseBody
        public ServerResponse getChildrenParallelCategory(HttpSession session,@RequestParam(value = "categoryId" ,defaultValue = "0") Integer categoryId){
            User user = (User)session.getAttribute(Const.CURRENT_USER);
            if(user == null){
                return ServerResponse.createByErrorCodeMessage(ResponseCode.NEED_LOGIN.getCode(),"用户未登录,请登录");
            }
            if(iUserService.checkAdminRole(user).isSuccess()){
                //查询子节点的category信息,并且不递归,保持平级
                return iCategoryService.getChildrenParallelCategory(categoryId);
            }else{
                return ServerResponse.createByErrorMessage("无权限操作,需要管理员权限");
            }
        }
    
        @RequestMapping("get_deep_category.do")
        @ResponseBody
        public ServerResponse getCategoryAndDeepChildrenCategory(HttpSession session,@RequestParam(value = "categoryId" ,defaultValue = "0") Integer categoryId){
            User user = (User)session.getAttribute(Const.CURRENT_USER);
            if(user == null){
                return ServerResponse.createByErrorCodeMessage(ResponseCode.NEED_LOGIN.getCode(),"用户未登录,请登录");
            }
            if(iUserService.checkAdminRole(user).isSuccess()){
                //查询当前节点的id和递归子节点的id
    //            0->10000->100000
                return iCategoryService.selectCategoryAndChildrenById(categoryId);
    
            }else{
                return ServerResponse.createByErrorMessage("无权限操作,需要管理员权限");
            }
        }
    }

    CategoryServiceImpl:

    package com.mmall.service.impl;
    
    import com.google.common.collect.Lists;
    import com.google.common.collect.Sets;
    import com.mmall.common.ServerResponse;
    import com.mmall.dao.CategoryMapper;
    import com.mmall.pojo.Category;
    import com.mmall.service.ICategoryService;
    import org.apache.commons.collections.CollectionUtils;
    import org.apache.commons.lang3.StringUtils;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    import java.util.List;
    import java.util.Set;
    
    /**
     * Created by geely
     */
    @Service("iCategoryService")
    public class CategoryServiceImpl implements ICategoryService {
    
        private Logger logger = LoggerFactory.getLogger(CategoryServiceImpl.class);
    
        @Autowired
        private CategoryMapper categoryMapper;
    
        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);//这个分类是可用的
    
            int rowCount = categoryMapper.insert(category);
            if(rowCount > 0){
                return ServerResponse.createBySuccess("添加品类成功");
            }
            return ServerResponse.createByErrorMessage("添加品类失败");
        }
    
        public ServerResponse updateCategoryName(Integer categoryId,String categoryName){
            if(categoryId == null || StringUtils.isBlank(categoryName)){
                return ServerResponse.createByErrorMessage("更新品类参数错误");
            }
            Category category = new Category();
            category.setId(categoryId);
            category.setName(categoryName);
    
            int rowCount = categoryMapper.updateByPrimaryKeySelective(category);
            if(rowCount > 0){
                return ServerResponse.createBySuccess("更新品类名字成功");
            }
            return ServerResponse.createByErrorMessage("更新品类名字失败");
        }
    
        public ServerResponse<List<Category>> getChildrenParallelCategory(Integer categoryId){
            List<Category> categoryList = categoryMapper.selectCategoryChildrenByParentId(categoryId);
            if(CollectionUtils.isEmpty(categoryList)){
                logger.info("未找到当前分类的子分类");
            }
            return ServerResponse.createBySuccess(categoryList);
        }
    
    
        /**
         * 递归查询本节点的id及孩子节点的id
         * @param categoryId
         * @return
         */
        public ServerResponse<List<Integer>> selectCategoryAndChildrenById(Integer categoryId){
            Set<Category> categorySet = Sets.newHashSet();
            findChildCategory(categorySet,categoryId);
    
    
            List<Integer> categoryIdList = Lists.newArrayList();
            if(categoryId != null){
                for(Category categoryItem : categorySet){
                    categoryIdList.add(categoryItem.getId());
                }
            }
            return ServerResponse.createBySuccess(categoryIdList);
        }
    
    
        //递归算法,算出子节点
        private Set<Category> findChildCategory(Set<Category> categorySet ,Integer categoryId){
            Category category = categoryMapper.selectByPrimaryKey(categoryId);
            if(category != null){
                categorySet.add(category);
            }
            //查找子节点,递归算法一定要有一个退出的条件
            List<Category> categoryList = categoryMapper.selectCategoryChildrenByParentId(categoryId);
            for(Category categoryItem : categoryList){
                findChildCategory(categorySet,categoryItem.getId());
            }
            return categorySet;
        }
    }
    ICategoryService:
    package com.mmall.service;
    
    import com.mmall.common.ServerResponse;
    import com.mmall.pojo.Category;
    
    import java.util.List;
    
    /**
     * Created by geely
     */
    public interface ICategoryService {
        ServerResponse addCategory(String categoryName, Integer parentId);
        ServerResponse updateCategoryName(Integer categoryId, String categoryName);
        ServerResponse<List<Category>> getChildrenParallelCategory(Integer categoryId);
        ServerResponse<List<Integer>> selectCategoryAndChildrenById(Integer categoryId);
    
    }

    Category(这里考虑到set去重,如果set的元素是非基本类型和String,需要以id重写equals和hashcode)

    package com.mmall.pojo;
    
    import java.util.Date;
    
    public class Category {
        private Integer id;
    
        private Integer parentId;
    
        private String name;
    
        private Boolean status;
    
        private Integer sortOrder;
    
        private Date createTime;
    
        private Date updateTime;
    
        public Category(Integer id, Integer parentId, String name, Boolean status, Integer sortOrder, Date createTime, Date updateTime) {
            this.id = id;
            this.parentId = parentId;
            this.name = name;
            this.status = status;
            this.sortOrder = sortOrder;
            this.createTime = createTime;
            this.updateTime = updateTime;
        }
    
        public Category() {
            super();
        }
    
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        public Integer getParentId() {
            return parentId;
        }
    
        public void setParentId(Integer parentId) {
            this.parentId = parentId;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name == null ? null : name.trim();
        }
    
        public Boolean getStatus() {
            return status;
        }
    
        public void setStatus(Boolean status) {
            this.status = status;
        }
    
        public Integer getSortOrder() {
            return sortOrder;
        }
    
        public void setSortOrder(Integer sortOrder) {
            this.sortOrder = sortOrder;
        }
    
        public Date getCreateTime() {
            return createTime;
        }
    
        public void setCreateTime(Date createTime) {
            this.createTime = createTime;
        }
    
        public Date getUpdateTime() {
            return updateTime;
        }
    
        public void setUpdateTime(Date updateTime) {
            this.updateTime = updateTime;
        }
    
    
        @Override
        public boolean equals(Object o) {
            if (this == o) return true;
            if (o == null || getClass() != o.getClass()) return false;
    
            Category category = (Category) o;
    
            return !(id != null ? !id.equals(category.id) : category.id != null);
    
        }
    
        @Override
        public int hashCode() {
            return id != null ? id.hashCode() : 0;
        }
    }

    CategoryMapper.xml:

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
    <mapper namespace="com.mmall.dao.CategoryMapper" >
      <resultMap id="BaseResultMap" type="com.mmall.pojo.Category" >
        <constructor >
          <idArg column="id" jdbcType="INTEGER" javaType="java.lang.Integer" />
          <arg column="parent_id" jdbcType="INTEGER" javaType="java.lang.Integer" />
          <arg column="name" jdbcType="VARCHAR" javaType="java.lang.String" />
          <arg column="status" jdbcType="BIT" javaType="java.lang.Boolean" />
          <arg column="sort_order" jdbcType="INTEGER" javaType="java.lang.Integer" />
          <arg column="create_time" jdbcType="TIMESTAMP" javaType="java.util.Date" />
          <arg column="update_time" jdbcType="TIMESTAMP" javaType="java.util.Date" />
        </constructor>
      </resultMap>
      <sql id="Base_Column_List" >
        id, parent_id, name, status, sort_order, create_time, update_time
      </sql>
      <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
        select 
        <include refid="Base_Column_List" />
        from mmall_category
        where id = #{id,jdbcType=INTEGER}
      </select>
      <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
        delete from mmall_category
        where id = #{id,jdbcType=INTEGER}
      </delete>
      <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>
      <insert id="insertSelective" parameterType="com.mmall.pojo.Category" >
        insert into mmall_category
        <trim prefix="(" suffix=")" suffixOverrides="," >
          <if test="id != null" >
            id,
          </if>
          <if test="parentId != null" >
            parent_id,
          </if>
          <if test="name != null" >
            name,
          </if>
          <if test="status != null" >
            status,
          </if>
          <if test="sortOrder != null" >
            sort_order,
          </if>
          <if test="createTime != null" >
            create_time,
          </if>
          <if test="updateTime != null" >
            update_time,
          </if>
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides="," >
          <if test="id != null" >
            #{id,jdbcType=INTEGER},
          </if>
          <if test="parentId != null" >
            #{parentId,jdbcType=INTEGER},
          </if>
          <if test="name != null" >
            #{name,jdbcType=VARCHAR},
          </if>
          <if test="status != null" >
            #{status,jdbcType=BIT},
          </if>
          <if test="sortOrder != null" >
            #{sortOrder,jdbcType=INTEGER},
          </if>
          <if test="createTime != null" >
            now(),
          </if>
          <if test="updateTime != null" >
            now(),
          </if>
        </trim>
      </insert>
      <update id="updateByPrimaryKeySelective" parameterType="com.mmall.pojo.Category" >
        update mmall_category
        <set >
          <if test="parentId != null" >
            parent_id = #{parentId,jdbcType=INTEGER},
          </if>
          <if test="name != null" >
            name = #{name,jdbcType=VARCHAR},
          </if>
          <if test="status != null" >
            status = #{status,jdbcType=BIT},
          </if>
          <if test="sortOrder != null" >
            sort_order = #{sortOrder,jdbcType=INTEGER},
          </if>
          <if test="createTime != null" >
            create_time = #{createTime,jdbcType=TIMESTAMP},
          </if>
          <if test="updateTime != null" >
            update_time = now(),
          </if>
        </set>
        where id = #{id,jdbcType=INTEGER}
      </update>
      <update id="updateByPrimaryKey" parameterType="com.mmall.pojo.Category" >
        update mmall_category
        set parent_id = #{parentId,jdbcType=INTEGER},
          name = #{name,jdbcType=VARCHAR},
          status = #{status,jdbcType=BIT},
          sort_order = #{sortOrder,jdbcType=INTEGER},
          create_time = #{createTime,jdbcType=TIMESTAMP},
          update_time = now()
        where id = #{id,jdbcType=INTEGER}
      </update>
    
      <select id="selectCategoryChildrenByParentId" resultMap="BaseResultMap" parameterType="int">
        select
        <include refid="Base_Column_List"/>
        from mmall_category
        where parent_id = #{parentId}
      </select>
    
    </mapper>
    CategoryMapper:
    package com.mmall.dao;
    
    import com.mmall.pojo.Category;
    
    import java.util.List;
    
    public interface CategoryMapper {
        int deleteByPrimaryKey(Integer id);
    
        int insert(Category record);
    
        int insertSelective(Category record);
    
        Category selectByPrimaryKey(Integer id);
    
        int updateByPrimaryKeySelective(Category record);
    
        int updateByPrimaryKey(Category record);
    
        List<Category> selectCategoryChildrenByParentId(Integer parentId);
    }
  • 相关阅读:
    366. Find Leaves of Binary Tree输出层数相同的叶子节点
    716. Max Stack实现一个最大stack
    515. Find Largest Value in Each Tree Row查找一行中的最大值
    364. Nested List Weight Sum II 大小反向的括号加权求和
    156. Binary Tree Upside Down反转二叉树
    698. Partition to K Equal Sum Subsets 数组分成和相同的k组
    244. Shortest Word Distance II 实现数组中的最短距离单词
    187. Repeated DNA Sequences重复的DNA子串序列
    java之hibernate之基于主键的双向一对一关联映射
    java之hibernate之基于主键的单向一对一关联映射
  • 原文地址:https://www.cnblogs.com/XJJD/p/8496172.html
Copyright © 2011-2022 走看看