From cbd2cd2f5430759606f05cf82426e964d8c06ac5 Mon Sep 17 00:00:00 2001 From: clunt Date: Mon, 14 Mar 2022 13:55:40 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=95=86=E5=93=81=E6=A8=A1?= =?UTF-8?q?=E5=9D=97=E6=89=80=E6=9C=89=E5=8F=AF=E8=83=BD=E7=94=A8=E5=88=B0?= =?UTF-8?q?=E7=9A=84=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ghy-admin/pom.xml | 6 + .../web/controller/goods/GoodsController.java | 156 ++++++++++++++++++ .../ghy/common/constant/UserConstants.java | 8 + .../com/ghy/goods/mapper/GoodsMapper.java | 19 +++ .../com/ghy/goods/service/GoodsService.java | 58 +++++++ .../goods/service/impl/GoodsServiceImpl.java | 87 ++++++++++ .../resources/mapper.goods/GoodsMapper.xml | 17 ++ pom.xml | 8 + 8 files changed, 359 insertions(+) create mode 100644 ghy-admin/src/main/java/com/ghy/web/controller/goods/GoodsController.java create mode 100644 ghy-goods/src/main/java/com/ghy/goods/service/GoodsService.java create mode 100644 ghy-goods/src/main/java/com/ghy/goods/service/impl/GoodsServiceImpl.java diff --git a/ghy-admin/pom.xml b/ghy-admin/pom.xml index da4213f0..e8fa3c1f 100644 --- a/ghy-admin/pom.xml +++ b/ghy-admin/pom.xml @@ -67,6 +67,12 @@ ghy-generator + + + com.ghy + ghy-goods + + diff --git a/ghy-admin/src/main/java/com/ghy/web/controller/goods/GoodsController.java b/ghy-admin/src/main/java/com/ghy/web/controller/goods/GoodsController.java new file mode 100644 index 00000000..af9153c6 --- /dev/null +++ b/ghy-admin/src/main/java/com/ghy/web/controller/goods/GoodsController.java @@ -0,0 +1,156 @@ +package com.ghy.web.controller.goods; + +import com.ghy.common.annotation.Log; +import com.ghy.common.constant.UserConstants; +import com.ghy.common.core.controller.BaseController; +import com.ghy.common.core.domain.AjaxResult; +import com.ghy.common.core.page.TableDataInfo; +import com.ghy.common.enums.BusinessType; +import com.ghy.common.utils.poi.ExcelUtil; +import com.ghy.goods.domain.Goods; +import com.ghy.goods.service.GoodsService; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@Controller +@RequestMapping("/goods/goods") +public class GoodsController extends BaseController { + + private String prefix = "goods/goods"; + + @Autowired + private GoodsService goodsService; + + @RequiresPermissions("goods:goods:view") + @GetMapping() + public String operlog() + { + return prefix + "/goods"; + } + + @RequiresPermissions("goods:goods:list") + @PostMapping("/list") + @ResponseBody + public TableDataInfo list(Goods goods) + { + startPage(); + List list = goodsService.selectGoodsList(goods); + return getDataTable(list); + } + + @Log(title = "商品管理", businessType = BusinessType.EXPORT) + @RequiresPermissions("goods:goods:export") + @PostMapping("/export") + @ResponseBody + public AjaxResult export(Goods goods) + { + List list = goodsService.selectGoodsList(goods); + ExcelUtil util = new ExcelUtil(Goods.class); + return util.exportExcel(list, "商品数据"); + } + + @RequiresPermissions("goods:goods:remove") + @Log(title = "商品管理", businessType = BusinessType.DELETE) + @PostMapping("/remove") + @ResponseBody + public AjaxResult remove(String ids) + { + try + { + return toAjax(goodsService.deleteGoodsByIds(ids)); + } + catch (Exception e) + { + return error(e.getMessage()); + } + } + + /** + * 新增商品 + */ + @GetMapping("/add") + public String add() + { + return prefix + "/add"; + } + + /** + * 新增保存商品 + */ + @RequiresPermissions("goods:goods:add") + @Log(title = "商品管理", businessType = BusinessType.INSERT) + @PostMapping("/add") + @ResponseBody + public AjaxResult addSave(@Validated Goods goods) + { + if (UserConstants.GOODS_CODE_NOT_UNIQUE.equals(goodsService.checkGoodsNameUnique(goods))) + { + return error("新增商品'" + goods.getGoodsName() + "'失败,商品名称已存在"); + } + else if (UserConstants.GOODS_CODE_NOT_UNIQUE.equals(goodsService.checkGoodsCodeUnique(goods))) + { + return error("新增商品'" + goods.getGoodsName() + "'失败,商品编码已存在"); + } + goods.setCreateBy(getLoginName()); + return toAjax(goodsService.insertGoods(goods)); + } + + /** + * 修改商品 + */ + @RequiresPermissions("goods:goods:edit") + @GetMapping("/edit/{goodsId}") + public String edit(@PathVariable("goodsId") Long goodsId, ModelMap mmap) + { + mmap.put("goods", goodsService.selectById(goodsId)); + return prefix + "/edit"; + } + + /** + * 修改保存商品 + */ + @RequiresPermissions("goods:goods:edit") + @Log(title = "商品管理", businessType = BusinessType.UPDATE) + @PostMapping("/edit") + @ResponseBody + public AjaxResult editSave(@Validated Goods goods) + { + if (UserConstants.GOODS_NAME_NOT_UNIQUE.equals(goodsService.checkGoodsNameUnique(goods))) + { + return error("修改商品'" + goods.getGoodsName() + "'失败,商品名称已存在"); + } + else if (UserConstants.GOODS_CODE_NOT_UNIQUE.equals(goodsService.checkGoodsCodeUnique(goods))) + { + return error("修改商品'" + goods.getGoodsCode() + "'失败,商品编码已存在"); + } + goods.setUpdateBy(getLoginName()); + return toAjax(goodsService.updateGoods(goods)); + } + + /** + * 校验商品名称 + */ + @PostMapping("/checkGoodsNameUnique") + @ResponseBody + public String checkGoodsNameUnique(Goods goods) + { + return goodsService.checkGoodsNameUnique(goods); + } + + /** + * 校验商品编码 + */ + @PostMapping("/checkGoodsCodeUnique") + @ResponseBody + public String checkGoodsCodeUnique(Goods goods) + { + return goodsService.checkGoodsCodeUnique(goods); + } + +} diff --git a/ghy-common/src/main/java/com/ghy/common/constant/UserConstants.java b/ghy-common/src/main/java/com/ghy/common/constant/UserConstants.java index 1885db7b..6213bc45 100644 --- a/ghy-common/src/main/java/com/ghy/common/constant/UserConstants.java +++ b/ghy-common/src/main/java/com/ghy/common/constant/UserConstants.java @@ -74,6 +74,14 @@ public class UserConstants public final static String POST_CODE_UNIQUE = "0"; public final static String POST_CODE_NOT_UNIQUE = "1"; + /** 商品编码是否唯一的返回结果 */ + public final static String GOODS_CODE_UNIQUE = "0"; + public final static String GOODS_CODE_NOT_UNIQUE = "1"; + + /** 商品名称是否唯一的返回结果 */ + public final static String GOODS_NAME_UNIQUE = "0"; + public final static String GOODS_NAME_NOT_UNIQUE = "1"; + /** 菜单名称是否唯一的返回结果码 */ public final static String MENU_NAME_UNIQUE = "0"; public final static String MENU_NAME_NOT_UNIQUE = "1"; diff --git a/ghy-goods/src/main/java/com/ghy/goods/mapper/GoodsMapper.java b/ghy-goods/src/main/java/com/ghy/goods/mapper/GoodsMapper.java index 413a83c0..a33b7553 100644 --- a/ghy-goods/src/main/java/com/ghy/goods/mapper/GoodsMapper.java +++ b/ghy-goods/src/main/java/com/ghy/goods/mapper/GoodsMapper.java @@ -35,5 +35,24 @@ public interface GoodsMapper { */ public Goods selectById(Long goodsId); + /** + * 批量删除商品信息 + * + * @param ids 需要删除的数据ID + * @return 结果 + */ + public int deleteGoodsByIds(Long[] ids); + + /** + * @param goodsName 商品名称 + * @return 商品信息 + */ + public Goods checkGoodsNameUnique(String goodsName); + + /** + * @param goodsCode 商品编码 + * @return 商品信息 + */ + public Goods checkGoodsCodeUnique(String goodsCode); } diff --git a/ghy-goods/src/main/java/com/ghy/goods/service/GoodsService.java b/ghy-goods/src/main/java/com/ghy/goods/service/GoodsService.java new file mode 100644 index 00000000..39b7426d --- /dev/null +++ b/ghy-goods/src/main/java/com/ghy/goods/service/GoodsService.java @@ -0,0 +1,58 @@ +package com.ghy.goods.service; + +import com.ghy.goods.domain.Goods; + +import java.util.List; + +/** + * 商品模块接口 + * @author clunt + */ +public interface GoodsService { + + /** + * @param goods 商品属性 + * @return 成功条数 + */ + public int insertGoods(Goods goods); + + /** + * @param goods 商品属性 + * @return 成功条数 + */ + public int updateGoods(Goods goods); + + /** + * @param goods 商品入参 + * @return 商品集合 + */ + public List selectGoodsList(Goods goods); + + + /** + * @param goodsId 商品id + * @return 商品 + */ + public Goods selectById(Long goodsId); + + /** + * @param ids 商品ids + * @return 删除结果 + */ + public int deleteGoodsByIds(String ids); + + /** + * 校验商品名称是否重复 + * @param goods 商品属性 + * @return 校验结果 1存在 0不存在 + */ + public String checkGoodsNameUnique(Goods goods); + + /** + * 校验商品编码是否重复 + * @param goods 商品属性 + * @return 校验结果 1存在 0不存在 + */ + public String checkGoodsCodeUnique(Goods goods); + +} diff --git a/ghy-goods/src/main/java/com/ghy/goods/service/impl/GoodsServiceImpl.java b/ghy-goods/src/main/java/com/ghy/goods/service/impl/GoodsServiceImpl.java new file mode 100644 index 00000000..ec99dc59 --- /dev/null +++ b/ghy-goods/src/main/java/com/ghy/goods/service/impl/GoodsServiceImpl.java @@ -0,0 +1,87 @@ +package com.ghy.goods.service.impl; + +import com.ghy.common.constant.UserConstants; +import com.ghy.common.core.text.Convert; +import com.ghy.common.exception.ServiceException; +import com.ghy.common.utils.StringUtils; +import com.ghy.goods.domain.Goods; +import com.ghy.goods.mapper.GoodsMapper; +import com.ghy.goods.service.GoodsService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 商品模块实现类 + * @author clunt + */ +@Service +public class GoodsServiceImpl implements GoodsService { + + @Autowired + private GoodsMapper goodsMapper; + + @Override + public int insertGoods(Goods goods) { + return goodsMapper.insertGoods(goods); + } + + @Override + public int updateGoods(Goods goods) { + return goodsMapper.updateGoods(goods); + } + + @Override + public List selectGoodsList(Goods goods) { + return goodsMapper.selectGoodsList(goods); + } + + @Override + public Goods selectById(Long goodsId) { + return goodsMapper.selectById(goodsId); + } + + @Override + public int deleteGoodsByIds(String ids) { + Long[] goodsIds = Convert.toLongArray(ids); + for (Long goodsId : goodsIds) + { + Goods goods = selectById(goodsId); + if (countUserGoodsById(goods) > 0) + { + throw new ServiceException(String.format("%1$s正在使用,不能删除", goods.getGoodsName())); + } + } + return goodsMapper.deleteGoodsByIds(goodsIds); + } + + @Override + public String checkGoodsNameUnique(Goods goods) { + Long goodsId = StringUtils.isNull(goods.getGoodsId()) ? -1L : goods.getGoodsId(); + Goods info = goodsMapper.checkGoodsNameUnique(goods.getGoodsName()); + if (StringUtils.isNotNull(info) && info.getGoodsId().longValue() != goodsId.longValue()) + { + return UserConstants.GOODS_NAME_NOT_UNIQUE; + } + return UserConstants.GOODS_NAME_UNIQUE; + } + + @Override + public String checkGoodsCodeUnique(Goods goods) { + Long goodsId = StringUtils.isNull(goods.getGoodsId()) ? -1L : goods.getGoodsId(); + Goods info = goodsMapper.checkGoodsCodeUnique(goods.getGoodsCode()); + if (StringUtils.isNotNull(info) && info.getGoodsId().longValue() != goodsId.longValue()) + { + return UserConstants.GOODS_CODE_NOT_UNIQUE; + } + return UserConstants.GOODS_CODE_UNIQUE; + } + + + public int countUserGoodsById(Goods goods){ + //TODO 校验商品是否上架 + return 0; + } + +} diff --git a/ghy-goods/src/main/resources/mapper.goods/GoodsMapper.xml b/ghy-goods/src/main/resources/mapper.goods/GoodsMapper.xml index 4822d8d6..7ec02aa1 100644 --- a/ghy-goods/src/main/resources/mapper.goods/GoodsMapper.xml +++ b/ghy-goods/src/main/resources/mapper.goods/GoodsMapper.xml @@ -45,6 +45,13 @@ + + delete from goods where goods_id in + + #{goodsId} + + + update goods @@ -81,4 +88,14 @@ ) + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index b8ab1020..89ab87db 100644 --- a/pom.xml +++ b/pom.xml @@ -224,6 +224,14 @@ ${ghy.version} + + + com.ghy + ghy-goods + ${ghy.version} + + + com.ghy