diff --git a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/property/vo/value/ProductPropertyValueUpdateReqVO.java b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/property/vo/value/ProductPropertyValueUpdateReqVO.java index 4a1bc5778..2437600a8 100644 --- a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/property/vo/value/ProductPropertyValueUpdateReqVO.java +++ b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/property/vo/value/ProductPropertyValueUpdateReqVO.java @@ -12,6 +12,6 @@ public class ProductPropertyValueUpdateReqVO extends ProductPropertyValueBaseVO @ApiModelProperty(value = "主键", required = true, example = "1024") @NotNull(message = "主键不能为空") - private Integer id; + private Long id; } diff --git a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/spu/vo/ProductSpuDetailRespVO.java b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/spu/vo/ProductSpuDetailRespVO.java index d7c43b90f..bba1ba058 100644 --- a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/spu/vo/ProductSpuDetailRespVO.java +++ b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/spu/vo/ProductSpuDetailRespVO.java @@ -55,9 +55,8 @@ public class ProductSpuDetailRespVO extends ProductSpuBaseVO { } - // TODO @luowenfeng: categoryIds => categoryId,example 也要改下哈 - @ApiModelProperty(value = "分类 id 数组,一直递归到一级父节点", example = "[1,2,4]") - private Long categoryIds; + @ApiModelProperty(value = "分类 id 数组,一直递归到一级父节点", example = "4") + private Long categoryId; // TODO @芋艿:在瞅瞅~ @ApiModelProperty(value = "规格属性修改和详情展示组合", example = "[{\"propertyId\":2,\"name\":\"内存\",\"propertyValues\":[{\"v1\":11,\"v2\":\"64G\"},{\"v1\":10,\"v2\":\"32G\"}]},{\"propertyId\":3,\"name\":\"尺寸\",\"propertyValues\":[{\"v1\":16,\"v2\":\"6.1\"},{\"v1\":15,\"v2\":\"5.7\"}]}]") diff --git a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/dataobject/category/ProductCategoryDO.java b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/dataobject/category/ProductCategoryDO.java index 6671e9b44..93ec925a9 100644 --- a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/dataobject/category/ProductCategoryDO.java +++ b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/dataobject/category/ProductCategoryDO.java @@ -64,6 +64,4 @@ public class ProductCategoryDO extends BaseDO { */ private Integer status; - // TODO 芋艿:is_recommend 是否首页推荐:1-是;0-否 - } diff --git a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/mysql/property/ProductPropertyMapper.java b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/mysql/property/ProductPropertyMapper.java index 697beb22d..890df3477 100644 --- a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/mysql/property/ProductPropertyMapper.java +++ b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/mysql/property/ProductPropertyMapper.java @@ -25,10 +25,9 @@ public interface ProductPropertyMapper extends BaseMapperX { .orderByDesc(ProductPropertyDO::getId)); } - // TODO @luowenfeng: selectByNameLike,这样更清晰哈。 default ProductPropertyDO selectByName(String name) { return selectOne(new LambdaQueryWrapperX() - .likeIfPresent(ProductPropertyDO::getName, name)); + .eqIfPresent(ProductPropertyDO::getName, name)); } } diff --git a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/mysql/property/ProductPropertyValueMapper.java b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/mysql/property/ProductPropertyValueMapper.java index 4853afeae..ca9bafab2 100644 --- a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/mysql/property/ProductPropertyValueMapper.java +++ b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/mysql/property/ProductPropertyValueMapper.java @@ -17,8 +17,7 @@ import java.util.List; @Mapper public interface ProductPropertyValueMapper extends BaseMapperX { - // TODO @luowenfeng: selectListByPropertyId 是不是就可以啦 - default List selectListByPropertyValueListByPropertyId(List propertyIds) { + default List selectListByPropertyId(List propertyIds) { return selectList(new LambdaQueryWrapperX() .inIfPresent(ProductPropertyValueDO::getPropertyId, propertyIds)); } diff --git a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/property/ProductPropertyServiceImpl.java b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/property/ProductPropertyServiceImpl.java index 17e38fc98..74e370f9c 100644 --- a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/property/ProductPropertyServiceImpl.java +++ b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/property/ProductPropertyServiceImpl.java @@ -19,6 +19,7 @@ import javax.annotation.Resource; import java.util.Collection; import java.util.List; import java.util.Map; +import java.util.Objects; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.module.product.enums.ErrorCodeConstants.PROPERTY_EXISTS; @@ -58,8 +59,8 @@ public class ProductPropertyServiceImpl implements ProductPropertyService { public void updateProperty(ProductPropertyUpdateReqVO updateReqVO) { // 校验存在 this.validatePropertyExists(updateReqVO.getId()); - // TODO @luowenfeng:如果是自己的情况下,名字相同也是 ok 的呀~ - if (productPropertyMapper.selectByName(updateReqVO.getName()) != null) { + ProductPropertyDO productPropertyDO = productPropertyMapper.selectByName(updateReqVO.getName()); + if (productPropertyDO != null && !productPropertyDO.getId().equals(updateReqVO.getId())) { throw exception(PROPERTY_EXISTS); } // 更新 @@ -97,10 +98,6 @@ public class ProductPropertyServiceImpl implements ProductPropertyService { return ProductPropertyConvert.INSTANCE.convertPage(pageResult); } - private List getPropertyValueListByPropertyId(List propertyIds) { - return productPropertyValueMapper.selectListByPropertyValueListByPropertyId(propertyIds); - } - @Override public ProductPropertyRespVO getProperty(Long id) { ProductPropertyDO property = productPropertyMapper.selectById(id); @@ -117,7 +114,7 @@ public class ProductPropertyServiceImpl implements ProductPropertyService { List propertyList = getPropertyList(listReqVO); // 查询属性值 - List valueDOList = productPropertyValueMapper.selectListByPropertyValueListByPropertyId(CollectionUtils.convertList(propertyList, ProductPropertyRespVO::getId)); + List valueDOList = productPropertyValueMapper.selectListByPropertyId(CollectionUtils.convertList(propertyList, ProductPropertyRespVO::getId)); Map> valueDOMap = CollectionUtils.convertMultiMap(valueDOList, ProductPropertyValueDO::getPropertyId); return CollectionUtils.convertList(propertyList, m -> { ProductPropertyAndValueRespVO productPropertyAndValueRespVO = ProductPropertyConvert.INSTANCE.convert(m); diff --git a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/property/ProductPropertyValueServiceImpl.java b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/property/ProductPropertyValueServiceImpl.java index 551fb00e3..5addb37e8 100644 --- a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/property/ProductPropertyValueServiceImpl.java +++ b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/property/ProductPropertyValueServiceImpl.java @@ -14,6 +14,7 @@ import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; import java.util.List; +import java.util.Objects; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.module.product.enums.ErrorCodeConstants.PROPERTY_VALUE_EXISTS; @@ -42,8 +43,8 @@ public class ProductPropertyValueServiceImpl implements ProductPropertyValueServ @Override public void updatePropertyValue(ProductPropertyValueUpdateReqVO updateReqVO) { - // TODO @luowenfeng:如果是自己的情况下,名字相同也是 ok 的呀~ - if (productPropertyValueMapper.selectByName(updateReqVO.getPropertyId(), updateReqVO.getName()) != null) { + ProductPropertyValueDO productPropertyValueDO = productPropertyValueMapper.selectByName(updateReqVO.getPropertyId(), updateReqVO.getName()); + if (productPropertyValueDO != null && !productPropertyValueDO.getId().equals(updateReqVO.getId())) { throw exception(PROPERTY_VALUE_EXISTS); } ProductPropertyValueDO convert = ProductPropertyValueConvert.INSTANCE.convert(updateReqVO); diff --git a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/spu/ProductSpuServiceImpl.java b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/spu/ProductSpuServiceImpl.java index dafa26428..2e6e4b174 100755 --- a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/spu/ProductSpuServiceImpl.java +++ b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/spu/ProductSpuServiceImpl.java @@ -162,7 +162,6 @@ public class ProductSpuServiceImpl implements ProductSpuService { }); respVO.setProductPropertyViews(productPropertyViews); } - respVO.setCategoryIds(respVO.getCategoryId()); } return respVO; } diff --git a/yudao-module-mall/yudao-module-product-biz/src/test/java/cn/iocoder/yudao/module/product/service/spu/ProductSpuServiceImplTest.java b/yudao-module-mall/yudao-module-product-biz/src/test/java/cn/iocoder/yudao/module/product/service/spu/ProductSpuServiceImplTest.java index a254f636d..cf4c14649 100755 --- a/yudao-module-mall/yudao-module-product-biz/src/test/java/cn/iocoder/yudao/module/product/service/spu/ProductSpuServiceImplTest.java +++ b/yudao-module-mall/yudao-module-product-biz/src/test/java/cn/iocoder/yudao/module/product/service/spu/ProductSpuServiceImplTest.java @@ -1,8 +1,11 @@ package cn.iocoder.yudao.module.product.service.spu; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.RandomUtil; import cn.iocoder.yudao.framework.common.exception.ServiceException; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; +import cn.iocoder.yudao.framework.common.util.collection.SetUtils; import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest; import cn.iocoder.yudao.module.product.controller.admin.property.vo.property.ProductPropertyRespVO; import cn.iocoder.yudao.module.product.controller.admin.property.vo.value.ProductPropertyValueRespVO; @@ -29,16 +32,16 @@ import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.context.annotation.Import; import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; import java.util.stream.Stream; +import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.cloneIgnoreId; import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo; // TODO @芋艿:review 下单元测试 + /** * {@link ProductSpuServiceImpl} 的单元测试类 * @@ -69,6 +72,13 @@ public class ProductSpuServiceImplTest extends BaseDbUnitTest { @MockBean private ProductPropertyValueService productPropertyValueService; + public String generateNo() { + return DateUtil.format(new Date(), "yyyyMMddHHmmss") + RandomUtil.randomInt(100000, 999999); + } + + public Long generateId() { + return RandomUtil.randomLong(100000, 999999); + } @Test public void testCreateSpu_success() { @@ -208,34 +218,119 @@ public class ProductSpuServiceImplTest extends BaseDbUnitTest { Assertions.assertIterableEquals(createReqVO, spuList); } - // TODO @luowenfeng:单测要分情况;类似你这个,可以分 2 个单测;一个是有预存预警的;一个是没库存预警的; - // 然后,参考其它模块的 getPage 类型的方法的单测。 @Test - void getSpuPage() { - // 准备参数 - ProductSpuDO createReqVO = randomPojo(ProductSpuDO.class); - productSpuMapper.insert(createReqVO); - - ArrayList remindSpuIds = Lists.newArrayList( -// randomPojo(ProductSkuDO.class, o -> o.setSpuId(createReqVO.getId())), -// randomPojo(ProductSkuDO.class, o -> o.setSpuId(createReqVO.getId())) - ); - - Mockito.when(productSkuService.getRemindSpuIds()).thenReturn(remindSpuIds); - + void getSpuPage_alarmStock_empty() { // 调用 ProductSpuPageReqVO productSpuPageReqVO = new ProductSpuPageReqVO(); - productSpuPageReqVO.setTabStatus(2); + productSpuPageReqVO.setAlarmStock(true); PageResult spuPage = productSpuService.getSpuPage(productSpuPageReqVO); - ArrayList resultRemindSpuIds = new ArrayList<>(); - resultRemindSpuIds.add(null); - PageResult result = ProductSpuConvert.INSTANCE.convertPage(productSpuMapper.selectPage(productSpuPageReqVO, resultRemindSpuIds)); + PageResult result = PageResult.empty(); Assertions.assertIterableEquals(result.getList(), spuPage.getList()); Assertions.assertEquals(spuPage.getTotal(), result.getTotal()); } + @Test + void getSpuPage_alarmStock() { + // mock 数据 + Long brandId = generateId(); + Long categoryId = generateId(); + String code = generateNo(); + + // 准备参数 + ProductSpuDO createReqVO = randomPojo(ProductSpuDO.class, o->{ + o.setStatus(ProductSpuStatusEnum.ENABLE.getStatus()); + o.setTotalStock(500); + o.setMinPrice(1); + o.setMaxPrice(50); + o.setMarketPrice(25); + o.setSpecType(ProductSpuSpecTypeEnum.RECYCLE.getType()); + o.setBrandId(brandId); + o.setCategoryId(categoryId); + o.setClickCount(100); + o.setCode(code); + o.setDescription("测试商品"); + o.setPicUrls(new ArrayList<>()); + o.setName("测试"); + o.setSalesCount(100); + o.setSellPoint("超级加倍"); + o.setShowStock(true); + o.setVideoUrl(""); + }); + productSpuMapper.insert(createReqVO); + + Set alarmStockSpuIds = SetUtils.asSet(createReqVO.getId()); + + List productSpuDOS = Arrays.asList(randomPojo(ProductSkuDO.class, o -> { + o.setSpuId(createReqVO.getId()); + }), randomPojo(ProductSkuDO.class, o -> { + o.setSpuId(createReqVO.getId()); + })); + + Mockito.when(productSkuService.getSkusByAlarmStock()).thenReturn(productSpuDOS); + + // 调用 + ProductSpuPageReqVO productSpuPageReqVO = new ProductSpuPageReqVO(); + productSpuPageReqVO.setAlarmStock(true); + PageResult spuPage = productSpuService.getSpuPage(productSpuPageReqVO); + + PageResult result = ProductSpuConvert.INSTANCE.convertPage(productSpuMapper.selectPage(productSpuPageReqVO, alarmStockSpuIds)); + Assertions.assertIterableEquals(result.getList(), spuPage.getList()); + Assertions.assertEquals(spuPage.getTotal(), result.getTotal()); + } + + @Test + void getSpuPage() { + // mock 数据 + Long brandId = generateId(); + Long categoryId = generateId(); + + // 准备参数 + ProductSpuDO createReqVO = randomPojo(ProductSpuDO.class, o->{ + o.setStatus(ProductSpuStatusEnum.ENABLE.getStatus()); + o.setTotalStock(1); + o.setMinPrice(1); + o.setMaxPrice(1); + o.setMarketPrice(1); + o.setSpecType(ProductSpuSpecTypeEnum.RECYCLE.getType()); + o.setBrandId(brandId); + o.setCategoryId(categoryId); + o.setClickCount(1); + o.setCode(generateNo()); + o.setDescription("测试商品"); + o.setPicUrls(new ArrayList<>()); + o.setName("测试"); + o.setSalesCount(1); + o.setSellPoint("卖点"); + o.setShowStock(true); + }); + + // 准备参数 + productSpuMapper.insert(createReqVO); + // 测试 status 不匹配 + productSpuMapper.insert(cloneIgnoreId(createReqVO, o -> o.setStatus(ProductSpuStatusEnum.DISABLE.getStatus()))); + productSpuMapper.insert(cloneIgnoreId(createReqVO, o -> o.setStatus(ProductSpuStatusEnum.RECYCLE.getStatus()))); + // 测试 SpecType 不匹配 + productSpuMapper.insert(cloneIgnoreId(createReqVO, o -> o.setSpecType(ProductSpuSpecTypeEnum.DISABLE.getType()))); + // 测试 BrandId 不匹配 + productSpuMapper.insert(cloneIgnoreId(createReqVO, o -> o.setBrandId(generateId()))); + // 测试 CategoryId 不匹配 + productSpuMapper.insert(cloneIgnoreId(createReqVO, o -> o.setCategoryId(generateId()))); + + // 调用 + ProductSpuPageReqVO productSpuPageReqVO = new ProductSpuPageReqVO(); + productSpuPageReqVO.setAlarmStock(false); + productSpuPageReqVO.setBrandId(brandId); + productSpuPageReqVO.setStatus(ProductSpuStatusEnum.ENABLE.getStatus()); + productSpuPageReqVO.setCategoryId(categoryId); + + PageResult spuPage = productSpuService.getSpuPage(productSpuPageReqVO); + + PageResult result = ProductSpuConvert.INSTANCE.convertPage(productSpuMapper.selectPage(productSpuPageReqVO, (Set) null)); + Assertions.assertEquals(result, spuPage); + } + @Test void testGetSpuPage() { // 准备参数 @@ -244,13 +339,6 @@ public class ProductSpuServiceImplTest extends BaseDbUnitTest { }); productSpuMapper.insert(createReqVO); - ArrayList remindSpuIds = Lists.newArrayList( -// randomPojo(ProductSkuDO.class, o -> o.setSpuId(createReqVO.getId())), -// randomPojo(ProductSkuDO.class, o -> o.setSpuId(createReqVO.getId())) - ); - - Mockito.when(productSkuService.getRemindSpuIds()).thenReturn(remindSpuIds); - // 调用 AppSpuPageReqVO appSpuPageReqVO = new AppSpuPageReqVO(); appSpuPageReqVO.setCategoryId(2L); diff --git a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/order/TradeOrderDO.java b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/order/TradeOrderDO.java index 77bdf66b0..0cbd7021c 100644 --- a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/order/TradeOrderDO.java +++ b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/order/TradeOrderDO.java @@ -2,7 +2,6 @@ package cn.iocoder.yudao.module.trade.dal.dataobject.order; import cn.iocoder.yudao.framework.common.enums.TerminalEnum; import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import cn.iocoder.yudao.module.product.enums.delivery.DeliveryTypeEnum; import cn.iocoder.yudao.module.trade.enums.order.TradeOrderCancelTypeEnum; import cn.iocoder.yudao.module.trade.enums.order.TradeOrderRefundStatusEnum; import cn.iocoder.yudao.module.trade.enums.order.TradeOrderStatusEnum; @@ -38,7 +37,7 @@ public class TradeOrderDO extends BaseDO { * * 例如说,1146347329394184195 */ - private String sn; + private String no; /** * 订单类型 * @@ -113,44 +112,38 @@ public class TradeOrderDO extends BaseDO { // 价格文档 - 京东到家:https://openo2o.jddj.com/api/getApiDetail/182/4d1494c5e7ac4679bfdaaed950c5bc7f.htm // 价格文档 - 有赞:https://doc.youzanyun.com/detail/API/0/906 -// TODO promotion_details(订单优惠信息明细,商品和订单级优惠一般都在里面) - /** * 商品原价(总),单位:分 * * 基于 {@link TradeOrderItemDO#getTotalOriginalPrice()} 求和 */ - // niu - goods_money; - private Integer skuOriginalPrice; - /** - * 商品优惠(总),单位:分 - * - * 基于 {@link TradeOrderItemDO#getTotalPromotionPrice()} 求和 - */ - private Integer skuPromotionPrice; + private Integer originalPrice; /** * 订单优惠(总),单位:分 * - * 例如说:满减折扣;不包括优惠劵、商品优惠 + * 例如说:满减折扣;不包括优惠劵、商品优惠(TODO) */ - // niu - promotion_money;taobao - discount_fee(主订单优惠) - private Integer orderPromotionPrice; + private Integer promotionPrice; /** * 运费金额,单位:分 */ - // niu - delivery_money;taobao - post_fee(订单邮费) private Integer deliveryPrice; - // TODO 芋艿:taobao 的:trade.adjust_fee/order.adjust_fee(调整金额,如:卖家手动修改订单价格,官方数据修复等等) + /** + * 订单调价(总),单位:分 + * + * 正数,加价;负数,减价 + */ + private Integer adjustPrice; /** * 应付金额(总),单位:分 * - * = {@link #skuOriginalPrice} + * = {@link #originalPrice} * + {@link #deliveryPrice} - * - {@link #skuPromotionPrice} - * - {@link #orderPromotionPrice} + * + {@link #adjustPrice} + * - {@link #promotionPrice} + * - {@link #couponPrice} + * - {@link #pointPrice} */ - // niu - pay_money;taobao - payment(主订单实付金额) | trade.total_fee(主订单应付金额,参考使用); -// * - {@link #couponPrice} // TODO 芋艿:靠营销表记录 private Integer payPrice; /** * 支付订单编号 @@ -166,21 +159,6 @@ public class TradeOrderDO extends BaseDO { private Integer payChannel; // ========== 收件 + 物流基本信息 ========== - /** - * 配送方式 - * 会员用户下单时,选择的配送方式 - * - * 枚举 {@link DeliveryTypeEnum} - */ - private Integer deliveryType; - /** - * 实际的配送方式 - * 管理后台发货时,选择的配送方式 - * - * 0 - 无需物流 - * 枚举 {@link DeliveryTypeEnum} - */ - private Integer actualDeliveryType; // like - shipping_status; /** * 配置模板的编号 * @@ -247,58 +225,13 @@ public class TradeOrderDO extends BaseDO { * 优惠劵编号 */ private Long couponId; -// /** -// * 优惠劵减免金额,单位:分 // TODO 芋艿:靠营销表记录 -// */ -// // niu - coupon_money; -// private Integer couponPrice; -// /** -// * 积分抵扣的金额,单位:分 -// */ -// private Integer integralPrice; -// /** -// * 使用的积分 -// */ -// private Integer useIntegral; - - // TODO ========== 待定字段:yv ========= - // TODO cart_id:购物车 id - // TODO refund_reason_wap_img:退款图片 - // TODO refund_reason_wap_explain:退款用户说明 - // TODO refund_reason_time:退款时间 - // TODO refund_reason_wap:前台退款原因 - // TODO refund_reason:不退款的理由 - - // TODO gain_integral:消费赚取积分 - // TODO back_integral:给用户退了多少积分 - - // TODO combination_id:拼团产品id - // TODO pink_id:拼团id - // TODO seckill_id:秒杀产品ID - // TODO bargain_id:砍价id - - // TODO cost:成本价 - // TODO verify_code:核销码 - // TODO store_id:门店id - - // TODO ========== 待定字段:cf ========= - // TODO before_pay_price:改价前支付金额 - // TODO is_alter_price:是否改价 - // TODO out_trade_no:商户系统内部的订单号 String - - // TODO ========== 待定字段:lf ========= - // TODO settle_id:未结算 - // TODO settle_amount:结算金额 - // TODO team_found_id: 拼团id - // TODO team_id: 拼团活动id - // TODO delivery_id: 发货单ID - // TODO attach_values: 附带的值(赠送时机,赠送积分成长值什么的)Json格式 - - // TODO ========== 待定字段:nf ========= - // TODO delivery_code:整体提货编码 - - // TODO ========== 待定字段:niu ========= - // TODO adjust_money '订单调整金额' - // TODO balance_money ''余额支付金额'' + /** + * 优惠劵减免金额,单位:分 + */ + private Integer couponPrice; + /** + * 积分抵扣的金额,单位:分 + */ + private Integer pointPrice; } diff --git a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderServiceImpl.java b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderServiceImpl.java index f47152150..a6943909d 100644 --- a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderServiceImpl.java +++ b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderServiceImpl.java @@ -123,7 +123,7 @@ public class TradeOrderServiceImpl implements TradeOrderService { Long loginUserId, String clientIp) { tradeOrderDO.setUserId(loginUserId); tradeOrderDO.setUserIp(clientIp); - tradeOrderDO.setSn(IdUtil.getSnowflakeNextId() + ""); // TODO @LeeYan9: 思考下, 怎么生成好点哈; 这个是会展示给用户的; + tradeOrderDO.setNo(IdUtil.getSnowflakeNextId() + ""); // TODO @LeeYan9: 思考下, 怎么生成好点哈; 这个是会展示给用户的; tradeOrderDO.setStatus(TradeOrderStatusEnum.WAITING_PAYMENT.getStatus()); tradeOrderDO.setType(TradeOrderTypeEnum.NORMAL.getType()); tradeOrderDO.setRefundStatus(TradeOrderRefundStatusEnum.NONE.getStatus()); diff --git a/yudao-ui-admin/src/views/mall/product/spu/save.vue b/yudao-ui-admin/src/views/mall/product/spu/save.vue index f24644135..ca344bf8c 100644 --- a/yudao-ui-admin/src/views/mall/product/spu/save.vue +++ b/yudao-ui-admin/src/views/mall/product/spu/save.vue @@ -1,11 +1,14 @@ - 添加规格项目 - + 添加规格项目 @@ -76,15 +77,13 @@ @@ -112,17 +110,14 @@ @@ -134,17 +129,17 @@