123
rk
2026-03-17 212a59db0f342924c0ad72e8ec640684de514702
server/dmmall_service/src/main/java/com/doumee/service/business/impl/ShopServiceImpl.java
@@ -4,7 +4,6 @@
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.config.Jwt.JwtPayLoad;
import com.doumee.config.Jwt.JwtTokenUtil;
import com.doumee.config.listener.event.VisitEvent;
import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
@@ -147,6 +146,8 @@
        shop.setIsrec(Constants.ONE);
        shop.setOrigin(Constants.ONE);
        shop.setSaleType(Constants.formatIntegerNum(shop.getSaleType()));
        shop.setAmount(BigDecimal.ZERO);
        shop.setTotalAmount(BigDecimal.ZERO);
        String salt = RandomStringUtils.randomAlphabetic(6);
        shop.setPassword(shop.getCode()+"@123456");
@@ -161,12 +162,15 @@
                            .set(Shop::getProgramCode,url)
                    .eq(Shop::getId,shop.getId()));
        }
        //分享海报
        String posterUrl = inviteRecordService.createShareImg(Constants.ONE,shop.getId(),shop.getPosterImg());
        if(StringUtils.isNotBlank(posterUrl)){
            shopMapper.update(null,new UpdateWrapper<Shop>().lambda()
                    .set(Shop::getPosterImgCode,posterUrl)
                    .eq(Shop::getId,shop.getId()));
        if(StringUtils.isNotBlank(shop.getPosterImg())) {
            //分享海报
            String posterUrl = inviteRecordService.createShareImg(Constants.ONE, shop.getId(), shop.getPosterImg());
            //生成失败会生成字符串 1
            if (StringUtils.isNotBlank(posterUrl)&&!posterUrl.equals("1")) {
                shopMapper.update(null, new UpdateWrapper<Shop>().lambda()
                        .set(Shop::getPosterImgCode, posterUrl)
                        .eq(Shop::getId, shop.getId()));
            }
        }
        return shop.getId();
    }
@@ -259,17 +263,16 @@
        shop.setEditor(user.getId());
        shop.setEditDate(new Date());
        if(StringUtils.isBlank(model.getProgramCode())){
            //分享码
            String url = inviteRecordService.createShopMiniProgramCode(shop.getId());
            if(StringUtils.isNotBlank(url)){
                shop.setProgramCode(url);
            }
        //分享码
        String url = inviteRecordService.createShopMiniProgramCode(shop.getId());
        if(StringUtils.isNotBlank(url)){
            shop.setProgramCode(url);
        }
        if(StringUtils.isNotBlank(shop.getPosterImg())){
            //分享海报
            String posterUrl = inviteRecordService.createShareImg(Constants.ONE,shop.getId(),shop.getPosterImg());
            if(StringUtils.isNotBlank(posterUrl)){
            //生成失败会生成字符串 1
            if (StringUtils.isNotBlank(posterUrl)&&!posterUrl.equals("1")) {
                shop.setPosterImgCode(posterUrl);
            }
        }
@@ -283,8 +286,8 @@
                    shop.getEditDate(),
                    new String[]{user.getUsername(), DateUtil.getPlusTime2(shop.getEditDate())},
                    JSONObject.toJSONString(shop) ,
                    Constants.equalsInteger(model.getSaleType(),Constants.ONE)?"自由采购":"平台铺货",
                    Constants.equalsInteger(shop.getSaleType(),Constants.ONE)?"自由采购":"平台铺货");
                    Constants.equalsInteger(model.getSaleType(),Constants.ONE)?"自主采购":"平台铺货",
                    Constants.equalsInteger(shop.getSaleType(),Constants.ONE)?"自主采购":"平台铺货");
        }
    }
