From 156e141e55a8abf486157d1fa89d25e23f4a06a3 Mon Sep 17 00:00:00 2001 From: jiangqs <jiangqs> Date: 星期五, 25 八月 2023 19:32:30 +0800 Subject: [PATCH] bug --- ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java | 1379 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 1,322 insertions(+), 57 deletions(-) diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java index 78b40a9..a327624 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java @@ -1,32 +1,54 @@ 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.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.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.vo.AppNearbyShopVo; +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; import com.ruoyi.shop.service.shop.*; -import com.ruoyi.shop.util.CodeFactoryUtil; -import com.ruoyi.system.api.RemoteActivityService; -import com.ruoyi.system.api.RemoteConfigService; -import com.ruoyi.system.api.RemoteUserService; +import com.ruoyi.shop.service.task.MemberTaskService; +import com.ruoyi.shop.service.task.ShopFileService; +import com.ruoyi.shop.service.task.ShopTaskService; +import com.ruoyi.shop.util.WechatPayUtils; +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.ruoyi.shop.domain.vo.AppShopInfoVo; -import com.ruoyi.shop.domain.vo.MgtShopInfoVo; -import com.ruoyi.shop.domain.vo.MgtShopPageVo; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.BeanUtils; +import com.ruoyi.system.api.domain.vo.*; +import com.ruoyi.system.api.service.*; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; 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> @@ -37,6 +59,7 @@ * @since 2023-04-25 */ @Service +@Slf4j public class ShopServiceImpl extends ServiceImpl<ShopMapper, Shop> implements ShopService { @Resource @@ -52,6 +75,9 @@ private RemoteConfigService configService; @Resource + private RemoteMemberService remoteMemberService; + + @Resource private RemoteUserService sysUserService; @Resource @@ -60,9 +86,59 @@ @Resource private ShopRelUserService shopRelUserService; + @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; + + @Resource + private ShopDetailService shopDetailService; + + @Resource + private RemoteUserService remoteUserService; + + /** * 获取商户详情 + * * @param shopId * @return */ @@ -98,34 +174,94 @@ /** * 创建商户 - * @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)) { + if(relUserIds.startsWith(",")){ + relUserIds = relUserIds.substring(1); + } + String[] relUserIdArray = relUserIds.split(","); + ShopRelUser shopRelUser; + Long userId; + if(mgtEditShopDto.getShopId()!=null){ + for (String str : relUserIdArray) { + userId = Long.valueOf(str); + shopRelUser = shopRelUserService.getByUserId(userId); + if(shopRelUser!=null&&!shopRelUser.getShopId().equals(mgtEditShopDto.getShopId())){ + throw new ServiceException(AppErrorConstant.SHOP_USER_DOUBLE); + } + } + }else { + for (String str : relUserIdArray) { + userId = Long.valueOf(str); + shopRelUser = shopRelUserService.getByUserId(userId); + if(shopRelUser!=null){ + throw new ServiceException(AppErrorConstant.SHOP_USER_DOUBLE); + } + } + } + + } + //验证商户名唯一 + Shop shopSame = this.getOne(new LambdaQueryWrapper<Shop>().eq(Shop::getDelFlag,0).eq(Shop::getShopName,mgtEditShopDto.getShopName())); + if(mgtEditShopDto.getShopId()!=null){ + //取消验重 + /*if(shopSame!=null&&!Objects.equals(shopSame.getShopId(),mgtEditShopDto.getShopId())){ + throw new ServiceException(AppErrorConstant.SHOP_DOUBLE); + }*/ + shop = this.getById(mgtEditShopDto.getShopId()); shop.setUpdateTime(new Date()); - shop.setUpdateUserId(MGTEditShopDto.getUserId()); + shop.setUpdateUserId(mgtEditShopDto.getUserId()); shop.setShopTags(null); //清空关联记录 shopFileService.deleteByShopId(shop.getShopId()); shopRelTagService.deleteByShopId(shop.getShopId()); shopRelUserService.deleteByShopId(shop.getShopId()); + //清空归属 + shopRelUserService.deleteByShopId(shop.getShopId()); + shopStaffService.clearShopStaffRelation(shop.getShopId()); + if(!shop.getShopName().equals(mgtEditShopDto.getShopName())){ + MgtMemberShopNameDto mgtMemberShopNameDto = new MgtMemberShopNameDto(); + mgtMemberShopNameDto.setShopId(mgtEditShopDto.getShopId()); + mgtMemberShopNameDto.setShopName(mgtEditShopDto.getShopName()); + remoteMemberService.updateMemberShopName(mgtMemberShopNameDto); + } }else{ - shop.setShopStatus(2); + //取消验重 + /*if(shopSame!=null){ + throw new ServiceException(AppErrorConstant.SHOP_DOUBLE); + }*/ + shop.setDelFlag(0); + shop.setShopStatus(3); shop.setCreateTime(new Date()); - shop.setCreateUserId(MGTEditShopDto.getUserId()); + shop.setCreateUserId(mgtEditShopDto.getUserId()); + shop.setFrozenFlag(0); + shop.setCooperativeFlag(0); + 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(); + String shopTagIds = mgtEditShopDto.getShopTagIds(); if(StringUtils.isNotBlank(shopTagIds)){ String[] shopTagIdArray = shopTagIds.split(","); ShopRelTag shopRelTag; @@ -145,9 +281,14 @@ 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)){ + shopStaffService.clearShopStaffRelation(shop.getShopId()); String[] relUserIdArray = relUserIds.split(","); ShopRelUser shopRelUser; Long userId; @@ -163,18 +304,19 @@ shopRelUser.setUserMobile(sysUser.getPhonenumber()); shopRelUser.setUserDeptId(sysUser.getDeptId()); shopRelUserService.save(shopRelUser); + handleShopStaff(shop.getShopId(),sysUser); } } //商户封面 ShopFile shopFile = new ShopFile(); shopFile.setDelFlag(0); shopFile.setFileType(1); - shopFile.setFileUrl(MGTEditShopDto.getShopPicture()); + shopFile.setFileUrl(mgtEditShopDto.getShopPicture()); shopFile.setShopId(shop.getShopId()); shopFileService.save(shopFile); //商户banner - if(StringUtils.isNotBlank(MGTEditShopDto.getShopBanners())){ - String shopBanners= MGTEditShopDto.getShopBanners(); + if(StringUtils.isNotBlank(mgtEditShopDto.getShopBanners())){ + String shopBanners= mgtEditShopDto.getShopBanners(); String[] shopBannerArray = shopBanners.split(","); for(String str : shopBannerArray){ shopFile = new ShopFile(); @@ -185,7 +327,165 @@ shopFileService.save(shopFile); } } + if(newShop){ + //生成商户关联记录 + initNewShop(shop,mgtEditShopDto.getUserId()); + CodeGetDto codeGetDto = new CodeGetDto(); + String url = "https://wxapp.hhhrt.cn/mini/shop?id="+shop.getShopId(); + codeGetDto.setUrl(url); + codeGetDto.setFileName("shop-"+shop.getShopId()); + String codeUrl = remoteFileService.getAppOrderTotal(codeGetDto).getData(); + shop.setShopCode(codeUrl); + this.saveOrUpdate(shop); + } } + + /** + * @description 商户关联类初始化 + * @author jqs + * @date 2023/7/7 11:25 + * @param shop + * @param userId + * @return void + */ + 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()); + 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")); + 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); + } + + /** + * @description 终止合作 + * @author jqs + * @date 2023/6/20 12:01 + * @param mgtTerminateCooperationDto + * @return void + */ + @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); + } + + /** + * @description 冻结商户 + * @author jqs + * @date 2023/7/15 13:56 + * @param mgtFrozenShopDto + * @return void + */ + @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); + } + + /** + * @description 处理商户状态 + * @author jqs + * @date 2023/7/15 14:09 + * @param + * @return Integer + */ + 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; + } + /** * 修改合作时间 @@ -194,28 +494,30 @@ @Override public void changeCooperationTime(MgtChangeCoopDto mgtChangeCoopDto){ Shop shop = this.getById(mgtChangeCoopDto.getShopId()); - String coopStartTime = mgtChangeCoopDto.getCoopStartTime(); - String coopEndTime = mgtChangeCoopDto.getCoopEndTime(); - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Date coopStartDate = null; + Date coopEndDate = null; try { - Date coopStartDate = simpleDateFormat.parse(coopStartTime); - Date coopEndDate = simpleDateFormat.parse(coopEndTime); - Date nowTime = new Date(); - shop.setCooperationStartTime(coopStartDate); - shop.setCooperationEndTime(coopEndDate); - Boolean inTime = false; - if(coopStartDate.compareTo(nowTime)<0&&coopEndDate.compareTo(nowTime)>0){ - inTime = true; - } - if(shop.getShopStatus()==2&&inTime){ - shop.setShopStatus(1); - } - shop.setUpdateTime(nowTime); - shop.setUpdateUserId(mgtChangeCoopDto.getUserId()); - this.saveOrUpdate(shop); + coopStartDate = DateUtils.parseDate(mgtChangeCoopDto.getCoopStartTime(),"yyyy-MM-dd"); + coopEndDate = DateUtils.parseDate(mgtChangeCoopDto.getCoopEndTime(),"yyyy-MM-dd"); } catch (ParseException e) { - e.printStackTrace(); + throw new RuntimeException(e); } + Date nowTime = new Date(); + shop.setCooperationStartTime(coopStartDate); + shop.setCooperationEndTime(coopEndDate); + Boolean inTime = false; + if(coopStartDate.compareTo(nowTime)<=0&&coopEndDate.compareTo(nowTime)>=0){ + inTime = true; + shop.setCooperativeFlag(1); + }else{ + shop.setCooperativeFlag(0); + } + if(shop.getShopStatus()==2&&inTime){ + shop.setShopStatus(1); + } + shop.setUpdateTime(nowTime); + shop.setUpdateUserId(mgtChangeCoopDto.getUserId()); + this.saveOrUpdate(shop); } /** @@ -225,8 +527,59 @@ * @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; } @@ -241,6 +594,12 @@ Shop shop = this.getById(shopId); //基本信息拷贝 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()){ @@ -249,6 +608,20 @@ shopTagJs.add(shopRelTag.getTagId().toString()); } mgtShopInfoVo.setShopTagIds(shopTagJs.toString()); + } + //归属员工 + if(mgtShopInfoVo.getBelongUserId()!=null){ + SysUser sysUser = sysUserService.getSysUser(mgtShopInfoVo.getBelongUserId()).getData(); + if(sysUser!=null){ + mgtShopInfoVo.setBelongUserName(sysUser.getNickName()); + } + } + //归属商户 + if(mgtShopInfoVo.getBelongShopId()!=null){ + Shop belongShop = this.getByShopId(mgtShopInfoVo.getBelongShopId()); + if(belongShop!=null){ + mgtShopInfoVo.setBelongShopName(belongShop.getShopName()); + } } //商户关联用户 List<ShopRelUser> shopRelUserList = shopRelUserService.listByShopId(shopId); @@ -315,6 +688,43 @@ this.saveOrUpdate(shop); } + + /** + * @description 转移客户 + * @author jqs + * @date 2023/6/28 16:36 + * @param mgtTransferShopDto + * @return void + */ + @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 @@ -324,13 +734,38 @@ public AppNearbyShopVo getNearbyShop(AppNearbyShopDto appNearbyShopDto,Member member){ AppNearbyShopVo appNearbyShopVo = new AppNearbyShopVo(); Shop shop = null; - if(member.getRealtionShopId()!=null){ + //获取附近商户 + if(member!=null&&member.getRelationShopId()!=null&&member.getBindingFlag()==1){ //获取绑定商户 - shop = this.getById(member.getRealtionShopId()); + shop = this.getById(member.getRelationShopId()); + }else if(StringUtils.isNotBlank(appNearbyShopDto.getLatitude())&&StringUtils.isNotBlank(appNearbyShopDto.getLongitude())){ + AppNearShopVo appNearShopVo = shopMapper.getNearbyShop(appNearbyShopDto); + shop = this.getById(appNearShopVo.getShopId()); }else{ - //获取附近商户 - shop = this.getById(1L); + return appNearbyShopVo; } + if(member!=null&&member.getBindingFlag()!=1){ + AppMemberBindingDto appMemberBindingDto = new AppMemberBindingDto(); + appMemberBindingDto.setShopId(shop.getShopId()); + appMemberBindingDto.setShopName(shop.getShopName()); + appMemberBindingDto.setUserId(member.getUserId()); + appMemberBindingDto.setBindingFlag(0); + remoteMemberService.updateMemberBinding(appMemberBindingDto); + } + //商品图片 + 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()); @@ -338,4 +773,834 @@ appNearbyShopVo.setShopLongitude(shop.getShopLongitude()); return appNearbyShopVo; } + + /** + * + * @param shopId + * @return + */ + @Override + public Shop getByShopId(Long shopId){ + LambdaQueryWrapper<Shop> queryWrapper = Wrappers.lambdaQuery(); + queryWrapper.eq(Shop::getDelFlag, 0).eq(Shop::getShopId, shopId); + Shop shop = this.getOne(queryWrapper,false); + return shop; + } + + /** + * 获取获取员工端首页统计 + * @param userId + * @return + */ + @Override + public StaffHomeShopTotalVo getStaffHomeTotal(Long userId){ + List<Long> userIds = new ArrayList<>(); + List<Long> shopIds = new ArrayList<>(); + //如果是leader 查询leader下面所有的员工下的所有shopId + 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()); + } + } + } + //分别查询 + StaffHomeShopTotalVo staffHomeShopTotalVo = new StaffHomeShopTotalVo(); + if(userIds!=null&&!userIds.isEmpty()){ + staffHomeShopTotalVo = shopMapper.getStaffHomeTotal(userIds); + }else{ + staffHomeShopTotalVo.setShopTotal(0); + staffHomeShopTotalVo.setAgencyTotal(0); + staffHomeShopTotalVo.setDealerTotal(0); + } + Integer shopTaskCount = 0; + if(shopIds!=null&&!shopIds.isEmpty()){ + 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); + 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(); + merHomeShopTotalVo.setShopId(shopId); + merHomeShopTotalVo.setShopType(shop.getShopType()); + merHomeShopTotalVo.setTodayShop(orderVo.getTodayShop()); + merHomeShopTotalVo.setUnHandleOrder(orderVo.getUnHandleOrder()); + Integer taskCount = memberTaskService.getMemberIngTotal(shopId); + merHomeShopTotalVo.setTask(taskCount); + merHomeShopTotalVo.setShopTurnover(orderVo.getShopTurnover()); + merHomeShopTotalVo.setCycleSurp(orderVo.getCycleSurp()); + merHomeShopTotalVo.setExplorationSurp(orderVo.getExplorationSurp()); + merHomeShopTotalVo.setPlatformBirthdayFlag(shop.getPlatformBirthdayFlag()); + merHomeShopTotalVo.setPlatformCouponFlag(shop.getPlatformCouponFlag()); + return merHomeShopTotalVo; + } + + /** + * 获取商户绑定代理商 + * @param page + * @param merAgencyPageDto + * @return + */ + @Override + public List<MerAgencyPageVo> pageMerAgencyVo(Page page, MerAgencyPageDto merAgencyPageDto){ + List<MerAgencyPageVo> merAgencyPageVoList = shopMapper.pageMerAgencyVo(page, merAgencyPageDto); + return merAgencyPageVoList; + } + + /** + * 处理商户员工 + * @param shopId + * @param sysUser + */ + private void handleShopStaff(Long shopId,SysUser sysUser){ + ShopStaff shopStaff = shopStaffService.getByUserId(sysUser.getUserId()); + if(shopStaff!=null){ + shopStaff.setShopId(shopId); + }else{ + String staffId = IdUtils.simpleUUID(); + shopStaff = new ShopStaff(); + shopStaff.setStaffId(staffId); + shopStaff.setDelFlag(0); + shopStaff.setUserId(sysUser.getUserId()); + shopStaff.setShopId(shopId); + shopStaff.setStaffName(sysUser.getNickName()); + shopStaff.setStaffMobile(sysUser.getPhonenumber()); + shopStaff.setStaffGender(Integer.valueOf(sysUser.getSex())); + shopStaff.setStaffAvatar(sysUser.getAvatar()); + } + shopStaffService.saveOrUpdate(shopStaff); + } + + /** + * @description 平台获取商户分成列表 + * @author jqs + * @date 2023/6/8 9:25 + * @param page + * @param mgtShopProportionPageDto + * @return List<MgtShopProportionPageVo> + */ + @Override + public List<MgtShopProportionPageVo> pageMgtShopProportion(Page page, MgtShopProportionPageDto mgtShopProportionPageDto){ + return shopMapper.pageMgtShopProportion(page,mgtShopProportionPageDto); + } + + /** + * @description 删除商户标签 + * @author jqs + * @date 2023/6/8 15:53 + * @param shopTag + * @return void + */ + @Override + public void deleteShopTag(String shopTag){ + shopMapper.deleteShopTag(shopTag); + } + + /** + * @description 通过code获取shopId + * @author jqs + * @date 2023/6/9 16:40 + * @param mgtShopIdByCodeDto + * @return MgtShopIdByCodeVo + */ + @Override + public MgtShopIdByCodeVo getShopIdByCode(MgtShopIdByCodeDto mgtShopIdByCodeDto){ + MgtShopIdByCodeVo mgtShopIdByCodeVo = new MgtShopIdByCodeVo(); + List<Long> shopIdList = shopMapper.getShopIdByCode(mgtShopIdByCodeDto); + if(shopIdList!=null&&!shopIdList.isEmpty()){ + String shopIdStr = shopIdList.stream() + .map(Object::toString) + .collect(Collectors.joining(",")); + mgtShopIdByCodeVo.setShopIds(shopIdStr); + } + return mgtShopIdByCodeVo; + } + + /** + * @description 获取商户list + * @author jqs + * @date 2023/6/12 14:37 + * @param mgtShopListDto + * @return List<MgtShopListSimpleVo> + */ + @Override + public List<MgtShopListSimpleVo> listMgtShopSimpleVo(MgtShopListDto mgtShopListDto){ + return shopMapper.listMgtShopSimpleVo(mgtShopListDto); + } + + /** + * @description 通过id获取商户列表 + * @author jqs + * @date 2023/6/14 17:53 + * @param shopIds + * @return List<MgtShopListSimpleVo> + */ + @Override + public List<MgtSimpleShopVo> listShopSimpleVoByIds(String shopIds){ + return shopMapper.listShopSimpleVoByIds(shopIds); + } + + /** + * @description pageMgtShopByCityCode + * @param page + * @param mgtShopByCodePageDto + * @return List<MgtSimpleShopVo> + * @author jqs34 + * @date 2023/6/14 20:56 + */ + @Override + public List<MgtSimpleShopVo> pageMgtShopByCityCode(Page page, MgtShopByCodePageDto mgtShopByCodePageDto){ + return shopMapper.pageMgtShopByCityCode(page, mgtShopByCodePageDto); + } + + /** + * @description pageMgtShopAuth + * @param page + * @param mgtShopAuthPageDto + * @return List<MgtShopAuthPageVo> + * @author jqs34 + * @date 2023/6/14 23:01 + */ + @Override + public List<MgtShopAuthPageVo> pageMgtShopAuth(Page page, MgtShopAuthPageDto mgtShopAuthPageDto){ + return shopMapper.pageMgtShopAuth(page, mgtShopAuthPageDto); + } + + /** + * @description boardShopTotal + * @param + * @return MgtBulletinBoardVo + * @author jqs34 + * @date 2023/6/18 16:59 + */ + @Override + public MgtBulletinBoardVo boardShopTotal(){ + MgtBulletinBoardVo mgtBulletinBoardVoShop = shopMapper.shopTotal(); + return mgtBulletinBoardVoShop; + } + + /** + * @description 商户进件 + * @author jqs + * @date 2023/6/19 11:02 + * @param mgtShopAuthDto + * @return void + */ + @Override + public void mgtShopAuth(MgtShopAuthDto mgtShopAuthDto) throws WxPayException { + ShopAuthentication shopAuthentication = shopAuthenticationService.getById(mgtShopAuthDto.getAuthId()); + Shop shop = this.getByShopId(shopAuthentication.getShopId()); + + 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); + } + + /** + * @description 获取平台商户统计 + * @author jqs + * @date 2023/6/21 16:25 + * @param mgtBasePlatformDto + * @return MgtPlTotalShopTotalVo + */ + @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<MgtMapBigTotalVo> shopSalesRank = remoteOrderService.shopSalesRank(shopIdList).getData(); + if (shopSalesRank != null && shopSalesRank.size() > 0) { + String[] shopSalesKey = new String[shopSalesRank.size()]; + BigDecimal[] shopSalesValue = new BigDecimal[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; + } + + /** + * @description 去除空字符串 + * @author jqs + * @date 2023/6/27 17:35 + * @param MgtMapIntTotalVos + * @return List<MgtMapIntTotalVo> + */ + 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; + } + + /** + * @description 获取平台统计shopId + * @param mgtBasePlatformDto + * @return List<Long> + * @author jqs34 + * @date 2023/6/23 14:12 + */ + @Override + 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 + */ + @Override + 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; + } + + /** + * @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()); + mgtShopAuthCodeVo.setLegalValidationUrl(shopAuthentication.getLegalValidationUrl()); + return mgtShopAuthCodeVo; + } + + + /** + * @description 获取商户下属代理商 + * @author jqs + * @date 2023/7/3 17:27 + * @param shopId + * @return List<Long> + */ + @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; + } + + /** + * @description 获取商户下属代理商 + * @author jqs + * @date 2023/7/3 18:18 + * @param shopId + * @return List<MgtSimpleShopVo> + */ + @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; + } + + /** + * @description 获取用户管理商户 + * @author jqs + * @date 2023/7/14 10:00 + * @param userId + * @return Shop + */ + @Override + public List<Shop> getShopByBelongUserId(Long userId){ + LambdaQueryWrapper<Shop> queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(Shop::getDelFlag,0); + queryWrapper.eq(Shop::getBelongUserId,userId); + return this.list(queryWrapper); + } + + /** + * @description 员工端获取商户列表 + * @author jqs + * @date 2023/7/14 15:26 + * @param page + * @param staffShopPageDto + * @return List<StaffShopPageVo> + */ + @Override + 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 + */ + @Override + 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); + } + StaffShopSimpleTotalVo shopTotal = shopMapper.getStaffSimpleTotal(1,userIdList); + StaffShopSimpleTotalVo agencyTotal = shopMapper.getStaffSimpleTotal(2,userIdList); + shopTotal.setAgencyTotal(agencyTotal.getShopTotal()); + shopTotal.setOpenAgencyTotal(agencyTotal.getOpenShopTotal()); + shopTotal.setCloseAgencyTotal(agencyTotal.getCloseAgencyTotal()); + return shopTotal; + } + + /** + * @description 员工端获取商户详情 + * @author jqs + * @date 2023/7/14 18:32 + * @param shopId + * @return StaffShopInfoGetVo + */ + @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(); + // 获取商店任务计数 + Integer taskCount = memberTaskService.getMemberIngTotal(shopId); + // 设置员工商店信息对象的属性 + staffShopInfoGetVo.setTodayReservation(0); + staffShopInfoGetVo.setUnHandleOrder(orderVo.getUnHandleOrder()); + staffShopInfoGetVo.setShopTask(taskCount); + staffShopInfoGetVo.setShopTurnover(orderVo.getShopTurnover()); + 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()); + 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); + AgencyTotalVo agencyTotalVo = remoteOrderService.getAgencyTotalVo(shopIdList).getData(); + staffShopInfoGetVo.setAreaTurnover(agencyTotalVo.getAreaTurnover()); + } + } + // 如果商店的扩展联系方式不为空,则设置员工商店信息对象的扩展联系方式列表 + String extendContacts = shop.getExtendContacts(); + if (StringUtils.isNotBlank(extendContacts)) { + List<ExtendContactsVo> extendContactsVoList = JSON.parseArray(extendContacts, ExtendContactsVo.class); + staffShopInfoGetVo.setExtendContactsVoList(extendContactsVoList); + } + // 返回员工商店信息对象 + return staffShopInfoGetVo; + } + + /** + * @description 修改商户评估 + * @author jqs + * @date 2023/7/15 10:18 + * @param staffShopEstimateEditDto + * @return void + */ + @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); + } + + /** + * @description 修改店铺扩展联系人 + * @author jqs + * @date 2023/7/15 11:06 + * @param staffShopECEditDto + * @return void + */ + @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); + }else{ + extendContacts = ""; + } + shop.setExtendContacts(extendContacts); + shop.setShopId(staffShopECEditDto.getShopId()); + shop.setUpdateUserId(staffShopECEditDto.getUserId()); + shop.setUpdateTime(new Date()); + shopMapper.updateExtendContacts(shop); + } + + /** + * @description 修改店铺状态 + * @author jqs + * @date 2023/7/15 11:51 + * @param staffShopCCEditDto + * @return void + */ + @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() { + log.info("开始获取微信二级商户待检查列表"); + List<ShopAuthentication> list = shopAuthenticationService.getShopAuthNeedUpdateStatus(); + log.info("定时检查微信二级商户"+list.toString()); + list.forEach(item -> queryApplyStatusByApplymentId(item.getApplymentId(), item.getShopId())); + } + + /** + * 调用微信接口查询申请审核状态 + * @param applymentId + */ + 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); + 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); + } + + /** + * @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 ProfitSharingReceiverResult addProfitSharingReceiver(ProfitSharingReceiverRequest request){ + try { + ProfitSharingReceiverResult result = wechatPayUtils.addProfitSharingReceiver(request); + return result; + } catch (WxPayException e) { + throw new RuntimeException(e); + } + } } -- Gitblit v1.7.1