From 00a59b93c16b24e7be77c6f1ce4866c75a2e0431 Mon Sep 17 00:00:00 2001 From: 101captain <237651143@qq.com> Date: 星期二, 19 四月 2022 16:32:21 +0800 Subject: [PATCH] 花城E+防疫修改 --- springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComShopStoreServiceImpl.java | 297 ++++++++++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 252 insertions(+), 45 deletions(-) diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComShopStoreServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComShopStoreServiceImpl.java index b5335c5..c2e426b 100644 --- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComShopStoreServiceImpl.java +++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComShopStoreServiceImpl.java @@ -1,25 +1,43 @@ package com.panzhihua.service_community.service.impl; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.panzhihua.common.model.dtos.shop.PageComShopStoreDTO; -import com.panzhihua.common.model.vos.R; -import com.panzhihua.common.model.vos.shop.PageShopStoreVO; -import com.panzhihua.common.model.vos.shop.ComShopStoreVO; -import com.panzhihua.service_community.dao.ComShopGoodsDAO; -import com.panzhihua.common.model.vos.shop.ComShopStoreVO; -import com.panzhihua.common.model.vos.shop.ShopGoodsVO; -import com.panzhihua.common.model.vos.shop.ShopStoreVO; -import com.panzhihua.service_community.dao.ComShopStoreDAO; -import com.panzhihua.service_community.model.dos.ComShopStoreDO; -import com.panzhihua.service_community.service.ComShopStoreService; -import lombok.extern.slf4j.Slf4j; +import static com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isNull; + +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; + +import javax.annotation.Resource; + import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; -import javax.annotation.Resource; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.panzhihua.common.constants.Constants; +import com.panzhihua.common.model.dtos.shop.PageComShopStoreDTO; +import com.panzhihua.common.model.vos.LoginUserInfoVO; +import com.panzhihua.common.model.vos.R; +import com.panzhihua.common.model.vos.shop.ComShopGoodsAttrVO; +import com.panzhihua.common.model.vos.shop.ComShopGoodsVO; +import com.panzhihua.common.model.vos.shop.PageShopStoreVO; +import com.panzhihua.common.model.vos.shop.ShopStoreVO; +import com.panzhihua.common.service.user.UserService; +import com.panzhihua.service_community.dao.ComShopGoodsAttrDAO; +import com.panzhihua.service_community.dao.ComShopGoodsDAO; +import com.panzhihua.service_community.dao.ComShopStoreDAO; +import com.panzhihua.service_community.model.dos.ComShopGoodsAttrDO; +import com.panzhihua.service_community.model.dos.ComShopGoodsDO; +import com.panzhihua.service_community.model.dos.ComShopOrderDO; +import com.panzhihua.service_community.model.dos.ComShopStoreDO; +import com.panzhihua.service_community.service.ComShopOrderService; +import com.panzhihua.service_community.service.ComShopStoreService; + +import lombok.extern.slf4j.Slf4j; /** * @auther lyq @@ -28,46 +46,85 @@ */ @Slf4j @Service -public class ComShopStoreServiceImpl extends ServiceImpl<ComShopStoreDAO, ComShopStoreDO> implements ComShopStoreService { +public class ComShopStoreServiceImpl extends ServiceImpl<ComShopStoreDAO, ComShopStoreDO> + implements ComShopStoreService { @Resource private ComShopGoodsDAO shopGoodsDAO; + @Resource + private ComShopGoodsAttrDAO comShopGoodsAttrDAO; + @Resource + private ComShopOrderService orderService; + @Resource + private UserService userService; /** * 查询店铺列表 - * @param comShopStoreDTO 请求参数 - * @return 店铺列表 + * + * @param pageComShopStoreDTO + * 请求参数 + * @return 店铺列表 */ @Override public R pageStoreList(PageComShopStoreDTO pageComShopStoreDTO) { Page page = new Page<>(pageComShopStoreDTO.getPageNum(), pageComShopStoreDTO.getPageSize()); IPage<PageShopStoreVO> comShopStoreVOIPage = this.baseMapper.pageShopStore(page, pageComShopStoreDTO); + if (comShopStoreVOIPage != null) { + Optional.ofNullable(comShopStoreVOIPage.getRecords()).orElse(new ArrayList<>()).forEach(shopStoreVO -> { + List<Integer> notDoneOrderStatus = new ArrayList<>(); + notDoneOrderStatus.add(1); + notDoneOrderStatus.add(2); + notDoneOrderStatus.add(3); + notDoneOrderStatus.add(4); + Integer orderCount = orderService.getBaseMapper().selectCount( + new LambdaQueryWrapper<ComShopOrderDO>().eq(ComShopOrderDO::getStoreId, shopStoreVO.getId()) + .eq(ComShopOrderDO::getDeleteStatus, 1).in(ComShopOrderDO::getStatus, notDoneOrderStatus)); + if (orderCount == null || orderCount.intValue() <= 0) { + shopStoreVO.setOrderDone(true); + } else { + shopStoreVO.setOrderDone(false); + } + }); + } return R.ok(comShopStoreVOIPage); } /** * 查询店铺详情 - * @param comShopStoreDTO 请求参数 - * @return 店铺详情 + * + * @param comShopStoreDTO + * 请求参数 + * @return 店铺详情 */ @Override public R shopStoreDetail(PageComShopStoreDTO comShopStoreDTO) { - //查询店铺 + // 查询店铺 ComShopStoreDO storeDO = this.baseMapper.selectById(comShopStoreDTO.getStoreId()); - if (storeDO == null) { - return R.fail(401,"店铺不存在"); + boolean storeDeleted = storeDO != null && 2 == storeDO.getDeleteStatus(); + if (storeDO == null || storeDeleted) { + return R.fail(401, "店铺不存在"); } - if(storeDO.getStatus().equals(ComShopStoreDO.status.no)){ - return R.fail(402,"店铺已被禁用"); + if (storeDO.getStatus().equals(ComShopStoreDO.status.no)) { + return R.fail(402, "店铺已被禁用"); } - ComShopStoreVO shopStoreVO = new ComShopStoreVO(); + PageShopStoreVO shopStoreVO = new PageShopStoreVO(); BeanUtils.copyProperties(storeDO, shopStoreVO); - //查询店铺下商品信息 + // 查询店铺下商品信息 Page page = new Page<>(comShopStoreDTO.getPageNum(), comShopStoreDTO.getPageSize()); - shopStoreVO.setGoodsList(shopGoodsDAO.pageShopGoodsByStoreId(page, comShopStoreDTO).getRecords()); + List<ComShopGoodsVO> goodsList = shopGoodsDAO.pageShopGoodsByStoreId(page, comShopStoreDTO).getRecords(); + if (!goodsList.isEmpty()) { + // 查询商品规格列表 + goodsList.forEach(goods -> { + List<ComShopGoodsAttrVO> goodsAttrList = comShopGoodsAttrDAO.getGoodsAttr(goods.getId()); + if (!goodsAttrList.isEmpty()) { + goods.setGoodsAttrList(goodsAttrList); + } + }); + } + shopStoreVO.setGoodsList(goodsList); return R.ok(shopStoreVO); } @@ -75,8 +132,33 @@ @Override public R saveStore(ShopStoreVO storeVO) { if (storeVO == null) { - return R.ok("500", "数据为空!"); + return R.fail("数据为空!"); } + // 判断店铺是否存在 + ComShopStoreDO oldComShopStoreDO = this.baseMapper.selectOne( + new LambdaQueryWrapper<ComShopStoreDO>().eq(ComShopStoreDO::getStoreAccount, storeVO.getStoreAccount()) + .eq(ComShopStoreDO::getDeleteStatus, ComShopStoreDO.deleteStatus.no)); + if (oldComShopStoreDO != null) { + return R.fail("商家已注册"); + } + // //新增店铺先判断是否拥有已删除的店铺 + // ComShopStoreDO comShopStoreDO = this.baseMapper.selectOne(new LambdaQueryWrapper<ComShopStoreDO>() + // .eq(ComShopStoreDO::getStoreAccount, + // storeVO.getStoreAccount()).eq(ComShopStoreDO::getDeleteStatus,ComShopStoreDO.deleteStatus.yes)); + // if(comShopStoreDO != null){ + // //删除店铺规格信息 + // comShopGoodsAttrDAO.delete(new + // QueryWrapper<ComShopGoodsAttrDO>().lambda().eq(ComShopGoodsAttrDO::getStoreId,comShopStoreDO.getId())); + // //删除店铺商品 + // shopGoodsDAO.delete(new + // QueryWrapper<ComShopGoodsDO>().lambda().eq(ComShopGoodsDO::getStoreId,comShopStoreDO.getId())); + // //删除关联的sysUser用户权限 + // this.baseMapper.deleteSysRoleByAccount(Constants.SHOP_ROLE_KEY + comShopStoreDO.getStoreAccount()); + // //删除关联的sysUser用户 + // this.baseMapper.deleteSysUserBySysUserId(comShopStoreDO.getSysUserId()); + // //删除店铺 + // this.baseMapper.deleteById(comShopStoreDO.getId()); + // } ComShopStoreDO storeDO = new ComShopStoreDO(); BeanUtils.copyProperties(storeVO, storeDO); storeDO.setSale(0); @@ -84,35 +166,160 @@ return R.ok(); } - @Override - public R editStore(Long id, ShopStoreVO storeVO) { - if (storeVO == null) { - return R.ok("500", "数据为空!"); + public R addStore(ShopStoreVO storeVO) { + // 判断店铺是否存在 + ComShopStoreDO oldComShopStoreDO = this.baseMapper.selectOne( + new LambdaQueryWrapper<ComShopStoreDO>().eq(ComShopStoreDO::getStoreAccount, storeVO.getStoreAccount()) + .eq(ComShopStoreDO::getDeleteStatus, ComShopStoreDO.deleteStatus.no)); + if (oldComShopStoreDO != null) { + return R.fail("商家账号已注册"); } - LambdaQueryWrapper<ComShopStoreDO> query = new LambdaQueryWrapper<ComShopStoreDO>().eq(ComShopStoreDO::getId, id); + int reasonable1 = this.baseMapper.reasonableUserByPhone(storeVO.getPhone()); + int reasonable2 = this.baseMapper.reasonableUserByAccount(storeVO.getStoreAccount()); + if (reasonable1 > 0) { + return R.fail("手机号:" + storeVO.getPhone() + "在系统用户中已存在"); + } + if (reasonable2 > 0) { + return R.fail("账号:" + storeVO.getStoreAccount() + "在系统用户中已存在"); + } + // 新增店铺先判断是否拥有已删除的店铺 + ComShopStoreDO comShopStoreDO = this.baseMapper.selectOne( + new LambdaQueryWrapper<ComShopStoreDO>().eq(ComShopStoreDO::getStoreAccount, storeVO.getStoreAccount()) + .eq(ComShopStoreDO::getDeleteStatus, ComShopStoreDO.deleteStatus.yes)); + if (comShopStoreDO != null) { + // 删除店铺规格信息 + comShopGoodsAttrDAO.delete(new QueryWrapper<ComShopGoodsAttrDO>().lambda() + .eq(ComShopGoodsAttrDO::getStoreId, comShopStoreDO.getId())); + // 删除店铺商品 + shopGoodsDAO.delete( + new QueryWrapper<ComShopGoodsDO>().lambda().eq(ComShopGoodsDO::getStoreId, comShopStoreDO.getId())); + // 删除关联的sysUser用户权限 + this.baseMapper.deleteSysRoleByAccount(Constants.SHOP_ROLE_KEY + comShopStoreDO.getStoreAccount()); + // 删除关联的sysUser用户 + this.baseMapper.deleteSysUserBySysUserId(comShopStoreDO.getSysUserId()); + // 删除店铺 + this.baseMapper.deleteById(comShopStoreDO.getId()); + } ComShopStoreDO storeDO = new ComShopStoreDO(); BeanUtils.copyProperties(storeVO, storeDO); - int update = this.baseMapper.update(storeDO, query); - return update > 0 ? R.ok() : R.fail(); + storeDO.setSale(0); + if (this.baseMapper.insert(storeDO) > 0) { + return R.ok(); + } else { + return R.fail(); + } + } + + @Override + public R editStore(Long id, ShopStoreVO storeVO) { + ComShopStoreDO storeDO = this.baseMapper.selectById(id); + if (storeDO == null) { + return R.fail("商家不存在"); + } + BeanUtils.copyProperties(storeVO, storeDO); + if (this.baseMapper.updateById(storeDO) > 0) { + return R.ok(); + } else { + return R.fail(); + } } @Override public R deleteStore(Long[] id) { - ComShopStoreDO storeDO = new ComShopStoreDO(); - storeDO.setDeleteStatus(2); - LambdaQueryWrapper<ComShopStoreDO> query = new LambdaQueryWrapper<ComShopStoreDO>().eq(ComShopStoreDO::getId, id); - int update = this.baseMapper.update(storeDO, query); - return update > 0 ? R.ok() : R.fail(); + LambdaQueryWrapper<ComShopStoreDO> query = + new LambdaQueryWrapper<ComShopStoreDO>().in(ComShopStoreDO::getId, id); + List<ComShopStoreDO> comShopStoreDO = this.baseMapper.selectList(query); + if (!comShopStoreDO.isEmpty()) { + for (ComShopStoreDO shopStoreDO : comShopStoreDO) { + // 判断店铺下是否拥有正常的商品 + List<ComShopGoodsDO> shopGoodsList = shopGoodsDAO.selectList( + new QueryWrapper<ComShopGoodsDO>().lambda().eq(ComShopGoodsDO::getStoreId, shopStoreDO.getId()) + .eq(ComShopGoodsDO::getDeleteStatus, ComShopGoodsDO.deleteStatus.no) + .eq(ComShopGoodsDO::getStatus, ComShopGoodsDO.status.sell)); + if (!shopGoodsList.isEmpty()) {// 如果有正常商品则提示无法删除 + return R.fail("店铺下有商品正在出售,无法删除店铺"); + } + List<ComShopOrderDO> comShopOrderDOS = orderService.getBaseMapper().selectList( + new LambdaQueryWrapper<ComShopOrderDO>().eq(ComShopOrderDO::getStoreId, shopStoreDO.getId())); + List<ComShopOrderDO> filterOrder = comShopOrderDOS.stream() + .filter(order -> order.getStatus() < ComShopOrderDO.status.dpj).collect(Collectors.toList()); + if (!filterOrder.isEmpty()) { + return R.fail("该商家还有订单未完成,不能删除"); + } + // 删除商家下的订单 + comShopOrderDOS.forEach(order -> { + order.setDeleteStatus(ComShopOrderDO.deleteStatus.yes); + orderService.getBaseMapper().updateById(order); + }); + shopStoreDO.setDeleteStatus(2); + this.baseMapper.updateById(shopStoreDO); + // 删除sys_user 物理删除 + this.baseMapper.deleteSysUserBySysUserId(shopStoreDO.getSysUserId()); + } + } else { + return R.fail("未查询到店铺"); + } + return R.ok(); } @Override public R getOneInfo(Long id) { ComShopStoreDO comShopStoreDO = this.baseMapper.selectById(id); if (comShopStoreDO == null) { - R.fail(500,"商铺不存在"); + return R.fail(500, "商铺不存在"); } ShopStoreVO shopStoreVO = new ShopStoreVO(); - BeanUtils.copyProperties(comShopStoreDO,shopStoreVO); + BeanUtils.copyProperties(comShopStoreDO, shopStoreVO); return R.ok(shopStoreVO); } + + @Override + public R getUserStoreInfo(Long userId) { + ComShopStoreDO comShopStoreDO = this.baseMapper.selectOne(new LambdaQueryWrapper<ComShopStoreDO>() + .eq(ComShopStoreDO::getDeleteStatus, 1).eq(ComShopStoreDO::getSysUserId, userId)); + if (comShopStoreDO == null) { + return R.fail(500, "商铺不存在"); + } + ShopStoreVO shopStoreVO = new ShopStoreVO(); + BeanUtils.copyProperties(comShopStoreDO, shopStoreVO); + return R.ok(shopStoreVO); + } + + @Override + public R getUserStoreInfo(String account) { + try { + R<LoginUserInfoVO> loginUserInfoVOR = userService.getUserInfo(account + "_5"); + LoginUserInfoVO loginUserInfoVO = + JSONObject.parseObject(JSONObject.toJSONString(loginUserInfoVOR.getData()), LoginUserInfoVO.class); + + if (loginUserInfoVO == null) { + return R.fail(500, "该账号不存在"); + } + ComShopStoreDO comShopStoreDO = this.baseMapper.selectOne(new LambdaQueryWrapper<ComShopStoreDO>() + .eq(ComShopStoreDO::getDeleteStatus, 1).eq(ComShopStoreDO::getSysUserId, loginUserInfoVO.getUserId())); + if (comShopStoreDO == null) { + return R.fail(500, "该账号不存在"); + } + ShopStoreVO shopStoreVO = new ShopStoreVO(); + BeanUtils.copyProperties(comShopStoreDO, shopStoreVO); + return R.ok(shopStoreVO); + } catch (Exception e) { + return R.fail(); + } + } + + /** + * check商家/店铺是否有效 + * @param userId + * @return + */ + @Override + public Boolean checkStoreIsValid(Long userId) { + ComShopStoreDO comShopStoreDO = this.baseMapper.selectOne(new LambdaQueryWrapper<ComShopStoreDO>() + .eq(ComShopStoreDO::getDeleteStatus, 1).eq(ComShopStoreDO::getSysUserId, userId)); + if (isNull(comShopStoreDO) || comShopStoreDO.getStatus() != 1) { + return false; + } + return true; + } } -- Gitblit v1.7.1