第七天的内容

显示商品详情

public interface ProductMapper {
    //查询热销商品
    List<Product> findHotList();
    //显示商品详情
    Product findByID(Integer id);
}
<?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.cy.store.mapper.ProductMapper">
    <sql id="column">
        id
        category_id
        item_type
        title
        sell_point
        price
        num
        image
        status
        priority
        created_time
        modified_time
        created_user
        modified_user
    </sql>
    <resultMap id="ProductEntityMap" type="com.cy.store.entity.Product">
        <!--将表的资源和类的属性不一致的字段进行匹配指定,名称一致的字段可以省略不写-->
        <!--在定义映射规则时主键是不可以省略的-->
        <id column="id" property="id"/>
        <result column="category_id" property="categoryId"/>
        <result column="item_type" property="itemType"/>
        <result column="sell_point" property="sellPoint"/>
        <result column="created_user" property="createdUser"/>
        <result column="created_time" property="createdTime"/>
        <result column="modified_user" property="modifiedUser"/>
        <result column="modified_time" property="modifiedTime"/>
    </resultMap>
    <select id="findHotList" resultMap="ProductEntityMap">
        select * from t_product where status=1 order by priority desc limit 0,4
    </select>
    <select id="findByID" resultMap="ProductEntityMap">
        select * from t_product where id=#{id}
    </select>
</mapper>


写service层

public interface IProductService {
    List<Product> findHotProduct();
    //显示商品详情
    Product findProductById(Integer id);
}
@Service
public class IProductServiceImpl implements IProductService {
    @Autowired
    private ProductMapper productMapper;
    @Override
    public List<Product> findHotProduct() {
        List<Product> hotList = productMapper.findHotList();
        for (Product product:hotList){
            product.setPriority(null);
            product.setCreatedUser(null);
            product.setCreatedTime(null);
            product.setModifiedUser(null);
            product.setModifiedTime(null);
        }
        return hotList;
    }

    @Override
    public Product findProductById(Integer id) {
        Product product = productMapper.findByID(id);
        System.out.println(product);
        if (product == null){
            throw new ProductNotFoundException("商品不存在异常");
        }
        return product;
    }
}

controller层

@RestController
@RequestMapping("products")
public class ProductController extends BaseController{
    @Autowired
    private IProductService productService;
    @RequestMapping("hot_list")
    public JsonResult<List<Product>> getHotList(){
        List<Product> data = productService.findHotProduct();
        return new JsonResult<>(OK,data);
    }
    @RequestMapping("{id}/details")
    public JsonResult<Product> getProductDetails(@PathVariable("id") Integer id){
        Product data = productService.findProductById(id);
        return new JsonResult<>(OK,data);
    }
}

前端页面

<script type="text/javascript">
		let id = $.getUrlParam("id");
		alert(id);
		$(document).ready(function (){
			$.ajax({
				url:"/products/"+id+"/details",
				dataType:"json",
				type:"get",
				success:function (data){
					if (data.state==200){
						$("#product-title").html(data.data.title);
						$("#product-sell-point").html(data.data.sellPoint);
						$("#product-price").html(data.data.price);
						for (let i=1;i<=5;i++){
							$("#product-image-"+i+"-big").attr("src",".."+data.data.image+i+"_big.png");
							$("#product-image-"+i).attr("src",".."+data.data.image+i+".jpg");
						}
					}else if(data.state == 7001){
						location.href="index.html";
					}
				},
				error:function (data){
					alert("展示详情信息产生未知错误"+data.message)
				}
			})
		})
		$("#btn-add-to-cart").click(function (){
			$.ajax({
				url:"/carts/add_cart",
				dataType:"json",
				data:{
					"pid":id,
					"amount":$("#num").val(),
				},
				type:"post",
				success:function (data){
					if (data.state==200){
						alert("加入购物车成功")
					}else{
						alert("加入购物车失败");
					}
				},
				error:function (data){
					alert("加入购物车失败"+data.message)
				}
			})
		})
	</script>

订单页面

public interface OrderMapper {
    Integer insertOrder(Order order);
    Integer insertOrderItem(OrderItem orderItem);
}
<?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.cy.store.mapper.OrderMapper">
    <sql id="column1">
        uid,
        recv_name,
        recv_phone,
        recv_province,
        recv_city,
        recv_area,
        recv_address,
        total_price,
        status,
        order_time,
        pay_time,
        created_user,
        created_time,
        modified_user,
        modified_time
    </sql>
    <sql id="column2">
        oid,
        pid,
        title,
        image,
        price,
        num,
        created_user,
        created_time,
        modified_user,
        modified_time
    </sql>
    <resultMap id="OrderEntityMap" type="com.cy.store.entity.Order">
        <!--将表的资源和类的属性不一致的字段进行匹配指定,名称一致的字段可以省略不写-->
        <!--在定义映射规则时主键是不可以省略的-->
        <id column="oid" property="oid"/>
        <result column="recv_name" property="recvName"/>
        <result column="recv_phone" property="recvPhone"/>
        <result column="recv_province" property="recvProvince"/>
        <result column="recv_city" property="recvCity"/>
        <result column="recv_area" property="recvArea"/>
        <result column="recv_address" property="recvAddress"/>
        <result column="total_price" property="totalPrice"/>
        <result column="pay_time" property="payTime"/>
        <result column="created_user" property="createdUser"/>
        <result column="created_time" property="createdTime"/>
        <result column="modified_user" property="modifiedUser"/>
        <result column="modified_time" property="modifiedTime"/>
    </resultMap>
    <!---id属性:表示映射的接口中方法的名称,直接在标签的内容部来编写SQL语句-->
    <!--
    useGeneratedKeys属性:表示开启某个字段的值递增(主键设置为递增)
    keyProperty属性:标签将表中的哪个字段作为主键进行递增
    -->
    <insert id="insertOrder" useGeneratedKeys="true" keyProperty="aid">
        insert into t_order (<include refid="column1"/>)
        values(
        #{uid},
        #{recv_name},
        #{recv_phone},
        #{recv_province},
        #{recv_city},
        #{recv_area},
        #{recv_address},
        #{total_price},
        #{status},
        #{order_time},
        #{pay_time},
        #{created_user},
        #{created_time},
        #{modified_user},
        #{modified_time}
        )
    </insert>
    <insert id="insertOrderItem" useGeneratedKeys="true" keyProperty="aid">
        insert into t_order_item (<include refid="column2"/>)
        values(
        #{oid},
        #{pid},
        #{title},
        #{image},
        #{price},
        #{num},
        #{created_user},
        #{created_time},
        #{modified_user},
        #{modified_time}
        )
    </insert>
</mapper>


public interface IOrderService {
    Integer insertOrder(Order order);
    Integer insertOrderItem(OrderItem orderItem);
}
public class IOrderServiceImpl implements IOrderService {
    @Autowired
    private OrderMapper orderMapper;
    @Override
    public Integer insertOrder(Order order) {
        return orderMapper.insertOrder(order);
    }

    @Override
    public Integer insertOrderItem(OrderItem orderItem) {
        return orderMapper.insertOrderItem(orderItem);
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值