1
chenye
2023-07-11 f975b6d0832b447654aaf2372ce72f71ebb7f095
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java
@@ -11,7 +11,6 @@
import com.ruoyi.common.core.utils.uuid.IdUtils;
import com.ruoyi.common.security.utils.CodeFactoryUtil;
import com.ruoyi.shop.domain.dto.*;
import com.ruoyi.shop.domain.pojo.shop.ShopTotal;
import com.ruoyi.shop.domain.pojo.shop.*;
import com.ruoyi.shop.domain.pojo.task.ShopFile;
import com.ruoyi.shop.domain.vo.*;
@@ -26,14 +25,12 @@
import com.ruoyi.system.api.domain.poji.shop.Shop;
import com.ruoyi.system.api.domain.poji.sys.SysUser;
import com.ruoyi.system.api.domain.vo.*;
import com.ruoyi.system.api.service.RemoteConfigService;
import com.ruoyi.system.api.service.RemoteMemberService;
import com.ruoyi.system.api.service.RemoteOrderService;
import com.ruoyi.system.api.service.RemoteUserService;
import com.ruoyi.system.api.service.*;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.nio.charset.StandardCharsets;
import java.text.ParseException;
import java.util.*;
import java.util.function.Function;
@@ -104,6 +101,8 @@
    @Resource
    private RemoteUserService remoteUserService;
    @Resource
    private RemoteSysStaffService remoteSysStaffService;
    /**
     * 获取商户详情
@@ -155,13 +154,24 @@
            String[] relUserIdArray = relUserIds.split(",");
            ShopRelUser shopRelUser;
            Long userId;
            for (String str : relUserIdArray) {
                userId = Long.valueOf(str);
                shopRelUser = shopRelUserService.getByUserId(userId);
                if(shopRelUser!=null){
                    throw new ServiceException(AppErrorConstant.SHOP_USER_DOUBLE);
            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()));
@@ -193,6 +203,12 @@
            newShop = true;
        }
        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();
@@ -267,68 +283,82 @@
            }
        }
        if(newShop){
            //商户账户信息初始化
            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(mgtEditShopDto.getUserId());
            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);
            //生成商户关联记录
            initNewShop(shop,mgtEditShopDto.getUserId());
        }
    }
    /**
     * @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());
        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);
    }
    /**
@@ -472,6 +502,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()){
@@ -628,6 +664,43 @@
        return shop;
    }
    /**
     * 获取获取员工端首页统计
     * @param userId
     * @return
     */
    @Override
    public MerHomeShopTotalVo getStaffHomeTotal(Long userId){
        List<Long> userIds = null;
        List<Long> shopIds = null;
        //如果是leader 查询leader下面所有的员工下的所有shopId
        if(remoteSysStaffService.isLeader()){
            Long deptId = sysUserService.getSysUser(userId).getData().getDeptId();
            userIds = remoteSysStaffService.getUserIds(deptId).getData();
            //根据用户所有id查询关联的商户id
            MgtBasePlatformDto mgtBasePlatformDto = new MgtBasePlatformDto();
            mgtBasePlatformDto.setUserIdList(userIds);
            shopIds = shopMapper.listShopIdByTotal(mgtBasePlatformDto);
        }else {
            //普通员工查询商户归属的shopId
            MgtShopIdByCodeDto mgtShopIdByCodeDto = new MgtShopIdByCodeDto();
            mgtShopIdByCodeDto.setBelongUserId(userId);
            shopIds = shopMapper.getShopIdByCode(mgtShopIdByCodeDto);
        }
            //分别查询
            MerHomeShopTotalVo merHomeShopTotalVo = new MerHomeShopTotalVo();
            merHomeShopTotalVo.setShopIds(shopIds);
            MerHomeShopTotalVo orderVo = remoteOrderService.getMerHomeTotal(merHomeShopTotalVo).getData();
            merHomeShopTotalVo.setTodayShop(null!=orderVo?orderVo.getTodayShop():0);
            merHomeShopTotalVo.setUnHandleOrder(null!=orderVo?orderVo.getUnHandleOrder():0);
            merHomeShopTotalVo.setShopTurnover(null!=orderVo?orderVo.getShopTurnover():BigDecimal.ZERO);
            ShopTotal shopTotal = shopTotalService.shopsTotalByIds(shopIds);
            merHomeShopTotalVo.setCycleSurp(null!=shopTotal?shopTotal.getUseableCyclePerson():0);
            merHomeShopTotalVo.setExplorationSurp(null!=shopTotal?shopTotal.getUseableExperiencePerson():0);
            Integer taskCount = memberTaskService.getMembersIngTotal(shopIds);
            merHomeShopTotalVo.setTask(taskCount);
            return merHomeShopTotalVo;
        }
    /**
     * 获取商户端
     * @param userId
@@ -949,4 +1022,40 @@
        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;
    }
}