bug
jiangqs
2023-08-31 dbff53150cdc807faa56c0d1a947d24b69f372b9
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java
@@ -8,6 +8,8 @@
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;
@@ -20,6 +22,7 @@
import com.ruoyi.shop.domain.dto.*;
import com.ruoyi.shop.domain.pojo.shop.*;
import com.ruoyi.shop.domain.pojo.task.ShopFile;
import com.ruoyi.shop.domain.pojo.task.ShopTask;
import com.ruoyi.shop.domain.vo.*;
import com.ruoyi.shop.enums.WxApplyMentStateEnum;
import com.ruoyi.shop.mapper.shop.ShopMapper;
@@ -36,6 +39,7 @@
import com.ruoyi.system.api.domain.poji.sys.SysUser;
import com.ruoyi.system.api.domain.vo.*;
import com.ruoyi.system.api.service.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@@ -55,6 +59,7 @@
 * @since 2023-04-25
 */
@Service
@Slf4j
public class ShopServiceImpl extends ServiceImpl<ShopMapper, Shop> implements ShopService {
    @Resource
@@ -122,6 +127,14 @@
    @Resource
    private WechatPayUtils wechatPayUtils;
    @Resource
    private ShopDetailService shopDetailService;
    @Resource
    private RemoteUserService remoteUserService;
    /**
     * 获取商户详情
@@ -197,7 +210,7 @@
        }
        //验证商户名唯一
        Shop shopSame = this.getOne(new LambdaQueryWrapper<Shop>().eq(Shop::getDelFlag,0).eq(Shop::getShopName,mgtEditShopDto.getShopName()));
        //Shop shopSame = this.getOne(new LambdaQueryWrapper<Shop>().eq(Shop::getDelFlag,0).eq(Shop::getShopName,mgtEditShopDto.getShopName()));
        if(mgtEditShopDto.getShopId()!=null){
            //取消验重
            /*if(shopSame!=null&&!Objects.equals(shopSame.getShopId(),mgtEditShopDto.getShopId())){
@@ -230,7 +243,7 @@
            shop.setCreateTime(new Date());
            shop.setCreateUserId(mgtEditShopDto.getUserId());
            shop.setFrozenFlag(0);
            shop.setCooperativeFlag(0);
            shop.setCooperativeFlag(1);
            shop.setAuthFlag(0);
            newShop = true;
        }
@@ -781,8 +794,8 @@
     */
    @Override
    public StaffHomeShopTotalVo getStaffHomeTotal(Long userId){
        List<Long> userIds = null;
        List<Long> shopIds = null;
        List<Long> userIds = new ArrayList<>();
        List<Long> shopIds = new ArrayList<>();
        //如果是leader 查询leader下面所有的员工下的所有shopId
        if(remoteSysStaffService.isLeader()){
            userIds = sysUserService.getUserIdsByDept(userId).getData();
@@ -790,18 +803,36 @@
            MgtBasePlatformDto mgtBasePlatformDto = new MgtBasePlatformDto();
            mgtBasePlatformDto.setUserIdList(userIds);
            shopIds = shopMapper.listShopIdByTotal(mgtBasePlatformDto);
            Shop shop = this.getShopByBelongUserId(userId);
            shopIds.add(shop.getShopId());
            userIds.add(userId);
            List<Shop> shopList = this.getShopByBelongUserId(userId);
            if(shopList!=null&&!shopList.isEmpty()){
                for(Shop shop : shopList){
                    shopIds.add(shop.getShopId());
                }
                userIds.add(userId);
            }
        }else {
            //普通员工查询商户归属的shopId
            Shop shop = this.getShopByBelongUserId(userId);
            shopIds.add(shop.getShopId());
            List<Shop> shopList = this.getShopByBelongUserId(userId);
            if(shopList!=null&&!shopList.isEmpty()){
                for(Shop shop : shopList){
                    shopIds.add(shop.getShopId());
                }
                userIds.add(userId);
            }
        }
        //分别查询
        StaffHomeShopTotalVo staffHomeShopTotalVo = shopMapper.getStaffHomeTotal(userIds);
        Integer shopTaskCount = shopTaskService.getShopIngTotal(shopIds);
        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);
@@ -829,7 +860,7 @@
        if(shop.getFrozenFlag()==1){
            String userKey = SecurityUtils.getUserKey();
            redisService.deleteObject(CacheConstants.LOGIN_TOKEN_KEY+userKey);
            throw new ServiceException("商户已被冻结",401);
            throw new ServiceException("商户已被冻结,请联系管理员",401);
        }
        merHomeShopTotalVo.setShopType(shop.getShopType());
        MerHomeShopTotalVo orderVo = remoteOrderService.getMerHomeTotal(merHomeShopTotalVo).getData();
@@ -1002,23 +1033,28 @@
    public void mgtShopAuth(MgtShopAuthDto mgtShopAuthDto) throws WxPayException {
        ShopAuthentication shopAuthentication = shopAuthenticationService.getById(mgtShopAuthDto.getAuthId());
        Shop shop = this.getByShopId(shopAuthentication.getShopId());
        String applyNumber = IdUtils.simpleUUID();
        if(mgtShopAuthDto.getBlBusinessFoeverFlag()!=null&&mgtShopAuthDto.getBlBusinessFoeverFlag()==1){
            mgtShopAuthDto.setBlBusinessDeanline(mgtShopAuthDto.getBlBusinessStartTime()+",长期");
            mgtShopAuthDto.setBlBusinessDeanline("长期");
        }
        if(mgtShopAuthDto.getLpIcForeverFlag()!=null&&mgtShopAuthDto.getLpIcForeverFlag()==1){
            mgtShopAuthDto.setLpIcEndDate("长期");
        }
        BeanUtils.copyProperties(mgtShopAuthDto , shopAuthentication);
        shopAuthentication.setApplyNumber(applyNumber);
        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 RuntimeException(e);
            throw new ServiceException(e.getMessage());
        }
        shopAuthentication.setAuditStatus(3);
        shopAuthentication.setApplymentId(applymentsResult.getApplymentId());
        shopAuthenticationService.saveOrUpdate(shopAuthentication);
    }
