jiangqs
2023-06-24 ec09e9f2c72ff37654076c327008ac89ed32a8c3
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java
@@ -5,6 +5,7 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.core.utils.DateUtils;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.core.utils.uuid.IdUtils;
import com.ruoyi.common.security.utils.CodeFactoryUtil;
@@ -17,11 +18,14 @@
import com.ruoyi.shop.service.task.ShopFileService;
import com.ruoyi.system.api.constant.AppErrorConstant;
import com.ruoyi.system.api.domain.dto.AppMemberBindingDto;
import com.ruoyi.system.api.domain.dto.MgtBasePlatformDto;
import com.ruoyi.system.api.domain.dto.MgtShopIdByCodeDto;
import com.ruoyi.system.api.domain.dto.MgtUserIdByDept;
import com.ruoyi.system.api.domain.poji.config.SysTag;
import com.ruoyi.system.api.domain.poji.member.Member;
import com.ruoyi.system.api.domain.poji.shop.Shop;
import com.ruoyi.system.api.domain.poji.sys.SysUser;
import com.ruoyi.system.api.domain.vo.MerHomeShopTotalVo;
import com.ruoyi.system.api.domain.vo.*;
import com.ruoyi.system.api.service.RemoteConfigService;
import com.ruoyi.system.api.service.RemoteMemberService;
import com.ruoyi.system.api.service.RemoteOrderService;
@@ -29,15 +33,11 @@
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.StringJoiner;
import java.util.*;
import java.util.stream.Collectors;
/**
 * <p>
@@ -89,7 +89,7 @@
    @Resource
    private ShopProportionService shopProportionService;
    /**
     * 获取商户详情
@@ -154,6 +154,7 @@
            if(shopSame!=null){
                throw new ServiceException(AppErrorConstant.SHOP_DOUBLE);
            }
            shop.setDelFlag(0);
            shop.setShopStatus(3);
            shop.setCreateTime(new Date());
            shop.setCreateUserId(mgtEditShopDto.getUserId());
@@ -165,7 +166,7 @@
        this.saveOrUpdate(shop);
        //商户编号
        if(mgtEditShopDto.getShopId()==null){
            String shopNo = CodeFactoryUtil.getShopNo(shop.getShopId());
            String shopNo = CodeFactoryUtil.getShopNo();
            shop.setShopNumber(shopNo);
        }
        //商户标签
@@ -190,8 +191,10 @@
            this.saveOrUpdate(shop);
        }
        //商户归属员工
        SysUser belongSysUser = sysUserService.getSysUser(shop.getBelongUserId()).getData();
        handleShopStaff(shop.getShopId(),belongSysUser);
        if(shop.getBelongUserId()!=null){
            SysUser belongSysUser = sysUserService.getSysUser(shop.getBelongUserId()).getData();
            handleShopStaff(shop.getShopId(),belongSysUser);
        }
        //商户关联人员
        String relUserIds = mgtEditShopDto.getRelUserIds();
        if(StringUtils.isNotBlank(relUserIds)){
@@ -264,34 +267,70 @@
    }
    /**
     * @description  终止合作
     * @author  jqs
     * @date    2023/6/20 12:01
     * @param mgtTerminateCooperationDto
     * @return  void
     */
    @Override
    public void terminateMgtCooperation(MgtTerminateCooperationDto mgtTerminateCooperationDto){
        Shop shop = this.getById(mgtTerminateCooperationDto.getShopId());
        if(mgtTerminateCooperationDto.getCooperativeFlag()==1){
            /*Date coopStartDate = shop.getCooperationStartTime();
            Date coopEndDate = shop.getCooperationEndTime();
            Date nowTime = new Date();
            //判断合作时间 没在时间内不能开启
            if(coopStartDate.compareTo(nowTime)>0&&coopEndDate.compareTo(nowTime)<0){
                 throw new ServiceException(AppErrorConstant.COOPERATION_TIME_ERROR);
            }*/
            shop.setCooperativeFlag(1);
            if(shop.getShopStatus()==2&&shop.getFrozenFlag()==0){
                shop.setShopStatus(1);
            }else if(shop.getShopStatus()==2&&shop.getFrozenFlag()==1){
                shop.setShopStatus(0);
            }
        }else{
            shop.setCooperativeFlag(0);
            shop.setShopStatus(2);
        }
        shop.setUpdateTime(new Date());
        shop.setUpdateUserId(mgtTerminateCooperationDto.getUserId());
        this.saveOrUpdate(shop);
    }
    /**
     * 修改合作时间
     * @param mgtChangeCoopDto
     */
    @Override
    public void changeCooperationTime(MgtChangeCoopDto mgtChangeCoopDto){
        Shop shop = this.getById(mgtChangeCoopDto.getShopId());
        String coopStartTime = mgtChangeCoopDto.getCoopStartTime();
        String coopEndTime = mgtChangeCoopDto.getCoopEndTime();
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date coopStartDate = null;
        Date coopEndDate = null;
        try {
            Date coopStartDate = simpleDateFormat.parse(coopStartTime);
            Date coopEndDate = simpleDateFormat.parse(coopEndTime);
            Date nowTime = new Date();
            shop.setCooperationStartTime(coopStartDate);
            shop.setCooperationEndTime(coopEndDate);
            Boolean inTime = false;
            if(coopStartDate.compareTo(nowTime)<0&&coopEndDate.compareTo(nowTime)>0){
                inTime = true;
            }
            if(shop.getShopStatus()==2&&inTime){
                shop.setShopStatus(1);
            }
            shop.setUpdateTime(nowTime);
            shop.setUpdateUserId(mgtChangeCoopDto.getUserId());
            this.saveOrUpdate(shop);
            coopStartDate = DateUtils.parseDate(mgtChangeCoopDto.getCoopStartTime(),"yyyy-MM-dd");
            coopEndDate = DateUtils.parseDate(mgtChangeCoopDto.getCoopEndTime(),"yyyy-MM-dd");
        } catch (ParseException e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        }
        Date nowTime = new Date();
        shop.setCooperationStartTime(coopStartDate);
        shop.setCooperationEndTime(coopEndDate);
        Boolean inTime = false;
        if(coopStartDate.compareTo(nowTime)<=0&&coopEndDate.compareTo(nowTime)>=0){
            inTime = true;
            shop.setCooperativeFlag(1);
        }else{
            shop.setCooperativeFlag(0);
        }
        if(shop.getShopStatus()==2&&inTime){
            shop.setShopStatus(1);
        }
        shop.setUpdateTime(nowTime);
        shop.setUpdateUserId(mgtChangeCoopDto.getUserId());
        this.saveOrUpdate(shop);
    }
    /**
@@ -301,8 +340,12 @@
     * @return
     */
    @Override
    public List<MgtShopPageVo> pageShop(Page page, MgtShopPageDto mgtShopPageDto){
        List<MgtShopPageVo> mgtShopPageVoList = shopMapper.pageShop(page, mgtShopPageDto);
    public List<MgtShopPageVo> pageMgtShop(Page page, MgtShopPageDto mgtShopPageDto){
        //处理标签为正则表达
        if(StringUtils.isNotBlank(mgtShopPageDto.getShopTags())){
            mgtShopPageDto.setShopTags(mgtShopPageDto.getShopTags().replace(",","|"));
        }
        List<MgtShopPageVo> mgtShopPageVoList = shopMapper.pageMgtShop(page, mgtShopPageDto);
        return mgtShopPageVoList;
    }
@@ -518,4 +561,222 @@
    public void deleteShopTag(String shopTag){
        shopMapper.deleteShopTag(shopTag);
    }
    /**
     * @description  通过code获取shopId
     * @author  jqs
     * @date    2023/6/9 16:40
     * @param mgtShopIdByCodeDto
     * @return  MgtShopIdByCodeVo
     */
    @Override
    public MgtShopIdByCodeVo getShopIdByCode(MgtShopIdByCodeDto mgtShopIdByCodeDto){
        MgtShopIdByCodeVo mgtShopIdByCodeVo = new MgtShopIdByCodeVo();
        List<Long> shopIdList = shopMapper.getShopIdByCode(mgtShopIdByCodeDto);
        if(shopIdList!=null&&!shopIdList.isEmpty()){
            String shopIdStr = shopIdList.stream()
                    .map(Object::toString)
                    .collect(Collectors.joining(","));
            mgtShopIdByCodeVo.setShopIds(shopIdStr);
        }
        return mgtShopIdByCodeVo;
    }
    /**
     * @description  获取商户list
     * @author  jqs
     * @date    2023/6/12 14:37
     * @param mgtShopListDto
     * @return  List<MgtShopListSimpleVo>
     */
    @Override
    public List<MgtShopListSimpleVo> listMgtShopSimpleVo(MgtShopListDto mgtShopListDto){
        return shopMapper.listMgtShopSimpleVo(mgtShopListDto);
    }
    /**
     * @description  通过id获取商户列表
     * @author  jqs
     * @date    2023/6/14 17:53
     * @param shopIds
     * @return  List<MgtShopListSimpleVo>
     */
    @Override
    public List<MgtSimpleShopVo> listShopSimpleVoByIds(String shopIds){
        return shopMapper.listShopSimpleVoByIds(shopIds);
    }
    /**
     * @description pageMgtShopByCityCode
     * @param page
     * @param mgtShopByCodePageDto
     * @return List<MgtSimpleShopVo>
     * @author jqs34
     * @date 2023/6/14 20:56
     */
    @Override
    public List<MgtSimpleShopVo> pageMgtShopByCityCode(Page page, MgtShopByCodePageDto mgtShopByCodePageDto){
        return shopMapper.pageMgtShopByCityCode(page, mgtShopByCodePageDto);
    }
    /**
     * @description pageMgtShopAuth
     * @param page
     * @param mgtShopAuthPageDto
     * @return List<MgtShopAuthPageVo>
     * @author jqs34
     * @date 2023/6/14 23:01
     */
    @Override
    public List<MgtShopAuthPageVo> pageMgtShopAuth(Page page,  MgtShopAuthPageDto mgtShopAuthPageDto){
        return shopMapper.pageMgtShopAuth(page, mgtShopAuthPageDto);
    }
    /**
     * @description boardShopTotal
     * @param
     * @return MgtBulletinBoardVo
     * @author jqs34
     * @date 2023/6/18 16:59
     */
    @Override
    public MgtBulletinBoardVo boardShopTotal(){
        MgtBulletinBoardVo mgtBulletinBoardVoShop = shopMapper.shopTotal();
        return mgtBulletinBoardVoShop;
    }
    /**
     * @description  商户进件
     * @author  jqs
     * @date    2023/6/19 11:02
     * @param mgtShopAuthDto
     * @return  void
     */
    @Override
    public void mgtShopAuth(MgtShopAuthDto mgtShopAuthDto){
        ShopAuthentication shopAuthentication = shopAuthenticationService.getById(mgtShopAuthDto.getAuthId());
        BeanUtils.copyProperties(mgtShopAuthDto , shopAuthentication);
        shopAuthentication.setAuditStatus(3);
        shopAuthenticationService.saveOrUpdate(shopAuthentication);
    }
    /**
     * @description  获取平台商户统计
     * @author  jqs
     * @date    2023/6/21 16:25
     * @param mgtBasePlatformDto
     * @return  MgtPlTotalShopTotalVo
     */
    @Override
    public MgtPlTotalShopTotalVo getPlTotalShopTotal(MgtBasePlatformDto mgtBasePlatformDto) {
        //获取需要关联的用户id集合
        if (mgtBasePlatformDto.getDeptId() != null) {
            List<Long> userIdList = new ArrayList<>();
            if (mgtBasePlatformDto.getUserId() != null) {
                userIdList.add(mgtBasePlatformDto.getUserId());
            } else {
                MgtUserIdByDept mgtUserIdByDept = new MgtUserIdByDept();
                mgtUserIdByDept.setDeptId(mgtBasePlatformDto.getUserId());
                mgtUserIdByDept = configService.getUserIdByDept(mgtUserIdByDept).getData();
                userIdList = mgtUserIdByDept.getUserIdList();
            }
            if (!userIdList.isEmpty()) {
                mgtBasePlatformDto.setUserIdList(userIdList);
            }
        }
        //获取基础统计
        MgtPlTotalShopTotalVo plTotalShopTotalVo = shopMapper.getPlTotalShopTotal();
        plTotalShopTotalVo.setSignTotal(0);
        List<Long> shopIdList = shopMapper.listShopIdByTotal(mgtBasePlatformDto);
        if (!shopIdList.isEmpty()) {
            MgtShopTotalMemberVo shopTotalMemberVo = remoteMemberService.getUserTotalByShopId(shopIdList).getData();
            plTotalShopTotalVo.setManTotal(shopTotalMemberVo.getManTotal());
            plTotalShopTotalVo.setWomenTotal(shopTotalMemberVo.getWomenTotal());
            plTotalShopTotalVo.setAgeKey(shopTotalMemberVo.getAgeKey());
            plTotalShopTotalVo.setAgeValue(shopTotalMemberVo.getAgeValue());
        }
        //获取商户类型
        List<MgtMapTotalVo> shopTypeTotal = shopMapper.listShopTypeTotal(mgtBasePlatformDto);
        if (shopTypeTotal != null && shopTypeTotal.size() > 0) {
            String[] shopTypeKey = new String[shopTypeTotal.size()];
            Integer[] shopTypeValue = new Integer[shopTypeTotal.size()];
            // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
            for (int i = 0; i < shopTypeTotal.size(); i++) {
                if (shopTypeTotal.get(i).getMapKey().equals("1")) {
                    shopTypeKey[i] = "经销商";
                } else if (shopTypeTotal.get(i).getMapKey().equals("2")) {
                    shopTypeKey[i] = "代理商";
                }
                shopTypeValue[i] = shopTypeTotal.get(i).getMapValue();
            }
            plTotalShopTotalVo.setShopTypeKey(shopTypeKey);
            plTotalShopTotalVo.setShopTypeValue(shopTypeValue);
        }
        //获取商户状态
        List<MgtMapTotalVo> shopStatusTotal = shopMapper.listShopStatusTotal(mgtBasePlatformDto);
        if (shopStatusTotal != null && shopStatusTotal.size() > 0) {
            String[] shopStatusKey = new String[shopStatusTotal.size()];
            Integer[] shopStatusValue = new Integer[shopStatusTotal.size()];
            // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
            for (int i = 0; i < shopStatusTotal.size(); i++) {
                shopStatusKey[i] = shopStatusTotal.get(i).getMapKey();
                shopStatusValue[i] = shopStatusTotal.get(i).getMapValue();
            }
            plTotalShopTotalVo.setShopStatusKey(shopStatusKey);
            plTotalShopTotalVo.setShopStatusValue(shopStatusValue);
        }
        //获取区域排名
        List<MgtMapTotalVo> shopAreaRank = shopMapper.listShopAreaRank(mgtBasePlatformDto);
        if (shopAreaRank != null && shopAreaRank.size() > 0) {
            String[] shopRankKey = new String[shopAreaRank.size()];
            Integer[] shopRankValue = new Integer[shopAreaRank.size()];
            // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
            for (int i = 0; i < shopAreaRank.size(); i++) {
                shopRankKey[i] = shopAreaRank.get(i).getMapKey();
                shopRankValue[i] = shopAreaRank.get(i).getMapValue();
            }
            plTotalShopTotalVo.setAreaRankKey(shopRankKey);
            plTotalShopTotalVo.setAreaRankValue(shopRankValue);
        }
        //获取销售排名
        List<MgtMapTotalVo> shopSalesRank = shopMapper.listShopSalesRank(mgtBasePlatformDto);
        if (shopSalesRank != null && shopSalesRank.size() > 0) {
            String[] shopSalesKey = new String[shopSalesRank.size()];
            Integer[] shopSalesValue = new Integer[shopSalesRank.size()];
            // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
            for (int i = 0; i < shopSalesRank.size(); i++) {
                shopSalesKey[i] = shopSalesRank.get(i).getMapKey();
                shopSalesValue[i] = shopSalesRank.get(i).getMapValue();
            }
            plTotalShopTotalVo.setShopSalesRankKey(shopSalesKey);
            plTotalShopTotalVo.setShopSalesRankValue(shopSalesValue);
        }
        //获取推荐
        List<MgtMapTotalVo> shopRecommendRank = shopMapper.listShopRecommendRank(mgtBasePlatformDto);
        if (shopRecommendRank != null && shopRecommendRank.size() > 0) {
            String[] shopRecommendKey = new String[shopRecommendRank.size()];
            Integer[] shopRecommendValue = new Integer[shopRecommendRank.size()];
            // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
            for (int i = 0; i < shopRecommendRank.size(); i++) {
                shopRecommendKey[i] = shopRecommendRank.get(i).getMapKey();
                shopRecommendValue[i] = shopRecommendRank.get(i).getMapValue();
            }
            plTotalShopTotalVo.setShopRecommendKey(shopRecommendKey);
            plTotalShopTotalVo.setShopRecommendValue(shopRecommendValue);
        }
        return plTotalShopTotalVo;
    }
    /**
     * @description 获取平台统计shopId
     * @param mgtBasePlatformDto
     * @return List<Long>
     * @author jqs34
     * @date 2023/6/23 14:12
     */
    @Override
    public List<Long> listShopIdByPlTotal(MgtBasePlatformDto mgtBasePlatformDto){
        List<Long> shopIdList = shopMapper.listShopIdByPlTotal(mgtBasePlatformDto);
        return shopIdList;
    }
}