优化pdd店铺商品

This commit is contained in:
启航 2026-01-24 18:19:23 +08:00
parent 16dae2da6b
commit 1b0abc44a8
10 changed files with 100 additions and 48 deletions

View File

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

View File

@ -10,10 +10,9 @@ public class PddGoodsBo implements Serializable {
* 商品数字id
*/
private Long goodsId;
private Long skuId;
private String title;
private String outerId;
private Integer shopId;
private Integer hasLink;//是否关联
private Integer saleState;//状态京东自营用
private String outerGoodsId;
private Long shopId;
private Integer isOnsale;//状态1售卖中 0已下架
}

View File

@ -0,0 +1,19 @@
package cn.qihangerp.model.bo;
import lombok.Data;
import java.io.Serializable;
@Data
public class PddGoodsSkuBo implements Serializable {
/**
* 商品数字id
*/
private String goodsId;
private String skuId;
private String outerId;
private Long erpSkuId;
private Long shopId;
private Integer isSkuOnsale;//状态1售卖中 0已下架
}

View File

@ -4,6 +4,7 @@ import cn.qihangerp.common.PageQuery;
import cn.qihangerp.common.PageResult;
import cn.qihangerp.common.ResultVo;
import cn.qihangerp.model.bo.LinkErpGoodsSkuBo;
import cn.qihangerp.model.bo.PddGoodsSkuBo;
import cn.qihangerp.model.entity.PddGoodsSku;
import com.baomidou.mybatisplus.extension.service.IService;
@ -14,6 +15,6 @@ import com.baomidou.mybatisplus.extension.service.IService;
* @createDate 2024-06-04 17:11:49
*/
public interface PddGoodsSkuService extends IService<PddGoodsSku> {
PageResult<PddGoodsSku> queryPageList(PddGoodsSku bo, PageQuery pageQuery);
PageResult<PddGoodsSku> queryPageList(PddGoodsSkuBo bo, PageQuery pageQuery);
ResultVo linkErpGoodsSku(LinkErpGoodsSkuBo bo);
}

View File

