优化dou商品

This commit is contained in:
启航 2026-01-24 20:04:54 +08:00
parent 1b0abc44a8
commit b5a94c8af1
9 changed files with 64 additions and 37 deletions

View File

@ -103,6 +103,7 @@ public class DouGoodsApiController {
for (var s : goods.getSkuList()) { for (var s : goods.getSkuList()) {
DouGoodsSku sku = new DouGoodsSku(); DouGoodsSku sku = new DouGoodsSku();
BeanUtils.copyProperties(s, sku); BeanUtils.copyProperties(s, sku);
sku.setProductId(goods.getProductId().toString());
sku.setShopId(params.getShopId()); sku.setShopId(params.getShopId());
sku.setName(douGoods.getName()); sku.setName(douGoods.getName());
sku.setImg(douGoods.getImg()); sku.setImg(douGoods.getImg());

View File

@ -2,6 +2,7 @@ package cn.qihangerp.oms.dou.controller;
import cn.qihangerp.common.*; import cn.qihangerp.common.*;
import cn.qihangerp.model.bo.DouGoodsSkuBo;
import cn.qihangerp.model.bo.LinkErpGoodsSkuBo; import cn.qihangerp.model.bo.LinkErpGoodsSkuBo;
import cn.qihangerp.module.service.OGoodsSkuService; import cn.qihangerp.module.service.OGoodsSkuService;
import cn.qihangerp.model.entity.DouGoods; import cn.qihangerp.model.entity.DouGoods;
@ -32,7 +33,7 @@ public class DouGoodsController extends BaseController {
} }
@RequestMapping(value = "/skuList", method = RequestMethod.GET) @RequestMapping(value = "/skuList", method = RequestMethod.GET)
public TableDataInfo skuList(DouGoodsBo bo, PageQuery pageQuery) { public TableDataInfo skuList(DouGoodsSkuBo bo, PageQuery pageQuery) {
PageResult<DouGoodsSku> result = skuService.queryPageList(bo, pageQuery); PageResult<DouGoodsSku> result = skuService.queryPageList(bo, pageQuery);
return getDataTable(result); return getDataTable(result);

View File

@ -0,0 +1,18 @@
package cn.qihangerp.model.bo;
import lombok.Data;
import java.io.Serializable;
@Data
public class DouGoodsSkuBo implements Serializable {
/**
* 商品数字id
*/
private Long productId;
private Long skuId;
private String title;
private String code;
private Integer shopId;
private Integer hasLink;//是否关联
}

View File

@ -3,6 +3,7 @@ package cn.qihangerp.module.service;
import cn.qihangerp.common.PageQuery; import cn.qihangerp.common.PageQuery;
import cn.qihangerp.common.PageResult; import cn.qihangerp.common.PageResult;
import cn.qihangerp.common.ResultVo; import cn.qihangerp.common.ResultVo;
import cn.qihangerp.model.bo.DouGoodsSkuBo;
import cn.qihangerp.model.bo.LinkErpGoodsSkuBo; import cn.qihangerp.model.bo.LinkErpGoodsSkuBo;
import cn.qihangerp.model.entity.DouGoodsSku; import cn.qihangerp.model.entity.DouGoodsSku;
import cn.qihangerp.model.bo.DouGoodsBo; import cn.qihangerp.model.bo.DouGoodsBo;
@ -15,6 +16,6 @@ import com.baomidou.mybatisplus.extension.service.IService;
* @createDate 2024-05-31 17:23:21 * @createDate 2024-05-31 17:23:21
*/ */
public interface DouGoodsSkuService extends IService<DouGoodsSku> { public interface DouGoodsSkuService extends IService<DouGoodsSku> {
PageResult<DouGoodsSku> queryPageList(DouGoodsBo bo, PageQuery pageQuery); PageResult<DouGoodsSku> queryPageList(DouGoodsSkuBo bo, PageQuery pageQuery);
ResultVo linkErpGoodsSku(LinkErpGoodsSkuBo bo); ResultVo linkErpGoodsSku(LinkErpGoodsSkuBo bo);
} }

View File

@ -48,7 +48,7 @@ public class DouGoodsServiceImpl extends ServiceImpl<DouGoodsMapper, DouGoods>
public PageResult<DouGoods> queryPageList(DouGoodsBo bo, PageQuery pageQuery) { public PageResult<DouGoods> queryPageList(DouGoodsBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<DouGoods> queryWrapper = new LambdaQueryWrapper<DouGoods>() LambdaQueryWrapper<DouGoods> queryWrapper = new LambdaQueryWrapper<DouGoods>()
.eq(bo.getShopId()!=null,DouGoods::getShopId,bo.getShopId()) .eq(bo.getShopId()!=null,DouGoods::getShopId,bo.getShopId())
.eq(bo.getProductId()!=null,DouGoods::getProductId,bo.getProductId())
; ;
Page<DouGoods> goodsPage = mapper.selectPage(pageQuery.build(), queryWrapper); Page<DouGoods> goodsPage = mapper.selectPage(pageQuery.build(), queryWrapper);
@ -97,7 +97,7 @@ public class DouGoodsServiceImpl extends ServiceImpl<DouGoodsMapper, DouGoods>
item.setErpGoodsSkuId(oGoodsSkus.get(0).getId().toString()); item.setErpGoodsSkuId(oGoodsSkus.get(0).getId().toString());
} }
} }
List<DouGoodsSku> pddGoodsSkus = skuMapper.selectList(new LambdaQueryWrapper<DouGoodsSku>().eq(DouGoodsSku::getSpecId, item.getSpecId())); List<DouGoodsSku> pddGoodsSkus = skuMapper.selectList(new LambdaQueryWrapper<DouGoodsSku>().eq(DouGoodsSku::getId, item.getId()));
if(pddGoodsSkus!=null && !pddGoodsSkus.isEmpty()){ if(pddGoodsSkus!=null && !pddGoodsSkus.isEmpty()){
item.setModifyTime(new Date()); item.setModifyTime(new Date());
skuMapper.updateById(item); skuMapper.updateById(item);

View File

@ -3,6 +3,7 @@ package cn.qihangerp.module.service.impl;
import cn.qihangerp.common.PageQuery; import cn.qihangerp.common.PageQuery;
import cn.qihangerp.common.PageResult; import cn.qihangerp.common.PageResult;
import cn.qihangerp.common.ResultVo; import cn.qihangerp.common.ResultVo;
import cn.qihangerp.model.bo.DouGoodsSkuBo;
import cn.qihangerp.model.bo.LinkErpGoodsSkuBo; import cn.qihangerp.model.bo.LinkErpGoodsSkuBo;
import cn.qihangerp.model.entity.OGoods; import cn.qihangerp.model.entity.OGoods;
import cn.qihangerp.model.entity.OGoodsSku; import cn.qihangerp.model.entity.OGoodsSku;
@ -39,7 +40,7 @@ public class DouGoodsSkuServiceImpl extends ServiceImpl<DouGoodsSkuMapper, DouGo
private final OGoodsService oGoodsService; private final OGoodsService oGoodsService;
@Override @Override
public PageResult<DouGoodsSku> queryPageList(DouGoodsBo bo, PageQuery pageQuery) { public PageResult<DouGoodsSku> queryPageList(DouGoodsSkuBo bo, PageQuery pageQuery) {
if(StringUtils.hasText(bo.getCode())){ if(StringUtils.hasText(bo.getCode())){
bo.setCode(bo.getCode().trim()); bo.setCode(bo.getCode().trim());
} }

View File

@ -42,7 +42,7 @@ public class PddGoodsSkuServiceImpl extends ServiceImpl<PddGoodsSkuMapper, PddGo
LambdaQueryWrapper<PddGoodsSku> ew = new LambdaQueryWrapper<PddGoodsSku>() LambdaQueryWrapper<PddGoodsSku> ew = new LambdaQueryWrapper<PddGoodsSku>()
.eq(bo.getShopId()!=null,PddGoodsSku::getShopId,bo.getShopId()) .eq(bo.getShopId()!=null,PddGoodsSku::getShopId,bo.getShopId())
.eq(bo.getGoodsId()!=null,PddGoodsSku::getGoodsId,bo.getGoodsId()) .eq(bo.getGoodsId()!=null,PddGoodsSku::getGoodsId,bo.getGoodsId())
.eq(bo.getSkuId()!=null,PddGoodsSku::getSkuId,bo.getSkuId()) .eq(StringUtils.hasText(bo.getSkuId()),PddGoodsSku::getSkuId,bo.getSkuId())
.eq(bo.getErpSkuId()!=null,PddGoodsSku::getErpGoodsSkuId,bo.getErpSkuId()) .eq(bo.getErpSkuId()!=null,PddGoodsSku::getErpGoodsSkuId,bo.getErpSkuId())
.eq(StringUtils.hasText(bo.getOuterId()),PddGoodsSku::getOuterId,bo.getOuterId()) .eq(StringUtils.hasText(bo.getOuterId()),PddGoodsSku::getOuterId,bo.getOuterId())
.eq(bo.getIsSkuOnsale()!=null,PddGoodsSku::getIsSkuOnsale,bo.getIsSkuOnsale()) .eq(bo.getIsSkuOnsale()!=null,PddGoodsSku::getIsSkuOnsale,bo.getIsSkuOnsale())

View File

@ -1,30 +1,30 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="108px"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="108px">
<el-form-item label="平台SkuId" prop="skuId"> <el-form-item label="平台商品ID" prop="productId">
<el-input <el-input
v-model="queryParams.skuId" v-model="queryParams.productId"
placeholder="请输入平台SkuId" placeholder="请输入平台商品ID"
clearable clearable
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="商家sku编码" prop="outerId"> <el-form-item label="商家商品编码" prop="outerProductId">
<el-input <el-input
v-model="queryParams.outerId" v-model="queryParams.outerProductId"
placeholder="请输入商家sku编码" placeholder="请输入商家商品编码"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="ERP skuId" prop="erpSkuId">
<el-input
v-model="queryParams.erpSkuId"
placeholder="请输入ERP skuId"
clearable clearable
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<!-- <el-form-item label="ERP skuId" prop="erpSkuId">-->
<!-- <el-input-->
<!-- v-model="queryParams.erpSkuId"-->
<!-- placeholder="请输入ERP skuId"-->
<!-- clearable-->
<!-- @keyup.enter.native="handleQuery"-->
<!-- />-->
<!-- </el-form-item>-->
<el-form-item label="店铺" prop="shopId"> <el-form-item label="店铺" prop="shopId">
<el-select v-model="queryParams.shopId" placeholder="请选择店铺" clearable @change="handleQuery"> <el-select v-model="queryParams.shopId" placeholder="请选择店铺" clearable @change="handleQuery">
<el-option <el-option
@ -68,13 +68,13 @@
<el-table v-loading="loading" :data="goodsList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="goodsList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<!-- <el-table-column label="ID" align="center" prop="id" />--> <!-- <el-table-column label="ID" align="center" prop="id" />-->
<el-table-column label="平台商品ID" align="center" prop="productId" /> <el-table-column label="平台商品ID" align="center" prop="productId" width="200"/>
<el-table-column label="图片" align="center" prop="logo" width="100"> <el-table-column label="图片" align="center" prop="img" width="70">
<template slot-scope="scope"> <template slot-scope="scope">
<image-preview :src="scope.row.img" :width="50" :height="50"/> <image-preview :src="scope.row.img" :width="50" :height="50"/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="商品名称" align="center" prop="name" /> <el-table-column label="商品名称" align="left" prop="name" />
<el-table-column label="商家编码" align="center" prop="outerProductId" /> <el-table-column label="商家编码" align="center" prop="outerProductId" />
<el-table-column label="价格" align="center" prop="formattedPrice" > <el-table-column label="价格" align="center" prop="formattedPrice" >
</el-table-column> </el-table-column>
@ -117,11 +117,12 @@
/> />
<el-dialog title="Sku List" :visible.sync="skuOpen" width="1200px" append-to-body> <el-dialog title="Sku List" :visible.sync="skuOpen" width="1200px" append-to-body>
<el-table v-loading="loading" :data="skuList"> <el-table v-loading="loading" :data="skuList" :row-class-name="rowIndex">
<!-- <el-table-column type="selection" width="55" align="center" /> --> <!-- <el-table-column type="selection" width="55" align="center" /> -->
<el-table-column label="序号" align="center" prop="index" width="50"/> <el-table-column label="序号" align="center" prop="index" width="50"/>
<el-table-column label="SkuId" align="center" prop="id" width="200"/>
<el-table-column label="SKU编码" align="left" prop="code" /> <el-table-column label="SKU编码" align="left" prop="code" />
<el-table-column label="规格Id" align="center" prop="specId" />
<el-table-column label="商品名称" align="center" prop="name" /> <el-table-column label="商品名称" align="center" prop="name" />
<el-table-column label="图片" align="center" prop="logo" width="100"> <el-table-column label="图片" align="center" prop="logo" width="100">
<template slot-scope="scope"> <template slot-scope="scope">
@ -151,16 +152,16 @@
<!-- <el-tag size="small" v-if="scope.row.status === 2">已下架</el-tag>--> <!-- <el-tag size="small" v-if="scope.row.status === 2">已下架</el-tag>-->
<!-- </template>--> <!-- </template>-->
<!-- </el-table-column>--> <!-- </el-table-column>-->
<!-- <el-table-column label="操作" align="center" class-name="small-padding fixed-width">--> <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<!-- <template slot-scope="scope">--> <template slot-scope="scope">
<!-- <el-button--> <el-button
<!-- size="mini"--> size="mini"
<!-- type="text"--> type="text"
<!-- icon="el-icon-share"--> icon="el-icon-share"
<!-- @click="handleLink(scope.row)"--> @click="handleLink(scope.row)"
<!-- >关联ERP</el-button>--> >关联ERP</el-button>
<!-- </template>--> </template>
<!-- </el-table-column>--> </el-table-column>
</el-table> </el-table>
</el-dialog> </el-dialog>
@ -187,6 +188,7 @@ import {listShop} from "@/api/shop/shop";
import {pullGoodsList, listGoods, getGoodsSku, linkErpGoodsSkuId,pushToOms} from "@/api/dou/goods"; import {pullGoodsList, listGoods, getGoodsSku, linkErpGoodsSkuId,pushToOms} from "@/api/dou/goods";
import {MessageBox} from "element-ui"; import {MessageBox} from "element-ui";
import {isRelogin} from "@/utils/request"; import {isRelogin} from "@/utils/request";
import {rowIndex} from "@/utils/zhijian";
export default { export default {
name: "GoodsListDou", name: "GoodsListDou",
@ -218,7 +220,9 @@ export default {
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 10,
name: null name: null,
productId: null,
outerProductId: null,
}, },
// //
form: {}, form: {},
@ -248,6 +252,7 @@ export default {
this.loading = false; this.loading = false;
}, },
methods: { methods: {
rowIndex,
// //
handleSelectionChange(selection) { handleSelectionChange(selection) {
this.ids = selection.map(item => item.id) this.ids = selection.map(item => item.id)

View File

@ -247,7 +247,7 @@
<el-form-item label="商品图片" prop="image"> <el-form-item label="商品图片" prop="image">
<image-upload v-model="form.image"/> <image-upload v-model="form.image"/>
</el-form-item> </el-form-item>
<el-form-item label="商品编号" prop="number"> <el-form-item label="商品编号" prop="goodsNum">
<el-input v-model="form.goodsNum" placeholder="请输入商品编号" /> <el-input v-model="form.goodsNum" placeholder="请输入商品编号" />
</el-form-item> </el-form-item>
<!-- <el-form-item label="单位名称" prop="unitName">--> <!-- <el-form-item label="单位名称" prop="unitName">-->