This commit is contained in:
77
2024-03-18 21:13:35 +08:00
parent 02e8ea8f2f
commit 6fa752d8a8
6 changed files with 52 additions and 0 deletions

View File

@@ -7,6 +7,10 @@ import java.time.LocalDate;
@Data
public class HomeUserListVo {
@Schema(description = "是否开通VIP")
private Boolean openVip = false;
@Schema(description = "已开通的VIP类型")
private Integer vipType;
@Schema(description = "用户ID")
private Long userId;
@Schema(description = "用户头像")

View File

@@ -6,6 +6,8 @@ import com.ruoyi.xq.domain.UserVip;
import com.ruoyi.xq.dto.admin.user.UserVipAdminVo;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* VIP用户Mapper接口
*
@@ -15,4 +17,6 @@ import org.apache.ibatis.annotations.Param;
public interface UserVipMapper extends BaseMapper<UserVip> {
Page<UserVipAdminVo> pageAdmin(@Param("build") Page<Object> build, @Param("bo") UserVipAdminVo bo);
List<UserVip> listUserVipMaster(@Param("userIdList") List<Long> userIdList);
}

View File

@@ -8,6 +8,8 @@ import com.ruoyi.xq.domain.UserVip;
import com.ruoyi.xq.dto.admin.user.UserVipAdminVo;
import com.ruoyi.xq.dto.admin.user.req.AddVipReq;
import java.util.List;
/**
* VIP用户Service接口
*
@@ -22,6 +24,8 @@ public interface UserVipService extends IService<UserVip> {
UserVip getByUserVipMaster(Long userId);
List<UserVip> listUserVipMaster(List<Long> userIdArray);
void updateVipOrderAdmin(AddVipReq bo, User user);
void incsVip(User user, Integer vipType, Integer vipMonth);

View File

@@ -13,6 +13,7 @@ import com.ruoyi.common.utils.BeanConvertUtil;
import com.ruoyi.xq.domain.User;
import com.ruoyi.xq.domain.UserInfo;
import com.ruoyi.xq.domain.UserPictures;
import com.ruoyi.xq.domain.UserVip;
import com.ruoyi.xq.dto.admin.user.UserAdminVo;
import com.ruoyi.xq.dto.admin.user.req.UpdateMobileAdminReq;
import com.ruoyi.xq.dto.app.user.HomePageReq;
@@ -25,6 +26,7 @@ import com.ruoyi.xq.mapper.UserMapper;
import com.ruoyi.xq.service.UserInfoService;
import com.ruoyi.xq.service.UserPicturesService;
import com.ruoyi.xq.service.UserService;
import com.ruoyi.xq.service.UserVipService;
import com.ruoyi.xq.util.BirthdayUtil;
import com.ruoyi.yunxin.client.ImUserRefClient;
import com.ruoyi.yunxin.req.UpdateUinfoReq;
@@ -35,7 +37,10 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
@@ -55,6 +60,8 @@ public class UserServiceImpl extends ServiceImpl<UserMapper,User> implements Use
private SystemConfigManager systemConfigManager;
@Autowired
private UserPicturesService userPicturesService;
@Autowired
private UserVipService userVipService;
@Override
public User getByUsername(String username) {
@@ -167,9 +174,20 @@ public class UserServiceImpl extends ServiceImpl<UserMapper,User> implements Use
public Page<HomeUserListVo> homePage(HomePageReq params) {
Page<HomeUserListVo> page = baseMapper.homePageApp(params.build(), params);
List<HomeUserListVo> records = page.getRecords();
List<Long> userIdArray = new ArrayList<>();
for (HomeUserListVo record : records) {
userIdArray.add(record.getUserId());
record.setBirthdayStr(BirthdayUtil.getMinBirthday(record.getBirthday()));
}
List<UserVip> vips = userVipService.listUserVipMaster(userIdArray);
Map<Long, UserVip> userVipMap = vips.stream().collect(Collectors.toMap(UserVip::getUserId, Function.identity()));
for (HomeUserListVo record : records) {
UserVip userVip = userVipMap.get(record.getUserId());
if(userVip != null){
record.setOpenVip(true);
record.setVipType(userVip.getVipType());
}
}
return page;
}
}

View File

@@ -1,6 +1,7 @@
package com.ruoyi.xq.service.impl;
import cn.hutool.extra.spring.SpringUtil;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -27,6 +28,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
@@ -69,6 +71,14 @@ public class UserVipServiceImpl extends ServiceImpl<UserVipMapper,UserVip> imple
return userVipList.stream().max(Comparator.comparing(UserVip::getVipType)).orElse(null);
}
@Override
public List<UserVip> listUserVipMaster(List<Long> userIdArray){
if(CollectionUtils.isEmpty(userIdArray)){
return new ArrayList<>();
}
return baseMapper.listUserVipMaster(userIdArray);
}
/**
* 后台管理强制覆盖VIP
* @param bo

View File

@@ -21,6 +21,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</where>
order by id desc
</select>
<select id="listUserVipMaster" resultType="com.ruoyi.xq.domain.UserVip">
select t1.user_id, max(t1.vip_type) as vip_type
from xq_user_vip t1
where
and t1.vip_status = 1
and t1.vip_timeout &lt;= now()
and t1.user_id in
<foreach collection="userIdList" item="value" open="(" close=")" separator="," >
#{value}
</foreach>
group by t1.user_id
</select>
</mapper>