1
phpcjl
2024-12-17 5bb475d48559ded3ac78d09599f74d38bfcc7f38
1
5个文件已修改
1个文件已添加
139 ■■■■■ 已修改文件
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserPointController.java 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/UserPointServiceImpl.java 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/vo/CommissionStatistics.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/resources/mapper/account/UserPointMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/GoodsServiceImpl.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserPointController.java
@@ -1,13 +1,12 @@
package com.ruoyi.account.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.account.api.model.AppUser;
import com.ruoyi.account.api.model.UserPoint;
import com.ruoyi.account.service.AppUserService;
import com.ruoyi.account.service.UserPointService;
import com.ruoyi.account.vo.CommissionStatistics;
import com.ruoyi.account.vo.UserPointDetailVO;
import com.ruoyi.account.vo.UserPointStatistics;
import com.ruoyi.account.vo.UserPointVO;
@@ -21,7 +20,6 @@
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@@ -146,6 +144,21 @@
        util.exportExcel(response, userPointList, "用户积分统计");
    }
    /**
     * 用户分佣统计
     */
    @GetMapping("/commissionStatistics")
    @ApiOperation(value = "用户分佣统计", tags = "管理后台-财务统计-用户分佣统计")
    public R<CommissionStatistics> commissionStatistics(UserPoint userPoint) {
        userPoint.setType(2);
        IPage<UserPoint> userPointPage = userPointService.getUserPointPage(Page.of(userPoint.getPageNum(), userPoint.getPageSize()), userPoint);
        UserPointStatistics statistics = userPointService.getStatistics(userPoint);
        CommissionStatistics commissionStatistics = new CommissionStatistics();
        commissionStatistics.setStatistics(statistics);
        commissionStatistics.setUserPointPage(userPointPage);
        return R.ok(commissionStatistics);
    }
}
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/UserPointServiceImpl.java
@@ -163,47 +163,56 @@
    @Override
    public UserPointStatistics getStatistics(UserPoint userPoint) {
        try {
            if (StringUtils.isNotEmpty(userPoint.getUserName()) && StringUtils.isNotEmpty(userPoint.getPhone())) {
                List<Long> userIds = appUserService.listObjs(new LambdaQueryWrapper<AppUser>()
                                .select(AppUser::getId)
                                .like(AppUser::getName, userPoint.getUserName())
                                .like(AppUser::getPhone, userPoint.getPhone()))
                        .stream()
                        .map(appUserId -> (Long) appUserId)
                        .collect(Collectors.toList());
                userPoint.setUserIds(userIds);
            }
        if (StringUtils.isNotEmpty(userPoint.getUserName()) || StringUtils.isNotEmpty(userPoint.getPhone())) {
            List<Long> userIds = appUserService.listObjs(new LambdaQueryWrapper<AppUser>()
                            .select(AppUser::getId)
                            .like(StringUtils.isNotEmpty(userPoint.getUserName()),AppUser::getName, userPoint.getUserName())
                            .like(StringUtils.isNotEmpty(userPoint.getPhone()),AppUser::getPhone, userPoint.getPhone()))
                    .stream()
                    .map(appUserId -> (Long) appUserId)
                    .collect(Collectors.toList());
            userPoint.setUserIds(userIds);
            List<UserPoint> userPointList = userPointMapper.findLatestChangeByType(userPoint);
            Map<Integer, Integer> userBalanceMap = userPointList.stream()
                    .collect(Collectors.groupingBy(
                            UserPoint::getType,
                            Collectors.summingInt(UserPoint::getBalance)
                    ));
            int consumePoint = userBalanceMap.getOrDefault(PointChangeType.CONSUME.getCode(), 0);
            int sharePoint = userBalanceMap.getOrDefault(PointChangeType.COMMISSION_RETURN.getCode(), 0);
            int pullNewPoint = userBalanceMap.getOrDefault(PointChangeType.NEW_USER_REFERRAL.getCode(), 0);
            int registerPoint = userBalanceMap.getOrDefault(PointChangeType.REGISTRATION.getCode(), 0);
            int workPoint = userBalanceMap.getOrDefault(PointChangeType.WORK_PERFORMANCE.getCode(), 0);
            int shopAchievementPoint = userBalanceMap.getOrDefault(PointChangeType.TECHNICIAN_PERFORMANCE.getCode(), 0);
            int exchangeGoodsPoint = userBalanceMap.getOrDefault(PointChangeType.EXCHANGE_GOODS.getCode(), 0);
            int storeAchievementPoint = userBalanceMap.getOrDefault(PointChangeType.STORE_PERFORMANCE.getCode(), 0);
            int storeCommissionPoint = userBalanceMap.getOrDefault(PointChangeType.STORE_COMMISSION_RETURN.getCode(), 0);
            int transferPoint = userBalanceMap.getOrDefault(PointChangeType.TRANSFER_POINTS.getCode(), 0);
            int totalPoint = consumePoint + sharePoint + pullNewPoint + registerPoint + workPoint + shopAchievementPoint + exchangeGoodsPoint + storeAchievementPoint + storeCommissionPoint + transferPoint;
            UserPointStatistics userPointStatistics = new UserPointStatistics();
            userPointStatistics.setTotalPoint(totalPoint);
            userPointStatistics.setConsumePoint(consumePoint);
            userPointStatistics.setSharePoint(sharePoint);
            userPointStatistics.setPullNewPoint(pullNewPoint);
            userPointStatistics.setRegisterPoint(registerPoint);
            userPointStatistics.setWorkPoint(workPoint);
            userPointStatistics.setShopAchievementPoint(shopAchievementPoint);
            return userPointStatistics;
        } catch (Exception e) {
            // 记录异常日志
            log.error("获取用户点统计信息时出错", e);
            throw new RuntimeException("获取用户点统计信息时出错", e);
        }
        List<UserPoint> userPointList = userPointMapper.findLatestChangeByType(userPoint);
        Map<Integer, Integer> userBalanceMap = userPointList.stream()
                .collect(Collectors.toMap(UserPoint::getType, UserPoint::getBalance));
        Integer consumePoint = Optional.ofNullable(userBalanceMap.get(PointChangeType.CONSUME.getCode())).orElse(0);
        Integer sharePoint = Optional.ofNullable(userBalanceMap.get(PointChangeType.COMMISSION_RETURN.getCode())).orElse(0);
        Integer pullNewPoint = Optional.ofNullable(userBalanceMap.get(PointChangeType.NEW_USER_REFERRAL.getCode())).orElse(0);
        Integer registerPoint = Optional.ofNullable(userBalanceMap.get(PointChangeType.REGISTRATION.getCode())).orElse(0);
        Integer workPoint = Optional.ofNullable(userBalanceMap.get(PointChangeType.WORK_PERFORMANCE.getCode())).orElse(0);
        Integer shopAchievementPoint = Optional.ofNullable(userBalanceMap.get(PointChangeType.TECHNICIAN_PERFORMANCE.getCode())).orElse(0);
        Integer exchangeGoodsPoint = Optional.ofNullable(userBalanceMap.get(PointChangeType.EXCHANGE_GOODS.getCode())).orElse(0);
        Integer storeAchievementPoint = Optional.ofNullable(userBalanceMap.get(PointChangeType.STORE_PERFORMANCE.getCode())).orElse(0);
        Integer storeCommissionPoint = Optional.ofNullable(userBalanceMap.get(PointChangeType.STORE_COMMISSION_RETURN.getCode())).orElse(0);
        Integer transferPoint = Optional.ofNullable(userBalanceMap.get(PointChangeType.TRANSFER_POINTS.getCode())).orElse(0);
        Integer totalPoint = consumePoint + sharePoint + pullNewPoint + registerPoint + workPoint + shopAchievementPoint + exchangeGoodsPoint + storeAchievementPoint + storeCommissionPoint + transferPoint;
        UserPointStatistics userPointStatistics = new UserPointStatistics();
        userPointStatistics.setTotalPoint(totalPoint);
        userPointStatistics.setConsumePoint(consumePoint);
        userPointStatistics.setSharePoint(sharePoint);
        userPointStatistics.setPullNewPoint(pullNewPoint);
        userPointStatistics.setRegisterPoint(registerPoint);
        userPointStatistics.setWorkPoint(workPoint);
        userPointStatistics.setShopAchievementPoint(shopAchievementPoint);
        return userPointStatistics;
    }
    @Override
    public IPage<UserPoint> getUserPointPage(Page<UserPoint> page, UserPoint userPoint) {
        List<AppUser> appUserList = appUserService.list(new LambdaQueryWrapper<AppUser>()
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/vo/CommissionStatistics.java
New file
@@ -0,0 +1,18 @@
package com.ruoyi.account.vo;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.ruoyi.account.api.model.UserPoint;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ApiModel(description = "用户分佣统计响应")
@Data
public class CommissionStatistics {
    @ApiModelProperty(value = "统计数据", required = true)
    private UserPointStatistics statistics;
    @ApiModelProperty(value = "分页数据", required = true)
    private IPage<UserPoint> userPointPage;
}
ruoyi-service/ruoyi-account/src/main/resources/mapper/account/UserPointMapper.xml
@@ -47,7 +47,7 @@
                     create_time,
                     app_user_id,
                     object_id,
                     ROW_NUMBER() OVER (PARTITION BY type ORDER BY create_time DESC) AS rn
                     ROW_NUMBER() OVER (PARTITION BY `type`,app_user_id ORDER BY create_time DESC) AS rn
                 FROM
                     t_user_point
                 <where>
@@ -55,7 +55,7 @@
                             create_time BETWEEN #{startTime} AND #{endTime}
                         </if>
                         <if test="type != null">
                             AND type = #{type}
                             AND `type` = #{type}
                         </if>
                         <if test="userIds != null and userIds.size !=0">
                             AND app_user_id IN
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
@@ -250,7 +250,9 @@
        String content = baseSetting.getContent();
        JSONObject jsonObject = JSONObject.parseObject(content);
        Long days = jsonObject.getLong("days");
        commissionService.addToCommissionDelayQueue(order.getId(), LocalDateTime.now().plusDays(days));
        if (days != null && days > 0){
            commissionService.addToCommissionDelayQueue(order.getId(), LocalDateTime.now().plusDays(days));
        }
    }
    
    
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/GoodsServiceImpl.java
@@ -277,8 +277,15 @@
        List<GoodsArea> goodsAreaList1 = new ArrayList<>();
        listMap.forEach((s, goodsAreas) -> {
            GoodsArea goodsArea = goodsAreas.get(0);
            goodsArea.setGoodsAreaList(goodsAreas);
            goodsAreaList1.add(goodsArea);
            GoodsArea goodsArea1 = new GoodsArea();
            goodsArea1.setProvinceCode(goodsArea.getProvinceCode());
            goodsArea1.setCityCode(goodsArea.getCityCode());
            goodsArea1.setDistrictsCode(goodsArea.getDistrictsCode());
            goodsArea1.setProvince(goodsArea.getProvince());
            goodsArea1.setCity(goodsArea.getCity());
            goodsArea1.setDistricts(goodsArea.getDistricts());
            goodsArea1.setGoodsAreaList(goodsAreas);
            goodsAreaList1.add(goodsArea1);
        });
        goods.setGoodsAreaList(goodsAreaList1);