From a95d0c4bdd96b09342c7ccf9aa1aef4b26b31302 Mon Sep 17 00:00:00 2001 From: puzhibing <393733352@qq.com> Date: 星期四, 31 七月 2025 14:17:19 +0800 Subject: [PATCH] 修改bug --- ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java | 379 ++++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 283 insertions(+), 96 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 f8c3ec3..75a34d8 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,6 +1,5 @@ package com.ruoyi.shop.service.impl.shop; -import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson2.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -8,7 +7,6 @@ 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.baomidou.mybatisplus.mapper.EntityWrapper; import com.github.binarywang.wxpay.bean.ecommerce.ApplymentsResult; import com.github.binarywang.wxpay.bean.ecommerce.ApplymentsStatusResult; import com.github.binarywang.wxpay.bean.ecommerce.ProfitSharingReceiverRequest; @@ -18,7 +16,6 @@ import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.exception.ServiceException; import com.ruoyi.common.core.utils.DateUtils; -import com.ruoyi.common.core.utils.ExceptionUtil; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.utils.bean.BeanUtils; import com.ruoyi.common.core.utils.uuid.IdUtils; @@ -43,23 +40,23 @@ import com.ruoyi.system.api.constant.AppErrorConstant; import com.ruoyi.system.api.constant.SecurityConstant; import com.ruoyi.system.api.domain.dto.*; +import com.ruoyi.system.api.domain.poji.config.OneClinkSyncing; 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.shop.TShopAppointableTime; import com.ruoyi.system.api.domain.poji.sys.SysUser; import com.ruoyi.system.api.domain.vo.*; import com.ruoyi.system.api.service.*; import lombok.extern.log4j.Log4j2; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.math.BigDecimal; import java.nio.charset.StandardCharsets; -import java.rmi.ServerException; import java.text.ParseException; -import java.text.SimpleDateFormat; import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; @@ -141,21 +138,23 @@ @Resource private RedisService redisService; - + @Resource private WechatPayUtils wechatPayUtils; - + @Resource private ShopDetailService shopDetailService; - + @Resource private RemoteUserService remoteUserService; - + + @Resource + private ShopAppointableTimeService shopAppointableTimeService; + @Value("${callback_path}") private String callback_path; - - - + + /** * 获取商户详情 * @@ -191,47 +190,48 @@ } return appShopInfoVo; } - + /** * 创建商户 + * * @param mgtEditShopDto */ @Override - public void createShop(MgtEditShopDto mgtEditShopDto){ + public void createShop(MgtEditShopDto mgtEditShopDto) { Shop shop = new Shop(); Boolean newShop = false; BigDecimal zeroBig = BigDecimal.ZERO; //验证关联账号唯一 String relUserIds = mgtEditShopDto.getRelUserIds(); - if(StringUtils.isNotBlank(relUserIds)) { - if(relUserIds.startsWith(",")){ - relUserIds = relUserIds.substring(1); - } - String[] relUserIdArray = relUserIds.split(","); - ShopRelUser shopRelUser; - Long userId; - if(mgtEditShopDto.getShopId()!=null){ - for (String str : relUserIdArray) { - userId = Long.valueOf(str); - shopRelUser = shopRelUserService.getByUserId(userId); - if(shopRelUser!=null&&!shopRelUser.getShopId().equals(mgtEditShopDto.getShopId())){ - throw new ServiceException(AppErrorConstant.SHOP_USER_DOUBLE); - } - } - }else { - for (String str : relUserIdArray) { - userId = Long.valueOf(str); - shopRelUser = shopRelUserService.getByUserId(userId); - if(shopRelUser!=null){ - throw new ServiceException(AppErrorConstant.SHOP_USER_DOUBLE); - } - } - } - - } +// if(StringUtils.isNotBlank(relUserIds)) { +// if(relUserIds.startsWith(",")){ +// relUserIds = relUserIds.substring(1); +// } +// String[] relUserIdArray = relUserIds.split(","); +// ShopRelUser shopRelUser; +// Long userId; +// if(mgtEditShopDto.getShopId()!=null){ +// for (String str : relUserIdArray) { +// userId = Long.valueOf(str); +// shopRelUser = shopRelUserService.getByUserId(userId); +// if(shopRelUser!=null&&!shopRelUser.getShopId().equals(mgtEditShopDto.getShopId())){ +// throw new ServiceException(AppErrorConstant.SHOP_USER_DOUBLE); +// } +// } +// }else { +// for (String str : relUserIdArray) { +// userId = Long.valueOf(str); +// shopRelUser = shopRelUserService.getByUserId(userId); +// if(shopRelUser!=null){ +// throw new ServiceException(AppErrorConstant.SHOP_USER_DOUBLE); +// } +// } +// } +// +// } //验证商户名唯一 //Shop shopSame = this.getOne(new LambdaQueryWrapper<Shop>().eq(Shop::getDelFlag,0).eq(Shop::getShopName,mgtEditShopDto.getShopName())); - if(mgtEditShopDto.getShopId()!=null){ + if (mgtEditShopDto.getShopId() != null) { //取消验重 /*if(shopSame!=null&&!Objects.equals(shopSame.getShopId(),mgtEditShopDto.getShopId())){ throw new ServiceException(AppErrorConstant.SHOP_DOUBLE); @@ -244,6 +244,18 @@ shopFileService.deleteByShopId(shop.getShopId()); shopRelTagService.deleteByShopId(shop.getShopId()); shopRelUserService.deleteByShopId(shop.getShopId()); + //默认登录账号开关 开启后原默认账号开关关闭 + if(StringUtils.isNotEmpty(mgtEditShopDto.getRelUserOpenIds())){ + List<Long> openIdList = Arrays.stream(mgtEditShopDto.getRelUserOpenIds().split(",")) + .map(String::trim) + .filter(StringUtils::isNotBlank) + .map(Long::valueOf) + .collect(Collectors.toList()); + if ( !openIdList.isEmpty()) { + shopRelUserService.setDefaultCloseByUserIdList(openIdList); + } + } + //清空归属 shopStaffService.clearShopStaffRelation(shop.getShopId()); if(!shop.getShopName().equals(mgtEditShopDto.getShopName())){ @@ -307,6 +319,10 @@ handleShopStaff(shop.getShopId(),belongSysUser); }*/ //商户关联人员 + String[] openIds = null; + if(StringUtils.isNotEmpty(mgtEditShopDto.getRelUserOpenIds())){ + openIds = mgtEditShopDto.getRelUserOpenIds().split(",");//开启默认登录账号 + } if(StringUtils.isNotBlank(relUserIds)){ shopStaffService.clearShopStaffRelation(shop.getShopId()); String[] relUserIdArray = relUserIds.split(","); @@ -323,6 +339,7 @@ shopRelUser.setUserName(sysUser.getNickName()); shopRelUser.setUserMobile(sysUser.getPhonenumber()); shopRelUser.setUserDeptId(sysUser.getDeptId()); + shopRelUser.setIsDefault((null != openIds && openIds.length > 0 && Arrays.asList(openIds).contains(str)) ? 1 : 0); shopRelUserService.save(shopRelUser); handleShopStaff(shop.getShopId(),sysUser); } @@ -394,10 +411,10 @@ shopProportion.setDelFlag(0); shopProportion.setShopId(shop.getShopId()); shopProportion.setShopType(shop.getShopType()); + BigDecimal proportionPercent = new BigDecimal("30"); String proportionPercentStr = redisService.getCacheObject(SecurityConstant.SHOP_COMMON_PROPORTION); - BigDecimal proportionPercent = new BigDecimal(proportionPercentStr); - if(proportionPercent==null){ - proportionPercent = new BigDecimal("30"); + if(StringUtils.isNotEmpty(proportionPercentStr)){ + proportionPercent = new BigDecimal(proportionPercentStr); } shopProportion.setProportionPercent(proportionPercent); shopProportion.setUpdateTime(new Date()); @@ -462,7 +479,7 @@ }else{ shop.setCooperativeFlag(0); } - shop.setShopStatus(handelShopStatus(shop.getFrozenFlag(),shop.getCooperativeFlag(),shop.getAuthFlag())); + shop.setShopStatus(handelShopStatus(null,shop.getCooperativeFlag(), null)); shop.setUpdateTime(new Date()); shop.setUpdateUserId(mgtTerminateCooperationDto.getUserId()); this.saveOrUpdate(shop); @@ -483,7 +500,7 @@ }else{ shop.setFrozenFlag(0); } - shop.setShopStatus(handelShopStatus(shop.getFrozenFlag(),shop.getCooperativeFlag(),shop.getAuthFlag())); + shop.setShopStatus(handelShopStatus(shop.getFrozenFlag(), null, null)); this.saveOrUpdate(shop); } @@ -496,16 +513,16 @@ */ private Integer handelShopStatus(Integer frozenFlag, Integer cooperativeFlag, Integer authFlag){ Integer shopStatus = 1; - if(frozenFlag == 1){ + if(null != frozenFlag && frozenFlag == 1){ shopStatus = 0; return shopStatus; } - if(authFlag == 0){ - shopStatus = 3; + if(null != cooperativeFlag && cooperativeFlag == 0){ + shopStatus = 2; return shopStatus; } - if(cooperativeFlag == 0){ - shopStatus = 2; + if(null != authFlag && authFlag == 0){ + shopStatus = 3; return shopStatus; } return shopStatus; @@ -552,12 +569,16 @@ * @return */ @Override - public List<MgtShopPageVo> pageMgtShop(Page page, MgtShopPageDto mgtShopPageDto){ + public List<MgtShopPageVo> pageMgtShop(Page page, MgtShopPageDto mgtShopPageDto,List<Long> scope){ if (StringUtils.isNotBlank(mgtShopPageDto.getShopTags())) { mgtShopPageDto.setShopTags(mgtShopPageDto.getShopTags().replace(",", "|")); } + List<Integer> associatedAccount = null; + if(StringUtils.isNotEmpty(mgtShopPageDto.getAssociatedAccount())){ + associatedAccount = Arrays.asList(mgtShopPageDto.getAssociatedAccount().split(",")).stream().map(Integer::valueOf).collect(Collectors.toList()); + } // 分页查询商铺信息 - List<MgtShopPageVo> mgtShopPageVoList = shopMapper.pageMgtShop(page, mgtShopPageDto); + List<MgtShopPageVo> mgtShopPageVoList = shopMapper.pageMgtShop(page, mgtShopPageDto,scope, associatedAccount); // 如果查询结果不为空 if (!mgtShopPageVoList.isEmpty()) { // 创建签约用户ID集合和所属用户ID集合 @@ -599,8 +620,9 @@ shopPageVo.setSignUser(signUserMap.get(shopPageVo.getSignUserId()).getNickName()); } if (belongUserMap!=null&&!belongUserMap.isEmpty()&&shopPageVo.getBelongUserId() != null) { - shopPageVo.setBelongUser(belongUserMap.get(shopPageVo.getBelongUserId()).getNickName()); - shopPageVo.setBelongDept(belongUserMap.get(shopPageVo.getBelongUserId()).getDeptName()); + MgtSysSimpleUserVo mgtSysSimpleUserVo = belongUserMap.get(shopPageVo.getBelongUserId()); + shopPageVo.setBelongUser(null == mgtSysSimpleUserVo ? "" : mgtSysSimpleUserVo.getNickName()); + shopPageVo.setBelongDept(null == mgtSysSimpleUserVo ? "" : mgtSysSimpleUserVo.getDeptName()); } } } @@ -653,12 +675,17 @@ if(shopRelUserList!=null&&!shopRelUserList.isEmpty()){ StringJoiner shopUserJs = new StringJoiner(","); StringJoiner shopUserNameJs = new StringJoiner(","); + StringJoiner relUserOpenIds = new StringJoiner(","); for(ShopRelUser shopRelUser : shopRelUserList){ shopUserJs.add(shopRelUser.getUserId().toString()); shopUserNameJs.add(shopRelUser.getUserName()); + if (shopRelUser.getIsDefault()==1){ + relUserOpenIds.add(shopRelUser.getUserId().toString()); + } } mgtShopInfoVo.setRelUserIds(shopUserJs.toString()); mgtShopInfoVo.setRelUsers(shopUserNameJs.toString()); + mgtShopInfoVo.setRelUserOpenIds(relUserOpenIds.toString()); } //商户图片 List<ShopFile> shopFileList = shopFileService.listShopFileByShopId(shopId); @@ -913,43 +940,46 @@ staffHomeShopTotalVo.setShopTask(shopTaskCount); return staffHomeShopTotalVo; } + /** * 获取商户端 + * * @param merBaseDto * @return */ @Override - public MerHomeShopTotalVo getMerHomeTotal(MerBaseDto merBaseDto){ + public MerHomeShopTotalVo getMerHomeTotal(MerBaseDto merBaseDto) { Long userId = merBaseDto.getUserId(); MerHomeShopTotalVo merHomeShopTotalVo = new MerHomeShopTotalVo(); - ShopRelUser shopRelUser = shopRelUserService.getByUserId(userId); - Long shopId = shopRelUser.getShopId(); + Long shopId = merBaseDto.getShopId(); //如果商户变动刷新token - if(!shopId.equals(merBaseDto.getShopId())){ - String userKey = SecurityUtils.getUserKey(); - redisService.deleteObject(CacheConstants.LOGIN_TOKEN_KEY+userKey); - throw new ServiceException("登录状态已过期",401); - } +// if(!shopId.equals(merBaseDto.getShopId())){ +// String userKey = SecurityUtils.getUserKey(); +// redisService.deleteObject(CacheConstants.LOGIN_TOKEN_KEY+userKey); +// throw new ServiceException("登录状态已过期",401); +// } merHomeShopTotalVo.setShopId(shopId); Shop shop = this.getById(shopId); - if(shop.getFrozenFlag()==1){ + if (shop.getFrozenFlag() == 1) { String userKey = SecurityUtils.getUserKey(); - redisService.deleteObject(CacheConstants.LOGIN_TOKEN_KEY+userKey); - throw new ServiceException("商户已被冻结,请联系管理员",401); + redisService.deleteObject(CacheConstants.LOGIN_TOKEN_KEY + userKey); + throw new ServiceException("商户已被冻结,请联系管理员", 401); } merHomeShopTotalVo.setShopType(shop.getShopType()); MerHomeShopTotalVo orderVo = remoteOrderService.getMerHomeTotal(merHomeShopTotalVo).getData(); merHomeShopTotalVo.setShopId(shopId); merHomeShopTotalVo.setShopType(shop.getShopType()); - merHomeShopTotalVo.setTodayShop(orderVo.getTodayShop()); - merHomeShopTotalVo.setUnHandleOrder(orderVo.getUnHandleOrder()); - Integer taskCount = memberTaskService.getMemberIngTotal(shopId); - merHomeShopTotalVo.setTask(taskCount); - merHomeShopTotalVo.setShopTurnover(orderVo.getShopTurnover()); - merHomeShopTotalVo.setCycleSurp(orderVo.getCycleSurp()); - merHomeShopTotalVo.setExplorationSurp(orderVo.getExplorationSurp()); + merHomeShopTotalVo.setTodayShop(null == orderVo ? 0: orderVo.getTodayShop()); + merHomeShopTotalVo.setUnHandleOrder(null == orderVo ? 0: orderVo.getUnHandleOrder()); + List<Integer> taskCount = memberTaskService.getMemberIngTotal(shopId); + merHomeShopTotalVo.setTask(taskCount.size()); + merHomeShopTotalVo.setShopTurnover(null == orderVo ? BigDecimal.ZERO : orderVo.getShopTurnover()); + merHomeShopTotalVo.setCycleSurp(null == orderVo ? 0: orderVo.getCycleSurp()); + merHomeShopTotalVo.setExplorationSurp(null == orderVo ? 0: orderVo.getExplorationSurp()); merHomeShopTotalVo.setPlatformBirthdayFlag(shop.getPlatformBirthdayFlag()); merHomeShopTotalVo.setPlatformCouponFlag(shop.getPlatformCouponFlag()); + int unHandleReserve = shopAppointableTimeService.count(new LambdaQueryWrapper<TShopAppointableTime>().eq(TShopAppointableTime::getShopId, shopId).eq(TShopAppointableTime::getStatus, 1)); + merHomeShopTotalVo.setUnHandleReserve(unHandleReserve); return merHomeShopTotalVo; } @@ -1042,8 +1072,8 @@ * @return List<MgtShopListSimpleVo> */ @Override - public List<MgtShopListSimpleVo> listMgtShopSimpleVo(MgtShopListDto mgtShopListDto){ - return shopMapper.listMgtShopSimpleVo(mgtShopListDto); + public List<MgtShopListSimpleVo> listMgtShopSimpleVo(MgtShopListDto mgtShopListDto,List<Long> scope){ + return shopMapper.listMgtShopSimpleVo(mgtShopListDto,scope); } /** @@ -1080,8 +1110,8 @@ * @date 2023/6/14 23:01 */ @Override - public List<MgtShopAuthPageVo> pageMgtShopAuth(Page page, MgtShopAuthPageDto mgtShopAuthPageDto){ - return shopMapper.pageMgtShopAuth(page, mgtShopAuthPageDto); + public List<MgtShopAuthPageVo> pageMgtShopAuth(Page page, MgtShopAuthPageDto mgtShopAuthPageDto,List<Long> scope){ + return shopMapper.pageMgtShopAuth(page, mgtShopAuthPageDto,scope); } /** @@ -1091,8 +1121,9 @@ * @return */ @Override - public List<MgtShopHFTXAuthPageVo> pageMgtShopHFTXAuth(Page page, MgtShopHFTXAuthPageDto mgtShopAuthPageDto) { - return shopMapper.pageMgtShopHFTXAuth(page, mgtShopAuthPageDto); + public List<MgtShopHFTXAuthPageVo> pageMgtShopHFTXAuth(Page page, MgtShopHFTXAuthPageDto mgtShopAuthPageDto, + List<Long> scope) { + return shopMapper.pageMgtShopHFTXAuth(page, mgtShopAuthPageDto,scope); } /** @@ -1103,8 +1134,8 @@ * @date 2023/6/18 16:59 */ @Override - public MgtBulletinBoardVo boardShopTotal(){ - MgtBulletinBoardVo mgtBulletinBoardVoShop = shopMapper.shopTotal(); + public MgtBulletinBoardVo boardShopTotal(List<Long> userIds){ + MgtBulletinBoardVo mgtBulletinBoardVoShop = shopMapper.shopTotal(userIds); return mgtBulletinBoardVoShop; } @@ -1246,7 +1277,7 @@ userIdList.add(mgtBasePlatformDto.getUserId()); } else { MgtUserIdByDept mgtUserIdByDept = new MgtUserIdByDept(); - mgtUserIdByDept.setDeptId(mgtBasePlatformDto.getUserId()); + mgtUserIdByDept.setDeptId(mgtBasePlatformDto.getDeptId()); mgtUserIdByDept = configService.getUserIdByDept(mgtUserIdByDept).getData(); userIdList = mgtUserIdByDept.getUserIdList(); } @@ -1254,8 +1285,20 @@ mgtBasePlatformDto.setUserIdList(userIdList); } } + //数据权限 + List<Long> userIds = remoteUserService.getScopeOfAuthorityUserId(); + if(null != userIds){ + List<Long> userIdList = mgtBasePlatformDto.getUserIdList(); + if(null != userIdList){ + userIdList.addAll(userIds); + }else{ + userIdList = userIds; + } + mgtBasePlatformDto.setUserIdList(userIdList); + } + //获取基础统计 - MgtPlTotalShopTotalVo plTotalShopTotalVo = shopMapper.getPlTotalShopTotal(); + MgtPlTotalShopTotalVo plTotalShopTotalVo = shopMapper.getPlTotalShopTotal(userIds); plTotalShopTotalVo.setSignTotal(0); List<Long> shopIdList = shopMapper.listShopIdByTotal(mgtBasePlatformDto); if (!shopIdList.isEmpty()) { @@ -1436,19 +1479,19 @@ }).collect(Collectors.toList()); return simpleShopVoList; } - + /** - * @description 获取用户管理商户 - * @author jqs - * @date 2023/7/14 10:00 * @param userId - * @return Shop + * @return Shop + * @description 获取用户管理商户 + * @author jqs + * @date 2023/7/14 10:00 */ @Override - public List<Shop> getShopByBelongUserId(Long userId){ + public List<Shop> getShopByBelongUserId(Long userId) { LambdaQueryWrapper<Shop> queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(Shop::getDelFlag,0); - queryWrapper.eq(Shop::getBelongUserId,userId); + queryWrapper.eq(Shop::getDelFlag, 0); + queryWrapper.eq(Shop::getBelongUserId, userId); return this.list(queryWrapper); } @@ -1542,11 +1585,11 @@ // 通过远程订单服务获取商店总览信息 MerHomeShopTotalVo orderVo = remoteOrderService.getMerHomeTotal(merHomeShopTotalVo).getData(); // 获取商店任务计数 - Integer taskCount = memberTaskService.getMemberIngTotal(shopId); + List<Integer> taskCount = memberTaskService.getMemberIngTotal(shopId); // 设置员工商店信息对象的属性 staffShopInfoGetVo.setTodayReservation(0); staffShopInfoGetVo.setUnHandleOrder(orderVo.getUnHandleOrder()); - staffShopInfoGetVo.setShopTask(taskCount); + staffShopInfoGetVo.setShopTask(taskCount.size()); staffShopInfoGetVo.setShopTurnover(orderVo.getShopTurnover()); staffShopInfoGetVo.setCycleSurp(orderVo.getCycleSurp()); staffShopInfoGetVo.setExplorationSurp(orderVo.getExplorationSurp()); @@ -1709,7 +1752,7 @@ private void applySuccessUpdateShopStatus(Long shopId){ // 更新商户状态为正常 Shop shop = this.getById(shopId); - Integer shopStatus = handelShopStatus(shop.getFrozenFlag(), shop.getCooperativeFlag(), 1); + Integer shopStatus = handelShopStatus(null, null, 1); LambdaUpdateWrapper<Shop> updateWrapper = Wrappers.lambdaUpdate(); updateWrapper.eq(Shop::getShopId, shopId) .set(Shop::getShopStatus, shopStatus) @@ -1841,7 +1884,7 @@ ProfitSharingReceiverResult result = wechatPayUtils.addProfitSharingReceiver(request); if(StringUtils.isNotBlank(result.getAccount())){ shop.setAccountFlag(1); - shop.setShopStatus(handelShopStatus(shop.getFrozenFlag(),shop.getCooperativeFlag(),shop.getAuthFlag())); + shop.setShopStatus(handelShopStatus(null , null,shop.getAuthFlag())); this.saveOrUpdate(shop); } } @@ -1900,4 +1943,148 @@ Integer pageSize = merchantBasicdataSettlementDto.getPageSize(); return HuiFuTianXiaUtil.getMerchantBasicdataSettlement(IdUtils.simpleUUID(), huifuId, startTime, endTime, pageNum.toString(), pageSize.toString()); } + + + + /** + * @description + * @author jqs + * @date 2023/8/10 22:53 + * @param cityCodes + * @return List<Long> + */ + @Override + public List<Shop> listShopByCityCode(List<String> cityCodes){ + return shopMapper.listShopByCityCode(cityCodes); + } + + + /** + * 根据员工id获取对应的门店 + * @param userIds + * @return + */ + @Override + public List<Shop> getShopBySysUserIds(List<Long> userIds) { + if(null == userIds || userIds.size() == 0){ + return new ArrayList<>(); + } + QueryWrapper<Shop> queryWrapper = new QueryWrapper<Shop>().eq("del_flag", 0).ne("shop_status", -1); + if(null != userIds && userIds.size() > 0){ + queryWrapper.in("belong_user_id", userIds); + } + List<Shop> list = this.list(queryWrapper); + return list; + } + + @Override + public List<Shop> getFranchiseeIdsBYDealerId(Long shopId) { + return shopMapper.getFranchiseeIdsBYDealerId(shopId); + } + + /** + * 修改商户类型 + * @param shopId + * @return + */ + @Override + public R<Void> changeShopType(Long shopId) { + Shop shop = shopMapper.selectById(shopId); + if(null == shop|| shop.getDelFlag() != 0){ + return R.fail("商户不存在"); + } + //商户修改类型 1-经销商 2-加盟商 + shop.setShopType(shop.getShopType()==1?2:1); + if (shop.getShopType()==2){ + //经销商转加盟商: 先解绑该经销商下所有加盟商 + shopMapper.setBelongShopIdNull(shopId); + } else { + //该加盟商所属区域下的加盟商 改为该新转换的经销商 + List<String> areaCodes = Optional.ofNullable(shop.getSignAreaCode()) + .map(codes -> codes.split(";")) + .map(Arrays::asList) + .orElse(Collections.emptyList());//签约区域 + if (!areaCodes.isEmpty()){ + // 1. 查询符合条件的加盟商列表 + List<Long> shopIds = shopMapper.getShopListBySignAreaCodes(areaCodes); + + // 2. 批量更新(优化性能,避免循环中单条更新) + if(null != shopIds && !shopIds.isEmpty()){ + shopMapper.updateBelongShopIdBatch(shopIds,shop.getShopId()); + } + } + } + shop.setUpdateUserId(SecurityUtils.getUserId()); + shopMapper.updateById(shop); + + return R.ok(); + } + + @Override + public Page<MgtOneClinkSyncingShopPageVo> getMgtShopPageVoByShopIds(MGtOneClinkSyncingShopPageDTO dto) { + Page<MgtOneClinkSyncingShopPageVo> page = new Page<>(); + page.setSize(dto.getPageSize()); + page.setCurrent(dto.getPageNum()); + List<MgtOneClinkSyncingShopPageVo> mgtShopPageVoList = shopMapper.getMgtShopPageVoByShopIds(page,dto.getShopIds()); + return page.setRecords(mgtShopPageVoList); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public R updateShopByOneClinkSyncing(OneClinkSyncing oneClinkSyncing) { + if (StringUtils.isBlank(oneClinkSyncing.getShopIds())) { + return R.fail("请选择要更新的门店"); + } + // 1. 转换门店ID列表 + List<Long> shopIdList = Arrays.stream(oneClinkSyncing.getShopIds().split(",")) + .map(String::trim) + .filter(StringUtils::isNotBlank) + .map(Long::parseLong) + .collect(Collectors.toList()); + // 批量删除封面和Banner图 + shopFileService.deleteBatchByShopIds(shopIdList); + //批量添加封面图 + List<ShopFile> coverUrlList = shopIdList.stream() + .map(shopId -> new ShopFile() + .setShopId(shopId) + .setFileType(1) + .setFileUrl(oneClinkSyncing.getCoverUrl()) + .setDelFlag(0)) + .collect(Collectors.toList()); + shopFileService.saveBatch(coverUrlList); + //批量添加banner图 + List<String> bannerUrlList = Arrays.stream(oneClinkSyncing.getDetailsPicture().split(",")) + .map(String::trim) + .filter(StringUtils::isNotBlank) + .collect(Collectors.toList()); + List<ShopFile> bannerList = new ArrayList<>(); + for (Long shopId : shopIdList) { + for (String bannerUrl : bannerUrlList) { + bannerList.add(new ShopFile() + .setShopId(shopId) + .setFileType(2) // Banner图 + .setFileUrl(bannerUrl) + .setDelFlag(0)); + } + } + shopFileService.saveBatch(bannerList); + + //批量修改门店信息 + oneClinkSyncing.setShopIdList(shopIdList); + shopMapper.updateShopByOneClinkSyncing(oneClinkSyncing); + return R.ok(); + } + + @Override + public List<String> getRelUserShop(Long userId) { + List<ShopRelUser> shopRelUserList = shopRelUserService.getByUserId(userId); + List<Long> shopIds = shopRelUserList.stream().map(ShopRelUser::getShopId).collect(Collectors.toList()); + if(!shopIds.isEmpty()){ + List<Shop> shops = shopMapper.selectList(new LambdaQueryWrapper<Shop>() + .ne(Shop::getShopStatus,-1) + .in(Shop::getShopId,shopIds)); + return shops.stream().map(Shop::getShopName).collect(Collectors.toList()); + } + return null; + } } -- Gitblit v1.7.1