From bbccdee143c85c0a5cc3522ba79445d10e4236b7 Mon Sep 17 00:00:00 2001 From: phpcjl <phpcjl@gmail.com> Date: 星期一, 16 十二月 2024 10:21:02 +0800 Subject: [PATCH] 用户积分统计 --- ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/UserPointServiceImpl.java | 27 ++++++++ ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/ShopPointServiceImpl.java | 5 + ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/OrderDetailVO.java | 2 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/Goods.java | 4 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/UserPointService.java | 8 ++ ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserPointController.java | 40 ++---------- ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/ShopPointService.java | 2 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopPointController.java | 17 +++++ ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/MyShoppingCartVo.java | 2 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/ShopPointStatistics.java | 39 +++++++++++++ 10 files changed, 109 insertions(+), 37 deletions(-) diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/MyShoppingCartVo.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/MyShoppingCartVo.java index cc3b4b5..dbf7ed5 100644 --- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/MyShoppingCartVo.java +++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/MyShoppingCartVo.java @@ -40,7 +40,7 @@ @ApiModelProperty("积分支付") private Boolean pointPayment; @ApiModelProperty("配送方式(1=自提,2=快递)") - private Integer distributionMode; + private String distributionMode; /** * 可获得消费积分 */ diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/OrderDetailVO.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/OrderDetailVO.java index c6c1386..5a355ee 100644 --- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/OrderDetailVO.java +++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/OrderDetailVO.java @@ -63,7 +63,7 @@ private BigDecimal paymentAmount; @ApiModelProperty(value = "配送方式(1=自提,2=快递)") - private Integer distributionMode; + private String distributionMode; @ApiModelProperty(value = "门店名称") private String shopName; diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/Goods.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/Goods.java index d9b5f37..408b550 100644 --- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/Goods.java +++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/Goods.java @@ -47,9 +47,9 @@ @TableField("purchase_limit") private Integer purchaseLimit; - @ApiModelProperty(value = "配送方式(1=自提,2=快递)") + @ApiModelProperty(value = "配送方式(1=自提,2=快递,1,2 = 自提+快递)") @TableField("distribution_mode") - private Integer distributionMode; + private String distributionMode; @ApiModelProperty(value = "指定门店(1=指定,2=所有)") @TableField("appoint_store") diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserPointController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserPointController.java index a496d51..d13afbd 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserPointController.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserPointController.java @@ -2,10 +2,10 @@ 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.mapper.UserPointMapper; import com.ruoyi.account.service.AppUserService; import com.ruoyi.account.service.UserPointService; import com.ruoyi.account.vo.UserPointDetailVO; @@ -17,14 +17,9 @@ import com.ruoyi.common.core.web.page.TableDataInfo; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.common.security.utils.SecurityUtils; -import com.ruoyi.system.api.model.LoginUser; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; -import org.apache.poi.ss.usermodel.Row; -import org.apache.poi.ss.usermodel.Sheet; -import org.apache.poi.ss.usermodel.Workbook; -import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.springframework.format.annotation.DateTimeFormat; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; @@ -37,8 +32,6 @@ import java.time.LocalTime; import java.time.YearMonth; import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; /** * <p> @@ -135,19 +128,11 @@ */ @GetMapping("/list") @ApiOperation(value = "积分变更记录", tags = "管理后台-财务统计-用户积分统计") - public R<Page<UserPoint>> list(@ApiParam("页码") @RequestParam Integer pageNum, @ApiParam("大小") Integer pageSize, UserPoint userPoint) { - List<String> userIds = appUserService.listObjs(new LambdaQueryWrapper<AppUser>() - .select(AppUser::getId) - .eq(AppUser::getPhone, userPoint.getPhone()) - .like(AppUser::getName, userPoint.getUserName()), String::valueOf); - - Page<UserPoint> page = userPointService.page(Page.of(pageNum, pageSize), new LambdaQueryWrapper<UserPoint>() - .in(!CollectionUtils.isEmpty(userIds), UserPoint::getAppUserId, userIds) - .eq(UserPoint::getType, userPoint.getType()) - .between(UserPoint::getCreateTime, userPoint.getStartTime(), userPoint.getEndTime()) - .orderByDesc(UserPoint::getCreateTime)); - return R.ok(page); + public R<IPage<UserPoint>> list(@ApiParam("页码") @RequestParam Integer pageNum, @ApiParam("大小") Integer pageSize, UserPoint userPoint) { + IPage<UserPoint> userPointPage = userPointService.getUserPointPage(Page.of(pageNum, pageSize), userPoint); + return R.ok(userPointPage); } + /** * 导出 @@ -155,18 +140,9 @@ @GetMapping("/export") @ApiOperation(value = "积分变更记录导出", tags = "管理后台-财务统计-用户积分统计") public void export(HttpServletResponse response, UserPoint userPoint) { - List<String> userIds = appUserService.listObjs(new LambdaQueryWrapper<AppUser>() - .select(AppUser::getId) - .eq(AppUser::getPhone, userPoint.getPhone()) - .like(AppUser::getName, userPoint.getUserName()), String::valueOf); - - List<UserPoint> userPointList = userPointService.list(new LambdaQueryWrapper<UserPoint>() - .in(!CollectionUtils.isEmpty(userIds), UserPoint::getAppUserId, userIds) - .eq(UserPoint::getType, userPoint.getType()) - .between(UserPoint::getCreateTime, userPoint.getStartTime(), userPoint.getEndTime()) - .orderByDesc(UserPoint::getCreateTime)); - - ExcelUtil<UserPoint> util = new ExcelUtil<UserPoint>(UserPoint.class); + IPage<UserPoint> userPointPage = userPointService.getUserPointPage(Page.of(1, Integer.MAX_VALUE), userPoint); + List<UserPoint> userPointList = userPointPage.getRecords(); + ExcelUtil<UserPoint> util = new ExcelUtil<>(UserPoint.class); util.exportExcel(response, userPointList, "用户积分统计"); } diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/UserPointService.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/UserPointService.java index ce68846..149ea11 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/UserPointService.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/UserPointService.java @@ -1,10 +1,15 @@ package com.ruoyi.account.service; +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.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.account.api.model.AppUser; import com.ruoyi.account.api.model.UserPoint; import com.ruoyi.account.vo.UserPointDetailVO; import com.ruoyi.account.vo.UserPointStatistics; import com.ruoyi.account.vo.UserPointVO; +import org.springframework.util.CollectionUtils; import java.math.BigDecimal; import java.time.LocalDateTime; @@ -28,4 +33,7 @@ void transferPoint(BigDecimal point, String phone); UserPointStatistics getStatistics(UserPoint userPoint); + + + IPage<UserPoint> getUserPointPage(Page<UserPoint> page, UserPoint userPoint); } diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/UserPointServiceImpl.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/UserPointServiceImpl.java index c4da661..3caa4d3 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/UserPointServiceImpl.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/UserPointServiceImpl.java @@ -2,6 +2,8 @@ import cn.hutool.core.collection.CollectionUtil; 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.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.account.api.model.AppUser; import com.ruoyi.account.api.model.UserPoint; @@ -23,6 +25,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import java.math.BigDecimal; @@ -164,7 +167,7 @@ public UserPointStatistics getStatistics(UserPoint userPoint) { LoginUser loginUser = tokenService.getLoginUser(); userPoint.setAppUserId(loginUser.getUserid()); - List<UserPoint> userPointList = userPointMapper.findLatestChangeByType(userPoint); + List<UserPoint> userPointList = userPointMapper.findLatestChangeByType(userPoint); Map<Integer, Integer> userBalanceMap = userPointList.stream() .collect(Collectors.toMap(UserPoint::getType, UserPoint::getBalance)); @@ -191,4 +194,26 @@ userPointStatistics.setShopAchievementPoint(shopAchievementPoint); return userPointStatistics; } + + @Override + public IPage<UserPoint> getUserPointPage(Page<UserPoint> page, UserPoint userPoint) { + List<AppUser> appUserList = appUserService.list(new LambdaQueryWrapper<AppUser>() + .eq(AppUser::getPhone, userPoint.getPhone()) + .like(AppUser::getName, userPoint.getUserName())); + List<Long> userIds = appUserList.stream().map(AppUser::getId).collect(Collectors.toList()); + + Page<UserPoint> userPointPage = page(page, new LambdaQueryWrapper<UserPoint>() + .in(!CollectionUtils.isEmpty(userIds), UserPoint::getAppUserId, userIds) + .eq(UserPoint::getType, userPoint.getType()) + .between(UserPoint::getCreateTime, userPoint.getStartTime(), userPoint.getEndTime()) + .orderByDesc(UserPoint::getCreateTime)); + + userPointPage.getRecords().forEach(userPoint1 -> appUserList.stream() + .filter(appUser -> appUser.getId().equals(userPoint1.getAppUserId())) + .findFirst().ifPresent(appUser -> { + userPoint1.setUserName(appUser.getName()); + userPoint1.setPhone(appUser.getPhone()); + })); + return userPointPage; + } } diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopPointController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopPointController.java index 9ad46c0..380d4ba 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopPointController.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopPointController.java @@ -1,8 +1,12 @@ package com.ruoyi.other.controller; +import com.ruoyi.other.service.ShopPointService; +import io.swagger.annotations.Api; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; /** * <p> @@ -14,7 +18,20 @@ */ @RestController @RequestMapping("/shop-point") +@Api(tags = "管理后台-财务统计-门店积分统计") public class ShopPointController { + @Resource + private ShopPointService shopPointService; + + + /** + * 门店积分统计 + */ + public Object statistics() { + return shopPointService.statistics(); + } + + } diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/ShopPointService.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/ShopPointService.java index 9d017fb..efcf878 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/ShopPointService.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/ShopPointService.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.other.api.domain.ShopPoint; +import com.ruoyi.other.vo.ShopPointStatistics; /** * <p> @@ -13,4 +14,5 @@ */ public interface ShopPointService extends IService<ShopPoint> { + ShopPointStatistics statistics(); } diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/ShopPointServiceImpl.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/ShopPointServiceImpl.java index f0139a2..f5dd91b 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/ShopPointServiceImpl.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/ShopPointServiceImpl.java @@ -4,6 +4,7 @@ import com.ruoyi.other.mapper.ShopPointMapper; import com.ruoyi.other.api.domain.ShopPoint; import com.ruoyi.other.service.ShopPointService; +import com.ruoyi.other.vo.ShopPointStatistics; import org.springframework.stereotype.Service; /** @@ -17,4 +18,8 @@ @Service public class ShopPointServiceImpl extends ServiceImpl<ShopPointMapper, ShopPoint> implements ShopPointService { + @Override + public ShopPointStatistics statistics() { + return null; + } } diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/ShopPointStatistics.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/ShopPointStatistics.java new file mode 100644 index 0000000..6cae81e --- /dev/null +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/ShopPointStatistics.java @@ -0,0 +1,39 @@ +package com.ruoyi.other.vo; + +import com.ruoyi.other.api.domain.ShopPoint; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("门店积分统计") +public class ShopPointStatistics { + + /** + * 门店获得总积分 + */ + @ApiModelProperty("门店获得总积分") + private Integer totalPoint; + + /** + * 门店业绩积分 + */ + @ApiModelProperty("门店业绩积分") + private Integer shopPoint; + + /** + * 门店返佣积分 + */ + @ApiModelProperty("门店返佣积分") + private Integer shopCommissionPoint; + + /** + * 下级门店返佣积分 + */ + @ApiModelProperty("下级门店返佣积分") + private Integer subShopCommissionPoint; + + private List<ShopPoint> shopPointList; +} -- Gitblit v1.7.1