From ba714629588e22f9ffaab83819f6b9200a6397b3 Mon Sep 17 00:00:00 2001 From: zhanglin8526 <852614290@qq.com> Date: 星期五, 04 八月 2023 22:59:08 +0800 Subject: [PATCH] 1、定时任务 商户进件状态查询 2、小程序下单统一支付提交 3、订单核销分账(未完成) --- ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java | 1206 ++++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 1,102 insertions(+), 104 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 502dffa..5427a4c 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,37 +1,53 @@ package com.ruoyi.shop.service.impl.shop; +import com.alibaba.fastjson2.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +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.exception.WxPayException; +import com.ruoyi.common.core.constant.CacheConstants; +import com.ruoyi.common.core.exception.ServiceException; +import com.ruoyi.common.core.utils.DateUtils; +import com.ruoyi.common.core.utils.StringUtils; +import com.ruoyi.common.core.utils.bean.BeanUtils; +import com.ruoyi.common.core.utils.uuid.IdUtils; +import com.ruoyi.common.redis.service.RedisService; +import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.shop.domain.dto.*; import com.ruoyi.shop.domain.pojo.shop.*; import com.ruoyi.shop.domain.pojo.task.ShopFile; import com.ruoyi.shop.domain.vo.*; +import com.ruoyi.shop.enums.WxApplyMentStateEnum; import com.ruoyi.shop.mapper.shop.ShopMapper; import com.ruoyi.shop.service.shop.*; +import com.ruoyi.shop.service.task.MemberTaskService; import com.ruoyi.shop.service.task.ShopFileService; -import com.ruoyi.shop.util.CodeFactoryUtil; -import com.ruoyi.system.api.RemoteConfigService; -import com.ruoyi.system.api.RemoteMemberService; -import com.ruoyi.system.api.RemoteOrderService; -import com.ruoyi.system.api.RemoteUserService; -import com.ruoyi.system.api.domain.dto.AppMemberBindingDto; -import com.ruoyi.system.api.domain.poji.shop.Shop; +import com.ruoyi.shop.service.task.ShopTaskService; +import com.ruoyi.shop.util.WechatPayUtils; +import com.ruoyi.shop.util.WxShopUtils; +import com.ruoyi.shop.util.dto.*; +import com.ruoyi.system.api.constant.AppErrorConstant; +import com.ruoyi.system.api.domain.dto.*; import com.ruoyi.system.api.domain.poji.config.SysTag; import com.ruoyi.system.api.domain.poji.member.Member; +import com.ruoyi.system.api.domain.poji.shop.Shop; import com.ruoyi.system.api.domain.poji.sys.SysUser; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.ruoyi.system.api.domain.vo.MerHomeShopTotalVo; -import com.ruoyi.common.core.utils.StringUtils; -import org.springframework.beans.BeanUtils; +import com.ruoyi.system.api.domain.vo.*; +import com.ruoyi.system.api.service.*; 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.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.List; -import java.util.StringJoiner; +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; /** * <p> @@ -71,27 +87,67 @@ @Resource private RemoteOrderService remoteOrderService; + @Resource + private ShopStaffService shopStaffService; + + @Resource + private ShopAccountService shopAccountService; + + @Resource + private ShopAuthenticationService shopAuthenticationService; + + @Resource + private ShopProportionService shopProportionService; + + @Resource + private RemoteConfigService remoteConfigService; + + @Resource + private ShopTotalService shopTotalService; + + @Resource + private MemberTaskService memberTaskService; + + @Resource + private ShopTransferRecordService shopTransferRecordService; + + @Resource + private RemoteSysStaffService remoteSysStaffService; + + @Resource + private RemoteFileService remoteFileService; + + @Resource + private ShopTaskService shopTaskService; + + @Resource + private RedisService redisService; + + @Resource + private WechatPayUtils wechatPayUtils; + /** * 获取商户详情 + * * @param shopId * @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()); } } @@ -100,7 +156,7 @@ 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; @@ -108,41 +164,97 @@ /** * 创建商户 - * @param MGTEditShopDto + * + * @param mgtEditShopDto */ @Override - public void createShop(MgtEditShopDto MGTEditShopDto){ + public void createShop(MgtEditShopDto mgtEditShopDto) { Shop shop = new Shop(); - if(MGTEditShopDto.getShopId()!=null){ - shop = this.getById(MGTEditShopDto.getShopId()); + Boolean newShop = false; + 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); + } + } + } + + } + //验证商户名唯一 + Shop shopSame = this.getOne(new LambdaQueryWrapper<Shop>().eq(Shop::getDelFlag, 0).eq(Shop::getShopName, mgtEditShopDto.getShopName())); + if (mgtEditShopDto.getShopId() != null) { + if (shopSame != null && !Objects.equals(shopSame.getShopId(), mgtEditShopDto.getShopId())) { + throw new ServiceException(AppErrorConstant.SHOP_DOUBLE); + } + shop = this.getById(mgtEditShopDto.getShopId()); shop.setUpdateTime(new Date()); - shop.setUpdateUserId(MGTEditShopDto.getUserId()); + shop.setUpdateUserId(mgtEditShopDto.getUserId()); shop.setShopTags(null); //清空关联记录 shopFileService.deleteByShopId(shop.getShopId()); shopRelTagService.deleteByShopId(shop.getShopId()); shopRelUserService.deleteByShopId(shop.getShopId()); - }else{ - shop.setShopStatus(2); + //清空归属 + shopRelUserService.deleteByShopId(shop.getShopId()); + shopStaffService.clearShopStaffRelation(shop.getShopId()); + 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) { + throw new ServiceException(AppErrorConstant.SHOP_DOUBLE); + } + shop.setDelFlag(0); + shop.setShopStatus(3); shop.setCreateTime(new Date()); - shop.setCreateUserId(MGTEditShopDto.getUserId()); + shop.setCreateUserId(mgtEditShopDto.getUserId()); + shop.setFrozenFlag(0); + shop.setCooperativeFlag(0); + shop.setAuthFlag(0); + newShop = true; } - BeanUtils.copyProperties(MGTEditShopDto,shop); - this.saveOrUpdate(shop); + BeanUtils.copyProperties(mgtEditShopDto, shop); + String shopDetail = shop.getShopDetail(); + if (StringUtils.isNotBlank(shopDetail)) { + byte[] decodedBytes = Base64.getDecoder().decode(shopDetail); + shopDetail = new String(decodedBytes, StandardCharsets.UTF_8); + shop.setShopDetail(shopDetail); + } //商户编号 - if(MGTEditShopDto.getShopId()==null){ - String shopNo = CodeFactoryUtil.getShopNo(shop.getShopId()); + /*if(mgtEditShopDto.getShopId()==null){ + String shopNo = CodeFactoryUtil.getShopNo(); shop.setShopNumber(shopNo); - } + }*/ + this.saveOrUpdate(shop); //商户标签 - String shopTagIds = MGTEditShopDto.getShopTagIds(); - if(StringUtils.isNotBlank(shopTagIds)){ + String shopTagIds = mgtEditShopDto.getShopTagIds(); + 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(); @@ -155,14 +267,19 @@ shop.setShopTags(shopTagSj.toString()); this.saveOrUpdate(shop); } + //商户归属员工 + /*if(shop.getBelongUserId()!=null){ + SysUser belongSysUser = sysUserService.getSysUser(shop.getBelongUserId()).getData(); + handleShopStaff(shop.getShopId(),belongSysUser); + }*/ //商户关联人员 - String relUserIds = MGTEditShopDto.getRelUserIds(); - if(StringUtils.isNotBlank(relUserIds)){ + 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(); @@ -173,20 +290,21 @@ shopRelUser.setUserMobile(sysUser.getPhonenumber()); shopRelUser.setUserDeptId(sysUser.getDeptId()); shopRelUserService.save(shopRelUser); + handleShopStaff(shop.getShopId(), sysUser); } } //商户封面 ShopFile shopFile = new ShopFile(); shopFile.setDelFlag(0); shopFile.setFileType(1); - shopFile.setFileUrl(MGTEditShopDto.getShopPicture()); + shopFile.setFileUrl(mgtEditShopDto.getShopPicture()); shopFile.setShopId(shop.getShopId()); shopFileService.save(shopFile); //商户banner - if(StringUtils.isNotBlank(MGTEditShopDto.getShopBanners())){ - String shopBanners= MGTEditShopDto.getShopBanners(); + if (StringUtils.isNotBlank(mgtEditShopDto.getShopBanners())) { + String shopBanners = mgtEditShopDto.getShopBanners(); String[] shopBannerArray = shopBanners.split(","); - for(String str : shopBannerArray){ + for (String str : shopBannerArray) { shopFile = new ShopFile(); shopFile.setDelFlag(0); shopFile.setFileType(2); @@ -195,77 +313,303 @@ shopFileService.save(shopFile); } } - } - - /** - * 修改合作时间 - * @param mgtChangeCoopDto - */ - @Override - public void changeCooperationTime(MgtChangeCoopDto mgtChangeCoopDto){ - Shop shop = this.getById(mgtChangeCoopDto.getShopId()); - String coopStartTime = mgtChangeCoopDto.getCoopStartTime(); - String coopEndTime = mgtChangeCoopDto.getCoopEndTime(); - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - try { - Date coopStartDate = simpleDateFormat.parse(coopStartTime); - Date coopEndDate = simpleDateFormat.parse(coopEndTime); - Date nowTime = new Date(); - shop.setCooperationStartTime(coopStartDate); - shop.setCooperationEndTime(coopEndDate); - Boolean inTime = false; - if(coopStartDate.compareTo(nowTime)<0&&coopEndDate.compareTo(nowTime)>0){ - inTime = true; - } - if(shop.getShopStatus()==2&&inTime){ - shop.setShopStatus(1); - } - shop.setUpdateTime(nowTime); - shop.setUpdateUserId(mgtChangeCoopDto.getUserId()); + if (newShop) { + //生成商户关联记录 + initNewShop(shop, mgtEditShopDto.getUserId()); + CodeGetDto codeGetDto = new CodeGetDto(); + String url = "https://wxapp.hhhrt.cn/mini/activity?activityId=" + shop.getShopId(); + codeGetDto.setUrl(url); + codeGetDto.setFileName("shop-" + shop.getShopId()); + String codeUrl = remoteFileService.getAppOrderTotal(codeGetDto).getData(); + shop.setShopCode(codeUrl); this.saveOrUpdate(shop); - } catch (ParseException e) { - e.printStackTrace(); } } /** + * @param shop + * @param userId + * @return void + * @description 商户关联类初始化 + * @author jqs + * @date 2023/7/7 11:25 + */ + private void initNewShop(Shop shop, Long userId) { + BigDecimal zeroBig = new BigDecimal("0.00"); + //商户账户信息初始化 + ShopAccount shopAccount = new ShopAccount(); + shopAccount.setShopId(shop.getShopId()); + shopAccount.setDelFlag(0); + shopAccount.setTotalIncome(new BigDecimal("0")); + shopAccount.setTotalDisburse(new BigDecimal("0")); + shopAccount.setTotalRefund(new BigDecimal("0")); + shopAccount.setTotalProfitsharing(new BigDecimal("0")); + shopAccount.setTotalMoney(new BigDecimal("0")); + shopAccountService.save(shopAccount); + //商户认证信息初始化 + String authId = IdUtils.simpleUUID(); + ShopAuthentication shopAuthentication = new ShopAuthentication(); + shopAuthentication.setAuthId(authId); + shopAuthentication.setDelFlag(0); + shopAuthentication.setShopId(shop.getShopId()); + shopAuthenticationService.save(shopAuthentication); + //商户分成信息初始化 + ShopProportion shopProportion = new ShopProportion(); + shopProportion.setDelFlag(0); + shopProportion.setShopId(shop.getShopId()); + shopProportion.setShopType(shop.getShopType()); + shopProportion.setProportionPercent(new BigDecimal("100.00")); + shopProportion.setUpdateTime(new Date()); + shopProportion.setUpdateUserId(userId); + shopProportionService.save(shopProportion); + //商户统计 + ShopTotal shopTotal = new ShopTotal(); + shopTotal.setShopId(shop.getShopId()); + shopTotal.setDelFlag(0); + shopTotal.setLastPayMoney(zeroBig); + shopTotal.setTotalActivityCount(0); + shopTotal.setTotalOrder(0); + shopTotal.setTotalCycleOrder(0); + shopTotal.setTotalExperienceOrder(0); + shopTotal.setTotalServiceOrder(0); + shopTotal.setTotalGoodsOrder(0); + shopTotal.setTotalServiceCount(0); + shopTotal.setUsedServiceCount(0); + shopTotal.setUseableServiceCount(0); + shopTotal.setTotalCycleService(0); + shopTotal.setUsedCycleService(0); + shopTotal.setUseableCycleService(0); + shopTotal.setTotalCyclePerson(0); + shopTotal.setUseableCyclePerson(0); + shopTotal.setTotalServiceService(0); + shopTotal.setUsedServiceService(0); + shopTotal.setUseableServiceService(0); + shopTotal.setTotalServicePerson(0); + shopTotal.setUseableServicePerson(0); + shopTotal.setTotalExperienceService(0); + shopTotal.setUsedExperienceService(0); + shopTotal.setUseableExperienceService(0); + shopTotal.setTotalExperiencePerson(0); + shopTotal.setUseableExperiencePerson(0); + shopTotal.setTotalOrderMoney(zeroBig); + shopTotal.setTotalCycleMoney(zeroBig); + shopTotal.setTotalExperienceMoney(zeroBig); + shopTotal.setTotalServiceMoney(zeroBig); + shopTotal.setTotalGoodsMoney(zeroBig); + shopTotalService.save(shopTotal); + } + + /** + * @param mgtTerminateCooperationDto + * @return void + * @description 终止合作 + * @author jqs + * @date 2023/6/20 12:01 + */ + @Override + public void terminateMgtCooperation(MgtTerminateCooperationDto mgtTerminateCooperationDto) { + Shop shop = this.getById(mgtTerminateCooperationDto.getShopId()); + if (mgtTerminateCooperationDto.getCooperativeFlag() == 1) { + /*Date coopStartDate = shop.getCooperationStartTime(); + Date coopEndDate = shop.getCooperationEndTime(); + Date nowTime = new Date(); + //判断合作时间 没在时间内不能开启 + if(coopStartDate.compareTo(nowTime)>0&&coopEndDate.compareTo(nowTime)<0){ + throw new ServiceException(AppErrorConstant.COOPERATION_TIME_ERROR); + }*/ + shop.setCooperativeFlag(1); + } else { + shop.setCooperativeFlag(0); + } + shop.setShopStatus(handelShopStatus(shop.getFrozenFlag(), shop.getCooperativeFlag(), shop.getAuthFlag())); + shop.setUpdateTime(new Date()); + shop.setUpdateUserId(mgtTerminateCooperationDto.getUserId()); + this.saveOrUpdate(shop); + } + + /** + * @param mgtFrozenShopDto + * @return void + * @description 冻结商户 + * @author jqs + * @date 2023/7/15 13:56 + */ + @Override + public void frozenMgtShop(MgtFrozenShopDto mgtFrozenShopDto) { + Shop shop = this.getById(mgtFrozenShopDto.getShopId()); + if (mgtFrozenShopDto.getFrozenFlag() == 1) { + shop.setFrozenFlag(1); + } else { + shop.setFrozenFlag(0); + } + shop.setShopStatus(handelShopStatus(shop.getFrozenFlag(), shop.getCooperativeFlag(), shop.getAuthFlag())); + this.saveOrUpdate(shop); + } + + /** + * @param + * @return Integer + * @description 处理商户状态 + * @author jqs + * @date 2023/7/15 14:09 + */ + private Integer handelShopStatus(Integer frozenFlag, Integer cooperativeFlag, Integer authFlag) { + Integer shopStatus = 1; + if (frozenFlag == 1) { + shopStatus = 0; + return shopStatus; + } + if (authFlag == 0) { + shopStatus = 3; + return shopStatus; + } + if (cooperativeFlag == 0) { + shopStatus = 2; + return shopStatus; + } + return shopStatus; + } + + + /** + * 修改合作时间 + * + * @param mgtChangeCoopDto + */ + @Override + 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"); + } catch (ParseException e) { + throw new RuntimeException(e); + } + Date nowTime = new Date(); + shop.setCooperationStartTime(coopStartDate); + shop.setCooperationEndTime(coopEndDate); + Boolean inTime = false; + if (coopStartDate.compareTo(nowTime) <= 0 && coopEndDate.compareTo(nowTime) >= 0) { + inTime = true; + shop.setCooperativeFlag(1); + } else { + shop.setCooperativeFlag(0); + } + if (shop.getShopStatus() == 2 && inTime) { + shop.setShopStatus(1); + } + shop.setUpdateTime(nowTime); + shop.setUpdateUserId(mgtChangeCoopDto.getUserId()); + this.saveOrUpdate(shop); + } + + /** * 分页获取商户 + * * @param page * @param mgtShopPageDto * @return */ @Override - public List<MgtShopPageVo> pageShop(Page page, MgtShopPageDto mgtShopPageDto){ - List<MgtShopPageVo> mgtShopPageVoList = shopMapper.pageShop(page, mgtShopPageDto); + public List<MgtShopPageVo> pageMgtShop(Page page, MgtShopPageDto mgtShopPageDto) { + if (StringUtils.isNotBlank(mgtShopPageDto.getShopTags())) { + mgtShopPageDto.setShopTags(mgtShopPageDto.getShopTags().replace(",", "|")); + } + // 分页查询商铺信息 + List<MgtShopPageVo> mgtShopPageVoList = shopMapper.pageMgtShop(page, mgtShopPageDto); + // 如果查询结果不为空 + if (!mgtShopPageVoList.isEmpty()) { + // 创建签约用户ID集合和所属用户ID集合 + HashSet<Long> signUserIdSet = new HashSet<>(); + HashSet<Long> belongUserIdSet = new HashSet<>(); + // 遍历查询结果,将签约用户和所属用户添加到对应的集合中 + for (MgtShopPageVo shopPageVo : mgtShopPageVoList) { + if (shopPageVo.getSignUserId() != null) { + signUserIdSet.add(shopPageVo.getSignUserId()); + } + if (shopPageVo.getBelongUserId() != null) { + belongUserIdSet.add(shopPageVo.getBelongUserId()); + } + } + MgtBaseBathDto mgtBaseBathDto; + Map<Long, MgtSysSimpleUserVo> signUserMap = null; + Map<Long, MgtSysSimpleUserVo> belongUserMap = null; + if (signUserIdSet != null && !signUserIdSet.isEmpty()) { + String signUserString = String.join(",", signUserIdSet.stream().map(Object::toString).collect(Collectors.toList())); + mgtBaseBathDto = new MgtBaseBathDto(); + mgtBaseBathDto.setIds(signUserString); + List<MgtSysSimpleUserVo> signUserVoList = remoteConfigService.listSimpleUserVo(mgtBaseBathDto).getData(); + signUserMap = signUserVoList.stream() + .collect(Collectors.toMap(MgtSysSimpleUserVo::getUserId, Function.identity())); + } + if (belongUserIdSet != null && !belongUserIdSet.isEmpty()) { + // 将签约用户ID集合和所属用户ID集合转为字符串 + String belongUserString = String.join(",", belongUserIdSet.stream().map(Object::toString).collect(Collectors.toList())); + // 查询签约用户和所属用户的详细信息 + mgtBaseBathDto = new MgtBaseBathDto(); + mgtBaseBathDto.setIds(belongUserString); + List<MgtSysSimpleUserVo> belongUserVoList = remoteConfigService.listSimpleUserVo(mgtBaseBathDto).getData(); + belongUserMap = belongUserVoList.stream() + .collect(Collectors.toMap(MgtSysSimpleUserVo::getUserId, Function.identity())); + } + // 遍历查询结果,将签约用户和所属用户的详细信息添加到商铺信息中 + for (MgtShopPageVo shopPageVo : mgtShopPageVoList) { + 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()); + } + } + } + // 返回商铺信息 return mgtShopPageVoList; } /** * 获取商户详情 + * * @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)) { + 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) { + SysUser sysUser = sysUserService.getSysUser(mgtShopInfoVo.getBelongUserId()).getData(); + mgtShopInfoVo.setBelongUserName(sysUser.getNickName()); + } + if (mgtShopInfoVo.getBelongShopId() != null) { + Shop belongShop = this.getByShopId(mgtShopInfoVo.getBelongShopId()); + 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){ + for (ShopRelUser shopRelUser : shopRelUserList) { shopUserJs.add(shopRelUser.getUserId().toString()); shopUserNameJs.add(shopRelUser.getUserName()); } @@ -274,12 +618,12 @@ } //商户图片 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()); } } @@ -293,22 +637,23 @@ /** * 修改商户标签 + * * @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(); @@ -325,78 +670,731 @@ this.saveOrUpdate(shop); } + + /** + * @param mgtTransferShopDto + * @return void + * @description 转移客户 + * @author jqs + * @date 2023/6/28 16:36 + */ + @Override + public void transferMgtShop(MgtTransferShopDto mgtTransferShopDto) { + Shop shop = this.getByShopId(mgtTransferShopDto.getShopId()); + if (shop.getBelongUserId() != null) { + if (shop.getBelongUserId().equals(mgtTransferShopDto.getUserId())) { + throw new ServiceException(AppErrorConstant.TRANS_NOT_MYSELF); + } + ShopTransferRecord shopTransferRecord = new ShopTransferRecord(); + shopTransferRecord.setDelFlag(0); + shopTransferRecord.setShopId(shop.getShopId()); + shopTransferRecord.setBeforeUserId(shop.getBelongUserId()); + shopTransferRecord.setAfterUserId(mgtTransferShopDto.getTransferUserId()); + shopTransferRecord.setTransferRemark(mgtTransferShopDto.getTransferRemark()); + shopTransferRecordService.save(shopTransferRecord); + shopRelUserService.deleteByUserId(shop.getBelongUserId()); + } + shop.setBelongUserId(mgtTransferShopDto.getTransferUserId()); + this.saveOrUpdate(shop); + /*ShopRelUser shopRelUser = new ShopRelUser(); + shopRelUser.setDelFlag(0); + shopRelUser.setShopId(shop.getShopId()); + shopRelUser.setUserId(mgtTransferShopDto.getTransferUserId()); + SysUser sysUser = remoteUserService.getSysUser(mgtTransferShopDto.getTransferUserId()).getData(); + shopRelUser.setUserMobile(sysUser.getPhonenumber()); + shopRelUser.setUserDeptId(sysUser.getDeptId()); + shopRelUser.setUserName(sysUser.getNickName()); + shopRelUserService.save(shopRelUser);*/ + } + /** * 获取附近门店 + * * @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())){ + } else if (StringUtils.isNotBlank(appNearbyShopDto.getLatitude()) && StringUtils.isNotBlank(appNearbyShopDto.getLongitude())) { AppNearShopVo appNearShopVo = shopMapper.getNearbyShop(appNearbyShopDto); shop = this.getById(appNearShopVo.getShopId()); - }else{ + } 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()); appMemberBindingDto.setUserId(member.getUserId()); appMemberBindingDto.setBindingFlag(0); remoteMemberService.updateMemberBinding(appMemberBindingDto); } 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 MerHomeShopTotalVo getMerHomeTotal(Long userId){ + public StaffHomeShopTotalVo getStaffHomeTotal(Long userId) { + List<Long> userIds = null; + List<Long> shopIds = null; + //如果是leader 查询leader下面所有的员工下的所有shopId + if (remoteSysStaffService.isLeader()) { + 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()); + } + //分别查询 + StaffHomeShopTotalVo staffHomeShopTotalVo = shopMapper.getStaffHomeTotal(shopIds); + Integer shopTaskCount = shopTaskService.getShopIngTotal(shopIds); + staffHomeShopTotalVo.setFollowMember(0); + staffHomeShopTotalVo.setNewMember(0); + staffHomeShopTotalVo.setShopTask(shopTaskCount); + return staffHomeShopTotalVo; + } + + /** + * 获取商户端 + * + * @param merBaseDto + * @return + */ + @Override + public MerHomeShopTotalVo getMerHomeTotal(MerBaseDto merBaseDto) { + Long userId = merBaseDto.getUserId(); MerHomeShopTotalVo merHomeShopTotalVo = new MerHomeShopTotalVo(); ShopRelUser shopRelUser = shopRelUserService.getByUserId(userId); Long shopId = shopRelUser.getShopId(); + //如果商户变动刷新token + 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); merHomeShopTotalVo.setShopType(shop.getShopType()); - Integer task = 0; - merHomeShopTotalVo.setTask(task); - merHomeShopTotalVo = remoteOrderService.getMerHomeTotal(merHomeShopTotalVo).getData(); + MerHomeShopTotalVo orderVo = remoteOrderService.getMerHomeTotal(merHomeShopTotalVo).getData(); + ShopTotal shopTotal = shopTotalService.getById(shopId); + 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(shopTotal.getUseableCyclePerson()); + merHomeShopTotalVo.setExplorationSurp(shopTotal.getUseableExperiencePerson()); 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) { + ShopStaff shopStaff = shopStaffService.getByUserId(sysUser.getUserId()); + if (shopStaff != null) { + shopStaff.setShopId(shopId); + } else { + String staffId = IdUtils.simpleUUID(); + shopStaff = new ShopStaff(); + shopStaff.setStaffId(staffId); + shopStaff.setDelFlag(0); + shopStaff.setUserId(sysUser.getUserId()); + shopStaff.setShopId(shopId); + shopStaff.setStaffName(sysUser.getNickName()); + shopStaff.setStaffMobile(sysUser.getPhonenumber()); + shopStaff.setStaffGender(Integer.valueOf(sysUser.getSex())); + shopStaff.setStaffAvatar(sysUser.getAvatar()); + } + shopStaffService.saveOrUpdate(shopStaff); + } + /** + * @param page + * @param mgtShopProportionPageDto + * @return List<MgtShopProportionPageVo> + * @description 平台获取商户分成列表 + * @author jqs + * @date 2023/6/8 9:25 + */ + @Override + public List<MgtShopProportionPageVo> pageMgtShopProportion(Page page, MgtShopProportionPageDto mgtShopProportionPageDto) { + return shopMapper.pageMgtShopProportion(page, mgtShopProportionPageDto); + } + + /** + * @param shopTag + * @return void + * @description 删除商户标签 + * @author jqs + * @date 2023/6/8 15:53 + */ + @Override + public void deleteShopTag(String shopTag) { + shopMapper.deleteShopTag(shopTag); + } + + /** + * @param mgtShopIdByCodeDto + * @return MgtShopIdByCodeVo + * @description 通过code获取shopId + * @author jqs + * @date 2023/6/9 16:40 + */ + @Override + public MgtShopIdByCodeVo getShopIdByCode(MgtShopIdByCodeDto mgtShopIdByCodeDto) { + MgtShopIdByCodeVo mgtShopIdByCodeVo = new MgtShopIdByCodeVo(); + List<Long> shopIdList = shopMapper.getShopIdByCode(mgtShopIdByCodeDto); + if (shopIdList != null && !shopIdList.isEmpty()) { + String shopIdStr = shopIdList.stream() + .map(Object::toString) + .collect(Collectors.joining(",")); + mgtShopIdByCodeVo.setShopIds(shopIdStr); + } + return mgtShopIdByCodeVo; + } + + /** + * @param mgtShopListDto + * @return List<MgtShopListSimpleVo> + * @description 获取商户list + * @author jqs + * @date 2023/6/12 14:37 + */ + @Override + public List<MgtShopListSimpleVo> listMgtShopSimpleVo(MgtShopListDto mgtShopListDto) { + return shopMapper.listMgtShopSimpleVo(mgtShopListDto); + } + + /** + * @param shopIds + * @return List<MgtShopListSimpleVo> + * @description 通过id获取商户列表 + * @author jqs + * @date 2023/6/14 17:53 + */ + @Override + public List<MgtSimpleShopVo> listShopSimpleVoByIds(String shopIds) { + return shopMapper.listShopSimpleVoByIds(shopIds); + } + + /** + * @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) { + return shopMapper.pageMgtShopByCityCode(page, mgtShopByCodePageDto); + } + + /** + * @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); + } + + /** + * @param + * @return MgtBulletinBoardVo + * @description boardShopTotal + * @author jqs34 + * @date 2023/6/18 16:59 + */ + @Override + public MgtBulletinBoardVo boardShopTotal() { + MgtBulletinBoardVo mgtBulletinBoardVoShop = shopMapper.shopTotal(); + return mgtBulletinBoardVoShop; + } + + /** + * @param mgtShopAuthDto + * @return void + * @description 商户进件 + * @author jqs + * @date 2023/6/19 11:02 + */ + @Override + public void mgtShopAuth(MgtShopAuthDto mgtShopAuthDto) throws WxPayException { + 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()); + shopAuthenticationService.saveOrUpdate(shopAuthentication); + } + + /** + * @param mgtBasePlatformDto + * @return MgtPlTotalShopTotalVo + * @description 获取平台商户统计 + * @author jqs + * @date 2023/6/21 16:25 + */ + @Override + public MgtPlTotalShopTotalVo getPlTotalShopTotal(MgtBasePlatformDto mgtBasePlatformDto) { + //获取需要关联的用户id集合 + if (mgtBasePlatformDto.getDeptId() != null) { + List<Long> userIdList = new ArrayList<>(); + if (mgtBasePlatformDto.getUserId() != null) { + userIdList.add(mgtBasePlatformDto.getUserId()); + } else { + MgtUserIdByDept mgtUserIdByDept = new MgtUserIdByDept(); + mgtUserIdByDept.setDeptId(mgtBasePlatformDto.getUserId()); + mgtUserIdByDept = configService.getUserIdByDept(mgtUserIdByDept).getData(); + userIdList = mgtUserIdByDept.getUserIdList(); + } + if (!userIdList.isEmpty()) { + mgtBasePlatformDto.setUserIdList(userIdList); + } + } + //获取基础统计 + MgtPlTotalShopTotalVo plTotalShopTotalVo = shopMapper.getPlTotalShopTotal(); + plTotalShopTotalVo.setSignTotal(0); + List<Long> shopIdList = shopMapper.listShopIdByTotal(mgtBasePlatformDto); + if (!shopIdList.isEmpty()) { + MgtShopTotalMemberVo shopTotalMemberVo = remoteMemberService.getUserTotalByShopId(shopIdList).getData(); + plTotalShopTotalVo.setManTotal(shopTotalMemberVo.getManTotal()); + plTotalShopTotalVo.setWomenTotal(shopTotalMemberVo.getWomenTotal()); + plTotalShopTotalVo.setAgeKey(shopTotalMemberVo.getAgeKey()); + plTotalShopTotalVo.setAgeValue(shopTotalMemberVo.getAgeValue()); + } + //获取商户类型 + List<MgtMapIntTotalVo> shopTypeTotal = shopMapper.listShopTypeTotal(mgtBasePlatformDto); + if (shopTypeTotal != null && shopTypeTotal.size() > 0) { + shopTypeTotal = listRemoveNull(shopTypeTotal); + plTotalShopTotalVo.setShopTypeVos(shopTypeTotal); + } + //获取商户状态 + List<MgtMapIntTotalVo> shopStatusTotal = shopMapper.listShopStatusTotal(mgtBasePlatformDto); + if (shopStatusTotal != null && shopStatusTotal.size() > 0) { + shopStatusTotal = listRemoveNull(shopStatusTotal); + plTotalShopTotalVo.setShopStatusVos(shopStatusTotal); + } + //获取区域排名 + List<MgtMapIntTotalVo> shopAreaRank = shopMapper.listShopAreaRank(mgtBasePlatformDto); + if (shopAreaRank != null && shopAreaRank.size() > 0) { + shopAreaRank = listRemoveNull(shopAreaRank); + plTotalShopTotalVo.setAreaRankVos(shopAreaRank); + } + //获取销售排名 + List<MgtMapIntTotalVo> shopSalesRank = shopMapper.listShopSalesRank(mgtBasePlatformDto); + if (shopSalesRank != null && shopSalesRank.size() > 0) { + String[] shopSalesKey = new String[shopSalesRank.size()]; + Integer[] shopSalesValue = new Integer[shopSalesRank.size()]; + // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组 + for (int i = 0; i < shopSalesRank.size(); i++) { + shopSalesKey[i] = shopSalesRank.get(i).getMapKey(); + shopSalesValue[i] = shopSalesRank.get(i).getMapValue(); + } + plTotalShopTotalVo.setShopSalesRankKey(shopSalesKey); + plTotalShopTotalVo.setShopSalesRankValue(shopSalesValue); + } + //获取推荐 + List<MgtMapIntTotalVo> shopRecommendRank = shopMapper.listShopRecommendRank(mgtBasePlatformDto); + if (shopRecommendRank != null && shopRecommendRank.size() > 0) { + shopRecommendRank = listRemoveNull(shopRecommendRank); + plTotalShopTotalVo.setShopRecommendVos(shopRecommendRank); + } + return plTotalShopTotalVo; + } + + /** + * @param MgtMapIntTotalVos + * @return List<MgtMapIntTotalVo> + * @description 去除空字符串 + * @author jqs + * @date 2023/6/27 17:35 + */ + private List<MgtMapIntTotalVo> listRemoveNull(List<MgtMapIntTotalVo> MgtMapIntTotalVos) { + for (int i = 0; i < MgtMapIntTotalVos.size(); i++) { + if (StringUtils.isBlank(MgtMapIntTotalVos.get(i).getMapKey())) { + MgtMapIntTotalVos.remove(i); + } + } + return MgtMapIntTotalVos; + } + + /** + * @param mgtBasePlatformDto + * @return List<Long> + * @description 获取平台统计shopId + * @author jqs34 + * @date 2023/6/23 14:12 + */ + @Override + public List<Long> listShopIdByPlTotal(MgtBasePlatformDto mgtBasePlatformDto) { + List<Long> shopIdList = shopMapper.listShopIdByPlTotal(mgtBasePlatformDto); + return shopIdList; + } + + + /** + * @param authId + * @return MgtShopAuthGetVo + * @description 获取商户审核资料 + * @author jqs + * @date 2023/6/25 10:37 + */ + @Override + public MgtShopAuthGetVo getMgtShopAuth(String authId) { + MgtShopAuthGetVo shopAuthGetVo = new MgtShopAuthGetVo(); + ShopAuthentication shopAuthentication = shopAuthenticationService.getById(authId); + BeanUtils.copyProperties(shopAuthentication, shopAuthGetVo); + return shopAuthGetVo; + } + + /** + * @param authId + * @return MgtShopAuthCodeVo + * @description 获取商户验证信息 + * @author jqs + * @date 2023/6/26 10:38 + */ + @Override + public MgtShopAuthCodeVo getMgtShopAuthCode(String authId) { + MgtShopAuthCodeVo mgtShopAuthCodeVo = new MgtShopAuthCodeVo(); + ShopAuthentication shopAuthentication = shopAuthenticationService.getById(authId); + mgtShopAuthCodeVo.setSignUrl(shopAuthentication.getSignUrl()); + mgtShopAuthCodeVo.setLegalValidationUrl(shopAuthentication.getLegalValidationUrl()); + return mgtShopAuthCodeVo; + } + + + /** + * @param shopId + * @return List<Long> + * @description 获取商户下属代理商 + * @author jqs + * @date 2023/7/3 17:27 + */ + @Override + 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()); + return shopIds; + } + + /** + * @param shopId + * @return List<MgtSimpleShopVo> + * @description 获取商户下属代理商 + * @author jqs + * @date 2023/7/3 18:18 + */ + @Override + 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 -> { + MgtSimpleShopVo simpleShopVo = new MgtSimpleShopVo(); + simpleShopVo.setShopId(shop.getShopId()); + simpleShopVo.setShopName(shop.getShopName()); + return simpleShopVo; + }).collect(Collectors.toList()); + return simpleShopVoList; + } + + /** + * @param userId + * @return Shop + * @description 获取用户管理商户 + * @author jqs + * @date 2023/7/14 10:00 + */ + @Override + public Shop getShopByBelongUserId(Long userId) { + LambdaQueryWrapper<Shop> queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(Shop::getDelFlag, 0); + queryWrapper.eq(Shop::getBelongUserId, userId); + return this.getOne(queryWrapper, false); + } + + /** + * @param page + * @param staffShopPageDto + * @return List<StaffShopPageVo> + * @description 员工端获取商户列表 + * @author jqs + * @date 2023/7/14 15:26 + */ + @Override + public List<StaffShopPageVo> pageStaffShop(Page page, StaffShopPageDto staffShopPageDto) { + List<StaffShopPageVo> staffShopPageVoList = shopMapper.pageStaffShop(page, staffShopPageDto); + return staffShopPageVoList; + } + + /** + * @param userId + * @return StaffShopSimpleTotalVo + * @description 获取员工端商户数量统计 + * @author jqs + * @date 2023/7/14 15:51 + */ + @Override + public StaffShopSimpleTotalVo getStaffSimpleTotal(Long userId) { + List<Long> userIdList = null; + if (remoteSysStaffService.isLeader()) { + userIdList = sysUserService.getUserIdsByDept(userId).getData(); + userIdList.add(userId); + } else { + userIdList.add(userId); + } + return shopMapper.getStaffSimpleTotal(userIdList); + } + + /** + * @param shopId + * @return StaffShopInfoGetVo + * @description 员工端获取商户详情 + * @author jqs + * @date 2023/7/14 18:32 + */ + @Override + public StaffShopInfoGetVo getStaffShopInfo(Long shopId) { + // 创建员工商店信息对象 + StaffShopInfoGetVo staffShopInfoGetVo = new StaffShopInfoGetVo(); + // 通过商店ID获取商店信息 + Shop shop = this.getByShopId(shopId); + // 获取商店文件列表 + List<ShopFile> shopFileList = shopFileService.listShopFileByShopId(shopId); + // 初始化商店图片 + String shopPicture = null; + // 遍历商店文件列表,获取商店图片 + if (shopFileList != null && !shopFileList.isEmpty()) { + for (ShopFile shopFile : shopFileList) { + if (shopFile.getFileType() == 1) { + shopPicture = shopFile.getFileUrl(); + break; + } + } + } + // 创建商店总览对象,并设置商店ID + MerHomeShopTotalVo merHomeShopTotalVo = new MerHomeShopTotalVo(); + merHomeShopTotalVo.setShopId(shopId); + // 通过远程订单服务获取商店总览信息 + MerHomeShopTotalVo orderVo = remoteOrderService.getMerHomeTotal(merHomeShopTotalVo).getData(); + // 获取商店总计信息 + ShopTotal shopTotal = shopTotalService.getById(shopId); + // 获取商店任务计数 + Integer taskCount = memberTaskService.getMemberIngTotal(shopId); + // 设置员工商店信息对象的属性 + staffShopInfoGetVo.setTodayReservation(0); + staffShopInfoGetVo.setUnHandleOrder(orderVo.getUnHandleOrder()); + staffShopInfoGetVo.setShopTask(taskCount); + staffShopInfoGetVo.setShopTurnover(orderVo.getShopTurnover()); + staffShopInfoGetVo.setCycleSurp(shopTotal.getUseableCyclePerson()); + staffShopInfoGetVo.setExplorationSurp(shopTotal.getUseableExperiencePerson()); + staffShopInfoGetVo.setShopId(shopId); + staffShopInfoGetVo.setShopName(shop.getShopName()); + staffShopInfoGetVo.setShopPicture(shopPicture); + staffShopInfoGetVo.setBusinessStartTime(shop.getBusinessStartTime()); + staffShopInfoGetVo.setBusinessEndTime(shop.getBusinessEndTime()); + staffShopInfoGetVo.setShopownerName(shop.getShopownerName()); + staffShopInfoGetVo.setShopownerPhone(shop.getShopownerPhone()); + staffShopInfoGetVo.setShopAddress(shop.getShopAreaName() + shop.getShopAddress()); + staffShopInfoGetVo.setShopCustomStatus(shop.getShopCustomStatus()); + staffShopInfoGetVo.setShopTags(shop.getShopTags()); + staffShopInfoGetVo.setSupportingCapacityFlag(shop.getSupportingCapacityFlag()); + staffShopInfoGetVo.setOperationPersonFlag(shop.getOperationPersonFlag()); + staffShopInfoGetVo.setExecutiveForceFlag(shop.getExecutiveForceFlag()); + staffShopInfoGetVo.setPatternFlag(shop.getPatternFlag()); + staffShopInfoGetVo.setConnectionFlag(shop.getConnectionFlag()); + staffShopInfoGetVo.setEconomicAbilityFlag(shop.getEconomicAbilityFlag()); + staffShopInfoGetVo.setRelationPartner(shop.getRelationPartner()); + staffShopInfoGetVo.setBusinessHistory(shop.getBusinessHistory()); + staffShopInfoGetVo.setNewAreaMember(0); + staffShopInfoGetVo.setAreaTurnover(BigDecimal.ZERO); + staffShopInfoGetVo.setFrozenFlag(shop.getFrozenFlag()); + // 如果商店类型为1,则获取该商店ID列表的新区域成员和总订单金额 + if (shop.getShopType() == 1) { + List<Long> shopIdList = this.listShopIdByShopId(shop.getShopId()); + if (shopIdList != null && !shopIdList.isEmpty()) { + Integer count = remoteMemberService.getAreaNewMember(shopIdList).getData(); + staffShopInfoGetVo.setNewAreaMember(count); + ShopTotal shopTotalAll = shopTotalService.shopsTotalByIds(shopIdList); + staffShopInfoGetVo.setAreaTurnover(shopTotalAll.getTotalOrderMoney()); + } + } + // 如果商店的扩展联系方式不为空,则设置员工商店信息对象的扩展联系方式列表 + String extendContacts = shop.getExtendContacts(); + if (StringUtils.isNotBlank(extendContacts)) { + List<ExtendContactsVo> extendContactsVoList = JSON.parseArray(extendContacts, ExtendContactsVo.class); + staffShopInfoGetVo.setExtendContactsVoList(extendContactsVoList); + } + // 返回员工商店信息对象 + return staffShopInfoGetVo; + } + + /** + * @param staffShopEstimateEditDto + * @return void + * @description 修改商户评估 + * @author jqs + * @date 2023/7/15 10:18 + */ + @Override + public void editShopEstimate(StaffShopEstimateEditDto staffShopEstimateEditDto) { + Shop shop = new Shop(); + shop.setShopId(staffShopEstimateEditDto.getShopId()); + shop.setSupportingCapacityFlag(staffShopEstimateEditDto.getSupportingCapacityFlag()); + shop.setOperationPersonFlag(staffShopEstimateEditDto.getOperationPersonFlag()); + shop.setExecutiveForceFlag(staffShopEstimateEditDto.getExecutiveForceFlag()); + shop.setPatternFlag(staffShopEstimateEditDto.getPatternFlag()); + shop.setConnectionFlag(staffShopEstimateEditDto.getConnectionFlag()); + shop.setEconomicAbilityFlag(staffShopEstimateEditDto.getEconomicAbilityFlag()); + shop.setRelationPartner(staffShopEstimateEditDto.getRelationPartner()); + shop.setBusinessHistory(staffShopEstimateEditDto.getBusinessHistory()); + shop.setUpdateUserId(staffShopEstimateEditDto.getUserId()); + shop.setUpdateTime(new Date()); + shopMapper.updateShop(shop); + } + + /** + * @param staffShopECEditDto + * @return void + * @description 修改店铺扩展联系人 + * @author jqs + * @date 2023/7/15 11:06 + */ + @Override + public void editExtendContacts(StaffShopECEditDto staffShopECEditDto) { + Shop shop = new Shop(); + String extendContacts = null; + List<ExtendContactsVo> extendContactsVoList = staffShopECEditDto.getExtendContactsVoList(); + if (extendContactsVoList != null && !extendContactsVoList.isEmpty()) { + extendContacts = JSON.toJSONString(extendContactsVoList); + } + shop.setExtendContacts(extendContacts); + shop.setShopId(staffShopECEditDto.getShopId()); + shop.setUpdateUserId(staffShopECEditDto.getUserId()); + shop.setUpdateTime(new Date()); + shopMapper.updateExtendContacts(shop); + } + + /** + * @param staffShopCCEditDto + * @return void + * @description 修改店铺状态 + * @author jqs + * @date 2023/7/15 11:51 + */ + @Override + public void editShopCustomStatus(StaffShopCCEditDto staffShopCCEditDto) { + Shop shop = new Shop(); + shop.setShopCustomStatus(staffShopCCEditDto.getShopCustomStatus()); + shop.setShopId(staffShopCCEditDto.getShopId()); + shop.setUpdateUserId(staffShopCCEditDto.getUserId()); + shop.setUpdateTime(new Date()); + shopMapper.updateShop(shop); + } + + @Override + public void queryEcommerceApplyMentsStatus() { + List<ShopAuthentication> list = shopAuthenticationService.getShopAuthNeedUpdateStatus(); + list.forEach(item -> queryApplyStatusByApplymentId(item.getApplymentId(), item.getShopId())); + } + + /** + * 调用微信接口查询申请审核状态 + * @param applymentId + */ + private void queryApplyStatusByApplymentId(String applymentId, Long shopId) { + try { + if (StringUtils.isNotBlank(applymentId)) { + ApplymentsStatusResult result = wechatPayUtils.queryApplyStatusByApplymentId(applymentId); + shopAuthenticationService.updateAuditStatusByApplymentId(applymentId, result); + String applymentState = result.getApplymentState(); + if(WxApplyMentStateEnum.FINISH.getText().equals(applymentState)){ + applySuccessUpdateShopStatus(shopId); + } + } + } catch (WxPayException e) { + e.printStackTrace(); + } + } + + /** + * 商户进件审核完成,更新商户状态 + * @param shopId + */ + private void applySuccessUpdateShopStatus(Long shopId){ + // 更新商户状态为正常 + Shop shop = this.getById(shopId); + Integer shopStatus = handelShopStatus(shop.getFrozenFlag(), shop.getCooperativeFlag(), 1); + LambdaUpdateWrapper<Shop> updateWrapper = Wrappers.lambdaUpdate(); + updateWrapper.eq(Shop::getShopId, shopId) + .set(Shop::getShopStatus, shopStatus) + .set(Shop::getAuthFlag, 1); + this.update(updateWrapper); + } } -- Gitblit v1.7.1