@@ -1076,13 +1112,17 @@
            plTotalShopTotalVo.setAreaRankVos(shopAreaRank);
        }
        //获取销售排名
        List<MgtMapIntTotalVo> shopSalesRank = shopMapper.listShopSalesRank(mgtBasePlatformDto);
        List<MgtMapBigTotalVo> shopSalesRank = remoteOrderService.shopSalesRank(shopIdList).getData();
        if (shopSalesRank != null && shopSalesRank.size() > 0) {
            String[] shopSalesKey = new String[shopSalesRank.size()];
            Integer[] shopSalesValue = new Integer[shopSalesRank.size()];
            BigDecimal[] shopSalesValue = new BigDecimal[shopSalesRank.size()];
            // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
            Long shopId;
            Shop shop;
            for (int i = 0; i < shopSalesRank.size(); i++) {
                shopSalesKey[i] = shopSalesRank.get(i).getMapKey();
                shopId = Long.valueOf(shopSalesRank.get(i).getMapKey());
                shop = this.getByShopId(shopId);
                shopSalesKey[i] = shop.getShopName();
                shopSalesValue[i] = shopSalesRank.get(i).getMapValue();
            }
            plTotalShopTotalVo.setShopSalesRankKey(shopSalesKey);
@@ -1216,11 +1256,11 @@
     * @return  Shop
     */
    @Override
    public Shop getShopByBelongUserId(Long userId){
    public List<Shop> getShopByBelongUserId(Long userId){
        LambdaQueryWrapper<Shop> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(Shop::getDelFlag,0);
        queryWrapper.eq(Shop::getBelongUserId,userId);
        return this.getOne(queryWrapper,false);
        return this.list(queryWrapper);
    }
    /**
@@ -1246,14 +1286,19 @@
     */
    @Override
    public StaffShopSimpleTotalVo getStaffSimpleTotal(Long userId){
        List<Long> userIdList = null;
        List<Long> userIdList = new ArrayList<>();
        if(remoteSysStaffService.isLeader()){
            userIdList = sysUserService.getUserIdsByDept(userId).getData();
            userIdList.add(userId);
        }else {
            userIdList.add(userId);
        }
        return shopMapper.getStaffSimpleTotal(userIdList);
        StaffShopSimpleTotalVo shopTotal = shopMapper.getStaffSimpleTotal(1,userIdList);
        StaffShopSimpleTotalVo agencyTotal = shopMapper.getStaffSimpleTotal(2,userIdList);
        shopTotal.setAgencyTotal(agencyTotal.getShopTotal());
        shopTotal.setOpenAgencyTotal(agencyTotal.getOpenShopTotal());
        shopTotal.setCloseAgencyTotal(agencyTotal.getCloseAgencyTotal());
        return shopTotal;
    }
    /**
@@ -1287,8 +1332,6 @@
        merHomeShopTotalVo.setShopId(shopId);
        // 通过远程订单服务获取商店总览信息
        MerHomeShopTotalVo orderVo = remoteOrderService.getMerHomeTotal(merHomeShopTotalVo).getData();
        // 获取商店总计信息
        ShopTotal shopTotal = shopTotalService.getById(shopId);
        // 获取商店任务计数
        Integer taskCount = memberTaskService.getMemberIngTotal(shopId);
        // 设置员工商店信息对象的属性
@@ -1296,10 +1339,11 @@
        staffShopInfoGetVo.setUnHandleOrder(orderVo.getUnHandleOrder());
        staffShopInfoGetVo.setShopTask(taskCount);
        staffShopInfoGetVo.setShopTurnover(orderVo.getShopTurnover());
        staffShopInfoGetVo.setCycleSurp(shopTotal.getUseableCyclePerson());
        staffShopInfoGetVo.setExplorationSurp(shopTotal.getUseableExperiencePerson());
        staffShopInfoGetVo.setCycleSurp(orderVo.getCycleSurp());
        staffShopInfoGetVo.setExplorationSurp(orderVo.getExplorationSurp());
        staffShopInfoGetVo.setShopId(shopId);
        staffShopInfoGetVo.setShopName(shop.getShopName());
        staffShopInfoGetVo.setShopType(shop.getShopType());
        staffShopInfoGetVo.setShopPicture(shopPicture);
        staffShopInfoGetVo.setBusinessStartTime(shop.getBusinessStartTime());
        staffShopInfoGetVo.setBusinessEndTime(shop.getBusinessEndTime());
@@ -1325,8 +1369,8 @@
            if (shopIdList != null && !shopIdList.isEmpty()) {
                Integer count = remoteMemberService.getAreaNewMember(shopIdList).getData();
                staffShopInfoGetVo.setNewAreaMember(count);
                ShopTotal shopTotalAll = shopTotalService.shopsTotalByIds(shopIdList);
                staffShopInfoGetVo.setAreaTurnover(shopTotalAll.getTotalOrderMoney());
                AgencyTotalVo agencyTotalVo = remoteOrderService.getAgencyTotalVo(shopIdList).getData();
                staffShopInfoGetVo.setAreaTurnover(agencyTotalVo.getAreaTurnover());
            }
        }
        // 如果商店的扩展联系方式不为空,则设置员工商店信息对象的扩展联系方式列表
@@ -1377,6 +1421,8 @@
        List<ExtendContactsVo> extendContactsVoList = staffShopECEditDto.getExtendContactsVoList();
        if(extendContactsVoList!=null&&!extendContactsVoList.isEmpty()){
            extendContacts = JSON.toJSONString(extendContactsVoList);
        }else{
            extendContacts = "";
        }
        shop.setExtendContacts(extendContacts);
        shop.setShopId(staffShopECEditDto.getShopId());
@@ -1404,7 +1450,9 @@
    @Override
    public void queryEcommerceApplyMentsStatus() {
        log.info("开始获取微信二级商户待检查列表");
        List<ShopAuthentication> list = shopAuthenticationService.getShopAuthNeedUpdateStatus();
        log.info("定时检查微信二级商户"+list.toString());
        list.forEach(item -> queryApplyStatusByApplymentId(item.getApplymentId(), item.getShopId()));
    }
@@ -1414,6 +1462,7 @@
     */
    private void queryApplyStatusByApplymentId(String applymentId, Long shopId) {
        try {
            log.debug("定时检查微信二级商户applymentId"+applymentId);
            if (StringUtils.isNotBlank(applymentId)) {
                ApplymentsStatusResult result = wechatPayUtils.queryApplyStatusByApplymentId(applymentId);
                shopAuthenticationService.updateAuditStatusByApplymentId(applymentId, result);
@@ -1465,4 +1514,113 @@
            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);
        }
    }
    /**
     * @description
     * @author  jqs
     * @date    2023/8/29 14:33
     * @param
     * @return  List<MgtUserTaskMsgVo>
     */
    @Override
    public List<MgtUserTaskMsgVo> getTaskMsgList(){
        return shopMapper.getTaskMsgList();
    }
}