Jelajahi Sumber

商品模块

hmp 4 tahun lalu
induk
melakukan
6e0c2c9749
18 mengubah file dengan 272 tambahan dan 26 penghapusan
  1. 62 0
      src/main/java/org/springblade/gateway/goods_gatway/controller/AppGoodsBillsController.java
  2. 3 6
      src/main/java/org/springblade/gateway/goods_gatway/controller/AppGoodsController.java
  3. 35 0
      src/main/java/org/springblade/gateway/goods_gatway/dto/AppGoodsBillsDTO.java
  4. 39 0
      src/main/java/org/springblade/gateway/goods_gatway/service/IAppGoodsBillsService.java
  5. 3 2
      src/main/java/org/springblade/gateway/goods_gatway/service/IAppGoodsService.java
  6. 87 0
      src/main/java/org/springblade/gateway/goods_gatway/service/impl/AppGoodsBillsServiceImpl.java
  7. 13 9
      src/main/java/org/springblade/gateway/goods_gatway/service/impl/AppGoodsServiceImpl.java
  8. 1 1
      src/main/java/org/springblade/ldt/bills/controller/GoodsBillsController.java
  9. 1 2
      src/main/java/org/springblade/ldt/bills/dto/GoodsBillsDTO.java
  10. 13 1
      src/main/java/org/springblade/ldt/bills/entity/GoodsBills.java
  11. 1 1
      src/main/java/org/springblade/ldt/bills/mapper/GoodsBillsMapper.java
  12. 2 0
      src/main/java/org/springblade/ldt/bills/mapper/GoodsBillsMapper.xml
  13. 1 1
      src/main/java/org/springblade/ldt/bills/service/IGoodsBillsService.java
  14. 1 1
      src/main/java/org/springblade/ldt/bills/service/impl/GoodsBillsServiceImpl.java
  15. 1 1
      src/main/java/org/springblade/ldt/bills/vo/GoodsBillsVO.java
  16. 1 1
      src/main/java/org/springblade/ldt/bills/wrapper/GoodsBillsWrapper.java
  17. 7 0
      src/main/java/org/springblade/ldt/goods/entity/GoodsProperty.java
  18. 1 0
      src/main/java/org/springblade/ldt/goods/mapper/GoodsPropertyMapper.xml

+ 62 - 0
src/main/java/org/springblade/gateway/goods_gatway/controller/AppGoodsBillsController.java

@@ -0,0 +1,62 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.gateway.goods_gatway.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.gateway.goods_gatway.dto.AppGoodsBillsDTO;
+import org.springblade.gateway.goods_gatway.service.IAppGoodsBillsService;
+import org.springblade.ldt.bills.entity.GoodsBills;
+import org.springblade.ldt.bills.service.IGoodsBillsService;
+import org.springblade.ldt.bills.vo.GoodsBillsVO;
+import org.springblade.ldt.bills.wrapper.GoodsBillsWrapper;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+
+/**
+ * 订单 控制器
+ *
+ * @author huangmp
+ * @since 2021-09-26
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("ldt_bills/goodsbills")
+@Api(value = "订单", tags = "订单接口")
+public class AppGoodsBillsController extends BladeController {
+
+	private final IAppGoodsBillsService appGoodsBillsService;
+
+	@GetMapping("/order")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "下单", notes = "传入goods")
+	public R order(AppGoodsBillsDTO appGoodsBillsDTO) {
+		appGoodsBillsService.order(appGoodsBillsDTO);
+		return R.data(null);
+	}
+
+}

+ 3 - 6
src/main/java/org/springblade/gateway/goods_gatway/controller/AppGoodsController.java

@@ -22,8 +22,10 @@ import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 import org.springblade.core.boot.ctrl.BladeController;
 import org.springblade.core.tool.api.R;
+import org.springblade.gateway.goods_gatway.dto.AppGoodsBillsDTO;
 import org.springblade.gateway.goods_gatway.service.IAppGoodsService;
 import org.springblade.gateway.goods_gatway.vo.GoodsMenuVO;
+import org.springblade.ldt.bills.dto.GoodsBillsDTO;
 import org.springblade.ldt.goods.service.IGoodsService;
 import org.springframework.web.bind.annotation.*;
 
@@ -32,7 +34,7 @@ import java.util.List;
 /**
  *  控制器
  *
- * @author BladeX
+ * @author huangmp
  * @since 2021-09-17
  */
 @RestController
