Merge remote-tracking branch 'origin/test' into test
This commit is contained in:
@@ -7,6 +7,7 @@ import org.apache.ibatis.annotations.Param;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 用户
|
* 用户
|
||||||
@@ -35,7 +36,7 @@ public interface UserDao extends BaseMapper<UserEntity> {
|
|||||||
|
|
||||||
int insertUser(UserEntity userEntity);
|
int insertUser(UserEntity userEntity);
|
||||||
|
|
||||||
List<UserEntity> selectInviteUserList();
|
List<UserEntity> selectInviteUserList(@Param("queryUserIdList") Set<Long> queryUserIdList);
|
||||||
|
|
||||||
int selectUserOnLineCount(String qdCode);
|
int selectUserOnLineCount(String qdCode);
|
||||||
|
|
||||||
|
|||||||
@@ -20,7 +20,6 @@ import com.aliyuncs.profile.DefaultProfile;
|
|||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
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.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.getui.push.v2.sdk.ApiHelper;
|
import com.getui.push.v2.sdk.ApiHelper;
|
||||||
import com.getui.push.v2.sdk.GtApiConfiguration;
|
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.Alert;
|
||||||
import com.getui.push.v2.sdk.dto.req.message.ios.Aps;
|
import com.getui.push.v2.sdk.dto.req.message.ios.Aps;
|
||||||
import com.getui.push.v2.sdk.dto.req.message.ios.IosDTO;
|
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.PageHelper;
|
||||||
import com.github.pagehelper.PageInfo;
|
import com.github.pagehelper.PageInfo;
|
||||||
import com.github.qcloudsms.SmsSingleSenderResult;
|
import com.github.qcloudsms.SmsSingleSenderResult;
|
||||||
@@ -1531,23 +1531,42 @@ public class UserServiceImpl extends ServiceImpl<UserDao, UserEntity> implements
|
|||||||
if (StrUtil.isNotBlank(phone)) {
|
if (StrUtil.isNotBlank(phone)) {
|
||||||
queryWrapper.like(UserEntity::getPhone, 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));
|
Set<Long> queryUserIdList = null;
|
||||||
if (!userEntityList.isEmpty()) {
|
if (!queryWrapper.isEmptyOfWhere()) {
|
||||||
Set<Long> userIdList = userEntityList.stream().map(UserEntity::getUserId).collect(Collectors.toSet());
|
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>()
|
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));
|
.stream().collect(Collectors.toMap(UserMoney::getUserId, item -> item));
|
||||||
userEntityList.forEach(item -> {
|
userInfoList.forEach(item -> {
|
||||||
UserMoney userMoney = infoMap.get(item.getUserId());
|
UserMoney userMoney = infoMap.get(item.getUserId());
|
||||||
item.setMoney(userMoney == null ? BigDecimal.ZERO : userMoney.getInviteIncomeMoney());
|
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
|
@Override
|
||||||
|
|||||||
@@ -20,4 +20,5 @@ public interface CourseCollectDao extends BaseMapper<CourseCollect> {
|
|||||||
|
|
||||||
|
|
||||||
List<Course> selectClassify1In3(@Param("userId") Long userId);
|
List<Course> selectClassify1In3(@Param("userId") Long userId);
|
||||||
|
List<Course> selectClassify1ByUserId(@Param("userId") Long userId);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -132,10 +132,16 @@ public class CourseCollectServiceImpl extends ServiceImpl<CourseCollectDao, Cour
|
|||||||
@CachePut(value = "app:courseCollect", key = "#userId")
|
@CachePut(value = "app:courseCollect", key = "#userId")
|
||||||
public Result selectByUserId(Integer page, Integer limit, Long userId, Integer classify) {
|
public Result selectByUserId(Integer page, Integer limit, Long userId, Integer classify) {
|
||||||
PageHelper.startPage(page, limit);
|
PageHelper.startPage(page, limit);
|
||||||
|
List<Course> courses = new ArrayList<>();
|
||||||
|
//收藏
|
||||||
|
if (classify.equals(1)) {
|
||||||
//查 收藏记录
|
//查 收藏记录
|
||||||
List<Course> courses = baseMapper.selectClassify1In3(userId);
|
courses = baseMapper.selectClassify1In3(userId);
|
||||||
|
} else {
|
||||||
|
courses = baseMapper.selectClassify1ByUserId(userId);
|
||||||
|
}
|
||||||
if (CollectionUtil.isEmpty(courses)) {
|
if (CollectionUtil.isEmpty(courses)) {
|
||||||
return Result.success();
|
return Result.success().put("data", PageUtils.page(new PageInfo<>(courses), true));
|
||||||
}
|
}
|
||||||
//剧id
|
//剧id
|
||||||
Set<Long> courseIdList = new HashSet<>();
|
Set<Long> courseIdList = new HashSet<>();
|
||||||
@@ -151,7 +157,8 @@ public class CourseCollectServiceImpl extends ServiceImpl<CourseCollectDao, Cour
|
|||||||
List<CourseDetails> courseDetails1 = courseIdList.isEmpty() ? new ArrayList<>() :
|
List<CourseDetails> courseDetails1 = courseIdList.isEmpty() ? new ArrayList<>() :
|
||||||
courseDetailsService.list(new LambdaQueryWrapper<CourseDetails>().in(CourseDetails::getCourseDetailsId, courseDetailIds));
|
courseDetailsService.list(new LambdaQueryWrapper<CourseDetails>().in(CourseDetails::getCourseDetailsId, courseDetailIds));
|
||||||
Map<Long, CourseDetails> courseDetailsMap = courseDetails1.stream().collect(Collectors.toMap(CourseDetails::getCourseId, item -> item));
|
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));
|
.collect(Collectors.toMap(CourseDetails::getCourseId, CourseDetails::getCourseDetailsCount));
|
||||||
|
|
||||||
if (CollectionUtil.isNotEmpty(courseList)) {
|
if (CollectionUtil.isNotEmpty(courseList)) {
|
||||||
|
|||||||
@@ -2,12 +2,14 @@ package com.sqx.modules.job.task;
|
|||||||
|
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.hutool.json.JSONUtil;
|
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.dao.CashOutDao;
|
||||||
import com.sqx.modules.pay.entity.CashOut;
|
import com.sqx.modules.pay.entity.CashOut;
|
||||||
import com.sqx.modules.pay.wuyou.BaseResp;
|
import com.sqx.modules.pay.wuyou.BaseResp;
|
||||||
import com.sqx.modules.pay.wuyou.WuyouPay;
|
import com.sqx.modules.pay.wuyou.WuyouPay;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.scheduling.annotation.Scheduled;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
@@ -23,11 +25,18 @@ public class TempCashOutTask{
|
|||||||
|
|
||||||
private Logger logger = LoggerFactory.getLogger(getClass());
|
private Logger logger = LoggerFactory.getLogger(getClass());
|
||||||
|
|
||||||
public void run(String params) {
|
@Scheduled(cron = "0 0/8 * * * ? ")
|
||||||
|
public void run() {
|
||||||
logger.info("提现开始");
|
logger.info("提现开始");
|
||||||
List<CashOut> cashOuts = cashOutDao.selectTemp();
|
List<CashOut> cashOuts = cashOutDao.selectTemp(DateUtil.offsetMinute(DateUtil.date(), 5));
|
||||||
for (CashOut cashOut : cashOuts) {
|
for (CashOut cashOut : cashOuts) {
|
||||||
BaseResp baseResp = wuyouPay.queryExtractOrder(cashOut.getOrderNumber(), cashOut.getUserId(), cashOut.getUserType() != 2, cashOut.getMoney());
|
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));
|
logger.info("baseResp:{} ", JSONUtil.toJsonStr(baseResp));
|
||||||
if (baseResp.getStatus() != null && (baseResp.getStatus().equals(2) || baseResp.getStatus().equals(10000))){
|
if (baseResp.getStatus() != null && (baseResp.getStatus().equals(2) || baseResp.getStatus().equals(10000))){
|
||||||
logger.info("success:{} ", cashOut.getOrderNumber());
|
logger.info("success:{} ", cashOut.getOrderNumber());
|
||||||
@@ -35,7 +44,13 @@ public class TempCashOutTask{
|
|||||||
cashOut.setOutAt(DateUtil.now());
|
cashOut.setOutAt(DateUtil.now());
|
||||||
cashOut.setRefund(null);
|
cashOut.setRefund(null);
|
||||||
cashOut.setOutAt(DateUtil.now());
|
cashOut.setOutAt(DateUtil.now());
|
||||||
cashOutDao.updateById(cashOut);
|
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("提现结束");
|
logger.info("提现结束");
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.sqx.modules.pay.dao;
|
package com.sqx.modules.pay.dao;
|
||||||
|
|
||||||
|
import cn.hutool.core.date.DateTime;
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
import com.sqx.modules.pay.entity.CashOut;
|
import com.sqx.modules.pay.entity.CashOut;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
@@ -22,7 +23,7 @@ public interface CashOutDao extends BaseMapper<CashOut> {
|
|||||||
|
|
||||||
List<CashOut> selectYesterday();
|
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);
|
Double selectCashOutSum(@Param("userId") Long userId, @Param("startTime") Date startTime, @Param("endTime") Date endTime);
|
||||||
|
|
||||||
|
|||||||
@@ -299,7 +299,16 @@
|
|||||||
|
|
||||||
|
|
||||||
<select id="selectInviteUserList" resultType="com.sqx.modules.app.entity.UserEntity">
|
<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>
|
||||||
|
|
||||||
<select id="selectUserOnLineCount" resultType="Integer">
|
<select id="selectUserOnLineCount" resultType="Integer">
|
||||||
|
|||||||
@@ -40,5 +40,15 @@
|
|||||||
WHERE
|
WHERE
|
||||||
c1.classify = 3
|
c1.classify = 3
|
||||||
AND c1.user_id = #{userId}
|
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>
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|||||||
@@ -108,7 +108,7 @@
|
|||||||
SELECT course_id as courseId,
|
SELECT course_id as courseId,
|
||||||
COUNT(*) AS courseDetailsCount
|
COUNT(*) AS courseDetailsCount
|
||||||
FROM course_details
|
FROM course_details
|
||||||
where course_details_id in
|
where course_id in
|
||||||
<foreach collection="courseIdList" item="ids" open="(" separator="," close=")">
|
<foreach collection="courseIdList" item="ids" open="(" separator="," close=")">
|
||||||
#{ids}
|
#{ids}
|
||||||
</foreach>
|
</foreach>
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
<select id="selectTemp" resultType="com.sqx.modules.pay.entity.CashOut">
|
<select id="selectTemp" resultType="com.sqx.modules.pay.entity.CashOut">
|
||||||
SELECT * FROM cash_out
|
SELECT * FROM cash_out
|
||||||
WHERE
|
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 < #{time}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="selectCashOutSum" resultType="Double">
|
<select id="selectCashOutSum" resultType="Double">
|
||||||
|
|||||||
Reference in New Issue
Block a user