huanghongfa
2021-09-02 177249c76aeea0b4bf8d8816d4994e3b445b45ce
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComShopStoreServiceImpl.java
@@ -1,5 +1,15 @@
package com.panzhihua.service_community.service.impl;
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 com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -10,8 +20,10 @@
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.*;
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;
@@ -22,16 +34,8 @@
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;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import lombok.extern.slf4j.Slf4j;
/**
 * @auther lyq
@@ -40,7 +44,8 @@
 */
@Slf4j
@Service
public class ComShopStoreServiceImpl extends ServiceImpl<ComShopStoreDAO, ComShopStoreDO> implements ComShopStoreService {
public class ComShopStoreServiceImpl extends ServiceImpl<ComShopStoreDAO, ComShopStoreDO>
    implements ComShopStoreService {
    @Resource
    private ComShopGoodsDAO shopGoodsDAO;
@@ -50,10 +55,12 @@
    private ComShopOrderService orderService;
    @Resource
    private UserService userService;
    /**
     * 查询店铺列表
     *
     * @param pageComShopStoreDTO 请求参数
     * @param pageComShopStoreDTO
     *            请求参数
     * @return 店铺列表
     */
@@ -61,22 +68,19 @@
    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 ->{
        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){
                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{
                } else {
                    shopStoreVO.setOrderDone(false);
                }
            });
@@ -87,14 +91,15 @@
    /**
     * 查询店铺详情
     *
     * @param comShopStoreDTO 请求参数
     * @param comShopStoreDTO
     *            请求参数
     * @return 店铺详情
     */
    @Override
    public R shopStoreDetail(PageComShopStoreDTO comShopStoreDTO) {
        //查询店铺
        // 查询店铺
        ComShopStoreDO storeDO = this.baseMapper.selectById(comShopStoreDTO.getStoreId());
        boolean storeDeleted = storeDO!=null && 2==storeDO.getDeleteStatus();
        boolean storeDeleted = storeDO != null && 2 == storeDO.getDeleteStatus();
        if (storeDO == null || storeDeleted) {
            return R.fail(401, "店铺不存在");
        }
@@ -104,15 +109,15 @@
        PageShopStoreVO shopStoreVO = new PageShopStoreVO();
        BeanUtils.copyProperties(storeDO, shopStoreVO);
        //查询店铺下商品信息
        // 查询店铺下商品信息
        Page page = new Page<>(comShopStoreDTO.getPageNum(), comShopStoreDTO.getPageSize());
        List<ComShopGoodsVO> goodsList = shopGoodsDAO.pageShopGoodsByStoreId(page, comShopStoreDTO).getRecords();
        if(!goodsList.isEmpty()){
            //查询商品规格列表
        if (!goodsList.isEmpty()) {
            // 查询商品规格列表
            goodsList.forEach(goods -> {
                List<ComShopGoodsAttrVO> goodsAttrList = comShopGoodsAttrDAO.getGoodsAttr(goods.getId());
                if(!goodsAttrList.isEmpty()){
                if (!goodsAttrList.isEmpty()) {
                    goods.setGoodsAttrList(goodsAttrList);
                }
            });
@@ -127,27 +132,31 @@
        if (storeVO == null) {
            return R.fail("数据为空!");
        }
        //判断店铺是否存在
        ComShopStoreDO oldComShopStoreDO = this.baseMapper.selectOne(new LambdaQueryWrapper<ComShopStoreDO>()
                .eq(ComShopStoreDO::getStoreAccount, storeVO.getStoreAccount()).eq(ComShopStoreDO::getDeleteStatus,ComShopStoreDO.deleteStatus.no));
        // 判断店铺是否存在
        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 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);
@@ -155,10 +164,11 @@
        return R.ok();
    }
    public R addStore(ShopStoreVO storeVO){
        //判断店铺是否存在
        ComShopStoreDO oldComShopStoreDO = this.baseMapper.selectOne(new LambdaQueryWrapper<ComShopStoreDO>()
                .eq(ComShopStoreDO::getStoreAccount, storeVO.getStoreAccount()).eq(ComShopStoreDO::getDeleteStatus, ComShopStoreDO.deleteStatus.no));
    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("商家账号已注册");
        }
@@ -170,27 +180,30 @@
        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));
        // 新增店铺先判断是否拥有已删除的店铺
        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用户权限
            // 删除店铺规格信息
            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用户
            // 删除关联的sysUser用户
            this.baseMapper.deleteSysUserBySysUserId(comShopStoreDO.getSysUserId());
            //删除店铺
            // 删除店铺
            this.baseMapper.deleteById(comShopStoreDO.getId());
        }
        ComShopStoreDO storeDO = new ComShopStoreDO();
        BeanUtils.copyProperties(storeVO, storeDO);
        storeDO.setSale(0);
        if(this.baseMapper.insert(storeDO) > 0){
        if (this.baseMapper.insert(storeDO) > 0) {
            return R.ok();
        }else{
        } else {
            return R.fail();
        }
    }
