商品管理添加删除
This commit is contained in:
parent
71508d5050
commit
0546776bdf
|
@ -0,0 +1,20 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="dataSourceStorageLocal" created-in="IU-232.10227.8">
|
||||||
|
<data-source name="db_spzx@60.204.230.80" uuid="3eae447a-3ae1-4be3-aa70-1183cffb0765">
|
||||||
|
<database-info product="MySQL" version="8.0.28" jdbc-version="4.2" driver-name="MySQL Connector/J" driver-version="mysql-connector-java-8.0.25 (Revision: 08be9e9b4cba6aa115f9b27b215887af40b159e0)" dbms="MYSQL" exact-version="8.0.28" exact-driver-version="8.0">
|
||||||
|
<extra-name-characters>#@</extra-name-characters>
|
||||||
|
<identifier-quote-string>`</identifier-quote-string>
|
||||||
|
<jdbc-catalog-is-schema>true</jdbc-catalog-is-schema>
|
||||||
|
</database-info>
|
||||||
|
<case-sensitivity plain-identifiers="exact" quoted-identifiers="exact" />
|
||||||
|
<secret-storage>master_key</secret-storage>
|
||||||
|
<user-name>root</user-name>
|
||||||
|
<schema-mapping>
|
||||||
|
<introspection-scope>
|
||||||
|
<node kind="schema" qname="@" />
|
||||||
|
</introspection-scope>
|
||||||
|
</schema-mapping>
|
||||||
|
</data-source>
|
||||||
|
</component>
|
||||||
|
</project>
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,2 @@
|
||||||
|
#n:db_spzx
|
||||||
|
!<md> [1702742235000, 0, null, null, -2147483648, -2147483648]
|
|
@ -0,0 +1,2 @@
|
||||||
|
#n:information_schema
|
||||||
|
!<md> [null, 0, null, null, -2147483648, -2147483648]
|
|
@ -0,0 +1,2 @@
|
||||||
|
#n:mysql
|
||||||
|
!<md> [null, 0, null, null, -2147483648, -2147483648]
|
|
@ -0,0 +1,2 @@
|
||||||
|
#n:performance_schema
|
||||||
|
!<md> [null, 0, null, null, -2147483648, -2147483648]
|
|
@ -0,0 +1,2 @@
|
||||||
|
#n:sys
|
||||||
|
!<md> [null, 0, null, null, -2147483648, -2147483648]
|
|
@ -1,6 +1,9 @@
|
||||||
<component name="InspectionProjectProfileManager">
|
<component name="InspectionProjectProfileManager">
|
||||||
<profile version="1.0">
|
<profile version="1.0">
|
||||||
<option name="myName" value="Project Default" />
|
<option name="myName" value="Project Default" />
|
||||||
|
<inspection_tool class="AutoCloseableResource" enabled="true" level="WARNING" enabled_by_default="true">
|
||||||
|
<option name="METHOD_MATCHER_CONFIG" value="java.util.Formatter,format,java.io.Writer,append,com.google.common.base.Preconditions,checkNotNull,org.hibernate.Session,close,java.io.PrintWriter,printf,java.io.PrintStream,printf,com.github.pagehelper.page.PageMethod,startPage" />
|
||||||
|
</inspection_tool>
|
||||||
<inspection_tool class="RawUseOfParameterizedType" enabled="false" level="WARNING" enabled_by_default="false" />
|
<inspection_tool class="RawUseOfParameterizedType" enabled="false" level="WARNING" enabled_by_default="false" />
|
||||||
</profile>
|
</profile>
|
||||||
</component>
|
</component>
|
|
@ -0,0 +1,160 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="AutoImportSettings">
|
||||||
|
<option name="autoReloadType" value="SELECTIVE" />
|
||||||
|
</component>
|
||||||
|
<component name="ChangeListManager">
|
||||||
|
<list default="true" id="94fab532-0084-41f1-bb0f-d2d2811915a7" name="Changes" comment="商品管理查询分页">
|
||||||
|
<change afterPath="$PROJECT_DIR$/spzx-manager/src/main/java/cn/bunny/controller/ProductUntilController.java" afterDir="false" />
|
||||||
|
<change afterPath="$PROJECT_DIR$/spzx-manager/src/main/java/cn/bunny/mapper/ProductDetailMapper.java" afterDir="false" />
|
||||||
|
<change afterPath="$PROJECT_DIR$/spzx-manager/src/main/java/cn/bunny/mapper/ProductSkuMapper.java" afterDir="false" />
|
||||||
|
<change afterPath="$PROJECT_DIR$/spzx-manager/src/main/java/cn/bunny/mapper/ProductUntilMapper.java" afterDir="false" />
|
||||||
|
<change afterPath="$PROJECT_DIR$/spzx-manager/src/main/java/cn/bunny/service/ProductUntilService.java" afterDir="false" />
|
||||||
|
<change afterPath="$PROJECT_DIR$/spzx-manager/src/main/java/cn/bunny/service/impl/ProductUntilServiceImpl.java" afterDir="false" />
|
||||||
|
<change afterPath="$PROJECT_DIR$/spzx-manager/src/main/resources/mapper/product/ProductDetailMapper.xml" afterDir="false" />
|
||||||
|
<change afterPath="$PROJECT_DIR$/spzx-manager/src/main/resources/mapper/product/ProductSkuMapper.xml" afterDir="false" />
|
||||||
|
<change afterPath="$PROJECT_DIR$/spzx-manager/src/main/resources/mapper/product/ProductUntilMapper.xml" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/.idea/inspectionProfiles/Project_Default.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/inspectionProfiles/Project_Default.xml" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/spzx-manager/src/main/java/cn/bunny/controller/ProductController.java" beforeDir="false" afterPath="$PROJECT_DIR$/spzx-manager/src/main/java/cn/bunny/controller/ProductController.java" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/spzx-manager/src/main/java/cn/bunny/controller/ProductSpecController.java" beforeDir="false" afterPath="$PROJECT_DIR$/spzx-manager/src/main/java/cn/bunny/controller/ProductSpecController.java" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/spzx-manager/src/main/java/cn/bunny/mapper/ProductMapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/spzx-manager/src/main/java/cn/bunny/mapper/ProductMapper.java" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/spzx-manager/src/main/java/cn/bunny/mapper/ProductSpecMapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/spzx-manager/src/main/java/cn/bunny/mapper/ProductSpecMapper.java" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/spzx-manager/src/main/java/cn/bunny/service/ProductService.java" beforeDir="false" afterPath="$PROJECT_DIR$/spzx-manager/src/main/java/cn/bunny/service/ProductService.java" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/spzx-manager/src/main/java/cn/bunny/service/ProductSpecService.java" beforeDir="false" afterPath="$PROJECT_DIR$/spzx-manager/src/main/java/cn/bunny/service/ProductSpecService.java" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/spzx-manager/src/main/java/cn/bunny/service/impl/ProductServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/spzx-manager/src/main/java/cn/bunny/service/impl/ProductServiceImpl.java" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/spzx-manager/src/main/java/cn/bunny/service/impl/ProductSpecServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/spzx-manager/src/main/java/cn/bunny/service/impl/ProductSpecServiceImpl.java" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/spzx-manager/src/main/resources/mapper/product/ProductMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/spzx-manager/src/main/resources/mapper/product/ProductMapper.xml" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/spzx-manager/src/main/resources/mapper/product/ProductSpecMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/spzx-manager/src/main/resources/mapper/product/ProductSpecMapper.xml" afterDir="false" />
|
||||||
|
</list>
|
||||||
|
<option name="SHOW_DIALOG" value="false" />
|
||||||
|
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||||
|
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
||||||
|
<option name="LAST_RESOLUTION" value="IGNORE" />
|
||||||
|
</component>
|
||||||
|
<component name="FileTemplateManagerImpl">
|
||||||
|
<option name="RECENT_TEMPLATES">
|
||||||
|
<list>
|
||||||
|
<option value="Class" />
|
||||||
|
<option value="Interface" />
|
||||||
|
<option value="Mybatis" />
|
||||||
|
</list>
|
||||||
|
</option>
|
||||||
|
</component>
|
||||||
|
<component name="Git.Settings">
|
||||||
|
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
||||||
|
</component>
|
||||||
|
<component name="MavenImportPreferences">
|
||||||
|
<option name="generalSettings">
|
||||||
|
<MavenGeneralSettings>
|
||||||
|
<option name="localRepository" value="D:\software\Plugins\Maven\maven_reo" />
|
||||||
|
<option name="mavenHome" value="D:/software/Plugins/Maven" />
|
||||||
|
<option name="userSettingsFile" value="D:\software\Plugins\Maven\conf\settings.xml" />
|
||||||
|
</MavenGeneralSettings>
|
||||||
|
</option>
|
||||||
|
</component>
|
||||||
|
<component name="ProjectColorInfo">{
|
||||||
|
"customColor": "",
|
||||||
|
"associatedIndex": 5
|
||||||
|
}</component>
|
||||||
|
<component name="ProjectId" id="2Zc8hDNtVz2Z0OCxf9vAyM8Xxum" />
|
||||||
|
<component name="ProjectViewState">
|
||||||
|
<option name="hideEmptyMiddlePackages" value="true" />
|
||||||
|
<option name="showLibraryContents" value="true" />
|
||||||
|
</component>
|
||||||
|
<component name="PropertiesComponent"><![CDATA[{
|
||||||
|
"keyToString": {
|
||||||
|
"RequestMappingsPanelOrder0": "0",
|
||||||
|
"RequestMappingsPanelOrder1": "1",
|
||||||
|
"RequestMappingsPanelWidth0": "75",
|
||||||
|
"RequestMappingsPanelWidth1": "75",
|
||||||
|
"RunOnceActivity.OpenProjectViewOnStart": "true",
|
||||||
|
"RunOnceActivity.ShowReadmeOnStart": "true",
|
||||||
|
"WebServerToolWindowFactoryState": "false",
|
||||||
|
"git-widget-placeholder": "master",
|
||||||
|
"last_opened_file_path": "G:/File/Java/spzx-parent/spzx-manager/src/main/resources/mapper",
|
||||||
|
"node.js.detected.package.eslint": "true",
|
||||||
|
"node.js.detected.package.tslint": "true",
|
||||||
|
"node.js.selected.package.eslint": "(autodetect)",
|
||||||
|
"node.js.selected.package.tslint": "(autodetect)",
|
||||||
|
"project.structure.last.edited": "Modules",
|
||||||
|
"project.structure.proportion": "0.0",
|
||||||
|
"project.structure.side.proportion": "0.0",
|
||||||
|
"settings.editor.selected.configurable": "reference.projectsettings.compiler.javacompiler",
|
||||||
|
"vue.rearranger.settings.migration": "true"
|
||||||
|
},
|
||||||
|
"keyToStringList": {
|
||||||
|
"DatabaseDriversLRU": [
|
||||||
|
"mysql"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}]]></component>
|
||||||
|
<component name="RecentsManager">
|
||||||
|
<key name="CopyFile.RECENT_KEYS">
|
||||||
|
<recent name="G:\File\Java\spzx-parent\spzx-manager\src\main\resources\mapper" />
|
||||||
|
</key>
|
||||||
|
</component>
|
||||||
|
<component name="RunManager">
|
||||||
|
<configuration name="MangerApplication" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot" temporary="true" nameIsGenerated="true">
|
||||||
|
<module name="spzx-manager" />
|
||||||
|
<option name="SPRING_BOOT_MAIN_CLASS" value="cn.bunny.MangerApplication" />
|
||||||
|
<extension name="coverage">
|
||||||
|
<pattern>
|
||||||
|
<option name="PATTERN" value="cn.bunny.*" />
|
||||||
|
<option name="ENABLED" value="true" />
|
||||||
|
</pattern>
|
||||||
|
</extension>
|
||||||
|
<method v="2">
|
||||||
|
<option name="Make" enabled="true" />
|
||||||
|
</method>
|
||||||
|
</configuration>
|
||||||
|
<recent_temporary>
|
||||||
|
<list>
|
||||||
|
<item itemvalue="Spring Boot.MangerApplication" />
|
||||||
|
</list>
|
||||||
|
</recent_temporary>
|
||||||
|
</component>
|
||||||
|
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
|
||||||
|
<component name="TaskManager">
|
||||||
|
<task active="true" id="Default" summary="Default task">
|
||||||
|
<changelist id="94fab532-0084-41f1-bb0f-d2d2811915a7" name="Changes" comment="" />
|
||||||
|
<created>1702710124940</created>
|
||||||
|
<option name="number" value="Default" />
|
||||||
|
<option name="presentableId" value="Default" />
|
||||||
|
<updated>1702710124940</updated>
|
||||||
|
<workItem from="1702710126987" duration="661000" />
|
||||||
|
<workItem from="1702713203759" duration="7512000" />
|
||||||
|
</task>
|
||||||
|
<task id="LOCAL-00001" summary="商品管理查询分页">
|
||||||
|
<option name="closed" value="true" />
|
||||||
|
<created>1702714985398</created>
|
||||||
|
<option name="number" value="00001" />
|
||||||
|
<option name="presentableId" value="LOCAL-00001" />
|
||||||
|
<option name="project" value="LOCAL" />
|
||||||
|
<updated>1702714985398</updated>
|
||||||
|
</task>
|
||||||
|
<option name="localTasksCounter" value="2" />
|
||||||
|
<servers />
|
||||||
|
</component>
|
||||||
|
<component name="TypeScriptGeneratedFilesManager">
|
||||||
|
<option name="version" value="3" />
|
||||||
|
</component>
|
||||||
|
<component name="VcsManagerConfiguration">
|
||||||
|
<MESSAGE value="商品管理查询分页" />
|
||||||
|
<option name="LAST_COMMIT_MESSAGE" value="商品管理查询分页" />
|
||||||
|
</component>
|
||||||
|
<component name="XDebuggerManager">
|
||||||
|
<breakpoint-manager>
|
||||||
|
<breakpoints>
|
||||||
|
<line-breakpoint enabled="true" type="java-method">
|
||||||
|
<url>file://$PROJECT_DIR$/spzx-manager/src/main/java/cn/bunny/mapper/ProductSpecMapper.java</url>
|
||||||
|
<line>22</line>
|
||||||
|
<properties class="cn.bunny.mapper.ProductSpecMapper" method="findAll">
|
||||||
|
<option name="EMULATED" value="true" />
|
||||||
|
<option name="WATCH_EXIT" value="false" />
|
||||||
|
</properties>
|
||||||
|
<option name="timeStamp" value="1" />
|
||||||
|
</line-breakpoint>
|
||||||
|
</breakpoints>
|
||||||
|
</breakpoint-manager>
|
||||||
|
</component>
|
||||||
|
</project>
|
|
@ -9,10 +9,7 @@ import com.github.pagehelper.PageInfo;
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.bind.annotation.PathVariable;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
@ -23,6 +20,28 @@ public class ProductController {
|
||||||
@Autowired
|
@Autowired
|
||||||
private ProductService productService;
|
private ProductService productService;
|
||||||
|
|
||||||
|
@Operation(summary = "保存修改数据",description = "保存修改数据")
|
||||||
|
@PostMapping("updateById")
|
||||||
|
public Result updateById(@RequestBody Product product) {
|
||||||
|
productService.updateById(product);
|
||||||
|
return Result.build(null, ResultCodeEnum.SUCCESS);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Operation(summary = "根据id查询商品信息",description = "根据id查询商品信息")
|
||||||
|
@GetMapping("getById/{id}")
|
||||||
|
public Result getById(@PathVariable("id") Long id) {
|
||||||
|
Product product = productService.getById(id);
|
||||||
|
return Result.build(product, ResultCodeEnum.SUCCESS);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Operation(summary = "保存商品数据接口",description = "保存商品数据接口")
|
||||||
|
@PostMapping("save")
|
||||||
|
public Result save(@RequestBody Product product) {
|
||||||
|
productService.save(product);
|
||||||
|
return Result.build(null, ResultCodeEnum.SUCCESS);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Operation(summary = "商品管理查询分页", description = "商品管理查询分页")
|
@Operation(summary = "商品管理查询分页", description = "商品管理查询分页")
|
||||||
@GetMapping("/{page}/{limit}")
|
@GetMapping("/{page}/{limit}")
|
||||||
public Result findByPage(@PathVariable("page") Integer page,
|
public Result findByPage(@PathVariable("page") Integer page,
|
||||||
|
|
|
@ -10,6 +10,8 @@ import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@Tag(name = "商品规格列表接口")
|
@Tag(name = "商品规格列表接口")
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/admin/product/productSpec")
|
@RequestMapping("/admin/product/productSpec")
|
||||||
|
@ -17,6 +19,13 @@ public class ProductSpecController {
|
||||||
@Autowired
|
@Autowired
|
||||||
private ProductSpecService productSpecService;
|
private ProductSpecService productSpecService;
|
||||||
|
|
||||||
|
@Operation(summary = "加载商品单元数据",description = "加载商品单元数据")
|
||||||
|
@GetMapping("findAll")
|
||||||
|
public Result findAll() {
|
||||||
|
List<ProductSpec> productSpecList= productSpecService.findAll();
|
||||||
|
return Result.build(productSpecList, ResultCodeEnum.SUCCESS);
|
||||||
|
}
|
||||||
|
|
||||||
@Operation(summary = "分页查询商品规格列表", description = "分页查询商品规格列表")
|
@Operation(summary = "分页查询商品规格列表", description = "分页查询商品规格列表")
|
||||||
@GetMapping("{page}/{limit}")
|
@GetMapping("{page}/{limit}")
|
||||||
public Result lis(@PathVariable("page") Integer page, @PathVariable("limit") Integer limit) {
|
public Result lis(@PathVariable("page") Integer page, @PathVariable("limit") Integer limit) {
|
||||||
|
|
|
@ -0,0 +1,30 @@
|
||||||
|
package cn.bunny.controller;
|
||||||
|
|
||||||
|
|
||||||
|
import cn.bunny.common.spzx.model.entity.base.ProductUnit;
|
||||||
|
import cn.bunny.common.spzx.model.vo.common.Result;
|
||||||
|
import cn.bunny.common.spzx.model.vo.common.ResultCodeEnum;
|
||||||
|
import cn.bunny.service.ProductUntilService;
|
||||||
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Tag(name = "商品管理添加功能")
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/admin/product/productUnit")
|
||||||
|
public class ProductUntilController {
|
||||||
|
@Autowired
|
||||||
|
private ProductUntilService productUntilService;
|
||||||
|
|
||||||
|
@Operation(summary = "加载商品单元数据", description = "加载商品单元数据")
|
||||||
|
@GetMapping("findAll")
|
||||||
|
public Result findAll() {
|
||||||
|
List<ProductUnit> productUnitList= productUntilService.findAll();
|
||||||
|
return Result.build(productUnitList, ResultCodeEnum.SUCCESS);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,15 @@
|
||||||
|
package cn.bunny.mapper;
|
||||||
|
|
||||||
|
import cn.bunny.common.spzx.model.entity.product.ProductDetails;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
|
@Mapper
|
||||||
|
public interface ProductDetailMapper {
|
||||||
|
void save(ProductDetails productDetails);
|
||||||
|
|
||||||
|
// 根据id查询商品信息
|
||||||
|
ProductDetails findProductDetailsById(Long id);
|
||||||
|
|
||||||
|
// 修改product_details表
|
||||||
|
void updateById(ProductDetails productDetails);
|
||||||
|
}
|
|
@ -10,4 +10,13 @@ import java.util.List;
|
||||||
public interface ProductMapper {
|
public interface ProductMapper {
|
||||||
// 查询分页
|
// 查询分页
|
||||||
public List<Product> findByPage(ProductDto productDto);
|
public List<Product> findByPage(ProductDto productDto);
|
||||||
|
|
||||||
|
// 保存商品数据接口
|
||||||
|
void save(Product product);
|
||||||
|
|
||||||
|
// 1. 根据id查询商品基本信息
|
||||||
|
Product findProductById(Long id);
|
||||||
|
|
||||||
|
// 修改product表
|
||||||
|
void updateProduct(Product product);
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
package cn.bunny.mapper;
|
||||||
|
|
||||||
|
import cn.bunny.common.spzx.model.entity.product.ProductSku;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Mapper
|
||||||
|
public interface ProductSkuMapper {
|
||||||
|
void save(ProductSku productSku);
|
||||||
|
|
||||||
|
// 根据id查询商品信息
|
||||||
|
List<ProductSku> findProductSkuByProductId(Long id);
|
||||||
|
|
||||||
|
// 修改product_sku表
|
||||||
|
void updateById(ProductSku productSku);
|
||||||
|
}
|
|
@ -18,4 +18,7 @@ public interface ProductSpecMapper {
|
||||||
|
|
||||||
// 商品规格删除
|
// 商品规格删除
|
||||||
void deleteById(Integer id);
|
void deleteById(Integer id);
|
||||||
|
|
||||||
|
// 加载商品单元数据
|
||||||
|
List<ProductSpec> findAll();
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,12 @@
|
||||||
|
package cn.bunny.mapper;
|
||||||
|
|
||||||
|
import cn.bunny.common.spzx.model.entity.base.ProductUnit;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Mapper
|
||||||
|
public interface ProductUntilMapper {
|
||||||
|
// 加载商品单元数据
|
||||||
|
List<ProductUnit> findAll();
|
||||||
|
}
|
|
@ -9,4 +9,13 @@ import java.util.List;
|
||||||
public interface ProductService {
|
public interface ProductService {
|
||||||
// 查询分页
|
// 查询分页
|
||||||
PageInfo<Product> findByPage(Integer page, Integer limit, ProductDto productDto);
|
PageInfo<Product> findByPage(Integer page, Integer limit, ProductDto productDto);
|
||||||
|
|
||||||
|
// 保存商品数据接口
|
||||||
|
void save(Product product);
|
||||||
|
|
||||||
|
// 根据id查询商品信息
|
||||||
|
Product getById(Long id);
|
||||||
|
|
||||||
|
// 保存修改数据
|
||||||
|
void updateById(Product product);
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,8 @@ package cn.bunny.service;
|
||||||
import cn.bunny.common.spzx.model.entity.product.ProductSpec;
|
import cn.bunny.common.spzx.model.entity.product.ProductSpec;
|
||||||
import com.github.pagehelper.PageInfo;
|
import com.github.pagehelper.PageInfo;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public interface ProductSpecService {
|
public interface ProductSpecService {
|
||||||
// 分页查询商品规格列表
|
// 分页查询商品规格列表
|
||||||
PageInfo<ProductSpec> findByPage(Integer page, Integer limit);
|
PageInfo<ProductSpec> findByPage(Integer page, Integer limit);
|
||||||
|
@ -15,4 +17,7 @@ public interface ProductSpecService {
|
||||||
|
|
||||||
// 商品规格删除
|
// 商品规格删除
|
||||||
void deleteById(Integer id);
|
void deleteById(Integer id);
|
||||||
|
|
||||||
|
// 加载商品单元数据
|
||||||
|
List<ProductSpec> findAll();
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
package cn.bunny.service;
|
||||||
|
|
||||||
|
import cn.bunny.common.spzx.model.entity.base.ProductUnit;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public interface ProductUntilService {
|
||||||
|
// 加载商品单元数据
|
||||||
|
List<ProductUnit> findAll();
|
||||||
|
}
|
|
@ -2,7 +2,11 @@ package cn.bunny.service.impl;
|
||||||
|
|
||||||
import cn.bunny.common.spzx.model.dto.product.ProductDto;
|
import cn.bunny.common.spzx.model.dto.product.ProductDto;
|
||||||
import cn.bunny.common.spzx.model.entity.product.Product;
|
import cn.bunny.common.spzx.model.entity.product.Product;
|
||||||
|
import cn.bunny.common.spzx.model.entity.product.ProductDetails;
|
||||||
|
import cn.bunny.common.spzx.model.entity.product.ProductSku;
|
||||||
|
import cn.bunny.mapper.ProductDetailMapper;
|
||||||
import cn.bunny.mapper.ProductMapper;
|
import cn.bunny.mapper.ProductMapper;
|
||||||
|
import cn.bunny.mapper.ProductSkuMapper;
|
||||||
import cn.bunny.service.ProductService;
|
import cn.bunny.service.ProductService;
|
||||||
import com.github.pagehelper.PageHelper;
|
import com.github.pagehelper.PageHelper;
|
||||||
import com.github.pagehelper.PageInfo;
|
import com.github.pagehelper.PageInfo;
|
||||||
|
@ -16,6 +20,12 @@ public class ProductServiceImpl implements ProductService {
|
||||||
@Autowired
|
@Autowired
|
||||||
private ProductMapper productMapper;
|
private ProductMapper productMapper;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ProductSkuMapper productSkuMapper;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ProductDetailMapper productDetailMapper;
|
||||||
|
|
||||||
// 查询分页
|
// 查询分页
|
||||||
@Override
|
@Override
|
||||||
public PageInfo<Product> findByPage(Integer page, Integer limit, ProductDto productDto) {
|
public PageInfo<Product> findByPage(Integer page, Integer limit, ProductDto productDto) {
|
||||||
|
@ -23,4 +33,66 @@ public class ProductServiceImpl implements ProductService {
|
||||||
List<Product> productList = productMapper.findByPage(productDto);
|
List<Product> productList = productMapper.findByPage(productDto);
|
||||||
return new PageInfo<>(productList);
|
return new PageInfo<>(productList);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 保存商品数据接口
|
||||||
|
@Override
|
||||||
|
public void save(Product product) {
|
||||||
|
product.setStatus(0);
|
||||||
|
product.setAuditStatus(0);
|
||||||
|
productMapper.save(product);
|
||||||
|
|
||||||
|
List<ProductSku> productSkuList = product.getProductSkuList();
|
||||||
|
for (int i = 0; i < productSkuList.size(); i++) {
|
||||||
|
ProductSku productSku = productSkuList.get(i);
|
||||||
|
// 商品编号
|
||||||
|
productSku.setSkuCode(product.getId() + "_" + i);
|
||||||
|
// 商品Id
|
||||||
|
productSku.setProductId(product.getId());
|
||||||
|
// skuName
|
||||||
|
productSku.setSkuName(product.getName() + productSku.getSkuSpec());
|
||||||
|
productSkuMapper.save(productSku);
|
||||||
|
}
|
||||||
|
|
||||||
|
ProductDetails productDetails = new ProductDetails();
|
||||||
|
productDetails.setProductId(product.getId());
|
||||||
|
productDetails.setImageUrls(product.getDetailsImageUrls());
|
||||||
|
productDetailMapper.save(productDetails);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 根据id查询商品信息
|
||||||
|
@Override
|
||||||
|
public Product getById(Long id) {
|
||||||
|
// 1. 根据id查询商品基本信息
|
||||||
|
Product product = productMapper.findProductById(id);
|
||||||
|
|
||||||
|
// 2. 根据id查询商品sku信息列表 product——sku
|
||||||
|
List<ProductSku> productSkuList = productSkuMapper.findProductSkuByProductId(id);
|
||||||
|
product.setProductSkuList(productSkuList);
|
||||||
|
|
||||||
|
// 3. 根据id查询商品详情信息 product——details
|
||||||
|
ProductDetails productDetails = productDetailMapper.findProductDetailsById(id);
|
||||||
|
String imageUrls = productDetails.getImageUrls();
|
||||||
|
product.setDetailsImageUrls(imageUrls);
|
||||||
|
|
||||||
|
return product;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 保存修改数据
|
||||||
|
@Override
|
||||||
|
public void updateById(Product product) {
|
||||||
|
// 修改product表
|
||||||
|
productMapper.updateProduct(product);
|
||||||
|
|
||||||
|
// 修改product_sku表
|
||||||
|
List<ProductSku> productSkuList = product.getProductSkuList();
|
||||||
|
for (ProductSku productSku : productSkuList) {
|
||||||
|
productSkuMapper.updateById(productSku);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改product_details表
|
||||||
|
String detailsImageUrls = product.getDetailsImageUrls();
|
||||||
|
ProductDetails productDetails= productDetailMapper.findProductDetailsById(product.getId());
|
||||||
|
productDetails.setImageUrls(detailsImageUrls);
|
||||||
|
productDetailMapper.updateById(productDetails);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,4 +40,10 @@ public class ProductSpecServiceImpl implements ProductSpecService {
|
||||||
public void deleteById(Integer id) {
|
public void deleteById(Integer id) {
|
||||||
productSpecMapper.deleteById(id);
|
productSpecMapper.deleteById(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 加载商品单元数据
|
||||||
|
@Override
|
||||||
|
public List<ProductSpec> findAll() {
|
||||||
|
return productSpecMapper.findAll();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,22 @@
|
||||||
|
package cn.bunny.service.impl;
|
||||||
|
|
||||||
|
import cn.bunny.common.spzx.model.entity.base.ProductUnit;
|
||||||
|
import cn.bunny.mapper.ProductUntilMapper;
|
||||||
|
import cn.bunny.service.ProductUntilService;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class ProductUntilServiceImpl implements ProductUntilService {
|
||||||
|
@Autowired
|
||||||
|
private ProductUntilMapper productUnitMapper;
|
||||||
|
|
||||||
|
// 加载商品单元数据
|
||||||
|
@Override
|
||||||
|
public List<ProductUnit> findAll() {
|
||||||
|
return productUnitMapper.findAll();
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,44 @@
|
||||||
|
<?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="cn.bunny.mapper.ProductDetailMapper">
|
||||||
|
<!-- 用于select查询公用抽取的列 -->
|
||||||
|
<sql id="columns">
|
||||||
|
id,product_id,image_urls,create_time,update_time,is_deleted
|
||||||
|
</sql>
|
||||||
|
|
||||||
|
<insert id="save" useGeneratedKeys="true" keyProperty="id">
|
||||||
|
insert into product_details (id,
|
||||||
|
product_id,
|
||||||
|
image_urls,
|
||||||
|
create_time, update_time, is_deleted)
|
||||||
|
values (#{id},
|
||||||
|
#{productId},
|
||||||
|
#{imageUrls},
|
||||||
|
now(),
|
||||||
|
now(),
|
||||||
|
0)
|
||||||
|
</insert>
|
||||||
|
|
||||||
|
<!-- 修改product_details表 -->
|
||||||
|
<update id="updateById">
|
||||||
|
update product_details set
|
||||||
|
<if test="productId != null and productId != ''">
|
||||||
|
product_id = #{productId},
|
||||||
|
</if>
|
||||||
|
<if test="imageUrls != null and imageUrls != ''">
|
||||||
|
image_urls = #{imageUrls},
|
||||||
|
</if>
|
||||||
|
update_time = now()
|
||||||
|
where
|
||||||
|
id = #{id}
|
||||||
|
</update>
|
||||||
|
|
||||||
|
<!-- 根据id查询商品信息 -->
|
||||||
|
<select id="findProductDetailsById" resultType="cn.bunny.common.spzx.model.entity.product.ProductDetails">
|
||||||
|
select
|
||||||
|
<include refid="columns"/>
|
||||||
|
from product_details
|
||||||
|
where
|
||||||
|
product_id = #{productId} and is_deleted=0
|
||||||
|
</select>
|
||||||
|
</mapper>
|
|
@ -27,11 +27,61 @@
|
||||||
</where>
|
</where>
|
||||||
</sql>
|
</sql>
|
||||||
|
|
||||||
|
<!-- 保存商品数据接口 -->
|
||||||
|
<insert id="save" useGeneratedKeys="true" keyProperty="id">
|
||||||
|
insert into product (id, name, brand_id, category1_id, category2_id, category3_id, unit_name, slider_urls,
|
||||||
|
spec_value, status, audit_status, audit_message, create_time, update_time, is_deleted)
|
||||||
|
values (#{id}, #{name}, #{brandId}, #{category1Id}, #{category2Id}, #{category3Id}, #{unitName}, #{sliderUrls},
|
||||||
|
#{specValue}, #{status}, #{auditStatus}, #{auditMessage}, now(), now(), 0)
|
||||||
|
</insert>
|
||||||
|
|
||||||
|
<!-- 修改product表 -->
|
||||||
|
<update id="updateProduct">
|
||||||
|
update product set
|
||||||
|
<if test="name != null and name != ''">
|
||||||
|
name = #{name},
|
||||||
|
</if>
|
||||||
|
<if test="brandId != null and brandId != ''">
|
||||||
|
brand_id = #{brandId},
|
||||||
|
</if>
|
||||||
|
<if test="category1Id != null and category1Id != ''">
|
||||||
|
category1_id = #{category1Id},
|
||||||
|
</if>
|
||||||
|
<if test="category2Id != null and category2Id != ''">
|
||||||
|
category2_id = #{category2Id},
|
||||||
|
</if>
|
||||||
|
<if test="category3Id != null and category3Id != ''">
|
||||||
|
category3_id = #{category3Id},
|
||||||
|
</if>
|
||||||
|
<if test="unitName != null and unitName != ''">
|
||||||
|
unit_name = #{unitName},
|
||||||
|
</if>
|
||||||
|
<if test="sliderUrls != null and sliderUrls != ''">
|
||||||
|
slider_urls = #{sliderUrls},
|
||||||
|
</if>
|
||||||
|
<if test="specValue != null and specValue != ''">
|
||||||
|
spec_value = #{specValue},
|
||||||
|
</if>
|
||||||
|
<if test="status != null and status != ''">
|
||||||
|
status = #{status},
|
||||||
|
</if>
|
||||||
|
<if test="auditStatus != null and auditStatus != ''">
|
||||||
|
audit_status = #{auditStatus},
|
||||||
|
</if>
|
||||||
|
<if test="auditMessage != null and auditMessage != ''">
|
||||||
|
audit_message = #{auditMessage},
|
||||||
|
</if>
|
||||||
|
update_time = now()
|
||||||
|
where
|
||||||
|
id = #{id}
|
||||||
|
</update>
|
||||||
|
|
||||||
<!-- 查询分页 -->
|
<!-- 查询分页 -->
|
||||||
<select id="findByPage" resultType="cn.bunny.common.spzx.model.entity.product.Product">
|
<select id="findByPage" resultType="cn.bunny.common.spzx.model.entity.product.Product">
|
||||||
select
|
select
|
||||||
p.id, p.name , p.brand_id , p.category1_id , p.category2_id , p.category3_id, p.unit_name,
|
p.id, p.name , p.brand_id , p.category1_id , p.category2_id , p.category3_id, p.unit_name,
|
||||||
p.slider_urls , p.spec_value , p.status , p.audit_status , p.audit_message , p.create_time , p.update_time , p.is_deleted ,
|
p.slider_urls , p.spec_value , p.status , p.audit_status , p.audit_message , p.create_time , p.update_time ,
|
||||||
|
p.is_deleted ,
|
||||||
b.name brandName , c1.name category1Name , c2.name category2Name , c3.name category3Name
|
b.name brandName , c1.name category1Name , c2.name category2Name , c3.name category3Name
|
||||||
from product p
|
from product p
|
||||||
LEFT JOIN brand b on b.id = p.brand_id
|
LEFT JOIN brand b on b.id = p.brand_id
|
||||||
|
@ -41,4 +91,33 @@
|
||||||
<include refid="findPageWhere"/>
|
<include refid="findPageWhere"/>
|
||||||
order by id desc
|
order by id desc
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<!-- 1. 根据id查询商品基本信息 -->
|
||||||
|
<select id="findProductById" resultType="cn.bunny.common.spzx.model.entity.product.Product">
|
||||||
|
select p.id,
|
||||||
|
p.name,
|
||||||
|
p.brand_id,
|
||||||
|
p.category1_id,
|
||||||
|
p.category2_id,
|
||||||
|
p.category3_id,
|
||||||
|
p.unit_name,
|
||||||
|
p.slider_urls,
|
||||||
|
p.spec_value,
|
||||||
|
p.status,
|
||||||
|
p.audit_status,
|
||||||
|
p.audit_message,
|
||||||
|
p.create_time,
|
||||||
|
p.update_time,
|
||||||
|
p.is_deleted,
|
||||||
|
b.name brandName,
|
||||||
|
c1.name category1Name,
|
||||||
|
c2.name category2Name,
|
||||||
|
c3.name category3Name
|
||||||
|
from product p
|
||||||
|
LEFT JOIN brand b on b.id = p.brand_id
|
||||||
|
LEFT JOIN category c1 on c1.id = p.category1_id
|
||||||
|
LEFT JOIN category c2 on c2.id = p.category2_id
|
||||||
|
LEFT JOIN category c3 on c3.id = p.category3_id
|
||||||
|
where p.id = #{id}
|
||||||
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|
|
@ -0,0 +1,99 @@
|
||||||
|
<?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="cn.bunny.mapper.ProductSkuMapper">
|
||||||
|
|
||||||
|
<!-- 用于select查询公用抽取的列 -->
|
||||||
|
<sql id="columns">
|
||||||
|
id,sku_code,sku_name,product_id,thumb_img,sale_price,market_price,cost_price,stock_num,sku_spec,weight,volume,status,create_time,update_time,is_deleted
|
||||||
|
</sql>
|
||||||
|
|
||||||
|
<insert id="save" useGeneratedKeys="true" keyProperty="id">
|
||||||
|
insert into product_sku (id,
|
||||||
|
sku_code,
|
||||||
|
sku_name,
|
||||||
|
product_id,
|
||||||
|
thumb_img,
|
||||||
|
sale_price,
|
||||||
|
market_price,
|
||||||
|
cost_price,
|
||||||
|
stock_num,
|
||||||
|
sku_spec,
|
||||||
|
weight,
|
||||||
|
volume,
|
||||||
|
status,
|
||||||
|
sale_num,
|
||||||
|
create_time,
|
||||||
|
update_time,
|
||||||
|
is_deleted)
|
||||||
|
values (#{id},
|
||||||
|
#{skuCode},
|
||||||
|
#{skuName},
|
||||||
|
#{productId},
|
||||||
|
#{thumbImg},
|
||||||
|
#{salePrice},
|
||||||
|
#{marketPrice},
|
||||||
|
#{costPrice},
|
||||||
|
#{stockNum},
|
||||||
|
#{skuSpec},
|
||||||
|
#{weight},
|
||||||
|
#{volume},
|
||||||
|
#{status},
|
||||||
|
#{saleNum},
|
||||||
|
now(),
|
||||||
|
now(),
|
||||||
|
0)
|
||||||
|
</insert>
|
||||||
|
|
||||||
|
<!-- 修改product_sku表 -->
|
||||||
|
<update id="updateById">
|
||||||
|
update product_sku set
|
||||||
|
<if test="skuCode != null and skuCode != ''">
|
||||||
|
sku_code = #{skuCode},
|
||||||
|
</if>
|
||||||
|
<if test="skuName != null and skuName != ''">
|
||||||
|
sku_name = #{skuName},
|
||||||
|
</if>
|
||||||
|
<if test="productId != null and productId != ''">
|
||||||
|
product_id = #{productId},
|
||||||
|
</if>
|
||||||
|
<if test="thumbImg != null and thumbImg != ''">
|
||||||
|
thumb_img = #{thumbImg},
|
||||||
|
</if>
|
||||||
|
<if test="salePrice != null and salePrice != ''">
|
||||||
|
sale_price = #{salePrice},
|
||||||
|
</if>
|
||||||
|
<if test="marketPrice != null and marketPrice != ''">
|
||||||
|
market_price = #{marketPrice},
|
||||||
|
</if>
|
||||||
|
<if test="costPrice != null and costPrice != ''">
|
||||||
|
cost_price = #{costPrice},
|
||||||
|
</if>
|
||||||
|
<if test="stockNum != null and stockNum != ''">
|
||||||
|
stock_num = #{stockNum},
|
||||||
|
</if>
|
||||||
|
<if test="skuSpec != null and skuSpec != ''">
|
||||||
|
sku_spec = #{skuSpec},
|
||||||
|
</if>
|
||||||
|
<if test="weight != null and weight != ''">
|
||||||
|
weight = #{weight},
|
||||||
|
</if>
|
||||||
|
<if test="volume != null and volume != ''">
|
||||||
|
volume = #{volume},
|
||||||
|
</if>
|
||||||
|
<if test="status != null and status != ''">
|
||||||
|
status = #{status},
|
||||||
|
</if>
|
||||||
|
update_time = now()
|
||||||
|
where
|
||||||
|
id = #{id}
|
||||||
|
</update>
|
||||||
|
|
||||||
|
<!-- 根据id查询商品信息 -->
|
||||||
|
<select id="findProductSkuByProductId" resultType="cn.bunny.common.spzx.model.entity.product.ProductSku">
|
||||||
|
select <include refid="columns" />
|
||||||
|
from product_sku
|
||||||
|
where product_id = #{productId}
|
||||||
|
and is_deleted = 0
|
||||||
|
order by id desc
|
||||||
|
</select>
|
||||||
|
</mapper>
|
|
@ -44,4 +44,10 @@
|
||||||
where is_deleted = 0
|
where is_deleted = 0
|
||||||
order by id desc
|
order by id desc
|
||||||
</select>
|
</select>
|
||||||
</mapper>
|
|
||||||
|
<!-- 加载商品单元数据 -->
|
||||||
|
<select id="findAll" resultType="cn.bunny.common.spzx.model.entity.product.ProductSpec">
|
||||||
|
select
|
||||||
|
<include refid="columns"/>
|
||||||
|
from product_spec where is_deleted = 0 order by id
|
||||||
|
</select></mapper>
|
|
@ -0,0 +1,17 @@
|
||||||
|
<?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="cn.bunny.mapper.ProductUntilMapper">
|
||||||
|
<resultMap id="productUnitMap" type="cn.bunny.common.spzx.model.entity.base.ProductUnit" autoMapping="true"/>
|
||||||
|
|
||||||
|
<sql id="columns">
|
||||||
|
id,name,create_time,update_time,is_deleted
|
||||||
|
</sql>
|
||||||
|
|
||||||
|
<!-- 加载商品单元数据 -->
|
||||||
|
<select id="findAll" resultType="cn.bunny.common.spzx.model.entity.base.ProductUnit">
|
||||||
|
select <include refid="columns" />
|
||||||
|
from product_unit
|
||||||
|
where is_deleted = 0
|
||||||
|
order by id
|
||||||
|
</select>
|
||||||
|
</mapper>
|
Loading…
Reference in New Issue