From c00d0d3bc399b6648145dfd955cedbea90f5f99d Mon Sep 17 00:00:00 2001 From: jiangqs <343695869@qq.com> Date: 星期日, 18 六月 2023 17:38:22 +0800 Subject: [PATCH] 看板 --- ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java | 378 ++++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 327 insertions(+), 51 deletions(-) diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java index 78b40a9..4a39190 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java @@ -1,32 +1,47 @@ package com.ruoyi.shop.service.impl.shop; +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.vo.AppNearbyShopVo; +import com.ruoyi.shop.domain.pojo.task.ShopFile; +import com.ruoyi.shop.domain.vo.*; import com.ruoyi.shop.mapper.shop.ShopMapper; import com.ruoyi.shop.service.shop.*; -import com.ruoyi.shop.util.CodeFactoryUtil; -import com.ruoyi.system.api.RemoteActivityService; -import com.ruoyi.system.api.RemoteConfigService; -import com.ruoyi.system.api.RemoteUserService; +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.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 org.apache.commons.lang3.StringUtils; +import com.ruoyi.system.api.domain.vo.MerHomeShopTotalVo; +import com.ruoyi.system.api.domain.vo.MgtBulletinBoardVo; +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> @@ -52,6 +67,9 @@ private RemoteConfigService configService; @Resource + private RemoteMemberService remoteMemberService; + + @Resource private RemoteUserService sysUserService; @Resource @@ -59,6 +77,22 @@ @Resource private ShopRelUserService shopRelUserService; + + @Resource + private RemoteOrderService remoteOrderService; + + @Resource + private ShopStaffService shopStaffService; + + @Resource + private ShopAccountService shopAccountService; + + @Resource + private ShopAuthenticationService shopAuthenticationService; + + @Resource + private ShopProportionService shopProportionService; + /** @@ -98,34 +132,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; @@ -145,8 +194,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; @@ -163,18 +217,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(); @@ -185,6 +240,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); + } } /** @@ -194,28 +277,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); } /** @@ -225,8 +310,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; } @@ -324,12 +413,23 @@ public AppNearbyShopVo getNearbyShop(AppNearbyShopDto appNearbyShopDto,Member member){ AppNearbyShopVo appNearbyShopVo = new AppNearbyShopVo(); Shop shop = null; - if(member.getRealtionShopId()!=null){ + //获取附近商户 + if(member!=null&&member.getRelationShopId()!=null&&member.getBindingFlag()==1){ //获取绑定商户 - shop = this.getById(member.getRealtionShopId()); + 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!=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); } appNearbyShopVo.setShopId(shop.getShopId()); appNearbyShopVo.setShopName(shop.getShopName()); @@ -338,4 +438,180 @@ appNearbyShopVo.setShopLongitude(shop.getShopLongitude()); return appNearbyShopVo; } + + /** + * + * @param shopId + * @return + */ + @Override + public Shop getByShopId(Long shopId){ + LambdaQueryWrapper<Shop> queryWrapper = Wrappers.lambdaQuery(); + queryWrapper.eq(Shop::getDelFlag, 0).eq(Shop::getShopId, shopId); + Shop shop = this.getOne(queryWrapper,false); + return shop; + } + + /** + * 获取商户端 + * @param userId + * @return + */ + @Override + public MerHomeShopTotalVo getMerHomeTotal(Long userId){ + MerHomeShopTotalVo merHomeShopTotalVo = new MerHomeShopTotalVo(); + ShopRelUser shopRelUser = shopRelUserService.getByUserId(userId); + Long shopId = shopRelUser.getShopId(); + merHomeShopTotalVo.setShopId(shopId); + Shop shop = this.getById(shopId); + merHomeShopTotalVo.setShopType(shop.getShopType()); + Integer task = 0; + merHomeShopTotalVo.setTask(task); + 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); + } + + /** + * @description boardShopTotal + * @param + * @return MgtBulletinBoardVo + * @author jqs34 + * @date 2023/6/18 16:59 + */ + @Override + public MgtBulletinBoardVo boardShopTotal(){ + MgtBulletinBoardVo mgtBulletinBoardVoShop = shopMapper.shopTotal(); + return mgtBulletinBoardVoShop; + } } -- Gitblit v1.7.1