@ -47,7 +47,11 @@ public class PddGoodsServiceImpl extends ServiceImpl<PddGoodsMapper, PddGoods>
@Override
public PageResult<PddGoods> queryPageList(PddGoodsBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<PddGoods> queryWrapper = new LambdaQueryWrapper<PddGoods>()
.eq(bo.getShopId()!=null,PddGoods::getShopId,bo.getShopId());
.eq(bo.getShopId()!=null,PddGoods::getShopId,bo.getShopId())
.eq(bo.getGoodsId()!=null,PddGoods::getGoodsId,bo.getGoodsId())
.eq(org.springframework.util.StringUtils.hasText(bo.getOuterGoodsId()),PddGoods::getOuterGoodsId,bo.getOuterGoodsId())
.eq(bo.getIsOnsale()!=null,PddGoods::getIsOnsale,bo.getIsOnsale())
;
Page<PddGoods> goodsPage = mapper.selectPage(pageQuery.build(), queryWrapper);
if(goodsPage.getRecords()!=null&&goodsPage.getRecords().size()>0){

View File

@ -4,6 +4,7 @@ import cn.qihangerp.common.PageQuery;
import cn.qihangerp.common.PageResult;
import cn.qihangerp.common.ResultVo;
import cn.qihangerp.model.bo.LinkErpGoodsSkuBo;
import cn.qihangerp.model.bo.PddGoodsSkuBo;
import cn.qihangerp.model.entity.OGoods;
import cn.qihangerp.model.entity.OGoodsSku;
import cn.qihangerp.module.service.OGoodsService;
@ -37,13 +38,14 @@ public class PddGoodsSkuServiceImpl extends ServiceImpl<PddGoodsSkuMapper, PddGo
private final OGoodsSkuService oGoodsSkuService;
private final OGoodsService oGoodsService;
@Override
public PageResult<PddGoodsSku> queryPageList(PddGoodsSku bo, PageQuery pageQuery) {
public PageResult<PddGoodsSku> queryPageList(PddGoodsSkuBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<PddGoodsSku> ew = new LambdaQueryWrapper<PddGoodsSku>()
.eq(bo.getShopId()!=null,PddGoodsSku::getShopId,bo.getShopId())
.eq(bo.getGoodsId()!=null,PddGoodsSku::getGoodsId,bo.getGoodsId())
.eq(bo.getSkuId()!=null,PddGoodsSku::getSkuId,bo.getSkuId())
.eq(StringUtils.hasText(bo.getOuterGoodsId()),PddGoodsSku::getOuterGoodsId,bo.getOuterGoodsId())
.eq(bo.getErpSkuId()!=null,PddGoodsSku::getErpGoodsSkuId,bo.getErpSkuId())
.eq(StringUtils.hasText(bo.getOuterId()),PddGoodsSku::getOuterId,bo.getOuterId())
.eq(bo.getIsSkuOnsale()!=null,PddGoodsSku::getIsSkuOnsale,bo.getIsSkuOnsale())
;
IPage<PddGoodsSku> result = mapper.selectPage(pageQuery.build(), ew);
return PageResult.build(result);

View File

@ -237,3 +237,7 @@ export function amountFormatter(row, column, cellValue, index) {
return '¥' + parseFloat(cellValue).toFixed(2).replace(/\d(?=(\d{3})+\.)/g, '$&,');
}
// 显示行号
export function rowIndex({ row, rowIndex }) {
row.index = rowIndex + 1;
}

View File

@ -1,30 +1,30 @@
<template>
<div class="app-container">
<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="goodsId">
<el-input
v-model="queryParams.skuId"
placeholder="请输入平台SkuId"
v-model="queryParams.goodsId"
placeholder="请输入平台商品ID"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="商家sku编码" prop="outerId">
<el-form-item label="商家商品编码" prop="outerGoodsId">
<el-input
v-model="queryParams.outerId"
placeholder="请输入商家sku编码"
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"
v-model="queryParams.outerGoodsId"
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-->
<!-- @keyup.enter.native="handleQuery"-->
<!-- />-->
<!-- </el-form-item>-->
<el-form-item label="店铺" prop="shopId">
<el-select v-model="queryParams.shopId" placeholder="请选择店铺" clearable @change="handleQuery">
<el-option
@ -36,12 +36,26 @@
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
<el-form-item label="状态" prop="isOnsale">
<el-select v-model="queryParams.isOnsale" placeholder="请选择状态" clearable @change="handleQuery">
<el-option label="售卖中" value="1"></el-option>
<el-option label="已下架" value="0"></el-option>
</el-select>
</el-form-item>
<el-form-item>
<!-- <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>-->
<!-- <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>-->
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
</el-col>
<el-col :span="1.5">
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-col>
<el-col :span="1.5">
<el-button
:loading="pullLoading"
@ -75,7 +89,7 @@
</template>
</el-table-column>
<el-table-column label="商品名" align="left" prop="goodsName" />
<el-table-column label="商家编码" align="center" prop="outerGoodsId" />
<el-table-column label="商家商品编码" align="center" prop="outerGoodsId" />
<el-table-column label="价格" align="center" prop="formattedPrice" />
<el-table-column label="SKU" align="center" >
<template slot-scope="scope">
@ -97,8 +111,8 @@
<el-table-column label="ERP商品ID" align="center" prop="erpGoodsId" />
<el-table-column label="状态" align="center" prop="isSkuOnsale" >
<template slot-scope="scope">
<el-tag size="small" v-if="scope.row.isSkuOnsale === 1">上架</el-tag>
<el-tag size="small" v-if="scope.row.isSkuOnsale === 0">已下架</el-tag>
<el-tag size="small" v-if="scope.row.isOnsale === 1">售卖</el-tag>
<el-tag size="small" v-if="scope.row.isOnsale === 0">已下架</el-tag>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
@ -123,30 +137,31 @@
/>
<el-dialog title="Sku List" :visible.sync="skuOpen" width="1200px" append-to-body>
<el-table v-loading="loading" :data="skuList">
<el-dialog title="商品SKU列表" :visible.sync="skuOpen" width="1200px" append-to-body>
<el-table v-loading="loading" :data="skuList" :row-class-name="rowIndex">
<!-- <el-table-column type="selection" width="55" align="center" /> -->
<el-table-column label="序号" align="center" prop="index" width="50"/>
<el-table-column label="平台SkuId" align="center" prop="skuId" width="160"/>
<el-table-column label="SKU编码" align="left" prop="outerId" />
<el-table-column label="平台SkuId" align="center" prop="skuId" />
<!-- <el-table-column label="图片" align="center" prop="colorImage" width="100">-->
<!-- <template slot-scope="scope">-->
<!-- <image-preview :src="scope.row.colorImage" :width="50" :height="50"/>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- <el-table-column label="商品名称" align="left" prop="goodsName" width="288px"/>-->
<el-table-column label="SKU名称" align="left" prop="skuName" width="300">
<el-table-column label="SKU名称" align="left" prop="spec" width="300">
<!-- <template slot-scope="scope">-->
<!-- {{getSkuProper(scope.row.propertiesName)}}-->
<!-- </template>-->
</el-table-column>
<el-table-column label="价格" align="center" prop="jdPrice" :formatter="amountFormatter"/>
<el-table-column label="库存" align="center" prop="stockNum" />
<el-table-column label="价格" align="center" prop="price" :formatter="amountFormatter"/>
<el-table-column label="库存" align="center" prop="skuQuantity" />
<el-table-column label="ERP SKU ID" align="center" prop="erpGoodsSkuId" />
<el-table-column label="状态" align="center" prop="status" >
<template slot-scope="scope">
<el-tag size="small" v-if="scope.row.status === 1">销售</el-tag>
<el-tag size="small" v-if="scope.row.status === 2">已下架</el-tag>
<el-tag size="small" v-if="scope.row.isSkuOnsale === 1">售卖</el-tag>
<el-tag size="small" v-if="scope.row.isSkuOnsale === 0">已下架</el-tag>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
@ -186,7 +201,7 @@ import {listGoods,pullGoodsList,getGoodsSku,linkErpGoodsSkuId,pushToOms} from "@
import {MessageBox} from "element-ui";
import {isRelogin} from "@/utils/request";
import { amountFormatter } from '@/utils/zhijian'
import {amountFormatter, rowIndex} from '@/utils/zhijian'
export default {
@ -219,7 +234,8 @@ export default {
queryParams: {
pageNum: 1,
pageSize: 10,
name: null
name: null,
isOnsale: null,
},
//
form: {},
@ -249,6 +265,7 @@ export default {
this.loading = false;
},
methods: {
rowIndex,
amountFormatter,
//
handleSelectionChange(selection) {

View File

@ -198,9 +198,9 @@
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="getTokenSubmit"> </el-button>
<el-button type="primary" @click="getTokenUrl" size="mini">去授权</el-button>
<el-button @click="cancel"> </el-button>
<el-button type="primary" @click="getTokenSubmit" size="mini"> </el-button>
<el-button @click="getTokenUrl" size="mini">去授权</el-button>
<el-button @click="cancel" size="mini"> </el-button>
</div>
<!-- <div slot="footer" class="dialog-footer">-->
<!-- 请手动复制上面的URL到浏览器中访问-->
@ -251,7 +251,8 @@ export default {
},
//
form: {
type:null
type:null,
accessToken:null,
},
// token
tokenForm:{

View File

@ -26,10 +26,11 @@
</template>
</el-table-column>
<el-table-column label="描述" align="center" prop="remark" />
<el-table-column label="排序" align="center" prop="sort" width="66" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
v-if="scope.row.id !== 500 && scope.row.id !== 999"
size="mini"
type="text"
icon="el-icon-edit"
@ -65,15 +66,18 @@
<el-form-item label="编码" prop="code">
<el-input v-model="form.code" disabled placeholder="请输入平台编码" />
</el-form-item>
<el-form-item label="AppKey" prop="appKey">
<el-form-item label="AppKey" prop="appKey" >
<el-input v-model="form.appKey" placeholder="请输入AppKey" />
</el-form-item>
<el-form-item label="AppSecret" prop="appSecret">
<el-form-item label="AppSecret" prop="appSecret" >
<el-input v-model="form.appSecret" placeholder="请输入AppSecret" />
</el-form-item>
<el-form-item label="回调URL" prop="redirectUri">
<el-input v-model="form.redirectUri" placeholder="请输入回调URL" />
</el-form-item>
<el-form-item label="排序" prop="sort">
<el-input-number v-model="form.sort" :min="1" :max="100" label="排序"></el-input-number>
</el-form-item>
<el-form-item label="接口请求URL" prop="serverUrl">
<el-input v-model="form.serverUrl" disabled placeholder="请输入接口请求URL" />
</el-form-item>
@ -154,8 +158,8 @@ export default {
rules: {
name: [{ required: true, message: "不能为空", trigger: "blur" }],
code: [{ required: true, message: "不能为空", trigger: "blur" }],
appKey: [{ required: true, message: "不能为空", trigger: "blur" }],
appSecret: [{ required: true, message: "不能为空", trigger: "blur" }],
// appKey: [{ required: true, message: "", trigger: "blur" }],
// appSecret: [{ required: true, message: "", trigger: "blur" }],
}
};
},