@@ -424,7 +427,18 @@
        queryWrapper.leftJoin(Member.class,Member::getId,Shop::getMemberId);
        queryWrapper.leftJoin(Labels.class,Labels::getId,Shop::getBigAreaId);
        if(pageWrap.getModel().getAreaId()!=null){
            queryWrapper.eq(  Shop::getAreaId, pageWrap.getModel().getAreaId());
        }else  if(pageWrap.getModel().getCityId()!=null){
            queryWrapper.leftJoin("areas a1 on a1.id=t.area_id");
            queryWrapper.leftJoin("areas a2 on a2.id=a1.parent_id");
            queryWrapper.apply("a2.id ="+pageWrap.getModel().getCityId());
        } else if (pageWrap.getModel().getProvinceId()!=null){
            queryWrapper.leftJoin("areas a1 on a1.id=t.area_id");
            queryWrapper.leftJoin("areas a2 on a2.id=a1.parent_id");
            queryWrapper.leftJoin("areas a3 on a3.id=a2.parent_id");
            queryWrapper.apply("a3.id ="+pageWrap.getModel().getProvinceId());
        }
        queryWrapper.eq(Shop::getIsdeleted, Constants.ZERO);
        queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getCode()) ,Shop::getCode,pageWrap.getModel().getCode());
        queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getUsername()) ,Shop::getName,pageWrap.getModel().getUsername());
@@ -569,9 +583,6 @@
        dto.setLabels(labels.stream().map(s->s.getName()).collect(Collectors.toList()));
        List<ShopMenuDTO> shopMenuDTO = shopMenuService.findShopMenuDTO(shopId);
        dto.setShopMenuDTOList(shopMenuDTO);
        //访问操作
        VisitEvent<Shop> shopVisitEvent = new VisitEvent<>(this,shop);
        applicationEventPublisher.publishEvent(shopVisitEvent);
        return dto;
    }
@@ -705,7 +716,9 @@
                .selectAll(Shop.class)
                .select(" CONVERT( ST_Distance_Sphere ( POINT ( LONGITUDE, LATITUDE ), POINT ( '"+dto.getLgt()+"' , '"+dto.getLat()+"' )) /1000,DECIMAL(15,2))",Shop::getDistance)
                .leftJoin(SystemUser.class,SystemUser::getId,Shop::getCreator)
                .like(StringUtils.isNotBlank(dto.getCityName()),Shop::getAddr,dto.getCityName())
                .leftJoin("areas a1 on a1.id=t.area_id")
                .leftJoin("areas a2 on a2.id=a1.parent_id")
                .like(StringUtils.isNotBlank(dto.getCityName()),"a2.name",dto.getCityName())
                .like(StringUtils.isNotBlank(dto.getShopName()),Shop::getName,dto.getShopName())
                .orderByDesc(!isArea,Shop::getId)
                .orderByAsc(isArea," distance ")
@@ -713,9 +726,7 @@
        String path = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode()
                + systemDictDataBiz.queryByCode(Constants.OSS, Constants.SHOP_FILE).getCode();
        for(Shop model:shopList){
            model.setImgFullUrl(StringUtils.isNotBlank(model.getImgurl())?path+model.getImgurl():null);
        }
        return shopList;
    }
@@ -773,6 +784,7 @@
        if(!pwd.equals(shop.getPassword())){
            throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT);
        }
        shop.setOpenId(dto.getOpenid());
        //创建token