@@ -52,9 +54,4 @@ public class AppGoodsController extends BladeController {
 		return R.data(menuList);
 	}
 
-
-
-
-
-
 }

+ 35 - 0
src/main/java/org/springblade/gateway/goods_gatway/dto/AppGoodsBillsDTO.java

@@ -0,0 +1,35 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.gateway.goods_gatway.dto;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.ldt.bills.entity.GoodsBills;
+
+/**
+ * 订单数据传输对象实体类
+ *
+ * @author huangmp
+ * @since 2021-09-26
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class AppGoodsBillsDTO extends GoodsBills {
+	private static final long serialVersionUID = 1L;
+
+	private String appId;
+}

+ 39 - 0
src/main/java/org/springblade/gateway/goods_gatway/service/IAppGoodsBillsService.java

@@ -0,0 +1,39 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.gateway.goods_gatway.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.core.mp.base.BaseService;
+import org.springblade.gateway.goods_gatway.dto.AppGoodsBillsDTO;
+import org.springblade.ldt.bills.entity.GoodsBills;
+import org.springblade.ldt.bills.vo.GoodsBillsVO;
+
+/**
+ * 订单 服务类
+ *
+ * @author huangmp
+ * @since 2021-09-26
+ */
+public interface IAppGoodsBillsService extends BaseService<GoodsBills> {
+
+
+	/**
+	 * 下单
+	 * @param appGoodsBillsDTO
+	 */
+	void order(AppGoodsBillsDTO appGoodsBillsDTO);
+}

+ 3 - 2
src/main/java/org/springblade/gateway/goods_gatway/service/IAppGoodsService.java

@@ -17,7 +17,9 @@
 package org.springblade.gateway.goods_gatway.service;
 
 import org.springblade.core.mp.base.BaseService;
+import org.springblade.gateway.goods_gatway.dto.AppGoodsBillsDTO;
 import org.springblade.gateway.goods_gatway.vo.GoodsMenuVO;
+import org.springblade.ldt.bills.dto.GoodsBillsDTO;
 import org.springblade.ldt.goods.entity.Goods;
 
 import java.util.List;
