From c5d38d650d2ac4101b1293a4f17346e7d5420076 Mon Sep 17 00:00:00 2001 From: huliguo <2023611923@qq.com> Date: 星期五, 04 七月 2025 20:39:58 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/2.0' into 2.0 --- ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java | 1273 +++++++++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 965 insertions(+), 308 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 5427a4c..23dab3a 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 @@ -2,14 +2,18 @@ import com.alibaba.fastjson2.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; 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.github.binarywang.wxpay.bean.ecommerce.ApplymentsResult; import com.github.binarywang.wxpay.bean.ecommerce.ApplymentsStatusResult; +import com.github.binarywang.wxpay.bean.ecommerce.ProfitSharingReceiverRequest; +import com.github.binarywang.wxpay.bean.ecommerce.ProfitSharingReceiverResult; import com.github.binarywang.wxpay.exception.WxPayException; import com.ruoyi.common.core.constant.CacheConstants; +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.StringUtils; @@ -20,6 +24,7 @@ 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.pojo.task.ShopTask; import com.ruoyi.shop.domain.vo.*; import com.ruoyi.shop.enums.WxApplyMentStateEnum; import com.ruoyi.shop.mapper.shop.ShopMapper; @@ -27,17 +32,24 @@ import com.ruoyi.shop.service.task.MemberTaskService; import com.ruoyi.shop.service.task.ShopFileService; import com.ruoyi.shop.service.task.ShopTaskService; +import com.ruoyi.shop.util.HuiFuTianXiaUtil; import com.ruoyi.shop.util.WechatPayUtils; -import com.ruoyi.shop.util.WxShopUtils; -import com.ruoyi.shop.util.dto.*; +import com.ruoyi.shop.util.map.MapUtil; +import com.ruoyi.shop.util.map.vo.TencentDistanceMatrix; +import com.ruoyi.shop.util.map.vo.TencentDistanceMatrixElements; 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.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -58,6 +70,7 @@ * @since 2023-04-25 */ @Service +@Log4j2 public class ShopServiceImpl extends ServiceImpl<ShopMapper, Shop> implements ShopService { @Resource @@ -97,6 +110,9 @@ private ShopAuthenticationService shopAuthenticationService; @Resource + private ShopAuthenticationHftxService shopAuthenticationHftxService; + + @Resource private ShopProportionService shopProportionService; @Resource @@ -122,10 +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; + + /** * 获取商户详情 * @@ -133,21 +162,21 @@ * @return */ @Override - public AppShopInfoVo getAppShopInfo(Long shopId) { + public AppShopInfoVo getAppShopInfo(Long shopId){ AppShopInfoVo appShopInfoVo = new AppShopInfoVo(); Shop shop = this.getById(shopId); - BeanUtils.copyProperties(shop, appShopInfoVo); + BeanUtils.copyProperties(shop,appShopInfoVo); //商户地址 - appShopInfoVo.setShopAddress(shop.getShopAreaName() + shop.getShopAddress()); + appShopInfoVo.setShopAddress(shop.getShopAreaName()+shop.getShopAddress()); //商品图片 List<ShopFile> shopFileList = shopFileService.listShopFileByShopId(shopId); String shopPicture = null; StringJoiner shopBanners = new StringJoiner(","); - if (shopFileList != null && !shopFileList.isEmpty()) { - for (ShopFile shopFile : shopFileList) { - if (shopFile.getFileType() == 1) { + if(shopFileList!=null&&!shopFileList.isEmpty()){ + for(ShopFile shopFile : shopFileList){ + if(shopFile.getFileType()==1){ shopPicture = shopFile.getFileUrl(); - } else { + }else{ shopBanners.add(shopFile.getFileUrl()); } } @@ -156,12 +185,12 @@ appShopInfoVo.setShopBanners(shopBanners.toString()); //商户证书 List<ShopCertificate> shopCertificateList = shopCertificateService.listShopCertificateByShopId(shopId); - if (shopCertificateList != null && !shopCertificateList.isEmpty()) { + if(shopCertificateList!=null&&!shopCertificateList.isEmpty()){ appShopInfoVo.setShopCertificateList(shopCertificateList); } return appShopInfoVo; } - + /** * 创建商户 * @@ -174,35 +203,39 @@ BigDecimal zeroBig = BigDecimal.ZERO; //验证关联账号唯一 String relUserIds = mgtEditShopDto.getRelUserIds(); - if (StringUtils.isNotBlank(relUserIds)) { - 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())); + //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())) { + //取消验重 + /*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()); @@ -211,31 +244,42 @@ shopFileService.deleteByShopId(shop.getShopId()); shopRelTagService.deleteByShopId(shop.getShopId()); shopRelUserService.deleteByShopId(shop.getShopId()); + //默认登录账号开关 开启后原默认账号开关关闭 + 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); + } + //清空归属 - shopRelUserService.deleteByShopId(shop.getShopId()); shopStaffService.clearShopStaffRelation(shop.getShopId()); - if (!shop.getShopName().equals(mgtEditShopDto.getShopName())) { + if(!shop.getShopName().equals(mgtEditShopDto.getShopName())){ MgtMemberShopNameDto mgtMemberShopNameDto = new MgtMemberShopNameDto(); mgtMemberShopNameDto.setShopId(mgtEditShopDto.getShopId()); mgtMemberShopNameDto.setShopName(mgtEditShopDto.getShopName()); remoteMemberService.updateMemberShopName(mgtMemberShopNameDto); } - } else { - if (shopSame != null) { + }else{ + //取消验重 + /*if(shopSame!=null){ throw new ServiceException(AppErrorConstant.SHOP_DOUBLE); - } + }*/ shop.setDelFlag(0); shop.setShopStatus(3); shop.setCreateTime(new Date()); shop.setCreateUserId(mgtEditShopDto.getUserId()); shop.setFrozenFlag(0); - shop.setCooperativeFlag(0); + shop.setCooperativeFlag(1); shop.setAuthFlag(0); + shop.setAccountFlag(0); newShop = true; } - BeanUtils.copyProperties(mgtEditShopDto, shop); + BeanUtils.copyProperties(mgtEditShopDto,shop); String shopDetail = shop.getShopDetail(); - if (StringUtils.isNotBlank(shopDetail)) { + if(StringUtils.isNotBlank(shopDetail)){ byte[] decodedBytes = Base64.getDecoder().decode(shopDetail); shopDetail = new String(decodedBytes, StandardCharsets.UTF_8); shop.setShopDetail(shopDetail); @@ -248,13 +292,13 @@ this.saveOrUpdate(shop); //商户标签 String shopTagIds = mgtEditShopDto.getShopTagIds(); - if (StringUtils.isNotBlank(shopTagIds)) { + if(StringUtils.isNotBlank(shopTagIds)){ String[] shopTagIdArray = shopTagIds.split(","); ShopRelTag shopRelTag; Long tagid; StringJoiner shopTagSj = new StringJoiner(","); SysTag sysTag; - for (String str : shopTagIdArray) { + for(String str : shopTagIdArray){ shopRelTag = new ShopRelTag(); tagid = Long.valueOf(str); sysTag = configService.getSysTag(tagid).getData(); @@ -273,13 +317,14 @@ handleShopStaff(shop.getShopId(),belongSysUser); }*/ //商户关联人员 - if (StringUtils.isNotBlank(relUserIds)) { + String[] openIds = mgtEditShopDto.getRelUserOpenIds().split(",");//开启默认登录账号 + if(StringUtils.isNotBlank(relUserIds)){ shopStaffService.clearShopStaffRelation(shop.getShopId()); String[] relUserIdArray = relUserIds.split(","); ShopRelUser shopRelUser; Long userId; SysUser sysUser; - for (String str : relUserIdArray) { + for(String str : relUserIdArray){ shopRelUser = new ShopRelUser(); userId = Long.valueOf(str); sysUser = sysUserService.getSysUser(userId).getData(); @@ -289,8 +334,9 @@ shopRelUser.setUserName(sysUser.getNickName()); shopRelUser.setUserMobile(sysUser.getPhonenumber()); shopRelUser.setUserDeptId(sysUser.getDeptId()); + shopRelUser.setIsDefault((openIds.length > 0 && Arrays.asList(openIds).contains(str)) ? 1 : 0); shopRelUserService.save(shopRelUser); - handleShopStaff(shop.getShopId(), sysUser); + handleShopStaff(shop.getShopId(),sysUser); } } //商户封面 @@ -301,10 +347,10 @@ 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) { + for(String str : shopBannerArray){ shopFile = new ShopFile(); shopFile.setDelFlag(0); shopFile.setFileType(2); @@ -313,13 +359,13 @@ shopFileService.save(shopFile); } } - if (newShop) { + if(newShop){ //生成商户关联记录 - initNewShop(shop, mgtEditShopDto.getUserId()); + initNewShop(shop,mgtEditShopDto.getUserId()); CodeGetDto codeGetDto = new CodeGetDto(); - String url = "https://wxapp.hhhrt.cn/mini/activity?activityId=" + shop.getShopId(); + String url = "https://wxapp.hhhrt.cn/mini/shop?id="+shop.getShopId(); codeGetDto.setUrl(url); - codeGetDto.setFileName("shop-" + shop.getShopId()); + codeGetDto.setFileName("shop-"+shop.getShopId()); String codeUrl = remoteFileService.getAppOrderTotal(codeGetDto).getData(); shop.setShopCode(codeUrl); this.saveOrUpdate(shop); @@ -327,14 +373,14 @@ } /** + * @description 商户关联类初始化 + * @author jqs + * @date 2023/7/7 11:25 * @param shop * @param userId - * @return void - * @description 商户关联类初始化 - * @author jqs - * @date 2023/7/7 11:25 + * @return void */ - private void initNewShop(Shop shop, Long userId) { + private void initNewShop(Shop shop,Long userId){ BigDecimal zeroBig = new BigDecimal("0.00"); //商户账户信息初始化 ShopAccount shopAccount = new ShopAccount(); @@ -352,13 +398,20 @@ shopAuthentication.setAuthId(authId); shopAuthentication.setDelFlag(0); shopAuthentication.setShopId(shop.getShopId()); + shopAuthentication.setAuditStatus(0); + shopAuthentication.setSignState(1); shopAuthenticationService.save(shopAuthentication); //商户分成信息初始化 ShopProportion shopProportion = new ShopProportion(); shopProportion.setDelFlag(0); shopProportion.setShopId(shop.getShopId()); shopProportion.setShopType(shop.getShopType()); - shopProportion.setProportionPercent(new BigDecimal("100.00")); + String proportionPercentStr = redisService.getCacheObject(SecurityConstant.SHOP_COMMON_PROPORTION); + BigDecimal proportionPercent = new BigDecimal(proportionPercentStr); + if(proportionPercent==null){ + proportionPercent = new BigDecimal("30"); + } + shopProportion.setProportionPercent(proportionPercent); shopProportion.setUpdateTime(new Date()); shopProportion.setUpdateUserId(userId); shopProportionService.save(shopProportion); @@ -400,16 +453,16 @@ } /** + * @description 终止合作 + * @author jqs + * @date 2023/6/20 12:01 * @param mgtTerminateCooperationDto - * @return void - * @description 终止合作 - * @author jqs - * @date 2023/6/20 12:01 + * @return void */ @Override - public void terminateMgtCooperation(MgtTerminateCooperationDto mgtTerminateCooperationDto) { + public void terminateMgtCooperation(MgtTerminateCooperationDto mgtTerminateCooperationDto){ Shop shop = this.getById(mgtTerminateCooperationDto.getShopId()); - if (mgtTerminateCooperationDto.getCooperativeFlag() == 1) { + if(mgtTerminateCooperationDto.getCooperativeFlag()==1){ /*Date coopStartDate = shop.getCooperationStartTime(); Date coopEndDate = shop.getCooperationEndTime(); Date nowTime = new Date(); @@ -418,53 +471,53 @@ throw new ServiceException(AppErrorConstant.COOPERATION_TIME_ERROR); }*/ shop.setCooperativeFlag(1); - } else { + }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); } /** + * @description 冻结商户 + * @author jqs + * @date 2023/7/15 13:56 * @param mgtFrozenShopDto - * @return void - * @description 冻结商户 - * @author jqs - * @date 2023/7/15 13:56 + * @return void */ @Override - public void frozenMgtShop(MgtFrozenShopDto mgtFrozenShopDto) { + public void frozenMgtShop(MgtFrozenShopDto mgtFrozenShopDto){ Shop shop = this.getById(mgtFrozenShopDto.getShopId()); - if (mgtFrozenShopDto.getFrozenFlag() == 1) { + if(mgtFrozenShopDto.getFrozenFlag()==1){ shop.setFrozenFlag(1); - } else { + }else{ shop.setFrozenFlag(0); } - shop.setShopStatus(handelShopStatus(shop.getFrozenFlag(), shop.getCooperativeFlag(), shop.getAuthFlag())); + shop.setShopStatus(handelShopStatus(shop.getFrozenFlag(), null, null)); this.saveOrUpdate(shop); } /** + * @description 处理商户状态 + * @author jqs + * @date 2023/7/15 14:09 * @param - * @return Integer - * @description 处理商户状态 - * @author jqs - * @date 2023/7/15 14:09 + * @return Integer */ - private Integer handelShopStatus(Integer frozenFlag, Integer cooperativeFlag, Integer authFlag) { + 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; @@ -473,17 +526,16 @@ /** * 修改合作时间 - * * @param mgtChangeCoopDto */ @Override - public void changeCooperationTime(MgtChangeCoopDto mgtChangeCoopDto) { + public void changeCooperationTime(MgtChangeCoopDto mgtChangeCoopDto){ Shop shop = this.getById(mgtChangeCoopDto.getShopId()); Date coopStartDate = null; Date coopEndDate = null; try { - coopStartDate = DateUtils.parseDate(mgtChangeCoopDto.getCoopStartTime(), "yyyy-MM-dd"); - coopEndDate = DateUtils.parseDate(mgtChangeCoopDto.getCoopEndTime(), "yyyy-MM-dd"); + coopStartDate = DateUtils.parseDate(mgtChangeCoopDto.getCoopStartTime(),"yyyy-MM-dd"); + coopEndDate = DateUtils.parseDate(mgtChangeCoopDto.getCoopEndTime(),"yyyy-MM-dd"); } catch (ParseException e) { throw new RuntimeException(e); } @@ -491,13 +543,13 @@ shop.setCooperationStartTime(coopStartDate); shop.setCooperationEndTime(coopEndDate); Boolean inTime = false; - if (coopStartDate.compareTo(nowTime) <= 0 && coopEndDate.compareTo(nowTime) >= 0) { + if(coopStartDate.compareTo(nowTime)<=0&&coopEndDate.compareTo(nowTime)>=0){ inTime = true; shop.setCooperativeFlag(1); - } else { + }else{ shop.setCooperativeFlag(0); } - if (shop.getShopStatus() == 2 && inTime) { + if(shop.getShopStatus()==2&&inTime){ shop.setShopStatus(1); } shop.setUpdateTime(nowTime); @@ -507,18 +559,21 @@ /** * 分页获取商户 - * * @param page * @param mgtShopPageDto * @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集合 @@ -536,7 +591,7 @@ MgtBaseBathDto mgtBaseBathDto; Map<Long, MgtSysSimpleUserVo> signUserMap = null; Map<Long, MgtSysSimpleUserVo> belongUserMap = null; - if (signUserIdSet != null && !signUserIdSet.isEmpty()) { + if(signUserIdSet!=null&&!signUserIdSet.isEmpty()){ String signUserString = String.join(",", signUserIdSet.stream().map(Object::toString).collect(Collectors.toList())); mgtBaseBathDto = new MgtBaseBathDto(); mgtBaseBathDto.setIds(signUserString); @@ -544,7 +599,7 @@ signUserMap = signUserVoList.stream() .collect(Collectors.toMap(MgtSysSimpleUserVo::getUserId, Function.identity())); } - if (belongUserIdSet != null && !belongUserIdSet.isEmpty()) { + if(belongUserIdSet!=null&&!belongUserIdSet.isEmpty()){ // 将签约用户ID集合和所属用户ID集合转为字符串 String belongUserString = String.join(",", belongUserIdSet.stream().map(Object::toString).collect(Collectors.toList())); // 查询签约用户和所属用户的详细信息 @@ -556,12 +611,13 @@ } // 遍历查询结果,将签约用户和所属用户的详细信息添加到商铺信息中 for (MgtShopPageVo shopPageVo : mgtShopPageVoList) { - if (signUserMap != null && !signUserMap.isEmpty() && shopPageVo.getSignUserId() != null) { + if (signUserMap!=null&&!signUserMap.isEmpty()&&shopPageVo.getSignUserId() != null) { 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()); + if (belongUserMap!=null&&!belongUserMap.isEmpty()&&shopPageVo.getBelongUserId() != null) { + MgtSysSimpleUserVo mgtSysSimpleUserVo = belongUserMap.get(shopPageVo.getBelongUserId()); + shopPageVo.setBelongUser(null == mgtSysSimpleUserVo ? "" : mgtSysSimpleUserVo.getNickName()); + shopPageVo.setBelongDept(null == mgtSysSimpleUserVo ? "" : mgtSysSimpleUserVo.getDeptName()); } } } @@ -571,59 +627,69 @@ /** * 获取商户详情 - * * @param shopId * @return */ @Override - public MgtShopInfoVo getMgtShopInfo(Long shopId) { + public MgtShopInfoVo getMgtShopInfo(Long shopId){ MgtShopInfoVo mgtShopInfoVo = new MgtShopInfoVo(); Shop shop = this.getById(shopId); //基本信息拷贝 - BeanUtils.copyProperties(shop, mgtShopInfoVo); + BeanUtils.copyProperties(shop,mgtShopInfoVo); String shopDetail = mgtShopInfoVo.getShopDetail(); - if (StringUtils.isNotBlank(shopDetail)) { + if(StringUtils.isNotBlank(shopDetail)){ byte[] encodedBytes = Base64.getEncoder().encode(shopDetail.getBytes(StandardCharsets.UTF_8)); shopDetail = new String(encodedBytes, StandardCharsets.UTF_8); mgtShopInfoVo.setShopDetail(shopDetail); } //商户标签 List<ShopRelTag> shopRelTagList = shopRelTagService.listShopRelTagByShopId(shopId); - if (shopRelTagList != null && !shopRelTagList.isEmpty()) { + if(shopRelTagList!=null&&!shopRelTagList.isEmpty()){ StringJoiner shopTagJs = new StringJoiner(","); - for (ShopRelTag shopRelTag : shopRelTagList) { + for(ShopRelTag shopRelTag : shopRelTagList){ shopTagJs.add(shopRelTag.getTagId().toString()); } mgtShopInfoVo.setShopTagIds(shopTagJs.toString()); } - if (mgtShopInfoVo.getBelongUserId() != null) { + //归属员工 + if(mgtShopInfoVo.getBelongUserId()!=null){ SysUser sysUser = sysUserService.getSysUser(mgtShopInfoVo.getBelongUserId()).getData(); - mgtShopInfoVo.setBelongUserName(sysUser.getNickName()); + if(sysUser!=null){ + mgtShopInfoVo.setBelongUserName(sysUser.getNickName()); + } } - if (mgtShopInfoVo.getBelongShopId() != null) { + //归属商户 + if(mgtShopInfoVo.getBelongShopId()!=null){ Shop belongShop = this.getByShopId(mgtShopInfoVo.getBelongShopId()); - mgtShopInfoVo.setBelongShopName(belongShop.getShopName()); + if(belongShop!=null){ + mgtShopInfoVo.setBelongShopName(belongShop.getShopName()); + } } //商户关联用户 List<ShopRelUser> shopRelUserList = shopRelUserService.listByShopId(shopId); - if (shopRelUserList != null && !shopRelUserList.isEmpty()) { + if(shopRelUserList!=null&&!shopRelUserList.isEmpty()){ StringJoiner shopUserJs = new StringJoiner(","); StringJoiner shopUserNameJs = new StringJoiner(","); - for (ShopRelUser shopRelUser : shopRelUserList) { + 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); - if (shopFileList != null && !shopFileList.isEmpty()) { + if(shopFileList!=null&&!shopFileList.isEmpty()){ StringJoiner shopBannerJs = new StringJoiner(","); - for (ShopFile shopFile : shopFileList) { - if (shopFile.getFileType() == 1) { + for(ShopFile shopFile : shopFileList){ + if(shopFile.getFileType()==1){ mgtShopInfoVo.setShopPicture(shopFile.getFileUrl()); - } else { + }else{ shopBannerJs.add(shopFile.getFileUrl()); } } @@ -637,23 +703,22 @@ /** * 修改商户标签 - * * @param mgtEditShopTagDto */ @Override - public void editShopTag(MgtEditShopTagDto mgtEditShopTagDto) { + public void editShopTag(MgtEditShopTagDto mgtEditShopTagDto){ Long shopId = Long.valueOf(mgtEditShopTagDto.getId()); String shopTagIds = mgtEditShopTagDto.getShopTagIds(); String shopTags = null; //删除以前的标签 shopRelTagService.deleteByShopId(shopId); - if (StringUtils.isNotBlank(shopTagIds)) { + if(StringUtils.isNotBlank(shopTagIds)){ ShopRelTag shopRelTag; SysTag sysTag; Long tagId; String[] shopTagIdArray = shopTagIds.split(","); StringJoiner shopTagSj = new StringJoiner(","); - for (String str : shopTagIdArray) { + for(String str : shopTagIdArray){ tagId = Long.valueOf(str); sysTag = configService.getSysTag(tagId).getData(); shopRelTag = new ShopRelTag(); @@ -672,17 +737,17 @@ /** + * @description 转移客户 + * @author jqs + * @date 2023/6/28 16:36 * @param mgtTransferShopDto - * @return void - * @description 转移客户 - * @author jqs - * @date 2023/6/28 16:36 + * @return void */ @Override - public void transferMgtShop(MgtTransferShopDto mgtTransferShopDto) { + public void transferMgtShop(MgtTransferShopDto mgtTransferShopDto){ Shop shop = this.getByShopId(mgtTransferShopDto.getShopId()); - if (shop.getBelongUserId() != null) { - if (shop.getBelongUserId().equals(mgtTransferShopDto.getUserId())) { + if(shop.getBelongUserId()!=null){ + if(shop.getBelongUserId().equals(mgtTransferShopDto.getUserId())){ throw new ServiceException(AppErrorConstant.TRANS_NOT_MYSELF); } ShopTransferRecord shopTransferRecord = new ShopTransferRecord(); @@ -692,7 +757,6 @@ shopTransferRecord.setAfterUserId(mgtTransferShopDto.getTransferUserId()); shopTransferRecord.setTransferRemark(mgtTransferShopDto.getTransferRemark()); shopTransferRecordService.save(shopTransferRecord); - shopRelUserService.deleteByUserId(shop.getBelongUserId()); } shop.setBelongUserId(mgtTransferShopDto.getTransferUserId()); this.saveOrUpdate(shop); @@ -709,25 +773,48 @@ /** * 获取附近门店 - * * @param appNearbyShopDto * @return */ @Override - public AppNearbyShopVo getNearbyShop(AppNearbyShopDto appNearbyShopDto, Member member) { + public AppNearbyShopVo getNearbyShop(AppNearbyShopDto appNearbyShopDto,Member member){ AppNearbyShopVo appNearbyShopVo = new AppNearbyShopVo(); Shop shop = null; //获取附近商户 - if (member != null && member.getRelationShopId() != null && member.getBindingFlag() == 1) { + 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 { + }else if(StringUtils.isNotBlank(appNearbyShopDto.getLatitude())&&StringUtils.isNotBlank(appNearbyShopDto.getLongitude())){ + List<AppNearShopVo> appNearShopVos = shopMapper.getNearbyShops(appNearbyShopDto); + if(appNearShopVos.size() > 0){ + log.info("候选店铺:{}", JSON.toJSONString(appNearShopVos)); + StringBuffer to = new StringBuffer(); + for (AppNearShopVo appNearShopVo : appNearShopVos) { + to.append(appNearShopVo.getLatitude() + "," + appNearShopVo.getLongitude() + ";"); + } + String form = appNearbyShopDto.getLatitude() + "," + appNearbyShopDto.getLongitude(); + R<List<TencentDistanceMatrix>> r = MapUtil.tencentDistanceMatrix(form, to.substring(0, to.length() - 1), "walking"); + if(r.getCode() != 200){ + throw new ServiceException(r.getMsg()); + } + List<TencentDistanceMatrix> data = r.getData(); + //存储最短距离 + BigDecimal dis = new BigDecimal(0); + AppNearShopVo appNearShopVo = null; + List<TencentDistanceMatrixElements> elements = data.get(0).getElements(); + for (int i = 0; i < elements.size(); i++) { + TencentDistanceMatrixElements matrix = elements.get(i); + if(i == 0 || dis.compareTo(new BigDecimal(matrix.getDistance())) > 0){ + dis = new BigDecimal(matrix.getDistance()); + appNearShopVo = appNearShopVos.get(i); + } + } + shop = this.getById(appNearShopVo.getShopId()); + } + }else{ return appNearbyShopVo; } - if (member != null && member.getBindingFlag() != 1) { + if(member!=null&&member.getBindingFlag()!=1){ AppMemberBindingDto appMemberBindingDto = new AppMemberBindingDto(); appMemberBindingDto.setShopId(shop.getShopId()); appMemberBindingDto.setShopName(shop.getShopName()); @@ -735,59 +822,120 @@ appMemberBindingDto.setBindingFlag(0); remoteMemberService.updateMemberBinding(appMemberBindingDto); } + //商品图片 + List<ShopFile> shopFileList = shopFileService.listShopFileByShopId(shop.getShopId()); + String shopPicture = null; + StringJoiner shopBanners = new StringJoiner(","); + if(shopFileList!=null&&!shopFileList.isEmpty()){ + for(ShopFile shopFile : shopFileList){ + if(shopFile.getFileType()==1){ + shopPicture = shopFile.getFileUrl(); + }else{ + shopBanners.add(shopFile.getFileUrl()); + } + } + } + appNearbyShopVo.setShopPicture(shopPicture); appNearbyShopVo.setShopId(shop.getShopId()); appNearbyShopVo.setShopName(shop.getShopName()); - appNearbyShopVo.setShopAddress(shop.getShopAreaName() + shop.getShopAddress()); + appNearbyShopVo.setShopAddress(shop.getShopAreaName()+shop.getShopAddress()); appNearbyShopVo.setShopLatitude(shop.getShopLatitude()); appNearbyShopVo.setShopLongitude(shop.getShopLongitude()); return appNearbyShopVo; } /** + * * @param shopId * @return */ @Override - public Shop getByShopId(Long shopId) { + 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); + Shop shop = this.getOne(queryWrapper,false); return shop; } /** * 获取获取员工端首页统计 - * * @param userId * @return */ @Override - public StaffHomeShopTotalVo getStaffHomeTotal(Long userId) { - List<Long> userIds = null; - List<Long> shopIds = null; + public StaffHomeShopTotalVo getStaffHomeTotal(Long userId){ + List<Long> userIds = new ArrayList<>(); + List<Long> shopIds = new ArrayList<>(); //如果是leader 查询leader下面所有的员工下的所有shopId - if (remoteSysStaffService.isLeader()) { +// if(remoteSysStaffService.isLeader()){ +// userIds = sysUserService.getUserIdsByDept(userId).getData(); +// //根据用户所有id查询关联的商户id +// MgtBasePlatformDto mgtBasePlatformDto = new MgtBasePlatformDto(); +// mgtBasePlatformDto.setUserIdList(userIds); +// shopIds = shopMapper.listShopIdByTotal(mgtBasePlatformDto); +// List<Shop> shopList = this.getShopByBelongUserId(userId); +// if(shopList!=null&&!shopList.isEmpty()){ +// for(Shop shop : shopList){ +// shopIds.add(shop.getShopId()); +// } +// userIds.add(userId); +// } +// }else { +// //普通员工查询商户归属的shopId +// List<Shop> shopList = this.getShopByBelongUserId(userId); +// if(shopList!=null&&!shopList.isEmpty()){ +// for(Shop shop : shopList){ +// shopIds.add(shop.getShopId()); +// } +// userIds.add(userId); +// } +// } + + // TODO: 2023/12/5 统一改成使用权限来控制数据 + R<SysUser> sysUser = sysUserService.getSysUser(userId); + if(sysUser.getCode() != 200){ + throw new RuntimeException(sysUser.getMsg()); + } + //员工端数据权限(1:所有数据权限;2:自定义数据权限;3:本部门数据权限;4:本部门及以下数据权限;5:仅本人数据权限) + //2/4暂未使用 + String dataScopeEmployee = sysUser.getData().getDataScopeEmployee(); + if(dataScopeEmployee.equals("1")){ + userIds = null; + shopIds = null; + } + if(dataScopeEmployee.equals("3")){ userIds = sysUserService.getUserIdsByDept(userId).getData(); //根据用户所有id查询关联的商户id MgtBasePlatformDto mgtBasePlatformDto = new MgtBasePlatformDto(); mgtBasePlatformDto.setUserIdList(userIds); shopIds = shopMapper.listShopIdByTotal(mgtBasePlatformDto); - Shop shop = this.getShopByBelongUserId(userId); - shopIds.add(shop.getShopId()); - } else { - //普通员工查询商户归属的shopId - Shop shop = this.getShopByBelongUserId(userId); - shopIds.add(shop.getShopId()); + List<Shop> shopList = this.getShopByBelongUserId(userId); + if(shopList!=null&&!shopList.isEmpty()){ + for(Shop shop : shopList){ + shopIds.add(shop.getShopId()); + } + userIds.add(userId); + } } + if(dataScopeEmployee.equals("5")){ + List<Shop> shopList = this.getShopByBelongUserId(userId); + if(shopList!=null&&!shopList.isEmpty()){ + for(Shop shop : shopList){ + shopIds.add(shop.getShopId()); + } + userIds.add(userId); + } + } + //分别查询 - StaffHomeShopTotalVo staffHomeShopTotalVo = shopMapper.getStaffHomeTotal(shopIds); + StaffHomeShopTotalVo staffHomeShopTotalVo = shopMapper.getStaffHomeTotal(userIds); Integer shopTaskCount = shopTaskService.getShopIngTotal(shopIds); staffHomeShopTotalVo.setFollowMember(0); staffHomeShopTotalVo.setNewMember(0); staffHomeShopTotalVo.setShopTask(shopTaskCount); return staffHomeShopTotalVo; } - + /** * 获取商户端 * @@ -798,19 +946,22 @@ 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) { + String userKey = SecurityUtils.getUserKey(); + redisService.deleteObject(CacheConstants.LOGIN_TOKEN_KEY + userKey); + throw new ServiceException("商户已被冻结,请联系管理员", 401); + } merHomeShopTotalVo.setShopType(shop.getShopType()); MerHomeShopTotalVo orderVo = remoteOrderService.getMerHomeTotal(merHomeShopTotalVo).getData(); - ShopTotal shopTotal = shopTotalService.getById(shopId); merHomeShopTotalVo.setShopId(shopId); merHomeShopTotalVo.setShopType(shop.getShopType()); merHomeShopTotalVo.setTodayShop(orderVo.getTodayShop()); @@ -818,35 +969,37 @@ Integer taskCount = memberTaskService.getMemberIngTotal(shopId); merHomeShopTotalVo.setTask(taskCount); merHomeShopTotalVo.setShopTurnover(orderVo.getShopTurnover()); - merHomeShopTotalVo.setCycleSurp(shopTotal.getUseableCyclePerson()); - merHomeShopTotalVo.setExplorationSurp(shopTotal.getUseableExperiencePerson()); + merHomeShopTotalVo.setCycleSurp(orderVo.getCycleSurp()); + merHomeShopTotalVo.setExplorationSurp(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; } /** * 获取商户绑定代理商 - * * @param page * @param merAgencyPageDto * @return */ @Override - public List<MerAgencyPageVo> pageMerAgencyVo(Page page, MerAgencyPageDto merAgencyPageDto) { + 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) { + private void handleShopStaff(Long shopId,SysUser sysUser){ ShopStaff shopStaff = shopStaffService.getByUserId(sysUser.getUserId()); - if (shopStaff != null) { + if(shopStaff!=null){ shopStaff.setShopId(shopId); - } else { + }else{ String staffId = IdUtils.simpleUUID(); shopStaff = new ShopStaff(); shopStaff.setStaffId(staffId); @@ -862,42 +1015,42 @@ } /** + * @description 平台获取商户分成列表 + * @author jqs + * @date 2023/6/8 9:25 * @param page * @param mgtShopProportionPageDto - * @return List<MgtShopProportionPageVo> - * @description 平台获取商户分成列表 - * @author jqs - * @date 2023/6/8 9:25 + * @return List<MgtShopProportionPageVo> */ @Override - public List<MgtShopProportionPageVo> pageMgtShopProportion(Page page, MgtShopProportionPageDto mgtShopProportionPageDto) { - return shopMapper.pageMgtShopProportion(page, mgtShopProportionPageDto); + 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 - * @description 删除商户标签 - * @author jqs - * @date 2023/6/8 15:53 + * @return void */ @Override - public void deleteShopTag(String shopTag) { + public void deleteShopTag(String shopTag){ shopMapper.deleteShopTag(shopTag); } /** + * @description 通过code获取shopId + * @author jqs + * @date 2023/6/9 16:40 * @param mgtShopIdByCodeDto - * @return MgtShopIdByCodeVo - * @description 通过code获取shopId - * @author jqs - * @date 2023/6/9 16:40 + * @return MgtShopIdByCodeVo */ @Override - public MgtShopIdByCodeVo getShopIdByCode(MgtShopIdByCodeDto mgtShopIdByCodeDto) { + public MgtShopIdByCodeVo getShopIdByCode(MgtShopIdByCodeDto mgtShopIdByCodeDto){ MgtShopIdByCodeVo mgtShopIdByCodeVo = new MgtShopIdByCodeVo(); List<Long> shopIdList = shopMapper.getShopIdByCode(mgtShopIdByCodeDto); - if (shopIdList != null && !shopIdList.isEmpty()) { + if(shopIdList!=null&&!shopIdList.isEmpty()){ String shopIdStr = shopIdList.stream() .map(Object::toString) .collect(Collectors.joining(",")); @@ -907,97 +1060,208 @@ } /** + * @description 获取商户list + * @author jqs + * @date 2023/6/12 14:37 * @param mgtShopListDto - * @return List<MgtShopListSimpleVo> - * @description 获取商户list - * @author jqs - * @date 2023/6/12 14:37 + * @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); } /** + * @description 通过id获取商户列表 + * @author jqs + * @date 2023/6/14 17:53 * @param shopIds - * @return List<MgtShopListSimpleVo> - * @description 通过id获取商户列表 - * @author jqs - * @date 2023/6/14 17:53 + * @return List<MgtShopListSimpleVo> */ @Override - public List<MgtSimpleShopVo> listShopSimpleVoByIds(String shopIds) { + public List<MgtSimpleShopVo> listShopSimpleVoByIds(String shopIds){ return shopMapper.listShopSimpleVoByIds(shopIds); } /** + * @description pageMgtShopByCityCode * @param page * @param mgtShopByCodePageDto * @return List<MgtSimpleShopVo> - * @description pageMgtShopByCityCode * @author jqs34 * @date 2023/6/14 20:56 */ @Override - public List<MgtSimpleShopVo> pageMgtShopByCityCode(Page page, MgtShopByCodePageDto mgtShopByCodePageDto) { + public List<MgtSimpleShopVo> pageMgtShopByCityCode(Page page, MgtShopByCodePageDto mgtShopByCodePageDto){ return shopMapper.pageMgtShopByCityCode(page, mgtShopByCodePageDto); } /** + * @description pageMgtShopAuth * @param page * @param mgtShopAuthPageDto * @return List<MgtShopAuthPageVo> - * @description pageMgtShopAuth * @author jqs34 * @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); } /** + * 商户进件列表数据(汇付天下) + * @param page + * @param mgtShopAuthPageDto + * @return + */ + @Override + public List<MgtShopHFTXAuthPageVo> pageMgtShopHFTXAuth(Page page, MgtShopHFTXAuthPageDto mgtShopAuthPageDto, + List<Long> scope) { + return shopMapper.pageMgtShopHFTXAuth(page, mgtShopAuthPageDto,scope); + } + + /** + * @description boardShopTotal * @param * @return MgtBulletinBoardVo - * @description boardShopTotal * @author jqs34 * @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; } /** + * @description 商户进件 + * @author jqs + * @date 2023/6/19 11:02 * @param mgtShopAuthDto - * @return void - * @description 商户进件 - * @author jqs - * @date 2023/6/19 11:02 + * @return void */ @Override - public void mgtShopAuth(MgtShopAuthDto mgtShopAuthDto) throws WxPayException { + public void mgtShopAuth(MgtShopAuthDto mgtShopAuthDto) { ShopAuthentication shopAuthentication = shopAuthenticationService.getById(mgtShopAuthDto.getAuthId()); Shop shop = this.getByShopId(shopAuthentication.getShopId()); - String applyNumber = IdUtils.simpleUUID(); - BeanUtils.copyProperties(mgtShopAuthDto, shopAuthentication); - shopAuthentication.setApplyNumber(applyNumber); - // 提交申请 -> 资料校验中 - shopAuthentication.setAuditStatus(1); - ApplymentsResult result = wechatPayUtils.ecommerceApply(shopAuthentication, applyNumber, shop); - // 微信支付申请单号 - shopAuthentication.setApplymentId(result.getApplymentId()); + if(mgtShopAuthDto.getBlBusinessFoeverFlag()!=null&&mgtShopAuthDto.getBlBusinessFoeverFlag()==1){ + mgtShopAuthDto.setBlBusinessDeanline("长期"); + } + if(mgtShopAuthDto.getLpIcForeverFlag()!=null&&mgtShopAuthDto.getLpIcForeverFlag()==1){ + mgtShopAuthDto.setLpIcEndDate("长期"); + } + BeanUtils.copyProperties(mgtShopAuthDto , shopAuthentication); + String applyNumber = shopAuthentication.getApplyNumber(); + if(StringUtils.isBlank(applyNumber)){ + applyNumber = IdUtils.simpleUUID(); + shopAuthentication.setApplyNumber(applyNumber); + } + ApplymentsResult applymentsResult; + try { + applymentsResult = wechatPayUtils.ecommerceApply(shopAuthentication,applyNumber,shop); + } catch (Exception e) { + log.debug("-----"+shop.getShopId()+":进件异常-----"); + throw new ServiceException(e.getMessage()); + } + shopAuthentication.setAuditStatus(3); + shopAuthentication.setApplymentId(applymentsResult.getApplymentId()); shopAuthenticationService.saveOrUpdate(shopAuthentication); } + /** + * 商户进件(汇付天下) + * @param mgtShopHFTXAuthDto + */ + @Override + public void mgtShopHFTXAuth(MgtShopHFTXAuthDto mgtShopHFTXAuthDto) { + ShopAuthenticationHftx shopAuthenticationHftx = shopAuthenticationHftxService.getOne(new QueryWrapper<ShopAuthenticationHftx>() + .eq("shop_id", mgtShopHFTXAuthDto.getShopId()).eq("is_delete", 0)); + if(null != shopAuthenticationHftx && Arrays.asList("U", "Y").contains(shopAuthenticationHftx.getAuditStatus())){ + throw new ServiceException("不能重复进件"); + } + if(null == shopAuthenticationHftx){ + shopAuthenticationHftx = new ShopAuthenticationHftx(); + shopAuthenticationHftx.setIsDelete(0); + shopAuthenticationHftx.setInsertTime(new Date()); + } + String auditStatus = shopAuthenticationHftx.getAuditStatus(); + BeanUtils.copyProperties(mgtShopHFTXAuthDto, shopAuthenticationHftx); + shopAuthenticationHftx.setReqSeqId(IdUtils.simpleUUID()); + shopAuthenticationHftx.setAuditStatus(""); + shopAuthenticationHftx.setAuditDesc(""); + /** + * 开始调起进件接口 + */ + R<MerchantBasicdataVo> r = null; + //用户(重新提交) + if((StringUtils.isEmpty(auditStatus) || "N".equals(auditStatus) || "F".equals(auditStatus)) && mgtShopHFTXAuthDto.getType() == 1){ + r = HuiFuTianXiaUtil.merchantBasicdataIndv(mgtShopHFTXAuthDto, shopAuthenticationHftx, callback_path + "/shop/mgt/shop/merchantBasicdataNotify"); + } + //企业进件(重新提交) + if((StringUtils.isEmpty(auditStatus) || "N".equals(auditStatus) || "F".equals(auditStatus)) && mgtShopHFTXAuthDto.getType() == 2){ + r = HuiFuTianXiaUtil.merchantBasicdataEnt(mgtShopHFTXAuthDto, shopAuthenticationHftx, callback_path + "/shop/mgt/shop/merchantBasicdataNotify"); + } + + //修改资料 + if("Y".equals(auditStatus)){ + r = HuiFuTianXiaUtil.merchantBasicdataModify(mgtShopHFTXAuthDto, shopAuthenticationHftx, callback_path + "/shop/mgt/shop/merchantBasicdataNotify"); + } + if(null == r){ + throw new ServiceException("参数异常"); + } + if(r.getCode() == 200){ + MerchantBasicdataVo data = r.getData(); + shopAuthenticationHftx.setAuditStatus("U"); + shopAuthenticationHftx.setHuifuId(data.getHuifuId()); + shopAuthenticationHftx.setTokenNo(data.getTokenNo()); + shopAuthenticationHftx.setApplyNo(data.getApplyNo()); + shopAuthenticationHftxService.saveOrUpdate(shopAuthenticationHftx); + }else{ + throw new ServiceException(r.getMsg()); + } + + } + + + /** + * 商户进件异步通知 + * @return + */ + @Override + public R<String> merchantBasicdataNotify(MerchantBasicDataNotifyDto dto) { + R<MerchantBasicdataVo> merchantBasicdataVoR = HuiFuTianXiaUtil.merchantBasicDataNotify(dto); + if(merchantBasicdataVoR.getCode() != 200){ + return R.fail(merchantBasicdataVoR.getMsg()); + } + MerchantBasicdataVo data = merchantBasicdataVoR.getData(); + ShopAuthenticationHftx shopAuthenticationHftx = shopAuthenticationHftxService.getOne(new QueryWrapper<ShopAuthenticationHftx>().eq("req_seq_id", data.getReqSeqId())); + if("U".equals(shopAuthenticationHftx.getAuditStatus())){ + shopAuthenticationHftx.setAuditStatus(data.getAuditStatus()); + shopAuthenticationHftx.setAuditDesc(data.getAuditDesc()); + shopAuthenticationHftx.setHuifuId(data.getHuifuId()); + shopAuthenticationHftx.setTokenNo(data.getTokenNo()); + shopAuthenticationHftx.setApplyNo(data.getApplyNo()); + shopAuthenticationHftxService.updateById(shopAuthenticationHftx); + if("Y".equals(data.getAuditStatus())){ + Shop shop = this.getByShopId(shopAuthenticationHftx.getShopId()); + shop.setShopStatus(1); + shop.setAuthFlag(1); + this.updateById(shop); + } + } + return R.ok(data.getReqSeqId()); + } + + + /** + * @description 获取平台商户统计 + * @author jqs + * @date 2023/6/21 16:25 * @param mgtBasePlatformDto - * @return MgtPlTotalShopTotalVo - * @description 获取平台商户统计 - * @author jqs - * @date 2023/6/21 16:25 + * @return MgtPlTotalShopTotalVo */ @Override public MgtPlTotalShopTotalVo getPlTotalShopTotal(MgtBasePlatformDto mgtBasePlatformDto) { @@ -1008,7 +1272,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(); } @@ -1016,8 +1280,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()) { @@ -1046,13 +1322,17 @@ plTotalShopTotalVo.setAreaRankVos(shopAreaRank); } //获取销售排名 - List<MgtMapIntTotalVo> shopSalesRank = shopMapper.listShopSalesRank(mgtBasePlatformDto); + List<MgtMapBigTotalVo> shopSalesRank = remoteOrderService.shopSalesRank(shopIdList).getData(); if (shopSalesRank != null && shopSalesRank.size() > 0) { String[] shopSalesKey = new String[shopSalesRank.size()]; - Integer[] shopSalesValue = new Integer[shopSalesRank.size()]; + BigDecimal[] shopSalesValue = new BigDecimal[shopSalesRank.size()]; // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组 + Long shopId; + Shop shop; for (int i = 0; i < shopSalesRank.size(); i++) { - shopSalesKey[i] = shopSalesRank.get(i).getMapKey(); + shopId = Long.valueOf(shopSalesRank.get(i).getMapKey()); + shop = this.getByShopId(shopId); + shopSalesKey[i] = shop.getShopName(); shopSalesValue[i] = shopSalesRank.get(i).getMapValue(); } plTotalShopTotalVo.setShopSalesRankKey(shopSalesKey); @@ -1068,15 +1348,15 @@ } /** + * @description 去除空字符串 + * @author jqs + * @date 2023/6/27 17:35 * @param MgtMapIntTotalVos - * @return List<MgtMapIntTotalVo> - * @description 去除空字符串 - * @author jqs - * @date 2023/6/27 17:35 + * @return List<MgtMapIntTotalVo> */ - private List<MgtMapIntTotalVo> listRemoveNull(List<MgtMapIntTotalVo> MgtMapIntTotalVos) { + private List<MgtMapIntTotalVo> listRemoveNull(List<MgtMapIntTotalVo> MgtMapIntTotalVos){ for (int i = 0; i < MgtMapIntTotalVos.size(); i++) { - if (StringUtils.isBlank(MgtMapIntTotalVos.get(i).getMapKey())) { + if(StringUtils.isBlank(MgtMapIntTotalVos.get(i).getMapKey())){ MgtMapIntTotalVos.remove(i); } } @@ -1084,43 +1364,74 @@ } /** + * @description 获取平台统计shopId * @param mgtBasePlatformDto * @return List<Long> - * @description 获取平台统计shopId * @author jqs34 * @date 2023/6/23 14:12 */ @Override - public List<Long> listShopIdByPlTotal(MgtBasePlatformDto mgtBasePlatformDto) { + public List<Long> listShopIdByPlTotal(MgtBasePlatformDto mgtBasePlatformDto){ List<Long> shopIdList = shopMapper.listShopIdByPlTotal(mgtBasePlatformDto); return shopIdList; } /** + * @description 获取商户审核资料 + * @author jqs + * @date 2023/6/25 10:37 * @param authId - * @return MgtShopAuthGetVo - * @description 获取商户审核资料 - * @author jqs - * @date 2023/6/25 10:37 + * @return MgtShopAuthGetVo */ @Override - public MgtShopAuthGetVo getMgtShopAuth(String authId) { + public MgtShopAuthGetVo getMgtShopAuth(String authId){ MgtShopAuthGetVo shopAuthGetVo = new MgtShopAuthGetVo(); ShopAuthentication shopAuthentication = shopAuthenticationService.getById(authId); BeanUtils.copyProperties(shopAuthentication, shopAuthGetVo); + if(shopAuthGetVo.getBlBusinessDeanline()!=null){ + if(shopAuthGetVo.getBlBusinessDeanline().equals("长期")){ + shopAuthGetVo.setBlBusinessFoeverFlag(1); + }else{ + shopAuthGetVo.setBlBusinessFoeverFlag(0); + } + } + if(shopAuthGetVo.getLpIcEndDate()!=null){ + if(shopAuthGetVo.getLpIcEndDate().equals("长期")){ + shopAuthGetVo.setLpIcForeverFlag(1); + }else{ + shopAuthGetVo.setLpIcForeverFlag(0); + } + } return shopAuthGetVo; } + /** - * @param authId - * @return MgtShopAuthCodeVo - * @description 获取商户验证信息 - * @author jqs - * @date 2023/6/26 10:38 + * 获取商户审核资料(汇付天下) + * @param shopId + * @return */ @Override - public MgtShopAuthCodeVo getMgtShopAuthCode(String authId) { + public MgtShopHFTXAuthGetVo getMgtShopHFTXAuthInfo(Long shopId) { + ShopAuthenticationHftx shopAuthenticationHftx = shopAuthenticationHftxService.getOne(new QueryWrapper<ShopAuthenticationHftx>().eq("shop_id", shopId)); + MgtShopHFTXAuthGetVo mgtShopHFTXAuthGetVo = new MgtShopHFTXAuthGetVo(); + if(null == shopAuthenticationHftx){ + return mgtShopHFTXAuthGetVo; + } + BeanUtils.copyProperties(shopAuthenticationHftx, mgtShopHFTXAuthGetVo); + return mgtShopHFTXAuthGetVo; + } + + /** + * @description 获取商户验证信息 + * @author jqs + * @date 2023/6/26 10:38 + * @param authId + * @return MgtShopAuthCodeVo + */ + @Override + public MgtShopAuthCodeVo getMgtShopAuthCode(String authId){ MgtShopAuthCodeVo mgtShopAuthCodeVo = new MgtShopAuthCodeVo(); ShopAuthentication shopAuthentication = shopAuthenticationService.getById(authId); mgtShopAuthCodeVo.setSignUrl(shopAuthentication.getSignUrl()); @@ -1130,14 +1441,14 @@ /** + * @description 获取商户下属代理商 + * @author jqs + * @date 2023/7/3 17:27 * @param shopId - * @return List<Long> - * @description 获取商户下属代理商 - * @author jqs - * @date 2023/7/3 17:27 + * @return List<Long> */ @Override - public List<Long> listShopIdByShopId(Long shopId) { + public List<Long> listShopIdByShopId(Long shopId){ List<Long> shopIds = shopMapper.selectList( new LambdaQueryWrapper<Shop>().eq(Shop::getDelFlag, 0).eq(Shop::getBelongShopId, shopId) ).stream().map(Shop::getShopId).collect(Collectors.toList()); @@ -1145,17 +1456,17 @@ } /** + * @description 获取商户下属代理商 + * @author jqs + * @date 2023/7/3 18:18 * @param shopId - * @return List<MgtSimpleShopVo> - * @description 获取商户下属代理商 - * @author jqs - * @date 2023/7/3 18:18 + * @return List<MgtSimpleShopVo> */ @Override - public List<MgtSimpleShopVo> listShopByShop(Long shopId) { + public List<MgtSimpleShopVo> listShopByShop(Long shopId){ List<MgtSimpleShopVo> simpleShopVoList = shopMapper.selectList( - new LambdaQueryWrapper<Shop>().eq(Shop::getDelFlag, 0).eq(Shop::getBelongShopId, shopId)). - stream().map(shop -> { + new LambdaQueryWrapper<Shop>().eq(Shop::getDelFlag, 0).eq(Shop::getBelongShopId, shopId)). + stream().map(shop->{ MgtSimpleShopVo simpleShopVo = new MgtSimpleShopVo(); simpleShopVo.setShopId(shop.getShopId()); simpleShopVo.setShopName(shop.getShopName()); @@ -1163,7 +1474,7 @@ }).collect(Collectors.toList()); return simpleShopVoList; } - + /** * @param userId * @return Shop @@ -1172,52 +1483,77 @@ * @date 2023/7/14 10:00 */ @Override - public 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); - return this.getOne(queryWrapper, false); + return this.list(queryWrapper); } /** + * @description 员工端获取商户列表 + * @author jqs + * @date 2023/7/14 15:26 * @param page * @param staffShopPageDto - * @return List<StaffShopPageVo> - * @description 员工端获取商户列表 - * @author jqs - * @date 2023/7/14 15:26 + * @return List<StaffShopPageVo> */ @Override - public List<StaffShopPageVo> pageStaffShop(Page page, StaffShopPageDto staffShopPageDto) { + public List<StaffShopPageVo> pageStaffShop(Page page, StaffShopPageDto staffShopPageDto){ List<StaffShopPageVo> staffShopPageVoList = shopMapper.pageStaffShop(page, staffShopPageDto); return staffShopPageVoList; } /** + * @description 获取员工端商户数量统计 + * @author jqs + * @date 2023/7/14 15:51 * @param userId - * @return StaffShopSimpleTotalVo - * @description 获取员工端商户数量统计 - * @author jqs - * @date 2023/7/14 15:51 + * @return StaffShopSimpleTotalVo */ @Override - public StaffShopSimpleTotalVo getStaffSimpleTotal(Long userId) { - List<Long> userIdList = null; - if (remoteSysStaffService.isLeader()) { + public StaffShopSimpleTotalVo getStaffSimpleTotal(Long userId){ + List<Long> userIdList = new ArrayList<>(); +// if(remoteSysStaffService.isLeader()){ +// userIdList = sysUserService.getUserIdsByDept(userId).getData(); +// userIdList.add(userId); +// }else { +// userIdList.add(userId); +// } + + // TODO: 2023/12/5 统一改成使用权限来控制数据 + R<SysUser> sysUser = sysUserService.getSysUser(userId); + if(sysUser.getCode() != 200){ + throw new RuntimeException(sysUser.getMsg()); + } + //员工端数据权限(1:所有数据权限;2:自定义数据权限;3:本部门数据权限;4:本部门及以下数据权限;5:仅本人数据权限) + //2/4暂未使用 + String dataScopeEmployee = sysUser.getData().getDataScopeEmployee(); + if(dataScopeEmployee.equals("1")){ + userIdList = null; + } + if(dataScopeEmployee.equals("3")){ userIdList = sysUserService.getUserIdsByDept(userId).getData(); userIdList.add(userId); - } else { + } + if(dataScopeEmployee.equals("5")){ userIdList.add(userId); } - return shopMapper.getStaffSimpleTotal(userIdList); + + StaffShopSimpleTotalVo shopTotal = shopMapper.getStaffSimpleTotal(1,userIdList); + StaffShopSimpleTotalVo agencyTotal = shopMapper.getStaffSimpleTotal(2,userIdList); + shopTotal.setAgencyTotal(agencyTotal.getShopTotal()); + shopTotal.setOpenAgencyTotal(agencyTotal.getOpenShopTotal()); + shopTotal.setCloseAgencyTotal(agencyTotal.getCloseShopTotal()); + return shopTotal; } /** + * @description 员工端获取商户详情 + * @author jqs + * @date 2023/7/14 18:32 * @param shopId - * @return StaffShopInfoGetVo - * @description 员工端获取商户详情 - * @author jqs - * @date 2023/7/14 18:32 + * @return StaffShopInfoGetVo */ @Override public StaffShopInfoGetVo getStaffShopInfo(Long shopId) { @@ -1243,8 +1579,6 @@ merHomeShopTotalVo.setShopId(shopId); // 通过远程订单服务获取商店总览信息 MerHomeShopTotalVo orderVo = remoteOrderService.getMerHomeTotal(merHomeShopTotalVo).getData(); - // 获取商店总计信息 - ShopTotal shopTotal = shopTotalService.getById(shopId); // 获取商店任务计数 Integer taskCount = memberTaskService.getMemberIngTotal(shopId); // 设置员工商店信息对象的属性 @@ -1252,10 +1586,11 @@ staffShopInfoGetVo.setUnHandleOrder(orderVo.getUnHandleOrder()); staffShopInfoGetVo.setShopTask(taskCount); staffShopInfoGetVo.setShopTurnover(orderVo.getShopTurnover()); - staffShopInfoGetVo.setCycleSurp(shopTotal.getUseableCyclePerson()); - staffShopInfoGetVo.setExplorationSurp(shopTotal.getUseableExperiencePerson()); + staffShopInfoGetVo.setCycleSurp(orderVo.getCycleSurp()); + staffShopInfoGetVo.setExplorationSurp(orderVo.getExplorationSurp()); staffShopInfoGetVo.setShopId(shopId); staffShopInfoGetVo.setShopName(shop.getShopName()); + staffShopInfoGetVo.setShopType(shop.getShopType()); staffShopInfoGetVo.setShopPicture(shopPicture); staffShopInfoGetVo.setBusinessStartTime(shop.getBusinessStartTime()); staffShopInfoGetVo.setBusinessEndTime(shop.getBusinessEndTime()); @@ -1281,8 +1616,8 @@ if (shopIdList != null && !shopIdList.isEmpty()) { Integer count = remoteMemberService.getAreaNewMember(shopIdList).getData(); staffShopInfoGetVo.setNewAreaMember(count); - ShopTotal shopTotalAll = shopTotalService.shopsTotalByIds(shopIdList); - staffShopInfoGetVo.setAreaTurnover(shopTotalAll.getTotalOrderMoney()); + AgencyTotalVo agencyTotalVo = remoteOrderService.getAgencyTotalVo(shopIdList).getData(); + staffShopInfoGetVo.setAreaTurnover(agencyTotalVo.getAreaTurnover()); } } // 如果商店的扩展联系方式不为空,则设置员工商店信息对象的扩展联系方式列表 @@ -1296,14 +1631,14 @@ } /** + * @description 修改商户评估 + * @author jqs + * @date 2023/7/15 10:18 * @param staffShopEstimateEditDto - * @return void - * @description 修改商户评估 - * @author jqs - * @date 2023/7/15 10:18 + * @return void */ @Override - public void editShopEstimate(StaffShopEstimateEditDto staffShopEstimateEditDto) { + public void editShopEstimate(StaffShopEstimateEditDto staffShopEstimateEditDto){ Shop shop = new Shop(); shop.setShopId(staffShopEstimateEditDto.getShopId()); shop.setSupportingCapacityFlag(staffShopEstimateEditDto.getSupportingCapacityFlag()); @@ -1320,19 +1655,21 @@ } /** + * @description 修改店铺扩展联系人 + * @author jqs + * @date 2023/7/15 11:06 * @param staffShopECEditDto - * @return void - * @description 修改店铺扩展联系人 - * @author jqs - * @date 2023/7/15 11:06 + * @return void */ @Override - public void editExtendContacts(StaffShopECEditDto staffShopECEditDto) { + public void editExtendContacts(StaffShopECEditDto staffShopECEditDto){ Shop shop = new Shop(); String extendContacts = null; List<ExtendContactsVo> extendContactsVoList = staffShopECEditDto.getExtendContactsVoList(); - if (extendContactsVoList != null && !extendContactsVoList.isEmpty()) { + if(extendContactsVoList!=null&&!extendContactsVoList.isEmpty()){ extendContacts = JSON.toJSONString(extendContactsVoList); + }else{ + extendContacts = ""; } shop.setExtendContacts(extendContacts); shop.setShopId(staffShopECEditDto.getShopId()); @@ -1342,14 +1679,14 @@ } /** + * @description 修改店铺状态 + * @author jqs + * @date 2023/7/15 11:51 * @param staffShopCCEditDto - * @return void - * @description 修改店铺状态 - * @author jqs - * @date 2023/7/15 11:51 + * @return void */ @Override - public void editShopCustomStatus(StaffShopCCEditDto staffShopCCEditDto) { + public void editShopCustomStatus(StaffShopCCEditDto staffShopCCEditDto){ Shop shop = new Shop(); shop.setShopCustomStatus(staffShopCCEditDto.getShopCustomStatus()); shop.setShopId(staffShopCCEditDto.getShopId()); @@ -1360,8 +1697,27 @@ @Override public void queryEcommerceApplyMentsStatus() { + log.info("开始获取微信二级商户待检查列表"); List<ShopAuthentication> list = shopAuthenticationService.getShopAuthNeedUpdateStatus(); + log.info("定时检查微信二级商户"+list.toString()); list.forEach(item -> queryApplyStatusByApplymentId(item.getApplymentId(), item.getShopId())); + + List<ShopAuthenticationHftx> list1 = shopAuthenticationHftxService.list(new QueryWrapper<ShopAuthenticationHftx>().eq("audit_status", "U").eq("is_delete", 0)); + for (ShopAuthenticationHftx shopAuthenticationHftx : list1) { + R<MerchantBasicdataVo> r = HuiFuTianXiaUtil.queryMerchantBasicdata(IdUtils.simpleUUID(), shopAuthenticationHftx.getHuifuId()); + if(r.getCode() == 200){ + MerchantBasicdataVo data = r.getData(); + if(org.springframework.util.StringUtils.hasLength(data.getTokenNo())){ + shopAuthenticationHftx.setTokenNo(data.getTokenNo()); + shopAuthenticationHftx.setAuditStatus("Y"); + shopAuthenticationHftx.setAuditDesc("成功"); + Shop shop = this.getByShopId(shopAuthenticationHftx.getShopId()); + shop.setShopStatus(1); + this.updateById(shop); + shopAuthenticationHftxService.updateById(shopAuthenticationHftx); + } + } + } } /** @@ -1370,6 +1726,7 @@ */ private void queryApplyStatusByApplymentId(String applymentId, Long shopId) { try { + log.debug("定时检查微信二级商户applymentId"+applymentId); if (StringUtils.isNotBlank(applymentId)) { ApplymentsStatusResult result = wechatPayUtils.queryApplyStatusByApplymentId(applymentId); shopAuthenticationService.updateAuditStatusByApplymentId(applymentId, result); @@ -1390,11 +1747,311 @@ 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) .set(Shop::getAuthFlag, 1); this.update(updateWrapper); } + + + + + + /** + * @description + * @author jqs + * @date 2023/8/10 22:53 + * @param cityCodes + * @return List<Long> + */ + @Override + public List<Long> listShopIdByCityCode(List<String> cityCodes){ + return shopMapper.listShopIdByCityCode(cityCodes); + } + + @Override + public void authShop(){ + ShopAuthentication shopAuthentication = shopAuthenticationService.getById("8c23fa423beb4673a0edc641a1ca0c23"); + Shop shop = this.getByShopId(shopAuthentication.getShopId()); + try { + wechatPayUtils.ecommerceApply(shopAuthentication,shopAuthentication.getApplyNumber(),shop); + + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + /** + * @description 修改店铺详细资料 + * @author jqs + * @date 2023/8/22 14:51 + * @param staffShopDetailDto + * @return void + */ + @Override + public void editShopDetail(StaffShopDetailDto staffShopDetailDto){ + ShopDetail shopDetail = shopDetailService.getById(staffShopDetailDto.getShopId()); + if(shopDetail == null){ + shopDetail = new ShopDetail(); + shopDetail.setDelFlag(0); + } + BeanUtils.copyProperties(staffShopDetailDto, shopDetail); + List<StaffCustomerDto> staffCustomerDtoList = staffShopDetailDto.getStaffCustomerDtoList(); + if(staffCustomerDtoList!=null&&!staffCustomerDtoList.isEmpty()){ + StringJoiner customerNameSJ = new StringJoiner(","); + StringJoiner customerMobileSJ = new StringJoiner(","); + for(StaffCustomerDto staffCustomerDto : staffCustomerDtoList){ + customerNameSJ.add(staffCustomerDto.getCustomerName()); + customerMobileSJ.add(staffCustomerDto.getCustomerMobile()); + } + shopDetail.setCustomerName(customerNameSJ.toString()); + shopDetail.setCustomerMobile(customerMobileSJ.toString()); + } + shopDetailService.saveOrUpdate(shopDetail); + } + + /** + * @description 获取店铺详细资料 + * @author jqs + * @date 2023/8/22 16:15 + * @param shopId + * @return StaffShopDetailVo + */ + @Override + public StaffShopDetailVo getShopDetail(Long shopId){ + ShopDetail shopDetail = shopDetailService.getById(shopId); + StaffShopDetailVo staffShopDetailVo = new StaffShopDetailVo(); + if(shopDetail!=null){ + BeanUtils.copyProperties(shopDetail, staffShopDetailVo); + //处理联系人 + String customerName = shopDetail.getCustomerName(); + String customerMobile = shopDetail.getCustomerMobile(); + List<StaffCustomerDto> staffCustomerDtoList = new ArrayList<>(); + String[] customerNameArr = customerName.split(","); + String[] customerMobileArr = customerMobile.split(","); + staffShopDetailVo.setContactName(customerNameArr[0]); + StaffCustomerDto staffCustomerDto; + for(int i=0;i<customerNameArr.length;i++){ + staffCustomerDto = new StaffCustomerDto(); + staffCustomerDto.setCustomerName(customerNameArr[i]); + staffCustomerDto.setCustomerMobile(customerMobileArr[i]); + staffCustomerDtoList.add(staffCustomerDto); + } + staffShopDetailVo.setStaffCustomerDtoList(staffCustomerDtoList); + } + //归属客户 + Shop shop = this.getByShopId(shopId); + Long belongUserId = shop.getBelongUserId(); + if(belongUserId!=null){ + SysUser sysUser = remoteUserService.getSysUser(belongUserId).getData(); + if(sysUser!=null){ + staffShopDetailVo.setBelongUser(sysUser.getNickName()); + } + } + //最近任务时间 + ShopTask shopTask = shopTaskService.getLastTask(shopId); + if(shopTask!=null){ + staffShopDetailVo.setNextTaskDate(shopTask.getTaskDate()); + } + staffShopDetailVo.setShopId(shopId); + return staffShopDetailVo; + } + + + /** + * @description 添加分账方 + * @author jqs + * @date 2023/8/23 9:44 + * @param + * @return void + */ + @Override + public void addProfitSharingReceiver(MgtShopAuthGetDto mgtShopAuthGetDto){ + try { + ShopAuthentication shopAuthentication = shopAuthenticationService.getById(mgtShopAuthGetDto.getAuthId()); + Shop shop = this.getByShopId(shopAuthentication.getShopId()); + if(shopAuthentication!=null&&shopAuthentication.getAuditStatus()==6){ + ProfitSharingReceiverRequest request = new ProfitSharingReceiverRequest(); + request.setAccount(shopAuthentication.getSubMchid()); + request.setName(shopAuthentication.getBlShopName()); + ProfitSharingReceiverResult result = wechatPayUtils.addProfitSharingReceiver(request); + if(StringUtils.isNotBlank(result.getAccount())){ + shop.setAccountFlag(1); + shop.setShopStatus(handelShopStatus(null , null,shop.getAuthFlag())); + this.saveOrUpdate(shop); + } + } + + } catch (WxPayException e) { + throw new RuntimeException(e); + } + } + + + + /** + * @description + * @author jqs + * @date 2023/8/29 14:33 + * @param + * @return List<MgtUserTaskMsgVo> + */ + @Override + public List<MgtUserTaskMsgVo> getTaskMsgList(){ + return shopMapper.getTaskMsgList(); + } + + + /** + * 设置商户分账比例 + * @param mgtShopShareRatioSetDto + * @return + */ + @Override + public R setMgtShopShareRatio(MgtShopShareRatioSetDto mgtShopShareRatioSetDto) { + ShopAuthenticationHftx shopAuthenticationHftx = shopAuthenticationHftxService.getOne(new QueryWrapper<ShopAuthenticationHftx>() + .eq("shop_id", mgtShopShareRatioSetDto.getShopId()).eq("is_delete", 0)); + shopAuthenticationHftx.setShareRatio(mgtShopShareRatioSetDto.getShareRatio()); + shopAuthenticationHftxService.updateById(shopAuthenticationHftx); + return R.ok(); + } + + + /** + * 查询结算记录 + * @param merchantBasicdataSettlementDto + * @return + */ + @Override + public R<List<MerchantBasicdataSettlementVo>> getMerchantBasicDataSettlement(MerchantBasicdataSettlementDto merchantBasicdataSettlementDto) { + ShopAuthenticationHftx shopAuthenticationHftx = shopAuthenticationHftxService.getOne(new QueryWrapper<ShopAuthenticationHftx>() + .eq("shop_id", merchantBasicdataSettlementDto.getShopId()).eq("is_delete", 0)); + if(null == shopAuthenticationHftx){ + return R.ok(new ArrayList<>()); + } + String huifuId = shopAuthenticationHftx.getHuifuId(); + String startTime = merchantBasicdataSettlementDto.getStartTime(); + String endTime = merchantBasicdataSettlementDto.getEndTime(); + Integer pageNum = merchantBasicdataSettlementDto.getPageNum(); + 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); + } + 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(coverUrlList); + + //批量修改门店信息 + oneClinkSyncing.setShopIdList(shopIdList); + shopMapper.updateShopByOneClinkSyncing(oneClinkSyncing); + return R.ok(); + } } -- Gitblit v1.7.1