From ce7f72ff0a44cb6e980b05a538a0339439248b99 Mon Sep 17 00:00:00 2001 From: luodangjia <luodangjia> Date: 星期二, 17 十二月 2024 16:03:46 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java | 6 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/UserPointServiceImpl.java | 89 +++++--- ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/ShopPointServiceImpl.java | 19 + ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysUser.java | 8 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsAppUser.java | 20 ++ ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/SeckillActivityInfo.java | 6 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/SeckillActivityInfoServiceImpl.java | 2 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsSeckill.java | 6 ruoyi-service/ruoyi-account/src/main/resources/mapper/account/UserPointMapper.xml | 4 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java | 4 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/controller/UserPointController.java | 3 ruoyi-service/ruoyi-other/src/main/resources/mapper/other/SeckillActivityInfoMapper.xml | 25 ++ ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/vo/CommissionStatistics.java | 27 ++ ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsShop.java | 20 ++ ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/BalanceChangeRecordServiceImpl.java | 39 +++ ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/SeckillActivityInfoController.java | 20 ++ ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsArea.java | 4 ruoyi-service/ruoyi-other/src/main/resources/mapper/other/GoodsMapper.xml | 4 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/excel/UserPointEx.java | 38 +++ ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/BalanceChangeRecordService.java | 4 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/BalanceChangeRecordController.java | 87 ++++++++ ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/BalanceChangeRecord.java | 14 + ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/dto/SetDto.java | 15 + ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/SeckillActivityInfoMapper.java | 5 ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/service/TokenService.java | 3 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsVip.java | 4 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java | 16 + ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsController.java | 12 + ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/GoodsServiceImpl.java | 64 +++++ 30 files changed, 499 insertions(+), 73 deletions(-) diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/BalanceChangeRecord.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/BalanceChangeRecord.java index f3d999c..1b8ccc4 100644 --- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/BalanceChangeRecord.java +++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/BalanceChangeRecord.java @@ -4,10 +4,12 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; +import org.springframework.format.annotation.DateTimeFormat; import java.io.Serializable; import java.math.BigDecimal; @@ -61,4 +63,16 @@ @ApiModelProperty("消费金额") private BigDecimal amount; + @ApiModelProperty(value = "开始时间") + @TableField(exist = false) + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime startTime; + + @ApiModelProperty(value = "结束时间") + @TableField(exist = false) + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime endTime; + } 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 408b550..e05c57d 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 @@ -139,5 +139,9 @@ @ApiModelProperty(value = "地区价格") private List<GoodsArea> goodsAreaList; + public String getIdStr() { + return String.valueOf(id); + } + } diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsAppUser.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsAppUser.java index 817c741..89d1a01 100644 --- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsAppUser.java +++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsAppUser.java @@ -38,5 +38,25 @@ @TableField("app_user_id") private Long appUserId; + @TableField(exist = false) + @ApiModelProperty(value = "用户名称") + private String userName; + + @TableField(exist = false) + @ApiModelProperty(value = "用户手机号") + private String phone; + + @TableField(exist = false) + @ApiModelProperty(value = "会员等级") + private String vipName; + + @TableField(exist = false) + @ApiModelProperty(value = "会员id") + private Integer vipId; + + + public String getIdStr() { + return String.valueOf(id); + } } diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsArea.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsArea.java index 9e951a6..7e97c84 100644 --- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsArea.java +++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsArea.java @@ -129,6 +129,10 @@ @TableField("bound_shop_superiors_points") private Integer boundShopSuperiorsPoints; + @ApiModelProperty(value = "vip名子") + @TableField(exist = false) + private String vipName; + @TableField(exist = false) private List<GoodsArea> goodsAreaList; diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsSeckill.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsSeckill.java index 61d6852..fe80f1a 100644 --- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsSeckill.java +++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsSeckill.java @@ -70,7 +70,11 @@ @ApiModelProperty(value = "获取返佣积分上级类型(1=直推上级,2=直帮上级)") @TableField("superior_type") - private Integer superiorType; + private String superiorType; + + @ApiModelProperty(value = "获取分佣金额上级类型(1=直推上级,2=直帮上级)") + @TableField("superior_price_type") + private String superiorPriceType; @ApiModelProperty(value = "核销门店可获得服务费") @TableField("servuce_shop_charges") diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsShop.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsShop.java index c4dfa02..2826f5a 100644 --- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsShop.java +++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsShop.java @@ -38,5 +38,25 @@ @TableField("shop_id") private Integer shopId; + @ApiModelProperty(value = "门店名称") + @TableField(exist = false) + private String shopName; + + @ApiModelProperty(value = "店长名称") + @TableField(exist = false) + private String ownerName; + + @ApiModelProperty(value = "联系电话") + @TableField(exist = false) + private String phone; + + @ApiModelProperty(value = "门店地址") + @TableField(exist = false) + private String address; + + public String getIdStr(){ + return String.valueOf(id); + } + } diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsVip.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsVip.java index 4828120..98ccca5 100644 --- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsVip.java +++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsVip.java @@ -104,5 +104,9 @@ @TableField("bound_shop_superiors_points") private Integer boundShopSuperiorsPoints; + @ApiModelProperty(value = "vip名子") + @TableField(exist = false) + private String vipName; + } diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/SeckillActivityInfo.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/SeckillActivityInfo.java index d140ced..a749c31 100644 --- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/SeckillActivityInfo.java +++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/SeckillActivityInfo.java @@ -1,10 +1,12 @@ package com.ruoyi.other.api.domain; import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; +import org.springframework.format.annotation.DateTimeFormat; import java.io.Serializable; import java.time.LocalDateTime; @@ -53,10 +55,14 @@ @ApiModelProperty(value = "活动开始日期") @TableField("start_time") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime startTime; @ApiModelProperty(value = "活动结束日期") @TableField("end_time") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime endTime; @ApiModelProperty(value = "是否上架:0否 1是") diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysUser.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysUser.java index 84549eb..798c117 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysUser.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysUser.java @@ -116,12 +116,14 @@ * 角色类型 1=平台 2=公司 3=门店 4=修理厂 */ @ApiModelProperty(value = "角色类型 1=平台 2=门店") + @TableField("role_type") private Integer roleType; @Excel(name = "密码修改时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", type = Type.EXPORT) private Date passWordUpdate; @ApiModelProperty(value = "对象ID") + @TableField("objectId") private Integer objectId; @ApiModelProperty(value = "备注") @@ -401,7 +403,11 @@ public void setForbiddenRemark(String forbiddenRemark) { this.forbiddenRemark = forbiddenRemark; } - + + public List<String> getRoleNames() { + return roleNames; + } + @Override public String toString() { return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) diff --git a/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/service/TokenService.java b/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/service/TokenService.java index 8f95678..746f018 100644 --- a/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/service/TokenService.java +++ b/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/service/TokenService.java @@ -130,6 +130,9 @@ if (loginUser == null) { throw new RuntimeException("令牌已过期,请重新登录!"); } + if(null == loginUser.getUserid()){ + loginUser.setUserid(loginUser.getSysUser().getUserId()); + } return loginUser; } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java index 341d908..3f9f7e9 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java @@ -230,7 +230,7 @@ { SysDept info = deptMapper.selectDeptById(dept.getParentId()); // 如果父节点不为正常状态,则不允许新增子节点 - if (!UserConstants.DEPT_NORMAL.equals(info.getStatus())) + if (null != info && !UserConstants.DEPT_NORMAL.equals(info.getStatus())) { throw new ServiceException("部门停用,不允许新增"); } @@ -347,7 +347,7 @@ Iterator<SysDept> it = list.iterator(); while (it.hasNext()) { - SysDept n = (SysDept) it.next(); + SysDept n = it.next(); if (StringUtils.isNotNull(n.getParentId()) && n.getParentId().longValue() == t.getDeptId().longValue()) { tlist.add(n); @@ -361,6 +361,6 @@ */ private boolean hasChild(List<SysDept> list, SysDept t) { - return getChildList(list, t).size() > 0 ? true : false; + return getChildList(list, t).size() > 0; } } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java index 5909863..5c50770 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java @@ -11,6 +11,7 @@ import com.ruoyi.common.datascope.annotation.DataScope; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.common.security.utils.SecurityUtils; +import com.ruoyi.system.api.domain.SysDept; import com.ruoyi.system.api.domain.SysRole; import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.query.ChangeUserQuery; @@ -19,12 +20,10 @@ import com.ruoyi.system.domain.SysUserRole; import com.ruoyi.system.mapper.*; import com.ruoyi.system.query.GetSysUserList; -import com.ruoyi.system.service.ISysConfigService; -import com.ruoyi.system.service.ISysRoleService; -import com.ruoyi.system.service.ISysUserRoleService; -import com.ruoyi.system.service.ISysUserService; +import com.ruoyi.system.service.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; @@ -75,6 +74,10 @@ @Resource private TokenService tokenService; + + @Lazy + @Resource + private ISysDeptService deptService; /** @@ -520,11 +523,16 @@ List<String> roleNames = new ArrayList<>(); for (SysUserRole sysUserRole : list1) { SysRole sysRole = sysRoleService.selectRoleById(sysUserRole.getRoleId()); + if(null == sysRole){ + continue; + } roleNames.add(sysRole.getRoleName()); } Long[] roleIds = new Long[]{}; sysUser.setRoleIds(list1.stream().map(SysUserRole::getRoleId).collect(Collectors.toList()).toArray(roleIds)); sysUser.setRoleNames(roleNames); + SysDept sysDept = deptService.selectDeptById(sysUser.getDeptId()); + sysUser.setDept(sysDept); } return pageInfo.setRecords(list); } diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/BalanceChangeRecordController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/BalanceChangeRecordController.java index 3ed2f97..5c5a224 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/BalanceChangeRecordController.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/BalanceChangeRecordController.java @@ -1,19 +1,26 @@ package com.ruoyi.account.controller; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.account.api.model.BalanceChangeRecord; import com.ruoyi.account.api.model.UserClickLog; +import com.ruoyi.account.api.model.UserPoint; import com.ruoyi.account.dto.BalanceQuery; import com.ruoyi.account.dto.UserCancelQuery; +import com.ruoyi.account.excel.UserPointEx; import com.ruoyi.account.service.BalanceChangeRecordService; +import com.ruoyi.account.vo.CommissionStatistics; +import com.ruoyi.account.vo.UserPointStatistics; import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.utils.poi.ExcelUtil; import io.swagger.annotations.ApiOperation; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.List; /** * @author zhibing.pu @@ -45,6 +52,78 @@ return R.ok(balanceChangeRecordService.pageList(agentQuery)); } +// /** +// * 用户分佣统计 +// */ +// @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); +// } +// +// /** +// * 导出用户分佣统计 +// */ +// @GetMapping("/commissionExport") +// @ApiOperation(value = "用户分佣统计导出", tags = "管理后台-财务统计-用户分佣统计") +// public void commissionExport(HttpServletResponse response, UserPoint userPoint) { +// userPoint.setType(2); +// IPage<UserPoint> userPointPage = userPointService.getUserPointPage(Page.of(1, Integer.MAX_VALUE), userPoint); +// List<UserPoint> userPointList = userPointPage.getRecords(); +// List<UserPointEx> userPointExList = new ArrayList<>(); +// for (UserPoint point : userPointList) { +// UserPointEx userPointEx = new UserPointEx(); +// userPointEx.setUserName(point.getUserName()); +// userPointEx.setPhone(point.getPhone()); +// userPointEx.setChangeTime(point.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); +// userPointEx.setChangeNum(point.getVariablePoint().toString()); +// Integer type = point.getType(); +// switch (type) { +// case 1: +// userPointEx.setType("消费积分"); +// break; +// case 2: +// userPointEx.setType("返佣积分"); +// break; +// case 3: +// userPointEx.setType("拉新人积分"); +// break; +// case 4: +// userPointEx.setType("兑换商品"); +// break; +// case 5: +// userPointEx.setType("门店业绩"); +// break; +// case 6: +// userPointEx.setType("门店返佣"); +// break; +// case 7: +// userPointEx.setType("技师业绩"); +// break; +// case 8: +// userPointEx.setType("转赠积分"); +// break; +// case 9: +// userPointEx.setType("做工积分"); +// break; +// case 10: +// userPointEx.setType("注册积分"); +// break; +// default: +// userPointEx.setType("未知积分"); +// } +// userPointExList.add(userPointEx); +// } +// ExcelUtil<UserPointEx> util = new ExcelUtil<>(UserPointEx.class); +// util.exportExcel(response, userPointExList, "用户分佣统计"); +// } + } 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 fcd824e..adff1d8 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 @@ -1,10 +1,8 @@ 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; @@ -21,7 +19,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; diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/excel/UserPointEx.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/excel/UserPointEx.java new file mode 100644 index 0000000..7932861 --- /dev/null +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/excel/UserPointEx.java @@ -0,0 +1,38 @@ +package com.ruoyi.account.excel; + +import com.ruoyi.common.core.annotation.Excel; +import lombok.Data; + +@Data +public class UserPointEx { + + /** + * 用户名称 + */ + @Excel(name = "用户名称") + private String userName; + + /** + * 联系电话 + */ + @Excel(name = "联系电话") + private String phone; + + /** + * 变更类型 + */ + @Excel(name = "变更类型") + private String type; + + /** + * 变更时间 + */ + @Excel(name = "变更时间") + private String changeTime; + + /** + * 变更数量 + */ + @Excel(name = "变更数量") + private String changeNum; +} diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/BalanceChangeRecordService.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/BalanceChangeRecordService.java index 4a8a9d3..a1cf54f 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/BalanceChangeRecordService.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/BalanceChangeRecordService.java @@ -1,10 +1,14 @@ package com.ruoyi.account.service; 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.BalanceChangeRecord; import com.ruoyi.account.dto.BalanceQuery; +import com.ruoyi.account.vo.CommissionStatistics; public interface BalanceChangeRecordService extends IService<BalanceChangeRecord> { IPage<BalanceChangeRecord> pageList(BalanceQuery agentQuery); + + CommissionStatistics commissionStatistics(Page<BalanceChangeRecord> page, BalanceChangeRecord balanceChangeRecord); } diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/BalanceChangeRecordServiceImpl.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/BalanceChangeRecordServiceImpl.java index 8291e71..828b2a5 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/BalanceChangeRecordServiceImpl.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/BalanceChangeRecordServiceImpl.java @@ -1,17 +1,32 @@ package com.ruoyi.account.service.impl; +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.BalanceChangeRecord; import com.ruoyi.account.api.model.UserClickLog; +import com.ruoyi.account.api.model.WithdrawalRequests; import com.ruoyi.account.dto.BalanceQuery; import com.ruoyi.account.mapper.BalanceChangeRecordMapper; +import com.ruoyi.account.service.AppUserService; import com.ruoyi.account.service.BalanceChangeRecordService; +import com.ruoyi.account.vo.CommissionStatistics; +import com.ruoyi.common.core.utils.StringUtils; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.List; +import java.util.stream.Collectors; @Service public class BalanceChangeRecordServiceImpl extends ServiceImpl<BalanceChangeRecordMapper, BalanceChangeRecord> implements BalanceChangeRecordService { + @Resource + private AppUserService appUserService; + @Override public IPage<BalanceChangeRecord> pageList(BalanceQuery agentQuery) { Page<BalanceChangeRecord> page = new Page<>(); @@ -20,4 +35,28 @@ IPage<BalanceChangeRecord> shopIPage = this.baseMapper.pageList(page, agentQuery); return shopIPage; } + + @Override + public CommissionStatistics commissionStatistics(Page<BalanceChangeRecord> page, BalanceChangeRecord balanceChangeRecord) { + + List<AppUser> appUserList = appUserService.list(new LambdaQueryWrapper<AppUser>() + .like(StringUtils.isNotEmpty(balanceChangeRecord.getUserName()), AppUser::getName, balanceChangeRecord.getUserName()) + .like(StringUtils.isNotEmpty(balanceChangeRecord.getUserPhone()), AppUser::getPhone, balanceChangeRecord.getUserPhone())); + if (CollectionUtils.isEmpty(appUserList)){ + return new CommissionStatistics(); + } + + List<Long> appUserIds = appUserList.stream().map(AppUser::getId).collect(Collectors.toList()); + + BigDecimal totalCommission = appUserList.stream() + .map(AppUser::getTotalDistributionAmount) + .reduce(BigDecimal.ZERO, BigDecimal::add); + + + Page<BalanceChangeRecord> changeRecordPage = page(page, new LambdaQueryWrapper<BalanceChangeRecord>() + .in(BalanceChangeRecord::getAppUserId, appUserIds) + .between(balanceChangeRecord.getStartTime() != null && balanceChangeRecord.getEndTime() != null, + BalanceChangeRecord::getCreateTime, balanceChangeRecord.getStartTime(), balanceChangeRecord.getEndTime())); + return new CommissionStatistics(totalCommission, changeRecordPage); + } } 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 2e58044..61c0ede 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 @@ -163,56 +163,69 @@ @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>() .eq(AppUser::getPhone, userPoint.getPhone()) .like(AppUser::getName, userPoint.getUserName())); + if (appUserList.isEmpty()){ + return page; + } + 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) + .in(UserPoint::getAppUserId, userIds) .eq(userPoint.getType() != null, UserPoint::getType, userPoint.getType()) .between( userPoint.getStartTime()!= null && userPoint.getEndTime() !=null,UserPoint::getCreateTime, userPoint.getStartTime(), userPoint.getEndTime()) .orderByDesc(UserPoint::getCreateTime)); diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/vo/CommissionStatistics.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/vo/CommissionStatistics.java new file mode 100644 index 0000000..7233cd7 --- /dev/null +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/vo/CommissionStatistics.java @@ -0,0 +1,27 @@ +package com.ruoyi.account.vo; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.account.api.model.BalanceChangeRecord; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +@ApiModel(description = "用户分佣统计响应") +@Data +public class CommissionStatistics { + + @ApiModelProperty(value = "分佣总计") + private Integer totalCommission; + + @ApiModelProperty(value = "分页数据", required = true) + private IPage<BalanceChangeRecord> userPointPage; + + public CommissionStatistics() { + } + public CommissionStatistics(BigDecimal totalCommission, Page<BalanceChangeRecord> changeRecordPage) { + + } +} diff --git a/ruoyi-service/ruoyi-account/src/main/resources/mapper/account/UserPointMapper.xml b/ruoyi-service/ruoyi-account/src/main/resources/mapper/account/UserPointMapper.xml index c045836..a0314df 100644 --- a/ruoyi-service/ruoyi-account/src/main/resources/mapper/account/UserPointMapper.xml +++ b/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 diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java index f68a9d5..c6c54c3 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java +++ b/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)); + } } diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsController.java index 5c71417..2d86a41 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsController.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsController.java @@ -78,6 +78,18 @@ } /** + * 更新上/下架状态 + */ + @PutMapping("/manageGoodsStatus/{goodsId}/{status}") + @ApiOperation(value = "商品上/下架", tags = {"管理后台-商品管理"}) + public R<Void> manageGoodsStatus(@PathVariable("goodsId") Long goodsId, + @PathVariable("status") Integer status){ + goodsService.lambdaUpdate().eq(Goods::getId, goodsId).set(Goods::getStatus, status).update(); + return R.ok(); + } + + + /** * 后台商品删除 */ @DeleteMapping("/manageGoodsDelete/{goodsId}") diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/SeckillActivityInfoController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/SeckillActivityInfoController.java index 41dae65..07e9282 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/SeckillActivityInfoController.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/SeckillActivityInfoController.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.web.controller.BaseController; import com.ruoyi.common.core.web.page.TableDataInfo; @@ -10,12 +12,14 @@ import com.ruoyi.other.api.domain.GoodsSeckill; import com.ruoyi.other.api.domain.SeckillActivityInfo; import com.ruoyi.other.api.vo.GetSeckillActivityInfo; +import com.ruoyi.other.mapper.SeckillActivityInfoMapper; import com.ruoyi.other.service.GoodsSeckillService; import com.ruoyi.other.service.SeckillActivityInfoService; import com.ruoyi.other.vo.SeckillActivityDetailVO; import com.ruoyi.other.vo.SeckillActivityVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; @@ -39,6 +43,9 @@ @Resource private GoodsSeckillService goodsSeckillService; + + @Resource + private SeckillActivityInfoMapper seckillActivityInfoMapper; @@ -85,6 +92,19 @@ /** + * 秒杀活动列表 + */ + @GetMapping("/manageList") + @ApiOperation(value = "秒杀活动列表",tags = {"小程序-商城-首页","后台管理-活动管理-秒杀活动"}) + public R<IPage<SeckillActivityVO>> manageList(@ApiParam("页码") @RequestParam Integer pageNum, + @ApiParam("每一页数据大小") Integer pageSize, + Goods goods) + { + IPage<SeckillActivityVO> IPage = seckillActivityInfoMapper.querySeckillActivity(Page.of(pageNum, pageSize), goods); + return R.ok(IPage); + } + + /** * 新增秒杀活动 */ @PostMapping("/save") diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/dto/SetDto.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/dto/SetDto.java new file mode 100644 index 0000000..abd1fbb --- /dev/null +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/dto/SetDto.java @@ -0,0 +1,15 @@ +package com.ruoyi.other.dto; + +import com.ruoyi.other.api.domain.VipSetting; +import lombok.Data; + +import java.util.List; + +/** + * @author zhibing.pu + * @date 2024/12/16 17:06 + */ +@Data +public class SetDto { + private List<VipSetting> vipSettingList; +} diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/SeckillActivityInfoMapper.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/SeckillActivityInfoMapper.java index 91eb0a3..0317834 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/SeckillActivityInfoMapper.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/SeckillActivityInfoMapper.java @@ -1,10 +1,13 @@ package com.ruoyi.other.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.other.api.domain.Goods; import com.ruoyi.other.api.domain.SeckillActivityInfo; import com.ruoyi.other.vo.SeckillActivityDetailVO; import com.ruoyi.other.vo.SeckillActivityVO; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -20,5 +23,7 @@ List<SeckillActivityVO> listSeckillActivity(Goods goods); + IPage<SeckillActivityVO> querySeckillActivity(@Param("page") Page<SeckillActivityVO> page,@Param("goods") Goods goods); + SeckillActivityDetailVO selectDetail(Integer seckillActivityId); } diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/GoodsServiceImpl.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/GoodsServiceImpl.java index b080dee..3ad615f 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/GoodsServiceImpl.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/GoodsServiceImpl.java @@ -21,6 +21,7 @@ import com.ruoyi.other.service.*; import com.ruoyi.other.vo.GoodsVO; import com.ruoyi.system.api.model.LoginUser; +import org.jetbrains.annotations.NotNull; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; @@ -29,6 +30,7 @@ import java.math.BigDecimal; import java.util.*; import java.util.stream.Collectors; +import java.util.stream.Stream; /** * <p> @@ -205,7 +207,6 @@ area.setProvinceCode(goodsArea.getProvinceCode()); area.setCityCode(goodsArea.getCityCode()); area.setDistrictsCode(goodsArea.getDistrictsCode()); - goodsAreaList1.add(area); } goodsAreaService.saveBatch(goodsAreaList1); } @@ -241,7 +242,6 @@ area.setProvinceCode(goodsArea.getProvinceCode()); area.setCityCode(goodsArea.getCityCode()); area.setDistrictsCode(goodsArea.getDistrictsCode()); - goodsAreaList1.add(area); } goodsAreaService.updateBatchById(goodsAreaList1); } @@ -251,19 +251,49 @@ @Override public Goods getManageGoodsDetail(Long goodsId) { Goods goods = getById(goodsId); + if (goods == null){ + return null; + } // 指定门店 List<GoodsShop> goodsShops = goodsShopService.list(new LambdaQueryWrapper<GoodsShop>() .eq(GoodsShop::getGoodsId, goodsId)); + + for (GoodsShop goodsShop : goodsShops) { + Shop shop = shopMapper.selectById(goodsShop.getShopId()); + goodsShop.setShopName(shop.getName()); + goodsShop.setOwnerName(shop.getShopManager()); + goodsShop.setPhone(shop.getPhone()); + goodsShop.setAddress(shop.getAddress()); + } goods.setGoodsShopList(goodsShops); // 指定用户 List<GoodsAppUser> goodsAppUserList = goodsAppUserService.list(new LambdaQueryWrapper<GoodsAppUser>() .eq(GoodsAppUser::getGoodsId, goodsId)); + List<Long> userIds = goodsAppUserList.stream().map(GoodsAppUser::getAppUserId).collect(Collectors.toList()); + List<AppUser> appUsers = appUserClient.listByIds(userIds); + for (GoodsAppUser goodsAppUser : goodsAppUserList) { + appUsers.stream().filter(u -> u.getId().equals(goodsAppUser.getAppUserId())).findFirst().ifPresent( u -> { + goodsAppUser.setUserName(u.getName()); + goodsAppUser.setPhone(u.getPhone()); + VipSetting vipSetting = vipSettingService.getById(u.getVipId()); + if (vipSetting != null){ + goodsAppUser.setVipName(vipSetting.getVipName()); + goodsAppUser.setVipId(u.getVipId()); + } + }); + } + goods.setGoodsAppUserList(goodsAppUserList); // 会员价格 List<GoodsVip> goodsVipList = goodsVipService.list(new LambdaQueryWrapper<GoodsVip>() .eq(GoodsVip::getGoodsId, goodsId)); + List<VipSetting> vipSettings = getVipSettings(goodsVipList.stream().map(GoodsVip::getVip)); + goodsVipList.forEach(goodsArea -> vipSettings.stream() + .filter(vipSetting -> vipSetting.getId().equals(goodsArea.getVip())) + .findFirst().ifPresent( vipSetting -> goodsArea.setVipName(vipSetting.getVipName()))); + goods.setGoodsVipList(goodsVipList); // 特殊地区售价设置 @@ -276,12 +306,36 @@ List<GoodsArea> goodsAreaList1 = new ArrayList<>(); listMap.forEach((s, goodsAreas) -> { - GoodsArea goodsArea = goodsAreas.get(0); - goodsArea.setGoodsAreaList(goodsAreas); - goodsAreaList1.add(goodsArea); + + List<VipSetting> vipSettings1 = getVipSettings(goodsAreas.stream().map(GoodsArea::getVip)); + goodsAreas.forEach(goodsArea -> vipSettings1.stream() + .filter(vipSetting -> vipSetting.getId().equals(goodsArea.getVip())) + .findFirst().ifPresent( vipSetting -> goodsArea.setVipName(vipSetting.getVipName()))); + + GoodsArea goodsArea1 = getGoodsArea(goodsAreas); + goodsAreaList1.add(goodsArea1); }); goods.setGoodsAreaList(goodsAreaList1); return goods; } + + private List<VipSetting> getVipSettings(Stream<Integer> goodsVipList) { + List<Integer> vipIds = goodsVipList.collect(Collectors.toList()); + return vipSettingService.listByIds(vipIds); + } + + @NotNull + private static GoodsArea getGoodsArea(List<GoodsArea> goodsAreas) { + GoodsArea goodsArea = goodsAreas.get(0); + 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); + return goodsArea1; + } } diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/SeckillActivityInfoServiceImpl.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/SeckillActivityInfoServiceImpl.java index 1a6cd12..ab1b18b 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/SeckillActivityInfoServiceImpl.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/SeckillActivityInfoServiceImpl.java @@ -46,7 +46,7 @@ @Override public List<SeckillActivityVO> listSeckillActivity(Goods goods) { - LoginUser loginUserApplet = tokenService.getLoginUserApplet(); + LoginUser loginUserApplet = tokenService.getLoginUser(); AppUser appUser = appUserClient.getAppUserById(loginUserApplet.getUserid()); goods.setVipId(appUser.getVipId()); return seckillActivityInfoMapper.listSeckillActivity(goods); 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 9e2354a..cfc5e09 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 @@ -40,17 +40,18 @@ String shopName = shopPoint.getShopName(); String phone = shopPoint.getPhone(); String shopLeaderName = shopPoint.getShopLeaderName(); - if (StringUtils.isNotEmpty(shopName) || StringUtils.isNotEmpty(phone) || StringUtils.isNotEmpty(shopLeaderName)) { - List<Integer> shopIds = shopService.listObjs(new LambdaQueryWrapper<Shop>() - .select(Shop::getId) - .like(StringUtils.isNotEmpty(shopName), Shop::getName, shopName) - .like(StringUtils.isNotEmpty(phone), Shop::getPhone, phone) - .like(StringUtils.isNotEmpty(shopLeaderName), Shop::getShopManager, shopLeaderName)) - .stream().map(o -> (Integer) o).collect(Collectors.toList()); - - shopPoint.setShopIds(shopIds); + List<Integer> shopIds = shopService.listObjs(new LambdaQueryWrapper<Shop>() + .select(Shop::getId) + .like(StringUtils.isNotEmpty(shopName), Shop::getName, shopName) + .like(StringUtils.isNotEmpty(phone), Shop::getPhone, phone) + .like(StringUtils.isNotEmpty(shopLeaderName), Shop::getShopManager, shopLeaderName)) + .stream().map(o -> (Integer) o).collect(Collectors.toList()); + if (CollectionUtils.isEmpty(shopIds)) { + return new ShopPointStatistics(); } + shopPoint.setShopIds(shopIds); + ShopPointStatistics shopPointStatistics = new ShopPointStatistics(); List<ShopPoint> latestChangeByType = shopPointMapper.findLatestChangeByType(shopPoint); diff --git a/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/GoodsMapper.xml b/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/GoodsMapper.xml index da58bb9..303a37e 100644 --- a/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/GoodsMapper.xml +++ b/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/GoodsMapper.xml @@ -33,7 +33,9 @@ tg.shop_cost, tg.`status`, tg.purchase_limit, - tg.sale_num + tg.sale_num, + tg.cash_payment, + tg.point_payment FROM t_goods tg LEFT JOIN t_goods_category tgc ON tg.goods_category_id = tgc.id diff --git a/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/SeckillActivityInfoMapper.xml b/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/SeckillActivityInfoMapper.xml index 9420ce5..bf9639e 100644 --- a/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/SeckillActivityInfoMapper.xml +++ b/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/SeckillActivityInfoMapper.xml @@ -46,4 +46,29 @@ LEFT JOIN t_goods_seckill tgs ON tgs.seckill_activity_info_id = tsai.id WHERE tsai.id = #{seckillActivityId} AND tsai.del_flag = 0 </select> + <select id="querySeckillActivity" resultType="com.ruoyi.other.vo.SeckillActivityVO"> + SELECT + tsai.id, + tg.`name`, + tg.introduction, + tg.home_page_picture, + tg.original_price, + tgs.selling_price, + tg.sale_num, + tsai.start_time + FROM + t_seckill_activity_info tsai + LEFT JOIN t_goods tg ON tsai.good_id = tg.id + LEFT JOIN t_goods_seckill tgs ON tgs.seckill_activity_info_id = tsai.id + WHERE tsai.end_time >= NOW() AND tsai.del_flag = 0 + <if test="goods.name != null and goods.name != ''"> + AND tg.`name` LIKE concat('%',#{goods.name},'%') + </if> + <if test="goods.goodsCategoryId != null"> + AND tg.goods_category_id = #{goods.goodsCategoryId} + </if> + <if test="goods.vipId != null"> + AND find_in_set(#{goods.vipId},tgs.vip) > 0 + </if> + </select> </mapper> \ No newline at end of file -- Gitblit v1.7.1