Merge remote-tracking branch 'origin/test' into test

This commit is contained in:
Tankaikai 2025-01-07 15:28:41 +08:00
commit f45f5e5615
10 changed files with 94 additions and 31 deletions

View File

@ -7,6 +7,7 @@ import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* 用户
@ -35,7 +36,7 @@ public interface UserDao extends BaseMapper<UserEntity> {
int insertUser(UserEntity userEntity);
List<UserEntity> selectInviteUserList();
List<UserEntity> selectInviteUserList(@Param("queryUserIdList") Set<Long> queryUserIdList);
int selectUserOnLineCount(String qdCode);

View File

@ -20,7 +20,6 @@ import com.aliyuncs.profile.DefaultProfile;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.getui.push.v2.sdk.ApiHelper;
import com.getui.push.v2.sdk.GtApiConfiguration;
@ -34,6 +33,7 @@ import com.getui.push.v2.sdk.dto.req.message.android.GTNotification;
import com.getui.push.v2.sdk.dto.req.message.ios.Alert;
import com.getui.push.v2.sdk.dto.req.message.ios.Aps;
import com.getui.push.v2.sdk.dto.req.message.ios.IosDTO;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.github.qcloudsms.SmsSingleSenderResult;
@ -1531,23 +1531,42 @@ public class UserServiceImpl extends ServiceImpl<UserDao, UserEntity> implements
if (StrUtil.isNotBlank(phone)) {
queryWrapper.like(UserEntity::getPhone, phone);
}
queryWrapper.orderByDesc(UserEntity::getCreateTime);
PageHelper.startPage(page,limit);
List<UserEntity> userEntityList = list(queryWrapper);
Map<Long, Integer> countInfoMap = baseMapper.selectInviteUserList().stream().collect(Collectors.toMap(UserEntity::getUserId, UserEntity::getCounts));
if (!userEntityList.isEmpty()) {
Set<Long> userIdList = userEntityList.stream().map(UserEntity::getUserId).collect(Collectors.toSet());
Set<Long> queryUserIdList = null;
if (!queryWrapper.isEmptyOfWhere()) {
queryUserIdList = list(queryWrapper.select(UserEntity::getUserId)).stream().map(UserEntity::getUserId).collect(Collectors.toSet());
}
PageHelper.startPage(page, limit);
List<UserEntity> inviteList = baseMapper.selectInviteUserList(queryUserIdList);
List<UserEntity> userInfoList = new ArrayList<>();
if (!inviteList.isEmpty()) {
Map<String, Integer> countInfoMap = new HashMap<>();
ArrayList<String> inviteCodeList = new ArrayList<>();
inviteList.forEach(item -> {
countInfoMap.put(item.getInviterCode(), item.getCounts());
inviteCodeList.add(item.getInviterCode());
});
userInfoList = list(new LambdaQueryWrapper<UserEntity>().in(UserEntity::getInvitationCode, inviteCodeList));
Set<Long> useridList = userInfoList.stream().map(UserEntity::getUserId).collect(Collectors.toSet());
Map<Long, UserMoney> infoMap = userMoneyService.list(new LambdaQueryWrapper<UserMoney>()
.in(UserMoney::getUserId, userIdList))
.in(UserMoney::getUserId, useridList))
.stream().collect(Collectors.toMap(UserMoney::getUserId, item -> item));
userEntityList.forEach(item -> {
userInfoList.forEach(item -> {
UserMoney userMoney = infoMap.get(item.getUserId());
item.setMoney(userMoney == null ? BigDecimal.ZERO : userMoney.getInviteIncomeMoney());
item.setCounts(countInfoMap.get(item.getUserId()));
Integer i = countInfoMap.get(item.getInvitationCode());
item.setCounts(i == null ? 0 : i);
});
}
return Result.success().put("data", PageUtils.page(new PageInfo<>(userEntityList),true));
userInfoList = userInfoList.stream()
.sorted((u1, u2) -> Integer.compare(u2.getCounts(), u1.getCounts())) // counts 降序
.collect(Collectors.toList());
return Result.success().put("data", PageUtils.page(new PageInfo<>(userInfoList),true));
}
@Override

View File

@ -20,4 +20,5 @@ public interface CourseCollectDao extends BaseMapper<CourseCollect> {
List<Course> selectClassify1In3(@Param("userId") Long userId);
List<Course> selectClassify1ByUserId(@Param("userId") Long userId);
}

View File

@ -132,10 +132,16 @@ public class CourseCollectServiceImpl extends ServiceImpl<CourseCollectDao, Cour
@CachePut(value = "app:courseCollect", key = "#userId")
public Result selectByUserId(Integer page, Integer limit, Long userId, Integer classify) {
PageHelper.startPage(page, limit);
// 收藏记录
List<Course> courses = baseMapper.selectClassify1In3(userId);
List<Course> courses = new ArrayList<>();
//收藏
if (classify.equals(1)) {
// 收藏记录
courses = baseMapper.selectClassify1In3(userId);
} else {
courses = baseMapper.selectClassify1ByUserId(userId);
}
if (CollectionUtil.isEmpty(courses)) {
return Result.success();
return Result.success().put("data", PageUtils.page(new PageInfo<>(courses), true));
}
//剧id
Set<Long> courseIdList = new HashSet<>();
@ -151,7 +157,8 @@ public class CourseCollectServiceImpl extends ServiceImpl<CourseCollectDao, Cour
List<CourseDetails> courseDetails1 = courseIdList.isEmpty() ? new ArrayList<>() :
courseDetailsService.list(new LambdaQueryWrapper<CourseDetails>().in(CourseDetails::getCourseDetailsId, courseDetailIds));
Map<Long, CourseDetails> courseDetailsMap = courseDetails1.stream().collect(Collectors.toMap(CourseDetails::getCourseId, item -> item));
Map<Long, Integer> countMap = courseDetailsDao.countByCourseId(courseIdList).stream()
List<CourseDetails> courseDetails2 = courseDetailsDao.countByCourseId(courseIdList);
Map<Long, Integer> countMap = courseDetails2.stream()
.collect(Collectors.toMap(CourseDetails::getCourseId, CourseDetails::getCourseDetailsCount));
if (CollectionUtil.isNotEmpty(courseList)) {

View File

@ -2,12 +2,14 @@ package com.sqx.modules.job.task;
import cn.hutool.core.date.DateUtil;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.sqx.modules.pay.dao.CashOutDao;
import com.sqx.modules.pay.entity.CashOut;
import com.sqx.modules.pay.wuyou.BaseResp;
import com.sqx.modules.pay.wuyou.WuyouPay;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
@ -23,19 +25,32 @@ public class TempCashOutTask{
private Logger logger = LoggerFactory.getLogger(getClass());
public void run(String params) {
@Scheduled(cron = "0 0/8 * * * ? ")
public void run() {
logger.info("提现开始");
List<CashOut> cashOuts = cashOutDao.selectTemp();
List<CashOut> cashOuts = cashOutDao.selectTemp(DateUtil.offsetMinute(DateUtil.date(), 5));
for (CashOut cashOut : cashOuts) {
BaseResp baseResp = wuyouPay.queryExtractOrder(cashOut.getOrderNumber(), cashOut.getUserId(), cashOut.getUserType() != 2, cashOut.getMoney());
logger.info("baseResp{} ", JSONUtil.toJsonStr(baseResp));
if (baseResp.getStatus() != null && (baseResp.getStatus().equals(2) || baseResp.getStatus().equals(10000))){
logger.info("success{} ", cashOut.getOrderNumber());
cashOut.setState(1);
cashOut.setOutAt(DateUtil.now());
cashOut.setRefund(null);
cashOut.setOutAt(DateUtil.now());
cashOutDao.updateById(cashOut);
try {
BaseResp baseResp;
if (DateUtil.parse(cashOut.getCreateAt()).compareTo(DateUtil.parse("2025-01-06 16:50:00")) < 0) {
baseResp = wuyouPay.queryExtractOrder(cashOut.getOrderNumber(), cashOut.getUserId(), cashOut.getUserType() != 2, cashOut.getMoney());
}else {
baseResp = wuyouPay.queryExtractOrder(cashOut.getOrderNumber(), cashOut.getMoney());
}
logger.info("baseResp{} ", JSONUtil.toJsonStr(baseResp));
if (baseResp.getStatus() != null && (baseResp.getStatus().equals(2) || baseResp.getStatus().equals(10000))){
logger.info("success{} ", cashOut.getOrderNumber());
cashOut.setState(1);
cashOut.setOutAt(DateUtil.now());
cashOut.setRefund(null);
cashOut.setOutAt(DateUtil.now());
cashOutDao.update(cashOut, new LambdaQueryWrapper<CashOut>().eq(CashOut::getUserId, cashOut.getUserId()).eq(CashOut::getId, cashOut.getId()));
}else if (baseResp.getStatus() != null && baseResp.getStatus().equals(3)) {
cashOut.setState(2);
cashOutDao.update(cashOut, new LambdaQueryWrapper<CashOut>().eq(CashOut::getUserId, cashOut.getUserId()).eq(CashOut::getId, cashOut.getId()));
}
}catch (Exception e) {
logger.error("体现定时任务查询出错", e);
}
}
logger.info("提现结束");

View File

@ -1,5 +1,6 @@
package com.sqx.modules.pay.dao;
import cn.hutool.core.date.DateTime;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.sqx.modules.pay.entity.CashOut;
import org.apache.ibatis.annotations.Mapper;
@ -22,7 +23,7 @@ public interface CashOutDao extends BaseMapper<CashOut> {
List<CashOut> selectYesterday();
List<CashOut> selectTemp();
List<CashOut> selectTemp(@Param("time")DateTime time);
Double selectCashOutSum(@Param("userId") Long userId, @Param("startTime") Date startTime, @Param("endTime") Date endTime);

View File

@ -299,7 +299,16 @@
<select id="selectInviteUserList" resultType="com.sqx.modules.app.entity.UserEntity">
SELECT any_value(user_id) as userId, COUNT(*) AS counts FROM tb_user GROUP BY inviter_code order by counts desc
SELECT any_value(inviter_code) as inviterCode, COUNT(*) AS counts
FROM tb_user
<if test="queryUserIdList != null">
where user_id in
<foreach collection="queryUserIdList" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</if>
GROUP BY inviter_code order by counts desc
</select>
<select id="selectUserOnLineCount" resultType="Integer">

View File

@ -40,5 +40,15 @@
WHERE
c1.classify = 3
AND c1.user_id = #{userId}
order by c1.create_time desc
</select>
<select id="selectClassify1ByUserId" resultType="com.sqx.modules.course.entity.Course">
SELECT c1.course_id as courseId,
c1.course_details_id as courseDetailsId
FROM `course_collect` c1
WHERE c1.classify = 3
AND c1.user_id = #{userId}
order by c1.create_time desc
</select>
</mapper>

View File

@ -108,7 +108,7 @@
SELECT course_id as courseId,
COUNT(*) AS courseDetailsCount
FROM course_details
where course_details_id in
where course_id in
<foreach collection="courseIdList" item="ids" open="(" separator="," close=")">
#{ids}
</foreach>

View File

@ -18,7 +18,7 @@
<select id="selectTemp" resultType="com.sqx.modules.pay.entity.CashOut">
SELECT * FROM cash_out
WHERE
state = 0 and order_number is not null and order_number != ''
(state = 0 or state=4) and order_number is not null and order_number != '' and create_at &lt; #{time}
</select>
<select id="selectCashOutSum" resultType="Double">