@@ -25,7 +27,7 @@ import java.util.List;
 /**
  *  服务类
  *
- * @author BladeX
+ * @author huangmp
  * @since 2021-09-17
  */
 public interface IAppGoodsService extends BaseService<Goods> {
@@ -36,5 +38,4 @@ public interface IAppGoodsService extends BaseService<Goods> {
 	 * @param shopId
 	 */
 	List<GoodsMenuVO> getGoodsMenuList(Long shopId);
-
 }

+ 87 - 0
src/main/java/org/springblade/gateway/goods_gatway/service/impl/AppGoodsBillsServiceImpl.java

@@ -0,0 +1,87 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.gateway.goods_gatway.service.impl;
+
+import cn.hutool.core.lang.UUID;
+import cn.hutool.core.util.RandomUtil;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.common.enums.AppConstant;
+import org.springblade.common.enums.OrderType;
+import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.core.tool.utils.StringUtil;
+import org.springblade.gateway.goods_gatway.dto.AppGoodsBillsDTO;
+import org.springblade.gateway.goods_gatway.service.IAppGoodsBillsService;
+import org.springblade.ldt.bills.entity.Bills;
+import org.springblade.ldt.bills.entity.GoodsBills;
+import org.springblade.ldt.bills.mapper.GoodsBillsMapper;
+import org.springblade.ldt.bills.service.IBillsService;
+import org.springblade.ldt.bills.service.IGoodsBillsService;
+import org.springblade.ldt.bills.vo.GoodsBillsVO;
+import org.springblade.ldt.shop.entity.Shop;
+import org.springblade.ldt.shop.service.IShopService;
+import org.springblade.ldt.user.service.ILoginUserService;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.Assert;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+
+/**
+ * 订单 服务实现类
+ *
+ * @author huangmp
+ * @since 2021-09-26
+ */
+@Service
+public class AppGoodsBillsServiceImpl extends BaseServiceImpl<GoodsBillsMapper, GoodsBills> implements IAppGoodsBillsService {
+
+	@Resource
+	private IShopService shopService;
+	@Resource
+	private ILoginUserService loginUserService;
+	@Resource
+	private IBillsService billsService;
+
+	@Override
+	@Transactional
+	public void order(AppGoodsBillsDTO appGoodsBillsDTO) {
+		Shop shop = shopService.getById(appGoodsBillsDTO.getReceiveId());
+		Assert.notNull(shop,"找不到下单商户");
+		//插入订单
+		Bills bills = new Bills();
+		bills.setPayId(appGoodsBillsDTO.getPayId());
+		bills.setReceiveId(appGoodsBillsDTO.getReceiveId());
+		bills.setMallId(shop.getMallId());
+		//商品价格单位为分,bills账单单位为元
+		bills.setCost(BigDecimal.valueOf(appGoodsBillsDTO.getTotalPrice()/100));
+		bills.setType(OrderType.USER_PAY.name());
+		bills.setPayStatus(AppConstant.BillPayStatus.待付款.name());
+		bills.setTitle("用户订餐");
+		bills.setExTime(appGoodsBillsDTO.getExpireTime());
+		bills.setAppid(appGoodsBillsDTO.getAppId());
+		bills.setOpenid(loginUserService.getById(appGoodsBillsDTO.getPayId()).getOpenid());
+		billsService.save(bills);
+		//插入商品订单
+		appGoodsBillsDTO.setBillsId(bills.getId());
+		//取手机号作为取餐号
+		String verifyNum = StringUtil.sub(appGoodsBillsDTO.getUserPhone(), 7, 11);
+		appGoodsBillsDTO.setVerifyNum(Integer.valueOf(verifyNum));
+		appGoodsBillsDTO.setOrderStatus(AppConstant.BillPayStatus.待付款.name());
+		this.save(appGoodsBillsDTO);
+	}
+}

+ 13 - 9
src/main/java/org/springblade/gateway/goods_gatway/service/impl/AppGoodsServiceImpl.java

@@ -17,8 +17,8 @@
 package org.springblade.gateway.goods_gatway.service.impl;
 
 
+
 import cn.hutool.core.collection.CollUtil;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import org.springblade.common.enums.GoodsPropertyCategory;
 import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springblade.core.mp.support.Condition;
@@ -39,10 +39,11 @@ import org.springframework.stereotype.Service;
 import javax.annotation.Resource;
 import java.util.*;
 
+
 /**
  *  服务实现类
  *
- * @author BladeX
+ * @author huangmp
  * @since 2021-09-17
  */
 @Service
@@ -54,16 +55,19 @@ public class AppGoodsServiceImpl extends BaseServiceImpl<GoodsMapper, Goods> imp
 	private IGoodsPropertyService goodsPropertyService;
 	@Resource
 	private RedisTemplate redisTemplate;
-	private final String GOODS_MENU_KEY="goods_menu:";
+
+	private final String GOODS_MENU_KEY_PREFIX="goods_menu:";
 
 	@Override
 	public List<GoodsMenuVO> getGoodsMenuList(Long shopId) {
-		// TODO: 2021/9/17  从缓存中获取菜单
+		final String GOODS_MENU_KEY = GOODS_MENU_KEY_PREFIX + shopId;
 		List<GoodsMenuVO> goodsMenuVOListInRedis = (List)redisTemplate.opsForValue().get(GOODS_MENU_KEY);
 		if (CollUtil.isNotEmpty(goodsMenuVOListInRedis)) {
 			return goodsMenuVOListInRedis;
 		}
-		List<GoodsCategory> goodsCategoryList = goodsCategoryService.list(Condition.getQueryWrapper(new GoodsCategory()).lambda().eq(GoodsCategory::getShowStatus,true));
+		List<GoodsCategory> goodsCategoryList = goodsCategoryService.list(Condition.getQueryWrapper(new GoodsCategory()).lambda()
+			.eq(GoodsCategory::getShowStatus,true)
+			.eq(GoodsCategory::getShopId,shopId));
 		// 使用2个map去关联关系
 		HashMap<String, List<Goods>> sameCategoryGoodsMap = new HashMap<>(goodsCategoryList.size());
 		HashMap<String, GoodsMenuVO> goodsMenuVOMap = new HashMap<>(goodsCategoryList.size());
@@ -76,7 +80,7 @@ public class AppGoodsServiceImpl extends BaseServiceImpl<GoodsMapper, Goods> imp
 			goodsMenuVO.setGoodsCategoryShow(goodsCategory.getShowStatus());
 			goodsMenuVOMap.put(goodsCategory.getName(), goodsMenuVO);
 		}
-		List<Goods> allGoods = this.list(null);
+		List<Goods> allGoods = this.list(Condition.getQueryWrapper(new Goods()).lambda().eq(Goods::getShopId,shopId));
 		// 将所有商品分类
 		for (Goods good : allGoods){
 			if (sameCategoryGoodsMap.containsKey(good.getGoodsCategoryName())){
@@ -90,8 +94,9 @@ public class AppGoodsServiceImpl extends BaseServiceImpl<GoodsMapper, Goods> imp
 			List<AppGoodsVO> goodsVos = new ArrayList<>();
 			// 填充商品的属性
 			for (Goods goods : sameCategoryGoodsList) {
-				List<GoodsProperty> goodsPropertyList = goodsPropertyService.list(
-					new QueryWrapper<GoodsProperty>().eq("goods_id", goods.getId()));
+				List<GoodsProperty> goodsPropertyList = goodsPropertyService.list(Condition.getQueryWrapper(new GoodsProperty()).lambda()
+					.eq(GoodsProperty::getGoodsId,goods.getId())
+					.eq(GoodsProperty::getShopId,shopId));
 				HashMap<String, List<GoodsProperty>> propertyMap = new HashMap<>();
 				for (GoodsProperty goodsProperty : goodsPropertyList) {
 					if (propertyMap.containsKey(goodsProperty.getCategory())) {
@@ -129,7 +134,6 @@ public class AppGoodsServiceImpl extends BaseServiceImpl<GoodsMapper, Goods> imp
 		List<GoodsMenuVO> goodsMenuVOList = new ArrayList<>(goodsMenuVOMap.values());
 		// 最后对菜单进行排序
 		goodsMenuVOList.sort(Comparator.comparingInt(GoodsMenuVO::getDisplayOrder));
-		// TODO: 2021/9/17  需要将商品菜单加入缓存中
 		redisTemplate.opsForValue().set(GOODS_MENU_KEY,goodsMenuVOList);
 		return goodsMenuVOList;
 	}

+ 1 - 1
src/main/java/org/springblade/ldt/bills/controller/GoodsBillsController.java

@@ -40,7 +40,7 @@ import org.springblade.core.boot.ctrl.BladeController;
  * 订单 控制器
  *
  * @author BladeX
- * @since 2021-09-23
+ * @since 2021-09-26
  */
 @RestController
 @AllArgsConstructor

+ 1 - 2
src/main/java/org/springblade/ldt/bills/dto/GoodsBillsDTO.java

@@ -24,11 +24,10 @@ import lombok.EqualsAndHashCode;
  * 订单数据传输对象实体类
  *
  * @author BladeX
- * @since 2021-09-23
+ * @since 2021-09-26
  */
 @Data
 @EqualsAndHashCode(callSuper = true)
 public class GoodsBillsDTO extends GoodsBills {
 	private static final long serialVersionUID = 1L;
-
 }

+ 13 - 1
src/main/java/org/springblade/ldt/bills/entity/GoodsBills.java

@@ -28,7 +28,7 @@ import io.swagger.annotations.ApiModelProperty;
  * 订单实体类
  *
  * @author BladeX
- * @since 2021-09-23
+ * @since 2021-09-26
  */
 @Data
 @TableName("ldt_goods_bills")
@@ -88,17 +88,29 @@ public class GoodsBills extends BaseEntity {
 	*/
 		@ApiModelProperty(value = "配送费")
 		private Integer sendingPrice;
+
+
 	/**
 	* 取单号
 	*/
 		@ApiModelProperty(value = "取单号")
 		private Integer verifyNum;
+	/**
+	 * 座位号
+	 */
+	@ApiModelProperty(value = "座位号")
+	private Integer seatNum;
 	/**
 	* 用户备注、订单取消原因、或其他额外信息
 	*/
 		@ApiModelProperty(value = "用户备注、订单取消原因、或其他额外信息")
 		private String extraInfo;
 	/**
+	* 过期时间
+	*/
+		@ApiModelProperty(value = "过期时间")
+		private LocalDateTime expireTime;
+	/**
 	* 支付时间
 	*/
 		@ApiModelProperty(value = "支付时间")

+ 1 - 1
src/main/java/org/springblade/ldt/bills/mapper/GoodsBillsMapper.java

@@ -26,7 +26,7 @@ import java.util.List;
  * 订单 Mapper 接口
  *
  * @author BladeX
- * @since 2021-09-23
+ * @since 2021-09-26
  */
 public interface GoodsBillsMapper extends BaseMapper<GoodsBills> {
 

+ 2 - 0
src/main/java/org/springblade/ldt/bills/mapper/GoodsBillsMapper.xml

@@ -24,11 +24,13 @@
         <result column="sending_price" property="sendingPrice"/>
         <result column="verify_num" property="verifyNum"/>
         <result column="extra_info" property="extraInfo"/>
+        <result column="expire_time" property="expireTime"/>
         <result column="pay_time" property="payTime"/>
         <result column="finish_time" property="finishTime"/>
         <result column="user_phone" property="userPhone"/>
         <result column="receiver" property="receiver"/>
         <result column="address_detail" property="addressDetail"/>
+        <result column="seat_num" property="seatNum"/>
     </resultMap>
 
 

+ 1 - 1
src/main/java/org/springblade/ldt/bills/service/IGoodsBillsService.java

@@ -25,7 +25,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
  * 订单 服务类
  *
  * @author BladeX
- * @since 2021-09-23
+ * @since 2021-09-26
  */
 public interface IGoodsBillsService extends BaseService<GoodsBills> {
 

+ 1 - 1
src/main/java/org/springblade/ldt/bills/service/impl/GoodsBillsServiceImpl.java

@@ -28,7 +28,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
  * 订单 服务实现类
  *
  * @author BladeX
- * @since 2021-09-23
+ * @since 2021-09-26
  */
 @Service
 public class GoodsBillsServiceImpl extends BaseServiceImpl<GoodsBillsMapper, GoodsBills> implements IGoodsBillsService {

+ 1 - 1
src/main/java/org/springblade/ldt/bills/vo/GoodsBillsVO.java

@@ -25,7 +25,7 @@ import io.swagger.annotations.ApiModel;
  * 订单视图实体类
  *
  * @author BladeX
- * @since 2021-09-23
+ * @since 2021-09-26
  */
 @Data
 @EqualsAndHashCode(callSuper = true)

+ 1 - 1
src/main/java/org/springblade/ldt/bills/wrapper/GoodsBillsWrapper.java

@@ -26,7 +26,7 @@ import java.util.Objects;
  * 订单包装类,返回视图层所需的字段
  *
  * @author BladeX
- * @since 2021-09-23
+ * @since 2021-09-26
  */
 public class GoodsBillsWrapper extends BaseEntityWrapper<GoodsBills, GoodsBillsVO>  {
 

+ 7 - 0
src/main/java/org/springblade/ldt/goods/entity/GoodsProperty.java

@@ -37,6 +37,13 @@ public class GoodsProperty extends BaseEntity {
 
 	private static final long serialVersionUID = 1L;
 
+
+
+	/**
+	 * 商户id
+	 */
+	@ApiModelProperty(value = "商户id")
+	private Long shopId;
 	/**
 	* 商品id
 	*/

+ 1 - 0
src/main/java/org/springblade/ldt/goods/mapper/GoodsPropertyMapper.xml

@@ -12,6 +12,7 @@
         <result column="update_time" property="updateTime"/>
         <result column="status" property="status"/>
         <result column="is_deleted" property="isDeleted"/>
+        <result column="shop_id" property="shopId"/>
         <result column="goods_id" property="goodsId"/>
         <result column="category" property="category"/>
         <result column="property_option" property="propertyOption"/>