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