Ver código fonte

商品新增模板属性字段

linhui.li 2 semanas atrás
pai
commit
3321813832

+ 5 - 7
py-goods/src/main/java/com/poyee/controller/SpuController.java

@@ -1,19 +1,17 @@
 package com.poyee.controller;
 
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.poyee.base.controller.BaseController;
-
 import com.poyee.base.dto.Result;
 import com.poyee.domain.Spu;
 import com.poyee.dto.SpuDTO;
 import com.poyee.service.SpuService;
 import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiOperation;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.List;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
 
 @Api(tags = "商品管理")
 @RestController
@@ -56,7 +54,7 @@ public class SpuController extends BaseController<SpuService, Spu, SpuDTO> {
         return Result.error();
     }
 
-    
+
 
 
 }

+ 4 - 0
py-goods/src/main/java/com/poyee/dto/SpuDTO.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.databind.JsonNode;
 import com.poyee.base.dto.BaseDto;
 
 import io.swagger.annotations.ApiModel;
@@ -51,4 +52,7 @@ public class SpuDTO extends BaseDto {
     private Date updateTime;
     @TableField("update_by")
     private String updateBy;
+    //商品属性
+    @TableField("properties")
+    private JsonNode properties;
 }

+ 10 - 0
py-goods/src/main/java/com/poyee/mapper/SpuMapper.java

@@ -1,14 +1,24 @@
 package com.poyee.mapper;
 
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.poyee.base.mapper.IBaseMapper;
 
 
+import com.poyee.domain.Spu;
 import com.poyee.dto.SpuDTO;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 @Mapper
 public interface SpuMapper extends IBaseMapper<SpuDTO> {
 
+    Page<SpuDTO> selectList(IPage<SpuDTO> page, @Param("spu") Spu spu);
+
+    int insertSpu(SpuDTO spuDTO);
+
     int editSpu(SpuDTO spuDTO);
 }

+ 63 - 0
py-goods/src/main/java/com/poyee/mapper/handler/JsonNodeTypeHandler.java

@@ -0,0 +1,63 @@
+package com.poyee.mapper.handler;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.apache.ibatis.type.BaseTypeHandler;
+import org.apache.ibatis.type.JdbcType;
+import org.apache.ibatis.type.MappedTypes;
+
+import java.sql.CallableStatement;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+@MappedTypes(JsonNode.class)
+public class JsonNodeTypeHandler extends BaseTypeHandler<JsonNode> {
+
+    private static final ObjectMapper objectMapper = new ObjectMapper();
+
+    @Override
+    public void setNonNullParameter(PreparedStatement ps, int i, JsonNode parameter, JdbcType jdbcType)
+            throws SQLException {
+        ps.setString(i, parameter.toString());
+    }
+
+    @Override
+    public JsonNode getNullableResult(ResultSet rs, String columnName) throws SQLException {
+        String json = rs.getString(columnName);
+        if (json != null) {
+            try {
+                return objectMapper.readTree(json);
+            } catch (Exception e) {
+                throw new SQLException("Error parsing JSON", e);
+            }
+        }
+        return null;
+    }
+
+    @Override
+    public JsonNode getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
+        String json = rs.getString(columnIndex);
+        if (json != null) {
+            try {
+                return objectMapper.readTree(json);
+            } catch (Exception e) {
+                throw new SQLException("Error parsing JSON", e);
+            }
+        }
+        return null;
+    }
+
+    @Override
+    public JsonNode getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
+        String json = cs.getString(columnIndex);
+        if (json != null) {
+            try {
+                return objectMapper.readTree(json);
+            } catch (Exception e) {
+                throw new SQLException("Error parsing JSON", e);
+            }
+        }
+        return null;
+    }
+}

+ 4 - 13
py-goods/src/main/java/com/poyee/service/impl/SpuServiceImpl.java

@@ -1,19 +1,15 @@
 package com.poyee.service.impl;
 
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.poyee.base.service.impl.BaseServiceImpl;
 import com.poyee.domain.Spu;
 import com.poyee.dto.SpuDTO;
 import com.poyee.mapper.SpuMapper;
 import com.poyee.service.SpuService;
-import com.poyee.util.StringUtils;
 import org.springframework.stereotype.Service;
 
 import java.util.Date;
