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; /** * 可获得消费积分 */ 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; 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") 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, "用户积分统计"); } 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); } 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; } } 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(); } } 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(); } 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; } } ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/ShopPointStatistics.java
New file @@ -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; }