jiangqs
2023-06-16 ae41759bafec1c2a1e8858fcdcda4272ed4eb84c
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java
@@ -3,38 +3,44 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
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;
import com.ruoyi.shop.domain.dto.*;
import com.ruoyi.shop.domain.pojo.shop.*;
import com.ruoyi.shop.domain.pojo.task.ShopFile;
import com.ruoyi.shop.domain.vo.AppNearbyShopVo;
import com.ruoyi.shop.domain.vo.*;
import com.ruoyi.shop.mapper.shop.ShopMapper;
import com.ruoyi.shop.service.shop.*;
import com.ruoyi.shop.service.task.ShopFileService;
import com.ruoyi.shop.util.CodeFactoryUtil;
import com.ruoyi.system.api.RemoteConfigService;
import com.ruoyi.system.api.RemoteMemberService;
import com.ruoyi.system.api.RemoteOrderService;
import com.ruoyi.system.api.RemoteUserService;
import com.ruoyi.system.api.constant.AppErrorConstant;
import com.ruoyi.system.api.domain.dto.AppMemberBindingDto;
import com.ruoyi.system.api.domain.poji.shop.Shop;
import com.ruoyi.system.api.domain.dto.MgtShopIdByCodeDto;
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.shop.domain.vo.AppShopInfoVo;
import com.ruoyi.shop.domain.vo.MgtShopInfoVo;
import com.ruoyi.shop.domain.vo.MgtShopPageVo;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.system.api.domain.vo.MerHomeShopTotalVo;
import org.apache.commons.lang3.StringUtils;
import com.ruoyi.system.api.domain.vo.MgtShopIdByCodeVo;
import com.ruoyi.system.api.domain.vo.MgtSimpleShopVo;
import com.ruoyi.system.api.service.RemoteConfigService;
import com.ruoyi.system.api.service.RemoteMemberService;
import com.ruoyi.system.api.service.RemoteOrderService;
import com.ruoyi.system.api.service.RemoteUserService;
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.stream.Collectors;
/**
 * <p>
@@ -74,6 +80,20 @@
    @Resource
    private RemoteOrderService remoteOrderService;
    @Resource
    private ShopStaffService shopStaffService;
    @Resource
    private ShopAccountService shopAccountService;
    @Resource
    private ShopAuthenticationService shopAuthenticationService;
    @Resource
    private ShopProportionService shopProportionService;
    /**
     * 获取商户详情
     * @param shopId
@@ -111,34 +131,49 @@
    /**
     * 创建商户
     * @param MGTEditShopDto
     * @param mgtEditShopDto
     */
    @Override
    public void createShop(MgtEditShopDto MGTEditShopDto){
    public void createShop(MgtEditShopDto mgtEditShopDto){
        Shop shop = new Shop();
        if(MGTEditShopDto.getShopId()!=null){
            shop = this.getById(MGTEditShopDto.getShopId());
        Boolean newShop = false;
        Shop shopSame = this.getOne(new LambdaQueryWrapper<Shop>().eq(Shop::getDelFlag,0).eq(Shop::getShopName,mgtEditShopDto.getShopName()));
        if(mgtEditShopDto.getShopId()!=null){
            if(shopSame!=null&&!Objects.equals(shopSame.getShopId(),mgtEditShopDto.getShopId())){
                throw new ServiceException(AppErrorConstant.SHOP_DOUBLE);
            }
            shop = this.getById(mgtEditShopDto.getShopId());
            shop.setUpdateTime(new Date());
            shop.setUpdateUserId(MGTEditShopDto.getUserId());
            shop.setUpdateUserId(mgtEditShopDto.getUserId());
            shop.setShopTags(null);
            //清空关联记录
            shopFileService.deleteByShopId(shop.getShopId());
            shopRelTagService.deleteByShopId(shop.getShopId());
            shopRelUserService.deleteByShopId(shop.getShopId());
            //清空归属
            shopRelUserService.deleteByShopId(shop.getShopId());
            shopStaffService.clearShopStaffRelation(shop.getShopId());
        }else{
            shop.setShopStatus(2);
            if(shopSame!=null){
                throw new ServiceException(AppErrorConstant.SHOP_DOUBLE);
            }
            shop.setDelFlag(0);
            shop.setShopStatus(3);
            shop.setCreateTime(new Date());
            shop.setCreateUserId(MGTEditShopDto.getUserId());
            shop.setCreateUserId(mgtEditShopDto.getUserId());
            shop.setFrozenFlag(0);
            shop.setCooperativeFlag(0);
            newShop = true;
        }
        BeanUtils.copyProperties(MGTEditShopDto,shop);
        BeanUtils.copyProperties(mgtEditShopDto,shop);
        this.saveOrUpdate(shop);
        //商户编号
        if(MGTEditShopDto.getShopId()==null){
            String shopNo = CodeFactoryUtil.getShopNo(shop.getShopId());
        if(mgtEditShopDto.getShopId()==null){
            String shopNo = CodeFactoryUtil.getShopNo();
            shop.setShopNumber(shopNo);
        }
        //商户标签
        String shopTagIds = MGTEditShopDto.getShopTagIds();
        String shopTagIds = mgtEditShopDto.getShopTagIds();
        if(StringUtils.isNotBlank(shopTagIds)){
            String[] shopTagIdArray = shopTagIds.split(",");
            ShopRelTag shopRelTag;
@@ -158,8 +193,13 @@
            shop.setShopTags(shopTagSj.toString());
            this.saveOrUpdate(shop);
        }
        //商户归属员工
        if(shop.getBelongUserId()!=null){
            SysUser belongSysUser = sysUserService.getSysUser(shop.getBelongUserId()).getData();
            handleShopStaff(shop.getShopId(),belongSysUser);
        }
        //商户关联人员
        String relUserIds = MGTEditShopDto.getRelUserIds();
        String relUserIds = mgtEditShopDto.getRelUserIds();
        if(StringUtils.isNotBlank(relUserIds)){
            String[] relUserIdArray = relUserIds.split(",");
            ShopRelUser shopRelUser;
@@ -176,18 +216,19 @@
                shopRelUser.setUserMobile(sysUser.getPhonenumber());
                shopRelUser.setUserDeptId(sysUser.getDeptId());
                shopRelUserService.save(shopRelUser);
                handleShopStaff(shop.getShopId(),sysUser);
            }
        }
        //商户封面
        ShopFile shopFile = new ShopFile();
        shopFile.setDelFlag(0);
        shopFile.setFileType(1);
        shopFile.setFileUrl(MGTEditShopDto.getShopPicture());
        shopFile.setFileUrl(mgtEditShopDto.getShopPicture());
        shopFile.setShopId(shop.getShopId());
        shopFileService.save(shopFile);
        //商户banner
        if(StringUtils.isNotBlank(MGTEditShopDto.getShopBanners())){
            String shopBanners= MGTEditShopDto.getShopBanners();
        if(StringUtils.isNotBlank(mgtEditShopDto.getShopBanners())){
            String shopBanners= mgtEditShopDto.getShopBanners();
            String[] shopBannerArray = shopBanners.split(",");
            for(String str : shopBannerArray){
                shopFile = new ShopFile();
@@ -198,6 +239,34 @@
                shopFileService.save(shopFile);
            }
        }
        if(newShop){
            //商户账户信息初始化
            ShopAccount shopAccount = new ShopAccount();
            shopAccount.setShopId(shop.getShopId());
            shopAccount.setDelFlag(0);
            shopAccount.setTotalIncome(new BigDecimal("0"));
            shopAccount.setTotalDisburse(new BigDecimal("0"));
            shopAccount.setTotalRefund(new BigDecimal("0"));
            shopAccount.setTotalProfitsharing(new BigDecimal("0"));
            shopAccount.setTotalMoney(new BigDecimal("0"));
            shopAccountService.save(shopAccount);
            //商户认证信息初始化
            String authId = IdUtils.simpleUUID();
            ShopAuthentication shopAuthentication = new ShopAuthentication();
            shopAuthentication.setAuthId(authId);
            shopAuthentication.setDelFlag(0);
            shopAuthentication.setShopId(shop.getShopId());
            shopAuthenticationService.save(shopAuthentication);
            //商户分成信息初始化
            ShopProportion shopProportion = new ShopProportion();
            shopProportion.setDelFlag(0);
            shopProportion.setShopId(shop.getShopId());
            shopProportion.setShopType(shop.getShopType());
            shopProportion.setProportionPercent(new BigDecimal("100.00"));
            shopProportion.setUpdateTime(new Date());
            shopProportion.setUpdateUserId(mgtEditShopDto.getUserId());
            shopProportionService.save(shopProportion);
        }
    }
    /**
@@ -207,28 +276,30 @@
    @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);
    }
    /**
@@ -238,8 +309,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;
    }
@@ -337,16 +412,20 @@
    public AppNearbyShopVo getNearbyShop(AppNearbyShopDto appNearbyShopDto,Member member){
        AppNearbyShopVo appNearbyShopVo = new AppNearbyShopVo();
        Shop shop = null;
        if(member.getRelationShopId()!=null){
        //获取附近商户
        if(member!=null&&member.getRelationShopId()!=null&&member.getBindingFlag()==1){
            //获取绑定商户
            shop = this.getById(member.getRelationShopId());
        }else if(StringUtils.isNotBlank(appNearbyShopDto.getLatitude())&&StringUtils.isNotBlank(appNearbyShopDto.getLongitude())){
            AppNearShopVo appNearShopVo = shopMapper.getNearbyShop(appNearbyShopDto);
            shop = this.getById(appNearShopVo.getShopId());
        }else{
            //获取附近商户
            shop = this.getById(1L);
            return appNearbyShopVo;
        }
        if(member.getBindingFlag()!=1){
        if(member!=null&&member.getBindingFlag()!=1){
            AppMemberBindingDto appMemberBindingDto = new AppMemberBindingDto();
            appMemberBindingDto.setShopId(shop.getShopId());
            appMemberBindingDto.setShopName(shop.getShopName());
            appMemberBindingDto.setUserId(member.getUserId());
            appMemberBindingDto.setBindingFlag(0);
            remoteMemberService.updateMemberBinding(appMemberBindingDto);
@@ -372,6 +451,11 @@
        return shop;
    }
    /**
     * 获取商户端
     * @param userId
     * @return
     */
    @Override
    public MerHomeShopTotalVo getMerHomeTotal(Long userId){
        MerHomeShopTotalVo merHomeShopTotalVo = new MerHomeShopTotalVo();
@@ -385,4 +469,135 @@
        merHomeShopTotalVo = remoteOrderService.getMerHomeTotal(merHomeShopTotalVo).getData();
        return merHomeShopTotalVo;
    }
    /**
     * 获取商户绑定代理商
     * @param page
     * @param merAgencyPageDto
     * @return
     */
    @Override
    public List<MerAgencyPageVo> pageMerAgencyVo(Page page, MerAgencyPageDto merAgencyPageDto){
        List<MerAgencyPageVo> merAgencyPageVoList = shopMapper.pageMerAgencyVo(page, merAgencyPageDto);
        return merAgencyPageVoList;
    }
    /**
     * 处理商户员工
     * @param shopId
     * @param sysUser
     */
    private void handleShopStaff(Long shopId,SysUser sysUser){
        ShopStaff shopStaff = shopStaffService.getByUserId(sysUser.getUserId());
        if(shopStaff!=null){
            shopStaff.setShopId(shopId);
        }else{
            String staffId = IdUtils.simpleUUID();
            shopStaff = new ShopStaff();
            shopStaff.setStaffId(staffId);
            shopStaff.setDelFlag(0);
            shopStaff.setUserId(sysUser.getUserId());
            shopStaff.setShopId(shopId);
            shopStaff.setStaffName(sysUser.getNickName());
            shopStaff.setStaffMobile(sysUser.getPhonenumber());
            shopStaff.setStaffGender(Integer.valueOf(sysUser.getSex()));
            shopStaff.setStaffAvatar(sysUser.getAvatar());
        }
        shopStaffService.saveOrUpdate(shopStaff);
    }
    /**
     * @description  平台获取商户分成列表
     * @author  jqs
     * @date    2023/6/8 9:25
     * @param page
     * @param mgtShopProportionPageDto
     * @return  List<MgtShopProportionPageVo>
     */
    @Override
    public List<MgtShopProportionPageVo> pageMgtShopProportion(Page page, MgtShopProportionPageDto mgtShopProportionPageDto){
        return shopMapper.pageMgtShopProportion(page,mgtShopProportionPageDto);
    }
    /**
     * @description  删除商户标签
     * @author  jqs
     * @date    2023/6/8 15:53
     * @param shopTag
     * @return  void
     */
    @Override
    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);
    }
}