-import java.util.Objects;
 
 @Service
 public class SpuServiceImpl extends BaseServiceImpl<SpuMapper, Spu, SpuDTO> implements SpuService {
@@ -21,27 +17,22 @@ public class SpuServiceImpl extends BaseServiceImpl<SpuMapper, Spu, SpuDTO> impl
     @Override
     public Page<SpuDTO> selectList(Spu spu) {
         Page<SpuDTO> spuDTOIPage=new Page<>(spu.getPageNo(),spu.getPageSize());
-        LambdaQueryWrapper<SpuDTO> spuDTOLambdaQueryWrapper = new LambdaQueryWrapper<>();
-        if (StringUtils.isNotEmpty(spu.getSpuName()))
-            spuDTOLambdaQueryWrapper.like(SpuDTO::getSpuName,spu.getSpuName());
-        if (!Objects.isNull(spu.getStatus())){
-            spuDTOLambdaQueryWrapper.eq(SpuDTO::getStatus,spu.getStatus());
-        }
-        return getBaseMapper().selectPage(spuDTOIPage, spuDTOLambdaQueryWrapper);
+
+        return baseMapper.selectList(spuDTOIPage,spu);
     }
 
     @Override
     public int saveSpu(SpuDTO spu) {
         spu.setCreateTime(new Date());
 // todo       spu.setCreateBy(getLoginName());
-        return getBaseMapper().insert(spu);
+        return baseMapper.insertSpu(spu);
     }
 
     @Override
     public int editSpu(SpuDTO spuDTO) {
         spuDTO.setUpdateTime(new Date());
 //   todo     spuDTO.setUpdateBy(getLoginName());
-        return getBaseMapper().updateById(spuDTO);
+        return getBaseMapper().editSpu(spuDTO);
     }
 
     @Override

+ 35 - 1
py-goods/src/main/resources/mapper/SpuMapper.xml

@@ -3,9 +3,42 @@
         PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.poyee.mapper.SpuMapper">
+
+    <resultMap id="spuMap" type="com.poyee.dto.SpuDTO">
+        <id column="id" property="id"/>
+        <result column="category" property="category"/>
+        <result column="sub_category" property="subCategory"/>
+        <result column="spu_name" property="spuName"/>
+        <result column="num" property="num"/>
+        <result column="main_image" property="mainImage" />
+        <result column="carousel_image" property="carouselImage"/>
+        <result column="status" property="status" />
+        <result column="create_time" property="createTime"/>
+        <result column="create_by" property="createBy"/>
+        <result column="properties" property="properties" jdbcType="OTHER" typeHandler="com.poyee.mapper.handler.JsonNodeTypeHandler"/>
+        <result column="update_time" property="updateTime"/>
+        <result column="update_by" property="updateBy"/>
+    </resultMap>
+    <select id="selectList" parameterType="com.poyee.domain.Spu" resultMap="spuMap">
+        select id,category,sub_category,spu_name,num,main_image,carousel_image,status,create_time,create_by,properties from spu
+        <where>
+            <if test="spu.name!=null and spu.name!=''">
+                name like concat('%'+#{spu.name}+'%')
+            </if>
+            <if test="spu.status!=null">
+                status=#{spu.status}
+            </if>
+        </where>
+    </select>
+    <insert id="insertSpu" parameterType="com.poyee.dto.SpuDTO">
+        insert into spu (category,sub_category,spu_name,num,main_image,carousel_image,status,create_time,create_by,properties)
+        values (#{category},#{subCategory},#{spuName},#{num},#{mainImage},#{carouselImage},#{status},#{createTime},#{createBy},
+        #{properties,jdbcType=OTHER,typeHandler=com.poyee.mapper.handler.JsonNodeTypeHandler}::json)
+    </insert>
+
     <update id="editSpu" parameterType="com.poyee.dto.SpuDTO">
         update spu
-        <trim prefix="set " suffixOverrides=",">
+        <trim prefix="set" suffixOverrides=",">
             <if test="category!=null and category!=''">category=#{category},</if>
             <if test="spuName!=null and spuName!=''">spu_name=#{spuName},</if>
             <if test="num!=null">num=#{num},</if>
@@ -15,6 +48,7 @@
             <if test="updateBy!=null and updateBy!=''">update_by=#{updateBy},</if>
             <if test="createBy!=null and createBy!=''">create_by=#{createBy},</if>
             <if test="updateTime!=null">update_time=#{updateTime},</if>
+            <if test="properties!=null">properties=#{porperties,jdbcType=OTHER,typeHandler=com.poyee.mapper.handler.JsonNodeTypeHandler}::json</if>
         </trim>
     </update>
 </mapper>