//        JwtPayLoad payLoad = new JwtPayLoad(Constants.SHOP_PREFIX+shop.getId());
//        String token = JwtTokenUtil.generateToken(payLoad);
@@ -883,34 +895,53 @@
                        //自定义日期
                        .apply(Objects.nonNull(request.getDateType())&&Constants.equalsInteger(request.getDateType(),Constants.FOUR)&&StringUtils.isNotBlank(request.getStartDate()), "  t.CREATE_DATE >= '"+request.getStartDate()+" 00:00:00'")
                        .apply(Objects.nonNull(request.getDateType())&&Constants.equalsInteger(request.getDateType(),Constants.FOUR)&&StringUtils.isNotBlank(request.getEndDate()), "  t.CREATE_DATE <= '"+request.getEndDate()+" 23:59:59'")
                        .ne(Goodsorder::getStatus,Constants.OrderStatus.CLOSE.getKey())
                        .in(Goodsorder::getStatus,Constants.OrderStatus.PAY_DONE.getKey(),Constants.OrderStatus.WAIT_RECEIVE.getKey(),Constants.OrderStatus.DONE.getKey())
                        .orderByDesc(Goodsorder::getId)
        );
        if (com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(goodsorderList)) {
            saleReportResponse.setSaleTotal(goodsorderList.stream().map(i->i.getPrice().subtract(i.getMailPrice())).reduce(BigDecimal.ZERO, BigDecimal::add));
            saleReportResponse.setSaleTotal(goodsorderList.stream().map(i->i.getTotalPrice().subtract(i.getMailPrice())).reduce(BigDecimal.ZERO, BigDecimal::add));
            saleReportResponse.setOrderNum(goodsorderList.size());
        }
        List<Integral> integralList = integralMapper.selectList(new QueryWrapper<Integral>().lambda()
                .eq(Integral::getIsdeleted,Constants.ZERO)
                .eq(Integral::getMemberId,shopId)
                .eq(Integral::getUserType,Constants.TWO)
                .eq(Integral::getType,Constants.ZERO)
                .eq(Integral::getObjType,Constants.IntegralObjType.ORDER_DONE_AMOUNT.getKey())
                //今日
                .apply(Constants.equalsInteger(request.getDateType(),Constants.ZERO), " DATE(CREATE_DATE) = DATE(NOW())  ")
                //当月
                .apply(Constants.equalsInteger(request.getDateType(),Constants.ONE), " DATE_FORMAT(CREATE_DATE, '%Y-%m') = DATE_FORMAT(NOW(), '%Y-%m')")
                //上月
                .apply(Constants.equalsInteger(request.getDateType(),Constants.TWO), "  DATE_FORMAT(CREATE_DATE, '%Y-%m') = DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 1 MONTH), '%Y-%m') ")
                //固定月份
                .apply(Constants.equalsInteger(request.getDateType(),Constants.THREE)&&StringUtils.isNotBlank(request.getStartDate()), " DATE_FORMAT(CREATE_DATE, '%Y-%m') = DATE_FORMAT(DATE_SUB('"+request.getStartDate()+"', INTERVAL 1 MONTH), '%Y-%m') ")
                //自定义日期
                .apply(Constants.equalsInteger(request.getDateType(),Constants.FOUR)&&StringUtils.isNotBlank(request.getStartDate()), "  CREATE_DATE >= '"+request.getStartDate()+" 00:00:00'")
                .apply(Constants.equalsInteger(request.getDateType(),Constants.FOUR)&&StringUtils.isNotBlank(request.getEndDate()), "  CREATE_DATE <= '"+request.getEndDate()+" 23:59:59'")
//        List<Integral> integralList = integralMapper.selectList(new QueryWrapper<Integral>().lambda()
//                .eq(Integral::getIsdeleted,Constants.ZERO)
//                .eq(Integral::getMemberId,shopId)
//                .eq(Integral::getUserType,Constants.TWO)
//                .eq(Integral::getType,Constants.ZERO)
//                .eq(Integral::getObjType,Constants.IntegralObjType.ORDER_DONE_AMOUNT.getKey())
//                //今日
//                .apply(Constants.equalsInteger(request.getDateType(),Constants.ZERO), " DATE(CREATE_DATE) = DATE(NOW())  ")
//                //当月
//                .apply(Constants.equalsInteger(request.getDateType(),Constants.ONE), " DATE_FORMAT(CREATE_DATE, '%Y-%m') = DATE_FORMAT(NOW(), '%Y-%m')")
//                //上月
//                .apply(Constants.equalsInteger(request.getDateType(),Constants.TWO), "  DATE_FORMAT(CREATE_DATE, '%Y-%m') = DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 1 MONTH), '%Y-%m') ")
//                //固定月份
//                .apply(Constants.equalsInteger(request.getDateType(),Constants.THREE)&&StringUtils.isNotBlank(request.getStartDate()), " DATE_FORMAT(CREATE_DATE, '%Y-%m') = DATE_FORMAT(DATE_SUB('"+request.getStartDate()+"', INTERVAL 1 MONTH), '%Y-%m') ")
//                //自定义日期
//                .apply(Constants.equalsInteger(request.getDateType(),Constants.FOUR)&&StringUtils.isNotBlank(request.getStartDate()), "  CREATE_DATE >= '"+request.getStartDate()+" 00:00:00'")
//                .apply(Constants.equalsInteger(request.getDateType(),Constants.FOUR)&&StringUtils.isNotBlank(request.getEndDate()), "  CREATE_DATE <= '"+request.getEndDate()+" 23:59:59'")
//        );
        goodsorderList = goodsorderJoinMapper.selectJoinList(Goodsorder.class,
                new MPJLambdaWrapper<Goodsorder>()
                        .selectAll(Goodsorder.class)
                        .eq(Goodsorder::getIsdeleted,Constants.ZERO)
                        .eq(Goodsorder::getDistributionShopId,shopId)
                        //今日
                        .apply(Objects.nonNull(request.getDateType())&&Constants.equalsInteger(request.getDateType(),Constants.ZERO), " DATE(t.DONE_DATE) = DATE(NOW())  ")
                        //当月
                        .apply(Objects.nonNull(request.getDateType())&&Constants.equalsInteger(request.getDateType(),Constants.ONE), " DATE_FORMAT(t.DONE_DATE, '%Y-%m') = DATE_FORMAT(NOW(), '%Y-%m')")
                        //上月
                        .apply(Objects.nonNull(request.getDateType())&&Constants.equalsInteger(request.getDateType(),Constants.TWO), "  DATE_FORMAT(t.DONE_DATE, '%Y-%m') = DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 1 MONTH), '%Y-%m') ")
                        //固定月份
                        .apply(Objects.nonNull(request.getDateType())&&Constants.equalsInteger(request.getDateType(),Constants.THREE)&&StringUtils.isNotBlank(request.getStartDate()), " DATE_FORMAT(t.DONE_DATE, '%Y-%m') = DATE_FORMAT(DATE_SUB('"+request.getStartDate()+"', INTERVAL 1 MONTH), '%Y-%m') ")
                        //自定义日期
                        .apply(Objects.nonNull(request.getDateType())&&Constants.equalsInteger(request.getDateType(),Constants.FOUR)&&StringUtils.isNotBlank(request.getStartDate()), "  t.DONE_DATE >= '"+request.getStartDate()+" 00:00:00'")
                        .apply(Objects.nonNull(request.getDateType())&&Constants.equalsInteger(request.getDateType(),Constants.FOUR)&&StringUtils.isNotBlank(request.getEndDate()), "  t.DONE_DATE <= '"+request.getEndDate()+" 23:59:59'")
                        .in(Goodsorder::getStatus,Constants.OrderStatus.DONE.getKey())
                        .orderByDesc(Goodsorder::getId)
        );
        if (com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(integralList)) {
            saleReportResponse.setProfitTotal(integralList.stream().map(i->i.getNum()).reduce(BigDecimal.ZERO, BigDecimal::add));
        if (com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(goodsorderList)) {
            saleReportResponse.setProfitTotal(goodsorderList.stream().filter(i->Objects.nonNull(i.getShopSettlement())).map(i->i.getShopSettlement()).reduce(BigDecimal.ZERO, BigDecimal::add));
        }
        return  saleReportResponse;
    }
@@ -968,9 +999,6 @@
        }
        redisTemplate.delete(token);
    }
}