@@ -198,50 +211,50 @@
    @Override
    public R editStore(Long id, ShopStoreVO storeVO) {
        ComShopStoreDO storeDO = this.baseMapper.selectById(id);
        if(storeDO == null){
        if (storeDO == null) {
            return R.fail("商家不存在");
        }
        BeanUtils.copyProperties(storeVO, storeDO);
        if(this.baseMapper.updateById(storeDO) > 0){
        if (this.baseMapper.updateById(storeDO) > 0) {
            return R.ok();
        }else{
        } else {
            return R.fail();
        }
    }
    @Override
    public R deleteStore(Long[] id) {
        LambdaQueryWrapper<ComShopStoreDO> query = new LambdaQueryWrapper<ComShopStoreDO>().in(ComShopStoreDO::getId, id);
        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()){//如果有正常商品则提示无法删除
        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> 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()){
                    .filter(order -> order.getStatus() < ComShopOrderDO.status.dpj).collect(Collectors.toList());
                if (!filterOrder.isEmpty()) {
                    return R.fail("该商家还有订单未完成,不能删除");
                }
                //删除商家下的订单
                comShopOrderDOS.forEach(order->{
                // 删除商家下的订单
                comShopOrderDOS.forEach(order -> {
                    order.setDeleteStatus(ComShopOrderDO.deleteStatus.yes);
                    orderService.getBaseMapper().updateById(order);
                });
                shopStoreDO.setDeleteStatus(2);
                this.baseMapper.updateById(shopStoreDO);
                //删除sys_user 物理删除
                // 删除sys_user 物理删除
                this.baseMapper.deleteSysUserBySysUserId(shopStoreDO.getSysUserId());
            }
        }else {
        } else {
            return R.fail("未查询到店铺");
        }
        return R.ok();
@@ -260,7 +273,8 @@
    @Override
    public R getUserStoreInfo(Long userId) {
        ComShopStoreDO comShopStoreDO = this.baseMapper.selectOne(new LambdaQueryWrapper<ComShopStoreDO>().eq(ComShopStoreDO::getDeleteStatus, 1).eq(ComShopStoreDO::getSysUserId, userId));
        ComShopStoreDO comShopStoreDO = this.baseMapper.selectOne(new LambdaQueryWrapper<ComShopStoreDO>()
            .eq(ComShopStoreDO::getDeleteStatus, 1).eq(ComShopStoreDO::getSysUserId, userId));
        if (comShopStoreDO == null) {
            return R.fail(500, "商铺不存在");
        }
@@ -272,21 +286,22 @@
    @Override
    public R getUserStoreInfo(String account) {
        try {
            R<LoginUserInfoVO> loginUserInfoVOR = userService.getUserInfo(account+"_5");
            LoginUserInfoVO loginUserInfoVO = JSONObject.parseObject(JSONObject.toJSONString(loginUserInfoVOR.getData()), LoginUserInfoVO.class);
            R<LoginUserInfoVO> loginUserInfoVOR = userService.getUserInfo(account + "_5");
            LoginUserInfoVO loginUserInfoVO =
                JSONObject.parseObject(JSONObject.toJSONString(loginUserInfoVOR.getData()), LoginUserInfoVO.class);
            if(loginUserInfoVO==null){
            if (loginUserInfoVO == null) {
                return R.fail(500, "该账号不存在");
            }
            ComShopStoreDO comShopStoreDO = this.baseMapper.selectOne(new LambdaQueryWrapper<ComShopStoreDO>()
                    .eq(ComShopStoreDO::getDeleteStatus, 1).eq(ComShopStoreDO::getSysUserId, loginUserInfoVO.getUserId()));
                .eq(ComShopStoreDO::getDeleteStatus, 1).eq(ComShopStoreDO::getSysUserId, loginUserInfoVO.getUserId()));
            if (comShopStoreDO == null) {
                return  R.fail(500, "该账号不存在");
                return R.fail(500, "该账号不存在");
            }
            ShopStoreVO shopStoreVO = new ShopStoreVO();
            BeanUtils.copyProperties(comShopStoreDO, shopStoreVO);
            return R.ok(shopStoreVO);
        }catch (Exception e){
        } catch (Exception e) {
            return R.fail();
        }
    }